Tartalomjegyzék:

Z80-mbc2 Z80 kódvaku Felhasználói LED: 3 lépés
Z80-mbc2 Z80 kódvaku Felhasználói LED: 3 lépés

Videó: Z80-mbc2 Z80 kódvaku Felhasználói LED: 3 lépés

Videó: Z80-mbc2 Z80 kódvaku Felhasználói LED: 3 lépés
Videó: Z80-MBC2: Z80 homebrew computer playing Startrek with CP/M 2024, November
Anonim
Z80-mbc2 Z80 kódvaku Felhasználói LED
Z80-mbc2 Z80 kódvaku Felhasználói LED

Ez egy példa a felhasználói LED programra, amelyet Z80 assemblerben írtak a z80-mbc2 számítógéphez.

Ezt a teszt- és felülvizsgálati gyakorlatot magamnak csináltam, ez az első Z80 programom több mint 35 éve.

Élvezd

Kellékek

Z80-mbc2 számítógép

A Z80ASM másolata az SLR Systems Rel. 1.32, letölthető sok cp/m archívumból

Szerkesztő, a ZDE16-ot használtam, mivel már benne volt a z80-mbc2 CP/M rendszerindító képében

1. lépés: Telepítse a Z80asm készüléket a Z80-mbc2 készülékre

Telepítse a Z80asm készüléket a Z80-mbc2 készülékre
Telepítse a Z80asm készüléket a Z80-mbc2 készülékre

Feltételezem, hogy ismeri a Z80-MBC2 eszközeit, nevezetesen a cpmtools bármilyen verzióját. Az alábbi lépések a parancssori verziók használatakor:

  1. Szerezze be a z80asm.com és a z80asm.doc fájlokat (opcionális) egy könyvtárba, ahol a gazdagépen található.
  2. Tegye az SD -kártyát ugyanabba a számítógépbe, feltételezem, hogy az alábbiakban E meghajtóként jelenik meg.
  3. Az összeszerelőt a CP/M A lemezemre tettem, cp/m 2.2 esetén DS0N00. DSK lemezkép
  4. A parancs: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: a z80asm.com fájlt másolja a képre
  5. A cpmcp -f z80mbc2 -d0 e parancs: DS0N00. DSK z80asm.doc 0: a dokumentációt a lemezre másolja (opcionális)

Amikor a cp/m 2.2 rendszert indítja el a z80-mbc készüléken, mostantól a z80asm.com és a z80asm.doc fájlnak (opcionális) kell lennie az A meghajtón.

2. lépés: Másolja át a forráskódot Önnek Z80-mbc2

Csatlakozzon a z80-mbc-hez a terminálprogram segítségével

Javaslom, hogy használjon nem népesített lemezt a forráskód mentésére, például f: a következő meghajtótípus kiválasztásához:

F:

néhány másodperc múlva megjelenik az F: prompt.

most használja az A meghajtó zde16 programját egy üres fájl szerkesztéséhez:

a: zde16 myled.z80

Ez létrehozza a myled.z80 nevű fájlt az F: lemezen, megjegyzés: a.z80 szükséges a névben, hogy a z80asm működjön.

Most másolja ki és illessze be az alábbi kódot, a terminál sebességétől stb. Függően, előfordulhat, hogy másolni és beilleszteni kell kis szakaszokba. Vagy írd be! vegye vissza azt az 1980 -as évek hangulatát is.

;

; Ellenőrizze a felhasználói LED -et és a felhasználói kulcsot; BDOS equ 05h; cp/m BDOS belépési pont USRLED equ 0; opcode a felhasználói LED vezérléshez USRKEY equ 80h; opcode a User Switch vezérléshez DPORT equ 0; DATA port i/o CPORT equ 1; Command port output; org 0100h; ld (estack), sp; meglévő információk megőrzése a cp/m ld sp, verem eléréséhez; ld hl, msg; hello message call _put lp: ld a, 1; bekapcsolás = 1 hívás vezetett hívás késleltetés; késleltetés és várakozás a kulcs (ok) ra jr nz, befejezés; nem nulla jelenti a gombot/kapcsolót lenyomva xor a; a = 0 hívás vezetett hívás késleltetés; késleltetés vagy várakozás a kulcsra/kapcsolóra jr z, lp; ha nulla, nincs kulcs/kapcsoló, menjen újra; befejezés: xor a; billentyűt vagy kapcsolót megnyomtak, így kész hívás ld hl, bye; mondd bye call _putok; kijelző msg HL = ld sp, (estack); eredeti verem ret; visszatérés a cp/m -hez; led: push af; mentett led érték 0 vagy 1 ld a, USRLED out (CPORT), a; optcode küldött pop af out (DPORT), a; adatok küldve ret;; Késleltető hurok, amely ellenőrzi, hogy a billentyű lenyomva van -e a terminálon, vagy a felhasználói kulcs késleltetése: ld bc, 00e00h; kb. 1/2s 8mhz CPU, tiszta találgatási munkakör2: dec bc; számolja a ciklus push bc -t; mentse a szabályokat a BDOS push de ld c hívásakor, 6; BDOS nyers i/o ellenőrizze, hogy megnyomták -e a gombot ld e, 0ffh hívja a BDOS pop de -t; visszakapjuk értékeinket a verem pop bc vagy a; ellenőrizze, hogy megnyomták -e a gombot a terminálon ret nz; igen visszatér (az nz zászlót is tartja) ld a, USRKEY; Most nézze meg a felhasználói kulcsot (CPORT), a; parancsport az a -ban, (DPORT); olvasási kulcs és a, 1; csak a 0 -as ret nz érdekli; visszatér, ha a felhasználói gomb megnyomta az ld a, b; vagy bc = 0 vagy c jr nz, loop2; nem fejezte be a számlálást, menjen újra xor a; állítsa a z zászlót 0 ret -re; ne adja vissza a gombot, késleltetés vége; _puts: push bc; mentse regisztereinket a bdos hívásokhoz push de nxt: ld a, (hl); get char vagy a; tesztelje, ha 0, msg jr z vége, kész; yes so done ld e, a; hívás beállítása a BDOS -hoz egy char ld c, 2 push hl; szöveges mutató hívása BDOS; nyomtatás pop hl inc hl; next char jr nxt; folytassa: pop de; befejezett visszaállítási reg b pop ret; és visszatér; msg db 'Felhasználói LED teszt, bármelyik billentyű kilépéshez' db 0ah, 0dh, 0 bye db 'Kilépés' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0

Mentse a fájlt az ESC x használatával. További információért lásd a ZDE16 használati útmutatót, ez egy kicsit olyan, mint a Wordstar a legtöbb szerkesztéshez, kivéve a Ctrl-K opcióit.

3. lépés: Fordítsa le és futtassa a programot

Miután megvan a forráskód a gépen.

Típus:

F>

F> a: z80asm myled/a Z80ASM Copyright (C) 1983-86 by SLR Systems Rel. 1.32 MYLED/A Fájl vége Pass 1 0 Hiba észlelve. 406 Abszolút bájt. 16 Szimbólum észlelve.

Ez megkeresi a myled.z80 fájlt, és létrehoz egy bináris (.com) fájlt, ezt jelenti az /a opció.

További információért tekintse meg a z80asm.doc fájlt.

A program futtatásához írja be:

F> myled

Felhasználói LED -teszt, bármelyik gomb az F> kilépéshez

A kilépéshez nyomja meg a felhasználói gombot vagy a terminál egyik gombját.

Kész.

Ajánlott: