83Plus:Hooks:9B88
From WikiTI
Revision as of 21:45, 27 March 2005 by FloppusMaximus (Talk | contribs)
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)