Cuprins:

Z80-mbc2 Z80 Cod Flash LED utilizator: 3 pași
Z80-mbc2 Z80 Cod Flash LED utilizator: 3 pași

Video: Z80-mbc2 Z80 Cod Flash LED utilizator: 3 pași

Video: Z80-mbc2 Z80 Cod Flash LED utilizator: 3 pași
Video: Z80-MBC2 Flashing LED Clock 2024, Iulie
Anonim
Z80-mbc2 Z80 Cod Flash LED utilizator
Z80-mbc2 Z80 Cod Flash LED utilizator

Acesta este un exemplu de program LED pentru utilizator scris în asamblorul Z80 pentru computerul z80-mbc2.

Am făcut acest exercițiu de testare și revizuire pentru mine, acesta este primul meu program Z80 de peste 35 de ani.

Bucurați-vă

Provizii

Calculator Z80-mbc2

O copie a Z80ASM de la SLR Systems Rel. 1.32, descărcabil din multe arhive cp / m

Un editor, am folosit ZDE16, deoarece era deja pe imaginea de boot CP / M pentru z80-mbc2

Pasul 1: Instalați Z80asm pe Z80-mbc2

Instalați Z80asm pe Z80-mbc2
Instalați Z80asm pe Z80-mbc2

Presupun o anumită familiaritate cu instrumentele pe care le aveți pentru Z80-MBC2, și anume orice versiune de cpmtools utilizați. Iată pașii dacă utilizați versiunile din linia de comandă:

  1. Obțineți fișierele z80asm.com și z80asm.doc (opțional) într-un director de pe un anumit loc de pe computerul gazdă
  2. Puneți cardul SD în același computer, presupun mai jos că se afișează ca unitate E: mai jos.
  3. Am pus asamblorul pe discul meu CP / M A, pentru cp / m 2.2 care ar fi imaginea discului DS0N00. DSK
  4. Comanda: cpmcp -f z80mbc2-d0 e: DS0N00. DSK z80asm.com 0: va copia fișierul z80asm.com în imagine
  5. Comanda cpmcp -f z80mbc2-d0 e: DS0N00. DSK z80asm.doc 0: va copia documentația pe disc (opțional)

Când porniți cp / m 2.2 pe z80-mbc, ar trebui să aveți acum z80asm.com și z80asm.doc (opțional) pe unitatea A

Pasul 2: Copiați codul sursă la dvs. Z80-mbc2

Conectați-vă la z80-mbc folosind programul terminal

Vă sugerez să utilizați un disc nepopulat pentru a salva codul sursă pe, de exemplu, f: pentru a alege acest tip de unitate:

F:

după câteva secunde veți vedea promptul F:

acum utilizați programul zde16 pe unitatea A pentru a edita un fișier gol:

a: zde16 myled.z80

Acest lucru va crea un fișier numit myled.z80 pe discul F:, notă:.z80 este necesar în nume pentru ca z80asm să funcționeze.

Acum copiați și lipiți codul de mai jos, în funcție de viteza terminalului etc., poate fi necesar să copiați și să lipiți în secțiuni mici. Sau introduceți-l! obțineți și senzația din anii 1980.

;

; Testați LED-ul utilizatorului și cheia utilizatorului; BDOS equ 05h; cp / m punctul de intrare BDOS USRLED equ 0; opcode pentru control LED utilizator USRKEY equ 80h; opcode pentru control comutator utilizator DPORT equ 0; port DATA i / o CPORT equ 1; ieșire port comandă; org 0100h; ld (estack), sp; păstrați informațiile existente pentru a reveni la cp / m ld sp, stack; ld hl, msg; salut mesaj apel _puts lp: ld a, 1; pornire = 1 apel led întârziere apel; întârziere și așteptare tastă (e) jr nz, terminare; non zero înseamnă tastă / comutator apăsat xor a; a = 0 apel de apel întârziere apel; întârziere sau așteptare tastă / comutator jr z, lp; dacă zero, fără tastă / comutator, mergeți din nou; finish: xor a; tasta sau comutatorul a fost apăsat, așa că s-a făcut apel led ld hl, bye; say bye call _puts; display msg HL = ld sp, (estack); original stack ret; return to cp / m; led: apăsați af; salvați valoarea led 0 sau 1 ld a, USRLED out (CPORT), a; optcode trimis pop af out (DPORT), a; date trimise ret;; Buclă de întârziere care verifică tasta apăsată pe terminal sau întârziere tastă utilizator: ld bc, 00e00h; aprox 1 / 2s 8mhz CPU, pure guess work loop2: dec bc; numărați bucla push bc; 6; BDOS raw i / o verificați dacă tasta este apăsată ld e, 0ffh apelați BDOS pop de; recuperați valorile noastre din stiva pop bc sau a; verificați dacă tasta este apăsată pe terminal ret nz; a, USRKEY; Acum verificați cheia utilizatorului (CPORT), a; portul de comandă într-un, (DPORT); tasta de citire și a, 1; interesat doar de bitul 0 ret nz; returnează dacă tasta utilizator a apăsat ld a, b; sau este bc = 0 sau c jr nz, bucla2; nu s-a terminat de numărat, mergeți din nou xor a; setați steagul z la 0 ret; returnează nici o tastă apăsată, sfârșitul întârzierii; _puts: push bc; save our regs ready for bdos calls push de nxt: ld a, (hl); get char or a; test dacă este 0, sfârșitul msg jr z, gata; da așa gata ld e, a; configurați apelul către BDOS pentru a imprima un cd ld, 2 împingeți hl; salvați pointerul text apelați BDOS; tipăriți-l pop hl inc hl; următorul caracter jr nxt; continuați: pop de;; msg db 'Test LED utilizator, orice tastă pentru a ieși' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stivă: dw 0

Salvați fișierul utilizând ESC x. Consultați ghidul de utilizare ZDE16 pentru mai multe informații, este un pic ca wordstar pentru majoritatea editării, cu excepția opțiunilor Ctrl-K diferite.

Pasul 3: Compilați și rulați programul

Odată ce ai codul sursă pe aparat.

Tip:

F>

F> a: z80asm myled / a Z80ASM Copyright (C) 1983-86 by SLR Systems Rel. 1.32 MYLED / A Sfârșit fișier Trecere 1 0 Eroare detectate. 406 Octiți absoluți. 16 simboluri detectate.

Acesta va căuta fișierul myled.z80 și va produce un fișier binar (.com), ceea ce reprezintă opțiunea / a.

Consultați fișierul z80asm.doc pentru mai multe informații.

Pentru a rula programul, tastați:

F> myled

Test LED utilizator, orice tastă pentru a ieși din ieșirea F>

Apăsați fie butonul utilizatorului, fie o tastă de pe terminal pentru a ieși.

Terminat.

Recomandat: