142 Strojni jezik za procesor Z80

Teh pet vrstic bomo dodali na koncu programa, zdaj pa se vrnimo

k podprogramu GOR.

PUSH BC sShrani koordinate,

INC B sizračunaj

INC B ni naslov 3.

INC B 3 zloga

CALL NASLOV ; nad junakom
" CALL BIT4O sin preveri dali ni zadel metulja

sali ključa.

INC HL sNaslov sosednjega zloga (preveriti
CALL  BIT40 smoramo oba zloga, ker sta tako
POP BC sKrpan kot metulj ĹĄiroka 16 bitov).

Da bo gibanje naĹĄe figure gladko, se mora v vse smeri premikati
bit za bitom, nikoli za več bitov naenkrat. Da pa bo program
enostavnejši, bomo premik vsakič ponovili osemkrat. To pomeni,
da se bo na-vsak pritisk tipke figura pomaknila, bit za bitom,
za osem bitov. V ta namen bomo naredili zanko. Če ne bi upora-
bljali para BC za shranjevanje koordinat, bi si lahko lepo
pomagali z ukazom DJNZ. Tako pa bomo ĹĄtevce shranjevali v
rezervirani pomnilniški celici, ki ju bomo označevali STEVCI in
STEVC2.

LD A, 8
GR LD  <STEVCI), A sPrvi ĹĄtevec.
; INC B sTo je zdaj koordinata 1. zloga nad
PUSH BC sfiguro. Shrani vrednost.
LD A, 16
ZANI1 LD  <STEVC2), A sDrugi ĹĄtevec.
CALL NASLOV sizračunaj naslov zloga...
PUSH HL 5...in ga shrani.
DEC  B
CALL NASLOV s Izračunaj naslov zloga pod njim,
POP ' DE snaslov zgornjega zloga pa daj v
spar DE.
LD A, (HL) ;Prenesi vrednost spodnjega zlaga...
LD (KDE), A $e...V Zgornji zlog.
INC HL s To sta zdaj naslova...
INC DE PI Âť Âť  ÂťSosednjih dveh zlogov.

LD A, (HL) ;Prenesi tudi tu...

Kar se Janezek nauči... 143

To

LEVO

LY

ZANA

LD (KDE), A .vrednost navzgor.

LD A, (STEVC2) sSe je zanka Ĺže ponovila 16 krat "?
DEC A 3; (se pravi: se je Ĺže premaknila vsa
JR NZ, ZANI1 sfigura?). cče se ni, ponovi ZANI,
POP. BC

LD A, ÂŤ4STEVCI1) ssicer zmanjĹĄaj prvi ĹĄtevec in po-
DEC A snovi veliko zanko. Če se je velika
JR NZ, GR szanka Ĺže ponovila osemkrat,

RET sse vrni.

je bil podprogram za pomik navzgor. Zdaj pa premik v levo:

LD A, 8 sče je figura na levem robu (ob
GRE sstolpcu ure), ne more na levo. Za-
RET: Z sto se takoj vrni v glavno zanko.
PUSH BC

ED A;:E sNajprej bomo preverili, ali ni na
SUB 8 slevi strani lika metul j ali ključ.
LD C, A

LD A, B

SUB 5 ;Za prever janje bomo uporabili isti
UDI), A szlog kot pri premiku navzgor. Nje-

CALL NASLOV
CALL BBIT4O0

sgove koordinate so zdaj v paru BC.

LD A, B
SUB 8
LD B, A sKontroliramo tudi zlog, ki je osem

CALL NASLOV svrstic niĹže (ker je figura visoka

CALL  BIT40 316 vrstic).

POP BC

LD A, 8

LD  4STEVC1), A sPrvi ĹĄtevec.

PUSH BC

UD A,O sKer bo pomik v levo, potrebujemo
ADD A, 15 skoordinati desnega roba figure.

UD <A sTi sta zdaj v paru BC.

LD A, 16

LD (STEVC2), A sDrugi ĹĄtevec.

CALL NASLOV

SLA  (HL) sPomakni zlog v levo. Skrajni levi
sbit (bit 7) gre v bit prenosa.