Innehållsförteckning:
- Tillbehör
- Steg 1: Installera Z80asm på din Z80-mbc2
- Steg 2: Kopiera källkoden till dig Z80-mbc2
- Steg 3: Kompilera och kör programmet
Video: Z80-mbc2 Z80 Code Flash User LED: 3 Steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
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
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:
- Hämta filerna z80asm.com och z80asm.doc (valfritt) i en katalog någonstans på din värd -dator
- Sätt ditt SD -kort i samma dator, jag antar att det visas som enhet E: nedan.
- Jag satte assembler på min CP/M disk A, för cp/m 2.2 som skulle vara disk image DS0N00. DSK
- Kommandot: cpmcp -f z80mbc2 -d0 e: DS0N00. DSK z80asm.com 0: kopierar filen z80asm.com till bilden
- 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:
Mash Up Arduino Code Prover: 6 steg (med bilder)
Mash Up Arduino Code Samples: Denna handledning går igenom processen att kombinera Arduino -provskisser för att göra en fungerande projektprototyp. Att utveckla koden för ditt projekt kan vara den mest skrämmande delen, särskilt om du inte redan har gjort det tusen gånger. Om
Castle Planter (med Tinkercad Code Block): 25 steg (med bilder)
Castle Planter (med Tinkercad Code Block): Den här designen här tog mig ganska lång tid att uppnå, och eftersom min kodningskunskap är minst sagt begränsad, hoppas jag att det blev ok :) Med hjälp av instruktionerna förutsatt att du borde kunna återskapa alla aspekter av denna design helt utan
Morse Code Station: 3 steg
Morse Code Station: Dit-dit-dah-dah! Lär dig Morse Code med detta enkla Arduino Uno -projekt.Detta enkla Arduino -projekt är en Morse Code -station. Morse Code är en kommunikationsmetod som kodar tecken som en serie prickar och bindestreck. Denna krets använder en piezo -summer för att
Multi User Smart Mirror Med Google Kalender: 10 steg
Multi User Smart Mirror Med Google Kalender: I den här instruktionsboken kommer vi att skapa en smart spegel integrerad med Google Kalender. Jag gjorde det här projektet eftersom jag tycker att smarta speglar är riktigt coola, de är en gåva på morgonen. Men jag bestämde mig för att göra en själv från noll eftersom alla andra
ARDUINO MENY DESIGN With OLED-UI (USER INTERFACE): 4 steg
ARDUINO MENY DESIGN Med OLED-UI (USER INTERFACE): Hej alla! I den här självstudien ska jag försöka förklara hur man gör ARDUINO MENY DESIGN med hjälp av i2c OLED Screen. Det är också känt som UI (User Interface). Det har använts för många projekt men det måste vara bekant med dig från 3d -skrivare :) Här också video