This is HORRIBLY incomplete...there needs to be a whole lot more research into it all. The TI-73 has hooks, or one hook I guess I should say. All of the hooks look to 85FFh for the address:page block, so that's where you should store the pointer to your hook. "add a,e" is not required nor checked for. Most of these have enable BCALLs, but no disable ones that I can see. These hooks appear to use unique event IDs, so one hook would suffice for doing whatever you want to do...just set the flag for the event you want to handle, and you'll get it. Not all of these hooks use 85FFh...the GetKey hook seems to use appRawKeyHandle instead. Several of these hooks have override bits, sometimes TWO override bits. I don't know the purpose or use of all the flags yet, but it seems iy+32h/33h/34h/35h are all hook flags or settings of some kind. So as an example to enable the silent link hook: in a,(6) ld (85FFh+2),a ld hl,myHook ld de,appBackUpScreen ld (85FFh),de ld bc,myHookEnd-myHook ldir set 6,(iy+33h) ;this hook appears not to have an enable BCALL ret myHook: or 1 ;disable all silent linking ret myHookEnd: ------ Hooks: ------ Silent Link Hook: Active Flag: 6, (iy+33h) Enable BCALL: ? Hook Block: 85FFh This is called in BCALL keyscnlnk (the silent link handler). Once silent link activity has been detected, this hook is called with A=2Ch. Return NZ to cancel the link transfer. If you want to receive bytes and take over this silent link transfer yourself, use BCALL ContinueGetByte with A=(83F3h) (current status of link port). GetCSC Hook: Active Flag: 0, (iy+33h) Enable BCALL: 4BF4h Hook Block: 85FFh This is called in GetKey, with A=1Ah before the keypad is scanned and A=1Bh after, just like the 83+ one. Return NZ to cancel the keypress or scan, or Z and A=keycode to fake one. Cursor Hook: Active Flag: 0, (iy+35h) Hook Block: 85FFh Event A=22h: Return Z to abort drawing. Draw your own cursor and return Z if you want. Event A=23h: Same as 83+. Event A=24h: B is (curUnder). Return NZ to skip drawing. Same as 83+. Line Hook: Active Flag: 7,(iy+33h) Override Flags: reset 4,(iy+33h) to override. Set 4,(iy+32h) to override that. Hook Block: 85FFh Basically an override to BCALL _CLine. Return NZ to cancel drawing. Change the OP1-OP4 inputs or flags or whatever if you want and return Z to manipulate it. Absolutely worthless. GetKey Hook: Active Flag: 6,(iy+32h) Enable BCALL: 4BDFh Hook Block: appRawKeyHandle This should be in RAM, but putting the page in (appPage) might work as a quick fix. Same as the 83+ RawKey hook, I guess. This might actually be an override instead of just a callback. On Hook: Active Flag: 2,(iy+33h) Enable BCALL: 4BF7h Hook Block: 85FFh Gets called when ON is pressed (and the calculator is already on). Event 1Ch when 4,(iy+8h) is reset (this gets reset whenever ON is pressed), event 1Dh otherwise. No idea on the purpose. Interrupt Hook: Active Flag: 1,(iy+33h) Enable BCALL: 4BFAh (disables interrupts first) Hook Block: 85FFh Gets called whenever the interrupt fires (!). Event 1Fh. Return Z to continue with the interrupt, or NZ to abort all interrupt checks. Unknown: Active Flag: 5,(iy+33h) Enable BCALL: 4BFDh I don't see this being checked anywhere. Unknown: Active Flag: 1,(iy+32h) Enable BCALL: 4BD6h Key-related somehow, but it's only reset and never checked, I think. Unknown: Active Flag: 2,(iy+32h) Enable BCALL: 4BDCh Key-related somehow, but it's only reset and never checked, I think. ------- BCALLs: ------- ClearAllHooks: 4C18h: Clears all hook flags (iy+32h/33h/34h/35h). Destroys A. -------------- Miscellaneous: -------------- 2,(iy+2Fh): set if batteries are good.