Category: TSR libraries
INT 2D - ALTERNATE MULTIPLEX INTERRUPT SPECIFICATION (AMIS) [v3.6] AH = multiplex number AL = function 00h installation check 01h get private entry point 02h uninstall 03h request popup 04h determine chained interrupts 05h get hotkey list 06h get device-driver information 07h-0Fh reserved for future enhancements Return: AL = 00h (not implemented) other application-dependent other registers vary by function (also see individual entries below) Return: varies by function Notes: programs should not use fixed multiplex numbers; rather, a program should scan all multiplex numbers from 00h to FFh, remembering the first unused multiplex in case the program is not yet installed. For multiplex numbers which are in use, the program should compare the first 16 bytes of the signature string to determine whether it is already installed on that multiplex number. If not previously installed, it should use the first free multiplex number. functions other than 00h are not valid unless a program is installed on the selected multiplex number to be considered fully compliant with version 3.6 of the specification, programs must implement at least functions 00h, 02h (no resident uninstall code required), and 04h (return value 04h). TSRs that provide hotkeys with which the user can activate them must also implement function 05h. TSRs which provide DOS device drivers must also implement function 06h. The absolute minimum fully-compliant implementation has an overhead of 64 bytes (80 bytes with function 05h) plus 22 bytes per hooked interrupt (for the interrupt sharing protocol header and hook list entry). the signature string and description may be used by memory mappers to display the installed programs to be considered fully compliant, users of this specification must adhere to the IBM interrupt sharing protocol (see #02568), which will permit removal of TSRs in arbitrary order and interrupt handler reordering. All TSRs following this specification should be removable unless they are loaded from CONFIG.SYS, though they need not keep the code for removing themselves resident; it is acceptable for a separate program to perform the interrupt unhooking and memory-freeing steps of removal. A sample public-domain implementation including example TSRs and utility programs may be found in a separate package distributed as AMISLnnn.ZIP (AMISL092.ZIP as of this writing). Please let me know if you choose to follow this proposal. The signature and a list of the private API calls you use would be appreciated, as well. SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h SeeAlso: INT 2D/AL=05h,INT 2D/AL=06h,INT 2F"NOTES"