Mündəricat:

Z80-mbc2 Z80 Kod Flaş İstifadəçi LED: 3 Addım
Z80-mbc2 Z80 Kod Flaş İstifadəçi LED: 3 Addım

Video: Z80-mbc2 Z80 Kod Flaş İstifadəçi LED: 3 Addım

Video: Z80-mbc2 Z80 Kod Flaş İstifadəçi LED: 3 Addım
Video: Как работает ЭВМ? Собираем простейший компьютер на базе Z80, эмулятора ПЗУ и порта на D-триггере. 2024, Noyabr
Anonim
Z80-mbc2 Z80 Kod Flaş İstifadəçi LED
Z80-mbc2 Z80 Kod Flaş İstifadəçi LED

Bu, z80-mbc2 kompüteri üçün Z80 assembler-də yazılmış istifadəçi LED proqramının nümunəsidir.

Bunu mənim üçün bir sınaq və yoxlama məşqi etdim, bu, 35 ildən çoxdur ki, ilk Z80 proqramımdır.

Zövq alın

Təchizat

Z80-mbc2 kompüter

SLR Systems Rel -dən Z80ASM -in bir nüsxəsi. 1.32, bir çox cp/m arxivindən endirilə bilər

Redaktor, ZDE16-dan istifadə etdim, çünki o artıq z80-mbc2 üçün CP/M açılış şəklində idi.

Addım 1: Z80asmı Z80-mbc2-yə quraşdırın

Z80asmı Z80-mbc2-yə quraşdırın
Z80asmı Z80-mbc2-yə quraşdırın

Z80-MBC2 üçün istifadə etdiyiniz vasitələrlə, yəni istifadə etdiyiniz cpmtools versiyasından asılı olmayaraq bir az tanış olduğumu düşünürəm. Komanda satırı versiyalarını istifadə edərkən aşağıdakı addımları yerinə yetirin:

  1. Z80asm.com və z80asm.doc fayllarını (isteğe bağlı) ana kompüterinizdən bir yerdə bir qovluqda əldə edin
  2. SD kartınızı eyni kompüterə qoyun, aşağıda E sürücüsü olaraq göstərildiyini güman edirəm: aşağıda.
  3. Assambleyanı cp/m 2.2 üçün, DS0N00. DSK disk görüntüsü olacaq CP/M diskim A -ya qoydum.
  4. Komanda: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: z80asm.com faylını görüntüyə kopyalayacaq
  5. Cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.doc 0: əmri sənədləri diskə kopyalayacaq (isteğe bağlı)

Z80-mbc-də cp/m 2.2 yüklədikdə, indi A sürücüsündə z80asm.com və z80asm.doc (isteğe bağlı) olmalıdır.

Addım 2: Mənbə Kodunu Z80-mbc2-ə kopyalayın

Terminal proqramınızı istifadə edərək z80-mbc-ə qoşulun

Mənbə kodunu saxlamaq üçün doldurulmamış bir disk istifadə etməyi təklif edirəm, məsələn f: bu sürücü növünü seçmək üçün:

F:

bir neçə saniyədən sonra F: əmrini görəcəksiniz.

boş bir faylı redaktə etmək üçün A sürücüsündəki zde16 proqramını istifadə edin:

a: zde16 myled.z80

Bu, F: diskində myled.z80 adlı bir fayl yaradacaq, qeyd edin: z80asmın işləməsi üçün.z80 adına ehtiyac var.

İndi kodu aşağıdan kopyalayın və yapışdırın, terminal sürətinizə və s. Asılı olaraq kiçik hissələrə kopyalayıb yapışdıra bilərsiniz. Ya da yazın! 1980 -ci illərin hisslərini geri qaytarın.

;

İstifadəçi LEDini və istifadəçi açarını sınayın; BDOS bərabərliyi 05h; cp/m BDOS giriş nöqtəsi USRLED bərabər 0; İstifadəçi LED nəzarət üçün opcode USRKEY bərabər 80h; İstifadəçi keçidinin idarə edilməsi üçün opcode DPORT bərabərliyi 0; DATA portu i/o CPORT bərabərliyi 1; Komanda portu çıxışı; org 0100h; ld (estack), sp; cp/m qayıtmaq üçün mövcud məlumatları saxlamaq ld sp, stack; ld hl, msg; salam mesaj zəngi _puts lp: ld a, 1; yandır = 1 zəng açılan zəng gecikməsi; gecikdirin və düymələri gözləyin jr nz, bitirin; sıfır olmayan xor a düyməsinə/açarına basıldığını bildirir; a = 0 zəngli zəng gecikməsi; gecikdirmək və ya açar/keçid üçün gözləmək jr z, lp; sıfır olarsa düymə/açar yoxdursa yenidən gedin; bitir: xor a; düymə və ya keçid basıldı, buna görə zəng edildi ld hl, bye; zəng edin _puts; mesajı göstər HL = ld sp, (estack); orijinal yığın ret; cp/m -ə qayıdın; led: push push; led dəyərini saxlamaq 0 və ya 1 ld a, USRLED out (CPORT), a; optcode göndərildi, af af (DPORT), a; data ret göndərildi;; Terminalda və ya istifadəçi düyməsinin gecikməsində basılan gecikmə döngəsi: ld bc, 00e00h; təxminən 1/2s 8mhz CPU, təmiz tahmin iş döngüsü2: dec bc; loop push bc saymaq; BDOS push de ld c çağırarkən qeydləri saxlamaq, 6; BDOS raw i/o düyməsinin basıldığını yoxlayın ld e, 0ffh BDOS pop de zəng edin; dəyərlərimizi stack pop bc və ya a -dan geri götürün; düymənin ret nz -də basıldığını yoxlayın; bəli qayıdın (eyni zamanda nz bayraq dəsti saxlayır) ld a, USRKEY; İndi istifadəçi açarını yoxlayın (CPORT), a; a, (DPORT) komanda portu; düyməni və a, 1 oxuyun; yalnız bit 0 ret nz ilə maraqlanır; istifadəçi düyməsinə ld a, b basıldığı təqdirdə qayıdın; və ya bc = 0 və ya c jr nz, loop2; sayma bitməyib, yenidən xor a gedin; z bayrağını 0 ret olaraq təyin edin; heç bir düyməyə basılmır, gecikmənin sonu; _puts: push bc; qeydlərimizi bdos zəngləri üçün hazır saxla push de nxt: ld a, (hl); char və ya a alın; 0 olub olmadığını yoxlayın, msg jr z -nin sonu tamamlandı; bəli belədir ld e, a; char ld c, 2 push hl çap etmək üçün BDOS -a zəng qurun; mətn göstəricisi zəngini BDOS -a yazın; çap edin hl inc hl; növbəti char jr nxt; davam edin: pop de; bitmiş regs pop bc ret; və geri qayıdın; msg db 'User LED test,' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0

ESC x istifadə edərək faylı qeyd edin. Daha çox məlumat üçün ZDE16 istifadə bələdçisinə baxın, Ctrl-K variantları fərqli olmaqla, əksər redaktələr üçün bir az ulduza bənzəyir.

Addım 3: Proqramı tərtib edin və işə salın

Mənbə kodunu maşına daxil etdikdən sonra.

Növ:

F>

F> a: z80asm myled/a Z80ASM Copyright (C) 1983-86 SLR Systems Rel. 1.32 MYLED/Faylın Sonu Keçid 1 0 Xəta (lar) Algılandı. 406 Mütləq Bayt. 16 simvol aşkar edildi.

Bu myled.z80 faylını axtaracaq və ikili (.com) faylı istehsal edəcək, bu seçim /a -nın mənasını verir.

Daha çox məlumat üçün z80asm.doc faylına baxın.

Proqramı işə salmaq üçün yazın:

F> ağladı

İstifadəçi LED testi, F> Çıxışından çıxmaq üçün hər hansı bir düymə

Çıxmaq üçün istifadəçi düyməsini və ya terminaldakı bir düyməni basın.

Bitdi.

Tövsiyə: