Innholdsfortegnelse:

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

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

Video: Z80-mbc2 Z80 Code Flash User LED: 3 Trinn
Video: Z80-MBC User led and key 2024, Juli
Anonim
Z80-mbc2 Z80 Code Flash User LED
Z80-mbc2 Z80 Code Flash User LED

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

Installer Z80asm på din Z80-mbc2
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:

  1. Få filene z80asm.com og z80asm.doc (valgfritt) i en katalog et sted på verts -PC -en
  2. Sett SD -kortet i samme PC, jeg antar at det vises som stasjon E: nedenfor.
  3. Jeg satte assembler på min CP/M disk A, for cp/m 2.2 som ville være disk image DS0N00. DSK
  4. Kommandoen: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: kopierer filen z80asm.com til bildet
  5. 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.

Anbefalt: