Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Bu z80-mbc2 kompyuteri uchun Z80 assembler-da yozilgan LED dasturining namunasi.
Men buni sinov va qayta ko'rib chiqish mashqlarini qildim, bu mening 35 yildan ortiq Z80 dasturim.
Xursand bo'ling
Ta'minotlar
Z80 mbc2 kompyuter
SLR Systems Rel -dan Z80ASM nusxasi. 1.32, ko'plab cp/m arxivlaridan yuklab olish mumkin
Tahrirchi, men ZDE16 dan foydalanardim, chunki u allaqachon z80-mbc2 uchun CP/M yuklash tasvirida edi.
1-qadam: Z80asm-ni Z80-mbc2-ga o'rnating
Men sizning Z80-MBC2-dagi vositalaringiz bilan, xususan siz ishlatadigan cpmtools-ning har qanday versiyasi bilan tanishman deb o'ylayman. Buyruqlar satri versiyalarini ishlatishda quyidagi qadamlar:
- Fayllarni z80asm.com va z80asm.doc (ixtiyoriy) katalogdan kompyuteringizning biron bir joyidan oling
- SD -kartangizni bir xil kompyuterga qo'ying, menimcha, u quyida E diskda ko'rsatiladi.
- Men assemblerni CP/M diskimga qo'ydim, cp/m 2.2 uchun bu DS0N00. DSK disk tasviri bo'ladi.
- Buyruq: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: z80asm.com faylini rasmga ko'chiradi
- Cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.doc 0: buyrug'i hujjatlarni diskka ko'chiradi (ixtiyoriy)
Z80-mbc-da cp/m 2.2 ni yuklaganingizda, sizda A diskda z80asm.com va z80asm.doc (ixtiyoriy) bo'lishi kerak.
2-qadam: Manba kodini Z80-mbc2-ga nusxalash
Terminal dasturingiz yordamida z80-mbc-ga ulaning
Men sizga manba kodini saqlash uchun to'ldirilmagan diskdan foydalanishni maslahat beraman, masalan f: bu disk turini tanlash uchun:
F:
bir necha soniyadan so'ng siz F: taklifini ko'rasiz.
Endi bo'sh faylni tahrir qilish uchun A diskidagi zde16 dasturidan foydalaning:
a: zde16 myled.z80
Bu diskda myled.z80 deb nomlangan faylni yaratadi: eslatma: z80asm ishlashi uchun.z80 nomi kerak.
Endi kodni quyida nusxa ko'chiring va joylashtiring, terminal tezligingizga va boshqalarga qarab kichik bo'limlarga nusxalash va joylashtirish kerak bo'ladi. Yoki yozing! 1980 -yillarning his -tuyg'ularini qaytaring.
;
Foydalanuvchi LEDini va kalitini tekshiring; BDOS teng 05h; cp/m BDOS kirish nuqtasi USRLED teng 0; Foydalanuvchi LEDni boshqarish uchun opcode USRKEY equ 80h; User Switch ni boshqarish uchun opcode DPORT teng 0; DATA port i/u CPORT teng 1; Buyruq portining chiqishi; tashkilot 0100h; ld (estack), sp; cp/m ld sp, stack -ga qaytish uchun mavjud ma'lumotlarni saqlang; ld hl, msg; salom xabar chaqiruvi _puts lp: ld a, 1; yoqish = 1 qo'ng'iroqni chaqirishni kechiktirish; kechiktirish va tugmachalarni kutish jr nz, tugatish; nol bo'lmagan tugmachani/kalitni bosilgan degan ma'noni anglatadi xor a; a = 0 qo'ng'iroqni kechiktirish; jr z, lp tugmachasini kechiktirish yoki kutish; agar nol bo'lsa, kalit/kalit bo'lmasa, yana o'ting; tugatish: xor a; tugma yoki tugma bosildi, shunday qilib chaqiruv amalga oshirildi ld hl, xayr; xayr qo'ng'iroq _puts; displeyda xabar HL = ld sp, (estack); original stack ret; cp/m ga qaytish; LED: 0 yoki 1 ld a saqlash, USRLED chiqish (CPORT), a; opt -kod yuborilgan pop af (DPORT), a; ma'lumotlar yuborilgan ret;; Terminal yoki foydalanuvchi tugmachasining kechiktirilishida tugma bosilganligini tekshiradigan kechikish davri: ld bc, 00e00h; taxminan 1/2s 8mHz chastotali protsessor, sof taxminiy ishchi tsikl2: dec bc; loop bc bc hisoblash; 6; BDOS raw i/o tugmasi bosilganligini tekshiring ld e, 0ffh qo'ng'iroq BDOS pop de; qiymatlarimizni stack pop bc yoki a dan qaytarib oling; terminal nz tugmachasi bosilganligini tekshiring; ha qaytish (shuningdek nz bayroq o'rnatiladi) ld a, USRKEY; Endi foydalanuvchi tugmachasini tekshiring (CPORT), a; buyruq porti a, (DPORT); o'qish tugmasi va a, 1; faqat bit 0 ret nz; agar userkey ld a, b tugmachasini bosgan bo'lsa qaytish; yoki bc = 0 yoki c jr nz, loop2; sanash tugallanmagan, yana xor a ga o'ting; z bayrog'ini 0 ret ga o'rnating; hech qanday tugma bosilmadi, kechikishning oxiri; _puts: push bc; bdos qo'ng'iroqlariga registrlarimizni saqlang push de nxt: ld a, (hl); char yoki a ni oling; 0 yoki yo'qligini tekshiring, msg jr z tugadi, bajarildi; ha shunday bajarildi ld e, a; char ld c, 2 push hl -ni chop etish uchun BDOS -ga qo'ng'iroqni o'rnating; matnli ko'rsatgichni saqlang BDOS; uni chop et hl inc hl; keyingi char jr nxt; bajarishda davom eting: pop de; tugatilgan regs pop bc ret; va qaytish; msg db 'User LED testi, chiqish db 0ah, 0dh, 0 bye db' Exit 'db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0
Faylni ESC x yordamida saqlang. Qo'shimcha ma'lumot olish uchun ZDE16 qo'llanmasiga qarang, bu ko'p tahrirlash uchun wordstar-ga o'xshaydi, faqat Ctrl-K variantlari boshqacha.
3 -qadam: Dasturni kompilyatsiya qiling va ishga tushiring
Mashinada manba kodini olganingizdan so'ng.
Turi:
F>
F> a: z80asm myled/a Z80ASM Copyright (C) 1983-86 SLR Systems Rel tomonidan. 1.32 MYLED/Faylning oxiri Pass 1 0 Xato (lar) aniqlandi. 406 mutlaq bayt. 16 ta belgi aniqlandi.
Bu myled.z80 faylini qidiradi va ikkilik (.com) faylini ishlab chiqaradi, bu variant /a nimani anglatadi.
Qo'shimcha ma'lumot olish uchun z80asm.doc faylini ko'ring.
Dasturni ishga tushirish uchun quyidagilarni kiriting:
F> myled
Foydalanuvchining LED sinovi, F> dan chiqish uchun istalgan tugma
Chiqish uchun terminal tugmachasini yoki foydalanuvchi tugmachasini bosing.
Bajarildi.