![]() |
Routines |
27026 | LD HL,32524 | Point HL at the first byte of the SRB |
27029 | LD B,84 | There are 84 bytes in the screen refresh buffer |
27031 | LD A,(HL) | Pick up an SRB byte |
27032 | AND A | Any character squares in this segment need refreshing? |
27033 | JR Z,27078 | Jump if not |
27035 | PUSH BC | Save the SRB byte counter |
27036 | LD A,L | D=y-coordinate of the segment of 8 character squares to which this SRB byte corresponds |
27037 | AND 124 | |
27039 | RRCA | |
27040 | RRCA | |
27041 | ADD A,149 | |
27043 | LD D,A | |
27044 | LD A,L | E=x-coordinate of the leftmost character square in the segment |
27045 | AND 3 | |
27047 | RLCA | |
27048 | RLCA | |
27049 | RLCA | |
27050 | LD E,A | |
27051 | LD A,(32512) | |
27054 | ADD A,E | |
27055 | LD E,A | |
27056 | DEC E |
27057 | PUSH HL | Save the pointer to the SRB byte |
27058 | INC E | Set DE to the coordinates of the next character square in the current segment |
27059 | RR (HL) | Push an SRB bit into the carry flag, and 0 into bit 7 of the SRB byte |
27061 | JR C,27067 | Refresh the corresponding character square if the bit was set |
27063 | JR NZ,27058 | Jump back until all set bits in the SRB byte have been checked |
27065 | JR 27076 | Move to the next SRB byte |
27067 | PUSH DE | |
27068 | CALL 24843 | Print the character square at (E,D) |
27071 | POP DE | |
27072 | POP HL | Restore the pointer to the SRB byte |
27073 | AND A | Clear the carry flag so that bit 7 of the SRB byte will be reset, and jump back to check the next bit |
27074 | JR 27057 |
27076 | POP HL | Restore the pointer to the SRB byte |
27077 | POP BC | Restore the SRB byte counter to B |
27078 | INC L | Move to the next byte in the screen refresh buffer |
27079 | DJNZ 27031 | Jump back until all 84 bytes in the SRB have been checked |
27081 | RET |