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 |