KLJUC |
ldaa |
KAZ |
|
|
beq |
NAZAC |
;skoci na zacetek programa |
|
ldaa |
TIME |
|
|
inca |
|
|
|
staa |
TIME |
|
|
ldab |
#%11111110 |
;caka priblizno 4 sekunde (ce je 1-krat v urniku) |
|
cba |
|
|
|
beq |
NAPAKA |
|
NAZAC |
ldab |
_DPRA |
;beri PIA |
|
bmi |
KKON1 |
;prvi bit je 1, skok na konec (ni zoba na kljucu) |
|
ldaa |
URA |
|
|
beq |
KKON2 |
;skoci na konec, ce se ni 1 (0 je ce se ni bilo brez |
|
clr |
URA |
;zoba na kljucu) |
|
aslb |
|
;poglej drugi bit |
|
bpl |
ENA |
|
NIC |
ldaa |
#$00 |
;shrani 0 (v akum. A) - NIC ni potrebno |
|
jmp |
NAPREJ |
|
ENA |
ldaa |
#$01 |
;shrani 1 (v akum. A) |
NAPREJ |
ldab |
SMER |
|
|
bne |
PRIM |
;ce je SMER 0, naj vpisuje (VPIS) |
VPIS |
ldab |
KODA |
|
|
aslb |
|
;KODA se pomakne za eno mesto, da se pise na prazno mesto |
|
aba |
|
;zapise A na to mesto (A+B v A) |
|
staa |
KODA |
|
|
clr |
TIME |
;tukaj sta akum. prosta (ceprav nebi bilo potrebno) |
|
ldaa |
KAZ |
;poveca kazalec za 1 (koliko st. je vpisanih) |
|
inca |
|
|
|
staa |
KAZ |
|
|
ldab |
#$08 |
;preveri, ce jih je ze 8 |
|
cba |
|
|
|
bne |
KKON2 |
;ce jih se ni 8, naj skoci, sicer pa naj |
|
ldaa |
KODA |
;se primerja KODA s kodo izbranega kljuca in |
|
ldab |
#%11101101 |
;ce je rezultat pravilen da SMER na 1 |
|
cba |
|
|
|
bne |
NAPAKA |
|
|
inc |
SMER |
;SMER da na 1, da se sedaj lahko preverja |
|
rts |
|
|
PRIM |
ldab |
KODA |
;se preverja koda |
|
andb |
#$01 |
|
|
cba |
|
|
|
bne |
NAPAKA |
|
|
ldab |
KODA |
;KODA se pomakne, da se lahko nato primerja naslednja |
|
asrb |
|
;vrednost brana iz kljuca |
|
stab |
KODA |
|
|
clr |
TIME |
|
|
ldaa |
KAZ |
|
|
deca |
|
|
|
staa |
KAZ |
|
|
bne |
KKON2 |
;ce je KAZ enak 0, naj odklene |
|
inc |
ODPRI |
;ukaz za odpiranje in ga brise druga rutina |
|
clr |
SMER |
;se da SMER na 0 |
|
rts |
|
|
NAPAKA |
clr |
SMER |
|
|
clr |
KAZ |
|
|
rts |
|
|
KKON1 |
inc |
URA |
;da URA na 1 |
KKON2 |
rts |
|
|