![]() |
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 |