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.