![]() |
Routines |
| Prev: 27462 | Up: Map | Next: 27570 |
| DE | Display file address |
| 27497 | PUSH DE | Save the display file address |
| 27498 | LD HL,58143 | Clear the 21-byte buffer at 58123, which will hold the graphic data for the number to be printed (21 bytes = 7 pixel rows, 3 bytes per row) |
| 27501 | LD B,21 | |
| 27503 | LD (HL),0 | |
| 27505 | DEC L | |
| 27506 | DJNZ 27503 | |
| 27508 | LD L,B | HL=58112 (where the character codes of the digits are stored) |
| 27509 | LD A,(HL) | Pick up the character code of the next digit |
| 27510 | AND A | Have we done all the digits? |
| 27511 | JR Z,27552 | Jump if so |
| 27513 | LD E,A | E=character code for digit (48-57) |
| 27514 | LD D,215 | Point DE at the appropriate entry in the table of font character bitmap widths at 55072 |
| 27516 | INC HL | Point HL at the next digit and save this address for later |
| 27517 | PUSH HL | |
| 27518 | LD A,(DE) | A=width of digit in pixels |
| 27519 | LD C,A | Copy this to C |
| 27520 | INC D | Point DE at the next bitmap pixel column |
| 27521 | LD A,(DE) | A=pixel column of bitmap data for this digit |
| 27522 | LD L,31 | HL=58143 (last byte of the graphic data buffer) |
| 27524 | LD B,7 | There are 7 rows of pixels in the buffer |
| 27526 | RRCA | Skip the bottom row of pixels in the bitmap data |
| 27527 | RRCA | Roll a pixel column into the buffer |
| 27528 | RL (HL) | |
| 27530 | DEC HL | |
| 27531 | RL (HL) | |
| 27533 | DEC HL | |
| 27534 | RL (HL) | |
| 27536 | DEC HL | |
| 27537 | DJNZ 27527 | |
| 27539 | DEC C | Next pixel column |
| 27540 | JP M,27548 | Jump if we've done them all (plus a blank column) |
| 27543 | JR NZ,27520 | Jump back until all the pixel columns of the bitmap for the digit have been done |
| 27545 | XOR A | Then jump back to add a blank pixel column |
| 27546 | JR 27522 | |
| 27548 | POP HL | HL=address of character code for next digit |
| 27549 | NOP | |
| 27550 | JR 27509 | Jump back to deal with this digit |
|
The graphic data for the digits has been rolled into the buffer at 58123. Now we copy the buffer to the screen.
|
||
| 27552 | LD L,11 | HL=58123 (start address of the buffer) |
| 27554 | LD BC,2047 | B=7 (number of pixel rows), C=255 |
| 27557 | POP DE | DE=appropriate display file address |
| 27558 | LD A,E | |
| 27559 | LDI | Copy three bytes (one pixel row) from the buffer to the screen |
| 27561 | LDI | |
| 27563 | LDI | |
| 27565 | LD E,A | Point DE at the start of the next row down |
| 27566 | INC D | |
| 27567 | DJNZ 27559 | Jump back until all 7 pixel rows are done |
| 27569 | RET | |
| Prev: 27462 | Up: Map | Next: 27570 |