![]() |
Routines |
Prev: 59861 | Up: Map | Next: 60082 |
60032 | LD B,80 | 20 screen rows, 4 bytes (32 bits) per row |
60034 | LD HL,32528 | Point HL at the start of the portion of the screen refresh buffer that corresponds to the visible part of the play area |
60037 | LD A,(HL) | Pick up a byte from the screen refresh buffer |
60038 | AND A | Does anything need updating in this particular 8-tile segment? |
60039 | JR Z,60078 | Jump if not |
60041 | PUSH BC | Save the SRB byte counter |
60042 | LD A,L | For this particular byte of the SRB, compute the corresponding screen row number (0-19) in D |
60043 | SUB 16 | |
60045 | AND 252 | |
60047 | RRCA | |
60048 | RRCA | |
60049 | LD D,A | |
60050 | LD A,L | Also for this particular SRB byte, compute the column of the screen (0, 8, 16 or 24) corresponding to bit 7 |
60051 | AND 3 | |
60053 | ADD A,A | |
60054 | ADD A,A | |
60055 | ADD A,A | |
60056 | DEC A | Initialise E, which will hold the screen column number of the character square to be checked |
60057 | LD E,A | |
60058 | INC E | Set DE to the screen coordinates of the next character square to be checked |
60059 | SLA (HL) | Does this character square need updating? |
60061 | JR C,60067 | Jump if so |
60063 | JR NZ,60058 | Jump back if there are still non-zero bits left in this SRB byte |
60065 | JR 60077 | Jump forward to consider the next SRB byte |
We found a set bit in the current SRB byte. Print the corresponding character square.
|
||
60067 | PUSH HL | Save the SRB pointer |
60068 | PUSH DE | Save the screen (row,column) pointer |
60069 | EX DE,HL | Switch the screen (row,column) pointer to HL |
60070 | CALL 59148 | Print the character square at this row and column |
60073 | POP DE | Restore the screen (row,column) pointer to DE |
60074 | POP HL | Restore the SRB pointer to HL |
60075 | JR 60058 | Examine the next bit of the current SRB byte |
There are no set bits remaining in the current SRB byte. Move to the next SRB byte.
|
||
60077 | POP BC | Restore the SRB byte counter to B |
60078 | INC L | Point HL at the next SRB byte |
60079 | DJNZ 60037 | Jump back until all 80 SRB bytes have been dealt with |
60081 | RET |
Prev: 59861 | Up: Map | Next: 60082 |