Taula de continguts:

Z80-mbc2 Codi Z80 LED d'usuari Flash: 3 passos
Z80-mbc2 Codi Z80 LED d'usuari Flash: 3 passos

Vídeo: Z80-mbc2 Codi Z80 LED d'usuari Flash: 3 passos

Vídeo: Z80-mbc2 Codi Z80 LED d'usuari Flash: 3 passos
Vídeo: Z80-MBC User led and key 2024, Desembre
Anonim
Z80-mbc2 LED d'usuari Flash amb codi Z80
Z80-mbc2 LED d'usuari Flash amb codi Z80

Aquest és un exemple de programa LED d'usuari escrit en l'assemblador Z80 per a l'ordinador z80-mbc2.

Vaig fer un exercici de prova i revisió per a mi, aquest és el meu primer programa Z80 des de fa més de 35 anys.

Gaudeix

Subministraments

Ordinador Z80-mbc2

Una còpia de Z80ASM de SLR Systems Rel. 1.32, descarregable de molts arxius cp / m

Un editor, he utilitzat ZDE16, ja que ja apareixia a la imatge d’arrencada CP / M del z80-mbc2

Pas 1: instal·leu Z80asm al vostre Z80-mbc2

Instal·leu Z80asm al vostre Z80-mbc2
Instal·leu Z80asm al vostre Z80-mbc2

Assumeixo una certa familiaritat amb les eines que teniu per al vostre Z80-MBC2, és a dir, qualsevol versió de cpmtools que utilitzeu. Aquests són els passos per utilitzar les versions de línia d'ordres:

  1. Obteniu els fitxers z80asm.com i z80asm.doc (opcional) en un directori en algun lloc del vostre PC amfitrió
  2. Introduïu la targeta SD al mateix PC, suposo que a continuació es mostra com a unitat E: a continuació.
  3. Vaig posar el muntador al meu disc CP / M A, per a cp / m 2.2 que seria la imatge del disc DS0N00. DSK
  4. L'ordre: cpmcp -f z80mbc2-d0 e: DS0N00. DSK z80asm.com 0: copiarà el fitxer z80asm.com a la imatge
  5. L'ordre cpmcp -f z80mbc2-d0 e: DS0N00. DSK z80asm.doc 0: copiarà la documentació al disc (opcional)

Quan arrenceu cp / m 2.2 al vostre z80-mbc, ara hauríeu de tenir z80asm.com i z80asm.doc (opcional) a la unitat A

Pas 2: copieu el codi font a Z80-mbc2

Connecteu-vos al z80-mbc mitjançant el programa de terminal

Us suggereixo que utilitzeu un disc no poblat per desar el codi font, per exemple, f: per triar aquest tipus de disc:

F:

al cap d'uns segons veureu l'indicador F:.

ara utilitzeu el programa zde16 a la unitat A per editar un fitxer en blanc:

a: zde16 myled.z80

Això crearà un fitxer anomenat myled.z80 al disc F:, tingueu en compte que el fitxer.z80 és necessari al nom perquè funcioni el z80asm.

Ara copieu i enganxeu el codi que apareix a continuació, en funció de la velocitat del terminal, etc., és possible que hàgiu de copiar i enganxar en petites seccions. O escriviu-lo! aconseguir que la sensació dels anys vuitanta també es recuperi.

;

; Proveu el LED de l'usuari i la clau de l'usuari; BDOS equ 05h; cp / m punt d’entrada BDOS USRLED equ 0; codi d’opció per al control de l’usuari USRKEY equ 80h; codi d’opció per al control de commutació d’usuari DPORT equ 0; port de dades i / o CPORT equ 1; sortida del port d’ordres; org 0100h; ld (estack), sp; mantingui la informació existent per tornar a cp / m ld sp, stack; ld hl, msg; hello message call _puts lp: ld a, 1; active = 1 call led led delay; endarrereu i espereu les tecles jr nz, finalitzeu; no zero significa tecla / commutador premut xor a; 0 trucada led retard de trucada; retard o espera de la tecla / commutador jr z, lp; si és zero, no hi ha tecla / commutador, torneu a anar; acabat: xor a; es va prémer la tecla o l'interruptor, de manera que es va fer una trucada led ld hl, bye; say bye call _puts; display msg HL = ld sp, (estack); original stack ret; return to cp / m; led: push af; save led value 0 or 1 ld a, USRLED out (CPORT), a; optcode sent pop pop out out (DPORT), a; data sent ret;; Bucle de retard que comprova la tecla premuda al terminal o retard de la tecla d'usuari: ld bc, 00e00h; aprox 1 / 2s 8mhz CPU, pure guess work loop2: dec bc; compta el bucle push bc; 6; BDOS raw i / o comprova si la tecla està premuda ld e, 0ffh truca a BDOS pop de; recupera els nostres valors de la pila pop bc o a; comprova si la tecla està premuda al terminal ret nz; a, USRKEY; Ara comproveu la clau d’usuari (CPORT), a; port d’ordres en a, (DPORT); tecla de lectura i a, 1; només interessa el bit 0 ret nz; torneu si la tecla d’usuari premia ld a, b; o és bc = 0 o c jr nz, bucle2; no s'ha acabat de comptar, torneu a anar xor a; configureu la bandera z a 0 ret; no torneu cap tecla premuda, final del retard; _puts: push bc; guardeu els nostres registres a punt per a les trucades bdos push de nxt: ld a, (hl); obteniu char o a; proveu si és 0, final de msg jr z, fet; sí, així ho feu ld e, a; configureu una trucada a BDOS per imprimir un cd ld, 2 premeu hl; deseu el punter de text, truqueu a BDOS; imprimiu-lo pop hl inc hl; següent jr nxt; continueu fent: pop de; finalitzeu la restauració regs pop bc ret; i torneu; msg db 'Prova LED d'usuari, qualsevol tecla per sortir' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 pila: dw 0

Deseu el fitxer amb ESC x. Consulteu la guia d’ús de ZDE16 per obtenir més informació, és una mica com wordstar per a la majoria d’edicions, excepte que les opcions Ctrl-K són diferents.

Pas 3: Compileu i executeu el programa

Un cop tingueu el codi font a la màquina.

Tipus:

F>

F> a: z80asm myled / a Z80ASM Copyright (C) 1983-86 de SLR Systems Rel. 1,32 MYLED / A Final del fitxer Pass 1 0 Error (s) detectats. 406 bytes absoluts. 16 símbols detectats.

Això buscarà el fitxer myled.z80 i produirà un fitxer binari (.com), això és el que significa l'opció / a.

Consulteu el fitxer z80asm.doc per obtenir més informació.

Per executar el programa, escriviu:

F> myled

Prova LED d'usuari, qualsevol tecla per sortir de la sortida F>

Premeu el botó d'usuari o una tecla del terminal per sortir.

Fet.

Recomanat: