Mundarija:

Z80-mbc2 Z80 Code Flash foydalanuvchi LED: 3 qadam
Z80-mbc2 Z80 Code Flash foydalanuvchi LED: 3 qadam

Video: Z80-mbc2 Z80 Code Flash foydalanuvchi LED: 3 qadam

Video: Z80-mbc2 Z80 Code Flash foydalanuvchi LED: 3 qadam
Video: Z80-MBC2 Flashing LED Clock 2024, Sentyabr
Anonim
Z80-mbc2 Z80 Code Flash foydalanuvchi LED
Z80-mbc2 Z80 Code Flash foydalanuvchi LED

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

Z80asm-ni Z80-mbc2-ga o'rnating
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:

  1. Fayllarni z80asm.com va z80asm.doc (ixtiyoriy) katalogdan kompyuteringizning biron bir joyidan oling
  2. SD -kartangizni bir xil kompyuterga qo'ying, menimcha, u quyida E diskda ko'rsatiladi.
  3. Men assemblerni CP/M diskimga qo'ydim, cp/m 2.2 uchun bu DS0N00. DSK disk tasviri bo'ladi.
  4. Buyruq: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: z80asm.com faylini rasmga ko'chiradi
  5. 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.

Tavsiya: