![]() |
Routines |
| Prev: $1129 | Up: Map | Next: $126D |
|
||||||||
| $11CF | STA $21 | Store the address that holds the font character bitmap width at $21. | ||||||
| $11D1 | LDA #$47 | |||||||
| $11D3 | STA $22 | |||||||
| $11D5 | LDA $19 | Pick up the blackboard's pixel column counter from $19. | ||||||
| $11D7 | ORA #$C0 | Set bits 6 and 7. | ||||||
| $11D9 | CLC | Add 1 to advance to the next pixel column. | ||||||
| $11DA | ADC #$01 | |||||||
| $11DC | BCS $11E5 | Branch if we've reached the end of a line. | ||||||
| $11DE | LDY #$00 | Add the width of the font character bitmap. | ||||||
| $11E0 | CLC | |||||||
| $11E1 | ADC ($21),Y | |||||||
| $11E3 | BCC $11ED | Branch if the bitmap will fit on the current line. | ||||||
| $11E5 | LDA $19 | Set the blackboard's pixel column counter at $19 to either $00 (start of the top line) or $40 (start of the bottom line). | ||||||
| $11E7 | AND #$40 | |||||||
| $11E9 | EOR #$40 | |||||||
| $11EB | STA $19 | |||||||
| $11ED | LDA $19 | Pick up the blackboard's pixel column counter from $19. | ||||||
| $11EF | AND #$3F | Clear bits 6 and 7, divide by 8, and add the x-coordinate of the top left corner of the blackboard. This gives the play area x-coordinate of the target character cell. | ||||||
| $11F1 | LSR A | |||||||
| $11F2 | LSR A | |||||||
| $11F3 | LSR A | |||||||
| $11F4 | CLC | |||||||
| $11F5 | ADC $15 | |||||||
| $11F7 | STA $15 | Store this x-coordinate at $15. | ||||||
| $11F9 | LDA $19 | Pick up the blackboard's pixel column counter from $19. | ||||||
| $11FB | CMP #$40 | Are we on the top line of the blackboard? | ||||||
| $11FD | BCC $1201 | Branch if so. | ||||||
| $11FF | INC $16 | Increment the target blackboard character cell y-coordinate at $16. | ||||||
| $1201 | LDA $15 | Pick up the target blackboard character cell x-coordinate from $15. | ||||||
| $1203 | SEC | Subtract the x-coordinate of the leftmost column of the skool on screen, giving the screen x-coordinate. | ||||||
| $1204 | SBC $58 | |||||||
| $1206 | STA $49 | Store this screen x-coordinate at $49. | ||||||
| $1208 | LDA $16 | Copy the target blackboard character cell y-coordinate from $16 to $4A. | ||||||
| $120A | STA $4A | |||||||
| $120C | JSR $36E3 | Update the SRB for the target blackboard character cell. | ||||||
| $120F | INC $49 | Increment the x-coordinate at $49. | ||||||
| $1211 | JSR $36E3 | Update the SRB for the next character cell to the right. | ||||||
| $1214 | LDA $19 | Pick up the blackboard's pixel column counter from $19. | ||||||
| $1216 | AND #$07 | Prepare a mask in A such that the only reset bit corresponds to the target pixel column in the target character cell. | ||||||
| $1218 | TAX | |||||||
| $1219 | INX | |||||||
| $121A | LDA #$FF | |||||||
| $121C | CLC | |||||||
| $121D | ROR A | |||||||
| $121E | DEX | |||||||
| $121F | BNE $121D | |||||||
| $1221 | STA $23 | Store this mask at $23. | ||||||
| $1223 | JSR $1294 | Get the address of the skool tile corresponding to the blackboard character cell. | ||||||
| $1226 | LDY #$00 | Pick up the font character bitmap width and store this counter at $4E. | ||||||
| $1228 | LDA ($21),Y | |||||||
| $122A | STA $4E | |||||||
|
The loop that draws the font character into the blackboard character cell starts here.
|
||||||||
| $122C | INC $22 | Point at the next pixel column of the font character bitmap. | ||||||
| $122E | LDA #$08 | There are 8 pixels in the column to be drawn. | ||||||
| $1230 | STA $4F | Store this counter at $4F. | ||||||
| $1232 | LDA ($21),Y | Pick up the next pixel column of the font character bitmap. | ||||||
| $1234 | ROL A | Push the bit to be drawn into the carry flag. | ||||||
| $1235 | PHA | Save the remainder of the pixel column temporarily. | ||||||
| $1236 | BCC $123E | Branch if the pixel is a 0 (nothing to draw). | ||||||
| $1238 | LDA $23 | Pick up the mask from $23 and apply it to the skool tile graphic data byte for the target blackboard character cell. | ||||||
| $123A | AND ($1B),Y | |||||||
| $123C | STA ($1B),Y | |||||||
| $123E | INC $1C | Move to the next byte of skool tile graphic data. | ||||||
| $1240 | PLA | Restore the remainder of the pixel column to A. | ||||||
| $1241 | DEC $4F | Have we drawn all 8 pixels in the column yet? | ||||||
| $1243 | BNE $1234 | Branch back if not. | ||||||
| $1245 | INC $19 | Increment the blackboard's pixel column counter at $19 and pick up the new value. | ||||||
| $1247 | LDA $19 | |||||||
| $1249 | AND #$07 | Have we just drawn in the rightmost pixel column of the target character cell? | ||||||
| $124B | BEQ $1257 | Branch if so. | ||||||
| $124D | LDA $1C | Reset the skool tile graphic data pointer back to the first byte in the tile. | ||||||
| $124F | SEC | |||||||
| $1250 | SBC #$08 | |||||||
| $1252 | STA $1C | |||||||
| $1254 | JMP $125C | Jump forward. | ||||||
| $1257 | INC $15 | Increment the target blackboard cell x-coordinate at $15. | ||||||
| $1259 | JSR $1294 | Get the address of the skool tile corresponding to the blackboard character cell. | ||||||
| $125C | DEC $4E | Have we drawn every pixel column in the font character bitmap now? | ||||||
| $125E | BEQ $126A | Branch if so. | ||||||
| $1260 | SEC | Otherwise shift the reset bit in the mask at $23 one place to right, ready for the next pixel column. | ||||||
| $1261 | ROR $23 | |||||||
| $1263 | BCS $122C | Branch unless the reset bit fell into the carry flag. | ||||||
| $1265 | ROR $23 | Rotate the reset bit into bit 7. | ||||||
| $1267 | JMP $122C | Jump back to start drawing the next pixel column. | ||||||
| $126A | INC $19 | Increment the blackboard's pixel column counter at $19. | ||||||
| $126C | RTS | |||||||
| Prev: $1129 | Up: Map | Next: $126D |