Sommario:

Z80-mbc2 LED utente flash codice Z80: 3 passaggi
Z80-mbc2 LED utente flash codice Z80: 3 passaggi

Video: Z80-mbc2 LED utente flash codice Z80: 3 passaggi

Video: Z80-mbc2 LED utente flash codice Z80: 3 passaggi
Video: Linguaggio C sul C64 / Commodore 64 2024, Novembre
Anonim
Z80-mbc2 LED utente flash codice Z80
Z80-mbc2 LED utente flash codice Z80

Questo è un esempio di programma LED utente scritto nell'assemblatore Z80 per il computer z80-mbc2.

Ho fatto questo esercizio di prova e revisione per me, questo è il mio primo programma Z80 da oltre 35 anni.

Godere

Forniture

Computer Z80-mbc2

Una copia di Z80ASM da SLR Systems Rel. 1.32, scaricabile da molti archivi cp/m

Un editor, ho usato ZDE16, poiché era già sull'immagine di avvio CP/M per z80-mbc2

Passaggio 1: installa Z80asm sul tuo Z80-mbc2

Installa Z80asm sul tuo Z80-mbc2
Installa Z80asm sul tuo Z80-mbc2

Presumo che abbia una certa familiarità con gli strumenti che hai per il tuo Z80-MBC2, ovvero qualunque versione di cpmtools utilizzi. Ecco i passaggi se si utilizzano le versioni della riga di comando:

  1. Ottieni i file z80asm.com e z80asm.doc (opzionale) in una directory da qualche parte sul tuo PC host
  2. Metti la tua scheda SD nello stesso PC, presumo che sotto venga mostrata come unità E: sotto.
  3. Ho messo l'assemblatore sul mio disco CP/M A, per cp/m 2.2 sarebbe l'immagine del disco DS0N00. DSK
  4. Il comando: cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.com 0: copierà il file z80asm.com nell'immagine
  5. Il comando cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.doc 0: copierà la documentazione sul disco (opzionale)

Quando avvii cp/m 2.2 sul tuo z80-mbc, ora dovresti avere z80asm.com e z80asm.doc (opzionale) sull'unità A

Passaggio 2: copia il codice sorgente su di te Z80-mbc2

Connettiti a z80-mbc usando il tuo programma terminale

Ti suggerisco di utilizzare un disco non popolato su cui salvare il codice sorgente, ad esempio f: per scegliere questo tipo di unità:

F:

dopo pochi secondi vedrai il prompt F:.

ora usa il programma zde16 sull'unità A per modificare un file vuoto:

a:zde16 myled.z80

Questo creerà un file chiamato myled.z80 sul disco F:, nota:.z80 è richiesto nel nome per far funzionare z80asm.

Ora copia e incolla il codice qui sotto, a seconda della velocità del tuo terminale, ecc. Potrebbe essere necessario copiare e incollare in piccole sezioni. Oppure digitalo! recupera anche quella sensazione degli anni '80.

;

; Testare il LED utente e la chiave utente; BDOS equ 05h;cp/m BDOS entry point USRLED equ 0;opcode per controllo User LED USRKEY equ 80h;opcode per controllo User Switch DPORT equ 0;DATA port i/o CPORT equ 1;Command port output; org 0100h; ld (estack), sp;mantiene le informazioni esistenti per tornare a cp/m ld sp, stack; ld hl, msg;hello message call _puts lp: ld a, 1;turn on = 1 call led call delay;ritardo e attesa tasto/i jr nz, finish;non zero significa tasto/interruttore premuto xor a;a= 0 chiamata led ritardo chiamata;ritardo o attesa chiave/commutatore jr z, lp;se zero, nessun tasto/commutatore, riparte; finish: xor è stato premuto un;tasto o interruttore, quindi fatto call led ld hl, bye;say bye call _puts;display msg HL= ld sp, (estack);stack originale ret;return to cp/m; led: push af;salva valore led 0 o 1 ld a, USRLED out (CPORT), a;optcode inviato pop af out (DPORT), a;data inviati ret;;Ritardo loop che controlla il tasto premuto sul terminale o ritardo del tasto utente: ld bc, 00e00h;approx 1/2s 8mhz CPU, pure guess work loop2: dec bc;conta il loop push bc;salva i reg quando si chiama BDOS push de ld c, 6;BDOS raw i/o controlla se il tasto è stato premuto ld e, 0ffh chiama BDOS pop de;recupera i nostri valori dallo stack pop bc o a;controlla se il tasto è premuto sul terminale ret nz;yes return (mantiene anche impostato il flag nz) ld a, USRKEY;Ora controlla user key out (CPORT), a;command port in a, (DPORT);read key and a, 1;interessa solo al bit 0 ret nz;return se userkey premuto ld a, b;or is bc=0 o c jr nz, loop2;non finito di contare, ricomincia xor a;porta il flag z a 0 ret;return nessun tasto premuto, fine del ritardo; _puts: push bc;salva i nostri reg pronti per le chiamate bdos push de nxt: ld a, (hl);get char o a;test se è 0, end of msg jr z, done;yes così done ld e, a; imposta la chiamata a BDOS per stampare un char ld c, 2 push hl;salva il puntatore di testo chiama BDOS;stampalo pop hl inc hl;next char jr nxt;continua a fare: pop de;finito restore regs pop bc ret;and return; msg db 'Test LED utente, qualsiasi tasto per uscire' db 0ah, 0dh, 0 bye db 'Esci' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0

Salva il file usando ESC x. Vedi la guida all'uso di ZDE16 per maggiori informazioni, è un po' come wordstar per la maggior parte delle modifiche, tranne che le opzioni Ctrl-K sono diverse.

Passaggio 3: compila ed esegui il programma

Una volta che hai il tuo codice sorgente sulla macchina.

Tipo:

F>

F>a:z80asm myled/a Z80ASM Copyright (C) 1983-86 di SLR Systems Rel. 1.32 MYLED/A Fine del file Superato 1 0 Errori rilevati. 406 byte assoluti. 16 simboli rilevati.

Questo cercherà il file myled.z80 e produrrà un file binario (.com), ecco cosa rappresenta l'opzione /a.

Vedere il file z80asm.doc per maggiori informazioni.

Per eseguire il programma, digitare:

F>myled

Test LED utente, qualsiasi tasto per uscire Esci F>

Premere il pulsante utente o un tasto sul terminale per uscire.

Fatto.

Consigliato: