![]() |
Routines |
Prev: D609 | Up: Map | Next: D6A1 |
D658 | LD ($A22C),IX | Save at A22C the current value of IX | ||
D65C | LD ($A22E),IY | Save at A22E the current value of IY | ||
D660 | POP IY | Restore the base address of the data buffer for the sprite to display | ||
D662 | LD L,(IY+$03) | Set HL to the vertical position of the sprite | ||
D665 | LD H,$00 | |||
D667 | ADD HL,HL | Set HL the address location of the sprite in the display file lookup table | ||
D668 | LD DE,$AC9A | |||
D66B | ADD HL,DE | |||
D66C | PUSH HL | Copy HL to IX | ||
D66D | POP IX | |||
D66F | LD L,(IY+$00) | Set HL to point to address of the graphic data for the sprite | ||
D672 | LD H,(IY+$01) | |||
D675 | LD B,(IY+$05) | Set B the height of the sprite | ||
D678 | PUSH BC | Save BC | ||
D679 | LD A,(IX+$00) | Set A to the lower byte of the address to the display file where draw the sprite | ||
D67C | LD D,(IX+$01) | Set D to the high byte of the address to the display file where draw the sprite | ||
D67F | ADD A,(IY+$02) | Add the horizontal position to the lowe byte of the display file | ||
D682 | LD E,A | Set DE the address point in display file to draw the sprite | ||
D683 | LD C,(IY+$04) | Set BC to the width of the sprite | ||
D686 | LD B,$00 | |||
D688 | LDIR | Copy to display file the graphics data of the sprite (a row of pixels) | ||
D68A | INC IX | Points to the next address in the display file look up table | ||
D68C | INC IX | |||
D68E | POP BC | Recover BC | ||
D68F | DJNZ $D678 | Jump back if there are partial sprite to draw | ||
D691 | LD DE,$0006 | Point IY to the end of the data buffer for the sprite. This will be the next instruction to execute when return from this routine | ||
D694 | ADD IY,DE | |||
D696 | PUSH IY | Save IY | ||
D698 | LD IY,($A22E) | Restore IY and IX | ||
D69C | LD IX,($A22C) | |||
D6A0 | RET | Return to instruction pointed by IY |
Prev: D609 | Up: Map | Next: D6A1 |