----------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)
--
{backbone}!cs.cmu.edu!ralf ARPA: RA...@CS.CMU.EDU FIDO: Ralf Brown 1:129/26.1
BITnet: RALF%CS.CMU.EDU@CARNEGIE AT&Tnet: (412)268-3053 (school) FAX: ask
DISCLAIMER? Did | "Secrecy is the beginning of tyranny."
I claim something?| -- from the Notebook of Lazarus Long