Innehållsförteckning:

Z80-mbc2 Z80 Code Flash User LED: 3 Steg
Z80-mbc2 Z80 Code Flash User LED: 3 Steg

Video: Z80-mbc2 Z80 Code Flash User LED: 3 Steg

Video: Z80-mbc2 Z80 Code Flash User LED: 3 Steg
Video: Z80-MBC2 Flashing LED Clock 2024, November
Anonim
Z80-mbc2 Z80 Code Flash User LED
Z80-mbc2 Z80 Code Flash User LED

Detta är ett exempel på användar-LED-program skrivet i Z80-assembler för z80-mbc2-datorn.

Jag gjorde en test- och revisionsövning för mig, det här är mitt första Z80 -program på över 35 år.

Njut av

Tillbehör

Z80-mbc2 dator

En kopia av Z80ASM från SLR Systems Rel. 1.32, nedladdningsbar från många cp/m -arkiv

En redaktör, jag använde ZDE16, eftersom det redan fanns på CP/M-startbilden för z80-mbc2

Steg 1: Installera Z80asm på din Z80-mbc2

Installera Z80asm på din Z80-mbc2
Installera Z80asm på din Z80-mbc2

Jag antar att du känner till de verktyg du har för din Z80-MBC2, nämligen vilken version av cpmtools du än använder. Här är stegen om du använder kommandoradsversionerna:

  1. Hämta filerna z80asm.com och z80asm.doc (valfritt) i en katalog någonstans på din värd -dator
  2. Sätt ditt SD -kort i samma dator, jag antar att det visas som enhet E: nedan.
  3. Jag satte assembler på min CP/M disk A, för cp/m 2.2 som skulle vara disk image DS0N00. DSK
  4. Kommandot: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: kopierar filen z80asm.com till bilden
  5. Kommandot cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.doc 0: kopierar dokumentationen till disken (tillval)

När du startar cp/m 2.2 på din z80-mbc bör du nu ha z80asm.com och z80asm.doc (tillval) på enhet A

Steg 2: Kopiera källkoden till dig Z80-mbc2

Anslut till z80-mbc med ditt terminalprogram

Jag föreslår att du använder en obefolkad disk för att spara källkoden på, till exempel f: för att välja den här enhetstypen:

F:

efter några sekunder ser du F: prompten.

använd nu programmet zde16 på enhet A för att redigera en tom fil:

a: zde16 myled.z80

Detta skapar en fil som heter myled.z80 på hårddisken F:, Obs!. Z80 krävs i namnet för att z80asm ska fungera.

Nu kopiera och klistra in koden nedan, beroende på din terminalhastighet etc kan du behöva kopiera och klistra in i små sektioner. Eller skriv in det! få den känslan från 1980 -talet också.

;

; Testa användarens LED och användarnyckel; BDOS equ 05h; cp/m BDOS entry point USRLED equ 0; opcode för User LED control USRKEY equ 80h; opcode for User Switch control DPORT equ 0; DATA port i/o CPORT equ 1; Command port output; org 0100h; ld (estack), sp; behåll befintlig information för återgång till cp/m ld sp, stack; ld hl, msg; hejmeddelandesamtal _puts lp: ld a, 1; slå på = 1 samtalsledd samtalsfördröjning; fördröj och vänta på nyckel (ar) jr nz, avsluta; icke noll betyder knapp/omkopplare tryckt xor a; a = 0 samtal ledd fördröjning; fördröj eller vänta på nyckel/switch jr z, lp; om noll, ingen nyckel/switch, gå igen; avsluta: xor a; tangenten eller omkopplaren trycktes in, så gjorde samtalsledningen ld hl, hejdå; säga hejdå -ringa -ingångar; visa msg HL = ld sp, (estack); original stack ret; återgå till cp/m; led: push af; spara led -värde 0 eller 1 ld a, USRLED out (CPORT), a; optcode skickas pop af out (DPORT), a; data skickas ret;; Fördröjningsslinga som kontrollknappen trycks ned på terminal eller användarnyckelfördröjning: ld bc, 00e00h; ca 1/2s 8mhz CPU, ren gissningslinga2: dec bc; räkna loop -push bc; spara regs när du ringer BDOS push de ld c, 6; BDOS raw i/o kontrollera om tangenten är nedtryckt ld e, 0ffh ring BDOS pop de; få tillbaka våra värden från stack pop bc eller a; kolla om tangenten trycks ned på terminal ret nz; ja retur (håller även nz flaggan inställd) ld a, USRKEY; Kontrollera nu användarnyckeln (CPORT), a; kommandoport i a, (DPORT); läsnyckel och a, 1; bara intresserad av bit 0 ret nz; returnera om användarknappen tryckt på ld a, b; eller är bc = 0 eller c jr nz, loop2; inte färdig att räkna, gå igen xor a; ställ z -flaggan till 0 ret; returnera ingen tangent intryckt, slutet av fördröjning; _puts: push bc; spara våra regs redo för bdos -samtal push de nxt: ld a, (hl); få char eller a; testa om det är 0, slutet av msg jr z, klart; ja så gjort ld e, a; ställ in samtal till BDOS för att skriva ut en char ld c, 2 push hl; spara textpekarsamtal BDOS; skriva ut det pop hl inc hl; nästa char jr nxt; fortsätt att göra: pop de; färdig återställning regs pop bc ret; och returnera; msg db 'User LED test, valfri tangent för att avsluta' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0

Spara filen med ESC x. Se användarhandboken för ZDE16 för mer information, det är lite som wordstar för de flesta redigeringar, förutom att Ctrl-K-alternativen är olika.

Steg 3: Kompilera och kör programmet

När du har din källkod på maskinen.

Typ:

F>

F> a: z80asm myled/a Z80ASM Copyright (C) 1983-86 av SLR Systems Rel. 1.32 MYLED/A Slut på filpass 1 0 Fel detekterades. 406 absoluta bytes. 16 symboler upptäckta.

Detta kommer att leta efter filen myled.z80 och producera en binär (.com) fil, det är vad alternativet /a står för.

Se filen z80asm.doc för mer information.

För att köra programmet, skriv:

F> myled

Användar -LED -test, valfri knapp för att lämna Exit F>

Tryck antingen på användarknappen eller på en knapp på terminalen för att avsluta.

Gjort.

Rekommenderad: