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)