Alternate Multiplex Interrupt proposal Ralf Brown 1991-09-30 In the September 1 release of the interrupt list (INTER27), I made a proposal for an alternate multiplex interrupt with a standardized method for sharing multiplex numbers and a set of standard function calls. After some discussions and useful suggestions, I now have the following revised proposal. If anybody is already using INT 7D, please let me know; if anybody has already decided to follow the proposal as published in INTER27, please modify it to conform to the following: ----------7D--------------------------------- INT 7D - [proposed (v2)] - ALTERNATE MULTIPLEX INTERRUPT AH = multiplex number AL = function 00h installation check Return: AL = FFh if multiplex number in use CX = version number (CH = major, CL = minor) ES:DI -> signature string (see below) identifying the program using the multiplex number AL = 00h if free 01h get entry point Return: AL = FFh if entry point supported ES:BX -> entry point for bypassing interrupt chain AL = 00h if all API calls via INT 7D 02h uninstall Return: AL = status 00h not implemented 01h unsuccessful FFh successful (if handler ever returns from call) 03h-0Fh reserved for future enhancements Return: AL = 00h (not implemented) other application-dependent 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. before invoking INT 7D, a program must make sure it is valid. INT 7D is valid if either (1) it points at an IRET instruction (byte CFh) or (2) the INT 7D handler is not 0000h:0000h and is preceded by the ASCII signature "INT7D" (with no terminating 00h). If neither case holds, the vector may be uninitialized and pointing at a random location; it should thus not be called, but may be hooked by the program (without chaining), using multiplex number 00h. functions other than 00h are not valid unless a program is installed on the selected multiplex number the signature string and description may be used by memory mappers to display the installed programs users of this proposal are encouraged to adhere to the IBM interrupt sharing protocol, which will permit removal of TSRs in arbitrary order and interrupt handler reordering. Please let me know if you choose to follow this proposal. A list of the private API calls you use would be appreciated, as well. SeeAlso: INT 2F Format of signature string: Offset Size Description 00h 8 BYTEs manufacturer's name (possibly abbreviated) 08h 8 BYTEs product name 10h N BYTEs ASCIZ product description (max 64 bytes including NUL) the description is optional and may be empty (only a NUL)