Bios del
microcomputer
[Index][Scheda madre con uP Z80][Programma][Tastierino][Scheda visualizzazione][Scheda alimentazione e clock]
[Lista Argomenti]
Il bios può essere suddiviso in tre parti
fondamentali: test della memoria, acquisizione del dato da tastiera ed in
fine visualizzazione.
Test della
memoria:
org 0000
bufda equ fe01 inizializza bufda fe01
buflo equ fe02 inizializza buflo fe02
bufhi equ fe03 inizializza bufhi fe03
bufta equ fe04 inizializza bufta fe04
da equ 6000
inizializza da 6000
lo equ 4000
inizializza lo 4000
hi equ 2000
inizializza hi 2000
tasto equ c000 inizializza tasto c000
ld sp,ffff
inizializza area stack
jp 0100
vai alla locaz 0100
org 0100
ld a,69
inizializza accumulator
ld bc,ffff
inizializza contatore
ld hl,dfff
inizializza puntatore
ciclo: inc hl incrementa
puntatore
inc bc
incrementa contatore
bit 5,b
controlla bit 6 reg b
jp nz,dopo
se bit 6=1 vai a fine
ld (hl),a
scrivi su memoria
ld a,(hl)
leggi da memoria
cp 69
confronta con 69
jp z,ciclo
se confr=0 vai a ciclo
error: ld a,ba inizializza a con
ba
ld (hi),a
scrivi ba su HI
ld a,db
inizializza a con db
ld (lo),a
scrivi db su LO
ld a,ad
inizializza a con ad
ld (da),a
scrivi ad su DA
halt
halt
dopo: ld hl,e000 inizializza hl a e000
ld a,h
accum=parte alta
ld (hi),a
visualizza parte alta
ld (bufhi),a carica
buffer alto
ld a,l
accum=parte bassa
ld (lo),a
visualizza parte bassa
ld (buflo),a carica
buffer basso
ld a,(hl)
accum=dato
ld (da),a
visualizza dato
ld (bufda),a
carica buffer dato
ld (bufta),a
buff tasto=accumulatore
|
Acquisizione
di un dato dalla tastiera:
p1: ld a,(tasto) leggi tastiera
bit 5,a
controlla pin DA 74923
jr z,p1
se DA=0 vai p1
ld c,a
salva accumulatore
p2: ld a,(tasto) leggi tastiera
bit 5,a
controlla pin DA 74923
jr nz,p2
se DA=1 vai p2
ld a,c
ricarica accumulatore
bit 4,a
controlla pin E 74923
jr nz,funz
se E=1 vai a funz
and 0f
maschera accumulatore
ld d,a
salva accumulatore
ld a,(bufta) accum=buffer
tasto
rlc a
ruota sinistra con carr
rlc a
"
rlc a
"
rlc a
"
and f0
maschera accumulatore
add a,d
ricomponi valore
ld (bufta),a carica
buffer tasto
ld (da),a
visualizza dato
jp p1
vai a p1
funz: and 0f
maschera accumulatore
cp 00
e' HI?
jr nz,low
se no vai a low
ld a,(bufta) accumulat=buff
tasto
ld h,a
ld (bufhi),a buff alto=accumulatore
jp visu
vai a visu
low: cp 01
e' LO?
jr nz,dato
se no vai a dato
ld a,(bufta) accumulat=buff
tasto
ld l,a
ld (buflo),a buff basso=accumulatore
jp visu
vai a visu
dato: cp 02 e' DA?
jr nz,run
se no vai a run
ld a,(bufta) accumulat=buff
tasto
ld (hl),a
val punt hl=accumulator
ld (bufda),a buff dato=accumulatore
inc hl
passa alla locaz succes
ld a,h
accumulat=registro h
ld (bufhi),a aggiorna
bufhi
ld a,l
accumulat=registro l
ld (buflo),a aggiorna buflo
|
Routine di
visualizzazione:
visu: ld a,(bufhi) accum= buffer hi
ld h,a
aggiorna registro h
ld (hi),a
visualizza parte alta
ld a,(buflo) accumulat=buff
basso
ld l,a
aggiorna registro l
ld (lo),a
visualizza parte bassa
ld a,(hl)
accum=val punt hl
ld (bufda),a buff dato=accumulatore
ld (da),a
visualizza dato
jp p1
vai a p1
run: cp 03
e' RUN?
jr nz,err
se no vai a error
ld a,(bufhi) accum=buff
alto
ld h,a
h=parte alta
ld a,(buflo) accum=parte bassa
ld l,a
l=parte bassa
jp (hl)
PC=valore puntato da hl
err: ld a,11 carica accum
con 11
ld (da),a
visualizza 11 su DA
ld (lo),a
visualizza 11 su LO
ld (hi),a
visualizza 11 su HI
pp: ld a,(tasto) leggi tastiera
bit 5,a
controlla pin DA 74923
jr z,pp
se DA=0 vai pp
ld a,(tasto) leggi tastiera
bit 5,a
controlla pin DA 74923
jp nz,visu se DA=1
vai visu
end
|
|
|