Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
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
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:
- Z80asm.com və z80asm.doc fayllarını (isteğe bağlı) ana kompüterinizdən bir yerdə bir qovluqda əldə edin
- 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.
- Assambleyanı cp/m 2.2 üçün, DS0N00. DSK disk görüntüsü olacaq CP/M diskim A -ya qoydum.
- Komanda: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: z80asm.com faylını görüntüyə kopyalayacaq
- 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.