Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Dette er et eksempel bruker-LED-program skrevet i Z80 assembler for z80-mbc2 datamaskinen.
Jeg gjorde en test- og revisjonsøvelse for meg, dette er mitt første Z80 -program på over 35 år.
Nyt
Rekvisita
Z80-mbc2 datamaskin
En kopi av Z80ASM fra SLR Systems Rel. 1.32, nedlastbar fra mange cp/m -arkiver
En redaktør, jeg brukte ZDE16, siden det allerede var på CP/M-oppstartsbildet for z80-mbc2
Trinn 1: Installer Z80asm på din Z80-mbc2
Jeg antar litt kjent med verktøyene du har for din Z80-MBC2, nemlig hvilken versjon av cpmtools du bruker. Her er trinnene hvis du bruker kommandolinjeversjonene:
- Få filene z80asm.com og z80asm.doc (valgfritt) i en katalog et sted på verts -PC -en
- Sett SD -kortet i samme PC, jeg antar at det vises som stasjon E: nedenfor.
- Jeg satte assembler på min CP/M disk A, for cp/m 2.2 som ville være disk image DS0N00. DSK
- Kommandoen: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: kopierer filen z80asm.com til bildet
- Kommandoen cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.doc 0: kopierer dokumentasjonen til disken (valgfritt)
Når du starter cp/m 2.2 på z80-mbc, bør du nå ha z80asm.com og z80asm.doc (valgfritt) på stasjon A
Trinn 2: Kopier kildekoden til deg Z80-mbc2
Koble til z80-mbc ved hjelp av terminalprogrammet
Jeg foreslår at du bruker en upopulert disk til å lagre kildekoden på, for eksempel f: for å velge denne stasjonen:
F:
etter noen sekunder vil du se F: ledeteksten.
bruk nå zde16 -programmet på stasjon A for å redigere en tom fil:
a: zde16 myled.z80
Dette vil opprette en fil som heter myled.z80 på disken F:, merk:.z80 kreves i navnet for at z80asm skal fungere.
Kopier og lim inn koden nedenfor, avhengig av terminalhastigheten osv. Må du kanskje kopiere og lime inn i små deler. Eller skriv det inn! få følelsen tilbake på 1980 -tallet også.
;
Test brukerens LED og brukernøkkel; BDOS equ 05h; cp/m BDOS entry point USRLED equ 0; opcode for 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; behold eksisterende informasjon for retur til cp/m ld sp, stack; ld hl, msg; hei meldingsanrop _inngang lp: ld a, 1; slå på = 1 samtale ledet samtale forsinkelse; forsink og vent på tast (er) jr nz, fullfør; ikke null betyr tast/bryter trykket xor a; a = 0 samtale ledd samtale forsinkelse; forsink eller vent på tast/bryter jr z, lp; hvis null, ingen nøkkel/bryter, gå igjen; fullfør: xor a; tasten eller bryteren ble trykket, så ferdig samtale led ld hl, bye; si bye samtale _puts; vis msg HL = ld sp, (estack); original stack ret; return to cp/m; led: push af; lagre led -verdi 0 eller 1 ld a, USRLED out (CPORT), a; optcode sendt pop af out (DPORT), a; data sendt ret;; Forsinkelsessløyfe som kontrolltast trykkes på terminal eller brukernøkkelforsinkelse: ld bc, 00e00h; ca. 1/2s 8mhz CPU, ren gjetningssløyfe2: des bc; telle sløyfe push bc; lagre regs når du ringer til BDOS push de ld c, 6; BDOS raw i/o sjekk om tasten er trykket ld e, 0ffh ring BDOS pop de; få våre verdier tilbake fra stack pop bc eller a; sjekk om tasten er trykket på terminal ret nz; ja retur (holder også nz flagg satt) ld a, USRKEY; Sjekk nå brukernøkkel ut (CPORT), a; kommandoport i a, (DPORT); lesetast og a, 1; bare interessert i bit 0 ret nz; retur hvis brukerknappen trykker på ld a, b; eller er bc = 0 eller c jr nz, loop2; ikke ferdig med å telle, gå igjen xor a; sett z -flagget til 0 ret; returner ingen tast trykket, slutten av forsinkelsen; _puts: push bc; lagre regsene våre klare for bdos -samtaler push de nxt: ld a, (hl); få char eller a; test om det er 0, slutten av msg jr z, ferdig; ja så ferdig ld e, a; sette opp anrop til BDOS for å skrive ut en char ld c, 2 push hl; lagre tekstpeker samtale BDOS; skrive den ut pop hl inc hl; neste char jr nxt; fortsett å gjøre: pop de; ferdig gjenopprette regs pop bc ret; og gå tilbake; msg db 'User LED test, any key to exit' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0
Lagre filen med ESC x. Se bruksveiledningen for ZDE16 for mer informasjon, det er litt som wordstar for de fleste redigeringer, bortsett fra at Ctrl-K-alternativene er forskjellige.
Trinn 3: Kompiler og kjør programmet
Når du har kildekoden på maskinen.
Type:
F>
F> a: z80asm myled/a Z80ASM Copyright (C) 1983-86 av SLR Systems Rel. 1.32 MYLED/A Slutt på filpass 1 0 Feil (er) oppdaget. 406 Absolutte bytes. 16 Symboler oppdaget.
Dette vil lete etter filen myled.z80 og produsere en binær (.com) fil, det er det alternativet /a står for.
Se z80asm.doc -filen for mer informasjon.
For å kjøre programmet, skriver du inn:
F> myled
Bruker -LED -test, hvilken som helst tast for å gå ut av Avslutt F>
Trykk på enten brukerknappen eller en tast på terminalen for å avslutte.
Ferdig.