From WikiTI
Jump to: navigation, search


Name: Library Hook

Hook Pointer Block Address: 9B80

Hook Enable BCALL: 4F63

Hook Disable BCALL: 4F6C

Hook Call BCALL: 4F5A

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

This hook is available for apps' internal use and to interface with BASIC programs using the OpenLib and ExecLib functions.

Using the Hook

This hook is never used by the 83+ OS. On the 84+, it is used to implement the OpenLib( / ExecLib functions.


If you place the following at $4087:

 .db 96h, 0E2h
 .dw 100h, LibHookInfo

and the following anywhere on the first page of your app:

 .dw 1
 .db 2, 0
 .dw LibraryHook

a BASIC program (on the 84+) can then call your hook.

  • First, the BASIC program calls the OpenLib( function with the name of your app as argument.
  • Your app's hook is enabled and bit 4, (iy+3Eh) is set to indicate that ExecLib is enabled.
  • When the BASIC program calls ExecLib, your app's hook is called.

Note that OpenLib and ExecLib are only valid in programs, and not in the homescreen entry or in equations.

Credits and Contributions

  • Michael Vincent: Analyzing the OpenLib/ExecLib interface on OS 2.21 and above.