Routines |
Prev: 48027 | Up: Map | Next: 48164 |
Used by the routine at 47193.
|
||||
48081 | PUSH IX | Store IX | ||
48083 | LD BC,(23408) | Load B with y-coordinate of top, and C with x-coordinate of left of area to fill | ||
48087 | LD DE,(23410) | Load D with y-coordinate of bottom, and E with x-coordinate of right of area to fill | ||
48091 | LD L,C | Load HL with x-coordinate of left of area to fill... | ||
48092 | LD H,0 | ... | ||
48094 | LD (48141),HL | ...and store as operand of instruction at 48140 | ||
48097 | LD A,D | Load A with y-coordinate of bottom of area to fill... | ||
48098 | SUB B | ...subtract B (y-coordinate of top of area to fill)... | ||
48099 | INC A | ...and add one to give number of rows to fill | ||
48100 | ADD A,A | Multiply A by eight to get number of pixel rows to fill... | ||
48101 | ADD A,A | ... | ||
48102 | ADD A,A | ... | ||
48103 | LD (48132),A | ...and store as operand of instruction at 48131 | ||
48106 | LD A,B | Load A with y-coordinate of top of area to fill (characters)... | ||
48107 | ADD A,A | ...and multiply by eight to get y-coordinate in pixels... | ||
48108 | ADD A,A | ... | ||
48109 | ADD A,A | ... | ||
48110 | LD L,A | Load y-coordinate (pixels) into HL... | ||
48111 | LD H,0 | ... | ||
48113 | ADD HL,HL | Double HL (as entries in table at 65140 are two bytes wide) | ||
48114 | PUSH DE | Store DE (coordinates of bottom right of area to fill) | ||
48115 | LD DE,65140 | Point DE at table of display file addresses of start of each pixel row | ||
48118 | ADD HL,DE | Add HL as offset, in HL | ||
48119 | POP DE | Restore DE (coordinates of bottom right of area to fill) | ||
48120 | PUSH HL | Copy pointer to entry in table of display file addresses for start of pixel row at top of area to fill from HL to IX... | ||
48121 | POP IX | ... | ||
48123 | LD A,E | Load A with x-coordinate of right of area to fill (characters)... | ||
48124 | SUB C | ...subtract C (x-coordinate of left of area to fill)... | ||
48125 | LD L,A | ...and load into HL... | ||
48126 | LD H,0 | ... | ||
48128 | LD (48148),HL | ...and store as operand of instruction at 48147 | ||
The operand of the instruction at 48131 represents the number of pixel rows to fill. This is modified by the instruction at 48103.
|
||||
48131 | LD B,0 | Load B with number of pixel rows to fill | ||
48133 | PUSH BC | Store BC (B = remaining number of pixel rows to fill) | ||
48134 | LD L,(IX+0) | Load HL with display file address of start of current pixel row... | ||
48137 | LD H,(IX+1) | ... | ||
48140 | LD BC,0 | Load BC with x-coordinate of area to fill (characters)... | ||
48143 | ADD HL,BC | ...and add to HL as offset | ||
48144 | PUSH HL | Copy display file address of left-most byte of top pixel row of area to fill from HL to DE... | ||
48145 | POP DE | ... | ||
48146 | INC DE | Advance DE to next address in display file | ||
48147 | LD BC,0 | Load BC with width, minus 1, of area to fill (characters) | ||
48150 | LD (HL),0 | Set content of this address to zero... | ||
48152 | LDIR | ...and repeat for remaining BC addresses, clearing entire pixel row within specified x-coordinates | ||
48154 | POP BC | Restore BC (B = remaining number of pixel rows to fill) | ||
48155 | INC IX | Advance IX by two bytes to point to start address of next pixel row down in display file... | ||
48157 | INC IX | ... | ||
48159 | DJNZ 48133 | Decrease B (remaining number of pixel rows to fill) and loop back to 48133 if not zero | ||
48161 | POP IX | Restore IX | ||
48163 | RET | Return |
Prev: 48027 | Up: Map | Next: 48164 |