Inhoudsopgave:

Z80-mbc2 Z80 Code Flash gebruikers-LED - Ajarnpa
Z80-mbc2 Z80 Code Flash gebruikers-LED - Ajarnpa

Video: Z80-mbc2 Z80 Code Flash gebruikers-LED - Ajarnpa

Video: Z80-mbc2 Z80 Code Flash gebruikers-LED - Ajarnpa
Video: Z80-MBC2 Flashing LED Clock 2024, November
Anonim
Z80-mbc2 Z80 Code Flash Gebruikers-LED
Z80-mbc2 Z80 Code Flash Gebruikers-LED

Dit is een voorbeeld van een gebruikers-LED-programma geschreven in Z80 assembler voor de z80-mbc2-computer.

Ik deed dit een test- en revisieoefening voor mij, dit is mijn eerste Z80-programma in meer dan 35 jaar.

Genieten van

Benodigdheden

Z80-mbc2-computer

Een kopie van Z80ASM van SLR Systems Rel. 1.32, te downloaden uit vele cp/m-archieven

Een editor, ik gebruikte ZDE16, omdat het al op de CP/M-opstartimage stond voor de z80-mbc2

Stap 1: Installeer Z80asm op uw Z80-mbc2

Installeer Z80asm op uw Z80-mbc2
Installeer Z80asm op uw Z80-mbc2

Ik neem aan dat je bekend bent met de tools die je hebt voor je Z80-MBC2, namelijk welke versie van cpmtools je ook gebruikt. Dit zijn de stappen bij het gebruik van de opdrachtregelversies:

  1. Haal de bestanden z80asm.com en z80asm.doc (optioneel) in een map ergens op uw host-pc
  2. Plaats uw SD-kaart in dezelfde pc, ik neem aan dat deze wordt weergegeven als station E: hieronder.
  3. Ik heb de assembler op mijn CP/M schijf A gezet, voor cp/m 2.2 zou dat schijfkopie DS0N00. DSK zijn
  4. De opdracht: cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.com 0: kopieert het bestand z80asm.com naar de afbeelding
  5. Het commando cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.doc 0: kopieert de documentatie naar de schijf (optioneel)

Wanneer u cp/m 2.2 opstart op uw z80-mbc, zou u nu z80asm.com en z80asm.doc (optioneel) op station A moeten hebben

Stap 2: Kopieer de broncode naar u Z80-mbc2

Maak verbinding met de z80-mbc met uw terminalprogramma

Ik raad je aan een niet-bevolkte schijf te gebruiken om de broncode op te slaan, bijvoorbeeld f: om dit schijftype te kiezen:

F:

na een paar seconden ziet u de F: prompt.

gebruik nu het programma zde16 op station A om een leeg bestand te bewerken:

a:zde16 myled.z80

Dit zal een bestand maken met de naam myled.z80 op de schijf F:, let op: de.z80 is vereist in de naam om z80asm te laten werken.

Kopieer en plak nu de onderstaande code, afhankelijk van uw terminalsnelheid enz. moet u mogelijk in kleine secties kopiëren en plakken. Of typ het in! krijg ook dat jaren 80-gevoel terug.

;

;Test de gebruikers-LED en gebruikerssleutel; BDOS equ 05h;cp/m BDOS ingangspunt USRLED equ 0;opcode voor gebruikers-LED-bediening USRKEY equ 80h;opcode voor gebruikersschakelaar-bediening DPORT equ 0;DATA-poort i/o CPORT equ 1;Command-poortuitgang; org 0100h; ld (estack), sp;bewaar bestaande info om terug te keren naar cp/m ld sp, stack; ld hl, msg;hallo berichtoproep _puts lp: ld a, 1;aanzetten = 1 oproep led oproepvertraging;vertraging en wachten op toets(en) jr nz, klaar;niet nul betekent toets/schakelaar ingedrukt xor a;a= 0 oproep led oproepvertraging;vertraging of wacht op toets/schakelaar jr z, lp;indien nul, geen toets/schakelaar, ga opnieuw; finish: xof een;toets of schakelaar is ingedrukt, dus klaar bel led ld hl, doei;say bye call _puts;display bericht HL= ld sp, (estack);originele stapel ret;terug naar cp/m; led: push af;save led-waarde 0 of 1 ld a, USRLED out (CPORT), a;optcode verzonden pop af out (DPORT), a;data verzonden ret;;Vertraging lus die controletoets indrukt op terminal of gebruikerstoets vertraging: ld bc, 00e00h;ongeveer 1/2s 8mhz CPU, puur giswerk loop2: dec bc;tel de lus push bc;bewaar regs bij het aanroepen van BDOS push de ld c, 6;BDOS raw i/o controleer of toets ingedrukt is ld e, 0ffh bel BDOS pop de;haal onze waarden terug van stack pop bc of a;controleer of toets ingedrukt is op terminal ret nz;yes return (houdt ook nz vlag in) ld a, USRKEY;Controleer nu gebruikerssleutel uit (CPORT), a;opdrachtpoort in a, (DPORT);lees sleutel en a, 1;alleen geïnteresseerd in bit 0 ret nz;retour als gebruikerstoets ld a, b indrukt;of is bc=0 of c jr nz, loop2;niet klaar met tellen, ga opnieuw xof a;zet de z-vlag op 0 ret;retour geen toets ingedrukt, einde van vertraging; _puts: push bc;save onze regs klaar voor bdos-oproepen push de nxt: ld a, (hl);get char of a;test if it's 0, end of msg jr z, done;yes so done ld e, a; aanroep naar BDOS instellen om een char ld c af te drukken, 2 push hl;save text pointer call BDOS;print it pop hl inc hl;next char jr nxt;ga verder gedaan: pop de;complete restore regs pop bc ret;and return; 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

Sla het bestand op met ESC x. Zie de ZDE16-gebruiksgids voor meer informatie, het lijkt een beetje op wordstar voor de meeste bewerkingen, behalve dat de Ctrl-K-opties anders zijn.

Stap 3: Compileer en voer het programma uit

Zodra u uw broncode op de machine hebt.

Type:

F>

F>a:z80asm myled/a Z80ASM Copyright (C) 1983-86 door SLR Systems Rel. 1.32 MYLED/A Einde bestand Pass 1 0 Fout(en) gedetecteerd. 406 absolute bytes. 16 symbolen gedetecteerd.

Dit zal naar het bestand myled.z80 zoeken en een binair (.com) bestand produceren, dat is waar de optie /a voor staat.

Zie het bestand z80asm.doc voor meer informatie.

Om het programma uit te voeren, typt u:

F>myled

Gebruikers-LED-test, elke toets om af te sluiten Afsluiten F>

Druk op de gebruikersknop of op een toets op de terminal om af te sluiten.

Gedaan.

Aanbevolen: