Prev: 64398 Up: Map Next: 64456
64430: Blank Left-Half Shadow Buffers
Used by the routine at CreateAdminPageTemplate.
C Width
D Height (where to stop)
E Value to write
HL Buffer location
Used both to blank the left-hand side of the screen shadow buffer, and also to add the rainbow attributes for the attributes shadow buffer.
BlankHalfShadowBuffers 64430 LD B,C B=width.
64431 XOR A A=0.
BlankHalfOfScreen_Row 64432 LD (HL),E Write the value pass in E to the buffer.
64433 INC HL Increment the buffer pointer by one.
64434 DJNZ BlankHalfOfScreen_Row Decrease counter by one and loop back to BlankHalfOfScreen_Row until counter is zero.
Move down one row.
64436 ADD HL,BC HL+=BC.
64437 DEC HL Decrease HL by two (because we always enter with the width being 17 so 17*2=34 and one row contains only 32 bytes).
64438 DEC HL
When writing the attributes, this handles the INK rainbow colouring.
64439 LD A,E A=E.
64440 AND %00000111 Keep only the INK colour bits.
64442 JR Z,BlankHalfOfScreen_CheckEnd Jump to BlankHalfOfScreen_CheckEnd if the result is zero (if this is the screen buffer loop and not for the attribute buffer).
Cycle through the INK colours.
64444 INC E Increment the value to write by one.
64445 CP 7 Jump to BlankHalfOfScreen_CheckEnd if A is not equal to 7 (INK: WHITE, PAPER: BLACK ).
64447 JR NZ,BlankHalfOfScreen_CheckEnd
Reset the attribute colour to write (the range is 42-71).
64449 LD E,66 E=66 (INK: RED, PAPER: BLACK (BRIGHT) ).
The height parameter isn't a "height" as such, it's where to stop e.g. the end of ShadowScreenBuffer or the end of ShadowAttributeBuffer.
BlankHalfOfScreen_CheckEnd 64451 LD A,D Jump to BlankHalfShadowBuffers if D is not equal to H.
64452 CP H
64453 JR NZ,BlankHalfShadowBuffers
64455 RET Return.
Prev: 64398 Up: Map Next: 64456