Difference between revisions of "83Plus:Hooks:9B9C"
From WikiTI
| Line 1: | Line 1: | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
== Synopsis == | == Synopsis == | ||
| − | '''Name:''' | + | '''Name:''' Font Hook |
| − | '''Hook Pointer Block Address:''' [[83Plus:RAM: | + | '''Hook Pointer Block Address:''' [[83Plus:RAM:9B9C|9B9C]] |
| − | '''Hook Enable BCALL:''' [[83Plus:BCALLs: | + | '''Hook Enable BCALL:''' [[83Plus:BCALLs:4FE4|4FE4]] |
| − | '''Hook Disable BCALL:''' [[83Plus:BCALLs: | + | '''Hook Disable BCALL:''' [[83Plus:BCALLs:4FE7|4FE7]] |
| − | '''Hook Call BCALL:''' [[83Plus:BCALLs: | + | '''Hook Call BCALL:''' [[83Plus:BCALLs:4003|4003]] |
| − | '''Hook Active Flag:''' | + | '''Hook Active Flag:''' [[83Plus:BCALLs:35#Bit_5|5, (iy + 35h)]] |
| − | This hook allows you to change the | + | This hook allows you to change the font bitmaps; for example, it is used for [http://www.detachedsolutions.com/omnicalc/ Omnicalc]'s custom fonts. |
== Using the Hook == | == Using the Hook == | ||
| − | + | * A = 0 for small font, 1 for large font | |
| − | * | + | * B = character |
| − | * | + | * NZ to use the default bitmaps (or rather, the bitmaps provided by the [[83Plus:Hooks:9BCC|localize hook]]) |
| − | ** | + | * Otherwise, set HL pointing to the font data, which must be in RAM: |
| − | ** | + | ** In small font: |
| − | ** | + | *** (HL) = width of character |
| − | * | + | *** (HL+1) = first (accent) row, right aligned (with the last pixel usually clear) |
| − | ** | + | *** (HL+2) = second row |
| + | *** ... | ||
| + | *** (HL+6) = sixth row | ||
| + | *** (HL+7) = seventh row (only displayed with bit [[83Plus:Flags:5#Bit_1|textEraseBelow, (iy+textFlags)]] set) | ||
| + | ** In large font: | ||
| + | *** (HL) = first row, right aligned | ||
| + | *** ... | ||
| + | *** (HL+6) = seventh row | ||
== Comments == | == Comments == | ||
| − | This hook | + | This hook is one of the four "official" hooks defined in ti83plus.inc. |
| + | |||
| + | == Example == | ||
| + | The following code displays the letter A in boldface: | ||
| − | + | <nowiki>FontHook: | |
| − | + | .db 83h ; Required for all hooks | |
| + | or a ; is it small or large font? | ||
| + | jr z,SmallFont | ||
| + | ld a,b ; what character is to be displayed? | ||
| + | cp 'A' | ||
| + | ret nz | ||
| + | ld hl,BigA ; get our replacement bitmap | ||
| + | ld de,lFont_record | ||
| + | ld bc,7 ; copy it into RAM | ||
| + | ldir | ||
| + | ld hl,lFont_record | ||
| + | cp a | ||
| + | ret | ||
| + | SmallFont: | ||
| + | ld a,b ; what character is to be displayed? | ||
| + | cp 'A' | ||
| + | ret nz | ||
| + | ld hl,SmallA ; get our replacement bitmap | ||
| + | ld de,sFont_record | ||
| + | ld bc,8 ; copy it into RAM | ||
| + | ldir | ||
| + | ld hl,sFont_record | ||
| + | cp a | ||
| + | ret | ||
| + | BigA: | ||
| + | .db 00001110b | ||
| + | .db 00010011b | ||
| + | .db 00010011b | ||
| + | .db 00011111b | ||
| + | .db 00010011b | ||
| + | .db 00010011b | ||
| + | .db 00010011b | ||
| + | SmallA: | ||
| + | .db 5 | ||
| + | .db 00000000b | ||
| + | .db 00001100b | ||
| + | .db 00010110b | ||
| + | .db 00011110b | ||
| + | .db 00010110b | ||
| + | .db 00010110b | ||
| + | .db 00000000b</nowiki> | ||
Revision as of 22:40, 27 March 2005
Contents
Synopsis
Name: Font Hook
Hook Pointer Block Address: 9B9C
Hook Enable BCALL: 4FE4
Hook Disable BCALL: 4FE7
Hook Call BCALL: 4003
Hook Active Flag: 5, (iy + 35h)
This hook allows you to change the font bitmaps; for example, it is used for Omnicalc's custom fonts.
Using the Hook
- A = 0 for small font, 1 for large font
- B = character
- NZ to use the default bitmaps (or rather, the bitmaps provided by the localize hook)
- Otherwise, set HL pointing to the font data, which must be in RAM:
- In small font:
- (HL) = width of character
- (HL+1) = first (accent) row, right aligned (with the last pixel usually clear)
- (HL+2) = second row
- ...
- (HL+6) = sixth row
- (HL+7) = seventh row (only displayed with bit textEraseBelow, (iy+textFlags) set)
- In large font:
- (HL) = first row, right aligned
- ...
- (HL+6) = seventh row
- In small font:
Comments
This hook is one of the four "official" hooks defined in ti83plus.inc.
Example
The following code displays the letter A in boldface:
FontHook:
.db 83h ; Required for all hooks
or a ; is it small or large font?
jr z,SmallFont
ld a,b ; what character is to be displayed?
cp 'A'
ret nz
ld hl,BigA ; get our replacement bitmap
ld de,lFont_record
ld bc,7 ; copy it into RAM
ldir
ld hl,lFont_record
cp a
ret
SmallFont:
ld a,b ; what character is to be displayed?
cp 'A'
ret nz
ld hl,SmallA ; get our replacement bitmap
ld de,sFont_record
ld bc,8 ; copy it into RAM
ldir
ld hl,sFont_record
cp a
ret
BigA:
.db 00001110b
.db 00010011b
.db 00010011b
.db 00011111b
.db 00010011b
.db 00010011b
.db 00010011b
SmallA:
.db 5
.db 00000000b
.db 00001100b
.db 00010110b
.db 00011110b
.db 00010110b
.db 00010110b
.db 00000000b