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

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:''' GetCSC ''(officially GetKey; this name is discouraged)''
  
−
'''Hook Pointer Block Address:''' [[83Plus:RAM:8562|8562]]
+
'''Hook Pointer Block Address:''' [[83Plus:RAM:9B88|9B88]]
  
−
'''Hook Enable BCALL:''' [[83Plus:BCALLs:1234|1234]]
+
'''Hook Enable BCALL:''' [[83Plus:BCALLs:4F7B|4F7B]]
  
−
'''Hook Disable BCALL:''' [[83Plus:BCALLs:5678|5678]]
+
'''Hook Disable BCALL:''' [[83Plus:BCALLs:4F7E|4F7E]]
  
−
'''Hook Call BCALL:''' [[83Plus:BCALLs:9012|9012]]
+
'''Hook Call BCALL:''' [[83Plus:BCALLs:4F78|4F78]]
  
−
'''Hook Active Flag:''' 6, (iy + 23h)
+
'''Hook Active Flag:''' [[83Plus:Flags:34#Bit_0|0, (iy + 34h)]]
  
−
This hook allows you to change the values that [[83Plus:BCALLs:4972|GetKey]] returns.
+
This hook is called when the OS scans for keypad activity.  It is called once before the key scan begins, and a second time if the scan finds a key pressed.  It thus operates at a lower level than the [[83Plus:Hooks:9B84|Raw Key hook]], which operates on GetKey values.
  
 
== Using the Hook ==
 
== Using the Hook ==
−
These different values, passed in a, determines what the hook should do.
+
These different values, passed in A, determine what the hook should do.
−
* 1: The calculator just turned on. There seem to be no other values passed to the hook.
+
 
−
* 2: The calculator is computing 1+1.
+
* 1Ah: Before the keypad is scanned
−
** b: 1
+
** Return with Z set and A = scancode to force a key to be "pressed."
−
** c: 1
+
** Return with NZ set and A = 1Ah to scan the keypad normally.
−
** Change b and/or c to affect the output of the problem (which will still look like 1+1 to the user).
+
* 1Bh: After the keypad is scanned and a key is found
−
* 3: Preparing to turn off due to 2nd+OFF.
+
** B = scancode found
−
** Zero flag: Clear to abort the power off.
+
** Return with NZ set and A = scancode to be returned.
  
 
== Comments ==
 
== Comments ==
−
This hook doesn't exist. This is a demonstration only.
+
Officially named the "GetKeyHook."  This name is deprecated and confusing.
 +
 
 +
== Example ==
 +
The following code will swap the 2nd and Alpha keys:
 +
 
 +
<nowiki>GetKeyHook:
 +
        .db 83h            ; Required for all hooks
 +
        cp 1Bh              ; which condition?
 +
        ret nz
 +
        ld a,b              ; which key was pressed?
 +
        cp skAlpha          ; was it Alpha?
 +
        jr z,AlphaKey
 +
        cp sk2nd            ; was it 2nd?
 +
        ret nz
 +
        ld a,skAlpha-1      ; change to Alpha
 +
        inc a              ; set NZ
 +
        ret
 +
AlphaKey:
 +
        ld a,sk2nd-1        ; change to 2nd
 +
        inc a              ; set NZ
 +
        ret</nowiki>
  
 
== Credits and Contributions ==
 
== Credits and Contributions ==
−
* '''/dev/hda1:''' My favorite hard drive partition.
+
* '''Texas Instruments''' (thanks for all the confusing equates)

Revision as of 22:45, 27 March 2005

Synopsis

Name: GetCSC (officially GetKey; this name is discouraged)

Hook Pointer Block Address: 9B88

Hook Enable BCALL: 4F7B

Hook Disable BCALL: 4F7E

Hook Call BCALL: 4F78

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

This hook is called when the OS scans for keypad activity. It is called once before the key scan begins, and a second time if the scan finds a key pressed. It thus operates at a lower level than the Raw Key hook, which operates on GetKey values.

Using the Hook

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

  • 1Ah: Before the keypad is scanned
    • Return with Z set and A = scancode to force a key to be "pressed."
    • Return with NZ set and A = 1Ah to scan the keypad normally.
  • 1Bh: After the keypad is scanned and a key is found
    • B = scancode found
    • Return with NZ set and A = scancode to be returned.

Comments

Officially named the "GetKeyHook." This name is deprecated and confusing.

Example

The following code will swap the 2nd and Alpha keys:

GetKeyHook:
        .db 83h             ; Required for all hooks
        cp 1Bh              ; which condition?
        ret nz
        ld a,b              ; which key was pressed?
        cp skAlpha          ; was it Alpha?
        jr z,AlphaKey
        cp sk2nd            ; was it 2nd?
        ret nz
        ld a,skAlpha-1      ; change to Alpha
        inc a               ; set NZ
        ret
AlphaKey:
        ld a,sk2nd-1        ; change to 2nd
        inc a               ; set NZ
        ret

Credits and Contributions

  • Texas Instruments (thanks for all the confusing equates)