Prev: DCD1 Up: Map Next: DD52
DCDC: Move Tile Up
Used by the routine at F43E.
MoveTile_Up DCDC LD A,($E75E) A=*E75E.
DCDF DEC A Decrease A by one.
DCE0 LD ($E760),A Write A to *E760.
DCE3 LD A,($E761) B=*E761.
DCE6 LD B,A
MoveTile_Up_Loop DCE7 PUSH BC Stash BC on the stack.
DCE8 LD A,($E75D) A=*E75D.
DCEB DEC A Decrease A by one.
DCEC LD ($E75F),A Write A to *E75F.
DCEF LD B,$04 B=04.
MoveTile_Up_0 DCF1 PUSH BC Stash BC on the stack.
DCF2 LD A,($E75F) B=*E75F.
DCF5 LD B,A
DCF6 LD A,($E760) C=*E760.
DCF9 LD C,A
DCFA CALL Calculate_ScreenBlockAddress Call Calculate_ScreenBlockAddress.
DCFD PUSH HL Stash HL on the stack.
DCFE DEC B Decrease B by one.
DCFF CALL Calculate_ScreenBlockAddress Call Calculate_ScreenBlockAddress.
DD02 PUSH HL DE=HL (using the stack).
DD03 POP DE
DD04 POP HL Restore HL from the stack.
DD05 LD A,$08 A=08.
DD07 LD BC,$0004 BC=0004.
DD0A PUSH HL Stash HL, HL and DE on the stack.
MoveTile_Up_1 DD0B PUSH HL
DD0C PUSH DE
DD0D LDIR LDIR.
DD0F DEC HL Decrease HL by one.
DD10 PUSH HL Stash HL on the stack.
DD11 LD (HL),C Write C to *HL.
DD12 POP DE Restore DE from the stack.
DD13 DEC DE Decrease DE by one.
DD14 LD BC,$0003 BC=0003.
DD17 LDDR LDDR.
DD19 POP DE Restore DE and HL from the stack.
DD1A POP HL
DD1B INC D Increment D by one.
DD1C INC H Increment H by one.
DD1D LD BC,$0004 BC=0004.
DD20 DEC A Decrease A by one.
DD21 JP NZ,MoveTile_Up_1 Jump to MoveTile_Up_1 if A is not zero.
DD24 POP HL Restore HL from the stack.
DD25 CALL Calculate_AttributeAddress Call Calculate_AttributeAddress.
DD28 LD HL,$FFE0 HL=FFE0+DE.
DD2B ADD HL,DE
DD2C EX DE,HL Exchange the DE and HL registers.
DD2D LD BC,$0004 BC=0004.
DD30 LDIR LDIR.
DD32 LD BC,$0003 BC=0003.
DD35 LD A,$47 A=47.
DD37 DEC HL Decrease HL by one.
DD38 LD (HL),A Write A to *HL.
DD39 PUSH HL Stash HL on the stack.
DD3A POP DE Restore DE from the stack.
DD3B DEC DE Decrease DE by one.
DD3C LDDR LDDR.
DD3E LD HL,$E75F HL=E75F.
DD41 INC (HL) Increment *HL by one.
DD42 POP BC Restore BC from the stack.
DD43 DJNZ MoveTile_Up_0 Decrease counter by one and loop back to MoveTile_Up_0 until counter is zero.
DD45 POP BC Restore BC from the stack.
DD46 PUSH BC Stash BC on the stack.
DD47 CALL $DD52 Call DD52.
DD4A LD HL,$E75D HL=E75D.
DD4D DEC (HL) Decrease *HL by one.
DD4E POP BC Restore BC from the stack.
DD4F DJNZ MoveTile_Up_Loop Decrease counter by one and loop back to MoveTile_Up_Loop until counter is zero.
DD51 RET Return.
Prev: DCD1 Up: Map Next: DD52