FAR CALL Interface List Release 45 Last Change 3/26/95 This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown ============================================= >CALL 0000h:0000h - Sample Entry >InstallCheck: how to determine CALL address if variable, whether it is > available if address is fixed >Program: description of the program(s) providing the API >Note: any notes related to the API >SeeAlso: related APIs, and interrupt entries for this API in INTERRUP.* > >Call entry point with: > input registers >Return: result registers > >Format of data: >Offset Size Description > 00h ... ... ============================================= --------------------------------------------- CALL 0060h:0000h - Eagle MS-DOS v1.25 IO.SYS - INITIALIZE InstallCheck: MS-DOS v1.25 must be installed Note: this function should only be called by MSDOS.SYS SeeAlso: @0060h:0003h,@0060h:0039h --------------------------------------------- CALL 0060h:0003h - Eagle MS-DOS v1.25 IO.SYS - CHECK FOR KEYSTROKE InstallCheck: MS-DOS v1.25 must be installed Note: does not return extended keystrokes SeeAlso: @0060h:0000h,@0060h:0006h,@0060h:0027h (Table 0001) Call entry point with: nothing Return: ZF set if no key ZF clear if keystroke available AL = keystroke --------------------------------------------- CALL 0060h:0006h - Eagle MS-DOS v1.25 IO.SYS - WAIT FOR KEYSTROKE InstallCheck: MS-DOS v1.25 must be installed Notes: if an extended keystroke is available, only the low byte is returned, and this function must be called again to get the high byte the BIOS keycode 0000h (Ctrl-Break) is returned as 00h+FFh to avoid the ambiguity that might be caused by returning the 00h high byte SeeAlso: @0060h:0000h,@0060h:0003h,@0060h:0027h (Table 0002) Call entry point with: nothing Return: AL = keystroke flags modified --------------------------------------------- CALL 0060h:0009h - Eagle MS-DOS v1.25 IO.SYS - OUTPUT CHARACTER TO SCREEN InstallCheck: MS-DOS v1.25 must be installed Note: this entry point supports most of the ANSI.SYS control sequences, plus several additional escape sequences SeeAlso: @0060h:0000h,@0060h:0003h,@0060h:000Ch (Table 0003) Call entry point with: AL = character to output Return: flags modified --------------------------------------------- CALL 0060h:000Ch - Eagle MS-DOS v1.25 IO.SYS - OUTPUT CHARACTER TO PRINTER InstallCheck: MS-DOS v1.25 must be installed Note: this entry point is able, if set by configuration (see @0060h:0039h), to strip linefeed characters following carriage returns SeeAlso: @0060h:0000h,@0060h:0009h (Table 0004) Call entry point with: AL = character to be printed Return: flags modified --------------------------------------------- CALL 0060h:000Fh - Eagle MS-DOS v1.25 IO.SYS - INPUT CHAR FROM AUX: DEVICE InstallCheck: MS-DOS v1.25 must be installed Note: if the configured AUX: device is a parallel port, this call always returns a Ctrl-Z as the "read" character; Ctrl-Z is also returned if the user presses Esc or Ctrl-Break while waiting for a character to arrive on a serial port SeeAlso: @0060h:0000h (Table 0005) Call entry point with: nothing Return: AL = received character --------------------------------------------- CALL 0060h:0012h - Eagle MS-DOS v1.25 IO.SYS - OUTPUT CHAR TO AUX: DEVICE InstallCheck: MS-DOS v1.25 must be installed Note: if the port is busy, this function waits until the port becomes available or the user presses Esc or Ctrl-Break SeeAlso: @0060h:0000h (Table 0006) Call entry point with: AL = character to output Return: flags modified --------------------------------------------- CALL 0060h:0015h - Eagle MS-DOS v1.25 IO.SYS - READ ABSOLUTE SECTOR(S) InstallCheck: MS-DOS v1.25 must be installed SeeAlso: @0060h:0000h,@0060h:0018h,@0060h:001Bh (Table 0007) Call entry point with: AL = drive table number ES:BX -> buffer CX = number of sectors to read DX = logical sector number of first sector AH = verify flag Return: CF clear if successful CF set on error AL = error code 0Ch drive table number out of range Note: the drive number in AL is *not* the logical DOS drive number, but the number of an internal data table; multiple data tables, each describing a distinct disk format, may be shared by one logical drive --------------------------------------------- CALL 0060h:0018h - Eagle MS-DOS v1.25 IO.SYS - WRITE ABSOLUTE SECTOR(S) InstallCheck: MS-DOS v1.25 must be installed SeeAlso: @0060h:0000h,@0060h:0015h,@0060h:001Bh (Table 0008) Call entry point with: AL = drive table number ES:BX -> data to be written CX = number of sectors to write DX = logical sector number of first sector AH = verify flag Return: CF clear if successful CF set on error AL = error code 0Ch drive table number out of range Note: the drive number in AL is *not* the logical DOS drive number, but the number of an internal data table; multiple data tables, each describing a distinct disk format, may be shared by one logical drive --------------------------------------------- CALL 0060h:001Bh - Eagle MS-DOS v1.25 IO.SYS - DETERMINE DISK FORMAT InstallCheck: MS-DOS v1.25 must be installed SeeAlso: @0060h:0000h,@0060h:0015h,@0060h:002Ah (Table 0009) Call entry point with: AL = DOS drive number Return: CF clear if successful AL = drive table number AH = ??? flag 00h ??? FFh ??? CF set on error AL = error code 02h ??? 0Ch unrecognized format --------------------------------------------- CALL 0060h:001Eh - Eagle MS-DOS v1.25 IO.SYS - SET DAY COUNT InstallCheck: MS-DOS v1.25 must be installed SeeAlso: @0060h:0000h,@0060h:0021h,@0060h:0024h (Table 0010) Call entry point with: AX = day count Return: nothing --------------------------------------------- CALL 0060h:0021h - Eagle MS-DOS v1.25 IO.SYS - SET SYSTEM TIME InstallCheck: MS-DOS v1.25 must be installed SeeAlso: @0060h:0000h,@0060h:001Eh,@0060h:0024h (Table 0011) Call entry point with: CH = hours CL = minutes DH = seconds DL = hundredths Return: flags modified --------------------------------------------- CALL 0060h:0024h - Eagle MS-DOS v1.25 IO.SYS - READ SYSTEM TIME InstallCheck: MS-DOS v1.25 must be installed SeeAlso: @0060h:0000h,@0060h:001Eh,@0060h:0021h (Table 0012) Call entry point with: nothing Return: AX = day count CH = hours CL = minutes DH = seconds DL = hundredths --------------------------------------------- CALL 0060h:0027h - Eagle MS-DOS v1.25 IO.SYS - CLEAR KEYBOARD BUFFER InstallCheck: MS-DOS v1.25 must be installed SeeAlso: @0060h:0000h,@0060h:0003h,@0060h:0006h (Table 0013) Call entry point with: nothing Return: ZF set --------------------------------------------- CALL 0060h:002Ah - Eagle MS-DOS v1.25 IO.SYS - SEARCH FOR NEXT DISK FORMAT InstallCheck: MS-DOS v1.25 must be installed SeeAlso: @0060h:0000h,@0060h:001Bh (Table 0014) Call entry point with: AL = drive table number Return: AL = next drive table number with matching disk sector size and media ID byte --------------------------------------------- CALL 0060h:0039h - Eagle MS-DOS v1.25 IO.SYS - CONFIGURE FROM SYSINFO.SYS InstallCheck: MS-DOS v1.25 must be installed Note: reads the first 144 bytes of SYSINFO.SYS from the current drive into an internal configuration buffer SeeAlso: @0060h:0000h --------------------------------------------- CALL F000h:E739h - ROM BIOS INT 14 HANDLER InstallCheck: present if BIOS is 100% compatible with original IBM PC --------------------------------------------- CALL F000h:E82Eh - ROM BIOS INT 16 HANDLER InstallCheck: present if BIOS is 100% compatible with original IBM PC --------------------------------------------- CALL F000h:EC59h - ROM BIOS INT 13 HANDLER InstallCheck: present if BIOS is 100% compatible with original IBM PC --------------------------------------------- CALL F000h:EFD2h - ROM BIOS INT 17 HANDLER InstallCheck: present if BIOS is 100% compatible with original IBM PC --------------------------------------------- CALL F000h:F065h - ROM BIOS INT 10 HANDLER InstallCheck: present if BIOS is 100% compatible with original IBM PC --------------------------------------------- CALL F000h:F841h - ROM BIOS INT 12 HANDLER InstallCheck: present if BIOS is 100% compatible with original IBM PC --------------------------------------------- CALL F000h:F84Dh - ROM BIOS INT 11 HANDLER InstallCheck: present if BIOS is 100% compatible with original IBM PC --------------------------------------------- CALL F000h:F859h - ROM BIOS INT 15 HANDLER InstallCheck: present if BIOS is 100% compatible with original IBM PC --------------------------------------------- CALL F000h:FE6Eh - ROM BIOS INT 1A HANDLER InstallCheck: present if BIOS is 100% compatible with original IBM PC --------------------------------------------- CALL F000h:FFF0h - COLD-BOOT ADDRESS InstallCheck: always present SeeAlso: @FFFFh:0000h --------------------------------------------- CALL FFFFh:0000h - COLD-BOOT ADDRESS InstallCheck: always present Note: this address is another way of expressing F000h:FFF0h SeeAlso: @F000h:FFF0h --------------------------------------------- CALL xxxxh:xxxxh - 10NET - 10MEMMGR.SYS InstallCheck: see INT 21/AX=4402h"10MEMMGR" SeeAlso: INT 21/AX=4402h"10MEMMGR" --------------------------------------------- CALL xxxxh:xxxxh - Alternate Multiplex Interrupt Specification TSRs InstallCheck: see INT 2D"AMIS" SeeAlso: INT 2D"AMIS" --------------------------------------------- CALL xxxxh:xxxxh - AutoCAD Device Interface InstallCheck: see INT 7A/AX=0001h SeeAlso: INT 7A/AX=0001h --------------------------------------------- CALL xxxxh:xxxxh - BIOS32 Service Directory InstallCheck: scan paragraph boundaries E000h to FFFFh for signature string "_32_", followed by a valid header structure (see below) Notes: an alternate PCI BIOS entry point may be found (if supported) by requesting the entry point for the API with identifier "$PCI" an alternate entry point for INT 1A/AH=B4h may be found (if supported) by requesting the entry point for the API with identifier "$ACF" Format of BIOS32 Service Directory header structure: Offset Size Description (Table 0015) 00h 4 BYTEs signature "_32_" 04h WORD offset (within ROM containing this header) of BSD entry point (full details not yet available) (Table 0016) Call BIOS32 Service Directory entry point with: EBX = function 00000000h get service entry point EAX = service identifier 49435024h ("ICP$") PCI BIOS 46434124h ("FCA$") Plug-and-Play Auto-Configuration Return: AL = status 00h successful EBX = base address of handler's code seg??? ECX = size of code segment??? EDX = offset of handler in code seg 80h unknown service identifier else Return: AL = 81h Notes: the BSD handler assumes that it is running in a 32-bit code segment the returned entry points for PCI BIOS and Auto-Config must be called with the same registers as the real-mode INT 1Ah interface, including the value B1h or B4h in AH (AMI BIOS v1.00.05.AX1 returns the same entry point for both interfaces and uses AH to distinguish which API is desired) --------------------------------------------- CALL xxxxh:xxxxh - Borland TKERNEL InstallCheck: see INT 2F/AX=FBA1h/BX=0082h SeeAlso: INT 2F/AX=FBA1h/BX=0082h --------------------------------------------- CALL xxxxh:xxxxh - Buffit v3.0 InstallCheck: see INT 60"Buffit" SeeAlso: INT 60"Buffit" --------------------------------------------- CALL xxxxh:xxxxh - CEMM v5.10+ Private API InstallCheck: see INT 21/AX=4402h/SF=00h SeeAlso: INT 21/AX=4402h/SF=00h --------------------------------------------- CALL xxxxh:xxxxh - Cloaking - PROTECTED-MODE API InstallCheck: see INT 2C/AX=001Dh SeeAlso: INT 2C/AX=001Dh --------------------------------------------- CALL xxxxh:xxxxh - Cloaking - REAL-MODE API InstallCheck: see INT 2F/AX=4310h"Cloaking" SeeAlso: INT 2F/AX=4310h"Cloaking" --------------------------------------------- CALL xxxxh:xxxxh - CTMMSYS.SYS - API InstallCheck: see INT 21/AX=4402h"CTMMSYS" Program: CTMMSYS.SYS is the Creative DOS Multimedia Architecture Integration driver SeeAlso: INT 21/AX=4402h"CTMMSYS" --------------------------------------------- CALL xxxxh:xxxxh - DESQview XDI - Driver API InstallCheck: see INT 2F/AX=DE01h SeeAlso: INT 2F/AX=DE01h --------------------------------------------- CALL xxxxh:xxxxh - DOS Device Drivers InstallCheck: see INT 21/AH=52h SeeAlso: INT 21/AH=52h --------------------------------------------- CALL xxxxh:xxxxh - DOS Protected-Mode Interface - MODE SWITCH InstallCheck: see INT 2F/AX=1687h SeeAlso: INT 2F/AX=1687h --------------------------------------------- CALL xxxxh:xxxxh - DOS Protected-Mode Interface - Phar Lap RUN286 InstallCheck: see INT 2F/AX=168Ah SeeAlso: INT 2F/AX=168Ah --------------------------------------------- CALL xxxxh:xxxxh - DOS Protected-Mode Interface - Vendor-Specific APIs InstallCheck: see INT 31/AX=0A00h SeeAlso: INT 31/AX=0A00h --------------------------------------------- CALL xxxxh:xxxxh - DOS Protected-Mode Interface - Windows Support InstallCheck: see INT 2F/AX=168Ah SeeAlso: INT 2F/AX=168Ah --------------------------------------------- CALL xxxxh:xxxxh - DOS Protected-Mode Services InstallCheck: see INT 2F/AX=43E0h SeeAlso: INT 2F/AX=43E1h --------------------------------------------- CALL xxxxh:xxxxh - DOS Task Switcher - Callout InstallCheck: see INT 2F/AX=4B01h SeeAlso: INT 2F/AX=4B01h --------------------------------------------- CALL xxxxh:xxxxh - DOS Task Switcher InstallCheck: see INT 2F/AX=4B02h SeeAlso: INT 2F/AX=4B02h --------------------------------------------- CALL xxxxh:xxxxh - Enhanced Parallel Port (EPP) BIOS InstallCheck: see INT 17/AX=0200h/BX=5050h SeeAlso: INT 17/AX=0200h/BX=5050h --------------------------------------------- CALL xxxxh:xxxxh - Extended Memory Specification (XMS) InstallCheck: see INT 2F/AX=4300h SeeAlso: INT 2F/AX=4310h --------------------------------------------- CALL xxxxh:xxxxh - FASTOPEN InstallCheck: see INT 2F/AX=122Ah SeeAlso: INT 2F/AX=122Ah --------------------------------------------- CALL xxxxh:xxxxh - HIGHUMM.SYS InstallCheck: see INT 21/AX=4402h"HIGHUMM" SeeAlso: INT 21/AX=4402h"HIGHUMM" --------------------------------------------- CALL xxxxh:xxxxh - IBM 8514/A Adapter Interface (HDILOAD) InstallCheck: see INT 7F/AX=0105h SeeAlso: INT 7F/AX=0105h --------------------------------------------- CALL xxxxh:xxxxh - IBM 8516 Touch Screen Device Driver InstallCheck: see INT 7F/AX=ABCDh SeeAlso: INT 7F/AX=ABCDh --------------------------------------------- CALL xxxxh:xxxxh - IBM System 36/38 Workstation Emulation InstallCheck: see INT 0C"SYSTEM 36/38" SeeAlso: INT 0C"SYSTEM 36/38" --------------------------------------------- CALL xxxxh:xxxxh - IFS Drivers InstallCheck: see INT 21/AH=52h SeeAlso: INT 21/AH=52h --------------------------------------------- CALL xxxxh:xxxxh - IFSHLP.SYS InstallCheck: see INT 21/AH=3Fh"IFSHLP" SeeAlso: INT 21/AH=3Fh"IFSHLP" --------------------------------------------- CALL xxxxh:xxxxh - Interrupt Sharing Protocol InstallCheck: see INT 2D"AMIS" SeeAlso: INT 2D"AMIS" --------------------------------------------- CALL xxxxh:xxxxh - INTRSPY v1.0 only InstallCheck: see INT 60"INTRSPY" SeeAlso: INT 60"INTRSPY" --------------------------------------------- CALL xxxxh:xxxxh - Memory Managers InstallCheck: see INT 21/AX=4402h/SF=00h SeeAlso: INT 21/AX=4402h/SF=00h --------------------------------------------- CALL xxxxh:xxxxh - Microsoft EMM386.EXE InstallCheck: see INT 67/AX=FFA5h SeeAlso: INT 67/AX=FFA5h --------------------------------------------- CALL xxxxh:xxxxh - Microsoft Real-Time Compression Interface (MRCI) InstallCheck: see INT 1A/AX=B001h SeeAlso: INT 1A/AX=B001h --------------------------------------------- CALL xxxxh:xxxxh - Microsoft Workgroup Connection - WORKGRP.SYS InstallCheck: see INT 21/AH=3Fh"WORKGRP.SYS" SeeAlso: INT 21/AX=4402h"WORKGRP.SYS" --------------------------------------------- CALL xxxxh:xxxxh - MS Windows - DOSMGR Device InstallCheck: see INT 2F/AX=1684h/BX=0015h SeeAlso: INT 2F/AX=1684h/BX=0015h --------------------------------------------- CALL xxxxh:xxxxh - MS Windows - EDOS Device InstallCheck: see INT 2F/AX=1684h/BX=2925h SeeAlso: INT 2F/AX=1684h/BX=2925h --------------------------------------------- CALL xxxxh:xxxxh - MS Windows - POSTMSG Device InstallCheck: see INT 2F/AX=1684h/BX=8888h SeeAlso: INT 2F/AX=1684h/BX=8888h --------------------------------------------- CALL xxxxh:xxxxh - MS Windows - REBOOT Device InstallCheck: see INT 2F/AX=1684h/BX=0009h SeeAlso: INT 2F/AX=1684h/BX=0009h --------------------------------------------- CALL xxxxh:xxxxh - MS Windows - SHELL Device InstallCheck: see INT 2F/AX=1684h/BX=0017h SeeAlso: INT 2F/AX=1684h/BX=0017h --------------------------------------------- CALL xxxxh:xxxxh - MS Windows - VADMAD Device InstallCheck: see INT 2F/AX=1684h/BX=0444h SeeAlso: INT 2F/AX=1684h/BX=0444h --------------------------------------------- CALL xxxxh:xxxxh - MS Windows - VbillD Device InstallCheck: see INT 2F/AX=1684h/BX=8888h SeeAlso: INT 2F/AX=1684h/BX=8888h --------------------------------------------- CALL xxxxh:xxxxh - MS Windows - VSWITCHD Device InstallCheck: see INT 2F/AX=1684h/BX=0750h SeeAlso: INT 2F/AX=1684h/BX=0750h --------------------------------------------- CALL xxxxh:xxxxh - MS Windows - VTD Device InstallCheck: see INT 2F/AX=1684h/BX=0005h SeeAlso: INT 2F/AX=1684h/BX=0005h --------------------------------------------- CALL xxxxh:xxxxh - MS Windows - WPS Device InstallCheck: see INT 2F/AX=1684h/BX=310Eh SeeAlso: INT 2F/AX=1684h/BX=310Eh --------------------------------------------- CALL xxxxh:xxxxh - Netroom RM386 v6.00 InstallCheck: see INT 2F/AX=4310h SeeAlso: INT 2F/AX=4310h --------------------------------------------- CALL xxxxh:xxxxh - Novell - ODI Link Support Layer InstallCheck: see INT 2F/AX=C000h"LSL.COM" SeeAlso: INT 2F/AX=C000h"LSL.COM" --------------------------------------------- CALL xxxxh:xxxxh - Novell DOS 7 DELWATCH.EXE InstallCheck: see INT 2F/AX=10FEh SeeAlso: INT 2F/AX=10FEh --------------------------------------------- CALL xxxxh:xxxxh - Novell DOS 7 EMM386.EXE InstallCheck: see INT 2F/AX=12FFh/BX=0106h SeeAlso: INT 2F/AX=12FFh/BX=0106h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare - Access Server Driver InstallCheck: see INT 2F/AX=7AF1h SeeAlso: INT 2F/AX=7AF1h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare - DOS Requester InstallCheck: see INT 2F/AX=7A20h/BX=0000h SeeAlso: INT 2F/AX=7A20h/BX=0000h --------------------------------------------- CALL xxxxh:xxxxh - Novell Netware - Event Service Layer InstallCheck: see INT 2F/AX=C000h"NESL" SeeAlso: INT 2F/AX=C000h"NESL" --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare - IPX InstallCheck: see INT 2F/AX=7A00h SeeAlso: INT 2F/AX=7A00h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare - IPXODI InstallCheck: see INT 2F/AX=7A2Fh SeeAlso: INT 2F/AX=7A2Fh --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare - TCP/IP Protocol Stack InstallCheck: see INT 2F/AX=7A40h SeeAlso: INT 2F/AX=7A40h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare - VLM InstallCheck: see INT 2F/AX=7A20h/BX=0000h SeeAlso: INT 2F/AX=7A20h/BX=0000h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare - VLM CallA InstallCheck: see INT 2F/AX=7A20h/BX=0001h SeeAlso: INT 2F/AX=7A20h/BX=0001h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare - VLM Multicast InstallCheck: see INT 2F/AX=7A20h/BX=0004h SeeAlso: INT 2F/AX=7A20h/BX=0004h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare - VLM Multiplex InstallCheck: see INT 2F/AX=7A20h/BX=0002h SeeAlso: INT 2F/AX=7A20h/BX=0002h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare - VLM Parse API InstallCheck: see INT 2F/AX=7A20h/BX=0003h SeeAlso: INT 2F/AX=7A20h/BX=0003h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare Lite - CLIENT InstallCheck: see INT 2F/AX=D800h SeeAlso: INT 2F/AX=D800h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare Lite - NLCACHE/NWCACHE InstallCheck: see INT 2F/AX=D8C0h SeeAlso: INT 2F/AX=D8C0h --------------------------------------------- CALL xxxxh:xxxxh - Novell NetWare Lite - SERVER InstallCheck: see INT 2F/AX=D880h SeeAlso: INT 2F/AX=D880h --------------------------------------------- CALL xxxxh:xxxxh - pcANYWHERE IV/LAN InstallCheck: see INT 21/AX=2B44h/BX=4D41h SeeAlso: INT 21/AX=2B44h/BX=4D41h --------------------------------------------- CALL xxxxh:xxxxh - PCI BIOS v2.0c Protected-Mode API InstallCheck: see INT 1A/AX=B101h SeeAlso: INT 1A/AX=B101h --------------------------------------------- CALL xxxxh:xxxxh - PenDOS PENDEV.SYS InstallCheck: see INT 21/AX=4402h"PENDEV" SeeAlso: INT 21/AX=4402h"PENDEV" --------------------------------------------- CALL xxxxh:xxxxh - Phar Lap 386/DOS-Extender v4.1 InstallCheck: see INT 2F/AX=ED03h SeeAlso: INT 2F/AX=ED03h --------------------------------------------- CALL xxxxh:xxxxh - Plug-and-Play BIOS v1.0A InstallCheck: scan paragraph boundaries F000h to FFFFh for signature string "$PnP" followed by a valid Plug-and-Play header structure SeeAlso: @xxxxh:xxxxh"BIOS32 Service Directory",INT 1A/AH=B4h Format of Plug-and-Play Installation Structure: Offset Size Description (Table 0017) 00h 4 BYTEs signature "$PnP" 04h BYTE Plug-and-Play version (major in high nybble, BCD minor in low) 10h for current specification 05h BYTE length of Installation Structure in bytes 06h WORD control field bits 15-2 reserved bits 1-0: event notification mechanism 00 not supported 01 polling 10 asynchronous (interrupt time) 08h BYTE checksum (8-bit sum of all bytes in structure, including this one, should equal zero) 09h DWORD physical address of event notification flag if using polling (bit 0 set when a system even occurs) 0Dh WORD real mode entry offset 0Fh WORD real mode code segment 11h WORD 16-bit protected mode entry point offset 13h DWORD 16-bit protected mode code segment base address 17h DWORD OEM device identifier 1Bh WORD real mode data segment 1Dh DWORD 16-bit protected mode data segment base address (Table 0018) Call Plug-and-Play BIOS entry point with: STACK: WORD function number 0000h Get Number of System Device Nodes 0001h Get System Device Node 0002h Set System Device Node 0003h Get Event 0004h Send Message 0005h Get Docking Station Information 0006h reserved for future versions 0007h Select Primary Boot Devices 0008h Get Primary Boot Devices 0009h Set Statically Allocated Resource Information 000Ah Get Statically Allocated Resource Information 000Bh Get APM ID Table 0040h Get Plug-and-Play ISA Configuration Structure 0041h Get Extended System Configuration Data Info 0042h Read Extended SYstem Configuration Data 0043h Write Extended SYstem Configuration Data var function arguments WORD PnP BIOS writable segment/selector Return: AX = status Notes: the caller must provide at least 1024 bytes of stack space for use by the Plug-and-Play BIOS this API is bi-modal; all calls are available in both real mode and 16-bit protected mode (if calling from 32-bit protected mode, care must be taken to ensure proper alignment of the stack arguments) (Table 0019) Call Plug-and-Play BIOS function 00h with: STACK: WORD 0000h (function "Get Number of System Device Nodes") DWORD -> BYTE in which to return number of device nodes DWORD -> WORD in which to return size of largest device node WORD PnP BIOS writable segment/selector Return: AX = status Note: the large-model C declaration is int (*entry)(int, unsigned char *, unsigned int *, unsigned int); (Table 0020) Call Plug-and-Play BIOS function 01h with: STACK: WORD 0001h (function "Get System Device Node") DWORD -> BYTE containing node number or handle DWORD -> buffer for device node WORD control flag bits 15-2 reserved (0) bit 1: get static config (values for next boot) bit 0: get current (dynamic) configuration WORD PnP BIOS writable segment/selector Return: AX = status Notes: the large-model C declaration is int (*entry)(int, unsigned char *, DEV_NODE *, unsigned int, unsigned int); exactly one of the two defined bits in the control flag must be set (Table 0021) Call Plug-and-Play BIOS function 02h with: STACK: WORD 0002h (function "Set System Device Node") DWORD -> BYTE containing node number or handle DWORD -> buffer containing device node WORD control flag bits 15-2 reserved (0) bit 1: set static config (values for next boot) bit 0: set current (dynamic) configuration WORD PnP BIOS writable segment/selector Return: AX = status Notes: the large-model C declaration is int (*entry)(int, unsigned char *, DEV_NODE *, unsigned int, unsigned int); exactly one of the two defined bits in the control flag must be set (Table 0022) Call Plug-and-Play BIOS function 03h with: STACK: WORD 0003h (function "Get Event") DWORD -> WORD buffer for event message identifier (see below) WORD PnP BIOS writable segment/selector Return: AX = status Note: the large-model C declaration is int (*entry)(int, unsigned int *, unsigned int); (Table 0023) Values for PnP Event Identifier: 0001h "ABOUT_TO_CHANGE_CONFIG" preliminary notification of changes, including docking and undocking 0002h "DOCK_CHANGED" devices have been added to or removed from system 0003h "SYSTEM_DEVICE_CHANGED" removable system devices have been inserted or removed 0004h "CONFIG_CHANGE_FAILED" error detected while atempting to add or remove devices 8000h-FFFEh OEM-defined events FFFFh "UNKNOWN_SYSTEM_EVENT" (Table 0024) Call Plug-and-Play BIOS function 04h with: STACK: WORD 0004h (function "Send Message") WORD message identifier (see below) WORD PnP BIOS writable segment/selector Return: AX = status Note: the large-model C declaration is int (*entry)(int, unsigned int, unsigned int); (Table 0025) Values for PnP Message Identifier: 0000h "OK" 0001h "ABORT" action which caused an ABOUT_TO_X message 0002h-003Fh reserved for future Response Messages 0040h "UNDOCK_DEFAULT_ACTION" 0041h "POWER_OFF" 0042h "PNP_OS_ACTIVE" 0043h "PNP_OS_INACTIVE" 0044h-007Fh reserved for future Control Messages 8000h-FFFFh OEM-defined messages (Table 0026) Call Plug-and-Play BIOS function 05h with: STACK: WORD 0005h (function "Get Docking Station Information") DWORD -> buffer for docking station info (see below) WORD PnP BIOS writable segment/selector Return: AX = status Note: the large-model C declaration is int (*entry)(int, unsigned char *, unsigned int); (Table 0027) Call Plug-and-Play BIOS function 07h with: STACK: WORD 0007h (function "Select Primary Boot Devices") WORD type of primary boot device 0000h primary input 0001h primary output 0002h primary IPL DWORD Plug-and-Play 32-bit device ID or FFFFFFFFh for ISA DWORD device serial number or FFFFFFFFh DWORD 32-bit logical device ID or FFFFFFFFh for ISA device WORD physical unit number WORD control flag bits 15-1 reserved (0) bit 0: do not check for attached device during PnP POST boot device selection DWORD -> preferred resource allocation or -> END_TAG if none WORD PnP BIOS writable segment/selector Return: AX = status Note: the large-model C declaration is int (*entry)(int, int, unsigned long, unsigned long, unsigned long, int, int, char *, unsigned int); (Table 0028) Call Plug-and-Play BIOS function 08h with: STACK: WORD 0008h (function "Get Primary Boot Devices") WORD type of primary boot device 0000h primary input 0001h primary output 0002h primary IPL DWORD -> DWORD buffer for Plug-and-Play 32-bit device ID DWORD -> DWORD buffer for device serial number DWORD -> DWORD buffer for logical device ID DWORD -> WORD buffer for physical unit number DWORD -> buffer for preferred resource allocation WORD PnP BIOS writable segment/selector Return: AX = status Note: the large-model C declaration is int (*entry)(int, int, unsigned long *, unsigned long *, unsigned long *, unsigned int *, char *, unsigned int); Format of Plug-and-Play Docking Station Information: Offset Size Description (Table 0029) 00h DWORD docking station location identifier (EISA device ID format) FFFFFFFFh if unknown or no product identifier 04h DWORD serial number or 00000000h 08h WORD capabilities bits 15-3 reserved (0) bits 2-1: hot-pluggability 00 power-down required to dock/undock 01 must be in suspend mode ("warm" dock/undock) 10 system can be hot-docked 11 reserved bit 0: docking station provides support for controlling sequence of docking/undocking (Table 0030) Call Plug-and-Play BIOS function 09h with: STACK: WORD 0009h (function "Set Statically Allocated Resource Information") DWORD -> block of statically-allocated resources as described in the Plug-and-Play ISA Spec WORD PnP BIOS writable segment/selector Return: AX = status Notes: the large-model C declaration is int (*entry)(int, unsigned char *, unsigned int); if the returned status is 008Dh, the Plug-and-Play BIOS supports ESCD, and the caller should thus use functions 41h to 43h instead of 09h and 0Ah (Table 0031) Call Plug-and-Play BIOS function 0Ah with: STACK: WORD 000Ah (function "Get Statically Allocated Resource Information") DWORD -> buffer for statically-allocated resources as described in the Plug-and-Play ISA Spec WORD PnP BIOS writable segment/selector Return: AX = status Notes: the large-model C declaration is int (*entry)(int, unsigned char *, unsigned int); if the returned status is 008Dh, the Plug-and-Play BIOS supports ESCD, and the caller should thus use functions 41h to 43h instead of 09h and 0Ah (Table 0032) Call Plug-and-Play BIOS function 0Bh with: STACK: WORD 000Bh (function "Get APM ID Table") Information") DWORD -> WORD buffer for size of data buffer DWORD -> buffer for storing APM ID table (see below) WORD PnP BIOS writable segment/selector Return: AX = status Desc: copies the Advanced Power Management v1.1 device identifier table to Plug-and-Play device identifier mappings Note: the large-model C declaration is int (*entry)(int, unsigned int *, unsigned char *, unsigned int); SeeAlso: INT 15/AX=5300h Format of Plug-and-Play APM ID Table: Offset Size Description (Table 0033) 00h DWORD Plug-and-Play device identifier 04h WORD APM v1.1+ identifier (Table 0034) Call Plug-and-Play BIOS function 40h with: STACK: WORD 0040h (function "Get Plug-and-Play ISA Configuration Structure") DWORD -> buffer for configuration structure (see below) WORD PnP BIOS writable segment/selector Return: AX = status Note: the large-model C declaration is int (*entry)(int, unsigned char *, unsigned int); Format of Plug-and-Play ISA Configuration Structure: Offset Size Description (Table 0035) 00h BYTE structure revision level (01h) 01h BYTE total Card Select Numbers (CSNs) assigned 02h WORD ISA Read Data Port 04h WORD reserved (0) (Table 0036) Call Plug-and-Play BIOS function 41h with: STACK: WORD 0041h (function "Get Extended System Configuration Information") DWORD -> WORD buffer for size of nonvolatile storage DWORD -> WORD buffer for size of ESCD allocated DWORD -> DWORD buffer for physical base address of NV storage (if memory-mapped, else 00000000h) WORD PnP BIOS writable segment/selector Return: AX = status Note: the large-model C declaration is int (*entry)(int, unsigned int *, unsigned int *, unsigned long *, unsigned int); SeeAlso: INT 1A/AX=B401h (Table 0037) Call Plug-and-Play BIOS function 42h with: STACK: WORD 0042h (function "Read Extended System Configuration Data") DWORD -> buffer for storing ESCD WORD read/writable selector for ESCD if memory-mapped and called in protected mode (ignored otherwise) WORD PnP BIOS writable segment/selector Return: AX = status Notes: the large-model C declaration is int (*entry)(int, unsigned char *, unsigned int, unsigned int); if an ESCD selector is required, the caller must construct a 16-bit data segment selector with a limit of 64K (Table 0038) Call Plug-and-Play BIOS function 43h with: STACK: WORD 0043h (function "Write Extended System Configuration Data") DWORD -> buffer containing ESCD WORD read/writable selector for ESCD if memory-mapped and called in protected mode (ignored otherwise) WORD PnP BIOS writable segment/selector Return: AX = status Notes: the large-model C declaration is int (*entry)(int, unsigned char *, unsigned int, unsigned int); if an ESCD selector is required, the caller must construct a 16-bit data segment selector with a limit of 64K (Table 0039) Values for Plug-and-Play function status code: 0000h successful 0001h boot device resource configuration not saved to nonvolatile memory 0002h-007Eh reserved for future warnings 0055h unable to read/write Extended System Config Data from nonvolatile mem 0056h no valid Extended System Configuration Data in nonvolatile storage 0059h user's buffer was too small for Extended System Configuration Data 007Fh device could not be configured statically, but dynamic config succeeded 0081h unknown function 0082h unsupported function 0083h invalid device node number/handle 0084h bad parameter 0085h failure setting device node 0086h no pending events 0087h system not docked 0088h no ISA Plug-and-Play cards installed 0089h unable to determine docking station's capabilities 008Ah undocking sequence failed because system unit does not have a battery 008Bh resource conflict with a primary boot device 008Ch buffer provided by user was too small 008Dh must use ESCD support for specified device 008Eh message not supported 008Fh hardware error Format of Option ROM header: Offset Size Description (Table 0040) 00h WORD AA55h signature 02h BYTE length of option ROM in 512-byte pages (should be multiple 4) 03h 4 BYTEs standard initialization entry point (called with ES:DI -> PnP Installation Structure) 07h 19 BYTEs reserved 1Ah WORD offset to PnP Expansion Header Format of Expansion Header: Offset Size Description (Table 0041) 00h 4 BYTEs signature ("$PnP" for Plug-and-Play expansion header) 04h BYTE structure version number 05h BYTE length of entire header in paragraphs 06h WORD offset to next header or 0000h 08h BYTE reserved 09h BYTE checksum (sum of all bytes in header, including this one, mod 256 should equal zero) ---PnP Expansion Header--- 0Ah DWORD Plug-and-Play device identifier 0Eh WORD offset of manufacturer ID string in Option ROM or 0000h 10h WORD offset of product name string in Option ROM or 0000h 12h 3 BYTEs device type code (see below) byte 0: base type (general kind of device) byte 1: device subtype byte 2: device programming interface 15h BYTE device indicator flags (see below) 16h WORD Boot Connection Vector offset (real/protected mode) or 0000h (see below) 18h WORD Disconnect Vector offset (real/protected mode) or 0000h far-called by system BIOS is boot attempt failed 1Ah WORD bootstrap entry point (real/protected mode) or 0000h 1Ch WORD reserved (0) 1Eh WORD Static Resource Information offset (real/prot mode) or 0000h should be used only by non-PnP devices to make them PnP-aware (see below) Bitfields for Plug-and-Play device indicator flags: Bit(s) Description (Table 0042) 7 supports Device Driver Initialization model 6 may be shadowed in RAM 5 may be read cached 4 only required if device used for booting 3 reserved (0) 2 device is Initial Program Load (IPL, i.e. boot) device 1 device is Input device 0 device is Display device (Table 0043) Values for Plug-and-Play device type code: Type Subtype Description 00h --- reserved 01h --- mass storage 00h SCSI controller 01h IDE controller 02h floppy controller (NEC 765-compatible) 03h IPI controller 80h other 02h --- network interface controller 00h Ethernet 01h Token Ring 02h FDDI 80h other 03h --- display controller 00h VGA 01h SuperVGA 02h XGA 80h other 04h --- multi-media controller 00h video 01h audio 80h other 05h --- memory 00h RAM 01h Flash memory 80h other 06h --- bridge controller 00h host processor bridge 01h ISA bridge 02h EISA bridge 03h MicroChannel bridge 04h PCI bridge 05h PCMCIA bridge 80h other 07h --- communications device 00h XT-compatible RS-232 01h AT-compatible parallel port 80h other 08h --- system peripherals 00h 8259-compatible Programmable Interrupt Controller 01h 8237-compatible DMA Controller 02h 8254-compatible system timer 03h real-time clock 80h other 09h --- input device 00h keyboard controller 01h digitizer/pen 02h mouse 80h other 0Ah --- docking station 00h generic docking station 80h other 0Bh --- CPU 00h 386-based 01h 486-based 02h Pentium-based (Table 0044) Values for Plug-and-Play generic EISA device ID: PNP0xxx system devices PNP00xx interrupt controller PNP01xx timer PNP02xx DMA controller PNP03xx keyboard PNP04xx parallel port PNP05xx serial port PNP06xx disk controller PNP0700 floppy controller PNP0800 PC speaker PNP09xx display adapter PNP0Axx periperal bus PNP0B00 real-time clock PNP0Cxx BIOS/system board PNP0Exx PCMCIA controller chipset PNP0Fxx mouse PNP8xxx network adapter PNP9xxx modem PNPAxxx SCSI controller/proprietary CD-ROM controller PNPBxxx sound/video/multimedia (Table 0045) Values for data tags: 22h IRQ descriptor, no flags 23h IRQ descriptor, with flags 2Ah DMA descriptor 30h Dependent Function start 31h Dependent Function start, with priority byte 38h Dependent Function end 47h I/O port descriptor 4Bh fixed-location I/O port descriptor 78h "END_TAG" end of resource descriptors (Table 0046) Values Boot Connection Vector is called with: AX = which vectors to hook bit 2: connect as IPL (INT 13) bit 1: connect as primary video (INT 10) bit 0: connect as primary input (INT 09) ES:DI -> system BIOS PnP Installation Check Structure BX = Card Select Number for this card (ISA bus only) DX = read data port (ISA only) or FFFFh (Table 0047) Values Static Resource Information vector is called with: ES:DI -> buffer for device's static resource config info (at least 1024 bytes) Format of Plug-and-Play System Device Node: Offset Size Description (Table 0048) 00h WORD size of device node in bytes 02h BYTE device node number/handle 03h DWORD EISA product identifier 07h 3 BYTEs device type code 0Ah WORD attribute flags bits 15-9 reserved (0) bits 8-7: configurability 00 can only be statically configured for next boot 01 can be dynamically configured at runtime 10 reserved 11 can only be dynamically configured bit 6: removable device bit 5: docking station bit 4: capable of being primary IPL (boot) device bit 3: capable of being primary input device bit 2: capable of being primary output device bit 1: device is not configurable bit 0: device can not be disabled 0Ch var allocated resource configuration descriptors var possible resource configuration descriptors var compatible device identifiers --------------------------------------------- CALL xxxxh:xxxxh - QEMM Programming Interface (QPI) InstallCheck: see INT 67/AH=3Fh SeeAlso: INT 67/AH=3Fh --------------------------------------------- CALL xxxxh:xxxxh - QEXT.SYS Private API InstallCheck: see INT 15/AX=11DEh SeeAlso: INT 15/AX=11DEh --------------------------------------------- CALL xxxxh:xxxxh - Quarterdeck VIDRAM InstallCheck: see INT 2F/AX=D201h/BX=5649h SeeAlso: INT 2F/AX=D201h/BX=5649h --------------------------------------------- CALL xxxxh:xxxxh - SoundBlaster Speech Driver InstallCheck: see INT 2F/AX=FBFBh SeeAlso: INT 2F/AX=FBFBh --------------------------------------------- CALL xxxxh:xxxxh - Stacker InstallCheck: see INT 2F/AX=4A12h/CX=5354h SeeAlso: INT 2F/AX=4A12h/CX=5354h --------------------------------------------- CALL xxxxh:xxxxh - VESA Audio Interface Driver InstallCheck: see INT 10/AX=4F13h/BX=0002h SeeAlso: INT 10/AX=4F13h/BX=0002h --------------------------------------------- CALL xxxxh:xxxxh - Virtual Control Program Interface (VCPI) - Protected-Mode InstallCheck: see INT 67/AX=DE01h SeeAlso: INT 67/AX=DE01h --------------------------------------------- CALL xxxxh:xxxxh - WEB v4.02 - MODULE APIs InstallCheck: see INT 2F/AH=EEh SeeAlso: INT 2F/AH=EEh --------------------------------------------- --------------------------------------------- CALL xxxxh:xxxxh - InstallCheck: SeeAlso: --------------------------------------------- --------!---Admin---------------------------- Highest Table Number = 0048 --------!---FILELIST------------------------- Please redistribute all of the files comprising the interrupt list (listed at the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a quartet of archives named INTER45A through INTER45D (preferably the original authenticated PKZIP archives), and the utility programs in a fifth archive called INTER45E.ZIP This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown --------!---CONTACT_INFO--------------------- Internet: ralf@telerama.lm.com UUCP: {uunet,harvard}!telerama.lm.com!ralf FIDO: Ralf Brown 1:129/26.1 or post a message to me in the DR_DEBUG echo (I probably won't see it unless you address it to me) CIS: >INTERNET:ralf@telerama.lm.com