Prev: 41477 Up: Map Next: 41545
41504: Copy 2 × 4 (characters) region of display file into temporary storage
Used by the routine at 39958.
Input
IX Address of position data for a character, or Magic Knight
41504 LD DE,23299 Load DE with start address of temporary storage area
41507 LD C,(IX+1) Load C with x-coordinate of area to copy
41510 LD B,(IX+2) Load B with y-coordinate of area to copy...
41513 DEC B ...and decrease by one
41514 LD (41549),BC Store x- and y-coordinates as operand of instruction at 41548
41518 LD A,4 Load A with 4 (as Magic Knight and other characters span four character blocks in height)
41520 PUSH AF Store AF (A = remaining height in characters to copy)
41521 INC B Increase y-coordinate by one
41522 PUSH BC Store BC (B = current y-coordinate, C = current x-coordinate)
41523 CALL 63203 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
41526 LD B,8 Load B with 8 (as there are eight pixel rows per character)
41528 LD A,(HL) Copy byte from current location in display file...
41529 LD (DE),A ...to temporary storage area starting at 23299
41530 INC HL Advance right one character in display file
41531 INC DE Advance to next byte in temporary storage area
41532 LD A,(HL) Copy byte from current location in display file...
41533 LD (DE),A ...to temporary storage area starting at 23299
41534 INC DE Advance to next byte in temporary storage area
41535 DEC HL Move left one character...
41536 INC H ...and down one pixel in display file
41537 DJNZ 41528 Decrease B (remaining number of pixel rows) and loop back to 41528 if not zero
41539 POP BC Restore BC (B = current y-coordinate, C = current x-coordinate)
41540 POP AF Restore AF (A = remaining height in characters to copy)
41541 DEC A Decrease remaining number of character blocks to copy...
41542 JR NZ,41520 ...and loop back to 41520 if not zero
41544 RET Return
Prev: 41477 Up: Map Next: 41545