![]() |
Routines |
Prev: 27462 | Up: Map | Next: 27570 |
|
||||
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 ASCII codes of the digits are stored) | ||
27509 | LD A,(HL) | Pick up the ASCII 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=ASCII code for the 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 the font character bitmap (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=next pixel column of bitmap data for this digit | ||
27522 | LD L,31 | Point HL at the 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 the 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 |