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

From WikiTI
Jump to: navigation, search
m (Example: _Random -> Random)
Line 28: Line 28:
 
* 2: An expression was entered to be evaluated.
 
* 2: An expression was entered to be evaluated.
 
** OP1 contains the name of the entry, prgm#.
 
** OP1 contains the name of the entry, prgm#.
 +
** To retreive the expression to be evaluated use prgm!.
 
** Return NZ to cancel running the program.
 
** Return NZ to cancel running the program.
 
* 3: Changing context to the homescreen.
 
* 3: Changing context to the homescreen.

Revision as of 06:23, 26 February 2008

Synopsis

Name: Homescreen

Hook Pointer Block Address: 9B8C

Hook Enable BCALL: 4FAB

Hook Disable BCALL: 4FAE

Hook Call BCALL: (none known)

Hook Active Flag: 4, (iy + 34h)

This hook is called when various events occur on the homescreen.

Using the Hook

These different values, passed in A, determine what the hook should do.

  • 0: The calculator is displaying a result.
    • OP1 = the value to display
    • You can change the value in OP1 to display something different, which will not affect the value stored to Ans.
    • If you want to display something wider than the screen, you must also write the formatted string to fmtString.
    • Return NZ and TIOS will not display anything.
  • 1: A key was pressed at the homescreen.
    • B = keycode
    • Change B to change the key that appears to be pressed.
    • Return NZ to ignore the keypress.
  • 2: An expression was entered to be evaluated.
    • OP1 contains the name of the entry, prgm#.
    • To retreive the expression to be evaluated use prgm!.
    • Return NZ to cancel running the program.
  • 3: Changing context to the homescreen.
    • B = previous context value
    • You should always return Z in this case.

Example

The following code will display a random number as the result of any calculation.

HomescreenHook:
        .db 83h             ; Required for all hooks
        or a                ; are we in condition 0 (display value?)
        jr nz,ReturnZ
        B_CALL Random      ; change our output value to a random #
ReturnZ:
        cp a                ; set zero condition
        ret

Credits and Contributions

  • Michael Vincent: Analysis and writing the most amazingly cool homescreen hacks I've seen yet.