|  | 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 |