Difference between revisions of "83Plus:Hooks:9B9C"

From WikiTI
Jump to: navigation, search
 
Line 1: Line 1:
'''Note:''' Do not take the information on this template page as actual documentation!
 
 
The Hooks are named by their hook pointer block address (the four bytes consisting of page, address, and an extra byte), in hexadecimal. An example is [[83Plus:Hooks:9B84]].
 
 
----
 
 
 
== Synopsis ==
 
== Synopsis ==
'''Name:''' ImAHook
+
'''Name:''' Font Hook
  
'''Hook Pointer Block Address:''' [[83Plus:RAM:8562|8562]]
+
'''Hook Pointer Block Address:''' [[83Plus:RAM:9B9C|9B9C]]
  
'''Hook Enable BCALL:''' [[83Plus:BCALLs:1234|1234]]
+
'''Hook Enable BCALL:''' [[83Plus:BCALLs:4FE4|4FE4]]
  
'''Hook Disable BCALL:''' [[83Plus:BCALLs:5678|5678]]
+
'''Hook Disable BCALL:''' [[83Plus:BCALLs:4FE7|4FE7]]
  
'''Hook Call BCALL:''' [[83Plus:BCALLs:9012|9012]]
+
'''Hook Call BCALL:''' [[83Plus:BCALLs:4003|4003]]
  
'''Hook Active Flag:''' 6, (iy + 23h)
+
'''Hook Active Flag:''' [[83Plus:BCALLs:35#Bit_5|5, (iy + 35h)]]
  
This hook allows you to change the values that [[83Plus:BCALLs:4972|GetKey]] returns.
+
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 ==
These different values, passed in a, determines what the hook should do.
+
* A = 0 for small font, 1 for large font
* 1: The calculator just turned on. There seem to be no other values passed to the hook.
+
* B = character
* 2: The calculator is computing 1+1.
+
* NZ to use the default bitmaps (or rather, the bitmaps provided by the [[83Plus:Hooks:9BCC|localize hook]])
** b: 1
+
* Otherwise, set HL pointing to the font data, which must be in RAM:
** c: 1
+
** In small font:
** Change b and/or c to affect the output of the problem (which will still look like 1+1 to the user).
+
*** (HL) = width of character
* 3: Preparing to turn off due to 2nd+OFF.
+
*** (HL+1) = first (accent) row, right aligned (with the last pixel usually clear)
** Zero flag: Clear to abort the power off.
+
*** (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 doesn't exist. This is a demonstration only.
+
This hook is one of the four "official" hooks defined in ti83plus.inc.
 +
 
 +
== Example ==
 +
The following code displays the letter A in boldface:
  
== Credits and Contributions ==
+
<nowiki>FontHook:
* '''/dev/hda1:''' My favorite hard drive partition.
+
        .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 23:40, 27 March 2005

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

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