Prev: 8093 Up: Map Next: 80AA
809A: Fill a rectangular block of the display file
Used by the routines at DRAW_ROOM and PAINT_PANEL.
The general form of CLEAR_PLAY_AREA above, which falls into it. Because it steps by a fixed 32 bytes per row rather than doing any display-file address arithmetic, "rows" here means consecutive 32-byte rows of the display file, not screen lines -- walking $4000 upwards covers the interleaved thirds in the order they are stored.
Input
HL Top-left corner, as a display file address
B Width in bytes (character columns)
C Number of rows
A The byte to fill with
FILL_BLOCK 809A PUSH BC Both are needed again on the next row, so they are saved rather than recomputed.
809B PUSH HL
809C LD DE,$0020 One display-file row is 32 bytes.
FILL_BLOCK_0 809F LD (HL),A Fill B bytes across.
80A0 INC HL
80A1 DJNZ FILL_BLOCK_0
80A3 POP HL
80A4 ADD HL,DE Step down to the next row.
80A5 POP BC
80A6 DEC C
80A7 JR NZ,FILL_BLOCK
80A9 RET
Prev: 8093 Up: Map Next: 80AA