|
- ; Font management
- ;
- ; There can only ever be one active font.
- ;
- ; *** Defines ***
- ; FNT_DATA: Pointer to the beginning of the binary font data to work with.
- ; FNT_WIDTH: Width of the font.
- ; FNT_HEIGHT: Height of the font.
- ;
- ; *** Code ***
-
- ; If A is in the range 0x20-0x7e, make HL point to the beginning of the
- ; corresponding glyph and set Z to indicate success.
- ; If A isn't in the range, do nothing and unset Z.
- fntGet:
- cp 0x20
- ret c ; A < 0x20. Z was unset by cp
- cp 0x7f
- jp nc, unsetZ ; A >= 0x7f. Z might be set
-
- push af ; --> lvl 1
- push bc ; --> lvl 2
- sub 0x20
- ld hl, FNT_DATA
- ld b, FNT_HEIGHT
- .loop:
- call addHL
- djnz .loop
- pop bc ; <-- lvl 2
- pop af ; <-- lvl 1
- cp a ; set Z
- ret
|