You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9449 lines
330 KiB
9449 lines
330 KiB
Interrupt List, part 12 of 18
|
|
Copyright (c) 1989-1999,2000 Ralf Brown
|
|
--------W-2F1600-----------------------------
|
|
INT 2F - MS Windows - WINDOWS ENHANCED MODE INSTALLATION CHECK
|
|
AX = 1600h
|
|
Return: AL = status
|
|
00h neither Windows 3.x enhanced mode nor Windows/386 2.x running
|
|
01h Windows/386 2.x running
|
|
80h XMS version 1 driver installed (neither Windows 3.x enhanced
|
|
mode nor Windows/386 2.x running) (obsolete--see note)
|
|
FFh Windows/386 2.x running
|
|
AL = anything else
|
|
AL = Windows major version number >= 3
|
|
AH = Windows minor version number
|
|
Notes: INT 2F/AH=16h comprises an API for non-Windows programs (DOS device
|
|
drivers, TSRs, and applications) to cooperate with multitasking
|
|
Windows/386 2.x and Windows 3.x and higher enhanced mode.
|
|
certain calls are also supported in the Microsoft 80286 DOS extender in
|
|
Windows standard mode
|
|
this function served as the installation check and AX=1610h served to
|
|
get the driver entry point for XMS version 1, which is now obsolete.
|
|
Use AX=4300h and AX=4310h instead
|
|
Windows95 reports version 4.00, Windows95B reports version 4.03
|
|
SeeAlso: AX=160Ah,AX=1610h,AX=4300h,AX=4680h
|
|
Index: installation check;XMS version 1
|
|
--------W-2F1602-----------------------------
|
|
INT 2F - MS Windows/386 2.x - GET API ENTRY POINT
|
|
AX = 1602h
|
|
Return: ES:DI -> Windows/386 2.x API procedure entry point
|
|
Notes: this interface is supported in Windows 3.x and Windows95 only for 2.x
|
|
compatibility
|
|
to get the current virtual machine (VM) ID in Windows/386 2.x:
|
|
AX = 0000h
|
|
ES:DI -> return address
|
|
JUMP to address returned from INT 2F/AX=1602h
|
|
After JUMP, at return address:
|
|
BX = current VM ID.
|
|
SeeAlso: AX=C020h
|
|
--------W-2F1603-----------------------------
|
|
INT 2F C - MS Windows/386 - GET INSTANCE DATA
|
|
AX = 1603h
|
|
Return: AX = 5248h ('RH') if supported
|
|
DS:SI -> Windows/386 instance data (see #02630)
|
|
Notes: reportedly supported by RM Nimbus MS-DOS 3.3 kernel
|
|
this function is called by DOSMGR when AX=1607h/BX=0015h is not
|
|
supported, as is the case in DOS versions prior to 5.0
|
|
see Geoff Chappell's book _DOS_Internals_ for additional discussions of
|
|
this function, DOSMGR's behavior, and instancing in general
|
|
SeeAlso: AX=1607h/BX=0015h
|
|
|
|
Format of Windows/386 instance data:
|
|
Offset Size Description (Table 02630)
|
|
00h WORD segment of IO.SYS (0000h = default 0070h)
|
|
02h WORD offset in IO.SYS of STACKS data structure (DOS 3.2x)
|
|
0000h if not applicable
|
|
04h WORD number of instance data entries (max 32)
|
|
06h Array of instance data entries
|
|
Offset Size Description
|
|
00h WORD segment (0002h = DOS kernel)
|
|
02h WORD offset
|
|
04h WORD size
|
|
--------W-2F1605-----------------------------
|
|
INT 2F C - MS Windows - WINDOWS ENHANCED MODE & 286 DOSX INIT BROADCAST
|
|
AX = 1605h
|
|
ES:BX = 0000h:0000h
|
|
DS:SI = 0000h:0000h
|
|
CX = 0000h
|
|
DX = flags
|
|
bit 0 = 0 if Windows enhanced-mode initialization
|
|
bit 0 = 1 if Microsoft 286 DOS extender initialization
|
|
bits 1-15 reserved (undefined)
|
|
DI = version number (major in upper byte, minor in lower)
|
|
Return: CX = 0000h if okay for Windows to load
|
|
CX = FFFFh (other registers unchanged) if Windows 3.0 in standard mode
|
|
CX <> 0 if Windows should not load
|
|
ES:BX -> startup info structure (see #02631)
|
|
DS:SI -> virtual86 mode enable/disable callback or 0000h:0000h
|
|
(see #02634)
|
|
Notes: the Windows enhanced mode loader and Microsoft 286 DOS extender will
|
|
broadcast an INT 2F/AX=1605h call when initializing. Any DOS device
|
|
driver or TSR can watch for this broadcast and return the appropriate
|
|
values. If the driver or TSR returns CX <> 0, it is also its
|
|
responsibility to display an error message (however, Windows95 is
|
|
reported to load regardless of the returned CX).
|
|
each handler must first chain to the prior INT 2F handler with
|
|
registers unchanged before processing the call
|
|
if the handler requires local data on a per-VM basis, it must store the
|
|
returned ES:BX in the "next" field of a startup info structure and
|
|
return a pointer to that structure in ES:BX
|
|
a single TSR may set the V86 mode enable/disable callback; if DS:SI is
|
|
already nonzero, the TSR must fail the initialization by setting CX
|
|
nonzero
|
|
MSD checks for Windows 3.0 running in standard mode by testing whether
|
|
CX=FFFFh and other registers are unchanged on return
|
|
Novell DOS v7.0 (Update 8 - Update 11) TASKMGR in multitasking mode
|
|
uses this broadcast, even if TASKMGR.INI sets WinPresent= to OFF
|
|
Microsoft's EMM386.EXE for DOS 5+ when installed with the NOEMS option
|
|
changes its driver name from EMMQXXX0 to EMMXXXX0 while Windows is
|
|
active
|
|
SeeAlso: AX=1606h,AX=1608h,AX=4B05h
|
|
|
|
Format of Windows Startup Information Structure:
|
|
Offset Size Description (Table 02631)
|
|
00h 2 BYTEs major, minor version of info structure
|
|
02h DWORD pointer to next startup info structure or 0000h:0000h
|
|
06h DWORD pointer to ASCIZ name of virtual device file or 0000h:0000h
|
|
0Ah DWORD virtual device reference data (see #02633)
|
|
(only used if above nonzero)
|
|
0Eh DWORD pointer to instance data records (see #02632) or 0000h:0000h
|
|
---structure version >= 4.0---
|
|
12h DWORD pointer to optionally-instanced data records (see #02632)
|
|
or 0000h:0000h
|
|
|
|
Format of one Instance Item in array:
|
|
Offset Size Description (Table 02632)
|
|
00h DWORD address of instance data (end of array if 0000h:0000h)
|
|
04h WORD size of instance data
|
|
SeeAlso: #02631
|
|
|
|
Format of Virtual Device Reference Data:
|
|
Offset Size Description (Table 02633)
|
|
00h DWORD physical address of ??? or 00000000h
|
|
04h DWORD physical address of ??? table
|
|
08h DWORD "DEST_PAGE" address to which pages must be mapped
|
|
0Ch N DWORDs "SRC_PAGE" physical addresses of the pages
|
|
00000000h = end of table
|
|
Note: EMM386.EXE sets the first pointer to the start of the device driver
|
|
chain, the second pointer to a field of 40h bytes followed by a
|
|
16-bit offset to the end of the SRC_PAGE table, and DEST_PAGE to
|
|
the start segment of the UMB area
|
|
SeeAlso: #02631
|
|
|
|
(Table 02634)
|
|
Values Windows virtual mode enable/disable procedure is called with:
|
|
AX = 0000h disable V86 mode
|
|
AX = 0001h enable V86 mode
|
|
interrupts disabled
|
|
Return: CF set on error
|
|
CF clear if successful
|
|
interrupts disabled
|
|
SeeAlso: #02631
|
|
--------W-2F1606-----------------------------
|
|
INT 2F C - MS Windows - WINDOWS ENHANCED MODE & 286 DOSX EXIT BROADCAST
|
|
AX = 1606h
|
|
DX = flags
|
|
bit 0 = 0 if Windows enhanced-mode exit
|
|
bit 0 = 1 if Microsoft 286 DOS extender exit
|
|
bits 1-15 reserved (undefined)
|
|
Notes: if the init broadcast fails (AX=1605h returned CX <> 0), then this
|
|
broadcast will be issued immediately.
|
|
this call will be issued in real mode
|
|
Novell DOS v7.0 (Update 8 - Update 15) TASKMGR in multitasking mode
|
|
uses this broadcast, even if TASKMGR.INI sets WinPresent= to OFF
|
|
SeeAlso: AX=1605h,AX=1609h
|
|
--------W-2F1607-----------------------------
|
|
INT 2F C - MS Windows - VIRTUAL DEVICE CALL OUT API
|
|
AX = 1607h
|
|
BX = virtual device ID (see #02642)
|
|
CX = (usually) callout subfunction
|
|
Return: (usually) AX,BX,CX,DX,ES contain results
|
|
Notes: more of a convention than an API, this call specifies a standard
|
|
mechanism for Windows enhanced-mode virtual devices (VxD's) to talk
|
|
to DOS device drivers and TSRs
|
|
see below for details on several virtual devices
|
|
SeeAlso: AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h,AX=1607h/BX=0015h
|
|
SeeAlso: AX=1607h/BX=0018h,AX=1684h"DEVICE API",AX=C020h
|
|
--------W-2F1607BX0006-----------------------
|
|
INT 2F C - MS Windows - "V86MMGR" VIRTUAL DEVICE API
|
|
AX = 1607h
|
|
BX = 0006h (VxD identifier of "V86MMGR")
|
|
CX = 0000h
|
|
Return: AX = status
|
|
0000h if local A20 state changed
|
|
1607h if A20 unchanged
|
|
other if global A20 state changed
|
|
SeeAlso: AX=1607h"CALL OUT API"
|
|
--------W-2F1607BX000C-----------------------
|
|
INT 2F C - MS Windows - "VMD" VIRTUAL MOUSE DEVICE API
|
|
AX = 1607h
|
|
BX = 000Ch (VxD identifier of "VMD")
|
|
Return: CX = nonzero if mouse driver already virtualized
|
|
Note: VMD (Virtual Mouse Driver) calls this and then checks whether CX is
|
|
nonzero; if yes, it will not automatically virtualize the mouse
|
|
driver. This would be used if MOUSE.COM already virtualizes
|
|
itself using the Windows API.
|
|
SeeAlso: AX=1607h/BX=0014h,AX=1607h/BX=0015h
|
|
--------W-2F1607BX000D-----------------------
|
|
INT 2F C - MS Windows95 - "VKD" VIRTUAL DEVICE - ??? CALLOUT
|
|
AX = 1607h
|
|
BX = 000Dh (VxD ID for VKD)
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1607h"CALL OUT API",#02642
|
|
--------W-2F1607BX0010-----------------------
|
|
INT 2F C - MS Windows 3.1 - "BLOCKDEV" VIRTUAL HARD DISK DEVICE API
|
|
AX = 1607h
|
|
BX = 0010h (VxD identifier of "BLOCKDEV")
|
|
CX = function
|
|
0001h starting FastDisk compatibility tests
|
|
0002h ending FastDisk compatibility tests
|
|
0003h check if FastDisk installation allowed
|
|
Return: CX = 0000h if allowed
|
|
Note: this interface is called by the Windows FastDisk driver (such as
|
|
WDCTRL) when it thinks that the INT 13h handler immediately below
|
|
IO.SYS's INT 13h code is not in ROM; it should be supported by any
|
|
program which hooks itself underneath IO.SYS's INT 13h code with
|
|
INT 2F/AH=13h
|
|
SeeAlso: AX=1607h/BX=0014h,INT 2F/AH=13h
|
|
--------W-2F1607BX0014-----------------------
|
|
INT 2F C - MS Windows - "VNETBIOS" VIRTUAL DEVICE API
|
|
AX = 1607h
|
|
BX = 0014h (VxD identifier of "VNETBIOS")
|
|
Return: ES:DI -> 128-byte table specifying VNETBIOS actions for each NetBIOS
|
|
command code (see #02635)
|
|
Note: VNETBIOS (Virtual NetBIOS) calls this function to determine whether
|
|
the NetBIOS has an extensions Windows should know about
|
|
SeeAlso: AX=1607h/BX=000Ch,AX=1607h/BX=0010h,AX=1607h/BX=0015h
|
|
|
|
(Table 02635)
|
|
Values for VNETBIOS action code:
|
|
00h "VN_Unknown" unknown command
|
|
04h "VN_No_Map" no memory mapping necessary
|
|
08h "VN_Map_In" input buffer is quickly used, so no global mapping needed
|
|
0Ch "VN_Map_In" output buffer is quickly used, so no global mapping needed
|
|
10h "VN_Map_In_Out" buffer is quickly used, so no global mapping needed
|
|
14h "VN_Chain_Send" the chain-send command
|
|
18h "VN_Cancel" special case for cancel command
|
|
1Ch "VN_Buffer_In" buffer is incoming
|
|
20h "VN_Buffer_Out" buffer is outgoing
|
|
24h "VN_Buffer_In_Out" buffer used for both incoming and outgoing data
|
|
--------D-2F1607BX0015-----------------------
|
|
INT 2F C - MS Windows - "DOSMGR" VIRTUAL DEVICE API
|
|
AX = 1607h
|
|
BX = 0015h (VxD identifier of "DOSMGR")
|
|
CX = function
|
|
0000h query instance processing
|
|
DX = 0000h
|
|
Return: CX = state
|
|
0000h not instanced
|
|
other instanced (DOS 5+ kernel returns 0001h)
|
|
DX = segment of DOS drivers or 0000h for
|
|
default of 0070h
|
|
ES:BX -> patch table (see #02637)
|
|
0001h set patches in DOS
|
|
DX = bit mask of patch requests (see #02636)
|
|
Return: AX = B97Ch
|
|
BX = bit mask of patches applied (see #02636)
|
|
DX = A2ABh
|
|
0002h remove patches in DOS (ignored by DOS 5.0 kernel)
|
|
DX = bit mask of patch requests (see #02636)
|
|
Return: CX = 0000h (DOS 5-6)
|
|
Note: return values are ignored by DOSMGR in Windows 3.1
|
|
0003h get size of DOS data structures
|
|
DX = bit mask of request (only one bit can be set)
|
|
bit 0: Current Directory Structure size
|
|
Return: if supported request:
|
|
AX = B97Ch
|
|
CX = size in bytes of requested structure
|
|
DX = A2ABh
|
|
else:
|
|
CX = 0000h
|
|
all other registers preserved
|
|
0004h determine instanced data structures
|
|
Return: AX = B97Ch if supported
|
|
DX = A2ABh if supported (DOS 5+ kernel returns 0000h)
|
|
BX = bit mask of instanced items
|
|
bit 0: CDS
|
|
bit 1: SFT
|
|
bit 2: device list
|
|
bit 3: DOS swappable data area
|
|
0005h get device driver size
|
|
ES = segment of device driver
|
|
Return: DX:AX = 0000h:0000h on error (not dev. driver segment)
|
|
DX:AX = A2ABh:B97Ch if successful
|
|
BX:CX = size of device driver in bytes
|
|
Notes: DOSMGR (DOS Manager) will check whether the OEM DOS/BIOS data has
|
|
been instanced via this API and will not perform its own default
|
|
instancing of the normal DOS/BIOS data if so; if this API is not
|
|
supported, DOSMGR will also try to access instancing data through
|
|
INT 2F/AX=1603h
|
|
these functions are supported by the DOS 5+ kernel; DOSMGR contains
|
|
tables of instancing information for earlier versions of DOS
|
|
see Geoff Chappell's book _DOS_Internals_ for additional discussions of
|
|
DOSMGR's behavior and instancing in general
|
|
SeeAlso: AX=1603h,AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h
|
|
SeeAlso: AX=1684h"DEVICE API"
|
|
|
|
Bitfields for DOSMGR patch requests:
|
|
Bit(s) Description (Table 02636)
|
|
0 enable critical sections
|
|
1 NOP setting/checking user ID
|
|
2 turn INT 21/AH=3Fh on STDIN into polling loop
|
|
3 trap stack fault in "SYSINIT" to WIN386
|
|
4 BIOS patch to trap "Insert disk X:" to WIN386
|
|
|
|
Format of DOSMGR patch table:
|
|
Offset Size Description (Table 02637)
|
|
00h 2 BYTEs DOS version (major, minor)
|
|
02h WORD offset in DOS data segment of "SAVEDS"
|
|
04h WORD offset in DOS data segment of "SAVEBX"
|
|
06h WORD offset in DOS data segment of InDOS flag
|
|
08h WORD offset in DOS data segment of User ID word
|
|
0Ah WORD offset in DOS data segment of "CritPatch" table to enable
|
|
critical section calls (see INT 2A/AH=80h)
|
|
0Ch WORD (DOS 5+ only) offset in DOS data segment of "UMB_HEAD",
|
|
containing segment of last MCB in conventional memory
|
|
--------W-2F1607BX0018-----------------------
|
|
INT 2F C - MS Windows - "VMPoll" VIRTUAL DEVICE - IDLE CALLOUT
|
|
AX = 1607h
|
|
BX = 0018h (VMPoll VxD ID) (see #02642)
|
|
CX = 0000h
|
|
Return: AX = status
|
|
0000h if timeslice used
|
|
nonzero if timeslice not needed
|
|
Note: when VMPoll makes this callout, all virtual machines are idle, and any
|
|
interested TSR can use the opportunity to perform background
|
|
processing
|
|
SeeAlso: AX=1607h"CALL OUT API",AX=1689h
|
|
--------W-2F1607BX0021--------------------------------------
|
|
INT 2F C - MS Windows - "PageFile" VIRTUAL DEVICE - GET LOCK BYTE
|
|
AX = 1607h
|
|
BX = 0021h (PageFile VxD ID)
|
|
CX = 0000h
|
|
Return: AX = status
|
|
0000h success
|
|
ES:DI -> cache lock byte in disk cacher
|
|
other no disk cache or unsupported
|
|
Notes: PageFile issues this call on real-mode initialization in order to allow
|
|
disk caches to provide it with a byte which it can use to temporarily
|
|
lock the disk cache; VMPOLL also issues this call, so it is made
|
|
twice each time Windows starts up
|
|
if this call fails, PageFile falls back to other techniques for locking
|
|
the disk cache
|
|
SeeAlso: AX=1607h"CALL OUT API"
|
|
--------W-2F1607BX002D-----------------------
|
|
INT 2F C - MS Windows - "W32S" VIRTUAL DEVICE - ??? CALLOUT
|
|
AX = 1607h
|
|
BX = 002Dh (VxD ID for W32S)
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1607h"CALL OUT API",#02642
|
|
--------W-2F1607BX0040-----------------------
|
|
INT 2F C - MS Windows - "IFSMgr" VIRTUAL DEVICE - ??? CALLOUT
|
|
AX = 1607h
|
|
BX = 0040h (VxD ID for IFSMgr)
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1607h"CALL OUT API",#02642
|
|
--------W-2F1607BX0446-----------------------
|
|
INT 2F C - MS Windows - "VADLIBD" VIRTUAL DEVICE - ??? CALLOUT
|
|
AX = 1607h
|
|
BX = 0446h (VxD ID for VADLIBD)
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1607h"CALL OUT API",#02642
|
|
--------W-2F1607BX0484-----------------------
|
|
INT 2F C - MS Windows - "IFSMgr" VIRTUAL DEVICE - ??? CALLOUT
|
|
AX = 1607h
|
|
BX = 0484h (VxD ID for IFSMgr)
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1607h"CALL OUT API",#02642
|
|
--------W-2F1607BX0487-----------------------
|
|
INT 2F C - MS Windows - "NWSUP" VIRTUAL DEVICE - ??? CALLOUT
|
|
AX = 1607h
|
|
BX = 0487h (VxD ID for NWSUP)
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1607h"CALL OUT API",#02642
|
|
--------E-2F1607BX22C0-----------------------
|
|
INT 2F C - Rational Systems DOS/4GW - ???
|
|
AX = 1607h
|
|
BX = 22C0h
|
|
???
|
|
Return: ???
|
|
SeeAlso: INT 15/AX=BF02h,INT 15/AX=BF04h,#02642
|
|
--------W-2F1607BX28A1-----------------------
|
|
INT 2F C - MS Windows - "PharLap" VIRTUAL DEVICE - ??? CALLOUT
|
|
AX = 1607h
|
|
BX = 28A1h (VxD ID for PharLap)
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1607h"CALL OUT API",#02642
|
|
--------W-2F1607BX7A5F-----------------------
|
|
INT 2F C - MS Windows - "SIWVID" VIRTUAL DEVICE - ??? CALLOUT
|
|
AX = 1607h
|
|
BX = 7A5Fh (VxD ID for SIWVID)
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1607h"CALL OUT API",#02642
|
|
--------W-2F1608-----------------------------
|
|
INT 2F C - MS Windows - WINDOWS ENHANCED MODE INIT COMPLETE BROADCAST
|
|
AX = 1608h
|
|
Notes: called after all installable devices have been initialized
|
|
real-mode software may be called between the Windows enhanced-mode init
|
|
call (AX=1605h) and this call; the software must detect this
|
|
situation
|
|
SeeAlso: AX=1605h,AX=1609h
|
|
--------W-2F1609-----------------------------
|
|
INT 2F C - MS Windows - WINDOWS ENHANCED MODE BEGIN EXIT BROADCAST
|
|
AX = 1609h
|
|
Note: called at the beginning of a normal exit sequence; not made in the
|
|
event of a fatal system crash
|
|
SeeAlso: AX=1606h,AX=1608h
|
|
--------W-2F160A-----------------------------
|
|
INT 2F - MS Windows 3.1 - IDENTIFY WINDOWS VERSION AND TYPE
|
|
AX = 160Ah
|
|
Return: AX = 0000h if call supported
|
|
BX = version (BH=major, BL=minor)
|
|
CX = mode (0002h = standard, 0003h = enhanced)
|
|
Note: Windows95 reports version 4.00, Windows95B reports version 4.03
|
|
SeeAlso: AX=1600h,AX=4680h
|
|
--------W-2F160B-----------------------------
|
|
INT 2F - MS Windows 3.1 - IDENTIFY TSRs
|
|
AX = 160Bh
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> TSR information structure (see #02638)
|
|
Desc: this call allows Windows-aware TSRs to make themselves known to
|
|
Windows.
|
|
Note: the TSR should first chain to the previous INT 2F handler, then
|
|
allocate a communication structure, place the returned ES:DI
|
|
pointer in the first field, and return a pointer to the new
|
|
structure
|
|
SeeAlso: AX=1605h,AX=160Ch,AX=4B01h,AX=4B05h
|
|
|
|
Format of TSR-to-Windows information structure:
|
|
Offset Size Description (Table 02638)
|
|
00h DWORD pointer to next structure
|
|
04h WORD PSP segment
|
|
06h WORD API version ID (0100h)
|
|
08h WORD EXEC flags (how to load command specified by "exec_cmd")
|
|
bit 0: "WINEXEC"
|
|
bit 1: "LOADLIBRARY"
|
|
bit 2: "OPENDRIVER"
|
|
0Ah WORD "exec_cmd_show" (see #02639)
|
|
0Ch DWORD "exec_cmd" pointer to command line to be executed
|
|
10h 4 BYTEs reserved (0)
|
|
14h DWORD pointer to TSR ID block (see #02640)
|
|
18h DWORD pointer to TSR data block or 0000h:0000h
|
|
|
|
(Table 02639)
|
|
Values for TSR information structure "exec_cmd_show":
|
|
00h HIDE
|
|
01h SHOWNORMAL
|
|
02h SHOWMINIMIZED
|
|
03h SHOWMAXIMIZED
|
|
04h SHOWNOACTIVE
|
|
05h SHOW
|
|
06h MINIMIZE
|
|
07h SHOWMINNOACTIVE
|
|
08h SHOWNA
|
|
09h RESTORE
|
|
Note: this value is passed as the second parameter to the WinExec(),
|
|
LoadLibrary(), or OpenDriver() call used to execute a requested
|
|
command line
|
|
SeeAlso: #02638
|
|
|
|
Format of Norton Utilities 6.0 TSR ID block:
|
|
Offset Size Description (Table 02640)
|
|
00h WORD length of name string
|
|
02h N BYTEs name of TSR's executable
|
|
SeeAlso: #02638
|
|
--------W-2F160C-----------------------------
|
|
INT 2F - MS Windows 3.1 - DETECT ROMs
|
|
AX = 160Ch
|
|
???
|
|
Return: ???
|
|
Note: used by ROM Windows; appears to be a NOP under standard Windows95 and
|
|
Windows95B
|
|
SeeAlso: AX=160Bh,INT 21/AH=6Dh"ROM"
|
|
--------D-2F160E-----------------------------
|
|
INT 2F U - MS-DOS 7 kernel - BOOT LOGO SUPPORT???
|
|
AX = 160Eh
|
|
BL = subfunction
|
|
00h get ???
|
|
AX = state of flag manipulated by subfn 04h and 05h
|
|
0000h clear
|
|
FFFFh set
|
|
DX = ??? (0000h)
|
|
01h link in INT 10h??? handlers
|
|
02h unlink INT 10h??? handlers
|
|
03h ???
|
|
04h set ??? flag
|
|
05h clear ??? flag
|
|
Return: AX = 0000h if supported
|
|
???
|
|
SeeAlso: AX=160Fh,AX=1611h,AX=1614h
|
|
--------D-2F160F-----------------------------
|
|
INT 2F U - MS-DOS 7 kernel - GET/SET ??? HANDLER
|
|
AX = 160Fh
|
|
BL = subfunction
|
|
00h get ??? handler
|
|
Return: AX = 0000h if supported
|
|
CX:DX -> handler to which control is passed after
|
|
??? executes
|
|
= 160Fh inside a Windows 95B DOS box
|
|
01h set ??? handler
|
|
CX:DX -> new handler for ???
|
|
Return: AX = 0000h if supported
|
|
Notes: this function is not supported if ??? in the IO.SYS drivers portion of
|
|
the kernel is an IRET instruction (as is the case on my system)
|
|
rather than a FAR JMP
|
|
the indicated handler seems to be related to INT 10 processing
|
|
SeeAlso: AX=160Eh,AX=1611h,AX=1614h
|
|
--------m-2F1610-----------------------------
|
|
INT 2F - XMS v1.x only - GET DRIVER ADDRESS
|
|
AX = 1610h
|
|
details unavailable
|
|
Note: this function and AX=1600h were only used in XMS version 1 and are now
|
|
obsolete. Use AX=4300h and AX=4310h instead
|
|
SeeAlso: AX=1600h,AX=4310h
|
|
--------D-2F1611-----------------------------
|
|
INT 2F U - MS-DOS 7 kernel - GET SHELL PARAMETERS
|
|
AX = 1611h
|
|
Return: AX = 0000h if supported
|
|
DS:DX -> primary shell's executable name
|
|
DS:SI -> prinary shell command line (counted string)
|
|
BH = ??? (00h)
|
|
BL = ??? (00h,40h)
|
|
Desc: return the program name and commandline from the CONFIG.SYS SHELL=
|
|
statement
|
|
SeeAlso: AX=160Eh,AX=160Fh,AX=1612h,AX=4A33h
|
|
--------D-2F1612-----------------------------
|
|
INT 2F U - MS-DOS 7 kernel - GET ???
|
|
AX = 1612h
|
|
Return: AX = 0000h if supported
|
|
ES:BX -> DOS 7 kernel data (see #02641)
|
|
Note: called by VTD.VXD; one of the returned data items is a pointer to the
|
|
WORD in which the default CLOCK$ driver maintains its count of days
|
|
since 01jan1980
|
|
SeeAlso: AX=160Fh,AX=1611h,AX=1613h
|
|
|
|
Format of MS-DOS 7.x ??? kernel data:
|
|
Offset Size Description (Table 02641)
|
|
00h WORD structure revision??? (0001h)
|
|
02h DWORD -> ??? function (call with DS=high word of this field)
|
|
the indicated function vectors through the INT 13 hook at
|
|
0070h:00B4h and then forces the A20 gate open
|
|
06h DWORD -> ??? function
|
|
0Ah WORD DOS DS
|
|
0Ch 8 BYTEs zeros seen
|
|
14h DWORD -> ??? data
|
|
18h DWORD -> ??? data
|
|
???
|
|
--------D-2F1613-----------------------------
|
|
INT 2F - MS-DOS 7 kernel - GET SYSTEM.DAT (REGISTRY FILE) PATHNAME
|
|
AX = 1613h
|
|
ES:DI -> buffer for full ASCIZ pathname to Windows95 SYSTEM.DAT
|
|
CX = buffer size in bytes
|
|
Return: AX = 0000h if supported
|
|
ES:DI buffer filled
|
|
CX = number of bytes copied into buffer
|
|
SeeAlso: AX=160Eh,AX=1611h,AX=1612h,AX=1614h,AX=1690h
|
|
--------D-2F1614-----------------------------
|
|
INT 2F U - MS-DOS 7 kernel - SET SYSTEM.DAT (REGISTRY FILE) PATHNAME
|
|
AX = 1614h
|
|
ES:DI -> ASCIZ pathname to Windows95 SYSTEM.DAT
|
|
Return: AX = status
|
|
0000h if successful
|
|
1614h not supported
|
|
other: maximum length of pathname (004Eh for v4.00.950)
|
|
SeeAlso: AX=160Eh,AX=1611h,AX=1613h,AX=1690h
|
|
----------2F1615-----------------------------
|
|
INT 2F - Windows95 - SAVE32.COM - INSTALLATION CHECK
|
|
AX = 1615h
|
|
Return: AX = 0000h if installed
|
|
BX = segment of resident code
|
|
Program: SAVE32.COM is a TSR included in the Windows95 distribution which
|
|
preserves the contents of 32-bit registers across invocations of
|
|
all of the hardware interrupt handlers (which, for some older BIOSes
|
|
and TSRs, do not properly preserve the high words of the 32-bit
|
|
registers)
|
|
--------W-2F1680-----------------------------
|
|
INT 2F - MS Windows, DPMI, various - RELEASE CURRENT VIRTUAL MACHINE TIME-SLICE
|
|
AX = 1680h
|
|
Return: AL = status
|
|
00h if the call is supported
|
|
80h (unchanged) if the call is not supported
|
|
Notes: programs can use this function in idle loops to enhance performance
|
|
under multitaskers; this call is supported by MS Windows 3+, DOS 5+,
|
|
DPMI 1.0+, and in OS/2 2.0+ for multitasking DOS applications
|
|
does not block the program; it just gives up the remainder of the time
|
|
slice
|
|
should not be used by Windows-specific programs
|
|
when called very often without intermediate screen output under
|
|
MS Windows 3.x, the VM will go into an idle-state and will not
|
|
receive the next slice before 8 seconds have elapsed. This time can
|
|
be changed in SYSTEM.INI through "IdleVMWakeUpTime=<seconds>".
|
|
Setting it to zero results in a long wait.
|
|
this function has no effect under OS/2 2.10-4.0 if the DOS box has an
|
|
"Idle Sensitivity" setting of 100
|
|
SeeAlso: AX=1689h,INT 15/AX=1000h,INT 15/AX=5305h,INT 21/AH=89h,INT 7A/BX=000Ah
|
|
--------W-2F1681-----------------------------
|
|
INT 2F - MS Windows 3+ - BEGIN CRITICAL SECTION
|
|
AX = 1681h
|
|
Notes: used to prevent a task switch from occurring
|
|
should be followed by an INT 2F/AX=1682h call as soon as possible
|
|
nested calls are allowed, and must be followed by an appropriate number
|
|
of "end critical section" calls
|
|
not supported in Windows/386 2.x. Get INDOS flag with INT 21/AH=34h and
|
|
increment by hand.
|
|
SeeAlso: AX=1682h,INT 15/AX=101Bh,INT 21/AH=34h
|
|
--------W-2F1682-----------------------------
|
|
INT 2F - MS Windows 3+ - END CRITICAL SECTION
|
|
AX = 1682h
|
|
Notes: not supported in Windows/386 2.x. Get InDOS flag with INT 21/AH=34h
|
|
and decrement by hand, taking care not to decrement InDOS flag
|
|
through zero
|
|
SeeAlso: AX=1681h,INT 15/AX=101Ch,INT 21/AH=34h
|
|
--------W-2F1683-----------------------------
|
|
INT 2F - MS Windows 3+ - GET CURRENT VIRTUAL MACHINE ID
|
|
AX = 1683h
|
|
Return: BX = current virtual machine (VM) ID
|
|
Notes: Windows itself currently runs in VM 1, but this can't be relied upon
|
|
VM IDs are reused when VMs are destroyed
|
|
an ID of 0 will never be returned
|
|
SeeAlso: AX=1684h"DEVICE API",AX=1685h,AX=168Bh
|
|
--------W-2F1684-----------------------------
|
|
INT 2F - MS Windows - GET DEVICE API ENTRY POINT
|
|
AX = 1684h
|
|
BX = virtual device (VxD) ID (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
|
|
Note: some Windows enhanced-mode virtual devices provide services that
|
|
applications can access. For example, the Virtual Display Device
|
|
(VDD) provides an API used in turn by WINOLDAP.
|
|
SeeAlso: AX=1684h/BX=0001h,AX=1684h/BX=0015h,AX=1683h,AX=4011h,INT 20"Windows"
|
|
|
|
(Table 02642)
|
|
Values for MS Windows VxD ID:
|
|
Value Name CallOut V86 PM Description
|
|
0000h ACT200L ? ? ? IrDA Infrared ActiSys framer VxD
|
|
0000h ACT220L ? ? ? IrDA Infrared ActiSys 220 framer VxD
|
|
0000h ADAPTEC ? ? ? IrDA Infrared Adaptec framer VxD
|
|
0000h AM1500T ? N N (Win95)
|
|
0000h ATI ? N N (Win95) ATI display driver
|
|
0000h ATIPPCAP ? N Y ATI Rage128-based video card
|
|
0000h CDFS ? N N
|
|
0000h CDTSD ? N N (Win95) CD-ROM Type-Specific Driver
|
|
0000h CE2NDIS3 ? N N (W4Wg)
|
|
0000h CENDIS ? N N (W4Wg)
|
|
0000h CHIPS ? N N (Win95) Chips&Tech display driver
|
|
0000h CIRRUS ? N N (Win95) Cirrus display driver
|
|
0000h CTNDW ? N N (W4Wg)
|
|
0000h CTVSD ? N N (Win95) CD-ROM Vendor-Specific Driver
|
|
0000h CM2NDIS3 ? N N (W4Wg)
|
|
0000h COMBUFF ? N N (Win95)
|
|
0000h COMPAQ ? N N (Win95) Compaq display driver
|
|
0000h CPQNDIS3 ? N N (W4Wg)
|
|
0000h CRYSTAL ? ? ? IrDA Infrared Crystal framer VxD
|
|
0000h CWCENUM ? N N (Win95SR2???)
|
|
0000h CWCSPUD3 ? N N (Win95SR2???)
|
|
0000h DBKVSSD ? N N (Win95) Databook PCMCIA socket services???
|
|
0000h DDOM95 ? N N
|
|
0000h DECLAN ? N N (W4Wg)
|
|
0000h DiskTSD ? N N (Win95) hard-disk Type-Specific Driver
|
|
0000h DiskVSD ? N N (Win95) hard-disk Vendor-Specific Driver
|
|
0000h DMICTVXD ? N N
|
|
0000h DMMDVDX ? N N Diamond MaximumDVD
|
|
0000h DRVSPACX ? N N (Win95)
|
|
0000h E30N3 ? N N (W4Wg)
|
|
0000h E31N3 N N (W4Wg)
|
|
0000h EE16 N N (W4Wg)
|
|
0000h EISA N N (Win95)
|
|
0000h EL59X N N (Win95)
|
|
0000h ELNK16 N N (W4Wg)
|
|
0000h ELNK3 N N (Win95)
|
|
0000h ELNKII N N (W4Wg)
|
|
0000h ELNKMC N N (W4Wg)
|
|
0000h ELPC3 N N (W4Wg)
|
|
0000h ENABLE2 N N (Win95)
|
|
0000h ENABLE4 N N (Win95)
|
|
0000h EPRO N N (Win95)
|
|
0000h ES1488V N N (Win95)
|
|
0000h ES1688V N N (Win95)
|
|
0000h ES488V N N (Win95)
|
|
0000h ES688V N N (Win95)
|
|
0000h ESI ? ? IrDA Infrared ESI framer VxD
|
|
0000h FILEMON N N DOS386 File Monitor
|
|
0000h FLS1MTD N N (Win95) flash-memory driver???
|
|
0000h FLS2MTD N N (Win95) flash-memory driver???
|
|
0000h HPEISA N N (W4Wg)
|
|
0000h HPFEND N N (W4Wg)
|
|
0000h HPISA N N (W4Wg)
|
|
0000h HPMCA N N (W4Wg)
|
|
0000h HSFLOP N N
|
|
0000h IBMTOK N N (W4Wg)
|
|
0000h IBMTOK4 N N (Win95)
|
|
0000h IRCOMM ? ? IrDA Infrared Virtual COM/LPT driver
|
|
0000h IRLAMPEX ? ? IrDA Infrared Protocol VxD
|
|
0000h IRLAPFRM ? ? IrDA Infrared Virtual COM/LPT frame driver
|
|
0000h IRMATRAK N N (W4Wg)
|
|
0000h JAVASUP N N Internet Explorer JAVA support
|
|
0000h KEYREMAP N N (Windows95 PowerToys) shift-key remapper
|
|
0000h LPT N N N (Win4Workgroups 3.11) DOS386 LPT Device
|
|
0000h LPTENUM ? N N
|
|
0000h MONVSD ? ? ?
|
|
0000h MGA ? N N (Win95) Matrox MGA display driver
|
|
0000h MSMINI ? N N (Win95)
|
|
0000h MSODISUP N N N (Win4Workgroups 3.11) MS ODI Support
|
|
0000h mvpas ? N N (Win95) Pro Audio Spectrum driver
|
|
0000h NECATAPI ? N N (Win95)
|
|
0000h NICE ? N N (Win95)
|
|
0000h NTI4CDR ? Y Y NTI CD-R/CD-RW
|
|
0000h NV3 ? N N (Win95SR2)
|
|
0000h NWNBLINK N N N (Win4Workgroups 3.11) Netware NetBIOS
|
|
0000h OAK N N (Win95) Oak Tech display driver
|
|
0000h OCTK32 N N (W4Wg)
|
|
0000h OTCETH N N (W4Wg)
|
|
0000h PARALINK N N (Win95)
|
|
0000h PARALLAX ? ? IrDA Infrared Parallax framer VxD
|
|
0000h PCNTN3 N N (W4Wg)
|
|
0000h PE3NDIS N N (W4Wg)
|
|
0000h PPM N N (Win95)
|
|
0000h PROTEON N N (W4Wg)
|
|
0000h QEMMFix N N
|
|
0000h QIC117 N N (Win95) QIC-117 floppy-ctrl tape drive
|
|
0000h QPI N N QEMM Programming Interface (see INT 67/AH=3Fh)
|
|
0000h RMM N N Real-Mode Mapper for hw with real-mode drivers
|
|
0000h S3 N N (Win95) S3 display driver
|
|
0000h S3INFO N N
|
|
0000h S3MINI N N S3 display driver
|
|
0000h SAGE N N (Plus!) System Agent
|
|
0000h sage N N (Plus! for Win95) System Agent
|
|
0000h scsi1hlp N N (Win95)
|
|
0000h SERENUM N N
|
|
0000h SERIAL N N N (Win4Workgroups 3.11) DOS386 Serial Device
|
|
0000h SERWAVE ? N N
|
|
0000h SETP3 ? N N (Win95) Silicon Ethernet Pocket Adapter
|
|
0000h SLMSDENM ? Y Y
|
|
0000h SMARTVSD ? N N (EZ-SMART???)
|
|
0000h SMC8000W ? N N (W4Wg)
|
|
0000h SMC80PC ? N N (W4Wg)
|
|
0000h SMC8100W ? N N (W4Wg)
|
|
0000h SMC8232W ? N N (W4Wg)
|
|
0000h SMC9000 ? N N (W4Wg)
|
|
0000h SNIP ? N N (W4Wg)
|
|
0000h SOCKET ? N N (W4Wg)
|
|
0000h SOCKETSV ? N N (Win95)
|
|
0000h SPAP ? Y Y (Win95)
|
|
0000h SPENDIS ? N N (Win95)
|
|
0000h SRAMMTD ? N N (Win95) flash-memory driver???
|
|
0000h STLTH64 ? N N Diamond Stealth64 driver
|
|
0000h STLTHMON ? N N
|
|
0000h T20N3 ? N N (W4Wg)
|
|
0000h T30N3 ? N N (W4Wg)
|
|
0000h TCTOK ? N N (W4Wg)
|
|
0000h TSENG ? N N (Win95) Tseng Labs display driver
|
|
0000h UBNEI ? N N (W4Wg)
|
|
0000h UNIMODEM ? ? ? (Win95) Universal Modem Driver
|
|
0000h VDEF ? N N (Win95)
|
|
0000h VGATEWAY ? N Y (Win95) dialin gateway
|
|
0000h VIDEO7 ? N N (Win95) Video7 display driver
|
|
0000h VRomD ? N N (Win95)
|
|
0000h VStDspcD ? ? ? Quarterdeck Stealth D*Space
|
|
0000h VXDMON ? ? ?
|
|
0000h WD ? N N (Win95)
|
|
0000h WINTOP ? N N (Windows95 Power Toys)
|
|
0000h WSHTCP ? N N
|
|
0000h XGA ? N N (Win95) XGA display driver
|
|
0001h VMM ? N N Virtual Machine Manager
|
|
0001h VMM ? Y Y Windows95 Virtual Machine Manager
|
|
0002h Debug ? ? ?
|
|
0003h VPICD ? Y Y Virtual Prog. Interrupt Controller (PIC) Device
|
|
0004h VDMAD ? N N Virtual Direct Memory Access (DMA) Device
|
|
0005h VTD ? Y Y Virtual Timer Device
|
|
0006h V86MMGR Y N N (Windows3.x) Virtual 8086 Mode Device
|
|
0006h V86MMGR ? N Y (Win95) Virtual 8068 Mode Device
|
|
0007h PageSwap ? N N Paging Device
|
|
0008h Parity ? N N Parity-check trapper
|
|
0009h Reboot ? N Y Ctrl-Alt-Del handler
|
|
000Ah VDD ? N Y Virtual Display Device (GRABBER)
|
|
000Bh VSD ? N N Virtual Sound Device
|
|
000Ch VMD Y Y Y Virtual Mouse Device
|
|
000Dh VKD ? N Y Virtual Keyboard Device
|
|
000Eh VCD ? N Y Virtual COMM Device
|
|
000Fh VPD ? N Y Virtual Printer Device
|
|
0010h VHD ? ? ? Virtual Hard Disk Device (Windows 3.0)
|
|
0010h BLOCKDEV Y N N Virtual Hard Disk Device (Windows 3.1)
|
|
0010h IOS N N N (Win4Workgroups 3.11) DOS386 IOS Device
|
|
0010h IOS ? Y Y Windows95 I/O Supervisor
|
|
0011h VMCPD ? Y Y (Windows3.x) Virtual Math CoProcessor Device
|
|
0011h VMCPD ? N Y (Win95) Virtual Math CoProcessor Device
|
|
0012h EBIOS ? N N Reserve EBIOS page (e.g., on PS/2)
|
|
0013h BIOSXLAT ? N N Map ROM BIOS API between prot & V86 mode
|
|
0014h VNETBIOS Y N N Virtual NetBIOS Device
|
|
0015h DOSMGR Y Y N DOS data instancing (see #02656)
|
|
0016h WINLOAD ? ? ?
|
|
0017h SHELL ? N Y (Windows3)
|
|
0017h SHELL ? Y Y (Win95)
|
|
0018h VMPOLL Y N N
|
|
0019h VPROD ? ? ?
|
|
001Ah DOSNET ? N N assures network integrity across VMs
|
|
001Ah VNETWARE ? Y Y Novell NetWare DOSNET replacement
|
|
001Bh VFD ? N N Virtual Floppy Device
|
|
001Ch VDD2 ? ? ? Secondary display adapter
|
|
001Ch LoadHi ? N N Netroom LoadHi Device (RMLODHI.VXD)
|
|
001Ch LoadHi ? N N 386MAX LoadHi Device (386MAX.VXD)
|
|
001Ch LoadHi ? N N Win386 LoadHi Device (EMM386.EXE)
|
|
001Dh WINDEBUG ? N Y
|
|
001Dh TDDebug ? N Y
|
|
001Eh TSRLoad ? ? ? TSR instance utility
|
|
001Fh BiosHook ? ? ? BIOS interrupt hooker VxD
|
|
0020h Int13 N N N
|
|
0021h PageFile Y N Y Paging File device
|
|
0022h SCSI ? ? ?
|
|
0022h APIX ? N Y (Win95)
|
|
0023h MCA_POS ? ? ? Microchannel Programmable Option Select
|
|
0024h SCSIFD ? ? ? SCSI FastDisk device
|
|
0025h VPEND ? ? ? Pen device
|
|
0026h APM ? ? ? Advanced Power Management
|
|
0026h VPOWERD ? Y Y (Win95) power management
|
|
0027h VXDLDR N Y Y (Win4Wg 3.11/Win95) VXD Loader
|
|
0028h NDIS N Y Y (Win4Wg 3.11) Network Driver Interface Spec
|
|
0029h ???
|
|
002Ah VWIN32 ? N Y (Win95)
|
|
002Bh VCOMM N Y Y (Win4Workgroups 3.11) DOS386 VCOMM Device
|
|
002Ch SPOOLER ? N N Windows95 print spooler
|
|
002Dh W32S Y N Y WIN32s 32-bit extension to Windows API
|
|
002Eh ???
|
|
002Fh ???
|
|
0030h MACH32 N N Y ATI Mach32 video card
|
|
0031h NETBEUI N N N (Win4Workgroups 3.11) NETBEUI
|
|
0032h SERVER N Y Y (Win4Workgroups 3.11) Int21 File Server
|
|
0032h VSERVER ? N Y (Win95) Int21 File Server
|
|
0033h CONFIGMG ? Y Y (Win95)
|
|
0033h EDOS ? N N Windows DOS Box Enhancer by Mom's Software
|
|
0034h DWCFGMG.SYS ? Y ? DOS Plug-and-Play configuration manager
|
|
0035h SCSIPORT ? N N (Win95) virtualized access to SCSI adapter
|
|
0036h VFBACKUP ? Y Y (Win95)
|
|
0037h ENABLE ? Y Y (Win95)
|
|
0038h VCOND ? Y Y (Win95)
|
|
0039h ???
|
|
003Ah VPMTD N N Y (Win4Workgroups 3.11) IFAX Scheduler Device
|
|
003Bh DSVXD ? Y N DoubleSpace VxD from MS-DOS v6.x
|
|
003Ch ISAPNP ? N N (Win95)
|
|
003Dh BIOS ? Y Y (Win95)
|
|
003Eh WSOCK ? Y Y (Win95) WinSock
|
|
003Fh WSIPX ? N N (Win95) IPX WinSock
|
|
0040h IFSMGR ? N N (Win95)
|
|
0041h VCDFSD ? N N (Win95) CD-ROM File System Driver (MSCDEX)
|
|
0042h MRCI2 ? N N (Win95) DriveSpace3
|
|
0043h PCI ? N N (Win95)
|
|
0048h PERF ? N N (Win95)
|
|
004Ah MTRR ? N N (Win95SR2) PPro/P-II MTRR enumerator???
|
|
004Bh NTKERN ? N Y (Win95SR2)
|
|
0051h ISAPNP ? N N (Win95) ISA Plug-and-Play manager
|
|
008Dh ESDI_506 ? N N (Win95) MFM/RLL/ESDI disk driver
|
|
0090h voltrack ? N N (Win95) Volume Tracker
|
|
00FDh FAKEIDE ? N N (Chicago)
|
|
0102h CV1 ? N N Microsoft C/C++ 7.00+ CodeView for Windows
|
|
011Fh VFLATD ? N Y (Win95)
|
|
0200h VIPX ? Y Y NetWare Virtual IPX Driver
|
|
0200h VTEMPD ? ? ? dummy template driver by Ray Patch
|
|
0201h VNWLSERV ? N N NetWare Lite 1.1 Server (SERVER.EXE)
|
|
0202h WINICE ? Y Y SoftICE/W
|
|
0202h SICE ? Y Y
|
|
0203h VCLIENT ? N Y NetWare Lite 1.1+ Client
|
|
0205h VCAFT ? N N Novell Virtual CAFT Driver (LANalyzer for Win)
|
|
0205h BCW ? Y Y Nu-Mega Bounds Checker for Windows
|
|
0206h VTXRX ? N N Novell Virtual TXRX Driver (LANalyzer for Win)
|
|
0207h DPMS N Y N Novell DOS Protected Mode Services
|
|
0234h VCOMMUTE ? Y Y PC Tools Commute
|
|
0442h VTDAPI ? N Y MMSys Win386 VTAPI Device
|
|
0443h ???
|
|
0444h VADMAD ? ? ? Autoinitialize DMA (Windows 3.0)
|
|
0445h VSBD ? Y Y WinResKit: Sound Blaster Device
|
|
0446h VADLIBD Y Y Y MMSys Win386 AdLib Device (v3.x)
|
|
0447h ???
|
|
0448h SETULTRA ? ? ? Gravis UltraSound setup
|
|
0449h vjoyd ? N Y (Win95) joystick
|
|
044Ah mmdevldr ? Y Y (Win95)
|
|
044Bh ???
|
|
044Ch msmpu401 ? N N (Win95) MPU-401 MIDI driver
|
|
044Ch cwdmidi ? Y Y (Crystal???) MIDI driver
|
|
044Dh msopl ? N N (Win95) OPL-3 (SoundBlaster FM) driver
|
|
044Eh mssblst ? N N (Win95) SoundBlaster MIDI driver
|
|
045Dh VflatD ? N Y dva.386, part of WIN32s
|
|
045Eh ???
|
|
045Fh mssndsys ? ? ? Microsoft Sound System audio driver
|
|
045Fh azt16 ? Y Y Aztech Sound Galaxy 16 audio driver
|
|
0460h UNIMODEM ? N Y Universal Modem driver
|
|
0480h VNetSup N Y Y (Win4Workgrps 3.11) Virtual Network Support
|
|
0481h VRedir N N N (Win4Workgroups 3.11) Redirector File System
|
|
0481h VREDIR ? N N (Win95) Redirector File System driver
|
|
0482h VBrowse ? Y Y Win386 Virtual Browser
|
|
0482h SNAPVXD ? Y Y (Win95)
|
|
0483h VSHARE ? N N (Win4Workgroups) Virtual SHARE
|
|
0483h VSHARE ? Y Y (Win95) Virtual SHARE
|
|
0484h IFSMgr Y N Y (Win4Wg 3.11) Installable File System Manager
|
|
0485h ??? ???
|
|
0486h VFAT N Y Y (Win4Workgroups 3.11) Win386 HPFS Driver
|
|
0487h NWLINK ? Y Y Win386 Virtual Packet Exchange Protocol
|
|
0487h NWSUP Y N N NetWare Vnetbios shim
|
|
0488h VTDI ? N N (Win95)
|
|
0489h VIP ? Y N (Win95)
|
|
0489h FTCVIP ? Y Y Frontier Technologies' VIP
|
|
048Ah VTCP ? Y ?
|
|
048Ah MSTCP ? Y N (Win95) TCP stack
|
|
048Ah FTCTDI ? Y Y Future Technologies' TCP stack
|
|
048Bh VCache N Y Y (Win4Workgroups 3.11) Virtual File Cache
|
|
048Bh VCACHE ? Y Y (Win95) disk cache
|
|
048Ch ??? ???
|
|
048Dh RASMAC ? Y Y enhanced mode Win4Workgroups RASMAC device
|
|
048Eh NWREDIR ? Y Y (Win95)
|
|
048Fh ??? ???
|
|
0490h ??? ???
|
|
0491h FILESEC ? ? ? (Win95) File Access Control Manager
|
|
0492h NWSERVER ? ? ? (Win95)
|
|
0493h SECPROV ? ? ? (Win95) Security Provider
|
|
0494h NSCL ? Y Y (Win95)
|
|
0495h AFVXD ? N N (Win95)
|
|
0496h NDIS2SUP ? ? ? (W4Wg???) NDIS2 networking support
|
|
0497h MSODISUP ? N N (W4Wg???)
|
|
0498h Splitter ? N N (Win95)
|
|
0499h PPPMAC ? Y Y (Win95)
|
|
049Ah VDHCP ? Y Y (Win95)
|
|
049Bh VNBT ? Y Y (Win95) NetBIOS-over-TCP/IP driver
|
|
049Ch ???
|
|
049Dh LOGGER ? ? ? (Win95)
|
|
04A2h IRLAMP ? ? ? IrDA Infrared Enumerator VxD
|
|
097Ch PCCARD ? N Y (Win95) (see INT 20/VxD=097Ch)
|
|
1020h VCV ? ? ? Microsoft C/C++ 7.00 CodeView
|
|
1021h VMB ? Y Y Microsoft C/C++ 7.00 WXSRVR
|
|
1022h Vpfd ? Y Y Microsoft C/C++ 7.00
|
|
1025h MMD ? Y Y Microsoft C/C++ 8.00, Visual C/C++ 1.00
|
|
2020h PIPE ? Y Y by Thomas W. Olson, in Windows/DOS DevJrn 5/92
|
|
21EAh VADLIBWD ? N Y Adlib Waveform Driver by John Ridges
|
|
2200h VFINTD ? Y Y Norton VFINTD (Norton Desktop)
|
|
22C0h ??? Y Rational Systems DOS/4GW ???
|
|
2402h ZMAX ? N N Qualitas 386MAX v7 DOSMAX handler
|
|
24A0h VNSS ? N Y Norton Screen Saver (Norton Desktop)
|
|
24A1h VNDWD ? Y Y Norton VNDWD Device (Norton Desktop)
|
|
24A2h SYMEvent ? Y Y Norton Utilities v8
|
|
2540h VILD ? Y N INTERLNK client from MS-DOS v6.x
|
|
2640h VASBID ? N Y WinResKit: Artisoft Sounding Board Device
|
|
2860h COMMTASK N N Y Windows 386-mode preemptive tasker by James
|
|
A. Kenemuth of Interabang Computing
|
|
28A0h PHARLAPX ? Y ? PharLap inter-VM communications DLL
|
|
28A1h PharLap Y Y Y PharLap 386|DOS-Extender DOSXNT.386
|
|
28C0h VXD N Y Y Generic VxD for real and protected mode by
|
|
Andrew Schulman in MSJ February 1993
|
|
28C1h PUSHKEYS ? ? ? VKD_Force_Keys device
|
|
28C2h VCR3D ? ? ? Virtual CR3, by A.Schulman in MSJ October 1992
|
|
2925h EDOS ? Y Y Enhanced DOS by Firefly Software
|
|
292Dh VSBPD ? Y Y Sound Blaster Pro
|
|
295Ah GRVSULTR ? Y Y Gravis UltraSound / UltraSound ACE
|
|
3048h FTCTCPIP ? N Y Frontier Technologies' TCP/IP stack
|
|
3049h ??? (called by FNFSC32.VXD, FrontierTech's VNFSD)
|
|
304Ch DWCFGMG.SYS ? Y Plug-and-Play configuration access
|
|
3098h VstlthD N N N for QEMM Stealth ROM mode
|
|
3099h VVidramD ? Y N for QEMM VIDRAM support
|
|
30F6h WSVV ? N Y (Win95) WinSock for Voice-View Modems???
|
|
310Eh WPS ? N Y MS DevNet CD-ROM: Windows Process Status
|
|
3110h VGSSD ? Y Y VSGLX16.386 for Aztech Sound Galaxy 16
|
|
313Bh PMC ? ? ? Power Management Coordinator
|
|
318Ah LMOUSE ? Y Y (Win95) Logitech mouse???
|
|
31CFh STAT.386 ? ? ? Ton Plooy's processor statistics VxD
|
|
3202h VdspD ? N N (Win95)
|
|
3203h vpasd ? N N (Win95) Pro Audio Spectrum driver
|
|
32A4h SBAWE ? Y Y (Win95) SoundBlaster AWE driver
|
|
32A5h VSB16 ? N N (Win95) SoundBlaster 16 driver
|
|
32CBh VFRAD ? Y Y Dr.Franz - Simultan's diagnotics VFRAD.386
|
|
32DCh NV3RM ? N Y (Win95SR2)
|
|
3354h Discover ? N Y (Nuts&Bolts) Discover
|
|
33AAh DECCORE ? Y Y (Win95) DEC Pathworks core VxD
|
|
33B4h DECLICL ? N N (Win95)
|
|
33F0h VIWD ? Y Y Gravis UltraSound Plug-n-Play Interwave v1.x
|
|
33FCh ASPIENUM ? N N (Win95)
|
|
34DCh MAGNARAM ? N Y Quarterdeck MagnaRAM (MAGNA31.VXD/MAGNA95.VXD)
|
|
357Eh DSOUND ? Y Y (Win95) DirectSound
|
|
3584h VSNDSYS ? Y Y (Win95SR2)
|
|
35C5h LUGEPS ? Y Y Lugaru's Epsilon editor
|
|
36AEh AIB-PC.386 ? Y Y Sunset Laboratory interface hardware driver
|
|
377Bh MX1501HAD ? ? ? Cherry keyboard chipcard reader
|
|
38BEh Vheapx ? N Y (Nuts&Bolts) Virtual Heap Expander
|
|
38C0h Bombshel ? N Y (Nuts&Bolts) Bombshelter
|
|
38DAh VIWD ? Y Y UltraSound PnP InterWave driver v2.0beta
|
|
39E6h A3D ? N N (Win95SR2)
|
|
3A39h CINEMSYS ? Y Y Software Cinemaster MPEG/DVD decoder
|
|
3BFCh CWCSPUD ? N N (Win95SR2)
|
|
3BFDh CWCPROXY ? N N (Win95SR2)
|
|
3BFEh CWCMMSYS ? N Y (Win95SR2)
|
|
3BFFh CWCDSND ? N N (Win95SR2)
|
|
3C46h X10MOUSE ? Y Y X10 RF wireless mouse
|
|
3C78h VGARTD ? N N (Win95SR2)
|
|
3E6Dh DDRAW ? Y Y DirectDraw
|
|
3ED6h ATIVVXXX ? N Y ATI Rage128-based video card
|
|
3EE5h WINTEL.VXD ? ? ? "WinTel" Windows remote-control program
|
|
(see also PORT 063Eh)
|
|
4321h POSTMSG ? Y Y (see #02712)
|
|
4321h VPCD ? N N PCache
|
|
4321h avvxp500 ? N N (Win95) VxP500 driver
|
|
6001h REGVXD ? Y Y Windows95 Registry Monitor helper
|
|
7A5Fh SIWVID Y Y Y Soft-ICE for Windows video driver
|
|
7FE0h VSWITCHD ? Y N by Jeff Prosise
|
|
7FE0h VWFD N Y Y reports windowed/fullscreen state; by Neil
|
|
Sandlin of Microsoft, shipped with ANSIPLUS
|
|
7FE1h VWATCHD N Y Y basic driver w/ no functionality except tracing
|
|
by Keith Jin of Microsoft PSS
|
|
7FE5h VFINTD N Y Y Virtual Floppy Interrupt trapper by Neil
|
|
Sandlin of Microsoft
|
|
7FE7h VMPAGES N Y Y demonstration of exporting VxD services, by
|
|
Neil Sandlin of Microsoft
|
|
7FE8h VPOSTD ? Y Y PostMessage() demo by Curtis J. Palmer of MS
|
|
7FE9h VIdleD N N N demonstration of Call_When_Idle function, by
|
|
Bernie McIlroy of Microsoft
|
|
7FEBh VMIOD N N N Virtual Monitor I/O Traffic Device, by Neil
|
|
Sandlin of Microsoft
|
|
7FEDh VMIRQD N N N Virtual Monitor IRQ Traffic Device, by Neil
|
|
Sandlin of Microsoft
|
|
8888h VbillD ? ? ? Bill Potvin II's for reversing Compaq LTE video
|
|
EEEEh VEPSD ? N N Virtual Extended Paging Services for
|
|
Borland C++ v4.0
|
|
Notes: The high bit of the VxD ID is reserved for future use. Originally,
|
|
the next 10 bits were the OEM number which was assigned by Microsoft,
|
|
and the low 5 bits were the device number. Currently, Microsoft
|
|
assigns VxD IDs individually for each driver; send blank email to
|
|
vxdid@microsoft.com for more information.
|
|
"CallOut"=Y indicates that the VxD uses the INT 2F/AX=1607h/BX=VxDID
|
|
device callout interface; "PM" and "V86" indicate whether the VxD
|
|
provides an API entry point in protected mode and Virtual-86 mode
|
|
(e.g. DOS boxes)
|
|
--------W-2F1684BX0001-----------------------
|
|
INT 2F - MS Windows95 - VMM - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0001h (virtual device ID for VMM) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02643)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02643)
|
|
Call Windows VMM 16-bit entry point with:
|
|
AX = function number
|
|
---registry functions---
|
|
0100h "RegOpenKey"
|
|
STACK: DWORD -> DWORD for returned key handle
|
|
DWORD -> ASCIZ registry key name
|
|
DWORD HKEY (see #02644)
|
|
0101h "RegCreateKey"
|
|
STACK: DWORD -> DWORD for returned key handle
|
|
DWORD -> ASCIZ registry key name
|
|
DWORD HKEY (see #02644)
|
|
0102h "RegCloseKey"
|
|
STACK: DWORD key handle from RegOpenKey or RegCreateKey
|
|
0103h "RegDeleteKey"
|
|
STACK: DWORD -> ASCIZ registry key name
|
|
DWORD HKEY (see #02644)
|
|
0104h "RegSetValue"
|
|
STACK: DWORD ???
|
|
DWORD -> ???
|
|
DWORD ???
|
|
DWORD -> ???
|
|
DWORD HKEY (see #02644)
|
|
0105h "RegQueryValue"
|
|
STACK: DWORD -> DWORD for ???
|
|
DWORD -> ASCIZ ???
|
|
DWORD -> ASCIZ ???
|
|
DWORD HKEY (see #02644)
|
|
0106h "RegEnumKey"
|
|
STACK: DWORD ???
|
|
DWORD -> ASCIZ ???
|
|
DWORD ???
|
|
DWORD HKEY (see #02644)
|
|
0107h "RegDeleteValue"
|
|
0108h "RegEnumValue"
|
|
STACK: DWORD -> DWORD for ???
|
|
DWORD -> BYTE ???
|
|
DWORD -> DWORD for ???
|
|
DWORD -> DWORD for ???
|
|
DWORD -> DWORD for ???
|
|
DWORD -> ASCIZ ???
|
|
DWORD ???
|
|
DWORD HKEY (see #02644)
|
|
0109h "RegQueryValueEx"
|
|
010Ah "RegSetValueEx"
|
|
010Bh "RegFlushKey"
|
|
010Ch "RegLoadKey"
|
|
010Dh "RegUnLoadKey"
|
|
010Eh "RegSaveKey"
|
|
010Fh "RegRestore"
|
|
0110h "RegRemapPreDefKey"
|
|
Return: parameters popped from stack
|
|
DX:AX = return value
|
|
|
|
(Table 02644)
|
|
Values for Windows95 VMM predefined HKEY values:
|
|
80000000h HKEY_CLASSES_ROOT
|
|
80000001h HKEY_CURRENT_USER
|
|
80000002h HKEY_LOCAL_MACHINE
|
|
80000003h HKEY_USERS
|
|
80000004h HKEY_PERFORMANCE_DATA
|
|
80000005h HKEY_CURRENT_CONFIG
|
|
80000006h HKEY_DYN_DATA
|
|
SeeAlso: #02643
|
|
--------W-2F1684BX0003-----------------------
|
|
INT 2F - MS Windows - VPICD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0003h (virtual device ID for VPICD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02645)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02645)
|
|
Call VPICD API entry point with:
|
|
EAX = function number
|
|
0000h get version
|
|
Return: AX = binary version (AH=major, AL=minor)
|
|
0001h virtualize timer???
|
|
0002h unvirtualize timer???
|
|
--------W-2F1684BX0005-----------------------
|
|
INT 2F - MS Windows - VTD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0005h (virtual device ID for VTD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02646)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02646)
|
|
Call VTD.386/VTD.VXD entry point with:
|
|
AX = function number
|
|
0000h get VTD version number
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
0100h get current clock tick time
|
|
Return: EDX:EAX = clock tick time in 840ns units since Windows
|
|
was started
|
|
0101h get current system time in milliseconds
|
|
Return: EAX = time in milliseconds that Windows has been
|
|
running
|
|
0102h get current virtual machine time
|
|
Return: EAX = cumulative amount of time the virtual machine has
|
|
been active, in milliseconds
|
|
Note: this entry point should only be called directly when TOOLHELP.DLL
|
|
TimerCount() cannot be called
|
|
SeeAlso: #01268,#01270,#01269 at INT 20"Windows"
|
|
--------W-2F1684BX0006-----------------------
|
|
INT 2F P - MS Windows95 - V86MMGR - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0006h (virtual device ID for V86MMGR device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02647)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02647)
|
|
Call V86MMGR entry point with:
|
|
EAX = function number
|
|
0000h get V86MMGR version
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
0001h get ???
|
|
Return: CF clear
|
|
EAX = status bits
|
|
bit 0: ???
|
|
bit 1: ???
|
|
bit 2: ???
|
|
bit 3: ???
|
|
bit 4: ???
|
|
else
|
|
Return: CF set
|
|
--------W-2F1684BX0009-----------------------
|
|
INT 2F P - MS Windows - REBOOT - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0009h (virtual device ID for REBOOT device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02648)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: INT 14/AH=17h"FOSSIL",INT 16/AX=E0FFh
|
|
|
|
(Table 02648)
|
|
Call REBOOT protected-mode entry point with:
|
|
AX = function
|
|
0100h warm boot
|
|
Return: never
|
|
Note: broadcasts "Reboot_Processor" message, which is caught
|
|
by the VKD device
|
|
0201h set KERNEL Ctrl-Alt-Del handler
|
|
ES:DI -> new Ctrl-Alt-Del handler
|
|
DS:SI -> KERNEL reboot sanity check byte
|
|
Return: CF clear
|
|
Notes: if an application installs its own handler and then
|
|
chains to Windows' handler, Windows will no longer
|
|
be able to detect hung applications, and will always
|
|
produce an "Application not responding" dialog
|
|
DS must contain a writable, fixed selector because
|
|
the provided address is converted to a linear address
|
|
before being stored
|
|
when Ctrl-Alt-Del is pressed in the system VM, Reboot
|
|
sets the sanity check byte to zero, schedules a
|
|
750ms wait, and then tests whether the check byte is
|
|
still zero; if not, it displays a message that there
|
|
is no hung application and then exits
|
|
0202h get KERNEL Ctrl-Alt-Del handler
|
|
Return: CF clear
|
|
ES:DI -> current Ctrl-Alt-Del handler
|
|
Note: the default handler is located in KERNEL
|
|
0203h display "Application not responding" dialog box
|
|
ES:DI -> ASCIZ name of hung application
|
|
Return: never if user pressed Ctrl-Alt-Del a second time
|
|
CF clear
|
|
AX = result
|
|
0000h user pressed Esc
|
|
0001h user pressed Enter
|
|
Note: this function is used by the default Windows
|
|
Ctrl-Alt-Del handler
|
|
0204h set/reset protected-mode INT 01 handler
|
|
CX:EDX -> new protected-mode INT 01 handler
|
|
CX = 0000h restore protected-mode INT 01 handler
|
|
Return: CF clear
|
|
Notes: if CX is nonzero, the current handler address is saved
|
|
internally before the new handler is set; this saved
|
|
address is then used when CX is zero on entry
|
|
used by Windows' default Ctrl-Alt-Del handler; actual
|
|
fatal exit to DOS will be done on next INT 01
|
|
Warning: opened files are not closed and remain open as
|
|
orphaned files in DOS
|
|
Note: functions 0201h and 0203h are not useful outside the system VM
|
|
SeeAlso: #01271,#01273
|
|
--------W-2F1684BX000A-----------------------
|
|
INT 2F P - MS Windows - VDD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 000Ah (virtual device ID for VDD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02649)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02649)
|
|
Call VDD entry point with:
|
|
EAX = function
|
|
0000h get VDD version
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
Note: also performs an internal initialization
|
|
0001h ???
|
|
Return: ECX = ???
|
|
???
|
|
0002h
|
|
0003h
|
|
0004h
|
|
0005h
|
|
0006h
|
|
0007h
|
|
0008h
|
|
0009h
|
|
0080h
|
|
0081h
|
|
0082h
|
|
0083h
|
|
0084h
|
|
0085h
|
|
0086h
|
|
0087h
|
|
0088h
|
|
0089h
|
|
else
|
|
Return: nothing
|
|
--------W-2F1684BX000C-----------------------
|
|
INT 2F - MS Windows - VMD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 000Ch (virtual device ID for VMD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02650)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02650)
|
|
Call VMOUSE entry point with:
|
|
EAX = function number
|
|
0000h get VMOUSE version
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
0001h
|
|
EBX = ???
|
|
ECX = ???
|
|
Return: CF clear if successful
|
|
CF set on error (e.g. fn 0003h not yet called)
|
|
0002h ??? (calls "test system VM handle")
|
|
Return: CF clear if successful (in system VM)
|
|
CF set on error
|
|
0003h ???
|
|
ECX = ???
|
|
DX = ???
|
|
Return: CF clear
|
|
0004h ???
|
|
Note: invokes Call_Priority_VM_Event
|
|
0005h get mouse port data
|
|
Return: CF clear
|
|
AL = ??? (04h)
|
|
AH = mouse IRQ interrupt number (IRQ4=0Ch,etc.)
|
|
CX = mouse I/O port address (e.g. 03F8h)
|
|
DX = COM port number??? (0001h for mouse on COM1)
|
|
0100h NOP???
|
|
Return: CF clear
|
|
0101h init???
|
|
Return: CF clear
|
|
Note: appears to be the same as fn 0005h, but returns no data
|
|
0102h unimplemented
|
|
Return: CF set
|
|
0103h check ???
|
|
Return: AX = status (0000h/0001h)
|
|
Note: checks flag set by fn 0003h
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02649,#02651
|
|
--------W-2F1684BX000D-----------------------
|
|
INT 2F P - MS Windows - VKD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 000Dh (virtual device ID for VKD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02651)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02651)
|
|
Call VKD entry point with:
|
|
EAX = function
|
|
0000h get VKD version
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
0001h ???
|
|
EBX = VM handle or 00000000h to use ??? VM handle
|
|
CH = ???
|
|
CL = ???
|
|
EDX = ??? or FFFFFFFFh
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02650,#02652
|
|
--------W-2F1684BX000E-----------------------
|
|
INT 2F P - MS Windows - VCD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 000Eh (virtual device ID for VCD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02652)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02652)
|
|
Call VCD entry point with:
|
|
EDX = function number
|
|
0000h get VCD version
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
0001h get ???
|
|
Return: CF clear
|
|
AX = bit mask of ???
|
|
0002h get ???
|
|
CX = COM port number
|
|
Return: CF clear
|
|
DX:AX -> ???
|
|
0003h set ???
|
|
CX = COM port number
|
|
DX:AX -> new ???
|
|
Return: CF clear
|
|
0004h acquire COM port
|
|
AX = ???
|
|
CX = COM port number
|
|
Return: CF clear
|
|
AX = ???
|
|
EBX = ???
|
|
DX = ???
|
|
0005h release COM port
|
|
CX = COM port number
|
|
Return: CF clear
|
|
0006h ???
|
|
Return: CF set
|
|
AL = 00h
|
|
else
|
|
Return: CF set
|
|
EAX = FFFFFFFFh
|
|
Note: these functions are apparently only available from the system VM,
|
|
returning CF set and EAX=FFFFFFFFh otherwise
|
|
SeeAlso: #02651,#02653
|
|
--------W-2F1684BX000F-----------------------
|
|
INT 2F P - MS Windows - VPD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 000Fh (virtual device ID for VPD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02653)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02653)
|
|
Call VPD entry point with:
|
|
EDX = function number
|
|
0000h get VPD version
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
DX = ??? (CB01h)
|
|
0001h get valid??? printers
|
|
Return: CF clear
|
|
AX = bitmask of ??? printers (bits 0-2)
|
|
0002h get ??? for printer
|
|
CX = printer port (0-2)
|
|
Return: CF clear if successful
|
|
BX:AX = ???
|
|
CF set on error (invalid port number)
|
|
0003h set ??? for printer
|
|
CX = printer port (0-2)
|
|
BX:AX = ???
|
|
Return: CF clear if successful
|
|
CF set on error (invalid port number)
|
|
0004h ???
|
|
CX = printer port (0-2)
|
|
EAX = VM handle
|
|
Return: CF clear if successful
|
|
CF set on error (invalid port number)
|
|
0005h ???
|
|
CX = printer port (0-2)
|
|
EAX = VM handle
|
|
Return: CF clear if successful
|
|
CF set on error (invalid port number or ???)
|
|
0006h-000Eh unused
|
|
Return: CF set
|
|
000Fh ???
|
|
CX = printer port (0-2)
|
|
AX = ???
|
|
Return: CF clear if successful
|
|
CF set on error (e.g. invalid port number)
|
|
0010h ???
|
|
CX = printer port (0-2)
|
|
Return: CF clear if successful
|
|
CF set on error (e.g. invalid port number)
|
|
0011h ???
|
|
CX = printer port (0-2)
|
|
Return: CF clear if successful
|
|
CF set on error (e.g. invalid port number)
|
|
0012h get port status
|
|
CX = printer port (0-2)
|
|
Return: CF clear if successful
|
|
AX = port status (see #P0658 at PORT 03BCh"LPT")
|
|
CF set on error (e.g. invalid port number)
|
|
else
|
|
Return: CF set
|
|
Note: these functions are apparently only available from the system VM,
|
|
returning CF set
|
|
SeeAlso: #02652,#02654
|
|
--------W-2F1684BX0010-----------------------
|
|
INT 2F - MS Windows - IOS - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0010h (virtual device ID for IOS device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02654)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02654)
|
|
Call IOS entry point with:
|
|
EAX = function number
|
|
0000h ???
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set on error
|
|
AX = FFFFh
|
|
0001h check if ???
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set on error
|
|
AX = FFFFh
|
|
0002h requestor services???
|
|
DL = service number???
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
DX = ???
|
|
CF set on error
|
|
AX = FFFFh
|
|
Note: calls "IOS_Requestor_Service" (see INT 20"Windows")
|
|
0003h ??? (copies five bytes of data internally)
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
EDX = ???
|
|
CF set on error
|
|
AX = FFFFh
|
|
else
|
|
Return: CF set
|
|
AX = FFFFh
|
|
SeeAlso: #02653,#02655
|
|
--------W-2F1684BX0011-----------------------
|
|
INT 2F - MS Windows - VMCPD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0011h (virtual device ID for VMCPD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02655)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02655)
|
|
Call Windows95 VMCPD protected-mode entry point with:
|
|
EAX = function number
|
|
0000h get VMCPD version
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
0001h get ??? flags
|
|
Return: CF clear
|
|
AX = ??? flags
|
|
bit 0: ???
|
|
bit 1: ???
|
|
bit 2: ???
|
|
bit 3: ???
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02654,#02656
|
|
--------W-2F1684BX0015-----------------------
|
|
INT 2F - MS Windows - DOSMGR - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0015h (virtual device ID for DOSMGR device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02656,#01282)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: #01282 at INT 20"Windows"
|
|
|
|
(Table 02656)
|
|
Call DOSMGR entry point with:
|
|
AX = 0000h get DOSMGR version
|
|
Return: CF clear
|
|
AX = version (AH = major, AL = minor)
|
|
AX = 0001h set critical focus
|
|
Return: CF clear
|
|
AX = 0002h crash current virtual machine
|
|
Return: never
|
|
Note: displays message box stating that "application has been
|
|
stopped by the DOSMGR device"
|
|
AX = 0003h enter critical section
|
|
Note: this function assumes that the code for INT 2A/AX=8001h
|
|
and INT 2A/AX=8002h have been modified for Windows
|
|
AX = 0004h get VM ID byte
|
|
Return: CF clear if successful
|
|
ES:DI -> VM ID byte
|
|
CF set on error
|
|
Note: this function fails if the INT 2A modifications have not
|
|
yet been applied
|
|
AX = 0005h inform Windows of possible media change
|
|
BL = drive number (00h=A:)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
SeeAlso: #01282 at INT 20"Windows",#02655,#02657
|
|
--------W-2F1684BX0017-----------------------
|
|
INT 2F U - MS Windows - SHELL - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0017h (virtual device ID for SHELL device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02657)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: AX=1684h/BX=0021h,#01283 at INT 20"Windows"
|
|
|
|
(Table 02657)
|
|
Call SHELL entry point with:
|
|
EDX = function number (0000h-0027h,0100h-0108h, mostly unknown)
|
|
0000h get version number
|
|
Return: AX = version number
|
|
EBX = system VM handle
|
|
0001h "SHELL_Get_SYSVM_Info" get system VM information
|
|
Return: CF clear
|
|
AX bit 0 set if system VM executing exclusively
|
|
BX = background time slice priority
|
|
CX = foreground time slice priority
|
|
SI = minimum time slice in milliseconds
|
|
0002h "SHELL_Set_SYSVM_Info" set system VM information
|
|
AX bit 0 set if system VM should execute exclusively (ignored?)
|
|
BX = background time slice priority (1-10000)
|
|
CX = foreground time slice priority (1-10000)
|
|
SI = minimum time slice in milliseconds (1-10000)
|
|
Return: CF clear if successful
|
|
0003h "SHELL_Crt_VM" create a virtual machine
|
|
ES:EDI -> SEB structure (see #02658)
|
|
Return: CF clear if successful
|
|
EAX = VM handle
|
|
CF set on error
|
|
EDX,EAX = result from GetSetDetailedVMError()
|
|
0004h "SHELL_Destroy_VM" destroy a virtual machine
|
|
EBX = VM handle (not system VM)
|
|
Return: nothing
|
|
0005h "SHELL_Set_Focus"
|
|
EBX = VM handle
|
|
ECX = ???
|
|
Return: nothing
|
|
0006h "SHELL_Get_VM_State"
|
|
EBX = VM handle (not system VM)
|
|
ES:EDI -> ??? structure
|
|
Return: CF clear if successful
|
|
0007h "SHELL_Set_VM_State"
|
|
EBX = VM handle (not system VM)
|
|
ES:EDI -> ??? structure
|
|
0008h "SHELL_Debug_Out"
|
|
???
|
|
Return: ???
|
|
Note: dummy function in retail version of MS Windows
|
|
0009h "SHELL_VMDA_Init"
|
|
???
|
|
Return: ???
|
|
000Ah "SHELL_VMDA_Exit"
|
|
???
|
|
Return: ???
|
|
000Bh "SHELL_Get_Message_Txt"
|
|
???
|
|
Return: ???
|
|
000Ch "SHELL_Event_Complete"
|
|
???
|
|
Return: ???
|
|
000Dh "SHELL_Get_Contention_Info"
|
|
???
|
|
Return: ???
|
|
000Eh "SHELL_Get_Clip_Info"
|
|
???
|
|
Return: ???
|
|
000Fh "SHELL_Set_Paste"
|
|
???
|
|
Return: ???
|
|
0010h "SHELL_Switcher_Assist"
|
|
???
|
|
Return: ???
|
|
0011h "SHELL_Get_FileSysChng"
|
|
???
|
|
Return: ???
|
|
0012h "SHELL_Query_Destroy"
|
|
???
|
|
Return: ???
|
|
0013h "SHELL_SetFocus_Cur_VM" set input focus to current VM
|
|
???
|
|
Return: ???
|
|
0014h "SHELL_User_Busy_API"
|
|
???
|
|
Return: ???
|
|
0015h "SHELL_Chng_Hot_Key"
|
|
???
|
|
Return: ???
|
|
0016h "SHELL_Get_TermInfo"
|
|
???
|
|
Return: ???
|
|
---Windows95---
|
|
0017h ???
|
|
0018h ???
|
|
0019h ???
|
|
001Ah ???
|
|
001Bh ???
|
|
001Ch ???
|
|
001Dh ???
|
|
001Eh ???
|
|
001Fh ???
|
|
0020h ???
|
|
0021h ???
|
|
0022h ???
|
|
0023h ???
|
|
0024h ???
|
|
0025h ???
|
|
0026h ???
|
|
Note: makes VxDCALL 00178002h (see INT 20"Windows")
|
|
0027h ???
|
|
0100h get ??? version
|
|
Return: AX = version??? (0400h for Windows95)
|
|
0101h not implemented
|
|
Return: CF set
|
|
EAX = FFFFFFFFh
|
|
0102h not implemented
|
|
Return: CF set
|
|
EAX = FFFFFFFFh
|
|
0103h not implemented
|
|
Return: CF set
|
|
EAX = FFFFFFFFh
|
|
0104h ???
|
|
0105h ???
|
|
0106h ???
|
|
???
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
0107h get SDK version for VxD
|
|
AX = VxD identifier
|
|
Return: EAX = VxD ID (high word) and SDK version (low)
|
|
00000000h if no such VxD loaded
|
|
Note: makes a VMMCALL 0001013Fh (see INT 20"Windows")
|
|
followed by ???
|
|
0108h ???
|
|
Return: CF set if called from VM other than system VM
|
|
EAX = FFFFFFFFh
|
|
Note: except for functions 0013h,0026h,and 010xh, this API may only be
|
|
called from the system VM
|
|
SeeAlso: #01283 at INT 20"Windows"
|
|
|
|
Format of Shell Execution Block (SEB):
|
|
Offset Size Description (Table 02658)
|
|
00h DWORD PIF flags (see #02659)
|
|
04h DWORD display flags (see #02660)
|
|
08h PWORD -> pathname of .EXE to run
|
|
0Eh PWORD -> argument list
|
|
14h PWORD -> working drive/directory
|
|
1Ah WORD desired number of V86 pages for virtual machine
|
|
1Ch WORD minimum number of V86 pages for VM
|
|
1Eh WORD foreground priority
|
|
20h WORD background priority
|
|
22h WORD maximum KB of EMS
|
|
24h WORD minimum KB of EMS
|
|
26h WORD maximum KB of XMS
|
|
28h WORD minimum KB of XMS
|
|
2Ah WORD maximum KB of DPMI???
|
|
2Ch WORD minimum KB of DPMI???
|
|
2Eh 128 BYTEs title
|
|
Note: the PWORDs at offsets 08h,0Eh, and 14h consist of a DWORD offset
|
|
followed by a WORD selector
|
|
|
|
Bitfields for 386 Enhanced Mode PIF flags:
|
|
Bit(s) Description (Table 02659)
|
|
0 exclusive use of processor when VM is fullscreen
|
|
1 VM runs in background
|
|
2 VM runs in window
|
|
3-4 ???
|
|
5 Alt-Tab reserved
|
|
6 Alt-Esc reserved
|
|
7 Alt-Space reserved
|
|
8 Alt-Enter reserved
|
|
9 Alt-PrtSc reserved
|
|
10 PrtSc reserved
|
|
11 Ctrl-Esc reserved
|
|
12 VM will release idle time slice
|
|
13 VM not allowed to use high memory
|
|
14 ???
|
|
15 VM expanded memory not pageable
|
|
16 VM extended memory not pageable
|
|
17 Fast paste from clipboard enabled
|
|
18 VM application memory not pageable
|
|
30 Close VM when application exits
|
|
SeeAlso: #02658,#02660
|
|
|
|
Bitfields for SHELL display options:
|
|
Bit(s) Description (Table 02660)
|
|
0 emulate text mode
|
|
1 monitor text port
|
|
2 monitor low graphics port
|
|
3 monitor high graphics port
|
|
7 Retain video memory
|
|
SeeAlso: #02658,#02659
|
|
--------W-2F1684BX001A-----------------------
|
|
INT 2F - MS Windows - VNETWARE - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 001Ah (virtual device ID for VNETWARE device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX001D-----------------------
|
|
INT 2F P - MS Windows - WINDEBUG - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 001Dh (virtual device ID for WINDEBUG device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0021-----------------------
|
|
INT 2F PU - MS Windows - PAGEFILE - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0021h (virtual device ID for PAGEFILE device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02661)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: AX=1684h/BX=0017h,#01289 at INT 20"Windows"
|
|
|
|
(Table 02661)
|
|
Call PAGEFILE entry point with:
|
|
AX = function
|
|
0000h get version
|
|
Return: CF clear
|
|
AX = version (AH = major, AL = minor)
|
|
0001h get swap file info
|
|
DS:SI -> 128-byte buffer for swap file full pathname
|
|
DS:DI -> 128-byte buffer for SPART.PAR full pathname
|
|
Return: CF clear
|
|
AL = pager type (see #02662)
|
|
AH = flags
|
|
bit 7: swap file corrupted
|
|
ECX = maximum size of swap file
|
|
DS:SI buffer filled if paging enabled
|
|
DS:DI buffer filled if permanent swap file
|
|
0002h delete permanent swap file on exit
|
|
Return: CF clear
|
|
0003h get current temporary swap file size
|
|
Return: CF clear
|
|
DX:AX = current swap file size in bytes
|
|
0000h:0000h if permanent swap file
|
|
Note: this API is only available in protected mode, and may only be called
|
|
from the system VM
|
|
SeeAlso: #01289 at INT 20"Windows",#02663
|
|
|
|
(Table 02662)
|
|
Values for MS Windows PAGEFILE pager type:
|
|
00h paging disabled
|
|
01h MSDOS
|
|
02h BIOS
|
|
03h 32-bit disk access
|
|
SeeAlso: #02661
|
|
--------W-2F1684BX0022-----------------------
|
|
INT 2F P - MS Windows - APIX - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0022h (virtual device ID for APIX device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02663)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02663)
|
|
Call APIX protected-mode entry point with:
|
|
AH = function number
|
|
00h get APIX version
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
01h ???
|
|
Return: CF clear
|
|
AX = number of ???
|
|
02h NOP
|
|
Return: CF clear
|
|
03h ???
|
|
Return: CF clear
|
|
AX = 0000h/FFFFh
|
|
else
|
|
Return: CF clear (bug?)
|
|
SeeAlso: #02661,#02666
|
|
--------W-2F1684BX0026-----------------------
|
|
INT 2F P - MS Windows - VPOWERD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0026h (virtual device ID for VPOWERD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02664)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02664)
|
|
Call VPOWERD.VXD entry point with:
|
|
AX = function number
|
|
0000h get VPOWERD version
|
|
Return: DX = 0000h
|
|
AX = version (AH = major, AL = minor)
|
|
0001h get APM BIOS version
|
|
Return: DX:AX = APM BIOS version
|
|
0002h get current power management level
|
|
Return: DX:AX = power management level
|
|
0003h enable/disable power management (see INT 15/AX=5308h)
|
|
??? = new state of power management
|
|
Return: DX:AX = 0000h:0000h if successful
|
|
else error code (see #02665)
|
|
0004h set power state (see INT 15/AX=5307h)
|
|
Return: DX:AX = 0000h:0000h if successful
|
|
else error code (see #02665)
|
|
0005h set system power status
|
|
Return: DX:AX = 0000h:0000h if successful
|
|
else error code (see #02665)
|
|
0006h restore APM power-on defaults (see INT 15/AX=5309h)
|
|
Return: DX:AX = 0000h:0000h if successful
|
|
else error code (see #02665)
|
|
0007h get power status (see INT 15/AX=530Ah)
|
|
Return: ???
|
|
0008h get APM 1.1 power state (see INT 15/AX=530Ch)
|
|
Return: ???
|
|
0009h invoke OEM APM function
|
|
??? -> buffer containing parameters for INT 15/AX=5380h
|
|
Return: DX:AX = 0000h:0000h or error code (see #02665)
|
|
buffer updated if successful
|
|
000Ah register power handler
|
|
???
|
|
Return: DX:AX = 0000h:0000h or error code
|
|
000Bh deregister power handler
|
|
???
|
|
Return: DX:AX = 0000h:0000h or error code (see #02665)
|
|
000Ch Win32 get system power status
|
|
000Dh Win32 set system power status
|
|
else
|
|
Return: DX = 0000h
|
|
AX = 00FFh
|
|
SeeAlso: #02663,#02666
|
|
|
|
(Table 02665)
|
|
Values for VPOWERD.VXD error code:
|
|
000000xxh APM error code
|
|
000000FFh function number out of range
|
|
80000001h ??? (service 05h)
|
|
80000002h ??? (service 0Dh)
|
|
80000003h specified NULL buffer pointer (service 07h,08h,09h)
|
|
80000005h ??? (service 03h)
|
|
80000006h ??? (service 04h)
|
|
80000007h ??? (service 05h)
|
|
80000008h ??? (service 05h)
|
|
80000009h out of memory (service 0Ah)
|
|
8000000Ah ??? (service 0Ah)
|
|
8000000Bh invalid power handler (service 0Bh)
|
|
8000000Ch unsupported/disabled??? function
|
|
SeeAlso: #02664,#01290
|
|
--------W-2F1684BX0027-----------------------
|
|
INT 2F - MS Windows95 - VXDLDR - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0027h (virtual device ID for VXDLDR device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02666)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02666)
|
|
Call VXDLDR entry point with:
|
|
EAX = function number
|
|
0000h get VXDLDR version
|
|
Return: CF clear
|
|
AX = 0000h (successful)
|
|
DH = major version
|
|
DL = minor version
|
|
0001h load device
|
|
DS(???):DX -> ASCIZ path name of dynamically-loadable VxD
|
|
(driver must reside in current directory or Windows
|
|
system directory???)
|
|
ES:DI = 0000h:0000h
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
ES:DI -> VxD API entry point
|
|
CF set on error
|
|
AX = error code (see #02667)
|
|
0002h unload device
|
|
EBX = device ID or FFFFFFFFh (Undefined_Device_ID)
|
|
---if EBX=FFFFFFFFh ---
|
|
(DS???):DX -> ASCIZ name of dynamically-loadable device
|
|
(case-sensitive)
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set on error
|
|
AX = error code (see #02667)
|
|
else
|
|
Return: CF set
|
|
AX = 000Bh
|
|
SeeAlso: #02664,#02668
|
|
|
|
(Table 02667)
|
|
Values for VXDLDR error code:
|
|
0000h successful
|
|
000Bh invalid function number
|
|
SeeAlso: #02666
|
|
--------W-2F1684BX0028-----------------------
|
|
INT 2F - MS Windows - NDIS - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0028h (virtual device ID for NDIS device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02668)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02668)
|
|
Call NDIS.VXD entry point with:
|
|
??? = function number
|
|
0000h set ??? to ???
|
|
??? = new ???
|
|
Return: DX:AX = 0000h:0001h
|
|
0002h ???
|
|
???
|
|
Return: DX:AX -> ???
|
|
0003h reset ??? to default
|
|
Return: DX:AX = 0000h:0001h
|
|
else
|
|
Return: DX:AX = 0000h:0000h
|
|
SeeAlso: #02666,#02669
|
|
--------W-2F1684BX002A-----------------------
|
|
INT 2F P - MS Windows - VWIN32 - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 002Ah (virtual device ID for VWIN32 device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02669)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02669)
|
|
Call VWIN32.VXD entry point with:
|
|
AH = function number
|
|
00h get VWIN32 version and ???
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
EDX = ???
|
|
01h ???
|
|
EBX = ???
|
|
ECX = ???
|
|
Return: CF clear
|
|
EAX = ???
|
|
02h ???
|
|
Return: CF clear
|
|
AX = ??? or 0000h
|
|
03h address allocation
|
|
DS:??? -> buffer containing/for page data
|
|
ECX = length of buffer
|
|
AL = subfunction
|
|
00h reserve page(s)
|
|
01h commit page(s)
|
|
02h decommit page(s)
|
|
03h free page(s)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Note: this function uses ECX bytes of stack
|
|
04h get ???
|
|
Return: CF clear
|
|
EAX = ???
|
|
05h ???
|
|
EBX = ???
|
|
Return: CF clear
|
|
EAX = ???
|
|
06h ???
|
|
EBX = ???
|
|
Return: CF clear
|
|
EAX = ???
|
|
07h ???
|
|
EBX = ???
|
|
Return: CF clear
|
|
EAX = ???
|
|
08h get ???
|
|
Return: CF clear
|
|
AX = ???
|
|
09h ???
|
|
EBX = ???
|
|
ECX = ???
|
|
Return: CF clear
|
|
0Ah ???
|
|
EBX = ???
|
|
Return: CF clear
|
|
0Bh ???
|
|
EBX = ???
|
|
Return: CF clear
|
|
0Ch ???
|
|
EBX = ???
|
|
ECX = ???
|
|
EDX = ???
|
|
???
|
|
Return: CF clear if successful
|
|
EAX = ???
|
|
CF set on error
|
|
0Dh clear ???
|
|
Return: CF clear
|
|
0Eh ???
|
|
EBX = ???
|
|
ECX = ???
|
|
Return: CF clear
|
|
0Fh ???
|
|
EBX = ???
|
|
ECX = ???
|
|
Return: CF clear
|
|
10h ???
|
|
Return: CF clear
|
|
Note: invokes VMMcall 00010184h
|
|
11h ???
|
|
Return: CF clear
|
|
Note: invokes VMMcall 00010160h
|
|
12h ???
|
|
???
|
|
13h pop up system error dialogue
|
|
Return: CF clear
|
|
AX = ??? or 0000h
|
|
14h "IFSMgr_GetConversionTablePtrs"
|
|
Return: CF clear
|
|
DX:AX -> ???
|
|
Note: invokes VxDcall 00400051h
|
|
15h "Boost_With_Decay"
|
|
EBX = ???
|
|
ECX = ???
|
|
EDX = ???
|
|
Return: CF clear
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02668,#02670
|
|
--------W-2F1684BX002B-----------------------
|
|
INT 2F - MS Windows - VCOMM - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 002Bh (virtual device ID for VCOMM device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02670)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02670)
|
|
Call VCOMM.VXD entry point with:
|
|
AX = function number
|
|
0000h open COM/LPT port
|
|
BX = port number (00h-7Fh = COMx, 80h-FFh = LPTx)
|
|
Return: DX:AX = handle???
|
|
0001h set comm state
|
|
???
|
|
Return: AX = ???
|
|
0002h setup comm port
|
|
???
|
|
Return: AX = status (0000h failed, FFFFh success)
|
|
0003h transmit character
|
|
EBX = handle???
|
|
CL = character to transmit
|
|
Return: AX = status???
|
|
0004h close comm port
|
|
EBX = handle???
|
|
Return: ???
|
|
0005h clear comm error
|
|
EBX = handle???
|
|
EAX = ???
|
|
Return: AX = status???
|
|
0006h "EscapeCommFunction"
|
|
EBX = handle???
|
|
CX = ???
|
|
EAX = ???
|
|
Return: DX:AX = ???
|
|
0007h purge buffers
|
|
EBX = handle???
|
|
CX = ???
|
|
Return: AX = status???
|
|
0008h set comm event mask
|
|
EBX = handle???
|
|
CX = new event mask
|
|
Return: AX = status???
|
|
0009h get comm event mask
|
|
EBX = handle???
|
|
Return: AX = current event mask
|
|
000Ah ???
|
|
EBX = handle???
|
|
Return: ???
|
|
000Bh "WriteComm"
|
|
EBX = handle???
|
|
CX = number of characters to write
|
|
ES???:BX -> buffer (if CX > 1)
|
|
SI??? low byte contains character if CX=1
|
|
Return: AX = status
|
|
EAX high word may be destroyed
|
|
000Ch "ReadComm"
|
|
EBX = handle???
|
|
CX = number of bytes to read
|
|
ES???:DI -> buffer
|
|
Return: AX = status ???
|
|
ZF = ???
|
|
000Dh set ??? callback
|
|
EBX = handle???
|
|
CX = ???
|
|
DX = ???
|
|
Return: AX = status???
|
|
else
|
|
Return: AX = 0000h
|
|
SeeAlso: #02669,#02671
|
|
--------W-2F1684BX002D-----------------------
|
|
INT 2F P - MS Windows - W32S - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 002Dh (virtual device ID for W32S device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0030-----------------------
|
|
INT 2F P - MS Windows - MACH32 - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0030h (virtual device ID for MACH32 device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0032-----------------------
|
|
INT 2F - MS Windows - SERVER / VSERVER - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0032h (virtual device ID for SERVER device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02671)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",#01296 at INT 20"Windows"
|
|
|
|
(Table 02671)
|
|
Call Windows95 VSERVER.VXD protected-mode entry point with:
|
|
AX = function number
|
|
0003h NOP
|
|
Return: AX = 0000h
|
|
0004h NOP
|
|
Return: AX = 0000h
|
|
0007h NOP
|
|
Return: AX = 0000h
|
|
0008h NOP
|
|
Return: nothing
|
|
000Fh ???
|
|
Return: AX = status
|
|
0000h successful
|
|
0842h on error
|
|
0010h ???
|
|
Return: AX = status
|
|
0000h successful
|
|
0842h on error
|
|
else
|
|
Return: AX = 0032h
|
|
SeeAlso: #02670,#02672
|
|
--------W-2F1684BX0033-----------------------
|
|
INT 2F - MS Windows - CONFIGMG - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0033h (virtual device ID for CONFIGMG device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02672)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02672)
|
|
Call CONFIGMG.VXD entry point with:
|
|
AX = function number
|
|
0000h get CONFIGMG version
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
...
|
|
005Ah
|
|
else
|
|
Return: CF set
|
|
AX = 0020h
|
|
SeeAlso: #01297 at INT 20"Windows",#02671,#02673
|
|
--------x-2F1684BX0034-----------------------
|
|
INT 2F - Intel Plug-and-Play - CONFIGURATION MANAGER - GET ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0034h (ID for Configuration Manager) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> API entry point (see #02673)
|
|
0000h:0000h if Configuration Manager not loaded
|
|
Note: this API is often provided by a DOS device driver, in which case it
|
|
is available whether or not MSWindows is running
|
|
Index: installation check;Plug-and-Play Configuration Manager
|
|
SeeAlso: AX=1684h/BX=304Ch
|
|
|
|
(Table 02673)
|
|
Call Configuration Manager entry point with:
|
|
AX = function
|
|
0000h "CM_GetVersion" get supported DDI version
|
|
Return: AH = BCD major version
|
|
AL = BCD minor version
|
|
BX = number of devices identified by configuration
|
|
Note: returns AX = 0000h if no config manager installed
|
|
0001h "CM_GetConfig" get device configuration
|
|
BX = device index
|
|
ES:DI -> buffer for configuration information (see #02675)
|
|
Return: AX = status
|
|
0000h successful
|
|
ES:DI buffer filled
|
|
other error code (0001h = index out of range)
|
|
0002h "CM_LockConfig" lock device configuration
|
|
ES:DI -> configuration information (see #02675)
|
|
Return: AX = status
|
|
0000h successful
|
|
ES:DI buffer filled with assigned config
|
|
0001h resources conflict
|
|
0002h invalid request or configuration info
|
|
0003h "CM_UnlockConfig" unlock device configuration
|
|
ES:DI -> configuration information (see #02675)
|
|
Return: AX = status
|
|
0000h successful
|
|
ES:DI buffer filled with assigned config
|
|
0001h invalid request or configuration info
|
|
0004h "CME_QueryResources" get hot-swappable resources
|
|
ES:DI -> configuration information (see #02675)
|
|
Return: AX = status (see #02674)
|
|
0005h "CME_AllocResources" remove resources from available pool
|
|
ES:DI -> configuration information (see #02675)
|
|
Return: AX = status (see #02674)
|
|
0006h "CME_DeallocResources" return resources to available pool
|
|
ES:DI -> configuration information (see #02675)
|
|
Return: AX = status (see #02674)
|
|
SeeAlso: #01298 at INT 20"Windows",#02672,#02676
|
|
|
|
(Table 02674)
|
|
Values for Configuration Manager status:
|
|
00h successful
|
|
01h device not found, configuration error
|
|
02h I/O port unavailable
|
|
04h IRQ unavailable
|
|
08h DMA channel unavailable
|
|
10h memory range unavailable
|
|
SeeAlso: #02673
|
|
|
|
Format of Configuration Information Structure:
|
|
Offset Size Description (Table 02675)
|
|
00h DWORD bus ID
|
|
04h DWORD device ID
|
|
08h DWORD serial number
|
|
0Ch DWORD logical ID
|
|
10h DWORD flags
|
|
---ISA bus---
|
|
14h BYTE Card Select Number
|
|
15h BYTE logical device number
|
|
16h WORD Read Data port
|
|
------
|
|
18h WORD number of memory windows
|
|
1Ah 9 DWORDs physical base addresses of memory windows
|
|
3Eh 9 DWORDs length of memory windows
|
|
62h 9 WORDs memory window attributes
|
|
74h WORD number of I/O ports
|
|
76h 20 WORDs I/O port base addresses
|
|
B6h 20 WORDs lengths of I/O port ranges
|
|
F6h WORD number of IRQs
|
|
F8h 7 BYTEs IRQ registers
|
|
FFh 7 BYTEs IRQ attributes
|
|
106h WORD number of DMA channels
|
|
108h 7 BYTEs DMA channels used
|
|
10Fh 7 WORDs DMA channel attributes
|
|
11Dh 3 BYTEs reserved
|
|
SeeAlso: #02673
|
|
--------W-2F1684BX0036-----------------------
|
|
INT 2F - MS Windows - VFBACKUP - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0036h (virtual device ID for VFBACKUP device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02676)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02676)
|
|
Call VFBACKUP.VXD entry point with:
|
|
nothing -- this API is a NOP for the default Windows95 VFBACKUP
|
|
SeeAlso: #02673,#01126
|
|
--------W-2F1684BX0037-----------------------
|
|
INT 2F - MS Windows - ENABLE.VXD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0037h (virtual device ID for ENABLE device) (see #02677)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02676)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02677)
|
|
Call Windows95 ENABLE.VXD entry point with:
|
|
AX = function number
|
|
0000h get ENABLE version
|
|
Return: CF clear
|
|
AX = version (AH = major, AL = minor)
|
|
0001h
|
|
EBX = ???
|
|
Return: ???
|
|
0002h get ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0003h get ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0004h ???
|
|
EBX = ???
|
|
ECX = ???
|
|
EDX = ???
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02676,#02678
|
|
--------W-2F1684BX0038-----------------------
|
|
INT 2F - MS Windows - VCOND - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0038h (virtual device ID for VCOND device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02678)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02678)
|
|
Call VCOND.VXD virtual-86 entry point with:
|
|
AX = function number
|
|
0202h
|
|
0203h
|
|
0204h
|
|
0205h
|
|
0206h
|
|
0207h
|
|
0208h
|
|
0209h
|
|
020Ah
|
|
020Bh
|
|
020Dh
|
|
020Eh
|
|
020Fh
|
|
0210h
|
|
0401h
|
|
0402h
|
|
0403h
|
|
0404h
|
|
0405h
|
|
else
|
|
NOP
|
|
SeeAlso: #02679,#02677
|
|
|
|
(Table 02679)
|
|
Call VCOND.VXD protected-mode entry point with:
|
|
AX = function number
|
|
0301h
|
|
0302h
|
|
0303h
|
|
0304h
|
|
0305h
|
|
0306h
|
|
0307h
|
|
0308h
|
|
else
|
|
NOP
|
|
SeeAlso: #02678,#02676
|
|
--------W-2F1684BX003B-----------------------
|
|
INT 2F - MS Windows - DSVXD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 003Bh (virtual device ID for DSVXD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX003D-----------------------
|
|
INT 2F - MS Windows - BIOS VxD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 003Dh (virtual device ID for BIOS device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02680)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02680)
|
|
Call BIOS.VXD entry point with:
|
|
AX = function number
|
|
0000h get BIOS.VXD version
|
|
Return: CF clear
|
|
AH = major version
|
|
AL = minor version
|
|
0100h ???
|
|
Return: AX = 0000h
|
|
Note: calls CONFIGMG services 804Eh/804Fh
|
|
0200h ???
|
|
Return: CF clear if successful
|
|
AX = ???
|
|
CF set on error
|
|
AX = error code???
|
|
Note: invokes VxDcall 00290002h
|
|
0300h ???
|
|
Return: CF clear if successful
|
|
AX = ???
|
|
CF set on error
|
|
AX = error code???
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02679,#02681
|
|
--------W-2F1684BX003E-----------------------
|
|
INT 2F - MS Windows - WSOCK - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 003Eh (virtual device ID for WSOCK device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX011F-----------------------
|
|
INT 2F P - MS Windows - VFLATD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 011Fh (virtual device ID for VFLATD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02681)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",AX=1684/BX=045Dh,INT 20"Windows"
|
|
|
|
(Table 02681)
|
|
Call VFLATD.VXD entry point with:
|
|
DL = function number
|
|
00h get VFLATD version and ???
|
|
Return: CF clear
|
|
EAX = version (AH = major, AL = minor)
|
|
EBX = ???
|
|
ECX = ???
|
|
EDX = ??? or 00000000h
|
|
01h ???
|
|
AX = ???
|
|
CX = ???
|
|
Return: EAX = ???
|
|
EDX = ???
|
|
02h ???
|
|
???
|
|
03h ???
|
|
EAX = ???
|
|
EBX = ???
|
|
ESI = ???
|
|
CX = ???
|
|
DH = ???
|
|
Return: EAX = ???
|
|
EDX = ???
|
|
CF clear
|
|
04h ???
|
|
DH = ???
|
|
EAX = ???
|
|
ECX = ???
|
|
Return: CF clear
|
|
EAX = ???
|
|
EDX = ???
|
|
05h ???
|
|
???
|
|
Note: locks some linear memory and calls fn 02h
|
|
06h ???
|
|
???
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Note: calls fn 02h and unlocks some linear memory
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02680
|
|
--------W-2F1684BX0200-----------------------
|
|
INT 2F - MS Windows - VIPX - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0200h (virtual device ID for VIPX device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0202-----------------------
|
|
INT 2F - MS Windows - WINICE - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0202h (virtual device ID for WINICE device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0203-----------------------
|
|
INT 2F P - MS Windows - VCLIENT - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0203h (virtual device ID for VCLIENT device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0205-----------------------
|
|
INT 2F - MS Windows - BCW - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0205h (virtual device ID for BCW device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0207-----------------------
|
|
INT 2F R - MS Windows - DPMS VxD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0207h (virtual device ID for DPMS device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0234-----------------------
|
|
INT 2F - MS Windows - VCOMMUTE - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0234h (virtual device ID for VCOMMUTE device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0442-----------------------
|
|
INT 2F P - MS Windows - VTDAPI - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0442h (virtual device ID for VTDAPI device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02682)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02682)
|
|
Call VTDAPI.VXD entry point with:
|
|
EAX = function number
|
|
0000h
|
|
0001h
|
|
0002h
|
|
0003h
|
|
0004h
|
|
0005h
|
|
0006h
|
|
0007h
|
|
0008h
|
|
0009h
|
|
000Ah
|
|
000Bh
|
|
else
|
|
Return: nothing???
|
|
SeeAlso: #02682
|
|
--------W-2F1684BX0444-----------------------
|
|
INT 2F - MS Windows - VADMAD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0444h (virtual device ID for VADMAD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02683)
|
|
0000h:0000h if the VxD does not support an API
|
|
|
|
(Table 02683)
|
|
Call VADMAD entry point with:
|
|
DX = operation
|
|
0000h set VADMAD mode
|
|
AX = desired mode
|
|
0001h set VADMAD channel
|
|
AX = desired channel
|
|
Note: after setting mode/channel, start the DMA operation with an OUT to
|
|
I/O port 0Bh (channels 0-3) or D6h (channels 4-7)
|
|
SeeAlso: #01268 at INT 20"Windows"
|
|
--------W-2F1684BX0445-----------------------
|
|
INT 2F - MS Windows - VSBD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0445h (virtual device ID for VSBD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0446-----------------------
|
|
INT 2F - MS Windows - VADLIBD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0446h (virtual device ID for VADLIBD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0449-----------------------
|
|
INT 2F P - MS Windows - vjoyd - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0449h (virtual device ID for "vjoyd" device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02684)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02684)
|
|
Call VJOYD.VXD entry point with:
|
|
AX = function number
|
|
0000h get VJOYD version
|
|
Return: AH = major version
|
|
AL = minor version
|
|
0001h ???
|
|
DX = ???
|
|
Return: DX:AX = ???
|
|
0002h ???
|
|
DX = ???
|
|
Return: DX:AX = ???
|
|
0003h ???
|
|
Retrun: AX = 0001h
|
|
0004h ???
|
|
DX = ???
|
|
Return: DX:AX = ???
|
|
0005h ???
|
|
Return: ???
|
|
else
|
|
Return: EAX = 00000000h
|
|
SeeAlso: #02682,#02685
|
|
--------W-2F1684BX044A-----------------------
|
|
INT 2F - MS Windows - mmdevldr - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 044Ah (virtual device ID for "mmdevldr" device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02685)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02685)
|
|
Call MMDEVLDR.VXD entry point with:
|
|
DX = function number
|
|
0000h ???
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set on error
|
|
AX = error code (000Bh)
|
|
Note: invokes VxDCall 17000Eh ("CallAtAppyTime")
|
|
0001h ???
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set on error
|
|
AX = error code (000Bh)
|
|
Note: invokes VxDCall 17000Eh ("CallAtAppyTime")
|
|
0002h ???
|
|
EDX = ???
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
EDX = ???
|
|
CF set on error
|
|
AX = error code
|
|
0003h ???
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set on error
|
|
AX = error code
|
|
Note: invokes VxDcall 2A0002h ("VWIN32_QueueUserApc")
|
|
0004h set Win32 event
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set on error
|
|
AX = error code
|
|
Note: invokes VxDcall 2A000Eh ("VWIN32_SetWin32Event")
|
|
0005h ??? (allocates some memory)
|
|
Return: CF clear
|
|
AX = 0000h
|
|
0006h ??? (frees memory)
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set on error
|
|
AX = error code
|
|
else
|
|
Return: CF set
|
|
AX = 000Bh (invalid function)
|
|
SeeAlso: #02684,#02686
|
|
--------W-2F1684BX045D-----------------------
|
|
INT 2F P - MS Windows - VflatD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 045Dh (virtual device ID for VflatD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",AX=1684h/BX=011Fh,INT 20"Windows"
|
|
--------W-2F1684BX045F-----------------------
|
|
INT 2F - MS Windows - azt16 - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 045Fh (virtual device ID for "azt16" device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02686)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h/BX=3110h,AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02686)
|
|
Call azt16.VXD entry point with:
|
|
DX = function number
|
|
0000h get azt16 version
|
|
Return: CF clear
|
|
AX = version (AH=major, AL=minor)
|
|
0001h ???
|
|
AX = subfunction
|
|
0000h ???
|
|
Return:
|
|
0001h ???
|
|
ECX = ???
|
|
else error
|
|
Return: CF clear if successful
|
|
???
|
|
CF set on error
|
|
AX = error code
|
|
0002h ???
|
|
AX = ???
|
|
BX = ???
|
|
Return: ???
|
|
0003h ???
|
|
AX = ???
|
|
BX = ???
|
|
Return: ???
|
|
0004h ???
|
|
BX = ???
|
|
CX = ???
|
|
Return: CF clear if successful
|
|
AX = 0001h
|
|
CF set on error
|
|
AX = 0000h
|
|
0005h ???
|
|
BX = ???
|
|
CX = ???
|
|
Return: CF clear if successful
|
|
AX = 0001h
|
|
CF set on error
|
|
AX = 0000h
|
|
0006h ???
|
|
BX = ???
|
|
ECX = ???
|
|
Return: CF clear if succesful
|
|
AX = ???
|
|
CF set on error
|
|
AX = FFFFh
|
|
0100h get azt16 version
|
|
Return: CF clear
|
|
AX = version (AH=major, AL=minor)
|
|
0101h
|
|
AX = ???
|
|
ECX = ???
|
|
Return: CF clear if successful
|
|
AX = 0001h
|
|
CF set on error
|
|
AX = 0000h
|
|
0102h ???
|
|
AX = ???
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = reason??? (0/1/2)
|
|
0103h ???
|
|
AX = ???
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set on error
|
|
AX = reason??? (1/3)
|
|
0200h ???
|
|
EDX = ???
|
|
???
|
|
Return: CF clear if successful
|
|
DX:AX = ???
|
|
CF set on error
|
|
DX:AX = 0000h:0000h
|
|
0201h ???
|
|
???
|
|
Return: CF clear
|
|
AX= 0000h
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02685,#02705
|
|
--------W-2F1684BX0460-----------------------
|
|
INT 2F P - MS Windows - UNIMODEM - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0460h (virtual device ID for UNIMODEM device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02687)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02687)
|
|
Call UNIMODEM.VXD protected-mode entry point with:
|
|
AX = function number
|
|
0000h
|
|
Return: AX = ???
|
|
0001h
|
|
Return: AX = ???
|
|
0002h
|
|
Return: AX = ???
|
|
0003h
|
|
Return: AX = ???
|
|
0004h
|
|
Return: AX = ???
|
|
0005h
|
|
Return: AX = ???
|
|
0006h
|
|
Return: AX = ???
|
|
0007h
|
|
Return: AX = ???
|
|
else
|
|
Return: AX = 0002h
|
|
SeeAlso: #02686,#02688
|
|
--------W-2F1684BX0480-----------------------
|
|
INT 2F - MS Windows - VNetSup - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0480h (virtual device ID for VNetSup device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02688)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02688)
|
|
Call VNetSup.VXD entry point with:
|
|
AX = function number
|
|
0000h
|
|
Return: AX = ???
|
|
0001h
|
|
Return: AX = ???
|
|
0002h
|
|
Return: AX = ???
|
|
else
|
|
Return: CF set
|
|
AX = 0001h
|
|
SeeAlso: #02687,#02689
|
|
--------W-2F1684BX0482-----------------------
|
|
INT 2F - MS Windows - VBrowse - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0482h (virtual device ID for VBrowse device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0483-----------------------
|
|
INT 2F - MS Windows - VSHARE - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0483h (virtual device ID for VSHARE device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02689)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02689)
|
|
Call Windows95 VSHARE.VXD entry point with:
|
|
AX = function number
|
|
0000h get VSHARE version
|
|
Return: AH = major version
|
|
AL = (BCD?) minor version
|
|
else
|
|
NOP
|
|
SeeAlso: #02688
|
|
--------W-2F1684BX0484-----------------------
|
|
INT 2F P - MS Windows - IFSMgr - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0484h (virtual device ID for IFSMgr device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0486-----------------------
|
|
INT 2F - MS Windows - VFAT - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0486h (virtual device ID for VFAT device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0487-----------------------
|
|
INT 2F - MS Windows - NWLINK - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0487h (virtual device ID for NWLINK device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX0489-----------------------
|
|
INT 2F R - MS Windows - VIP - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0489h (virtual device ID for VIP device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX048A-----------------------
|
|
INT 2F - MS Windows 3.11 - VXDLDR - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 048Ah (virtual device ID for VTCP device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX048A-----------------------
|
|
INT 2F - MS Windows - VCACHE - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 048Ah (virtual device ID for VCACHE device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02691)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02690)
|
|
Call Windows95 VCACHE.VXD entry point with:
|
|
Return: CF set
|
|
SeeAlso: #02689,#02691
|
|
--------W-2F1684BX048D-----------------------
|
|
INT 2F - MS Windows - RASMAC - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 048Dh (virtual device ID for RASMAC device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX048E-----------------------
|
|
INT 2F - MS Windows - NWREDIR - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 048Eh (virtual device ID for NWREDIR device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02691)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02691)
|
|
Call Windows95 NWREDIR.VXD entry point with:
|
|
Return: CF set
|
|
EAX = FFFFFFFFh
|
|
SeeAlso: #02690
|
|
--------W-2F1684BX0494-----------------------
|
|
INT 2F - MS Windows - NSCL - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0494h (virtual device ID for NSCL device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02692,#02693)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02692)
|
|
Call Windows95 NSCL.VXD virtual-86 entry point with:
|
|
AL = function number
|
|
00h
|
|
01h
|
|
02h
|
|
03h
|
|
04h
|
|
05h
|
|
06h
|
|
07h
|
|
08h
|
|
09h
|
|
0Ah
|
|
else
|
|
Return: AX = FFFFh
|
|
SeeAlso: #02691,#02692
|
|
|
|
(Table 02693)
|
|
Call Windows95 NSCL.VXD protected-mode entry point with:
|
|
AL = function number
|
|
00h
|
|
01h
|
|
02h
|
|
03h
|
|
else
|
|
Return: AX = FFFFh
|
|
SeeAlso: #02692
|
|
--------W-2F1684BX0499-----------------------
|
|
INT 2F - MS Windows - PPPMAC - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 0499h (virtual device ID for PPPMAC device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX049A-----------------------
|
|
INT 2F - MS Windows - VDHCP - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 049Ah (virtual device ID for VDHCP device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX049B-----------------------
|
|
INT 2F - MS Windows - VNBT - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 049Bh (virtual device ID for VNBT device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX1021-----------------------
|
|
INT 2F - MS Windows - VMB - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 1021h (virtual device ID for VMB device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX28A0-----------------------
|
|
INT 2F - MS Windows - PHARLAPX - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 28A0h (virtual device ID for PHARLAPX device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02694)
|
|
0000h:0000h if the VxD does not support an API
|
|
|
|
(Table 02694)
|
|
Call PHARLAPX VxD entry point with:
|
|
AX = function
|
|
0001h get PHARLAP.386 version
|
|
Return: AX = version number (AH = major, AL = minor)
|
|
---queue functions---
|
|
0101h allocate a new message queue
|
|
CX = size of queue data buffer in bytes
|
|
Return: DX:AX = handle for new queue, or 0000h:0000h on error
|
|
0102h allocate a new key queue
|
|
CX = size of queue data buffer in bytes
|
|
EDX = VM handle into which keys will be pasted
|
|
Return: DX:AX = handle for new queue, or 0000h:0000h on error
|
|
0103h free message queue
|
|
EDX = queue handle
|
|
Return: AX = status (0000h,0003h,0007h) (see #02695)
|
|
0104h free key queue
|
|
EDX = queue handle
|
|
Return: AX = status (0000h,0003h,0005h) (see #02695)
|
|
0105h add message to communications queue
|
|
EDX = queue handle
|
|
BX = length of message data in bytes
|
|
CX = length of message header in bytes
|
|
ES:(E)SI -> message header
|
|
GS:(E)DI -> message data
|
|
Return: AX = status (0000h-0003h,0007h) (see #02695)
|
|
0106h remove message from queue
|
|
EDX = queue handle
|
|
CX = length of buffer in bytes
|
|
ES:(E)SI -> buffer for message
|
|
Return: AX = status (0000h,0003h,0006h,0007h,0008h) (see #02695)
|
|
CX = length of returned message (if AX=0000h or 0008h)
|
|
0107h flush queue (remove all data)
|
|
EDX = queue handle
|
|
Return: AX = status (0000h,0003h) (see #02695)
|
|
0108h add PasteKey structure(s) to key queue
|
|
EDX = queue handle
|
|
CX = number of PasteKey structures in buffer
|
|
ES:(E)SI -> PasteKey array (see #02696)
|
|
Return: AX = status (0000h-0003h) (see #02695)
|
|
0109h register enqueueing callback function
|
|
EDX = queue handle
|
|
ECX = function argument
|
|
ES:(E)SI -> callback function
|
|
Return: AX = status (0000h,0003h,0009h) (see #02695)
|
|
010Ah register dequeueing callback function
|
|
EDX = queue handle
|
|
ECX = function argument
|
|
ES:(E)SI -> callback function
|
|
Return: AX = status (0000h,0003h,0009h) (see #02695)
|
|
010Bh unregister enqueueing callback function
|
|
EDX = queue handle
|
|
Return: AX = status (0000h,0003h,0009h) (see #02695)
|
|
010Ch unregister dequeueing callback function
|
|
EDX = queue handle
|
|
Return: AX = status (0000h,0003h,0009h) (see #02695)
|
|
010Dh get message queue status
|
|
EDX = queue handle
|
|
Return: AX = status (0000h,0003h) (see #02695)
|
|
CX = number of pending messages
|
|
010Eh peek at message in queue
|
|
EDX = queue handle
|
|
BX = number of message in queue (0000h = first)
|
|
CX = size of buffer in bytes
|
|
ES:(E)SI -> buffer for message
|
|
Return: AX = status (0000h,0003h,0006h,0008h) (see #02695)
|
|
CX = length of returned message (if AX=0000h or 0008h)
|
|
010Fh peek at last message in queue
|
|
EDX = queue handle
|
|
CX = size of buffer in bytes
|
|
ES:(E)SI -> buffer for message
|
|
Return: AX = status (0000h,0003h,0006h,0008h) (see #02695)
|
|
CX = length of returned message (if AX=0000h or 0008h)
|
|
0110h replace last message in queue
|
|
EDX = queue handle
|
|
CX = length of message header in bytes
|
|
BX = length of message data in bytes
|
|
ES:(E)SI -> message header
|
|
GS:(E)DI -> message data
|
|
Return: AX = status (0000h,0002h,0003h) (see #02695)
|
|
0111h set permitted message count for queue
|
|
EDX = queue handle
|
|
CX = maximum number of messages to enqueue (FFFFh = unlimited)
|
|
Return: AX = status (0000h,0003h) (see #02695)
|
|
---generalized VxD services---
|
|
0202h call VxD function
|
|
ES:(E)BX -> in/out register-set buffer
|
|
Return: buffer updated
|
|
0203h map flat
|
|
???
|
|
--system register functions---
|
|
0301h read system registers into buffer
|
|
ES:(E)SI -> 512-byte buffer
|
|
Return: AX = 0000h
|
|
buffer filled (mostly zeros)
|
|
0302h copy linear memory into buffer
|
|
EDX = linear address
|
|
CX = number of bytes to copy
|
|
ES:(E)SI -> buffer
|
|
Return: AX = 0000h
|
|
0303h copy data into linear memory
|
|
EDX = linear address
|
|
CX = number of bytes to copy
|
|
ES:(E)SI -> buffer
|
|
Return: AX = 0000h
|
|
0304h freeze VM
|
|
???
|
|
0305h unfreeze VM
|
|
???
|
|
---name registration functions---
|
|
0401h register name
|
|
EDX = magic number to associate with name
|
|
ES:(E)SI -> name to register
|
|
Return: AX = status (0000h,0009h) (see #02695)
|
|
0402h unregister name
|
|
ES:(E)SI -> name to be unregistered
|
|
Return: AX = status (0000h,0009h) (see #02695)
|
|
0403h look up name
|
|
ES:(E)SI -> name to look up
|
|
Return: DX:AX = magic number or 0000h:0000h if not registered
|
|
0404h get name list handle
|
|
Return: DX:AX = name list handle
|
|
0000h:0000h if not initialized
|
|
---special DOS server routines (undocumented)---
|
|
0501h register
|
|
0502h unregister
|
|
0503h validate VM
|
|
0504h get INT9 count
|
|
0505h get screen line
|
|
0506h get shift status
|
|
0507h get server PB pointer
|
|
0508h initialize DOS shell
|
|
0509h get last VM handle
|
|
|
|
(Table 02695)
|
|
Values for PHARLAPX function status:
|
|
00h successful
|
|
01h data is too large to fit in queue
|
|
02h queue is full
|
|
03h invalid queue handle
|
|
04h invalid VM handle for queue
|
|
05h error starting a paste operation
|
|
06h queue is empty
|
|
07h a VM is blocked waiting on the queue
|
|
08h message was too long (truncated)
|
|
09h unable to register or unregister specified callback
|
|
SeeAlso: #02694
|
|
|
|
Format of PHARLAPX PasteKey structure:
|
|
Offset Size Description (Table 02696)
|
|
00h BYTE ASCII code
|
|
01h BYTE scan code (see #00006)
|
|
02h WORD shift states
|
|
SeeAlso: #02694
|
|
|
|
Format of PHARLAPX VxD-call register structure:
|
|
Offset Size Description (Table 02697)
|
|
00h DWORD call number
|
|
04h WORD input register map (see #02698)
|
|
06h WORD output register map (see #02698)
|
|
08h 7 DWORDs values for EAX, EBX, ECX, EDX, EBP, ESI, EDI on call
|
|
24h 4 WORDs values for DS, ES, FG, GS on call
|
|
2Ch DWORD EFLAGS on call
|
|
30h 7 DWORDs returned values of EAX, EBX, ECX, EDX, EBP, ESI, EDI
|
|
4Ch 4 WORDs returned values of DS, ES, FS, GS
|
|
54h DWORD returned EFLAGS
|
|
SeeAlso: #02694
|
|
|
|
Bitfields for PHARLAPX VxD-call register map:
|
|
Bit(s) Description (Table 02698)
|
|
0 value in EAX field is valid
|
|
1 value in EBX field is valid
|
|
2 value in ECX field is valid
|
|
3 value in EDX field is valid
|
|
4 value in EBP field is valid
|
|
5 value in ESI field is valid
|
|
6 value in EDI field is valid
|
|
7 value in DS field is valid
|
|
8 value in ES field is valid
|
|
9 value in FS field is valid
|
|
10 value in GS field is valid
|
|
11 value in EFLAGS field is valid
|
|
SeeAlso: #02697
|
|
--------W-2F1684BX28A1-----------------------
|
|
INT 2F - MS Windows - PharLap VxD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 28A1h (virtual device ID for PharLap device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",AX=1684h/BX=28A0h,INT 20"Windows"
|
|
--------W-2F1684BX2925-----------------------
|
|
INT 2F - MS Windows - EDOS - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 2925h (virtual device ID for EDOS device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02699)
|
|
0000h:0000h if the VxD does not support an API
|
|
|
|
(Table 02699)
|
|
Call EDOS entry point with:
|
|
AX = 0000h get EDOS version number
|
|
Return: AH = major version
|
|
AL = minor version
|
|
AX = 0001h display message
|
|
CX = 0
|
|
DX:BX -> ASCIZ Message
|
|
AX = 0002h get EDOS error coded
|
|
Return: EAX = time in milliseconds that Windows has been running
|
|
AX = 0003h execute windows program
|
|
Return: EAX = cumulative amount of time the virtual machine has
|
|
been active, in milliseconds
|
|
AX = 0008h get/set priority
|
|
BX = 0000h??? foreground
|
|
0001h background
|
|
DI = 0000h get
|
|
0001h set
|
|
DX = priority setting
|
|
Return: CX = foreground priority
|
|
DX = background priority
|
|
BX:AX = flags
|
|
00000001h exclusive ON
|
|
00000010h background ON
|
|
SI = CPU percentage
|
|
--------W-2F1684BX292D-----------------------
|
|
INT 2F - MS Windows - VSBPD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 292Dh (virtual device ID for VSBPD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------W-2F1684BX295A-----------------------
|
|
INT 2F - MS Windows - GRVSULTR - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 295Ah (virtual device ID for GRVSULTR device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
--------x-2F1684BX304C-----------------------
|
|
INT 2F - Intel Plug-and-Play - CONFIGURATION ACCESS - GET ENTRY POINT
|
|
AX = 1684h
|
|
BX = 304Ch (ID for Configuration Access) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> API entry point (see #02700)
|
|
0000h:0000h if Configuration Access not loaded
|
|
Note: this API is often provided by a DOS device driver, in which case it
|
|
is available whether or not MSWindows is running
|
|
Index: installation check;Plug-and-Play Configuration Access
|
|
SeeAlso: AX=1684h/BX=0034h
|
|
|
|
(Table 02700)
|
|
Call Plug-and-Play Configuration Access entry point with:
|
|
AX = function
|
|
0000h "CA_GetVersion"
|
|
Return: AX = BCD version (AH = major, AL = minor)
|
|
0001h "CA_PCI_Read_Config_Byte" (see also INT 1A/AX=B108h)
|
|
!!!
|
|
0002h "CA_PCI_Read_Config_Word" (see also INT 1A/AX=B109h)
|
|
0003h "CA_PCI_Read_Config_DWord" (see also INT 1A/AX=B10Ah)
|
|
0004h "CA_PCI_Write_Config_Byte" (see also INT 1A/AX=B10Bh)
|
|
0005h "CA_PCI_Write_Config_Word" (see also INT 1A/AX=B10Ch)
|
|
0006h "CA_PCI_Write_Config_DWord" (see also INT 1A/AX=B10Dh)
|
|
0007h "CA_PCI_Generate_Special_Cycle" (see also INT 1A/AX=B106h)
|
|
0008h "CA_PCI_Get_Routing_Options" (see also INT 1A/AX=B10Eh)
|
|
0009h invalid function
|
|
000Ah invalid function
|
|
000Bh "CA_PnPISA_Get_Info"
|
|
000Ch "CA_PnPISA_Read_Config_Byte"
|
|
000Dh "CA_PnPISA_Write_Config_Byte"
|
|
000Eh "CA_PnPISA_Get_Resource_Data"
|
|
000Fh invalid function
|
|
0010h "CA_EISA_Get_Board_ID"
|
|
0011h "CA_EISA_Get_Slot_Config"
|
|
0012h "CA_EISA_Get_SlotFunc_Config"
|
|
0013h "CA_EISA_Clear_NVRAM_Config"
|
|
0014h "CA_EISA_Write_Config"
|
|
0015h invalid function
|
|
0016h "CA_ESCD_Get_Info"
|
|
0017h "CA_ESCD_Read_Config"
|
|
0018h "CA_ESCD_Write_Config"
|
|
0019h invalid function
|
|
001Ah "CA_Acfg_PCI_Manage_IRQs"
|
|
DL = IRQ???
|
|
ES:DI -> ???
|
|
Return: AX = status
|
|
001Bh "CA_Acfg_PCI_Get_Routing_Options"
|
|
ES:DI -> IRQ routing table header
|
|
(see #01259 at INT 1A/AX=B406h)
|
|
Return: AX = status
|
|
001Ch-001Fh invalid functions
|
|
0020h "CA_PnPB_Get_Num_Sys_Dev_Nodes"
|
|
0021h "CA_PnPB_Get_Sys_Dev_Node"
|
|
0022h "CA_PnPB_Set_Sys_Dev_Node"
|
|
0023h "CA_PnPB_Get_Stat_Res_Info"
|
|
0024h "CA_PnPB_Set_Stat_Res_Info"
|
|
Return: AX = FFFFh if unsupported function
|
|
SeeAlso: #02701
|
|
--------W-2F1684BX3099-----------------------
|
|
INT 2F - MS Windows - VVidramD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 3099h (virtual device ID for VVidramD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02701)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02701)
|
|
Call VVidramD (VIDRAM.VXD) virtual-86 entry point with:
|
|
AX = function number
|
|
0000h map page???
|
|
BX = page number???
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
0001h ???
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02700,#02702
|
|
--------W-2F1684BX30F6-----------------------
|
|
INT 2F P - MS Windows - WSVV - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 30F6h (virtual device ID for WSVV device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02702)
|
|
Call WSVV.VXD protected-mode entry point with:
|
|
AX = function number
|
|
????
|
|
Return: ???
|
|
SeeAlso: #02701,#02703
|
|
--------W-2F1684BX310E-----------------------
|
|
INT 2F - MS Windows - WPS - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 310Eh (virtual device ID for WPS device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02703)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02703)
|
|
Call WPS protected-mode entry point with:
|
|
DX = function
|
|
0000h get WPS.386 version
|
|
Return: CF clear
|
|
AX = version (AH = major, AL = minor)
|
|
0001h get number of installed VxDs
|
|
Return: CF clear
|
|
AX = number of installed VxDs
|
|
0002h get VxD characteristics
|
|
AX = number of VxD
|
|
ES:BX -> buffer for VxD characteristics structure (see #02704)
|
|
Return: CF clear
|
|
ES:BX buffer filled
|
|
SeeAlso: #02702,#02706
|
|
|
|
Format of WPS.386 VxD characteristics structure:
|
|
Offset Size Description (Table 02704)
|
|
00h WORD VxD ID number
|
|
02h BYTE VxD minor version
|
|
03h BYTE VxD major version
|
|
04h BYTE DDK minor version
|
|
05h BYTE DDK major version
|
|
06h WORD flags
|
|
bit 0: V86 API supported
|
|
bit 1: PM API supported
|
|
bit 2: services supported
|
|
08h DWORD start order
|
|
0Ch 9 BYTEs ASCIZ VxD name
|
|
SeeAlso: #02703
|
|
--------W-2F1684BX3110-----------------------
|
|
INT 2F - MS Windows - VSGLX16.386 - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 3110h (virtual device ID for VSGLX16.386) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02705)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: AX=1684h/BX=045Fh,AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02705)
|
|
Call VSGLX16.386 entry point with:
|
|
DX = function number
|
|
0000h get azt16 version
|
|
Return: CF clear
|
|
AX = version returned by "azt16" device
|
|
0001h get ???
|
|
AX = ??? (always fails if nonzero)
|
|
ES:BX -> buffer for ???
|
|
first DWORD of buffer must be set to length of buffer
|
|
(in bytes, 1 <= size <= 92) before calling
|
|
Return: CF clear if successful
|
|
AX = 0001h
|
|
CF set on error (invalid pointer, bad buffer size)
|
|
AX = 0000h
|
|
0002h
|
|
AX = ???
|
|
BX = ???
|
|
Return: CF clear if successful
|
|
AX = ???
|
|
CF set on error
|
|
AX = error code
|
|
0003h
|
|
AX = ???
|
|
BX = ???
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
0004h set ???
|
|
ES:DI -> buffer containing ???
|
|
BX = ???
|
|
CX = number of bytes to copy
|
|
Return: CF clear if successful
|
|
AX = 0001h
|
|
CF set on error
|
|
AX = 0000h
|
|
0005h get ???
|
|
ES:DI -> buffer for ???
|
|
BX = ???
|
|
CX = number of bytes to copy
|
|
Return: CF clear if successful
|
|
AX = 0001h
|
|
CF set on error
|
|
AX = 0000h
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02686
|
|
--------W-2F1684BX31CF-----------------------
|
|
INT 2F - MS Windows - STAT.386 - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 31CFh (virtual device ID for STAT.386) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02706)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02706)
|
|
Call STAT.386 entry point with:
|
|
AX = function
|
|
0000h get version
|
|
Return: AX = STAT.386 version (AH = major, AL = minor)
|
|
0001h execute RDMSR/WRMSR/RDTSC
|
|
BH = 00h
|
|
BL = second opcode byte (30h=WRMSR,31h=RDTSC,32h=RDMSR)
|
|
EDX:EDI = value to be written (for BL=30h)
|
|
ECX = MSR number for RDMSR/WRMSR
|
|
Return: EDX:EAX = value read (RDTSR/RDMSR only)
|
|
SeeAlso: #02703,#02707
|
|
--------W-2F1684BX34DC-----------------------
|
|
INT 2F - QEMM v8.01 - MAGNARAM VxD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 34DCh (virtual device ID for MAGNARAM) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02707)
|
|
0000h:0000h if the VxD does not support an API
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02707)
|
|
Call MAGNARAM MAGNA95.VXD protected-mode entry point with:
|
|
AX = function number
|
|
0000h get version and ???
|
|
Return: AX = version (AH = major, AL = minor)
|
|
CX = ???
|
|
bit 0: ???
|
|
bit 1: ???
|
|
0001h get ???
|
|
Return: CF clear
|
|
DX:AX = ??? SHL 2
|
|
0002h
|
|
Return: CF clear if successful
|
|
AX = ???
|
|
DX = ???
|
|
CF set on error
|
|
0003h get ???
|
|
Return: CF clear
|
|
DX:AX = ??? SHL 2
|
|
0004h ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0005h ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0006h ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0007h ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0008h ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0009h ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
000Ah ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
000Bh get ???
|
|
Return: CF clear
|
|
DX:AX = ??? SHL 2
|
|
000Ch get ???
|
|
Return: CF clear
|
|
DX:AX = ??? SHL 2
|
|
000Dh get ???
|
|
Return: CF clear
|
|
DX:AX = ??? SHL 2
|
|
000Eh get ???
|
|
Return: CF clear
|
|
AX = ???
|
|
DX = ???
|
|
000Fh get ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0010h get ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0011h get ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0012h get ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0013h get ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0014h get ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
0015h get ???
|
|
Return: CF clear
|
|
DX:AX = ???
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02706,#02708
|
|
--------W-2F1684BX357E-----------------------
|
|
INT 2F - MS Windows - DSOUND - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 357Eh (virtual device ID for DSOUND device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
----------2F1684BX377B-----------------------
|
|
INT 2F - MS Windows - MX1501HAD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 377Bh (virtual device ID for MX1501HAD device)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02708)
|
|
0000h:0000h if the VxD does not support an API
|
|
Note: The drivers VCMD95C.VXD and VCMD.386 are part of the driver disks
|
|
provided with the chip-card-reader/keyboard combination MX 1501 HAD,
|
|
produced by Cherry
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02708)
|
|
Call CHERRY VCMD95C.VXD entry point with:
|
|
AX = function
|
|
0001h get version
|
|
Return: AX = version number (0100h) (AH = major, AL = minor)
|
|
0002h hook INT 09 (and 8???)
|
|
0003h unhook INT 09 (and 8???)
|
|
0004h get number of bytes in FIFO
|
|
Return: AX = bytes in FIFO
|
|
0005h get next FIFO-data
|
|
Return: AX = data
|
|
BL = port number
|
|
BH = direction (1=in, 0=out)
|
|
DX:CX = timestamp
|
|
0006h clear FIFO
|
|
0007h output byte
|
|
DX = port number
|
|
BL = keyboard command
|
|
Return: data in FIFO (see #02710)
|
|
(value, port, in/out, timestamp)
|
|
0008h input byte
|
|
DX = port number
|
|
Return: data in FIFO (see #02710)
|
|
(value, port, in/out, timestamp)
|
|
0009h input byte immediately
|
|
DX = port number
|
|
Return: AX = data
|
|
000Ah read next FIFO data (nondestructive)
|
|
Return: AX = data
|
|
BL = port number
|
|
BH = direction (1=in, 0=out)
|
|
DX:CX = timestamp
|
|
000Bh get timestamp
|
|
Return: DX:CX = timestamp (in ms)
|
|
000Ch enable IRQ 1
|
|
000Dh disable IRQ 1
|
|
000Eh enable data retrieval
|
|
Note: Sets a flag in the internal mode-byte which
|
|
tells the driver to recognize the data
|
|
000Fh disable data retrieval
|
|
Note: resets a flag in the internal mode-byte
|
|
0010h get retrieval mode
|
|
Return: AX = current retrieval mode
|
|
0011h set retrieval mode
|
|
BX = new retrieval mode (see #02709)
|
|
Return: AX = old retrieval mode
|
|
0012h get command value
|
|
Return: AX = command value
|
|
0013h set command value
|
|
BX = command value
|
|
SeeAlso: #02706,#02711
|
|
|
|
Bitfields for retrieval mode:
|
|
Bit(s) Description (Table 02709)
|
|
0 enable data retrieval
|
|
1 0 = interrupt-driven
|
|
1 = polling mode
|
|
2 0 = read port 60h everytime
|
|
1 = read port 60h only when OBF of port 64h is set
|
|
3 0 = don't call old INT 9
|
|
1 = call INT 9 before our INT-handler
|
|
4-7 reserved
|
|
SeeAlso: #02708,#02710
|
|
|
|
Format of FIFO entry (1024 entries in FIFO):
|
|
Offset Size Description (Table 02710)
|
|
00h BYTE data byte
|
|
01h BYTE I/O port
|
|
02h BYTE direction (1=in, 0=out)
|
|
03h BYTE reserved
|
|
04h DWORD timestamp
|
|
SeeAlso: #02708,#02709
|
|
--------W-2F1684BX38DA-----------------------
|
|
INT 2F - MS Windows - VIWD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 38DAh (virtual device ID for VIWD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02711)
|
|
0000h:0000h if the VxD does not support API in current mode
|
|
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
|
|
|
|
(Table 02711)
|
|
Call VIWD.VXD entry point with:
|
|
DX = function number
|
|
0000h ???
|
|
Return: CF clear
|
|
AX = ???
|
|
0004h ???
|
|
Return: CF clear
|
|
DX = 0000h
|
|
0006h
|
|
Return: CF clear
|
|
000Ah
|
|
AX = ???
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
000Ch
|
|
000Dh
|
|
000Eh
|
|
Return: CF clear
|
|
000Fh
|
|
Return: CF clear
|
|
0010h
|
|
0011h
|
|
0015h
|
|
Return: CF clear if successful
|
|
AX = ???
|
|
CF set on error
|
|
AX = ???
|
|
DX = 0000h
|
|
0016h
|
|
0017h
|
|
Return: CF clear if successful
|
|
AX = ???
|
|
CF set on error
|
|
AX = ???
|
|
DX = 0000h
|
|
0018h ???
|
|
CX = ???
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set on error
|
|
else
|
|
Return: CF set
|
|
SeeAlso: #02708,#02712
|
|
--------W-2F1684BX4321-----------------------
|
|
INT 2F - MS Windows - POSTMSG - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 4321h (virtual device ID for POSTMSG device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02712,#02714)
|
|
0000h:0000h if the VxD does not support an API
|
|
|
|
(Table 02712)
|
|
Call POSTMSG protected-mode entry point with:
|
|
AX = window handle
|
|
CX:BX -> callback procedure (see #02713)
|
|
Return: nothing
|
|
Note: this call registers a WinApp with the VxD; the callback must be in a
|
|
fixed, non-discardable code segment
|
|
SeeAlso: #02714,#02715
|
|
|
|
(Table 02713)
|
|
Values POSTMSG callback routine is called with:
|
|
STACK: DWORD "lParam" parameter from DOSApp
|
|
WORD "wParam" parameter from DOSApp
|
|
WORD Windows message number (WM_USER + 100h)
|
|
WORD registered HWND
|
|
|
|
(Table 02714)
|
|
Call POSTMSG V86-mode entry point with:
|
|
BX = wParam value to pass to protected-mode callback
|
|
DX:AX = lParam value to pass to protected-mode callback
|
|
Return: CF clear if successful
|
|
CF set on error (no WinApp registered)
|
|
SeeAlso: #02712
|
|
--------W-2F1684BX7FE0-----------------------
|
|
INT 2F - MS Windows - VSWITCHD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 7FE0h (virtual device ID for VSWITCHD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02715)
|
|
0000h:0000h if the VxD does not support an API
|
|
|
|
(Table 02715)
|
|
Call VSWITCHD entry point with:
|
|
AX = function
|
|
0000h toggle windowed mode (simulate Alt-Enter keypress)
|
|
Return: nothing
|
|
0001h get windowed mode
|
|
Return: CF clear if VM is windowed
|
|
CF set if VM is full-screen
|
|
SeeAlso: #02712,#02716
|
|
--------W-2F1684BX8888-----------------------
|
|
INT 2F - MS Windows - VbillD - GET API ENTRY POINT
|
|
AX = 1684h
|
|
BX = 8888h (virtual device ID for VbillD device) (see #02642)
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI -> VxD API entry point (see #02716)
|
|
0000h:0000h if the VxD does not support an API
|
|
|
|
(Table 02716)
|
|
Call VbillD entry point with:
|
|
AX = function
|
|
0001h set reverse video
|
|
0002h set normal video
|
|
Return: ???
|
|
SeeAlso: #02715
|
|
--------W-2F1685-----------------------------
|
|
INT 2F - MS Windows - SWITCH VMs AND CALLBACK
|
|
AX = 1685h
|
|
BX = VM ID of virtual machine to switch to
|
|
CX = flags (see #02717)
|
|
DX:SI = priority boost (refer to VMM.INC)
|
|
ES:DI -> FAR procedure to callback
|
|
Return: CF set on error
|
|
AX = error code
|
|
01h invalid VM ID
|
|
02h invalid priority boost
|
|
03h invalid flags
|
|
CF clear if successful
|
|
event will be or has been called
|
|
Notes: some DOS devices, such as networks, need to call functions in a
|
|
specific VM. This call forces the appropriate VM to be installed.
|
|
the callback procedure must preserve all registers and return with IRET
|
|
SeeAlso: AX=1683h,INT 15/AX=1117h,AX=DB06h"WINGO"
|
|
|
|
Bitfields for VM switching flags:
|
|
Bit(s) Description (Table 02717)
|
|
0 wait until interrupts enabled
|
|
1 wait until critical section unowned
|
|
2-15 reserved (zero)
|
|
--------E-2F1686-----------------------------
|
|
INT 2F - DOS Protected-Mode Interface - DETECT MODE
|
|
AX = 1686h
|
|
Return: AX = 0000h if operating in protected mode under DPMI (INT 31 available)
|
|
AX nonzero if in real/V86 mode or no DPMI (INT 31 not available)
|
|
SeeAlso: AX=1687h
|
|
--------E-2F1687-----------------------------
|
|
INT 2F - DOS Protected-Mode Interface - INSTALLATION CHECK
|
|
AX = 1687h
|
|
Return: AX = 0000h if installed
|
|
BX = flags
|
|
bit 0: 32-bit programs supported
|
|
CL = processor type (02h=80286, 03h=80386, 04h=80486)
|
|
DH = DPMI major version
|
|
DL = two-digit DPMI minor version (binary)
|
|
SI = number of paragraphs of DOS extender private data
|
|
ES:DI -> DPMI mode-switch entry point (see #02718)
|
|
AX nonzero if not installed
|
|
SeeAlso: AX=1686h,AX=43E0h,AX=DE01h/BX=4450h,AX=FB42h/BX=0001h
|
|
SeeAlso: INT 31/AX=0400h,INT 31/AX=5702h,INT D4/AH=10h
|
|
|
|
(Table 02718)
|
|
Call DPMI mode switch entry point with:
|
|
AX = flags
|
|
bit 0: set if 32-bit program
|
|
ES = real mode segment of buffer for DPMI private data (ignored if
|
|
SI was zero)
|
|
Return: CF set on error
|
|
program still in real mode
|
|
AX = error code (DPMI 1.0+)
|
|
8011h unable to allocate all necessary descriptors
|
|
8021h 32-bit program specified, but 16-bit DPMI host
|
|
CF clear if successful
|
|
CS = 16-bit selector corresponding to real-mode CS
|
|
SS = selector corresponding to real-mode SS (64K limit)
|
|
DS = selector corresponding to real-mode DS (64K limit)
|
|
ES = selector to program's PSP (100h byte limit)
|
|
FS = GS = 0
|
|
high word of ESP = 0 if 32-bit program
|
|
program now in protected mode
|
|
Note: this entry point is only called for the initial switch to protected
|
|
mode
|
|
--------W-2F1688BX0BAD-----------------------
|
|
INT 2F U - MS Windows 3.0, 386MAX v6.01 - GET ALIAS SELECTOR TO LDT
|
|
AX = 1688h
|
|
BX = 0BADh
|
|
Return: AX = 0000h if supported
|
|
BX = alias selector for LDT
|
|
Note: use the LSL instruction or GetSelectorLimit() to find LDT size
|
|
this call should be considered obsolete for Windows 3.1+, as the
|
|
alias selector can be retrieved via the API entry point for
|
|
"MS-DOS" retrieved from INT 2F/AX=168Ah (see #02720)
|
|
SeeAlso: AX=1687h,#02720
|
|
--------W-2F1689-----------------------------
|
|
INT 2F U - MS Windows 3.0+ - KERNEL IDLE CALL
|
|
AX = 1689h
|
|
BX = status flags (see #04105)
|
|
Return: ???
|
|
Desc: the Windows KERNEL idle loop calls this function, which VMM uses as an
|
|
indication that the system is idle, which in turn generates INT 28
|
|
and INT 2F/AX=1607h/BX=0018h callouts
|
|
SeeAlso: AX=1680h,AX=1607h/BX=0018h,INT 15/AX=1000h,INT 28
|
|
|
|
Bitfields for Kernel Idle status flags:
|
|
Bit(s) Description (Table 04106)
|
|
15-1 reserved
|
|
0 "Win_Idle_Mouse_Busy"
|
|
--------E-2F168A-----------------------------
|
|
INT 2F - DPMI 0.9+ - GET VENDOR-SPECIFIC API ENTRY POINT
|
|
AX = 168Ah
|
|
DS:(E)SI = selector:offset of ASCIZ vendor name (see #02719)
|
|
Return: AL = status
|
|
00h successful
|
|
ES:(E)DI -> extended API entry point
|
|
8Ah unsuccessful
|
|
Notes: the vendor name is used to determine which entry point to return; it is
|
|
case-sensitive
|
|
available in protected mode only
|
|
32-bit applications use ESI and EDI, 16-bit applications use SI and DI
|
|
this call is present but not documented for DPMI 0.9
|
|
the Borland C++ 3.1 DPMILOAD does not handle requests for entry points
|
|
other than the MS-DOS one gracefully, producing an unhandled
|
|
exception report; this has been fixed in the Borland Pascal 7 version
|
|
SeeAlso: AX=1687h,INT 31/AX=0A00h,INT 31/AH=57h
|
|
|
|
(Table 02719)
|
|
Values for DPMI vendor-specific API names:
|
|
"MS-DOS" MS Windows and 386MAX v6.00+ (see #02720)
|
|
"386MAX" 386MAX v6.00+
|
|
"HELIX_DPMI" Helix Netroom's DPMI server
|
|
"Phar Lap" Phar Lap 286|DOS-Extender RUN286 (see #02721)
|
|
"RATIONAL DOS/4G" DOS/4G, DOS/4GW
|
|
"VIRTUAL SUPPORT" Borland 32RTM
|
|
|
|
(Table 02720)
|
|
Call Windows-support ("MS-DOS") entry point with:
|
|
AX = 0100h get LDT alias selector
|
|
Return: CF clear if successful
|
|
AX = alias selector
|
|
CF set on error
|
|
SeeAlso: #02719,AX=1688h/BX=0BADh
|
|
|
|
(Table 02721)
|
|
Call Phar Lap RUN286 entry point with:
|
|
AX = 0000h (function "load MSW")
|
|
BX = new value for MSW register (low word of CR0)
|
|
Return: ???
|
|
SeeAlso: #02719
|
|
--------W-2F168B-----------------------------
|
|
INT 2F - MS Windows 3.1 - SET FOCUS TO SPECIFIED VIRTUAL MACHINE
|
|
AX = 168Bh
|
|
BX = virtual machine ID (see AX=1683h), 0000h for current DOS box
|
|
Return: AL = 00h if focus set to specified VM
|
|
Notes: documented on the Microsoft Developer's Network CD-ROM
|
|
if the VM is a windowed DOS box, it will be set to full screen
|
|
SeeAlso: AX=1683h
|
|
--------W-2F168C-----------------------------
|
|
INT 2F - MS Windows 3.1 - RESTART COMMAND
|
|
AX = 168Ch
|
|
???
|
|
Return: ???
|
|
Note: WIN.COM executes specified application
|
|
--------W-2F168EDX0000-----------------------
|
|
INT 2F - Windows95 - TITLE - SET APPLICATION TITLE
|
|
AX = 168Eh
|
|
DX = 0000h
|
|
ES:DI -> ASCIZ application title (max 79 chars+NUL)
|
|
Return: AX = status
|
|
0000h failed
|
|
0001h successful
|
|
Note: if ES:DI is 0000h:0000h or points at an empty string, the current
|
|
title is removed
|
|
BUG: this function can return a successful status even though the title was
|
|
not changed; reportedly, waiting for two clock ticks after program
|
|
startup solves this problem
|
|
SeeAlso: AX=168Eh/DX=0001h,AX=168Eh/DX=0002h
|
|
--------W-2F168EDX0001-----------------------
|
|
INT 2F - Windows95 - TITLE - SET VIRTUAL MACHINE TITLE
|
|
AX = 168Eh
|
|
DX = 0001h
|
|
ES:DI -> ASCIZ virtual machine title (max 29 chars+NUL)
|
|
Return: AX = status
|
|
0000h failed
|
|
0001h successful
|
|
Notes: if ES:DI is 0000h:0000h or points at an empty string, the current
|
|
title is removed
|
|
the VM title should only be changed on explicit instruction from the
|
|
user
|
|
BUG: this function can return a successful status even though the title was
|
|
not changed; reportedly, waiting for two clock ticks after program
|
|
startup solves this problem
|
|
SeeAlso: AX=168Eh/DX=0000h,AX=168Eh/DX=0003h
|
|
--------W-2F168EDX0002-----------------------
|
|
INT 2F - Windows95 - TITLE - GET APPLICATION TITLE
|
|
AX = 168Eh
|
|
DX = 0002h
|
|
ES:DI -> buffer for ASCIZ application title
|
|
CX = size of buffer in bytes
|
|
Return: AX = status
|
|
0000h failed
|
|
0001h successful
|
|
Desc: copy as much of the application's window title as possible to the given
|
|
buffer, appending a terminating NUL to the buffer
|
|
SeeAlso: AX=168Eh/DX=0000h,AX=168Eh/DX=0003h
|
|
--------W-2F168EDX0003-----------------------
|
|
INT 2F - Windows95 - TITLE - GET VIRTUAL MACHINE TITLE
|
|
AX = 168Eh
|
|
DX = 0003h
|
|
ES:DI -> buffer for ASCIZ virtual-machine title
|
|
CX = size of buffer in bytes
|
|
Return: AX = status
|
|
0000h failed
|
|
0001h successful
|
|
Desc: copy as much of the virtual machine's title as possible to the given
|
|
buffer, appending a terminating NUL to the buffer
|
|
SeeAlso: AX=168Eh/DX=0001h,AX=168Eh/DX=0002h
|
|
--------W-2F168FDH00-------------------------
|
|
INT 2F - Windows95 - CLOSE-AWARENESS - ENABLE/DISABLE CLOSE COMMAND
|
|
AX = 168Fh
|
|
DH = 00h
|
|
DL = new state
|
|
00h disabled
|
|
01h enabled
|
|
Return: AX = status
|
|
0000h successful
|
|
else failed
|
|
Desc: enable or disable the system menu Close command for an application
|
|
SeeAlso: AX=168Fh/DH=01h,AX=168Fh/DH=02h
|
|
--------W-2F168FDH01-------------------------
|
|
INT 2F - Windows95 - CLOSE-AWARENESS - QUERY CLOSE
|
|
AX = 168Fh
|
|
DH = 01h
|
|
DL = 00h (reserved)
|
|
Return: AX = status
|
|
0000h Close command selected but not yet acknowledged
|
|
0001h Close command issued and acknowledged
|
|
168Fh Close command not selected -- application should continue
|
|
Desc: determine whether the user has requested that the application be closed
|
|
by selecting the system menu's Close option
|
|
SeeAlso: AX=168Fh/DH=00h,AX=168Fh/DH=02h
|
|
--------W-2F168FDH02-------------------------
|
|
INT 2F - Windows95 - CLOSE-AWARENESS - ACKNOWLEDGE CLOSE
|
|
AX = 168Fh
|
|
DH = 02h
|
|
DL = 00h (reserved)
|
|
Return: AX = status
|
|
0000h successful
|
|
else failed
|
|
Note: once a Close command has been issued, no further keyboard input is
|
|
available to the application until it calls this function to
|
|
acknowledge the Close request
|
|
SeeAlso: AX=168Fh/DH=00h,AX=168Fh/DH=03h
|
|
--------W-2F168FDH03-------------------------
|
|
INT 2F - Windows95 - CLOSE-AWARENESS - CANCEL CLOSE
|
|
AX = 168Fh
|
|
DH = 03h
|
|
DL = 00h (reserved)
|
|
Return: AX = status
|
|
0000h successful
|
|
else failed
|
|
Desc: cancels a close request which has already been acknowledged if the
|
|
application determines that it will not exit at this time
|
|
SeeAlso: AX=168Fh/DH=00h,AX=168Fh/DH=03h
|
|
--------D-2F1690-----------------------------
|
|
INT 2F U - MS-DOS 7 kernel - GET/SET ???
|
|
AX = 1690h
|
|
ES:BX -> ???
|
|
Return: ES:BX -> ??? data (see #02722)
|
|
SeeAlso: AX=1611h,AX=1614h
|
|
|
|
Format of MS-DOS 7 kernel ??? data:
|
|
Offset Size Description (Table 02722)
|
|
00h DWORD -> ??? data (appears to list the installed drivers)
|
|
04h DWORD -> ??? (value passed in via ES:BX is stored here)
|
|
--------W-2F1700-----------------------------
|
|
INT 2F - MS Windows "WINOLDAP" - IDENTIFY WinOldAp VERSION
|
|
AX = 1700h
|
|
Return: AX = 1700h if this version of WINOLDAP doesn't support clipboard
|
|
AX <> 1700h
|
|
AL = WINOLDAP major version
|
|
AH = WINOLDAP minor version
|
|
Program: WinOldAp (WINOLDAP.MOD) is a Microsoft Windows extension supporting
|
|
"old" (character-mode) application access to Dynamic Data Exchange,
|
|
menus, and the Windows clipboard.
|
|
Note: this installation check DOES NOT follow the format used by other
|
|
software of returning AL=FFh
|
|
SeeAlso: AX=1701h,AX=4601h
|
|
Index: installation check;WINOLDAP
|
|
--------W-2F1701-----------------------------
|
|
INT 2F - MS Windows "WINOLDAP" - OPEN CLIPBOARD
|
|
AX = 1701h
|
|
Return: AX = status
|
|
nonzero success
|
|
0000h clipboard is already open
|
|
SeeAlso: AX=1700h,AX=1702h,AX=1703h,AX=1704h,INT 16/AX=CB00h
|
|
--------W-2F1702-----------------------------
|
|
INT 2F - MS Windows "WINOLDAP" - EMPTY CLIPBOARD
|
|
AX = 1702h
|
|
Return: AX = status
|
|
nonzero clipboard has been emptied
|
|
0000h failure
|
|
SeeAlso: AX=1700h,AX=1701h,AX=1703h,AX=1704h,INT 16/AX=CB05h
|
|
--------W-2F1703-----------------------------
|
|
INT 2F - MS Windows "WINOLDAP" - SET CLIPBOARD DATA
|
|
AX = 1703h
|
|
DX = clipboard format supported by WinOldAp (see #02723)
|
|
ES:BX -> data (see #02724,#02725)
|
|
SI:CX = size of data
|
|
Return: AX = status
|
|
nonzero data copied into the Clipboard
|
|
0000h failure
|
|
SeeAlso: AX=1701h,AX=1705h,INT 16/AX=CB04h
|
|
|
|
(Table 02723)
|
|
Values for WinOldAp clipboard format:
|
|
01h text
|
|
02h bitmap
|
|
03h metafile picture
|
|
04h SYLK
|
|
05h DIF
|
|
06h TIFF
|
|
07h OEM text
|
|
08h DIB bitmap
|
|
80h special format (used by Windows WRITE, maybe other Windows applets???)
|
|
81h DSP text
|
|
82h DSP bitmap
|
|
|
|
Format of Windows Clipboard bitmap:
|
|
Offset Size Description (Table 02724)
|
|
00h WORD type (0000h)
|
|
02h WORD width of bitmap in pixels
|
|
04h WORD height of bitmap in pixels
|
|
06h WORD bytes per line
|
|
08h BYTE number of color planes
|
|
09h BYTE number of adjacent color bits in pixel
|
|
0Ah DWORD pointer to start of data
|
|
0Eh WORD width in 0.1mm units
|
|
10h WORD height in 0.1mm units
|
|
12h N BYTEs bitmap data
|
|
|
|
Format of Windows metafile picture:
|
|
Offset Size Description (Table 02725)
|
|
00h WORD mapping mode
|
|
02h WORD X extent
|
|
04h WORD Y extent
|
|
06h WORD picture data
|
|
--------W-2F1704-----------------------------
|
|
INT 2F - MS Windows "WINOLDAP" - GET CLIPBOARD DATA SIZE
|
|
AX = 1704h
|
|
DX = clipboard format supported by WinOldAp (see #02723)
|
|
Return: DX:AX = size of data in bytes, including any headers
|
|
0000h:0000h if no data in this format in the Clipboard
|
|
Note: Windows reportedly rounds up the size of the data to a multiple of 32
|
|
bytes
|
|
SeeAlso: AX=1700h,AX=1703h,AX=1705h
|
|
--------W-2F1705-----------------------------
|
|
INT 2F - MS Windows "WINOLDAP" - GET CLIPBOARD DATA
|
|
AX = 1705h
|
|
DX = clipboard format supported by WinOldAp (see #02723)
|
|
ES:BX -> buffer
|
|
Return: AX = status
|
|
nonzero success
|
|
0000h error, or no data in this format in Clipboard
|
|
SeeAlso: AX=1700h,AX=1704h,INT 16/AX=CB03h
|
|
--------W-2F1708-----------------------------
|
|
INT 2F - MS Windows "WINOLDAP" - CloseClipboard
|
|
AX = 1708h
|
|
Return: AX = status
|
|
0000h failure
|
|
nonzero success
|
|
--------W-2F1709-----------------------------
|
|
INT 2F - MS Windows "WINOLDAP" - COMPACT CLIPBOARD
|
|
AX = 1709h
|
|
SI:CX = desired size in bytes
|
|
Return: DX:AX = number of bytes in largest block of free memory
|
|
Note: WinOldAp is responsible for including the size of any headers
|
|
--------W-2F170A-----------------------------
|
|
INT 2F - MS Windows "WINOLDAP" - GET DEVICE CAPABILITIES
|
|
AX = 170Ah
|
|
DX = GDI information index (see #02726)
|
|
Return: AX = integer value of the desired item
|
|
(see #02727,#02728,#02729,#02730,#02731,#02732,#02733)
|
|
Note: This function returns the device-capability bits for the given display
|
|
|
|
(Table 02726)
|
|
Values for GDI information index:
|
|
00h device driver version
|
|
02h device classification
|
|
04h width in mm
|
|
06h height in mm
|
|
08h width in pixels
|
|
0Ah height in pixels
|
|
0Ch bits per pixel
|
|
0Eh number of bit planes
|
|
10h number of brushes supported by device
|
|
12h number of pens supported by device
|
|
14h number of markers supported by device
|
|
16h number of fonts supported by device
|
|
18h number of colors
|
|
1Ah size required for device descriptor
|
|
1Ch curve capabilities
|
|
1Eh line capabilities
|
|
20h polygon capabilities
|
|
22h text capabilities
|
|
24h clipping capabilities
|
|
26h bitblt capabilities
|
|
28h X aspect
|
|
2Ah Y aspect
|
|
2Ch length of hypotenuse of aspect
|
|
58h logical pixels per inch of width
|
|
5Ah logical pixels per inch of height
|
|
SeeAlso: #02727,#02728,#02729,#02730,#02731,#02732,#02733
|
|
|
|
(Table 02727)
|
|
Values for device classification:
|
|
00h vector plotter
|
|
01h raster display
|
|
02h raster printer
|
|
03h raster camera
|
|
04h character-stream, PLP
|
|
05h Metafile, VDM
|
|
06h display-file
|
|
SeeAlso: #02726,#02728,#02729,#02730,#02731,#02732,#02733
|
|
|
|
Bitfields for curve capabilities:
|
|
Bit(s) Description (Table 02728)
|
|
0 circles
|
|
1 pie wedges
|
|
2 chord arcs
|
|
3 ellipses
|
|
4 wide lines
|
|
5 styled lines
|
|
6 wide styled lines
|
|
7 interiors
|
|
SeeAlso: #02726,#02727,#02729,#02730,#02731,#02732,#02733
|
|
|
|
Bitfields for line capabilities:
|
|
Bit(s) Description (Table 02729)
|
|
1 polylines
|
|
2 markers
|
|
3 polymarkers
|
|
4 wide lines
|
|
5 styled lines
|
|
6 wide styled lines
|
|
7 interiors
|
|
SeeAlso: #02726,#02727,#02728,#02730,#02731,#02732,#02733
|
|
|
|
Bitfields for polygon capabilities:
|
|
Bit(s) Description (Table 02730)
|
|
0 polygons
|
|
1 rectangles
|
|
2 trapezoids
|
|
3 scanlines
|
|
4 wide borders
|
|
5 styled borders
|
|
6 wide styled borders
|
|
7 interiors
|
|
SeeAlso: #02726,#02727,#02728,#02729,#02731,#02732,#02733
|
|
|
|
Bitfields for text capabilities:
|
|
Bit(s) Description (Table 02731)
|
|
0 output precision character
|
|
1 output precision stroke
|
|
2 clippping precision stroke
|
|
3 90-degree character rotation
|
|
4 arbitrary character rotation
|
|
5 independent X and Y scaling
|
|
6 double-size
|
|
7 integer scaling
|
|
8 continuous scaling
|
|
9 bold
|
|
10 italic
|
|
11 underline
|
|
12 strikeout
|
|
13 raster fonts
|
|
14 vector fonts
|
|
15 reserved
|
|
SeeAlso: #02726,#02727,#02728,#02729,#02730,#02732,#02733
|
|
|
|
(Table 02732)
|
|
Values for clipping capabilities:
|
|
00h none
|
|
01h clipping to rectangles
|
|
SeeAlso: #02726,#02727,#02728,#02729,#02730,#02731,#02733
|
|
|
|
Bitfields for raster capabilities:
|
|
Bit(s) Description (Table 02733)
|
|
0 simple bitBLT
|
|
1 device requires banding support
|
|
2 device requires scaling support
|
|
3 supports >64K bitmap
|
|
SeeAlso: #02726,#02727,#02728,#02729,#02730,#02731,#02732
|
|
----------2F18-------------------------------
|
|
INT 2F U - MS-Manager
|
|
AH = 18h
|
|
???
|
|
Return: ???
|
|
--------l-2F1900-----------------------------
|
|
INT 2F U - DOS 4.x only SHELLB.COM - INSTALLATION CHECK
|
|
AX = 1900h
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
--------l-2F1901-----------------------------
|
|
INT 2F U - DOS 4.x only SHELLB.COM - SHELLC.EXE INTERFACE
|
|
AX = 1901h
|
|
BL = SHELLC type
|
|
00h transient
|
|
01h resident
|
|
DS:DX -> far call entry point for resident SHELLC.EXE
|
|
Return: ES:DI -> SHELLC.EXE workspace within SHELLB.COM
|
|
Note: SHELLB.COM and SHELLC.EXE are parts of the DOS 4.x shell
|
|
--------l-2F1902-----------------------------
|
|
INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM INTERFACE
|
|
AX = 1902h
|
|
ES:DI -> ASCIZ full filename of current batch file, with at least the
|
|
final filename element uppercased
|
|
DS:DX -> buffer for results
|
|
Return: AL = 00h failed, either
|
|
(a) final filename element quoted at ES:DI does not match
|
|
identity of shell batch file quoted as parameter of most
|
|
recent call of SHELLB command, or
|
|
(b) no more Program Start Commands available.
|
|
AL= FFh success, then:
|
|
memory at DS:[DX+1] onwards filled as:
|
|
DX+1: BYTE count of bytes of PSC
|
|
DX+2: N BYTEs Program Start Command text
|
|
BYTE 0Dh terminator
|
|
Desc: COMMAND.COM executes the result of this call in preference to
|
|
reading a command from a batch file. Thus the batch file does not
|
|
advance in execution for so long as SHELLB provides PSCs from its
|
|
workspace.
|
|
Note: The PSCs are planted in SHELLB workspace by SHELLC, the user
|
|
menu interface. The final PSC of a sequence is finished with a
|
|
GOTO COMMON, which causes a loop back in the batch file which called
|
|
SHELLC so as to execute SHELLC again. The check on batch file name
|
|
permits PSCs to CALL nested batch files while PSCs are still stacked
|
|
up for subsequent execution.
|
|
--------l-2F1903-----------------------------
|
|
INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM interface
|
|
AX = 1903h
|
|
ES:DI -> ASCIZ batch file name as for AX=1902h
|
|
Return: AL = status
|
|
FFh quoted batch file name matches last SHELLB parameter
|
|
00h it does not
|
|
--------l-2F1904-----------------------------
|
|
INT 2F U - DOS 4.x only SHELLB.COM - SHELLB transient to TSR interface
|
|
AX = 1904h
|
|
Return: ES:DI -> name of current shell batch file:
|
|
WORD number of bytes of name following
|
|
BYTEs (8 max) uppercase name of shell batch file
|
|
----------2F1980-----------------------------
|
|
INT 2F U - IBM ROM-DOS v4.0 - INSTALLATION CHECK
|
|
AX = 1980h
|
|
Return: AL = FFh if ??? installed/supported
|
|
Note: called at the very beginning of SHELLSTB.COM, which exits if AL is not
|
|
FFh on return
|
|
SeeAlso: AX=1981h,AX=1982h
|
|
----------2F1981-----------------------------
|
|
INT 2F U - IBM ROM-DOS v4.0 - GET ??? STRING
|
|
AX = 1981h
|
|
DS:DX -> buffer for ???
|
|
Return: AL = status
|
|
FFh if successful
|
|
DS:DX buffer filled (refer to note below)
|
|
81h on error
|
|
Note: the first byte of the buffer is unchanged; depending on a byte in
|
|
IBMBIO.COM, the remainder of the buffer is filled with either
|
|
"C:\ROMSHELL.COM",0Dh or xxh,xxh,0Fh,"C:\ROMSHELL.COM",0Dh
|
|
SeeAlso: AX=1980h,AX=1982h
|
|
----------2F1982-----------------------------
|
|
INT 2F U - IBM ROM-DOS v4.0 - GET ??? TABLE
|
|
AX = 1982h
|
|
Return: AL = FFh if supported
|
|
ES:DI -> ??? table (see #02734)
|
|
Note: called by ROMSHELL.COM
|
|
SeeAlso: AX=1980h,AX=1981h
|
|
|
|
Format of ROM-DOS v4.0 ??? table:
|
|
Offset Size Description (Table 02734)
|
|
00h BYTE ??? (00h)
|
|
01h BYTE ??? (41h) (ROMSHELL.COM checks if =00h)
|
|
02h BYTE ??? (00h) (ROMSHELL.COM checks if =01h)
|
|
03h WORD ??? (0001h) (ROMSHELL.COM checks if =0001h)
|
|
05h BYTE ??? (00h)
|
|
06h WORD ??? (04D5h)
|
|
--------V-2F1A00-----------------------------
|
|
INT 2F - DOS 4.0+ ANSI.SYS - INSTALLATION CHECK
|
|
AX = 1A00h
|
|
Return: AL = FFh if installed
|
|
Notes: AVATAR.SYS also responds to this call
|
|
documented for DOS 5+, but undocumented for DOS 4.x
|
|
--------V-2F1A00BX414E-----------------------
|
|
INT 2F - ANSIPLUS.SYS v2.00+ - INSTALLATION CHECK
|
|
AX = 1A00h
|
|
BX = 414Eh ('AN')
|
|
CX = 5349h ('SI')
|
|
DX = 2B2Bh ('++')
|
|
Return: AL = FFh if installed
|
|
CF clear
|
|
ES:BX -> INT 29 entry point
|
|
CX = ANSIPLUS BCD version number (v3.10+, CH=major, CL=minor)
|
|
DL = capabilities (v4.00+)
|
|
00h full capability driver
|
|
01h reduced capability driver
|
|
2Bh full capability driver (before v4.00)
|
|
Program: ANSIPLUS.SYS is a CON device driver by Kristofer Sweger which
|
|
replaces the normal ANSI.SYS with a more powerful version having
|
|
many additional features
|
|
Notes: ANSIPLUS also identifies itself as ANSI.SYS if BX,CX, or DX differ
|
|
from the magic values above
|
|
an additional installation check is to test for the signature
|
|
"ANSIPLUS" 12 bytes before the INT 29 entry point; the version
|
|
number is also available as a four-character ASCII string (e.g.
|
|
"4.00") four bytes before the entry point
|
|
SeeAlso: AX=1AA5h,AX=1AA6h,AX=1AA7h,AX=1AA8h,AX=1AA9h,AX=1AAAh,AX=D44Fh
|
|
--------V-2F1A00BX4156-----------------------
|
|
INT 2F - AVATAR.SYS - INSTALLATION CHECK
|
|
AX = 1A00h
|
|
BX = 4156h ('AV')
|
|
CX = 4154h ('AT')
|
|
DX = 4152h ('AR')
|
|
Return: AL = FFh if installed
|
|
CF clear
|
|
BX = AVATAR protocol level supported
|
|
CX = driver type
|
|
0000h AVATAR.SYS
|
|
4456h DVAVATAR.COM inside DESQview window
|
|
DX = 0016h
|
|
Program: AVATAR.SYS is a CON replacement by George Adam Stanislav which
|
|
interprets AVATAR command codes in the same way that ANSI interprets
|
|
ANSI command codes
|
|
Notes: AVATAR also identifies itself as ANSI.SYS if BX, CX, or DX differ from
|
|
the magic values
|
|
SeeAlso: AX=1A21h,AX=1A3Ch,AX=1A3Fh,AX=1A52h,AX=1A72h,AX=1A7Dh,AX=1AADh"AVATAR"
|
|
--------V-2F1A01-----------------------------
|
|
INT 2F U - DOS 4.0+ ANSI.SYS internal - GET/SET DISPLAY INFORMATION
|
|
AX = 1A01h
|
|
CL = function
|
|
7Fh for GET
|
|
5Fh for SET
|
|
DS:DX -> parm block as for INT 21,AX=440Ch,CX=037Fh/035Fh respectively
|
|
Return: CF clear if successful
|
|
AX destroyed
|
|
CF set on error
|
|
AX = error code (many non-standard)
|
|
Note: presumably this is the DOS IOCTL interface to ANSI.SYS
|
|
SeeAlso: AX=1A02h,INT 21/AX=440Ch
|
|
--------V-2F1A02-----------------------------
|
|
INT 2F U - DOS 4.0+ ANSI.SYS internal - MISCELLANEOUS REQUESTS
|
|
AX = 1A02h
|
|
DS:DX -> parameter block (see #02735)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code
|
|
Note: DOS 5+ chains to previous handler if AL > 02h on call
|
|
SeeAlso: AX=1A01h
|
|
|
|
Format of ANSI.SYS parameter block:
|
|
Offset Size Description (Table 02735)
|
|
00h BYTE subfunction
|
|
00h set/reset interlock
|
|
01h get /L flag
|
|
01h BYTE interlock state
|
|
00h=reset, 01h=set
|
|
This interlock prevents some of the ANSI.SYS post-processing
|
|
in its hook onto INT 10, AH=00h mode set
|
|
02h BYTE (returned)
|
|
00h if /L not in effect
|
|
01h if /L in effect
|
|
--------V-2F1A21-----------------------------
|
|
INT 2F - AVATAR.SYS - SET DRIVER STATE
|
|
AX = 1A21h (AL='!')
|
|
DS:SI -> command string with one or more state characters (see #02736)
|
|
CX = length of command string
|
|
Return: CF set on error (invalid subfunction)
|
|
CF clear if successful
|
|
Note: the characters in the state string are interpreted left to right, and
|
|
need not be in any particular order
|
|
SeeAlso: AX=1A00h/BX=4156h,AX=1A3Fh
|
|
|
|
(Table 02736)
|
|
Values for AVATAR.SYS state characters:
|
|
'a' activate driver
|
|
'd' disable driver
|
|
'f' use fast screen output
|
|
'g' always convert gray keys (+ and -) to function keys
|
|
'G' never convert gray keys
|
|
'l' convert gray keys only when ScrollLock active
|
|
's' use slow screen output
|
|
't' Tandy 1000 keyboard (not yet implemented)
|
|
--------V-2F1A3C-----------------------------
|
|
INT 2F U - AVATAR.SYS v0.11 - ???
|
|
AX = 1A3Ch
|
|
???
|
|
Return: CX = 0000h
|
|
SeeAlso: AX=1A00h/BX=4156h,AX=1A21h,AX=1A3Eh
|
|
--------V-2F1A3E-----------------------------
|
|
INT 2F U - AVATAR.SYS v0.11 - ???
|
|
AX = 1A3Eh
|
|
CL = ???
|
|
CH = ???
|
|
DL = ???
|
|
DH = ???
|
|
Return: CL = ???
|
|
CH = ???
|
|
DL = ???
|
|
DH = ???
|
|
SeeAlso: AX=1A3Ch,AX=1A3Fh
|
|
--------V-2F1A3F-----------------------------
|
|
INT 2F - AVATAR.SYS - QUERY DRIVER STATE
|
|
AX = 1A3Fh (AL='?')
|
|
ES:DI -> buffer
|
|
CX = length of buffer in bytes
|
|
Return: CF clear
|
|
CX = actual size of returned info
|
|
Note: the returned information consists of multiple letters whose meanings
|
|
are described under AX=1A21h
|
|
SeeAlso: AX=1A00h/BX=4156h,AX=1A21h,AX=1A44h
|
|
--------S-2F1A42BX4156-----------------------
|
|
INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ3 HANDLER
|
|
AX = 1A42h
|
|
BX = 4156h ('AV')
|
|
ES:DI -> FAR handler for serial port using IRQ3
|
|
DS = data segment needed by handler
|
|
Return: AX = status/return value
|
|
0000h if no more room
|
|
1A42h if ASD not installed
|
|
else handle to use when uninstalling
|
|
Notes: the handler need not save/restore registers or signal EOI to the
|
|
interrupt controller
|
|
the handler should return AX=0000h if the interrupt was meant for it,
|
|
and either leave AX unchanged or return a non-zero value otherwise
|
|
the most recently installed handler will be called first, continuing
|
|
to earlier handlers until one returns AX=0000h
|
|
SeeAlso: AX=1A43h,AX=1A62h
|
|
--------S-2F1A43BX4156-----------------------
|
|
INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ4 HANDLER
|
|
AX = 1A43h
|
|
BX = 4156h ('AV')
|
|
ES:DI -> FAR handler for serial port using IRQ4
|
|
DS = data segment needed by handler
|
|
Return: AX = status/return value
|
|
0000h if no more room
|
|
1A43h if ASD not installed
|
|
else handle to use when uninstalling
|
|
Notes: (see AX=1A42h)
|
|
SeeAlso: AX=1A42h,AX=1A63h
|
|
--------V-2F1A44BX4156-----------------------
|
|
INT 2F - AVATAR.SYS v0.11+ - GET DATA SEGMENT
|
|
AX = 1A44h
|
|
BX = 4156h ('AV')
|
|
Return: AX = 0000h
|
|
DS = data segment
|
|
CX = size of data segment
|
|
Note: AVATAR.SYS calls this function whenever it is invoked. If each
|
|
process under a multitasker hooks this function and provides a
|
|
separate data segment, AVATAR.SYS becomes fully reentrant.
|
|
SeeAlso: AX=1A21h,AX=1A3Fh,AX=1A52h
|
|
--------V-2F1A52-----------------------------
|
|
INT 2F U - AVATAR.SYS v0.11 - GET ???
|
|
AX = 1A52h
|
|
CX = size of buffer
|
|
ES:DI -> buffer
|
|
Return: ??? copied into user buffer
|
|
Note: the maximum size of the data which may be copied is returned by
|
|
AX=1A72h
|
|
SeeAlso: AX=1A53h,AX=1A72h
|
|
--------V-2F1A53-----------------------------
|
|
INT 2F U - AVATAR.SYS v0.11 - ???
|
|
AX = 1A53h
|
|
CL = ??? (00h-05h)
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1A00h/BX=4156h,AX=1A52h,AX=1A72h
|
|
--------S-2F1A62BX4156-----------------------
|
|
INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ3 HANDLER
|
|
AX = 1A62h
|
|
BX = 4156h ('AV')
|
|
CX = handle for IRQ routine returned by AX=1A42h
|
|
SeeAlso: AX=1A42h,AX=1A63h
|
|
--------S-2F1A63BX4156-----------------------
|
|
INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ4 HANDLER
|
|
AX = 1A63h
|
|
BX = 4156h ('AV')
|
|
CX = handle for IRQ routine returned by AX=1A43h
|
|
SeeAlso: AX=1A43h,AX=1A62h
|
|
--------V-2F1A72-----------------------------
|
|
INT 2F U - AVATAR.SYS v0.11 - GET ??? SIZE
|
|
AX = 1A72h
|
|
Return: CX = maximum size of ???
|
|
SeeAlso: AX=1A00h/BX=4156h,AX=1A52h,AX=1A7Bh,AX=1AADh"AVATAR"
|
|
--------V-2F1A7B-----------------------------
|
|
INT 2F U - AVATAR.SYS v0.11 - ???
|
|
AX = 1A7Bh
|
|
Return: AX = 0000h
|
|
CX = 0000h
|
|
SeeAlso: AX=1A00h/BX=4156h,AX=1A72h,AX=1A7Dh
|
|
--------V-2F1A7D-----------------------------
|
|
INT 2F U - AVATAR.SYS v0.11 - ???
|
|
AX = 1A7Dh
|
|
Return: AX = ???
|
|
SeeAlso: AX=1A00h/BX=4156h,AX=1A7Bh
|
|
--------V-2F1AA3-----------------------------
|
|
INT 2F - ANSIPLUS v4.03+ - GET/SET ANSIPLUS INTERNAL VARIABLES
|
|
AX = 1AA3h
|
|
BH = function
|
|
00h get current/default colors
|
|
Return: CH = default colors
|
|
CL = current colors
|
|
01h set current/default colors
|
|
CH = default colors (00h = leave unchanged)
|
|
CL = current colors
|
|
02h get current subscreen region
|
|
Return: BH,BL = true screen rows,columns
|
|
CH,CL = top left row,column of region
|
|
DH,DL = bottom right row,column of region
|
|
03h set subscreen region
|
|
CH,CL = top left row,column of region
|
|
DH,DL = bottom right row,column of region
|
|
04h get driver features (bits 0-31)
|
|
Return: DX:CX = current feature bits
|
|
05h set driver features (bits 0-31)
|
|
DX:CX = feature bits
|
|
06h get driver features (bits 32-63)
|
|
Return: DX:CX = current feature bits
|
|
07h set driver features (bits 32-63)
|
|
DX:CX = feature bits
|
|
other: reserved for future use
|
|
SeeAlso: AX=1AA4h,AX=1AA5h
|
|
--------V-2F1AA4-----------------------------
|
|
INT 2F - ANSIPLUS v4.02+ - GET/SET ANSIPLUS SMOOTH SCROLLING RATE
|
|
AX = 1AA4h
|
|
BL = function
|
|
00h get scrolling rate
|
|
01h set scrolling rate
|
|
BH = new minimum scrolling rate in scan lines per retrace
|
|
Return: BH = smooth scrolling rate
|
|
SeeAlso: AX=1AA3h,AX=1AA5h
|
|
--------V-2F1AA5-----------------------------
|
|
INT 2F - ANSIPLUS v4.00+ - GET/SET ANSIPLUS CLIPBOARD
|
|
AX = 1AA5h
|
|
DH = subfunction
|
|
00h get clipboard information
|
|
01h get clipboard text
|
|
02h set clipboard text
|
|
03h append text to clipboard
|
|
04h clear clipboard
|
|
05h paste clipboard to keyboard
|
|
ES:BX -> data area for subfunctions 01h, 02h, and 03h
|
|
CX = size of data area (maximum size for subfunction 01h, actual size
|
|
to add to clipboard for subfunctions 02h and 03h)
|
|
Return: AL = status
|
|
00h successful
|
|
01h unsupported subfunction (reduced capability driver)
|
|
02h insufficient space
|
|
A5h unsupported function (ANSIPLUS before v4.00)
|
|
ES:BX -> ANSIPLUS local clipboard data
|
|
CX = number of bytes currently in local clipboard
|
|
DX = maximum size of local clipboard
|
|
SeeAlso: AX=1A00h/BX=414Eh,AX=1AA4h,AX=1AA6h
|
|
--------V-2F1AA6-----------------------------
|
|
INT 2F - ANSIPLUS v4.00+ - ENABLE/DISABLE ANSIPLUS DRIVER
|
|
AX = 1AA6h
|
|
BH = function
|
|
00h get hooked interrupts
|
|
01h set hooked interrupts mask
|
|
BL = new interrupts mask (see #02737)
|
|
Return: BL = previous interrupts mask (see #02737)
|
|
SeeAlso: AX=1A00h/BX=414Eh,AX=1AA7h
|
|
|
|
Desc: used to temporarily disable any prior copies of ANSIPLUS when a new
|
|
copy is installed, such as in a multitasking system like DESQview
|
|
Note: only the most-recently loaded copy of ANSIPLUS on the current INT 2F
|
|
chain responds to this call
|
|
|
|
Bitfields for ANSIPLUS hooked interrupts mask:
|
|
Bit(s) Description (Table 02737)
|
|
0 INT 09 hook disabled
|
|
1 INT 10 hook disabled
|
|
2 INT 15 hook disabled
|
|
3 INT 16 hook disabled
|
|
4 INT 1C hook disabled
|
|
5 reset all bits when INT 29 called
|
|
6 INT 29 hook disabled
|
|
7 INT 33, INT 74, or other mouse event hook disabled
|
|
--------V-2F1AA7-----------------------------
|
|
INT 2F - ANSIPLUS v4.00+ - ENABLE/DISABLE ANSIPLUS FEATURES
|
|
AX = 1AA7h
|
|
BL = function
|
|
00h prevent scroll-back saves
|
|
01h enable scroll-back saves
|
|
02h disable key reprogramming and lock changes by escape sequences
|
|
03h enable key reprogramming by escape sequences
|
|
04h disable and lock key stacking changes by escape sequences
|
|
05h allow key stacking by escape sequences
|
|
Return: nothing
|
|
SeeAlso: AX=1AA6h
|
|
--------V-2F1AA8-----------------------------
|
|
INT 2F - ANSIPLUS v3.10+ - GET NEXT ANSIPLUS SCROLLBACK LINE
|
|
AX = 1AA8h
|
|
Return: AL = status
|
|
00h successful
|
|
ES:BX -> screen line (character and attribute pairs)
|
|
CX = length of line in bytes, 0000h if no more lines or
|
|
unsupported video mode
|
|
01h unsupported video mode active
|
|
02h screen currently scrolled back
|
|
03h reduced capability driver
|
|
A8h unsupported function (driver before v3.10)
|
|
SeeAlso: AX=1A00h/BX=414Eh,AX=1AA9h
|
|
--------V-2F1AA9-----------------------------
|
|
INT 2F - ANSIPLUS v3.10+ - GET ANSIPLUS SCROLLBACK INFORMATION
|
|
AX = 1AA9h
|
|
Return: AL = status
|
|
00h successful
|
|
BX = current number of lines in scrollback buffer
|
|
CX = number of bytes in one line
|
|
01h unsupported video mode active
|
|
02h screen currently scrolled back
|
|
03h reduced capability driver
|
|
A9h unsupported function (driver before v3.10)
|
|
Desc: determine how much data is in the scrollback buffer and initialize
|
|
scrollback retrieval to return the first line on the next call to
|
|
AX=1AA8h
|
|
SeeAlso: AX=1A00h/BX=414Eh,AX=1AA8h
|
|
--------V-2F1AAA-----------------------------
|
|
INT 2F - ANSIPLUS v3.01+ - GET/SET ANSIPLUS SCREEN SAVER BLANKING TIME
|
|
AX = 1AAAh
|
|
BX = function
|
|
FFFFh to get current blanking time
|
|
other to set time
|
|
CX = blanking time in clock ticks (0000h-7FFFh)
|
|
Return: BX = current blanking time
|
|
CX = blanking time when last set
|
|
SeeAlso: AX=1A00h/BX=414Eh,AX=1AABh
|
|
--------V-2F1AAB-----------------------------
|
|
INT 2F - ANSIPLUS v3.01+ - SET ANSIPLUS KEY REPEAT RATE
|
|
AX = 1AABh
|
|
BX = repeat rate in characters per second
|
|
0000h use BIOS repeat rate
|
|
Return: nothing
|
|
SeeAlso: AX=1A00h/BX=414Eh,AX=1AAAh,AX=1AACh
|
|
--------V-2F1AAC-----------------------------
|
|
INT 2F - ANSIPLUS v3.00+ - LOAD CHARACTER GENERATOR
|
|
AX = 1AACh
|
|
BH = number of bytes per character pattern
|
|
BL = VGA/EGA character table to be loaded
|
|
CX = number of characters to load
|
|
DX = starting character code (offset into Map2 block)
|
|
ES:BP -> user character table to be loaded
|
|
Return: AX = 1100h
|
|
Desc: load the EGA/VGA character generator without the BIOS function's
|
|
side effects of resetting the video mode and color palette
|
|
SeeAlso: AX=1A00h/BX=414Eh,AX=1AABh,AX=1AADh"ANSIPLUS",INT 10/AX=1100h
|
|
--------V-2F1AAD-----------------------------
|
|
INT 2F - ANSIPLUS v2.00+ - ANSIPLUS DEVICE STATUS REPORT
|
|
AX = 1AADh
|
|
BL = report request code (81h-96h for v4.00)
|
|
CX = color selector or key code, if required by request
|
|
Return: AX = first reported result
|
|
BX = second result
|
|
CX = third result, if applicable (unchanged otherwise)
|
|
DX = fourth result, if applicable (unchanged otherwise)
|
|
Desc: get device status reports equivalent to those for Esc [#n sequences
|
|
while bypassing any device redirection and avoiding the need to
|
|
parse the returned result
|
|
Note: the report request code in BL is identical to the number in the
|
|
corresponding Esc [#n sequence
|
|
SeeAlso: AX=1A00h/BX=414Eh,AX=1AACh
|
|
--------V-2F1AADDX0000-----------------------
|
|
INT 2F U - AVATAR.SYS v0.11 - ???
|
|
AX = 1AADh
|
|
DX = 0000h
|
|
CX = subfunction (00h-0Ch)
|
|
???
|
|
Return: AX = 0000h if DX was nonzero
|
|
???
|
|
SeeAlso: AX=1A00h/BX=4156h,AX=1A72h
|
|
--------m-2F1B00-----------------------------
|
|
INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - INSTALLATION CHECK
|
|
AX = 1B00h
|
|
Return: AL = FFh if installed
|
|
Note: XMA2EMS.SYS extension is only installed if DOS has page frames to hide.
|
|
This extension hooks onto INT 67/AH=58h and returns from that call data
|
|
which excludes the physical pages being used by DOS.
|
|
SeeAlso: AH=1Bh"FRAME INFO"
|
|
--------m-2F1B-------------------------------
|
|
INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - GET HIDDEN FRAME INFORMATION
|
|
AH = 1Bh
|
|
AL <> 00h
|
|
DI = hidden physical page number
|
|
Return: AX = FFFFh if failed (no such hidden page)
|
|
AX = 0000h if OK, then
|
|
ES = segment of page frame
|
|
DI = physical page number
|
|
Notes: this corresponds to the data edited out of the INT 67/AH=58h call
|
|
FASTOPEN makes this call with AL = FFh
|
|
SeeAlso: AX=1B00h
|
|
--------V-2F2300-----------------------------
|
|
INT 2F - DR DOS 5.0 GRAFTABL - INSTALLATION CHECK
|
|
AX = 2300h
|
|
Return: AH = FFh
|
|
Note: this installation check does not follow the usual format
|
|
SeeAlso: AH=23h,AX=2E00h
|
|
--------V-2F23-------------------------------
|
|
INT 2F - DR DOS 5.0 GRAFTABL - GET GRAPHICS DATA
|
|
AH = 23h
|
|
AL nonzero
|
|
Return: AH = FFh
|
|
ES:BX -> graphics data (8 bytes for each character from 80h to FFh)
|
|
SeeAlso: AX=2300h,AX=2E00h
|
|
--------T-2F2700-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - INSTALLATION CHECK
|
|
AX = 2700h
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
|
|
taskswitching and multitasking modes
|
|
--------T-2F2701-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - GET STATUS
|
|
AX = 2701h
|
|
Return: AX = maximum simultaneous tasks
|
|
BX = index into TASK_IDS of current foreground task
|
|
CX = currently-active tasks
|
|
DX = version number (DL = major, DH = minor)
|
|
(DR DOS 6.0 = 0001h, Novell DOS 7 = 0002h)
|
|
ES:SI -> TASK_IDS
|
|
ES:DI -> name table (array of 8-byte names, NUL-terminated if <8 chars)
|
|
Notes: do not attempt to create a new task if CX == AX
|
|
the task's index is its position on the task menu, while its ID is the
|
|
position within the internal task name table
|
|
SeeAlso: AX=2714h,AX=2716h
|
|
--------T-2F2702-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - GET PER-TASK EMS LIMIT
|
|
AX = 2702h
|
|
Return: DX = maximum pages INT 67/AH=42h will report available
|
|
Note: TaskMAX does not limit EMS allocations other than by limiting the
|
|
amount which is reported as being available at a given time
|
|
SeeAlso: AX=2703h,INT 67/AH=42h
|
|
--------T-2F2703-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - SET PER-TASK EMS LIMIT
|
|
AX = 2703h
|
|
DX = maximum pages INT 67/AH=42h should report available
|
|
Return: DX = new maximum for reporting
|
|
Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in
|
|
both taskswitching and multitasking modes
|
|
SeeAlso: AX=2702h,INT 67/AH=42h
|
|
--------T-2F2704-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - REGISTER/UNREGISTER TASK MANAGER
|
|
AX = 2704h
|
|
DL = subfunction
|
|
00h unregister task manager
|
|
01h register task manager
|
|
Return: DL = status
|
|
00h registered
|
|
01h unregistered
|
|
Notes: a task manager replaces TaskMAX's menu system with its own user
|
|
interface; while one is registered, the TaskMAX hotkeys and
|
|
Ctrl-Alt-Del invoke the manager rather than the built-in menu system
|
|
unregister the task manager before terminating it
|
|
SeeAlso: AX=2705h
|
|
Index: hotkeys;TaskMAX
|
|
--------T-2F2705-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - ENABLE/DISABLE DIRECT SWITCHING
|
|
AX = 2705h
|
|
DL = subfunction
|
|
00h disable keystrokes for switching to next/prev/specified task
|
|
01h enable
|
|
Return: nothing
|
|
Note: should only be called by a registered task manager (see AX=2704h)
|
|
SeeAlso: AX=2704h,AX=2706h
|
|
--------T-2F2706-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO SPECIFIED TASK
|
|
AX = 2706h
|
|
DX = task index (see AX=2701h) of task to be activated
|
|
Return: DX = task index of previously-active task
|
|
Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in
|
|
both taskswitching and multitasking modes
|
|
SeeAlso: AX=2705h,AX=2707h,AX=2715h
|
|
--------T-2F2707-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - CREATE NEW TASK
|
|
AX = 2707h
|
|
DS:DX -> ASCIZ pathname of executable
|
|
ES:BX -> parameter block (see #02738)
|
|
CX = number of ticks before automatic return to task manager
|
|
(0000h = run until termination or explicitly switched)
|
|
Return: DX = new task's task index (FFFFh if task terminated)
|
|
SeeAlso: AX=2706h,AX=2708h
|
|
|
|
Format of TaskMAX parameter block:
|
|
Offset Size Description (Table 02738)
|
|
00h WORD reserved, should be 0000h
|
|
02h DWORD pointer to command tail to be copied into child's PSP
|
|
06h DWORD pointer to first FCB to be copied into child's PSP
|
|
0Ah DWORD pointer to second FCB to be copied into child's PSP
|
|
--------T-2F2708-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - DELETE TASK
|
|
AX = 2708h
|
|
DX = task index
|
|
Return: DX = FFFFh (task deleted)
|
|
Notes: this call should only be used for abnormal task termination, after
|
|
first checking for open files with AX=270Ch; should not be used
|
|
with programs that allocate EMS or XMS memory
|
|
switches to specified task first
|
|
SeeAlso: AX=2707h
|
|
--------T-2F2709-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - NAME TASK
|
|
AX = 2709h
|
|
DX = task index
|
|
DS:SI -> 8-byte name (8 NULs = remove name)
|
|
Return: AL = task flags
|
|
00h ID unused or task terminated
|
|
01h ID in use, task name table entry valid
|
|
81h ID in use, task name fixed
|
|
BX = task ID
|
|
ES:DI -> name in task name table (see AX=2701h)
|
|
Note: the task retains the given name until it terminates or the name is
|
|
removed by specifying a name of 8 NULs.
|
|
SeeAlso: AX=2701h,AX=2707h
|
|
--------T-2F270A-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK INDEX TO TASK ID
|
|
AX = 270Ah
|
|
DX = task index
|
|
Return: DX = task ID (FFFFh if index invalid)
|
|
Note: task IDs stay constant, while indexes can change when other tasks are
|
|
deleted
|
|
SeeAlso: AX=2701h,AX=270Bh
|
|
--------T-2F270B-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK ID TO TASK INDEX
|
|
AX = 270Bh
|
|
DX = task ID
|
|
Return: DX = task index (FFFFh if task not active)
|
|
Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
|
|
taskswitching and multitasking modes
|
|
SeeAlso: AX=270Ah
|
|
--------T-2F270C-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - CHECK OPEN FILES
|
|
AX = 270Ch
|
|
DX = task index
|
|
Return: AX = number of files currently open for specified task
|
|
SeeAlso: AX=2708h
|
|
--------T-2F270D-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - CHECK IF TASK RUNNING PRIMARY COMMAND INTERPRETER
|
|
AX = 270Dh
|
|
DX = task index
|
|
Return: DX = status
|
|
0000h if primary command interpreter (COMMAND.COM, etc.) running
|
|
0001h if not in root shell for task
|
|
Note: TaskMAX will return 0001h if the specified task has spawned another
|
|
command interpreter with AX=2707h
|
|
SeeAlso: AX=2707h,AX=270Ch
|
|
--------T-2F270E-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - GET/SET TEXT PASTE LEAD-IN
|
|
AX = 270Eh
|
|
CX = length of string (max 15 keystrokes, 0000h to get current string)
|
|
DS:SI -> pasting lead-in string (character/scan-code pairs)
|
|
Return: ES:DI -> current lead-in string
|
|
Note: the specified sequence of keystrokes is sent to the application before
|
|
every line of a text-mode spreadsheet paste
|
|
SeeAlso: AX=270Fh,AX=2710h,AX=2713h
|
|
--------T-2F270F-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE LEAD-IN
|
|
AX = 270Fh
|
|
CX = length of string (max 15 keystrokes, 0000h to get current string)
|
|
DS:SI -> pasting lead-in string (character/scan-code pairs)
|
|
Return: ES:DI -> current lead-in string
|
|
Note: the specified sequence of keystrokes is sent to the application before
|
|
every number in a numeric-mode spreadsheet paste
|
|
SeeAlso: AX=270Eh,AX=2710h,AX=2711h,AX=2713h
|
|
--------T-2F2710-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - GET/SET PASTE LINE TERMINATOR STRING
|
|
AX = 2710h
|
|
CX = length of string (max 15 keystrokes, 0000h to get current string)
|
|
DS:SI -> pasting terminator string (character/scan-code pairs)
|
|
Return: ES:DI -> current terminator string
|
|
Note: the specified sequence of keystrokes is sent to the application after
|
|
every line of a spreadsheet paste operation
|
|
SeeAlso: AX=270Eh,AX=270Fh,AX=2713h
|
|
--------T-2F2711-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE DECIMAL POINT
|
|
AX = 2711h
|
|
DX = ASCII code for separator (FFFFh to get current)
|
|
Return: DL = current separator character
|
|
SeeAlso: AX=270Fh
|
|
--------T-2F2712-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - INITIATE EXPORTING TASK DATA
|
|
AX = 2712h
|
|
DX = task index
|
|
--------T-2F2713-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - INITIATE PASTE OPERATION
|
|
AX = 2713h
|
|
DX = task index
|
|
CX = paste mode
|
|
0000h alphanumeric
|
|
0001h numeric
|
|
0002h text
|
|
SeeAlso: AX=270Eh,AX=270Fh,AX=2710h,AX=2711h
|
|
--------T-2F2714-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - GET SWAP SPACE INFO
|
|
AX = 2714h
|
|
Return: CX = total KB of swap space
|
|
DX = available KB of swap space
|
|
Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
|
|
taskswitching and multitasking modes
|
|
SeeAlso: AX=2701h
|
|
--------T-2F2715-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO TASK MANAGER
|
|
AX = 2715h
|
|
Return: only after calling task is again selected
|
|
SeeAlso: AX=2706h
|
|
--------T-2F2716-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - GET PASTE BUFFER STATUS
|
|
AX = 2716h
|
|
Return: AX = 0000h if AX=2716h,AX=2717h,AX=2718h supported
|
|
CX = bytes in paste buffer
|
|
DX = current generation number (updated after every copy operation)
|
|
BUG: Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
|
|
this call (it does support the remainder of the TaskMAX API)
|
|
SeeAlso: AX=2701h,AX=2713h,AX=2714h,AX=2717h,AX=2718h
|
|
--------T-2F2717-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - PASTE DATA DIRECTLY TO APPLICATION BUFFER
|
|
AX = 2717h
|
|
CX = bytes in destination buffer
|
|
ES:DI -> destination buffer
|
|
Return: AX = 0000h if function supported
|
|
CX = bytes actually copied (FFFFh if buffer too small)
|
|
DX = current generation number for paste buffer
|
|
BUG: Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
|
|
this call (it does support the remainder of the TaskMAX API)
|
|
Note: the destination buffer may be too small if another task adds more data
|
|
to the paste buffer after the AX=2716h call but before this call
|
|
SeeAlso: AX=2713h,AX=2716h,AX=2718h
|
|
--------T-2F2718-----------------------------
|
|
INT 2F - DR DOS 6.0 TaskMAX - COPY DATA DIRECTLY INTO PASTE BUFFER
|
|
AX = 2718h
|
|
CX = bytes in source buffer
|
|
DS:SI -> source buffer (plain ASCII, lines terminated with CR LF)
|
|
Return: AX = 0000h if function supported
|
|
CX = bytes actually copied
|
|
DX = current generation number for paste buffer
|
|
BUG: Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
|
|
this call (it does support the remainder of the TaskMAX API)
|
|
SeeAlso: AX=2712h,AX=2716h,AX=2717h
|
|
--------T-2F2719-----------------------------
|
|
INT 2F - Novell DOS 7 TaskMGR - NOP
|
|
AX = 2719h to 271Bh
|
|
--------T-2F271C-----------------------------
|
|
INT 2F U - Novell DOS 7 TaskMGR - ???
|
|
AX = 271Ch
|
|
DX = ???
|
|
bit 0: ???
|
|
Return: ???
|
|
---if DX bit 0 set---
|
|
AX = 0031h
|
|
CX = 0000h
|
|
BUG: if the task switcher is running, and DX bit 0 is set on call, this
|
|
function will crash because its exit code attempts to pop several
|
|
registers which are not pushed when DX bit 0 is set
|
|
--------m-2F2780CL01-------------------------
|
|
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - SUPERVISOR MODULE
|
|
AX = 2780h
|
|
CL = 01h (module: Supervisor)
|
|
CH = subfunction
|
|
00h unused
|
|
Return: CX = status (0002h) (see #02739)
|
|
01h unused
|
|
Return: CX = status (0002h) (see #02739)
|
|
02h "Z_ModuleReg" register an OS module
|
|
EBX = module number (0005h-000Fh)
|
|
DS:EDX -> module descriptor (see #02741)
|
|
Return: CX = status (0000h,0030h) (see #02739)
|
|
03h allocate SYSDAT memory
|
|
DX = number of ??? to allocate
|
|
Return: CX = status (0000h,0003h) (see #02739)
|
|
04h get selector to SYSDAT
|
|
Return: CX = 0000h (successful)
|
|
BX = selector for EMM386 data segment
|
|
EBX high word cleared
|
|
05h "Z_MoveReal" relocate segment into extended memory
|
|
DS:EDX -> descriptor parameter block
|
|
Return: ECX = status (00h,03h,31h,32h) (see #02739)
|
|
---if successful---
|
|
parameter block filled
|
|
06h "Z_Reboot" return to real mode via triple fault
|
|
07h debugger break
|
|
Note: calls INT 03, then INT 21/AH=02h to output a question
|
|
mark
|
|
08h "X_ForeCheck" check if domain is in foreground
|
|
Return: CX = 0000h (successful)
|
|
EBX = ??? (0 or 2)
|
|
09h register VxD with system
|
|
0Ah unload VxD hook
|
|
0Bh indicate end of initialization phase
|
|
Return: CX = status (0002h) (see #02739)
|
|
0Ch "F_AllocWindow" allocate 4K mapping window
|
|
0Dh "F_RegisterBoot" register reboot addresses
|
|
EBX = ???
|
|
EDX = ???
|
|
Return: ???
|
|
0Eh "F_EnquireBoot" check if reboot active
|
|
Return: CX = 0000h (successful)
|
|
BL = ??? \ or BX = 0000h
|
|
BH = ??? /
|
|
0Fh get debugging level
|
|
Return: CX = 0000h (successful)
|
|
EBX = new value for debugging level
|
|
10h set debugging level
|
|
EDX = ???
|
|
Return: CX = 0000h (successful)
|
|
EBX = old value of debugging level
|
|
11h installation check (documented)
|
|
Return: CX = status
|
|
0000h if multitasker is installed
|
|
EBX = version (0100h for v1.00)
|
|
1101h if multitasker is not present
|
|
12h "F_V86BPInstall" install V86 breakpoint
|
|
DX = ???
|
|
Return: CX = 0000h (successful)
|
|
AX = old value of ???
|
|
13h "F_V86BPRemove" remove V86 breakpoint
|
|
Return: CX = status (0000h,003Fh) (see #02739)
|
|
AX = ???
|
|
14h "F_V86BPOffer" indicate INT 03 to be used as V86 breakpoint
|
|
EDX = linear address ??? of INT 03 instruction for breakpoint
|
|
Return: CX = status (0000h,003Fh) (see #02739)
|
|
15h "F_LoaderCleanup" offer opportunity to clean up
|
|
BX = segment of ???
|
|
Return: CX = 0000h (successful)
|
|
BX = segment of ???
|
|
16h "F_RegisterVxDWindow" register VxD mapping window
|
|
17h "F_RegisterPNW" register Personal NetWare information
|
|
EBX = subfunction (0-2)
|
|
Return: CX = status (0002h if EBX>2) (see #02739)
|
|
???
|
|
18h unused
|
|
Return: CX = status (0002h) (see #02739)
|
|
Return: CX = status (most subfunctions)
|
|
(E)AX and/or (E)BX contain return values, depending on function
|
|
Notes: called by DPMS.EXE and EMM386.EXE
|
|
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
|
|
because the request is handled on the initial trap to the memory
|
|
manager caused by INT instructions, this API must be invoked with
|
|
an actual INT 2F instruction instead of some simulation such as a
|
|
far call to the address in the interrupt vector table
|
|
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=02h,AX=2780h/CL=03h,AX=2780h/CL=04h
|
|
|
|
(Table 02739)
|
|
Values for Novell DOS 7 EMM386 function status:
|
|
0000h successful
|
|
0001h not implemented
|
|
0002h invalid subfunction
|
|
0003h unable to find memory
|
|
0004h invalid flag (semaphore) number
|
|
0005h flag (semaphore) overrun
|
|
0006h flag (semaphore) underrun
|
|
0007h no queue handles available
|
|
0009h no queue buffers available
|
|
000Ah queue is in use
|
|
000Bh invalid process handle
|
|
000Ch no process handles available
|
|
000Dh queue access not permitted
|
|
000Eh queue is empty
|
|
000Fh queue is full
|
|
0012h no memory handles available
|
|
0014h can't find process in process list
|
|
001Bh invalid memory handle
|
|
0023h unable to terminate process
|
|
002Ah flag set ignored
|
|
002Dh no more system flags
|
|
002Eh flag (semaphore) not in idle state
|
|
002Fh flag (semaphore) wait timed out
|
|
0030h bad module number in CL
|
|
0031h bad descriptor
|
|
invalid value for DESC_PB_SINFO in a descriptor parameter block
|
|
0032h no free descriptors
|
|
0033h error while locking/unlocking a page
|
|
0034h error getting or setting a page
|
|
0035h no pages available
|
|
0036h invalid domain
|
|
0037h process already frozen
|
|
0038h process not frozen
|
|
0039h fork failure (no registered swaplist)
|
|
003Ah page already free
|
|
003Bh page already allocated
|
|
003Ch unable to switch tasks
|
|
003Dh attempted to free critical section which is not active
|
|
003Eh too many active critical sections
|
|
003Fh ???
|
|
41FFh current domain is invalid, or no domain in context
|
|
42FFh domain ID is not a valid descriptor
|
|
43FFh domain creation still in progress
|
|
44FFh domain currently being deleted
|
|
45FFh task manager is busy, cannot unload it
|
|
46FFh task manager already loaded
|
|
47FFh task manager not yet loaded
|
|
48FFh cannot save/restore because prior switch not complete
|
|
49FFh console already has owner
|
|
4BFFh unsupported opcode
|
|
4CFFh 32-bit address prefix not supported
|
|
4FFFh timeout, but not on timer queue
|
|
50FFh unable to lock timer queue
|
|
53FFh unable to switch while in Global Message Mode
|
|
54FFh error while setting Global Message Mode
|
|
55FFh not in Global Message Mode
|
|
56FFh system already in Domain Message Mode
|
|
57FFh not in Domain Message Mode
|
|
58FFh unable to allocate timeout structure
|
|
59FFh unsupported video type
|
|
5AFFh function not handled by any VM
|
|
5BFFh error in Serial..Set call
|
|
5CFFh error in Parallel..Set call
|
|
5DFFh domain list overflowed
|
|
5FFFh unable to free domain while in nobuffers mode
|
|
|
|
Format of Novell DOS/OpenDOS EMM386 descriptor parameter block:
|
|
Offset Size Description (Table 02740)
|
|
00h DWORD "DESC_PB_BASE"
|
|
04h DWORD "DESC_PB_LIMIT"
|
|
08h WORD "DESC_PB_SEL"
|
|
0Ah BYTE "DESC_PB_MINFO"
|
|
0Bh BYTE "DESC_PB_SINFO"
|
|
SeeAlso: #02741
|
|
|
|
Format of Novell DOS/OpenDOS EMM386 module descriptor:
|
|
Offset Size Description (Table 02741)
|
|
00h 12 BYTEs descriptor parameter block (see #02740)
|
|
0Ch DWORD -> module entry point
|
|
Note: for function "Z_ModuleReg", only DESC_PB_SEL and the module entry point
|
|
need to be initialized before calling EMM386
|
|
SeeAlso: #02740
|
|
--------m-2F2780CL02-------------------------
|
|
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - REAL-TIME MONITOR
|
|
AX = 2780h
|
|
CL = 02h (module: Real-Time Monitor)
|
|
CH = subfunction
|
|
00h ???
|
|
???
|
|
Return: CX = status (0000h,0023h, others???) (see #02739)
|
|
BX = ??? (0000h if CX=0000h, FFFFh if CX=0023h)
|
|
Note: calls func 04h/sf 03h, func 04h/sf 1Eh,func 02h/sf 43h,
|
|
func 02h/sf 0Bh, and func 04h/sf 01h
|
|
01h "Z_PCountGet" get and clear count of dispatches
|
|
DX = ??? handle or 0000h for default
|
|
Return: CX = status (0000h,000Bh) (see #02739)
|
|
EBX = old value of ??? if successful
|
|
EDX destroyed
|
|
02h "Z_FlagWait" wait on semaphore
|
|
DX = index of semaphore???
|
|
Return: CX = status (0000h,0004h,0005h) (see #02739)
|
|
EBX = 0000FFFFh on error, 00000000h if successful
|
|
03h "Z_FlagSet" set a semaphore flag
|
|
DX = index of semaphore???
|
|
Return: CX = status (0000h,0004h,0006h) (see #02739)
|
|
BX = FFFFh on error, 0000h if successful
|
|
04h "X_QCreate" create a new queue
|
|
Return: CX = status (0000h,0007h,000Ah) (see #02739)
|
|
05h "X_QOpen" open queue for reading/writing
|
|
EDX -> ??? data (first 8 bytes seem to be name)
|
|
Return: CX = status (0000h,0009h,000Dh) (see #02739)
|
|
06h "X_QDelete" delete a queue
|
|
Note: calls fn 02h/subfn 05h, then fn 02h/subfn 40h
|
|
07h "X_QRead" read message from queue
|
|
EDX = ???
|
|
Return: CX = status (0000h,0009h,000Eh) (see #02739)
|
|
08h "X_QReadC" read message from queue, if any
|
|
EDX = ???
|
|
Return: CX = status (0000h,0009h,000Eh) (see #02739)
|
|
09h "X_QWrite" write message to queue
|
|
EDX = ???
|
|
Return: CX = status (0000h,0009h,000Fh) (see #02739)
|
|
0Ah "X_QWriteC" write message to queue, if space available
|
|
EDX = ???
|
|
Return: CX = status (0000h,0009h,000Fh) (see #02739)
|
|
0Bh "X_PDelay" put process to sleep for specified period
|
|
DX = number of clock ticks to sleep???
|
|
Return: CX = 0000h (successful)
|
|
0Ch "X_PDispatch" force a dispatch (run scheduler)
|
|
Return: CX = 0000h (successful)
|
|
0Dh "F_PTerm" terminate process???
|
|
Return: CX = status (0000h,0023h) (see #02739)
|
|
BX = FFFFh on error, 0000h if successful
|
|
Note: calls fn 04h/subfn 03h, fn 04h/subfn 1Eh,
|
|
fn 02h/subfn 43h, fn 02h/subfn 0Bh, fn 04h/sub 01h
|
|
0Eh "X_PCreate" create new process
|
|
???
|
|
Return: CX = status (0000h,000Ch) (see #02739)
|
|
EBX = ??? if successful
|
|
0Fh "Z_PPriorSet" set process priority
|
|
BX = ???
|
|
DX = ??? handle or 0000h for default
|
|
Return: CX = status (0000h,000Bh) (see #02739)
|
|
10h "X_PHandleGet" get current process handle
|
|
Return: CX = 0000h (successful)
|
|
BX = handle of default ???
|
|
EBX high word cleared
|
|
11h "X_PTerm" terminate process
|
|
DX = process handle or 0000h for current
|
|
BX = ??? (handle???)
|
|
Return: CX = status (0000h,000Bh,0014h) (see #02739)
|
|
12h "F_Sleep" ???
|
|
BX = ???
|
|
DX = ???
|
|
Return: CX = 0000h (successful)
|
|
13h "F_Wakeup" ???
|
|
DX = ???
|
|
Return: CX = status (see #02739)
|
|
14h "F_FindPDName" find process by name???
|
|
BX = ???
|
|
DX = ???
|
|
Return: CX = status (0000h,0014h) (see #02739)
|
|
BX = FFFFh on error, ??? if successful
|
|
15h "F_SetFlags" set ??? flags
|
|
BX = ??? (low two bits only)
|
|
DX = ??? handle or 0000h for default
|
|
Return: CX = status (0000h,000Bh) (see #02739)
|
|
BX = new value of ??? flags (entire word)
|
|
EBX high register cleared
|
|
16h "F_EndOfInterrupt" issue EOI to PIC
|
|
Return: CX = 0000h (successful)
|
|
17h "X_PTermOff" disable process termination
|
|
18h "X_PTermOK" enable process termination
|
|
19h "Z_FlagStatusGet" get semahprore's status
|
|
1Ah "F_QRdMX" ???
|
|
1Bh "F_QWrMX" ???
|
|
1Ch "Z_FlagAlloc" allocate a new semaphore
|
|
1Dh "Z_FlagFree" free semaphore
|
|
1Eh "X_FlagsMaxGet" get number of semaphores supported
|
|
1Fh "X_QReadNDC" non-destructive read from queue (peek)
|
|
20h "Z_FlagWWTO" wait on semaphore, with timeout
|
|
21h "F_UdaAlloc" ???
|
|
22h "F_UdaFree" ???
|
|
23h "X_PSuspend" suspend process
|
|
24h "X_PUnsuspend" restart process after suspension
|
|
25h "X_CritEnter" enter critical region
|
|
26h "X_CritExit" leave critical region
|
|
27h "F_PCreate" ???
|
|
28h "Z_PHandleListGet" get list of process handles
|
|
29h "Z_PNameGet" get process name
|
|
2Ah "Z_PStatusGet" get process status
|
|
2Bh "F_PDToDomain" get process' domain???
|
|
2Ch "Z_PPriorGet" get process priority
|
|
2Dh "F_QDList" get list of queues???
|
|
2Eh "Z_QNameGet" get queue's name
|
|
2Fh "X_QMsgLenGet" get message length of queue
|
|
30h "X_QMsgMaxGet" get message capacity of queue
|
|
31h "Z_QWriterGet" get handle of process waiting to write queue
|
|
32h "Z_QReaderGet" get handle of process waiting to read queue
|
|
33h "X_QMsgNumGet" get number of messages in queue
|
|
34h "Z_QFlagsGet" get queue's flags
|
|
35h "F_NameToQD" get queue by name???
|
|
36h "F_NameToPD" get process by name???
|
|
37h "X_MXCreate" create a mutex
|
|
38h "X_MXDelete" delete a mutex
|
|
39h "X_MXEnter" enter mutual-exclusion zone
|
|
3Ah "X_MXEnterC" enter mutual-exclusion zone if it is free
|
|
3Bh "X_MXExit" leave mutual-exclusion zone
|
|
3Ch "Z_TicksSet" set length of foreground time slices
|
|
3Dh "X_TickGet" get clock tick period
|
|
3Eh "F_ProcessID" ???
|
|
3Fh "X_QClose" close a queue
|
|
40h "F_QDispose" delete queue???
|
|
41h "F_PDToFlags" get process flags???
|
|
42h "F_PDToDParam" ???
|
|
43h "F_ReleaseMX" release mutex???
|
|
44h "F_SimulateInt" ???
|
|
45h "Z_QFlagsSet" set queue's flags
|
|
46h "F_TickRate" ???
|
|
47h ???
|
|
Return: CX = status (most subfunctions)
|
|
(E)AX and/or (E)BX contain return values, depending on function
|
|
Notes: called by DPMS.EXE and EMM386.EXE
|
|
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
|
|
because the request is handled on the initial trap to the memory
|
|
manager caused by INT instructions, this API must be invoked with
|
|
an actual INT 2F instruction instead of some simulation such as a
|
|
far call to the address in the interrupt vector table
|
|
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=03h,AX=2780h/CL=04h
|
|
--------m-2F2780CL03-------------------------
|
|
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - MEMORY
|
|
AX = 2780h
|
|
CL = 03h (module: Memory)
|
|
CH = subfunction
|
|
00h ???
|
|
01h "F_PdirGet" ???
|
|
02h "F_PdirSet" ???
|
|
03h "Z_PageAlloc" allocate a given page of memory
|
|
04h "F_PageAllocG" allocate global page???
|
|
05h "F_PageAllocI" allocate instance page???
|
|
06h "F_PtblRead" get page table???
|
|
07h "F_PtrlWrite" select page table???
|
|
08h "Z_PtblGet" read page table
|
|
09h "Z_PtblSet" change page table
|
|
0Ah "Z_PagesAlloc" allocate pages of memory
|
|
0Bh "Z_PageFree" free a given page of memory
|
|
0Ch "Z_MemAlloc" allocate a memory block
|
|
0Dh "Z_MemFree" release memory block
|
|
0Eh "Z_MemSizeGet" get size of memory block
|
|
0Fh "Z_MemResize" resize a memory block
|
|
10h "Z_DescAlloc" allocate a memory descriptor
|
|
11h "Z_DescFree" release a memory descriptor
|
|
12h "Z_DescGet" get details on memory descriptor
|
|
13h "Z_DescSet" set a memory descriptor
|
|
14h "Z_MemDescAlloc" allocate a memory block and its descriptor
|
|
15h "Z_MemDescFree" release a memory block and its descriptor
|
|
16h "Z_MemDescSizeGet" get size of memory block
|
|
17h "Z_MemDescResize" resize a memory block
|
|
18h "Z_PageLock" lock a page, with existing contents
|
|
19h "Z_PageUnlock" unlock a page
|
|
1Ah "Z_PageLockAny" lock a page, contents undefined
|
|
1Bh "Z_PageUnlockReuse" unlock page, reuse phsyical memory
|
|
1Ch "Z_PageLockNone" lock a page, no physical memory assigned
|
|
1Dh "Z_PageUnlockNone" unlock a page, don't reuse physical memory
|
|
1Eh "F_CallRealRaw" call real mode (SS:ESP supplied)
|
|
1Fh "F_IntRealRaw" perform real-mode interrupt (SS:ESP supplied)
|
|
20h "F_CallReal" call real mode with RETF frame
|
|
21h "F_IntReal" perform real-mode interrupt
|
|
22h "F_PagedCallReal" paged real-mode call
|
|
23h "F_PagedIntReal" paged real-mode interrupt
|
|
24h "F_CallIretReal" call real mode with IRET frame
|
|
25h "F_CallIretRealRaw" call real mode with IRET (SS:ESP supplied)
|
|
26h "F_CallProt16" call 16-bit protected-mode code
|
|
27h "F_CallProt32" call 32-bit protected-mode code
|
|
28h "F_IAddPage" add kernel instance data
|
|
29h "Z_PageDomLock" lock page in specific domain, preserve contents
|
|
2Ah "Z_PatgeDomUnlock" unlock page in specific domain
|
|
2Bh "Z_PageDomLockAny" lock page in specific domain, undef contents
|
|
2Ch "Z_PageDomUnlockReuse" unlock page in spec. domain,reuse ph.mem
|
|
2Dh "Z_PageDomLockNone" lock page in spec. domain, no phys memory
|
|
2Eh "Z_PageDomUnlockNone" unlock page in spec. domain, no phys. mem
|
|
2Fh "Z_GateAlloc" allocate a gate
|
|
30h "Z_GateFree" release a gate
|
|
31h "X_MemFreeGet" get total free memory
|
|
32h "X_MemTopGet" get highest memory address
|
|
33h "X_MemTotalGet" get total memory size
|
|
34h "F_DescRead" ???
|
|
35h "F_DescWrite" ???
|
|
36h "F_GetStack" ???
|
|
37h "F_SetStack" ???
|
|
Return: CX = status (most subfunctions)
|
|
(E)AX and/or (E)BX contain return values, depending on function
|
|
Notes: called by DPMS.EXE and EMM386.EXE
|
|
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
|
|
because the request is handled on the initial trap to the memory
|
|
manager caused by INT instructions, this API must be invoked with
|
|
an actual INT 2F instruction instead of some simulation such as a
|
|
far call to the address in the interrupt vector table
|
|
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=04h
|
|
--------m-2F2780CL04-------------------------
|
|
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - DOMAINS
|
|
AX = 2780h
|
|
CL = 04h (module: Domains)
|
|
CH = subfunction
|
|
00h "F_DAlloc" create new domain
|
|
01h "F_DFree" delete a domain
|
|
02h "X_DomHandleGetMy" get current domain handle
|
|
03h "F_DSet" switch to another domain
|
|
04h "Z_HandlerSWInt" install software-interrupt handler
|
|
05h "Z_HandlerPageFault" install page-fault handler
|
|
06h "Z_HandlerIOEx" install I/O exception handler
|
|
07h "Z_HandlerGenEx" install general exception handler
|
|
08h "Z_HandlerHWInt" install hardware interrupt handler
|
|
09h "Z_IOBitmapGet" get current domain's I/O bitmap entry
|
|
0Ah "Z_IOBitmapSet" set current domain's I/O bitmap entry
|
|
0Bh "Z_IOBitmapDomGet" get domain's I/O bitmap entry
|
|
0Ch "Z_IOBitmapDomSet" set domain's I/O bitmap entry
|
|
0Dh "Z_DomMemRead" read memory in another domain
|
|
0Eh "Z_DomMemWrite" write memory in another domain
|
|
0Fh "Z_PtblDomGet" read domain's page table
|
|
10h "Z_PtblDomSet" write domain's page table
|
|
11h "Z_InstanceSet" register instanced memory
|
|
12h "X_DomNProcessesGet" get number of processes in domain
|
|
13h "X_DomSuspend" suspend a domain
|
|
14h "Z_DomUnsuspend" resume execution of a domain
|
|
15h "Z_DomFork" make a copy of the current domain
|
|
16h "Z_DomTerm" terminate domain and all processes in it
|
|
17h "Z_HandlerUnlink" remove a handler
|
|
18h "Z_HandlerHWIntDflt" install default hardware interrupt handler
|
|
19h "Z_HandlerVHWInt" install virtual hardware interrupt handler
|
|
1Ah "Z_HandlerVHWIntDflt" install default virtual hware int handler
|
|
1Bh "Z_HandlerSwapIn" install swap-in handler
|
|
1Ch "Z_HandlerSwapOut" install swap-out handler
|
|
1Dh "Z_EndOfInterrupt" signal EOI
|
|
1Eh ???
|
|
1Fh "Z_HandlerPCreate" install process-creation handler
|
|
20h "Z_HandlerPTerm" install process-termination handler
|
|
21h "Z_DomRootProcessGet" get domain's root process' handle
|
|
22h "F_DForeground" domain has just switched to foreground
|
|
23h "F_DBackground" domain has just switched to background
|
|
24h "F_MapHMA" map domain's HMA
|
|
25h "F_AddInstData" add DOS instance data
|
|
26h "X_DomMemFreeGet" get free memory in a domain
|
|
27h "X_DomMemUsedGet" get memory used by current domain
|
|
28h "Z_DomMemMaxGet" get per-domain memory limit
|
|
29h "Z_DomMemMaxSet" set per-domain memory limit
|
|
2Ah "F_ReflectInt21" protected-mode INT 21 support
|
|
2Bh "Z_DomHandleGet" get domain for a process
|
|
2Ch ???
|
|
2Dh ???
|
|
2Eh ???
|
|
2Fh ???
|
|
30h ???
|
|
31h ???
|
|
32h ???
|
|
Return: CX = status (most subfunctions)
|
|
(E)AX and/or (E)BX contain return values, depending on function
|
|
Notes: called by DPMS.EXE and EMM386.EXE
|
|
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
|
|
because the request is handled on the initial trap to the memory
|
|
manager caused by INT instructions, this API must be invoked with
|
|
an actual INT 2F instruction instead of some simulation such as a
|
|
far call to the address in the interrupt vector table
|
|
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
|
|
--------m-2F2780CL05-------------------------
|
|
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - VIRTUAL MACHINES
|
|
AX = 2780h
|
|
CL = 05h (module: VM)
|
|
CH = function
|
|
00h "F_VMProtInit" internal protected-mode initialization
|
|
01h "Z_TMLoad" load task manager
|
|
02h "Z_TMUnload" unload task manager
|
|
03h "Z_VMBackSet" send virtual machine to background
|
|
04h "Z_VMForeSet" send virtual machine to foreground
|
|
05h "Z_VMSaveEnable" enable saving virtual machine
|
|
06h "Z-VMSaveDisable" disable saving virtual machine
|
|
07h "Z_TMInit" intialize task manager
|
|
08h "Z_TMHotKeyGet" get task manager hotkey
|
|
09h "Z_TMHitKeyEnable" restart scanning for task manager key
|
|
0Ah "Z_TMHotKeyDisable" stop scanning for task manager key
|
|
0Bh "X_ForeGet" get current foreground domain
|
|
0Ch "F_DMAHandlerEnable" (re)enable DMA address translation
|
|
0Dh "F_DMAHandlerDisable" disable DMA address translation
|
|
0Eh "Z_SerialTimeoutGet" set serial port timeout
|
|
0Fh "Z_ParallelTimeoutSet" set parallel port timeout
|
|
10h "F_VCPIEntry" domain is entering VCPI mode
|
|
11h "F_VCPIExit" domain is leaving VCPI mode
|
|
12h "X_MsgGlobalEnter" enter Global Message Mode
|
|
13h "X_MsgGlobalDisplay" display global message
|
|
14h "X_MsgGlobalExit" leave Global Message Mode
|
|
15h "X_MsgDomEnter" enter Domain Message Mode
|
|
16h "X_MsgDomDisplay" display domain-specific message
|
|
17h "X_MsgDomExit" leave Domain Message Mode
|
|
18h "X_MsgFatalDisplay" display fatal error message
|
|
19h "Z_SerialBaseSet" set serial port address
|
|
1Ah "Z_ParallelBaseSet" set parallel port address
|
|
1Bh "Z_SerialIRQSet" set serial port IRQ
|
|
1Ch "Z_ParallelIRQSet" set parallel port IRQ
|
|
1Dh "F_ResetVideo" emergency video system reset
|
|
1Eh "F_SetMouseIRQ" set which IRQ is used by mouse
|
|
1Fh "F_CheckNotIdle" check whether system is idle
|
|
20h "F_GetMouseInfo"
|
|
21h "Z_SerialOwnerGet" get serial port owner
|
|
22h "Z_SerialTimeoutGet" get serial port timeout
|
|
23h "Z_ParallelOwnerGet" get parallel port owner
|
|
24h "Z_ParallelTimeoutGet" get parallel port timeout
|
|
???
|
|
Return: ???
|
|
Notes: called by DPMS.EXE and EMM386.EXE
|
|
the handler for this function may be set by one of the subfunctions
|
|
of AX=2780h/CL=01h; the default handler returns AX=BX=FFFFh and
|
|
CX=0001h (see #02739)
|
|
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
|
|
because the request is handled on the initial trap to the memory
|
|
manager caused by INT instructions, this API must be invoked with
|
|
an actual INT 2F instruction instead of some simulation such as a
|
|
far call to the address in the interrupt vector table
|
|
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
|
|
--------m-2F2780CL06-------------------------
|
|
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - DPMI SERVICES
|
|
AX = 2780h
|
|
CL = 06h
|
|
CH = function
|
|
00h "F_InitDPMI" used for internal initialization
|
|
01h "F_DescAllocLDT" allocate LDT descriptor
|
|
02h "F_DescFreeLDT" free LDT descriptor
|
|
03h "F_DescGetLDT" get details on LDT descriptor
|
|
04h "F_DescSetLDT" set up LDT descriptor
|
|
05h "F_DescAllocInt21" allocate descriptor for PM INT 21
|
|
06h "F_WhereIsDPMI" get address of DPMI global data
|
|
Return: ???
|
|
Notes: called by DPMS.EXE and EMM386.EXE
|
|
the handler for this function may be set by one of the subfunctions
|
|
of AX=2780h/CL=01h; the default handler returns AX=BX=FFFFh and
|
|
CX=0001h (see #02739)
|
|
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
|
|
because the request is handled on the initial trap to the memory
|
|
manager caused by INT instructions, this API must be invoked with
|
|
an actual INT 2F instruction instead of some simulation such as a
|
|
far call to the address in the interrupt vector table
|
|
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
|
|
--------m-2F2780-----------------------------
|
|
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - AVAILABLE FOR APPS
|
|
AX = 2780h
|
|
CL = function (07h-0Fh)
|
|
???
|
|
Return: ???
|
|
Notes: called by DPMS.EXE and EMM386.EXE
|
|
the handlers for each of these functions may be set individually by
|
|
one of the subfunctions of AX=2780h/CL=01h; the default handlers
|
|
return with all registers unchanged
|
|
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
|
|
because the request is handled on the initial trap to the memory
|
|
manager caused by INT instructions, this API must be invoked with
|
|
an actual INT 2F instruction instead of some simulation such as a
|
|
far call to the address in the interrupt vector table
|
|
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
|
|
--------T-2F2781-----------------------------
|
|
INT 2F U - Novell DOS 7 TaskMGR - BEGIN CRITICAL SECTION???
|
|
AX = 2781h
|
|
Return: ???
|
|
SeeAlso: AX=2782h
|
|
--------T-2F2782-----------------------------
|
|
INT 2F U - Novell DOS 7 TaskMGR - END CRITICAL SECTION???
|
|
AX = 2782h
|
|
Return: ???
|
|
SeeAlso: AX=2781h
|
|
--------m-2F2783-----------------------------
|
|
INT 2F U - Novell DOS 7 - EMM386.EXE - GET ???
|
|
AX = 2783h
|
|
Return: AX = ???
|
|
BX = ???
|
|
--------T-2F278F-----------------------------
|
|
INT 2F U - Novell DOS 7 TaskMGR - ??? API
|
|
AX = 278Fh
|
|
as for INT 2F/AX=2780h
|
|
Return: as for INT 2F/AX=2780h
|
|
Note: Novell DOS 7 TaskMGR passes this call through to INT 2F/AX=2780h
|
|
without changing any other registers
|
|
SeeAlso: AX=2780h/CL=01h,AX=2782h
|
|
--------F-2F2A-------------------------------
|
|
INT 2F - Gammafax DOS Dispatcher INTERFACE
|
|
AH = 2Ah
|
|
Note: details not available at this time
|
|
SeeAlso: AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB00h,AX=CBDDh,INT 66"BitFax"
|
|
--------V-2F2E00-----------------------------
|
|
INT 2F U - Novell DOS 7 - GRAFTABL - INSTALLATION CHECK
|
|
AX = 2E00h
|
|
Return: AH = FFh if installed
|
|
Note: this installation check does not follow the usual format of setting
|
|
AL to FFh
|
|
SeeAlso: AX=2300h,AH=2Eh"GRAFTABL"
|
|
--------V-2F2E-------------------------------
|
|
INT 2F U - Novell DOS 7 - GRAFTABL - GET FONT TABLE
|
|
AH = 2Eh
|
|
AL nonzero
|
|
Return: AH = FFh if installed
|
|
ES:BX -> graphics data (8 bytes per character from 80h to FFh)
|
|
SeeAlso: AX=2E00h,AH=23h"GRAFTABL"
|
|
--------t-2F3900-----------------------------
|
|
INT 2F - Kingswood TSR INTERFACE - COMPATIBILITY MODE
|
|
AX = 3900h
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh one or more TSRs using this interface is installed
|
|
DX may be destroyed
|
|
Note: this function is provided to that the multiplex number will appear used
|
|
to other programs
|
|
SeeAlso: AH=39h/BL=00h
|
|
--------t-2F39--BL00-------------------------
|
|
INT 2F - Kingswood TSR INTERFACE - INSTALLATION CHECK
|
|
AH = 39h
|
|
BL = 00h
|
|
AL = TSR ID number (01h-FFh, currently only 01h-1Bh used) (see #02742)
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
DX = segment address of resident module
|
|
Note: All of Kingswood Software's TSRs use this interface. Usually the
|
|
resident module is installed by allocating a block of upper memory,
|
|
setting its owner ID to 000Ah (used by DOS), and filling the MCB name
|
|
field with the TSR's name.
|
|
SeeAlso: #02743,AX=3900h,AH=39h/BL=01h
|
|
|
|
(Table 02742)
|
|
Values for Kingswood TSR ID number:
|
|
01h TSR Windows
|
|
02h NOBUSY
|
|
03h CD STACK
|
|
04h DISK WATCH
|
|
05h PUSHBP
|
|
06h ALIAS
|
|
07h KEYMACRO
|
|
08h SLOWDOWN
|
|
09h ANSIGRAB
|
|
0Ah TEE
|
|
0Bh FASTMOUS
|
|
0Ch EXTWILD
|
|
0Dh BREAKOUT
|
|
0Eh STOPDISK
|
|
0Fh MEMINIT
|
|
10h JANUSEXT
|
|
11h CAPS
|
|
12h ANSI
|
|
13h TRAPPER
|
|
14h EATMEM
|
|
15h WPJOKE
|
|
16h SHOWDOS
|
|
17h LOGINTS
|
|
18h BLANKVGA
|
|
19h SWAPEXEC
|
|
1Ah SHELL
|
|
1Bh TSRGAMES
|
|
|
|
Format of Kingswood TSR modules:
|
|
Offset Size Description (Table 02743)
|
|
00h 4 BYTEs signature "FTSR"
|
|
04h WORD segment address of this module (used to check validity)
|
|
06h WORD number of words to skip (usually 0000h if no PSP present)
|
|
08h N WORDs module-defined data that must be at a fixed segment offset
|
|
(usually only a PSP if file access is required)
|
|
5N BYTEs interrupt list (see #02744)
|
|
BYTE FFh terminator
|
|
|
|
Format of Kingswood TSR interrupt list entry:
|
|
Offset Size Description (Table 02744)
|
|
00h BYTE interrupt number (00h-FEh)
|
|
01h WORD offset within segment of DWORD pointer to previous interrupt
|
|
03h WORD offset within segment of begin of interrupt handler code
|
|
--------t-2F39--BL01-------------------------
|
|
INT 2F - Kingswood TSR INTERFACE - REMOVAL CHECK
|
|
AH = 39h
|
|
BL = 01h
|
|
AL = TSR ID number (01h-FFh) (see #02742)
|
|
Return: AL = status
|
|
00h not ready to be removed
|
|
FFh resident module may be removed by deassigning the interrupts
|
|
hooked by the TSR and deallocating the TSR's memory block
|
|
AH,BX,CX,DX,ES may be destroyed
|
|
SeeAlso: AX=3900h,AH=39h/BL=00h
|
|
--------t-2F39-------------------------------
|
|
INT 2F - Kingswood TSR INTERFACE - APPLICATION-SPECIFIC FUNCTION CALLS
|
|
AH = 39h
|
|
BL = function number (02h-FFh)
|
|
AL = TSR ID number (01h-FFh) (see #02742)
|
|
CX,DX,SI,DI,DS,ES may contain parameters
|
|
BH reserved for use by the function dispatcher
|
|
Return: as appropriate for the called function
|
|
SeeAlso: AX=3900h,AH=39h/BL=00h,AX=3901h/BL=02h
|
|
--------r-2F3901BL02-------------------------
|
|
INT 2F - Kingswood TSR Windows - OPEN WINDOW
|
|
AX = 3901h
|
|
BL = 02h
|
|
Return: AX = error code (0000h if successful)
|
|
SI,DI,DS,ES preserved
|
|
Notes: opens the next TSR window on top of any others. Only three
|
|
TSR windows can be opened at any one time. The three windows
|
|
are all 40x11 characters, partly overlapping.
|
|
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=03h,AX=3901h/BL=05h,AX=3901h/BL=06h
|
|
--------r-2F3901BL03-------------------------
|
|
INT 2F - Kingswood TSR Windows - HIDE WINDOWS
|
|
AX = 3901h
|
|
BL = 03h
|
|
Return: AX = error code (0000h if successful)
|
|
SI,DI,DS,ES preserved
|
|
Notes: Hide any visible TSR windows from view.
|
|
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=05h
|
|
--------r-2F3901BL04-------------------------
|
|
INT 2F - Kingswood TSR Windows - SHOW WINDOWS
|
|
AX = 3901h
|
|
BL = 04h
|
|
Return: AX = error code (0000h if successful)
|
|
SI,DI,DS,ES preserved
|
|
Notes: Re-display all TSR windows after a HIDE WINDOWS call.
|
|
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=03h
|
|
--------r-2F3901BL05-------------------------
|
|
INT 2F - Kingswood TSR Windows - CLOSE WINDOW
|
|
AX = 3901h
|
|
BL = 05h
|
|
Return: AX = error code (0000h if successful)
|
|
SI,DI,DS,ES preserved
|
|
Notes: Close the last opened TSR window.
|
|
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
|
|
--------r-2F3901BL06-------------------------
|
|
INT 2F - Kingswood TSR Windows - SET WINDOW TITLE
|
|
AX = 3901h
|
|
BL = 06h
|
|
DS:SI -> title string
|
|
Return: AX = error code (0000h if successful)
|
|
SI,DI,DS,ES preserved
|
|
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
|
|
--------r-2F3901BL07-------------------------
|
|
INT 2F - Kingswood TSR Windows - POSITION CURSOR
|
|
AX = 3901h
|
|
BL = 07h
|
|
CH = Y coordinate (0-10)
|
|
CL = X coordinate (0-39)
|
|
Return: AX = error code (0000h if successful)
|
|
SI,DI,DS,ES preserved
|
|
Note: the hardware cursor is always disabled when a TSR window is opened;
|
|
this call only sets a text position
|
|
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=08h,AX=3901h/BL=09h
|
|
--------r-2F3901BL08-------------------------
|
|
INT 2F - Kingswood TSR Windows - DISPLAY STRING
|
|
AX = 3901h
|
|
BL = 08h
|
|
DS:SI -> string
|
|
Return: AX = error code (0000h if successful)
|
|
SI,DI,DS,ES preserved
|
|
Notes: The text is not clipped.
|
|
This routine understands Tab, NewLine and Carriage Return
|
|
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
|
|
--------r-2F3901BL09-------------------------
|
|
INT 2F - Kingswood TSR Windows - SCROLL WINDOW
|
|
AX = 3901h
|
|
BL = 09h
|
|
CL = scroll direction: 01h up, FFh down, 00h clear window
|
|
Return: AX = error code (0000h if successful)
|
|
SI,DI,DS,ES preserved
|
|
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
|
|
--------r-2F3901BL0A-------------------------
|
|
INT 2F - Kingswood TSR Windows - SOUND BEEPER
|
|
AX = 3901h
|
|
BL = 0Ah
|
|
DX = sound divisor, or 0 for silence.
|
|
(divide 1843200 by required frequency to get value for DX)
|
|
CL = sound length in 18.2 Hz clock ticks
|
|
Return: AX = error code (0000h if successful)
|
|
SI,DI,DS,ES preserved
|
|
SeeAlso: AH=39h/BL=00h
|
|
--------r-2F3901BL0B-------------------------
|
|
INT 2F - Kingswood TSR Windows - ADD OR REMOVE USER
|
|
AX = 3901h
|
|
BL = 0Bh
|
|
CL = number of users increment: +1 if adding a new user
|
|
-1 if removing a user
|
|
Return: AX = error code (0000h if successful)
|
|
SI,DI,DS,ES preserved
|
|
Note: the TSR windows resident module may only be removed when the internal
|
|
user count is zero
|
|
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
|
|
--------V-2F3912BL03-------------------------
|
|
INT 2F - Kingswood ANSI display driver - SET COMPATIBILITY MODE
|
|
AX = 3912h
|
|
BL = 03h
|
|
CL = new mode (00h fast, FFh BIOS)
|
|
Return: AL = old compatibility mode
|
|
SI,DI,DS,ES preserved
|
|
SeeAlso: AX=3900h,AX=3912h/BL=04h
|
|
--------V-2F3912BL04-------------------------
|
|
INT 2F - Kingswood ANSI display driver - SET FLAGS
|
|
AX = 3912h
|
|
BL = 04h
|
|
CL = new flags (see #02745)
|
|
Return: AL = old flags
|
|
SI,DI,DS,ES preserved
|
|
SeeAlso: AX=3900h,AX=3912h/BL=03h
|
|
|
|
Bitfields for Kingswood ANSI flags:
|
|
Bit(s) Description (Table 02745)
|
|
0 do not wrap at end of line
|
|
1 wait for beeps to end before displaying next character
|
|
2 do not use graphics cursor
|
|
--------W-2F4000-----------------------------
|
|
INT 2F - Windows 3+ (OS/2 2.x???) - GET VIRTUAL DEVICE DRIVER (VDD) CAPABILTIES
|
|
AX = 4000h
|
|
Return: AL = video virtualization (see #02746)
|
|
Notes: This function is used by display drivers to find out what capabilities
|
|
exist for the VDD driver and also trigger the VDD driver to call
|
|
functions 4005h and 4006h (and 4001h/4002h under OS/2?). This
|
|
function also gives the Video Driver hardware access to the video
|
|
registers.
|
|
Once the background/foreground callouts have been activated by a
|
|
call to this function, the application *must* handle those callouts
|
|
and save/restore the video memory itself.
|
|
|
|
(Table 02746)
|
|
Values for Windows video virtualization:
|
|
01h does not virtualize video access
|
|
02h virtualizes the video when in text mode
|
|
03h virtualizes the video when in text mode or single plane graphics modes
|
|
04h virtualizes the video when in text mode, single plane graphics modes,
|
|
and VGA multiplane modes
|
|
FFh virtualizes the video fully
|
|
--------O-2F4001-----------------------------
|
|
INT 2F C - OS/2 compatibility box - SWITCHING DOS TO BACKGROUND
|
|
AX = 4001h
|
|
Note: called by OS/2 when the DOS box is about to be placed in the background
|
|
and the video driver should save any necessary state
|
|
SeeAlso: AX=4002h,AX=4005h
|
|
--------O-2F4002-----------------------------
|
|
INT 2F C - OS/2 compatibility box - SWITCHING DOS TO FOREGROUND
|
|
AX = 4002h
|
|
Note: called by OS/2 when the DOS box is about to be placed in the foreground
|
|
and the video driver should restore the previously-saved state
|
|
SeeAlso: AX=4001h,AX=4006h
|
|
--------W-2F4003-----------------------------
|
|
INT 2F - Windows 3.x - ENTERING VIDEO DRIVER CRITICAL SECTION
|
|
AX = 4003h
|
|
Note: This critical section must be exited within 1 second.
|
|
SeeAlso: AX=4004h
|
|
--------W-2F4004-----------------------------
|
|
INT 2F - Windows 3.x - EXITING VIDEO DRIVER CRITICAL SECTION
|
|
AX = 4004h
|
|
SeeAlso: AX=4003h
|
|
--------W-2F4005-----------------------------
|
|
INT 2F C - Windows 3.x - SWITCHING DOS TO BACKGROUND
|
|
AX = 4005h
|
|
Notes: called by Windows when the DOS box is about to be placed in the
|
|
background and the video driver should save any necessary state
|
|
information (this may be called only in Standard mode)
|
|
this callout is not made unless the application has first called
|
|
AX=4000h
|
|
SeeAlso: AX=4001h,AX=4006h
|
|
--------W-2F4006-----------------------------
|
|
INT 2F C - Windows 3.x - SWITCHING DOS TO FOREGROUND
|
|
AX = 4006h
|
|
Notes: called by Windows when the DOS box is about to be placed in the
|
|
foreground and the video driver should restore any necessary state
|
|
information (this may be called only in Standard mode)
|
|
this callout is not made unless the application has first called
|
|
AX=4000h
|
|
SeeAlso: AX=4002h,AX=4005h
|
|
--------W-2F4007-----------------------------
|
|
INT 2F - Windows 3.x - ENABLE VDD TRAPPING OF VIDEO REGISTERS
|
|
AX = 4007h
|
|
Note: used by Windows Standard mode
|
|
--------O-2F4010-----------------------------
|
|
INT 2F - OS/2 v2.0+ - INSTALLATION CHECK / GET VERSION
|
|
AX = 4010h
|
|
Return: AX = 4010h if OS/2 not installed
|
|
AX = 0000h for OS/2 Warp 3.0
|
|
BX = OS/2 version if installed
|
|
Note: OS/2 Warp 3.0
|
|
SeeAlso: INT 21/AH=30h,INT 21/AX=3306h
|
|
--------O-2F4011-----------------------------
|
|
INT 2F - OS/2 - GET VDD API ENTRY POINT
|
|
AX = 4011h
|
|
DS:(E)SI -> ASCIZ name of VDD registered with VDHRegisterAPI
|
|
Return: ES:DI -> breakpoint address to call for VDD API, or 0000h:0000h
|
|
Note: this function may be invoked from either V86 or protected mode, and
|
|
will return the appropriate address to call for invoking the VDD
|
|
in that mode
|
|
SeeAlso: AX=1684h"DEVICE API"
|
|
--------V-2F4021-----------------------------
|
|
INT 2F UC - Diamond Stealth64 Video - STLTH64.VXD - ???
|
|
AX = 4021h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=4022h,AX=4023h
|
|
--------V-2F4022-----------------------------
|
|
INT 2F UC - Diamond Stealth64 Video - STLTH64.VXD - ???
|
|
AX = 4022h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=4021h,AX=4023h
|
|
--------V-2F4023-----------------------------
|
|
INT 2F UC - Diamond Stealth64 Video - STLTH64.VXD - ???
|
|
AX = 4023h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=4021h,AX=4022h
|
|
--------V-2F4027-----------------------------
|
|
INT 2F UC - Diamond Stealth64 Video - DMSSTL.DRV - ???
|
|
AX = 4027h
|
|
???
|
|
Return: ???
|
|
Notes: called when ???
|
|
a protected-mode handler for this function may be installed with the
|
|
function RFV_HOOKINT2FHANDLER
|
|
SeeAlso: AX=4021h,AX=4022h
|
|
--------E-2F4040-----------------------------
|
|
INT 2F - PharLap 286|DOS-Extender Lite v2.5 - ???
|
|
AX = 4040h
|
|
Return: BX:CX -> ???
|
|
--------N-2F4100-----------------------------
|
|
INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - INSTALLATION CHECK
|
|
AX = 4100h
|
|
Return: CF clear if successful
|
|
AL = FFh
|
|
CF set on error
|
|
AX = ???
|
|
Notes: MINIPOP and NETPOPUP provide a network message popup service
|
|
LAN Manager enhanced mode adds features beyond the standard redirector
|
|
file/printer services
|
|
SeeAlso: AX=118Ah,AX=4103h,AX=4104h,AH=42h,AH=4Bh
|
|
--------N-2F4103-----------------------------
|
|
INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - ???
|
|
AX = 4103h
|
|
Return: ???
|
|
SeeAlso: AX=4100h,AX=4104h
|
|
--------N-2F4104-----------------------------
|
|
INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - ???
|
|
AX = 4104h
|
|
Return: ???
|
|
SeeAlso: AX=4100h,AX=4103h
|
|
--------N-2F42-------------------------------
|
|
INT 2F - LAN Manager 2.0 DOS Enhanced MSRV.EXE - MESSENGER SERVICE
|
|
AH = 42h
|
|
???
|
|
Return: ???
|
|
Note: LAN Manager enhanced mode adds features beyond the standard redirector
|
|
file/printer services
|
|
SeeAlso: AX=118Ah,AX=4100h,AH=4Bh
|
|
--------m-2F4300-----------------------------
|
|
INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - INSTALLATION CHECK
|
|
AX = 4300h
|
|
Return: AL = 80h XMS driver installed
|
|
AL <> 80h no driver
|
|
Notes: XMS gives access to extended memory and noncontiguous/nonEMS memory
|
|
above 640K
|
|
this installation check DOES NOT follow the format used by other
|
|
software
|
|
SeeAlso: AX=4310h,AX=1687h,INT 67/AH=40h,@xxxxh:xxxxh"PMM"
|
|
Index: installation check;XMS version 2+
|
|
--------m-2F4308-----------------------------
|
|
INT 2F U - HIMEM.SYS v2.77+ - GET A20 HANDLER NUMBER
|
|
AX = 4308h
|
|
Return: AL = 43h if supported
|
|
BL = A20 handler number (value of /MACHINE:nn switch)
|
|
BH = AT A20 switch time (00h medium, 01h fast, 02h slow)
|
|
Note: if the A20 handler number returned in BL is 00h, an external handler
|
|
is being used (see AX=4330h)
|
|
SeeAlso: AX=4309h,AX=4330h
|
|
--------m-2F4309-----------------------------
|
|
INT 2F U - HIMEM.SYS v3.09+ - GET XMS HANDLE TABLE
|
|
AX = 4309h
|
|
Return: AL = 43h if function supported
|
|
ES:BX -> XMS handle table (see #02747)
|
|
Note: HIMEM.SYS v3.09 is part of MS-DOS 6.0.
|
|
SeeAlso: AX=4308h
|
|
|
|
Format of XMS handle table:
|
|
Offset Size Description (Table 02747)
|
|
00h BYTE ??? (01h in HIMEM.SYS v3.09)
|
|
01h BYTE size of one handle descriptor
|
|
02h WORD number of handles (default = 20h)
|
|
04h DWORD pointer to XMS handle array (see #02748)
|
|
SeeAlso: #02777
|
|
|
|
Format of XMS handle descriptor [array]:
|
|
Offset Size Description (Table 02748)
|
|
00h BYTE flag
|
|
01h=free, 02h=used, 04h=in pool but not associated with any EMB
|
|
01h BYTE lock count (00h=unlocked)
|
|
02h DWORD address of XMS block in KB (shift left by 10 for abs. address)
|
|
06h DWORD size of XMS block in KB
|
|
--------m-2F4310-----------------------------
|
|
INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - GET DRIVER ADDRESS
|
|
AX = 4310h
|
|
Return: ES:BX -> driver entry point (see #02749,#02750,#02753,#02760,#02769,#02774)
|
|
Notes: HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
|
|
HIMEM.SYS requires at least 256 bytes free stack space when calling
|
|
the driver entry point
|
|
SeeAlso: AX=4300h,AX=4310h"Cloaking",AX=4310h"Netroom",AX=4310h"XMZ"
|
|
|
|
Format of XMS driver entry point:
|
|
Offset Size Description (Table 02749)
|
|
00h 5 BYTEs jump to actual handler
|
|
either short jump (EBh XXh) followed by three NOPs or
|
|
far jump (EAh XXXX:XXXX) to a program which has hooked itself
|
|
into the XMS driver chain
|
|
Note: to hook into the XMS driver chain, a program should follow the chain of
|
|
far jumps until it reaches the short jump of the driver at the end
|
|
of the chain; this short jump is to be replaced with a far jump to
|
|
the new handler's entry point, which should contain a short jump
|
|
followed by three NOPs. The new handler must return to the address
|
|
pointed at by the short jump which was overwritten. Using this
|
|
method, the new handler becomes the first to see every XMS request.
|
|
|
|
(Table 02750)
|
|
Call the XMS driver "Get XMS version number" function with:
|
|
AH = 00h
|
|
Return: AX = XMS version (in BCD, AH=major, AL=minor)
|
|
BX = internal revision number (in BCD for HIMEM.SYS)
|
|
DX = High Memory Area (HMA) state
|
|
0001h HMA (1M to 1M + 64K) exists
|
|
0000h HMA does not exist
|
|
SeeAlso: #02751,#02752,#02757,#02758,#02764
|
|
|
|
(Table 02751)
|
|
Call the XMS driver "Request High Memory Area" function with:
|
|
AH = 01h
|
|
DX = memory in bytes (for TSR or device drivers)
|
|
FFFFh if application program
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,81h,90h,91h,92h) (see #02775)
|
|
Note: HIMEM.SYS will fail function 01h with error code 91h if AL=40h and
|
|
DX=KB free extended memory returned by last call of function 08h
|
|
SeeAlso: #02752,#02784
|
|
|
|
(Table 02752)
|
|
Call the XMS driver "Release High Memory Area" function with:
|
|
AH = 02h
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,81h,90h,93h) (see #02775)
|
|
SeeAlso: #02751
|
|
|
|
(Table 02753)
|
|
Call the XMS driver "Global enable A20, for using the HMA" function with:
|
|
AH = 03h
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,81h,82h) (see #02775)
|
|
SeeAlso: #02754,#02755,MSR 00001000h
|
|
|
|
(Table 02754)
|
|
Call the XMS driver "Global disable A20" function with:
|
|
AH = 04h
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,81h,82h,94h) (see #02775)
|
|
SeeAlso: #02753,#02756,MSR 00001000h
|
|
|
|
(Table 02755)
|
|
Call the XMS driver "Local enable A20" function with:
|
|
AH = 05h
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,81h,82h) (see #02775)
|
|
Note: this function is used for direct access to extended memory
|
|
SeeAlso: #02753,#02756
|
|
|
|
(Table 02756)
|
|
Call the XMS driver "Local disable A20" function with:
|
|
AH = 06h
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,81h,82h,94h) (see #02775)
|
|
SeeAlso: #02754,#02755
|
|
|
|
(Table 02757)
|
|
Call the XMS driver "Query A20 state" function with:
|
|
AH = 07h
|
|
Return: AX = status
|
|
0001h enabled
|
|
0000h disabled
|
|
BL = error code (00h,80h,81h) (see #02775)
|
|
SeeAlso: #02750,#02758
|
|
|
|
(Table 02758)
|
|
Call the XMS driver "Query free extended memory" function with:
|
|
AH = 08h
|
|
BL = 00h (some implementations leave BL unchanged on success)
|
|
Return: AX = size of largest extended memory block in KB
|
|
DX = total extended memory in KB
|
|
BL = error code (00h,80h,81h,A0h) (see #02775)
|
|
Note: this function does not include the HMA in the returned memory sizes
|
|
SeeAlso: #02750,#02757,#02759,#02771
|
|
|
|
(Table 02759)
|
|
Call the XMS driver "Allocate extended memory block" function with:
|
|
AH = 09h
|
|
DX = Kbytes needed
|
|
Return: AX = status
|
|
0001h success
|
|
DX = handle for memory block
|
|
0000h failure
|
|
BL = error code (80h,81h,A0h) (see #02775)
|
|
SeeAlso: #02758,#02761,#02764,#02765,#02766,#02772
|
|
|
|
(Table 02760)
|
|
Call the XMS driver "Free extended memory block" function with:
|
|
AH = 0Ah
|
|
DX = handle of block to free
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,81h,A2h,ABh) (see #02775)
|
|
SeeAlso: #02759,#02772
|
|
|
|
(Table 02761)
|
|
Call the XMS driver "Move extended memory block" function with:
|
|
AH = 0Bh
|
|
DS:SI -> EMM structure (see #02776)
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h-82h,A3h-A9h) (see #02775)
|
|
Note: if either handle in the EMM structure is 0000h, the corresponding
|
|
offset is considered to be an absolute segment:offset address in
|
|
directly addressable memory
|
|
SeeAlso: #02759,#02762
|
|
|
|
(Table 02762)
|
|
Call the XMS driver "Lock extended memory block" function with:
|
|
AH = 0Ch
|
|
DX = handle of block to lock
|
|
Return: AX = status
|
|
0001h success
|
|
DX:BX = 32-bit physical address of locked block
|
|
0000h failure
|
|
BL = error code (80h,81h,A2h,ACh,ADh) (see #02775)
|
|
Note: MS Windows 3.x rejects this function for handles allocated after
|
|
Windows started
|
|
SeeAlso: #02759,#02761,#02763,#02777
|
|
|
|
(Table 02763)
|
|
Call the XMS driver "Unlock extended memory block" function with:
|
|
AH = 0Dh
|
|
DX = handle of block to unlock
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,81h,A2h,AAh) (see #02775)
|
|
SeeAlso: #02762
|
|
|
|
(Table 02764)
|
|
Call the XMS driver "Get handle information" function with:
|
|
AH = 0Eh
|
|
DX = handle for which to get info
|
|
Return: AX = status
|
|
0001h success
|
|
BH = block's lock count
|
|
BL = number of free handles left
|
|
DX = block size in KB
|
|
0000h failure
|
|
BL = error code (80h,81h,A2h) (see #02775)
|
|
BUG: MS Windows 3.10 acts as though unallocated handles are in use
|
|
Note: MS Windows 3.00 has problems with this call
|
|
SeeAlso: #02750,#02759,#02773
|
|
|
|
(Table 02765)
|
|
Call the XMS driver "Reallocate extended memory block" function with:
|
|
AH = 0Fh
|
|
DX = handle of block
|
|
BX = new size of block in KB
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,81h,A0h-A2h,ABh) (see #02775)
|
|
SeeAlso: #02759,#02768
|
|
|
|
(Table 02766)
|
|
Call the XMS driver "Request upper memory block" function with:
|
|
AH = 10h
|
|
DX = size of block in paragraphs
|
|
Return: AX = status
|
|
0001h success
|
|
BX = segment address of UMB
|
|
DX = actual size of block
|
|
0000h failure
|
|
BL = error code (80h,B0h,B1h) (see #02775)
|
|
DX = largest available block
|
|
Notes: Upper Memory consists of non-EMS memory between 640K and 1024K
|
|
the XMS driver need not implement functions 10h through 12h to be
|
|
considered compliant with the standard
|
|
under DOS 5+, if CONFIG.SYS contains the line DOS=UMB, then no upper
|
|
memory blocks will be available for allocation because all blocks
|
|
have been grabbed by MS-DOS while booting
|
|
SeeAlso: #02759,#02767,#02785,INT 21/AH=58h"UMB"
|
|
|
|
(Table 02767)
|
|
Call the XMS driver "Release upper memory block" function with:
|
|
AH = 11h
|
|
DX = segment address of UMB to release
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,B2h) (see #02775)
|
|
Note: the XMS driver need not implement functions 10h through 12h to be
|
|
considered compliant with the standard
|
|
SeeAlso: #02760,#02766,#02768
|
|
|
|
(Table 02768)
|
|
Call the XMS v3.0+ driver "Reallocate upper memory block" function with:
|
|
AH = 12h
|
|
DX = segment address of UMB to resize
|
|
BX = new size of block in paragraphs
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,B0h,B2h) (see #02775)
|
|
DX = maximum available size (RM386)
|
|
Note: the XMS driver need not implement functions 10h through 12h to be
|
|
considered compliant with the standard
|
|
SeeAlso: #02765,#02766,#02767,#02783
|
|
|
|
(Table 02769)
|
|
Call the QEMM v5.11 "???" function with:
|
|
AH = 34h (QEMM 5.11 only, undocumented)
|
|
???
|
|
Return: ???
|
|
SeeAlso: #02770
|
|
|
|
(Table 02770)
|
|
Call the QEMM v5.11 "???" function with:
|
|
AH = 44h (QEMM 5.11 only, undocumented)
|
|
???
|
|
Return: ???
|
|
SeeAlso: #02769,#02783
|
|
|
|
(Table 02771)
|
|
Call the XMS v3.0 driver "Query free extended memory" function with:
|
|
AH = 88h
|
|
Return: EAX = largest block of extended memory, in KB
|
|
BL = status (00h,80h,81h,A0h) (see #02775)
|
|
ECX = physical address of highest byte of memory
|
|
(valid even on error codes 81h and A0h)
|
|
EDX = total Kbytes of extended memory (0 if status A0h)
|
|
BUG: HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
|
|
are called
|
|
SeeAlso: #02758,#02772
|
|
|
|
(Table 02772)
|
|
Call the XMS v3.0 driver "Allocate any extended memory" function with:
|
|
AH = 89h
|
|
EDX = Kbytes needed
|
|
Return: AX = status
|
|
0001h success
|
|
DX = handle for allocated block (free with AH=0Ah) (see #02760)
|
|
0000h failure
|
|
BL = status (80h,81h,A0h,A1h,A2h) (see #02775)
|
|
SeeAlso: #02759,#02771
|
|
|
|
(Table 02773)
|
|
Call the XMS v3.0 driver "Get extended EMB handle information" function with:
|
|
AH = 8Eh
|
|
DX = handle
|
|
Return: AX = status
|
|
0001h success
|
|
BH = block's lock count
|
|
CX = number of free handles left
|
|
EDX = block size in KB
|
|
0000h failure
|
|
BL = status (80h,81h,A2h) (see #02775)
|
|
BUG: MS-DOS 6.0 HIMEM.SYS leaves CX unchanged
|
|
SeeAlso: #02764,#02772,#02774
|
|
|
|
(Table 02774)
|
|
Call the XMS v3.0 driver "Reallocate any extended memory block" function with:
|
|
AH = 8Fh
|
|
DX = unlocked memory block handle
|
|
EBX = new size in KB
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = status (80h,81h,A0h-A2h,ABh) (see #02775)
|
|
BUG: HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
|
|
are called
|
|
SeeAlso: #02765,#02773
|
|
|
|
(Table 02775)
|
|
Values for XMS error code returned in BL:
|
|
00h successful
|
|
80h function not implemented
|
|
81h Vdisk was detected
|
|
82h an A20 error occurred
|
|
8Eh a general driver error
|
|
8Fh unrecoverable driver error
|
|
90h HMA does not exist or is not managed by XMS provider
|
|
91h HMA is already in use
|
|
92h DX is less than the /HMAMIN= parameter
|
|
93h HMA is not allocated
|
|
94h A20 line still enabled
|
|
A0h all extended memory is allocated
|
|
A1h all available extended memory handles are allocated
|
|
A2h invalid handle
|
|
A3h source handle is invalid
|
|
A4h source offset is invalid
|
|
A5h destination handle is invalid
|
|
A6h destination offset is invalid
|
|
A7h length is invalid
|
|
A8h move has an invalid overlap
|
|
A9h parity error occurred
|
|
AAh block is not locked
|
|
ABh block is locked
|
|
ACh block lock count overflowed
|
|
ADh lock failed
|
|
B0h only a smaller UMB is available
|
|
B1h no UMB's are available
|
|
B2h UMB segment number is invalid
|
|
|
|
Format of EMM structure:
|
|
Offset Size Description (Table 02776)
|
|
00h DWORD number of bytes to move (must be even)
|
|
04h WORD source handle
|
|
06h DWORD offset into source block
|
|
0Ah WORD destination handle
|
|
0Ch DWORD offset into destination block
|
|
Notes: if source and destination overlap, only forward moves (source base
|
|
less than destination base) are guaranteed to work properly
|
|
if either handle is zero, the corresponding offset is interpreted
|
|
as a real-mode address referring to memory directly addressable
|
|
by the processor
|
|
|
|
Format of XMS handle info [array]:
|
|
Offset Size Description (Table 02777)
|
|
00h BYTE handle
|
|
01h BYTE lock count
|
|
02h DWORD handle size
|
|
06h DWORD handle physical address (only valid if lock count nonzero)
|
|
SeeAlso: #02747,#02762
|
|
--------m-2F4310-----------------------------
|
|
INT 2F - Cloaking - REAL-MODE API
|
|
AX = 4310h
|
|
Return: ES:BX -> driver entry point (see #02749,#02778,#02779,#02780,#02781)
|
|
SeeAlso: AX=4310h"XMS"
|
|
|
|
(Table 02778)
|
|
Call the Cloaking v1.01 "Client Registration" function with:
|
|
AH = 7Eh
|
|
BX = subfunction
|
|
0000h get client registration count
|
|
0001h get client registration structures
|
|
ES:DI -> buffer for registration structures
|
|
Return: AX = status
|
|
0000h failed
|
|
0001h successful
|
|
---subfunction 00h---
|
|
BX = size of client structure in bytes
|
|
CX = number of clients installed
|
|
---subfunction 01h---
|
|
ES:DI buffer filled
|
|
SeeAlso: #02779,#02781,INT 2C/AX=0033h
|
|
|
|
(Table 02779)
|
|
Call the Cloaking v1.01 "Verify Cloaking Host" function with:
|
|
AH = 7Fh
|
|
Return: AX = status
|
|
0000h failed
|
|
0001h (successful) if installed
|
|
BX = version (0101h for v1.01)
|
|
CX = flags
|
|
bit 0: host is VCPI-based
|
|
DS:DX -> ASCIZ Cloaking host signature
|
|
"CLOAKING.EXE"0, followed by a far-call entry point to
|
|
uninstall host (see #02780) in Helix's CLOAKING.EXE
|
|
SeeAlso: #02778,#02781
|
|
Index: installation check;Cloaking host|installation check;CLOAKING.EXE
|
|
|
|
(Table 02780)
|
|
Call the CLOAKING.EXE "Uninstall Host" function with:
|
|
Return: AX = 4F4Bh ('OK') if successfully uninstalled protected-mode code
|
|
|
|
(Table 02781)
|
|
Call the Cloaking "Start Protected-Mode Client" function with:
|
|
AH = 82h
|
|
DX = XMS handle of locked block containing protected-mode code
|
|
CL = code size (00h 16-bit, else 32-bit)
|
|
ESI, EDI = parameters to pass to protected-mode code
|
|
Return: AX = status
|
|
nonzero success
|
|
0000h failed
|
|
BL = error code (A2h,B0h) (see #02775)
|
|
Notes: this function calls a user initialization function at offset 0 in
|
|
the XMS memory block (see #02782)
|
|
supported by Helix's RM386 v6.00 and Helix's CLOAKING.EXE
|
|
SeeAlso: #02778,#02779
|
|
|
|
(Table 02782)
|
|
Values user initialization function is called with:
|
|
EBX = physical address of block's start
|
|
ESI = user data from function 82h call
|
|
EDI = user data from function 82h call
|
|
CS = code selector for XMS block at EBX (16-bit or 32-bit)
|
|
DS = data selector for XMS block, starting at EBX
|
|
ES = selector for V86 memory access to full real-mode 1088K
|
|
GS = selector for full 4G flat address space
|
|
SS:ESP -> stack provided by host
|
|
Return: via 32-bit FAR return
|
|
Note: the initialization function may call any protected-mode Cloaking
|
|
service; it should store the values of DS, ES, and GS for future
|
|
reference
|
|
--------m-2F4310-----------------------------
|
|
INT 2F - Helix Netroom RM386 v6.00 - XMS EXTENSIONS
|
|
AX = 4310h
|
|
Return: ES:BX -> driver entry point (see #02783,#02784,#02785,#02786)
|
|
Notes: HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
|
|
HIMEM.SYS requires at least 256 bytes free stack space when calling
|
|
the driver entry point
|
|
SeeAlso: AX=4300h,AX=4310h"XMS",AX=4310h"Cloaking"
|
|
|
|
(Table 02783)
|
|
Call the Netroom RM386 v6.00 "Reallocate upper memory block" function with:
|
|
AH = 80h
|
|
DX = segment address of UMB to resize
|
|
BX = new size of block in paragraphs
|
|
Return: AX = status
|
|
0001h success
|
|
0000h failure
|
|
BL = error code (80h,B0h,B2h) (see #02775)
|
|
DX = maximum available size
|
|
Note: this function is identical to function 12h
|
|
SeeAlso: #02768,#02784
|
|
|
|
(Table 02784)
|
|
Call the Netroom RM386 v6.00 "re-enable HMA allocation" function with:
|
|
AH = 81h
|
|
Return: AX = 0001h (success)
|
|
SeeAlso: #02751,#02783,#02785
|
|
|
|
(Table 02785)
|
|
Call the Netroom RM386 v6.00 "Create new UMB entry" function with:
|
|
AH = 83h
|
|
BX = segment of high-memory block
|
|
DX = first page of start of block
|
|
CX = number of consecutive pages in block
|
|
DI = start of UMB in block
|
|
Return: AX = 0001h (success)
|
|
DI = segment of first high-DOS block
|
|
Note: the new UMB is not linked into the high-memory chain
|
|
SeeAlso: #02766,#02784,#02786
|
|
|
|
(Table 02786)
|
|
Call the Netroom RM386 v6.00 "Get all XMS handles info" function with:
|
|
AH = 84h
|
|
CX = size of buffer for handle info
|
|
ES:DI -> buffer for handle info (see #02777)
|
|
Return: AX = 0001h (success)
|
|
DX = current number of allocated XMS handles
|
|
SeeAlso: #02785,#02771
|
|
--------m-2F4310-----------------------------
|
|
INT 2F - NEC PC-9800 - XMZ - PRIVATE API
|
|
AX = 4310h
|
|
Return: ES:BX -> driver entry point (see #02787,#02788)
|
|
Program: XMZ is an XMS 2.x-compatible driver for the NEC PC-98 series written
|
|
by ZOBplus Hayami and available at
|
|
ftp:/ftp.tohoku.ac.jp/pub/msdos/Memory/xmz/
|
|
SeeAlso: AX=4300h,AX=4310h"XMS"
|
|
|
|
(Table 02787)
|
|
Call XMZ v1.02 "Get HMA Information" function with:
|
|
AH = FFh (XMZ only)
|
|
AL = 01h
|
|
Return: AX = 1 on success
|
|
DX = minimum HMA allocation size (/HMAMIN=)
|
|
BX = actual size of HMA allocation, if in use (i.e. the value in DX
|
|
when XMS function 1 was called)
|
|
SeeAlso: #02788
|
|
|
|
(Table 02788)
|
|
Call XMZ v1.02 "Get EMB Handle Information" function with:
|
|
AH = FFh (XMZ only)
|
|
AL = 02h
|
|
Return: AX = 1 on success
|
|
DX = number of EMB handles configured (/NUMHANDLES=)
|
|
BX = offset in XMZ's segment of the handle table (use segment of
|
|
entry point) (see #02789)
|
|
SeeAlso: #02787
|
|
|
|
Format of XMZ v1.02 EMB Handle structure:
|
|
Offset Size Description (Table 02789)
|
|
00h BYTE flag byte
|
|
04h unused handle slot
|
|
02h in-use handle slot
|
|
01h handle slot that represents a free block
|
|
01h BYTE lock count
|
|
02h WORD block start address (1K increments)
|
|
04h WORD block length (1K increments)
|
|
SeeAlso: #02788
|
|
--------m-2F4320-----------------------------
|
|
INT 2F U - HIMEM.SYS - Mach 20 SUPPORT
|
|
AX = 4320h
|
|
???
|
|
Return: ???
|
|
--------m-2F4330-----------------------------
|
|
INT 2F CU - HIMEM.SYS v2.77+ - GET EXTERNAL A20 HANDLER ADDRESS
|
|
AX = 4330h
|
|
Return: AL = 80h if external A20 handler provided
|
|
ES:BX -> external A20 handler (see #02790)
|
|
CL = A20 detection support
|
|
00h handler is unable to report A20 state
|
|
01h handler supports function 0002h to report A20 state
|
|
Note: HIMEM.SYS calls this function to allow an external program to provide
|
|
an A20 handler (i.e. to support a machine not supported by HIMEM
|
|
itself)
|
|
SeeAlso: AX=4308h,AX=4310h
|
|
|
|
(Table 02790)
|
|
Call parameters for external A20 handler are:
|
|
AX = function
|
|
0000h disable A20
|
|
0001h enable A20
|
|
0002h get A20 state
|
|
Return: AX = status (functions 0000h and 0001h)
|
|
0000h failure
|
|
0001h successful
|
|
AX = A20 state (function 0002h)
|
|
0000h disabled
|
|
0001h enabled
|
|
Note: HIMEM.SYS only calls function 0002h if the returned CL indicated that
|
|
the handler supports the call
|
|
----------2F43D6-----------------------------
|
|
INT 2F - Multiplex - ???
|
|
AX = 43D6h
|
|
Note: Central Point's CPBACKUP v9 calls this function with CX=07FFh and
|
|
DX=80D3h at startup
|
|
--------E-2F43E0BX0000-----------------------
|
|
INT 2F - DOS Protected Mode Services (DPMS) v1.0 - INSTALLATION CHECK
|
|
AX = 43E0h
|
|
BX = 0000h
|
|
CX = 4450h ('DP')
|
|
DX = 4D53h ('MS')
|
|
Return: AX = 0000h if installed
|
|
CF clear
|
|
ES:DI -> server structure (see #02791)
|
|
ES:BX -> registration structure (pre-NWDOS 7 beta spec) (see #02793)
|
|
Note: the DPMS 1.0 server included with the original release of Novell DOS
|
|
7.0 supports both the beta and 1.0 specification, setting ES:BX even
|
|
if CX and DX are not as specified on entry (since the beta
|
|
specification did not use those registers). However, the DPMS 1.1
|
|
server included with the March 1994 update does not support the beta
|
|
specification
|
|
SeeAlso: AX=43E1h,AX=43E2h,AX=43E3h,INT 2F/AX=1687h
|
|
Index: signature strings;DPMS
|
|
|
|
Format of DPMS 1.0 server structure:
|
|
Offset Size Description (Table 02791)
|
|
00h 4 BYTEs signature string "DPMS"
|
|
04h 2 BYTEs DPMS version (major,minor)
|
|
06h 8 BYTEs blank-padded server OEM name
|
|
0Eh 2 BYTEs OEM server version (major,minor)
|
|
10h WORD DPMS flags (see #02792)
|
|
12h BYTE CPU type
|
|
(02h = 286, 03h = 386 or higher, higher values allowed)
|
|
|
|
Bitfields for DPMS flags:
|
|
Bit(s) Description (Table 02792)
|
|
0 fast processor reset available (286 only)
|
|
1 DPMS server is enabled
|
|
2 memory is remapped
|
|
3-15 reserved (undefined)
|
|
|
|
Format of beta DPMS registration structure:
|
|
Offset Size Description (Table 02793)
|
|
00h DWORD real-mode API entry point (see #02795)
|
|
04h DWORD 16-bit protected-mode API entry point (see #02795)
|
|
08h 8 BYTEs reserved (0)
|
|
10h 8 BYTEs blank-padded server OEM name
|
|
18h WORD flags
|
|
bit 0: fast processor reset available (286 only)
|
|
bits 1-15 reserved (undefined)
|
|
1Ah 2 BYTEs DPMS version (major,minor)
|
|
1Ch BYTE CPU type (02h = 286, 03h = 386 or higher)
|
|
--------m-2F43E1-----------------------------
|
|
INT 2F - DOS Protected Mode Services (DPMS) v1.0 - REGISTER CLIENT
|
|
AX = 43E1h
|
|
CX = required protected-mode stack size in bytes
|
|
ES:DI -> DPMS client interface structure (see #02794)
|
|
Return: AX = 0000h if supported
|
|
CF clear
|
|
ES:DI buffer filled with API entry point code from offset 0Ah
|
|
Note: the client is allowed to copy the returned API code to any location in
|
|
memory, and need not keep the three code fields together
|
|
SeeAlso: AX=43E0h,AX=43E2h,AX=43E3h
|
|
|
|
Format of DPMS client interface structure:
|
|
Offset Size Description (Table 02794)
|
|
00h WORD 0000h (structure version / flags)
|
|
02h 8 BYTEs blank-padded client name
|
|
0Ah 7 BYTEs real/virtual-86 mode API code (see #02795)
|
|
11h BYTE space for return instruction
|
|
set to C3h for near return, CBh for far return
|
|
12h 7 BYTEs 16-bit protected-mode API code (see #02795)
|
|
19h BYTE space for return instruction
|
|
set to C3h for near return, CBh for far return
|
|
1Ah 9 BYTEs 32-bit protected-mode API code (see #02795)
|
|
23h BYTE space for return instruction
|
|
set to C3h for near return, CBh for far return
|
|
Note: the DPMS server fills the return opcode bytes with zeros and DPMS
|
|
requests will thus crash the system unless the application
|
|
explicitly sets them (some early versions set them to C3h by
|
|
default, but one should not rely on that)
|
|
|
|
(Table 02795)
|
|
Call DPMS entry point with:
|
|
AX = 0000h unregister client from server
|
|
---control transfer functions---
|
|
AX = 0100h call protected-mode procedure
|
|
CX = number of words of stack to copy
|
|
ES:(E)DI -> callup/down register structure (see #02797)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0101h call real-mode procedure (RETF return)
|
|
CX = number of words of stack to copy
|
|
ES:(E)DI -> callup/down register structure (see #02797)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0102h call real-mode procedure (IRET return)
|
|
CX = number of words of stack to copy
|
|
ES:(E)DI -> callup/down register structure (see #02797)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0103h call real-mode interrupt handler
|
|
BL = interrupt number
|
|
CX = number of words of stack to copy
|
|
ES:(E)DI -> callup/down register structure (see #02797)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0104h register default protected mode procedure
|
|
ES:(E)DI -> default register structure (see #02798)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0105h register default real-mode procedure (RETF return)
|
|
ES:(E)DI -> default register structure (see #02798)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
Note: the procedure will be called from 16-bit prot. mode
|
|
AX = 0106h register default real-mode procedure (IRET return)
|
|
ES:(E)DI -> default register structure (see #02798)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
Note: the procedure will be called from 16-bit prot. mode
|
|
AX = 0107h register default real-mode interrupt handler
|
|
BL = interrupt number
|
|
ES:(E)DI -> default register structure (see #02798)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
Note: the handler will be called from 16-bit protected mode
|
|
AX = 0108h register default real-mode procedure (RETF return)
|
|
ES:(E)DI -> default register structure (see #02798)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
Note: the procedure will be called from 32-bit prot. mode
|
|
AX = 0109h register default real-mode procedure (IRET return)
|
|
ES:(E)DI -> default register structure (see #02798)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
Note: the procedure will be called from 32-bit prot. mode
|
|
AX = 010Ah register default real-mode interrupt handler
|
|
BL = interrupt number
|
|
ES:(E)DI -> default register structure (see #02798)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
Note: the handler will be called from 32-bit protected mode
|
|
---descriptor management---
|
|
AX = 0200h allocate descriptors
|
|
CX = number of descriptors to allocate
|
|
Return: CF clear if successful
|
|
AX = selector for first descriptor allocated
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0201h free a descriptor
|
|
BX = selector for descriptor
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0202h create alias descriptor
|
|
BX = selector for descriptor to be aliased
|
|
Return: CF clear if successful
|
|
AX = alias descriptor
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0203h build alias to real-mode segment
|
|
BX = descriptor
|
|
CX = real-mode segment
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0204h set descriptor base
|
|
BX = descriptor
|
|
CX:DX = base address
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0205h set descriptor limit
|
|
BX = descriptor
|
|
CX = limit
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0206h set descriptor type/attribute
|
|
BX = descriptor
|
|
CL = type
|
|
CH = attribute
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0207h get descriptor base
|
|
BX = descriptor
|
|
Return: CF clear if successful
|
|
CX:DX = base address
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
---linear memory functions---
|
|
AX = 0300h get size of largest free block of memory
|
|
Return: CF clear if successful
|
|
BX:CX = size
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0301h allocate block of extended memory
|
|
BX:CX = required size
|
|
Return: CF clear if successful
|
|
BX:CX = base address
|
|
SI:DI = handle
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0302h free block of extended memory
|
|
SI:DI = handle
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0303h map linear memory
|
|
ES:(E)DI -> DDS (see #02799)
|
|
Return: CF clear if successful
|
|
BX:CX = base address
|
|
SI:DI = handle
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0304h unmap linear memory
|
|
SI:DI = handle
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0305h get page table entries
|
|
ESI = linear address
|
|
(E)CX = count
|
|
ES:(E)DI -> buffer for page table entries
|
|
Return: CF clear if successful
|
|
ES:(E)DI buffer filled
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0306h set page table entries
|
|
EBX = linear memory handle
|
|
ESI = linear address
|
|
(E)CX = count
|
|
ES:(E)DI -> buffer containing page table entries
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
AX = 0307h get largest mappable block size
|
|
Return: CF clear if successful
|
|
BX:CX = size
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
---miscellaneous---
|
|
AX = 0400h relocate segment to extended memory
|
|
ES:SI = base address
|
|
CX = limit
|
|
BL = type
|
|
BH = attribute
|
|
DX = selector or 0000h
|
|
Return: CF clear if successful
|
|
AX = selector
|
|
BX:CX = new base address
|
|
SI:DI = handle
|
|
CF set on error
|
|
AX = error code (see #02796)
|
|
Note: the beta DPMS specification, which is still supported by the Novell
|
|
DOS 7.0 DPMS host, only supported functions 0100h-0103h, 0200h-0207h,
|
|
0300h-0304h, and 0400h
|
|
|
|
(Table 02796)
|
|
Values for DPMS error code:
|
|
8000h general error
|
|
8001h unsupported function
|
|
8002h unable to switch to protected mode
|
|
8004h no default stack defined
|
|
8005h unknown client
|
|
8010h resource unavailable
|
|
8011h descriptor unavailable
|
|
8012h linear memory unavailable
|
|
8013h physical memory unavailable
|
|
8021h invalid value
|
|
8022h invalid selector
|
|
8023h invalid handle
|
|
8025h invalid linear address
|
|
|
|
Format of DPMS callup/down register structure:
|
|
Offset Size Description (Table 02797)
|
|
00h DWORD EDI
|
|
04h DWORD ESI
|
|
08h DWORD EBP
|
|
0Ch 4 BYTEs reserved (0) (ESP, may be used by DPMS server)
|
|
10h DWORD EBX
|
|
14h DWORD EDX
|
|
18h DWORD ECX
|
|
20h DWORD EAX
|
|
24h DWORD EIP
|
|
28h WORD CS
|
|
2Ah 2 BYTEs reserved (0)
|
|
2Ch DWORD EFLAGS
|
|
30h DWORD ESP
|
|
34h WORD SS
|
|
36h 2 BYTEs reserved (0)
|
|
38h WORD ES
|
|
3Ah 2 BYTEs reserved (0)
|
|
3Ch WORD DS
|
|
3Eh 2 BYTEs reserved (0)
|
|
40h WORD FS
|
|
42h 2 BYTEs reserved (0)
|
|
44h WORD GS
|
|
46h 2 BYTEs reserved (0)
|
|
|
|
Format of DPMS default register structure:
|
|
Offset Size Description (Table 02798)
|
|
00h DWORD EIP
|
|
04h WORD CS
|
|
06h 2 BYTEs reserved (0)
|
|
08h WORD number of words to copy from stack to stack
|
|
0Ah BYTE (call) 00h
|
|
(ret) nonzero if call could not be made
|
|
0Bh BYTE reserved (may be used by some servers)
|
|
0Ch DWORD ESP
|
|
10h WORD SS
|
|
12h 2 BYTEs reserved (0)
|
|
14h WORD ES
|
|
16h 2 BYTEs reserved (0)
|
|
18h WORD DS
|
|
1Ah 2 BYTEs reserved (0)
|
|
1Ch WORD FS
|
|
1Eh 2 BYTEs reserved (0)
|
|
20h WORD GS
|
|
22h 2 BYTEs reserved (0)
|
|
24h 9 BYTEs API entry code (filled in by server)
|
|
|
|
Format of DPMS lock DDS:
|
|
Offset Size Description (Table 02799)
|
|
00h DWORD total size in bytes
|
|
04h DWORD offset
|
|
08h WORD segment or selector
|
|
0Ah WORD reserved
|
|
0Ch WORD maximum number of physical blocks structure has space for
|
|
0Eh WORD number of physical blocks listed
|
|
10h DWORD physical address of first block
|
|
14h DWORD size in bytes of first block
|
|
...
|
|
--------m-2F43E2-----------------------------
|
|
INT 2F - DOS Protected Mode Services (DPMS) v1.0 - ENABLE/DISABLE DPMS
|
|
AX = 43E2h
|
|
BX = new state (0000h disable, 0001h enable)
|
|
Return: AX = 0000h if supported
|
|
Note: this function should normally be called only by system software
|
|
SeeAlso: AX=43E0h,AX=43E1h,AX=43E3h
|
|
--------m-2F43E3BX0000-----------------------
|
|
INT 2F C - DOS Protected Mode Services (DPMS) v1.0 - DPMS STARTUP BROADCAST
|
|
AX = 43E3h
|
|
BX = 0000h
|
|
CX = 4450h ('DP')
|
|
DX = 4D53h ('MS')
|
|
ES:DI -> DPMS server structure (see #02791)
|
|
Return: BX = status
|
|
bit 0 set if server is not allowed to load (e.g. some resident
|
|
program is incompatible)
|
|
Note: this callout is made while the potential server is running as a normal
|
|
real-mode DOS program, so there are no BIOS/DOS re-entrancy issues
|
|
SeeAlso: AX=43E0h,AX=43E4h
|
|
--------m-2F43E4BX0000-----------------------
|
|
INT 2F C - DOS Protected Mode Services (DPMS) v1.0 - DPMS EXIT BROADCAST
|
|
AX = 43E4h
|
|
BX = 0000h
|
|
CX = 4450h ('DP')
|
|
DX = 4D53h ('MS')
|
|
Return: BX = status
|
|
bit 0 set if server is not allowed to unload
|
|
Note: servers never unload until all clients unregister
|
|
SeeAlso: AX=43E0h,AX=43E3h
|
|
--------E-2F44-------------------------------
|
|
INT 2F U - DOS Extender support???
|
|
AH = 44h
|
|
AL = function (at least 0Bh, 15h, 17h)
|
|
???
|
|
Return: ???
|
|
Note: called by Codeview for Windows
|
|
SeeAlso: AH=86h
|
|
--------G-2F4500-----------------------------
|
|
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - INSTALLATION CHECK
|
|
AX = 4500h
|
|
Return: AL = installation status
|
|
01h if PROF.COM installed
|
|
02h if VPROD.386 installed
|
|
SeeAlso: AX=4501h,AX=4502h
|
|
--------G-2F4501-----------------------------
|
|
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SETUP PROFILER
|
|
AX = 4501h
|
|
BX = CSIPS buffer size in KB (first parameter for ProfSetup)
|
|
CX = output limit in KB (second parameter for ProfSetup)
|
|
Note: this call is not supported by PROF.COM
|
|
SeeAlso: AX=4502h,AX=4503h
|
|
--------G-2F4502-----------------------------
|
|
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SET SAMPLING RATE
|
|
AX = 4502h
|
|
BL = sampling rate for PROF.COM (0 < BL <= 13)
|
|
(01h = 8192/s, 04h = 1024/s, 08h = 32/s, 0Dh = 1/s)
|
|
CX = sampling rate for VPROD.386
|
|
Note: for PROF.COM, this programs the CMOS clock by setting BL+2 as the
|
|
low four bits of CMOS register 0Ah. The interruption rate is
|
|
1 SHL (15 - BL) per second.
|
|
SeeAlso: AX=4501h,AX=4503h
|
|
--------G-2F4503-----------------------------
|
|
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - START PROFILING
|
|
AX = 4503h
|
|
Notes: Profiling is also turned on by the key combinations
|
|
LeftShift + RightShift + Alt and LeftShift + RightShift + Ctrl
|
|
for PROF.COM, this call programs the CMOS clock by reading register
|
|
0Ch, and setting bit 6 of register 0Bh. It then makes sure that IRQ8
|
|
is unmasked
|
|
SeeAlso: AX=4504h
|
|
--------G-2F4504-----------------------------
|
|
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - STOP PROFILING
|
|
AX = 4504h
|
|
Notes: profiling is also turned off by the key combination
|
|
LeftShift + RightShift
|
|
for PROF.COM, this programs the CMOS clock by reading register 0Ch
|
|
and clearing bit 6 of register 0Bh. It then masks IRQ8.
|
|
SeeAlso: AX=4503h,AX=4505h,AX=4506h,AX=4507h
|
|
--------G-2F4505-----------------------------
|
|
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - CLEAR PROFILING DATA
|
|
AX = 4505h
|
|
SeeAlso: AX=4503h,AX=4504h,AX=4506h
|
|
--------G-2F4506-----------------------------
|
|
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFlush"
|
|
AX = 4506h
|
|
SeeAlso: AX=4505h,AX=4507h
|
|
--------G-2F4507-----------------------------
|
|
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFinish"
|
|
AX = 4507h
|
|
Note: this call is essentially a "ProfStop" (AX=4504h) followed by
|
|
"ProfFlush" (AX=4506h)
|
|
SeeAlso: AX=4504h,AX=4505h,AX=4506h
|
|
--------G-2F4508-----------------------------
|
|
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - ALTERNATE SEGDEBUG IFACE
|
|
AX = 4508h
|
|
BX = ordinal (or 0000h)
|
|
CX = segment
|
|
DX = instance (or 0000h)
|
|
SI = type (or 0000h)
|
|
ES:DI -> ASCIZ module name
|
|
Notes: this call is an alternate entry to the profiler's SEGDEBUG
|
|
interface, but only to function 0, for notifying the profiler of
|
|
each new segment loaded. The SHOWHITS utility then examines the
|
|
profiler's output files (CSIPS.DAT and SEGENTRY.DAT) in conjunction
|
|
with symbol files to provide information in a useful form.
|
|
this call does not have a corresponding Windows function
|
|
SeeAlso: AX=4500h
|
|
--------D-2F4601-----------------------------
|
|
INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
|
|
AX = 4601h
|
|
Return: ???
|
|
Note: the DOS 5+ kernel intercepts this function and copies the MCB
|
|
following the caller's PSP memory block into the DOS data segment;
|
|
in conjunction with AX=4602h, this intercept is used by DOS to
|
|
avoid corruption of the Windows real-mode heap's end sentinel
|
|
SeeAlso: AX=1700h,AX=4602h
|
|
--------D-2F4602-----------------------------
|
|
INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
|
|
AX = 4602h
|
|
Return: ???
|
|
Note: the DOS 5+ kernel intercepts this function and copies the
|
|
previously-saved MCB from the DOS data segment into the MCB following
|
|
the caller's PSP memory block; in conjunction with AX=4601h, this
|
|
intercept is used by DOS to avoid corruption of the Windows real-mode
|
|
heap's end sentinel
|
|
SeeAlso: AX=1700h,AX=4601h
|
|
--------E-2F46-------------------------------
|
|
INT 2F U - Windows/286 DOS Extender
|
|
AH = 46h
|
|
AL = subfunction (03h,04h)
|
|
Return: ???
|
|
Note: these two subfunctions are called by MS Windows 3.0
|
|
--------v-2F4653CX0002-----------------------
|
|
INT 2F - F-PROT v1.x only - F-LOCK.EXE - API
|
|
AX = 4653h ('FS')
|
|
CX = 0002h
|
|
BX = subfunction
|
|
0000h installation check
|
|
Return: AX = FFFFh
|
|
0001h uninstall
|
|
Return: AX,BX,ES destroyed
|
|
0002h disable (v1.08 and below only)
|
|
0003h enable (v1.08 and below only)
|
|
Program: F-LOCK is part of the shareware F-PROT virus/trojan protection
|
|
package by Fridrik Skulason
|
|
SeeAlso: AX=4653h/CX=0003h,AX=CA00h,INT 21/AX=4BEEh
|
|
Index: installation check;F-LOCK|uninstall;F-LOCK
|
|
--------v-2F4653CX0003-----------------------
|
|
INT 2F - F-PROT v1.x only - F-XCHK.EXE - API
|
|
AX = 4653h ('FS')
|
|
CX = 0003h
|
|
BX = subfunction
|
|
0000h installation check
|
|
Return: AX = FFFFh
|
|
0001h uninstall
|
|
Return: AX,BX,ES destroyed
|
|
Program: F-XCHK is part of the shareware F-PROT virus/trojan protection
|
|
package by Fridrik Skulason
|
|
SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0004h,AX=CA00h
|
|
Index: installation check;F-XCHK|uninstall;F-XCHK
|
|
--------v-2F4653CX0004-----------------------
|
|
INT 2F - F-PROT v1.x only - F-POPUP.EXE - API
|
|
AX = 4653h ('FS')
|
|
CX = 0004h
|
|
BX = subfunction
|
|
0000h installation check
|
|
Return: AX = FFFFh
|
|
0001h uninstall
|
|
Return: AX,BX,ES destroyed
|
|
0002h disable (v1.08 and below only)
|
|
display message (v1.14+)
|
|
other registers: ???
|
|
0003h enable (v1.08 and below only)
|
|
display message (v1.14+)
|
|
other registers: ???
|
|
Return: AX = key pressed by user
|
|
Program: F-POPUP is part of the shareware F-PROT virus/trojan protection
|
|
package by Fridrik Skulason
|
|
SeeAlso: AX=4653h/CX=0003h,AX=4653h/CX=0005h,AX=CA00h
|
|
Index: installation check;F-POPUP|uninstall;F-POPUP
|
|
--------v-2F4653CX0005-----------------------
|
|
INT 2F - F-PROT v1.x only - F-DLOCK.EXE - API
|
|
AX = 4653h ('FS')
|
|
CX = 0005h
|
|
BX = subfunction
|
|
0000h installation check
|
|
Return: AX = FFFFh
|
|
0001h uninstall
|
|
Return: AX,BX,ES destroyed
|
|
Program: F-DLOCK is part of the shareware F-PROT virus/trojan protection
|
|
package by Fridrik Skulason
|
|
SeeAlso: AX=4653h/CX=0004h,AX=CA00h
|
|
Index: installation check;F-DLOCK|uninstall;F-DLOCK
|
|
----------2F4653CX0007-----------------------
|
|
INT 2F - F-PROT v2.x - VIRSTOP - ENABLE/DISABLE BOOTSECTOR READ CHECKING
|
|
AX = 4653h ('FS')
|
|
CX = 0007h
|
|
BL = new state of bootsector checking (01h = disabled)
|
|
Program: VIRSTOP is the resident virus-checker from Fridrik Skulason's F-PROT
|
|
virus/trojan protection package
|
|
----------2F4653CX0008-----------------------
|
|
INT 2F - F-PROT v2.x - ???
|
|
AX = 4653h ('FS')
|
|
CX = 0008h
|
|
???
|
|
Return: ???
|
|
Note: called by F-PROT v2.x VIRSTOP
|
|
----------2F4653CX0008-----------------------
|
|
INT 2F - F-PROT v2.x - VIRSTOP - INSTALLATION CHECK
|
|
AX = 4653h ('FS')
|
|
CX = 0008h
|
|
Return: AX = 5346h if installed
|
|
BX = version???
|
|
DS:SI -> ASCIZ name of file containing virus signatures
|
|
DS:DI -> 80-byte buffer for ???
|
|
--------W-2F4680-----------------------------
|
|
INT 2F U - MS Windows v3.0 - INSTALLATION CHECK
|
|
AX = 4680h
|
|
Return: AX = result
|
|
0000h MS Windows 3.0 running in real (/R) or standard (/S) mode,
|
|
or DOS 5 DOSSHELL active
|
|
nonzero no Windows, Windows prior to 3.0, or Windows3 in enhanced
|
|
mode
|
|
Note: Windows 3.1 finally provides an installation check which works in all
|
|
modes (see AX=160Ah)
|
|
SeeAlso: AX=1600h,AX=160Ah
|
|
----------2F47-------------------------------
|
|
INT 2F U - ???
|
|
AH = 47h
|
|
???
|
|
Return: ???
|
|
Note: reportedly called by Microsoft BASIC Compiler v7.0
|
|
--------K-2F4800-----------------------------
|
|
INT 2F - DOS 5+ DOSKEY - INSTALLATION CHECK
|
|
AX = 4800h
|
|
Return: AL = nonzero if installed
|
|
(DOS 5.0 and 6.0 return AX=AA02h, Novell DOS 7 returns AX=EDFFh)
|
|
ES = segment of DOSKEY resident portion
|
|
DX = ??? (Novell DOS only; 02E6h for shipped v0.01)
|
|
Notes: DOSKEY chains if AL is not 00h or 10h on entry
|
|
this function is supported by Novell DOS 7 DOSKEY
|
|
SeeAlso: AX=4800h"PCED",AX=4810h
|
|
--------K-2F4800-----------------------------
|
|
INT 2F - PCED v2.1 - INSTALLATION CHECK
|
|
AX = 4800h
|
|
Return: AX = AACDh if installed
|
|
ES = segment of PCED kernel (PCED has multiple code segments)
|
|
Program: PCED v2.1 is a command line editor/history/macro facility by
|
|
Cove Software. It is the commercial version of the freeware CED.
|
|
Notes: DOSKEY also responds to this call if installed, returning AX=AA02h.
|
|
unlike DOSKEY, PCED does *not* chain if AL contains an
|
|
unsupported function code. It IRETs with all registers intact.
|
|
--------K-2F4810-----------------------------
|
|
INT 2F - DOS 5+ DOSKEY, PCED v2.1 - READ INPUT LINE FROM CONSOLE
|
|
AX = 4810h
|
|
DS:DX -> line buffer (see #01344 at INT 21/AH=0Ah)
|
|
Return: AX = 0000h if successful
|
|
Notes: the first byte (length) of the buffer MUST be 80h, or MS-DOS's DOSKEY
|
|
chains to the previous handler; PCED and Novell DOS allow sizes
|
|
other than 80h
|
|
if the user's input is a macro name, no text is placed in the buffer
|
|
even though AX=0000h on return; the program must immediately issue
|
|
this call again to retrieve the expansion of the macro. Similarly,
|
|
if the user enters a special parameter such as $*, this call must
|
|
be repeated to retrieve the expansion; on the second call, DOSKEY
|
|
overwrites the macro name on the screen with its expansion.
|
|
unlike DOSKEY, PCED expands all macros on the first call, so it is
|
|
not necessary to make two calls; since the buffer is not empty on
|
|
return, DOSKEY-aware programs will not make the second call
|
|
DOSKEY chains if AL is not 00h or 10h on entry
|
|
this function is supported by Novell DOS 7 DOSKEY
|
|
SeeAlso: AX=4800h,INT 21/AH=0Ah
|
|
--------K-2F48C0-----------------------------
|
|
INT 2F - PCED v2.1 - PCED API
|
|
AX = 48C0h
|
|
DX = API function code
|
|
other registers as required by the specified function
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = PCED error code
|
|
other registers as appropriate for API function
|
|
Program: PCED v2.1 is a command line editor/history/macro facility by
|
|
Cove Software. It is the commercial version of the freeware CED.
|
|
Note: the full API information is available from Cove Software
|
|
SeeAlso: AX=4800h"PCED",AX=48C1h,AX=48C2h,AX=48C3h
|
|
--------U-2F48C1BL00-------------------------
|
|
INT 2F - PCED/VSTACK - INSTALLATION CHECK
|
|
AX = 48C1h
|
|
BL = 00h
|
|
Return: AX = 0000h if installed
|
|
BX = VSTACK resident segment
|
|
Program: VSTACK is a resident backscroll utility included as part of the PCED
|
|
package by Cove Software
|
|
Note: chains if BL <> 00h on entry
|
|
SeeAlso: AX=48C0h,AX=48C2h
|
|
--------U-2F48C2BL00-------------------------
|
|
INT 2F - PCED/ATTRIB - INSTALLATION CHECK
|
|
AX = 48C2h
|
|
BL = 00h
|
|
Return: AX = 0000h if installed
|
|
BX = ATTRIB resident segment
|
|
Program: ATTRIB is a resident file attribute changer included as part of the
|
|
PCED package by Cove Software
|
|
Note: chains if BL <> 00h on entry
|
|
SeeAlso: AX=48C0h,AX=48C1h,AX=48C3h
|
|
--------K-2F48C3BL00-------------------------
|
|
INT 2F - PCED/KEYDEF - INSTALLATION CHECK
|
|
AX = 48C3h
|
|
BL = 00h
|
|
Return: AX = 0000h if installed
|
|
BX = KEYDEF resident segment
|
|
Program: KEYDEF is a resident keyboard redefinition utility included as part
|
|
of the PCED package by Cove Software
|
|
Note: chains if BL <> 00h on entry
|
|
SeeAlso: AX=48C0h,AX=48C2h,AX=48C4h
|
|
--------U-2F48C4BL00-------------------------
|
|
INT 2F - PCED/FLIST - INSTALLATION CHECK
|
|
AX = 48C4h
|
|
BL = 00h
|
|
Return: AX = 0000h if installed
|
|
BX = FLIST resident segment
|
|
Program: FLIST is a resident filelist processor included as part of the PCED
|
|
package by Cove Software
|
|
Note: chains if BL <> 00h on entry
|
|
SeeAlso: AX=48C0h,AX=48C3h,AX=48C5h
|
|
--------U-2F48C5BL00-------------------------
|
|
INT 2F - PCED/ASSOC - INSTALLATION CHECK
|
|
AX = 48C5h
|
|
BL = 00h
|
|
Return: AX = 0000h if installed
|
|
BX = ASSOC resident segment
|
|
Program: ASSOC is a resident utility included as part of the PCED package which
|
|
associates files with executable programs based on their extensions
|
|
Note: chains if BL > 02h on entry
|
|
SeeAlso: AX=48C0h,AX=48C4h,AX=48C5h/BL=01h,AX=48C5h/BL=02h
|
|
--------U-2F48C5BL01-------------------------
|
|
INT 2F - PCED/ASSOC - GET VERSION
|
|
AX = 48C5h
|
|
BL = 01h
|
|
Return: AX = 0000h if installed
|
|
BX = binary ASSOC version (BL = major, BH = minor)
|
|
Note: chains if BL > 02h on entry
|
|
SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=02h
|
|
--------U-2F48C5BL02-------------------------
|
|
INT 2F - PCED/ASSOC - ASSOCIATION TEST
|
|
AX = 48C5h
|
|
BL = 02h
|
|
DS:SI -> ASCIZ filename
|
|
Return: AX = status
|
|
0000h if filename is unknown
|
|
0001h if there is an association defined for the file
|
|
BX destroyed
|
|
Program: ASSOC is a resident utility included as part of the PCED package which
|
|
associates files with executable programs based on their extensions
|
|
Note: chains if BL > 02h on entry
|
|
SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=01h
|
|
----------2F49-------------------------------
|
|
INT 2F U - DOS 5.0+ SETUP
|
|
AH = 49h
|
|
AL = function
|
|
00h update format completion gauge
|
|
BX = percentage complete, 0000h when done, FFFFh if aborted
|
|
Return: AX = status
|
|
0000h continue formatting
|
|
else installation program wants FORMAT to abort
|
|
10h get pointer to resident data
|
|
AX = FFFFh if supported
|
|
ES:BX -> internal structure
|
|
???
|
|
Return: ???
|
|
--------D-2F4A00CX0000-----------------------
|
|
INT 2F CU - DOS 5+ - FLOPPY-DISK LOGICAL DRIVE CHANGE NOTIFICATION
|
|
AX = 4A00h
|
|
CX = 0000h
|
|
DH = new drive number
|
|
DL = current drive number
|
|
Return: CX = FFFFh to skip "Insert diskette for drive X:" message
|
|
Note: called by MS-DOS 5.0+ IO.SYS just before displaying the message
|
|
"Insert diskette for drive X:" on single-floppy systems
|
|
--------D-2F4A01-----------------------------
|
|
INT 2F - DOS 5+ - QUERY FREE HMA SPACE
|
|
AX = 4A01h
|
|
Return: BX = number of bytes available in HMA (0000h if DOS not using HMA)
|
|
ES:DI -> start of available HMA area (FFFFh:FFFFh if not using HMA)
|
|
Notes: called by Windows 3.1 DOSX.EXE
|
|
supported by Novell DOS 7
|
|
SeeAlso: AX=4310h,AX=4A02h
|
|
--------D-2F4A02-----------------------------
|
|
INT 2F - DOS 5+ - ALLOCATE HMA SPACE
|
|
AX = 4A02h
|
|
BX = number of bytes
|
|
Return: ES:DI -> start of allocated HMA block or FFFFh:FFFFh
|
|
BX = number of bytes actually allocated (rounded up to next paragraph
|
|
for DOS 5.0 and 6.0)
|
|
Notes: this call is not valid unless DOS is loaded in the HMA (DOS=HIGH)
|
|
called by Windows 3.1 DOSX.EXE
|
|
supported by Novell DOS 7
|
|
SeeAlso: AX=4A01h,AX=4A03h
|
|
--------D-2F4A03-----------------------------
|
|
INT 2F U - Windows95 - DOS KERNEL - (DE)ALLOCATE HMA MEMORY BLOCK
|
|
AX = 4A03h
|
|
CX = segment of block's owner???
|
|
DL = subfunction
|
|
00h allocate block
|
|
BX = number of bytes
|
|
Return: DI=FFFFh if unable to allocate
|
|
ES:DI -> allocated block
|
|
01h resize block
|
|
ES:DI -> previously-allocated block
|
|
BX = new size in bytes (must be less than original size???)
|
|
Return: DI=FFFFh if unable to allocate
|
|
ES:DI -> reallocated block
|
|
Note: the contents of the original block are NOT copied
|
|
02h free block???
|
|
ES:DI -> block to be freed
|
|
Note: in MS-DOS 7.x, function 4A02h is implemented by calling this function
|
|
with DL=00h
|
|
SeeAlso: AX=4A02h
|
|
--------D-2F4A04-----------------------------
|
|
INT 2F U - Windows95 - DOS KERNEL - GET START OF HMA MEMORY CHAIN
|
|
AX = 4A04h
|
|
Return: AX = 0000h if function supported
|
|
ES:DI -> first HMA memory control block (see #02800)
|
|
|
|
Format of Windows95 HMA memory control block:
|
|
Offset Size Description (Table 02800)
|
|
00h 2 BYTEs signature "MS" (4Dh 53h)
|
|
02h WORD segment of owner (or segment at which to address block???)
|
|
0000h = free
|
|
0001h = DOS???
|
|
FF33h = IO.SYS
|
|
FFFFh = MSDOS.SYS
|
|
04h WORD size of memory block (not including this header)
|
|
06h WORD offset of next memory block in segment FFFFh, or 0000h if last
|
|
08h 8 BYTEs unused (explicitly set to 0 for MS-DOS 7.10)
|
|
--------T-2F4A05-----------------------------
|
|
INT 2F U - DOS 5+ DOSSHELL - TASK SWITCHING API???
|
|
AX = 4A05h
|
|
SI = function
|
|
0000h reset???
|
|
0001h ???
|
|
ES:BP -> 80-byte buffer containing ???
|
|
0002h ???
|
|
0003h ???
|
|
0004h ???
|
|
BL = ???
|
|
0005h ???
|
|
0006h get ???
|
|
Return: ES:SI -> ???
|
|
0007h get ???
|
|
Return: AX = ???
|
|
0008h get ???
|
|
Return: DX:AX -> ??? (internal control data of some kind)
|
|
0009h get ???
|
|
Return: ES:SI -> ??? (apparently identical to function 0006h)
|
|
000Ah ???
|
|
BL = length of buffer
|
|
ES:BP -> buffer containing ???
|
|
000Bh get ???
|
|
Return: AX = ???
|
|
000Ch ???
|
|
BL = ???
|
|
Return: if BL nonzero on entry
|
|
DX:AX -> ???
|
|
if BL = 00h on entry
|
|
ES:SI -> ???
|
|
Notes: DOSSHELL chains to the previous handler if SI is not one of the values
|
|
listed above
|
|
the DOSSWAP.EXE module calls functions 03h,04h,05h,07h,08h,09h,0Ch
|
|
the Windows 3.1 DSWAP.EXE and WSWAP.EXE task switchers use these calls
|
|
SeeAlso: AX=4B01h
|
|
--------D-2F4A06-----------------------------
|
|
INT 2F CU - DOS 5+ - DOS SUPERVISOR "REBOOT PANEL" - ADJUST MEMORY SIZE
|
|
AX = 4A06h
|
|
DX = segment following last byte of conventional memory
|
|
Return: DX = segment following last byte of memory available for use by DOS
|
|
Desc: used to override the default memory size when booting diskless
|
|
workstations
|
|
Notes: called by MS-DOS 5+ IO.SYS and DR DOS 6.0+ IBMBIO.OCM startup code if
|
|
the signature "RPL" is present three bytes beyond the INT 2F handler;
|
|
this call overrides the value returned by INT 12
|
|
hooked by RPL code at the top of memory to protect itself from being
|
|
overwritten; DOS builds a memory block with owner = 0008h and name
|
|
"RPL" which must be freed by the RPL code when it is done.
|
|
Under DR DOS, it is sufficient to set the owner field of the MCB to
|
|
0000h.
|
|
In addition to the test for "RPL", DR PalmDOS (since 1992/08/25),
|
|
DR DOS 6.0 "Business update March 1993", DR DOS "Panther" and
|
|
"StarTrek", and Novell DOS 7+ also check for a "RPLOADER" signature.
|
|
If this 2nd signature is found, IBMBIO.COM will store the INT 2Fh
|
|
vector for later use after the BIOS init, when at several points it
|
|
directly calls the RPLOADER via an emulated INT 2Fh with
|
|
AX=12FFh/BX=5/CX=0/DX=1 and a phase code 1, 2 or 3 on the stack.
|
|
This permits the RPLOADER to keep track of the initialization
|
|
process and clean or fix up anything it wishes. The "phase 1"
|
|
broadcast is issued after the BIOS init code and data have been
|
|
relocated (e.g. into the HMA), "phase 2" gets issued immediately
|
|
before the CONFIG.SYS processing begins and the DOS code and data
|
|
are relocated, and the closing "phase 3" happens to permit any
|
|
final tidy ups before the memory manager gets acknowledgement of
|
|
completion.
|
|
SeeAlso: INT 12"BIOS",INT 18"BOOT HOOK",AX=4A07h,INT 2F/AX=12FFh/BX=0005h
|
|
--------N-2F4A07-----------------------------
|
|
INT 2F U - RESERVED FOR PROTMAN SUPPORT
|
|
AX = 4A07h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=4A06h,INT 18"BOOT HOOK"
|
|
--------c-2F4A10BX0000-----------------------
|
|
INT 2F - SMARTDRV v4.00+ - INSTALLATION CHECK AND HIT RATIOS
|
|
AX = 4A10h
|
|
BX = 0000h
|
|
CX = EBABh (v4.1+; see Note), and CX <> 0EDCh
|
|
Return: AX = BABEh if installed
|
|
DX:BX = cache hits
|
|
DI:SI = cache misses
|
|
CX = number of dirty cache elements
|
|
BP = version in BCD (4.10 = 0410h)
|
|
4.0 = 0400h (Windows 3.1)
|
|
4.01 = 0401h (MS-DOS 6.0, 1992/07/30)
|
|
4.10 = 0410h (1992/11/11)
|
|
4.20 = 0420h
|
|
5.0 = 0500h (MS-DOS 6.2)
|
|
Notes: most of the SMARTDRV API, including this call, is supported by
|
|
PC-Cache v8.0 and recent versions of the Norton Caches
|
|
the internal name for SMARTDRV is "BAMBI", hence the magic "BABE".
|
|
if DBLSPACE.BIN is installed but SMARTDRV has not yet been installed,
|
|
then calls of this function with CX<>EBABh on entry cause
|
|
DBLSPACE.BIN to display the error message
|
|
"Cannot run SMARTDrive 4.0 with DoubleSpace" and abort the caller
|
|
with INT 21/AX=4C00h
|
|
Since the Novell DOS 7 - DR-DOS 7.03 NWCACHE supports a similar
|
|
install check at this function, but the returned registers
|
|
contain different data, the caller must take the returned AX value
|
|
into account to ensure proper interpretation of the returned info.
|
|
The caller should ensure CX <> 0EDCh to avoid any interaction
|
|
with the NWCACHE and COMMAND.COM special case of CX=0EDCh.
|
|
Although this is an install check, NWCACHE always flushes delayed
|
|
writes to disk, when calling this function with CX<>0EDCh or while
|
|
/FLUSH:ON is active, but this is nothing to rely upon. The reason
|
|
for this could be to get more accurate statistics, while SMARTDRV
|
|
just takes a on-the-fly snapshot of the statistic vars.
|
|
The private NWCACHE/NLCACHE install check INT2Fh/D8C0h does not flush
|
|
to disk, and therefore can be used by callers that must ensure
|
|
the buffers aren't flushed on this function (e.g. alternative
|
|
command shells may need this to make their "flush before prompt"
|
|
feature configurable).
|
|
The NWCACHE 0EDCh special case will most probably vanish with
|
|
future issues of NWCACHE (2.0+).
|
|
SMARTDRV v3.x had a completely different API using IOCTL calls, which
|
|
was also supported by the Norton Caches
|
|
BUG: Although DS and ES registers are listed as unmodified, some
|
|
releases of SMARTDRV seem to trash the DS register, at least the
|
|
MS-DOS 6.2+ KEYB takes care to preserve the DS register when calling
|
|
this function.
|
|
SeeAlso: AX=4A10h/BX=0001h,AX=4A10h/BX=0004h,AX=4A10h/BX=0005h
|
|
SeeAlso: AX=4A10h/BX=0007h,AX=4A10h/BX=1234h,AX=4A11h/BX=0000h
|
|
SeeAlso: INT 21/AX=4402h"SMARTDRV",INT 21/AX=4403h"SMARTDRV"
|
|
--------c-2F4A10BX0000-----------------------
|
|
INT 2F U - Novell NWCACHE - INSTALLATION CHECK AND STATISTICS
|
|
AX = 4A10h
|
|
BX = 0000h
|
|
CX = magic value
|
|
0EDCh flush delayed writes
|
|
('EDC' = Novell European Development Center)
|
|
other (use EBABh to avoid SMARTDRV/DBLSPACE interaction)
|
|
Return: (also refer to notes below)
|
|
AX = 6756h ('gV') if installed
|
|
CF clear
|
|
BX = cache memory type
|
|
01h conventional memory
|
|
02h extended memory
|
|
03h EMS
|
|
DI:SI = cache misses
|
|
CX:DX = segment:offset address of data area containing statistics
|
|
(see #04095)
|
|
BP = version in BCD
|
|
0100h = 1.00
|
|
0101h = 1.01 & 1.02 (!)
|
|
Notes: SMARTDRV 4.0+ uses a similar installation check on this function but
|
|
returns different data. To ensure proper interpretation of
|
|
the returned values, the caller must check the returned magic
|
|
value in AX. Since SMARTDRV may also alter DI:SI (and possibly
|
|
DS), the caller should take care of this, too.
|
|
The Novell DOS / DR-DOS 7.x COMMAND.COM invokes this function with
|
|
CX=0EDCh, which causes NWCACHE to flush any delayed writes before
|
|
returning the normal register values if it is configured to flush
|
|
writes before returning to the DOS prompt (/FLUSH:ON); however, if
|
|
/FLUSH:OFF, this function becomes a NOP with CX=0EDCh.
|
|
Note that for this function the 0EDCh special case may vanish with
|
|
future issues of NWCACHE (2.0+), and the function would then always
|
|
do the normal install check, and not flush the cache.
|
|
SeeAlso: AX=4A10h/BX=0001h"NWCACHE"
|
|
|
|
Format of NWCACHE statistics:
|
|
Offset Size Description (Table 04095)
|
|
00h DWORD number of read requests
|
|
04h DWORD number of reads performed
|
|
08h DWORD number of write requests
|
|
0Ch DWORD number of writes performed
|
|
10h WORD number of disk errors
|
|
12h WORD number of cache memory errors
|
|
--------c-2F4A10BX0001-----------------------
|
|
INT 2F - SMARTDRV v4.00+ - FLUSH BUFFERS (COMMIT CACHE)
|
|
AX = 4A10h
|
|
BX = 0001h
|
|
Note: this function is also supported by PC-Cache v8.0.
|
|
SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0002h,INT 21/AH=0Dh
|
|
--------c-2F4A10BX0001-----------------------
|
|
INT 2F U - Novell NWCACHE - ???
|
|
AX = 4A10h
|
|
BX = 0001h
|
|
CX = 0EDCh ('EDC' = Novell European Development Center)
|
|
Return: ???
|
|
SeeAlso: AX=4A10h/BX=0000h"NWCACHE"
|
|
--------c-2F4A10BX0002-----------------------
|
|
INT 2F - SMARTDRV v4.00+ - RESET CACHE
|
|
AX = 4A10h
|
|
BX = 0002h
|
|
Note: this function is also supported by PC-Cache v8.0.
|
|
SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0001h
|
|
--------c-2F4A10BX0003-----------------------
|
|
INT 2F - SMARTDRV v4.00+ - STATUS
|
|
AX = 4A10h
|
|
BX = 0003h
|
|
BP = drive number (0=A, 1=B, etc.)
|
|
FFFFh = all drives (NWCACHE only)
|
|
DL = subfunction
|
|
00h only get information
|
|
01h turn on read cache
|
|
02h turn off read cache
|
|
03h turn on write cache
|
|
04h turn off write cache
|
|
---NWCACHE---
|
|
05h reduce cache size
|
|
CX = number of KB to reduce (can't shrink below min size)
|
|
06h increase cache size
|
|
CX = number of KB to increase (can't grow above max size)
|
|
Return: AX = BABEh if OK
|
|
DL = status (see #02801)
|
|
DL = FFh if drive does not exist
|
|
Notes: If the read cache is off, reads will not be cached, but writes will
|
|
continue to be cached if the write-cache is enabled.
|
|
this function is also supported by PC-Cache v8.0.
|
|
SMARTDRV flushes the cache if sub-functions 02h or 04h have been
|
|
called to disable read or write caching.
|
|
On calling this function, NWCACHE flushes any delayed writes,
|
|
but you should not rely on this, since this behavior may vanish
|
|
in future versions.
|
|
BUG: The MS-DOS 6.20+ SCANDISK disables a SMARTDRV 4+ compatible cache
|
|
for the drive it is about to process. However, at least when the
|
|
cache loaded is NWCACHE, the cache will still remain disabled for
|
|
this drive after SCANDISK has finished. The reason for this behavior
|
|
is not yet known. The workaround is to re-enable with the
|
|
NWCACHE d:+ syntax afterwards, where d: is the corresponding
|
|
drive letter.
|
|
SeeAlso: AX=4A10h/BX=0000h
|
|
|
|
Bitfields for SMARTDRV status:
|
|
Bit(s) Description (Table 02801)
|
|
7 not cached (no read-caching)
|
|
6 write-through (not write-cached)
|
|
0-5 real drive number (0=A, 1=B...)
|
|
Notes: the "real" drive number is always set to 00h for RAM disks and to 3Fh
|
|
for CD-ROMs; unfortunately, the latter means that an uncached CD-ROM
|
|
has status FFh, just as a nonexistent drive does
|
|
also supported by Novell DOS 7 - Caldera/Lineo DR-DOS 7.03 NWCACHE
|
|
--------c-2F4A10BX0004-----------------------
|
|
INT 2F - SMARTDRV v4.00+ - GET CACHE SIZE
|
|
AX = 4A10h
|
|
BX = 0004h
|
|
Return: AX = size in elements of full-sized cache
|
|
BX = current size in elements
|
|
CX = size of one element in bytes
|
|
DX = number of elements under Windows
|
|
Note: this function is also supported by PC-Cache v8.0.
|
|
SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0005h
|
|
--------c-2F4A10BX0005-----------------------
|
|
INT 2F - SMARTDRV v4.00+ - GET DOUBLE-BUFFER STATUS
|
|
AX = 4A10h
|
|
BX = 0005h
|
|
BP = drive number (0=A, 1=B...)
|
|
Return: AX = BABEh if double-buffered
|
|
ES:DI -> 16-byte array of status bytes for fixed disks (see #02802)
|
|
SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0006h
|
|
|
|
(Table 02802)
|
|
Values for SMARTDRV status byte:
|
|
00h state unknown
|
|
FFh drive double-buffered
|
|
else not double-buffered
|
|
--------c-2F4A10BX0006-----------------------
|
|
INT 2F CU - SMARTDRV v4.00+ - CHECK IF DRIVE CACHEABLE
|
|
AX = 4A10h
|
|
BX = 0006h
|
|
CL = drive number (01h = A:)
|
|
Return: AX = 0006h if drive should not be cached by SMARTDRV
|
|
Note: called by SMARTDRV at startup to determine whether it should cache
|
|
a particular drive
|
|
SeeAlso: AX=4A10h/BX=0000h
|
|
--------c-2F4A10BX0007-----------------------
|
|
INT 2F - SMARTDRV v4.00+ - GET DEVICE DRIVER FOR DRIVE
|
|
AX = 4A10h
|
|
BX = 0007h
|
|
BP = drive number (00h=A:)
|
|
Return: DL = unit number within device driver
|
|
ES:DI -> device driver header for drive (see #01646)
|
|
Note: this function is also supported by PC-Cache v8.0.
|
|
this call is reported to always return the driver header of the
|
|
standard block driver (A:-C:+) for SmartDrive v5.00 from MS-DOS 6.2
|
|
SeeAlso: AX=4A10h/BX=0000h,AX=4A11h/BX=0003h,AX=4A11h/BX=0004h
|
|
--------c-2F4A10BX0008-----------------------
|
|
INT 2F - SMARTDRV v4.20+ - GET/SET FLUSH BEFORE PROMPT, CD-ROM SUPPORT
|
|
AX = 4A10h
|
|
BX = 0008h
|
|
DL = subfunction
|
|
00h set
|
|
DH = new states
|
|
bit 0: flush before prompt
|
|
bits 1-7 reserved (0)
|
|
01h get
|
|
Return: DH = status flags
|
|
bit 0: (v4.2+) flush before prompt
|
|
bit 1: (v5.0+) CD-ROM caching support installed
|
|
Note: v4.2 was an interim release to fix problems in the SMARTDRV included
|
|
with MS-DOS 6.00; v5.00 is included with MS-DOS 6.2
|
|
--------c-2F4A10BX000A-----------------------
|
|
INT 2F - SMARTDRV v4.00+ - GET ELEMENT STATUS TABLE
|
|
AX = 4A10h
|
|
BX = 000Ah
|
|
Return: ES:BX -> information pointer table (see #02803)
|
|
Note: this function is also supported by PC-Cache v8.0.
|
|
SeeAlso: AX=4A10h/BX=0000h
|
|
|
|
Format of SMARTDRV information pointer table:
|
|
Offset Size Description (Table 02803)
|
|
00h WORD offset of ??? byte/word array (byte if elements < 2000h bytes)
|
|
02h WORD offset of dirty flag byte/word array (byte if elts < 2000h)
|
|
each byte/word is a bit string of the dirty sectors in element
|
|
04h WORD offset of word array containing low halves of unique
|
|
identifiers for the corresponding element's contents
|
|
06h WORD offset of word array containing high halves of unique
|
|
identifiers for the corresponding element's contents
|
|
08h WORD offset of WORD containing current number of elements in cache
|
|
--------c-2F4A10BX1234-----------------------
|
|
INT 2F - SMARTDRV v4.00+ - SIGNAL SERIOUS ERROR
|
|
AX = 4A10h
|
|
BX = 1234h
|
|
Desc: this function pops up a message box saying that a serious error
|
|
occurred and to hit R to retry, then waits for the keypress
|
|
Note: this function is also supported by PC-Cache v8.0.
|
|
SeeAlso: AX=4A10h/BX=0000h
|
|
--------k-2F4A11BX0000-----------------------
|
|
INT 2F - DBLSPACE.BIN - "GetVersion" - INSTALLATION CHECK
|
|
AX = 4A11h
|
|
BX = 0000h
|
|
Return: AX = 0000h (successful)
|
|
BX = 444Dh ("DM")
|
|
CL = first drive letter used by DBLSPACE (41h ['A'] = A:)
|
|
CH = number of drive letters used by DBLSPACE
|
|
DX = internal DBLSPACE.BIN version number (bits 14-0)
|
|
bit 15 set if DBLSPACE.BIN has not yet been relocated to final
|
|
position in memory (i.e. DBLSPACE.SYS /MOVE)
|
|
Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
|
|
disk-compression software bundled with MS-DOS 6.0 and 6.20
|
|
Notes: this function is also supported by the version of SuperStor bundled
|
|
with IBM DOS 6.x and "preloading" versions of Stacker
|
|
the complete DBLSPACE.BIN API is still supported by MS-DOS 6.22's
|
|
DRVSPACE.BIN
|
|
SeeAlso: AX=4A11h/BX=0001h,AX=4A11h/BX=0002h,AX=4A11h/BX=0003h
|
|
SeeAlso: AX=4A11h/BX=0005h,AX=4A11h/BX=0007h,AX=4A11h/BX=FFFFh
|
|
SeeAlso: INT 21/AX=4404h"DBLSPACE"
|
|
--------k-2F4A11BX0001-----------------------
|
|
INT 2F - DBLSPACE.BIN - "GetDriveMapping" - GET DRIVE MAPPING
|
|
AX = 4A11h
|
|
BX = 0001h
|
|
DL = drive number (0=A:)
|
|
Return: AX = status (see also #02804)
|
|
0000h successful
|
|
if DL was compressed drive,
|
|
BL = host drive (bit 7 set if drive is compressed)
|
|
else if DL was host drive,
|
|
BL = compressed drive
|
|
else
|
|
BL = specified drive (if available for DoubleSpace)
|
|
BH = DoubleSpace sequence number
|
|
other error code (0101h) (see #02804)
|
|
apparently never returned for the MS-DOS 6.2 DoubleSpace
|
|
Note: the compressed volume file for the specified compressed drive is
|
|
host:\DBLSPACE.sequence
|
|
SeeAlso: AX=4A11h/BX=0000h
|
|
|
|
(Table 02804)
|
|
Values for DBLSPACE function status:
|
|
0000h successful
|
|
0100h bad function
|
|
0101h invalid drive
|
|
0102h not a compressed drive
|
|
0103h drive already swapped
|
|
0104h drive not swapped
|
|
SeeAlso: #02806
|
|
--------k-2F4A11BX0002-----------------------
|
|
INT 2F - DBLSPACE.BIN - "Swap Drive" - SWAP DRIVE LETTERS OF CVF AND HOST DRIVE
|
|
AX = 4A11h
|
|
BX = 0002h
|
|
DL = drive number (0=A:) of compressed drive to swap with its host
|
|
Return: AX = status (0000h,0101h,0102h,0103h) (see #02804)
|
|
Note: this function is intended for use by DBLSPACE.EXE only
|
|
SeeAlso: AX=4A11h/BX=0000h
|
|
--------k-2F4A11BX0003-----------------------
|
|
INT 2F - DBLSPACE.BIN - "DSGetEntryPoints" - GET DEVICE DRIVER ENTRY POINTS
|
|
AX = 4A11h
|
|
BX = 0003h
|
|
CL = drive number (0=A:) of compressed drive
|
|
Return: CL = FFh on error (not compressed drive)
|
|
CL <> FFh driver unit number of host drive
|
|
ES:SI -> device driver's strategy routine
|
|
ES:DI -> device driver's interrupt routine
|
|
BX destroyed
|
|
Note: in conjunction with subfunction 0004h, this call allows disk caches
|
|
like SMARTDRV to apply a device driver wrapper to DoubleSpaced
|
|
drives just like SMARTDRV applies to regular block devices
|
|
SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0004h
|
|
--------k-2F4A11BX0004-----------------------
|
|
INT 2F - DBLSPACE.BIN - "DSSetEntryPoints" - SET DEVICE DRIVER ENTRY POINTS
|
|
AX = 4A11h
|
|
BX = 0004h
|
|
CL = drive number (0=A:) of compressed drive
|
|
DL = unit number for new driver entry points
|
|
DH = 00h
|
|
ES:SI -> device driver strategy routine to call for drive
|
|
ES:DI -> device driver interrupt routine to call for drive
|
|
Return: CL = FFh on error (not a compressed drive)
|
|
BX destroyed
|
|
Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
|
|
disk-compression software bundled with MS-DOS 6.0
|
|
Note: in conjunction with subfunction 0003h, this call allows disk caches
|
|
like SMARTDRV to apply a device driver wrapper to DoubleSpaced
|
|
drives just like SMARTDRV applies to regular block devices
|
|
SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0003h
|
|
--------k-2F4A11BX0005-----------------------
|
|
INT 2F - DBLSPACE.BIN - "ActivateDrive" - MOUNT COMPRESSED DRIVE
|
|
AX = 4A11h
|
|
BX = 0005h
|
|
DL = drive number (0=A:) to assign to new drive
|
|
ES:SI -> activation record (see #02805)
|
|
Return: status returned in activation record (see #02806)
|
|
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0006h
|
|
|
|
Format of DBLSPACE activation record:
|
|
Offset Size Description (Table 02805)
|
|
00h 2 BYTEs signature "MD" (4Dh 44h)
|
|
02h BYTE 4Dh ('M') mount command
|
|
03h BYTE error code (set to FFh before calling) (see #02806)
|
|
04h BYTE host drive number (0=A:)
|
|
05h ??? DISK_UNIT structure (not documented)
|
|
|
|
(Table 02806)
|
|
Values for DBLSPACE Mount error code:
|
|
00h successful
|
|
01h drive letter not available for DoubleSpace
|
|
02h drive letter already in use
|
|
03h no more disk units (increase MaxRemovableDrives in .INI)
|
|
09h CVF too fragmented
|
|
SeeAlso: #02805,#02804
|
|
--------k-2F4A11BX0006-----------------------
|
|
INT 2F - DBLSPACE.BIN - "DeactivateDrive" - UNMOUNT COMPRESSED DRIVE
|
|
AX = 4A11h
|
|
BX = 0006h
|
|
DL = drive number (0=A:) to unmount
|
|
Return: AX = status (0000h,0102h) (see #02804)
|
|
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0005h
|
|
--------k-2F4A11BX0007-----------------------
|
|
INT 2F - DBLSPACE.BIN - "GetDriveSpace" - GET SPACE AVAIL ON COMPRESSED DRIVE
|
|
AX = 4A11h
|
|
BX = 0007h
|
|
DL = compressed drive number (0=A:)
|
|
Return: AX = status (0000h,0102h) (see also #02804)
|
|
0000h successful
|
|
DS:SI -> free space record (see #02807)
|
|
Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
|
|
disk-compression software bundled with MS-DOS 6.0
|
|
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
|
|
|
|
Format of DBLSPACE free space record:
|
|
Offset Size Description (Table 02807)
|
|
00h DWORD total number of sectors in drive's sector heap
|
|
04h DWORD number of free sectors in drive's sector heap
|
|
--------k-2F4A11BX0008-----------------------
|
|
INT 2F - DBLSPACE.BIN - "GetFileFragmentSpace" - GET SIZE OF FRAGMENT HEAP
|
|
AX = 4A11h
|
|
BX = 0008h
|
|
DL = compressed drive number (0=A:)
|
|
Return: AX = status (0000h,0102h) (see also #02804)
|
|
0000h successful
|
|
BX = maximum entries in File Fragment heap
|
|
CX = available entries in File Fragment heap
|
|
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0007h,AX=4A11h/BX=0009h
|
|
--------k-2F4A11BX0009-----------------------
|
|
INT 2F - DBLSPACE.BIN - "GetExtraInfo" - DETERMINE NUMBER OF DISK_UNIT STRUCTS
|
|
AX = 4A11h
|
|
BX = 0009h
|
|
DL = compressed drive number (0=A:)
|
|
Return: AX = status (see also #02804)
|
|
0000h successful
|
|
CL = number of DISK_UNIT structures allocated
|
|
(see AX=4A11h/BX=0005h)
|
|
CH = DoubleGuard enabled-checks bitflags in bits 6-0 (DOS 6.2)
|
|
Note: the DoubleGuard checks are enabled or disabled as a block by the
|
|
DoubleGuard= line in DBLSPACE.INI; they may be individually set with
|
|
the CheckSum= line.
|
|
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
|
|
--------k-2F4A11BX000A-----------------------
|
|
INT 2F - DBLSPACE.BIN v6.2 - SET AUTOMOUNT DRIVES
|
|
AX = 4A11h
|
|
BX = 000Ah
|
|
CX:DX = bitmask of drives on which to enable AutoMount
|
|
(DX bit 0 = A:, CX bit 0 = P:, etc.)
|
|
Return: AX = 0000h if supported
|
|
CX:DX = old mask or 0000h:0000h on error
|
|
BX destroyed
|
|
SeeAlso: AX=4A11h/BX=000Bh
|
|
--------k-2F4A11BX000B-----------------------
|
|
INT 2F - DBLSPACE.BIN v6.2 - GET AUTOMOUNT DRIVES
|
|
AX = 4A11h
|
|
BX = 000Bh
|
|
Return: AX = 0000h if supported
|
|
CX:DX = mask of drives with AutoMount enabled
|
|
0000h:0000h on error
|
|
BX destroyed
|
|
SeeAlso: AX=4A11h/BX=000Ah
|
|
--------k-2F4A11BXFFFE-----------------------
|
|
INT 2F U - DBLSPACE.BIN - RELOCATE
|
|
AX = 4A11h
|
|
BX = FFFEh
|
|
ES = segment to which to relocate DBLSPACE.BIN
|
|
Return: ???
|
|
Notes: called by DBLSPACE.SYS to relocate DBLSPACE.BIN to its final position
|
|
in memory
|
|
this function also unhooks and discards the code providing this
|
|
function and AX=4A11h/BX=FFFFh
|
|
this function is also supported by the version of SuperStor bundled
|
|
with IBM DOS 6.x and "preloading" versions of Stacker
|
|
SeeAlso: AX=4A11h/BX=FFFFh
|
|
--------k-2F4A11BXFFFF-----------------------
|
|
INT 2F U - DBLSPACE.BIN - GET RELOCATION SIZE
|
|
AX = 4A11h
|
|
BX = FFFFh
|
|
Return: AX = number of paragraphs needed by DBLSPACE.BIN
|
|
Note: used by DBLSPACE.SYS to relocate the DBLSPACE driver to its final
|
|
position in memory
|
|
this function is also supported by the version of SuperStor bundled
|
|
with IBM DOS 6.x and "preloading" versions of Stacker
|
|
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=FFFEh
|
|
--------k-2F4A12CX4D52-----------------------
|
|
INT 2F - Microsoft Realtime Compression Interface (MRCI) - RAM-BASED SERVER
|
|
AX = 4A12h
|
|
CX = 4D52h ("MR")
|
|
DX = 4349h ("CI")
|
|
Return: CX = 4943h ("IC") if installed
|
|
DX = 524Dh ("RM") if installed
|
|
ES:DI -> MRCINFO structure (see #00725 at INT 1A/AX=B001h)
|
|
Note: this call is functionally identical to INT 1A/AX=B001h, but should be
|
|
called first, as the latter call is used for the first, ROM-based
|
|
MRCI server, while this call is used for RAM-based servers which
|
|
may be partially or entirely replacing a prior server
|
|
SeeAlso: AX=4A12h/CX=5354h,INT 1A/AX=B001h
|
|
--------k-2F4A12CX5354-----------------------
|
|
INT 2F - Stacker 4 LZS Compression Interface (LZSAPI)
|
|
AX = 4A12h
|
|
CX = 5354h ("ST")
|
|
DX = 4143h ("AC")
|
|
Return: AX = 4F4Bh ("OK") if installed
|
|
CX = 7374h ("st") if installed
|
|
DX = 6163h ("ac") if installed
|
|
ES:DI -> entry point in LZSAPI server (usually, driver
|
|
STACKER.COM) containing far address of an actual
|
|
LZSINFO structure (see #02808)
|
|
SeeAlso: AX=4A12h/CX=4D52h,INT 25/AX=CDCDh
|
|
|
|
Format of LZSINFO structure:
|
|
Offset Size Description (Table 02808)
|
|
00h 6 BYTEs signature "LZSAPI"
|
|
06h WORD server version (200 (0C8h) for Stacker 4 and Stacker Anywhere)
|
|
08h 4 BYTEs vendor signature
|
|
"STAC" = Stac Electronics, Inc.
|
|
0Ch 6 BYTEs ???
|
|
12h WORD bit flags: server status/capabilities (see #02809)
|
|
14h DWORD -> Stacker 3.X-compatible compression procedure
|
|
18h DWORD -> Stacker 3.X-compatible decompression procedure
|
|
1Ch 4 BYTEs reserved (always set to 0)
|
|
20h DWORD -> incremental Stacker 3.x-compatible compression procedure
|
|
(see #02810)
|
|
24h 4 BYTEs ???
|
|
28h DWORD -> incremental Stacker 3.x-compatible decompression procedure
|
|
(see #02811)
|
|
2Ch 4 BYTES ???
|
|
30h DWORD -> new (Stacker 4) compression procedure
|
|
34h 4 BYTEs ???
|
|
38h DWORD -> new (Stacker 4) decompression procedure
|
|
Notes: Stacker 4 usally keeps two different data-compression algorithms in
|
|
memory (preferably in XMA):
|
|
1) new (Stacker 4) data compression algorithm (4K LZ77 with hashing
|
|
and static Huffman encoding), and
|
|
2) old (Stacker 3.x-compatible) one (2K LZ77 with hashing), which
|
|
is used to work with STACVOL files created under older
|
|
versions of Stacker.
|
|
|
|
Bitfields for LZSAPI capabilities:
|
|
Bit(s) Description (Table 02809)
|
|
0 ???
|
|
1 busy/error flag
|
|
2-10 ???
|
|
11 maximum compressor/decompressor presented
|
|
|
|
(Table 02810)
|
|
Call Stacker 3.x-style non-incremental functions with:
|
|
STACK: DWORD return address for compress/decompress procedure
|
|
WORD compression algorithm parameters (see #02812)
|
|
WORD size of destination buffer (in bytes)
|
|
DWORD address of destination buffer
|
|
WORD size of source buffer (in bytes)
|
|
DWORD address of source buffer
|
|
Return: (compression/decompression procedure)
|
|
AX = size of resulting data in destination buffer
|
|
0000h if error (either destination buffer too small or error in
|
|
compressed data)
|
|
|
|
(Table 02811)
|
|
Call Stacker 4-style incremental procedures with:
|
|
STACK: DWORD return address for compr./decompr. procedure
|
|
DWORD address of LZSSWAP structure (see #02813)
|
|
if 0000:0000, procedure uses non-incremental technique
|
|
WORD compression algorithm parameters (see #02812)
|
|
WORD size of destination buffer (in bytes)
|
|
DWORD address of destination buffer
|
|
WORD size of source buffer (in bytes)
|
|
DWORD address of source buffer
|
|
|
|
(Table 02812)
|
|
Values for Compression algorithm parameters:
|
|
Value Compression level (/P=xx parameter)
|
|
07F9h 1
|
|
0621h 2
|
|
0625h 3
|
|
0665h 4
|
|
0669h 5
|
|
06E9h 6
|
|
06EDh 7
|
|
07D1h 8
|
|
07D9h 9
|
|
|
|
Format of LZSSWAP structure:
|
|
Offset Size Description (Table 02813)
|
|
00h 2 BYTEs signature "CS"
|
|
02h 6 BYTEs reserved
|
|
08h DWORD address of destination buffer swapping procedure
|
|
0Ch DWORD address of stack swapping procedure
|
|
--------k-2F4A13-----------------------------
|
|
INT 2F U - DBLSPACE.BIN - DBLSPACE/MRCI STEALTH PACKET API
|
|
AX = 4A13h
|
|
Return: AX = 134Ah if supported
|
|
ES:BX -> entry point record (see #02814)
|
|
SeeAlso: AX=4A11h/BX=0000h,AX=4A12h/CX=4D52h"MRCI"
|
|
|
|
Format of DBLSPACE entry point record:
|
|
Offset Size Description (Table 02814)
|
|
00h DWORD pointer to FAR function for ???
|
|
04h 5 BYTEs FAR JUMP instruction to ???
|
|
----------2F4A15BX0000-----------------------
|
|
INT 2F - MS EMM386.EXE v4.46+ - INSTALL I/O VIRTUALIZATION HANDLER
|
|
AX = 4A15h
|
|
BX = 0000h (function number)
|
|
DX = starting I/O address
|
|
EDX high word = ending I/O address
|
|
CX = number of ports to trap
|
|
DS:SI -> I/O dispatch table (see #02815)
|
|
DI = size of client's code and data (size of DS segment which must be
|
|
made available to I/O dispatch function in protected mode)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Notes: this interface is only available in virtual-86 mode; the I/O handlers
|
|
will be called in protected mode
|
|
only ports 0100h-FFFFh may be trapped; EMM386 reserved ports 0000h-
|
|
00FFh
|
|
|
|
Format of EMM386 I/O dispatch table [array]:
|
|
Offset Size Description (Table 02815)
|
|
00h WORD I/O port number
|
|
02h WORD offset of I/O handler for port (see #02816)
|
|
|
|
(Table 02816)
|
|
Values EMM386 I/O dispatch function is called with:
|
|
CX = Ring0 code selector for I/O handler's segment
|
|
DS = Ring0 data selector for I/O handler's segment (alias of CS)
|
|
EDX = faulting I/O address
|
|
ECX = direction (00000008h for byte output, 00000000h for byte input)
|
|
(reportedly 00h for byte/word input, 04h for byte/word output
|
|
under DOS 6.22 EMM386)
|
|
EAX = data in/out
|
|
Return: (via FAR RET)
|
|
CF clear if I/O access successfully virtualized
|
|
CF set if access not virtualized (default handler will be called to
|
|
perform the I/O)
|
|
BUG: 32-bit I/O on trapped ports hangs the DOS 6.22 EMM386
|
|
SeeAlso: #02815
|
|
--------D-2F4A16-----------------------------
|
|
INT 2F U - Windows95 - OPEN BOOT LOG
|
|
AX = 4A16h
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFFh boot log file already open
|
|
else DOS error code
|
|
BX destroyed
|
|
SeeAlso: AX=4A17h,AX=4A18h
|
|
--------D-2F4A17-----------------------------
|
|
INT 2F U - Windows95 - WRITE TO BOOT LOG
|
|
AX = 4A17h
|
|
CX = number of bytes to write
|
|
DS:DX -> message to write (must include CR-LF if it is desired)
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFFh boot log file not open
|
|
else DOS error code
|
|
Note: calls the code for INT 2F/AX=4A21h after writing to the file
|
|
SeeAlso: AX=4A17h,AX=4A18h,AX=4A21h
|
|
--------D-2F4A18-----------------------------
|
|
INT 2F U - Windows95 - CLOSE BOOT LOG
|
|
AX = 4A18h
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFFh boot log file not open
|
|
else DOS error code from closing file
|
|
BX destroyed
|
|
SeeAlso: AX=4A16h,AX=4A17h
|
|
--------D-2F4A21-----------------------------
|
|
INT 2F U - Windows95 - ???
|
|
AX = 4A21h
|
|
Return: AX destroyed
|
|
Note: calls INT 21/AX=4404h"IOCTL" with a five-byte buffer containing "MDF??"
|
|
SeeAlso: AX=4A17h
|
|
--------D-2F4A31-----------------------------
|
|
INT 2F U - Windows95 - ???
|
|
AX = 4A31h
|
|
CL = new value for ???
|
|
DS:SI -> BYTE to be set to CL
|
|
Return: nothing
|
|
--------D-2F4A32-----------------------------
|
|
INT 2F U - Windows95 - PATCH ???
|
|
AX = 4A32h
|
|
BL = subfunction
|
|
00h get ???
|
|
Return: AX = flag: subfunction 04h has been used (0000h/FFFFh)
|
|
DX = ??? (0000h/?)
|
|
01h patch ??? in IO.SYS (segment 0070h)
|
|
02h unpatch ??? in IO.SYS
|
|
03h ???
|
|
04h set ???, then do subfunction 01h
|
|
05h unset ???, then do subfunction 02h
|
|
else
|
|
Return: nothing
|
|
--------D-2F4A33-----------------------------
|
|
INT 2F - Windows95 - CHECK MS-DOS VERSION 7
|
|
AX = 4A33h
|
|
Return: AX = 0000h for MS-DOS 7.00+
|
|
(officially) BX,DX,SI,DS may be destroyed
|
|
(undoc) DS:DX -> ASCIZ primary shell executable name
|
|
(undoc) DS:SI -> CONFIG.SYS SHELL= command line (counted string)
|
|
(undoc) BH = ??? (0000h)
|
|
(undoc) BL = ??? (0000h)
|
|
AX nonzero (usually 4A33h) if MS-DOS 6- or other DOS
|
|
SeeAlso: AX=1611h,INT 21/AH=30h
|
|
--------N-2F4B-------------------------------
|
|
INT 2F - LAN Manager 2.0 DOS Enh NETWKSTA.EXE - NETWORK WORKSTATION REDIRECTOR
|
|
AH = 4Bh
|
|
???
|
|
Return: ???
|
|
Note: LAN Manager enhanced mode adds features beyond the standard redirector
|
|
file/printer services
|
|
SeeAlso: AX=118Ah,AX=4100h,AH=42h
|
|
--------T-2F4B01-----------------------------
|
|
INT 2F C - DOS 5+ TASK SWITCHER - BUILD CALLOUT CHAIN
|
|
AX = 4B01h
|
|
CX:DX -> task switcher entry point (see #02819)
|
|
ES:BX = 0000h:0000h
|
|
Return: ES:BX -> callback info structure (see #02817) or 0000h:0000h
|
|
Notes: called by the task switcher
|
|
this function is hooked by clients which require notification of task
|
|
switcher activities; the call must first be passed on to the prior
|
|
handler with registers unchanged using a simulated interrupt. On
|
|
return, the client must build a callback info structure and store
|
|
the returned ES:BX in the "next" field, then return the address of
|
|
its own callback info structure.
|
|
a client program must add itself to the notification chain if it
|
|
provides services to other programs; before terminating, it must
|
|
remove itself from the chain by calling the task switcher's entry
|
|
point with AX=0005h (see #02819)
|
|
the task switcher entry point should not be saved, as it is subject to
|
|
change and will be provided on any notification call
|
|
the Windows 3.1 Standard Mode supports this API
|
|
SeeAlso: AX=160Bh,AX=4B02h
|
|
|
|
Format of task switcher callback info structure:
|
|
Offset Size Description (Table 02817)
|
|
00h DWORD pointer to next callback info structure
|
|
04h DWORD pointer to notification function (see #02818)
|
|
08h DWORD reserved
|
|
0Ch DWORD address of zero-terminated list of API info structures
|
|
(see #02821)
|
|
|
|
(Table 02818)
|
|
Values task switcher notification function is called with:
|
|
AX = function
|
|
0000h switcher initialization
|
|
Return: AX = status
|
|
0000h if OK to load
|
|
nonzero to abort task switcher
|
|
0001h query suspend
|
|
BX = session ID
|
|
Return: AX = status
|
|
0000h if OK to switch session
|
|
0001h if not
|
|
0002h suspend session
|
|
BX = session ID
|
|
interrupts disabled
|
|
Return: AX = 0000h if OK to switch session
|
|
= 0001h if not
|
|
0003h activate session
|
|
BX = session ID
|
|
CX = session status flags
|
|
bit 0: set if first activation of session
|
|
bits 1-15: reserved (0)
|
|
interrupts disabled
|
|
Return: AX = 0000h
|
|
0004h session active
|
|
BX = session ID
|
|
CX = session status flags
|
|
bit 0: set if first activation of session
|
|
bits 1-15: reserved (0)
|
|
Return: AX = 0000h
|
|
0005h create session
|
|
BX = session ID
|
|
Return: AX = 0000h if OK to create session
|
|
= 0001h if not
|
|
0006h destroy session
|
|
BX = session ID
|
|
Return: AX = 0000h
|
|
0007h switcher termination
|
|
BX = flags
|
|
bit 0: set if calling switcher is only switcher loaded
|
|
bits 1-15: reserved (0)
|
|
Return: AX = 0000h
|
|
ES:DI -> task switcher entry point (see #02819)
|
|
Notes: function 0000h is generally called by the program which controls or
|
|
invokes the task switcher, rather than by the task switcher itself;
|
|
the entry point supplied to this function is not necessarily the
|
|
entry point to the task switcher itself, and may be 0000h:0000h. If
|
|
any client indicates that loading is not possible, all clients will
|
|
be called with function 0007h; thus it is possible for a client to
|
|
receive a termination notice without a corresponding initialization
|
|
notice.
|
|
except for functions 0002h and 0003h, the notification handler is
|
|
called with interrupts enabled and may make any INT 21h function
|
|
call; interrupts must not be enabled in functions 0002h and 0003h
|
|
function 0007h may be called with ES:DI = 0000h:0000h if the entry
|
|
point is no longer valid
|
|
--------T-2F4B02BX0000-----------------------
|
|
INT 2F - DOS 5+ TASK SWITCHER - INSTALLATION CHECK
|
|
AX = 4B02h
|
|
BX = 0000h
|
|
ES:DI = 0000h:0000h
|
|
Return: ES:DI = 0000h:0000h if task switcher not loaded
|
|
ES:DI -> task switcher entry point (see #02819) if loaded
|
|
AX = 0000h
|
|
Notes: the returned entry point is that for the most-recently loaded task
|
|
switcher; the entry points for prior task switchers may be determined
|
|
with the "get version" call (see #02819)
|
|
this function is supported by PC Tools v8+ CPTASK
|
|
SeeAlso: AX=4A05h,AX=4B03h
|
|
|
|
(Table 02819)
|
|
Call task switcher entry point with:
|
|
AX = 0000h get version
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
ES:BX -> task switcher version struct (see #02820)
|
|
CF set if unsupported function
|
|
AX = 0001h test memory region
|
|
ES:DI -> first byte to be tested
|
|
CX = size of region to test
|
|
Return: CF clear if successful
|
|
AX = memory type of tested region
|
|
0000h global
|
|
0001h global and local
|
|
0002h local (replaced on session switch)
|
|
CF set if unsupported function
|
|
AX = 0002h suspend switcher
|
|
ES:DI -> new task switcher's entry point
|
|
Return: CF clear if successful
|
|
AX = state
|
|
0000h switcher has been suspended
|
|
0001h switcher not suspended, new switcher must
|
|
abort
|
|
0002h switcher not suspended, but new switcher
|
|
may run anyway
|
|
CF set if unsupported function
|
|
AX = 0003h resume switcher
|
|
ES:DI -> new task switcher's entry point
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set if unsupported function
|
|
AX = 0004h hook notification chain
|
|
ES:DI -> callback info structure to be added to chain
|
|
(see #02817)
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set if unsupported function
|
|
AX = 0005h unhook notification chain
|
|
ES:DI -> callback info structure to be removed from chain
|
|
(see #02817)
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
CF set if unsupported function
|
|
AX = 0006h query API support
|
|
BX = asynchronous API identifier
|
|
Return: CF clear if successful
|
|
AX = 0000h
|
|
ES:BX -> API info structure (see #02821) for the
|
|
client which provides the highest
|
|
level of API support
|
|
CF set if unsupported function
|
|
|
|
Format of task switcher version structure:
|
|
Offset Size Description (Table 02820)
|
|
00h WORD major version of supported protocol (current protocol is 1.0)
|
|
02h WORD minor version of supported protocol
|
|
04h WORD major version of task switcher
|
|
06h WORD minor version of task switcher
|
|
08h WORD task switcher ID (see AX=4B03h)
|
|
0Ah WORD operation flags
|
|
bit 0: set if task switcher disabled
|
|
bits 1-15: reserved (0)
|
|
0Ch DWORD pointer to ASCIZ task switcher name
|
|
("MS-DOS Shell Task Switcher" for DOSSHELL task switcher)
|
|
10h DWORD pointer to previous task switcher's entry point or 0000h:0000h
|
|
|
|
Format of API info structure:
|
|
Offset Size Description (Table 02821)
|
|
00h WORD size of structure in bytes (000Ah)
|
|
02h WORD API identifier
|
|
0001h NetBIOS
|
|
0002h 802.2
|
|
0003h TCP/IP
|
|
0004h LAN Manager named pipes
|
|
0005h Novell NetWare IPX
|
|
04h WORD major version \ of highest version of API for which the support
|
|
06h WORD minor version / level specified in the next field is provided
|
|
08h WORD support level
|
|
0001h minimal support
|
|
0002h API-level support
|
|
0003h switcher compatibility
|
|
0004h seamless compatibility
|
|
--------T-2F4B03-----------------------------
|
|
INT 2F - DOS 5+ TASK SWITCHER - ALLOCATE SWITCHER ID
|
|
AX = 4B03h
|
|
ES:DI -> task switcher entry point (see #02819)
|
|
Return: AX = 0000h
|
|
BX = switcher ID (0001h-000Fh), or 0000h if no more available
|
|
Notes: if a task switcher has determined that it is the first to be loaded, it
|
|
must allocate an identifier for itself and provide this function to
|
|
all subsequent task switchers; if it is not the first to be loaded,
|
|
it must call this function to allocate an ID. The switcher ID is
|
|
used as the high four bits of all session identifiers to ensure
|
|
unique session IDs.
|
|
if no more switcher IDs are available, the new task switcher making the
|
|
call must terminate or disable itself
|
|
the task switcher providing the identifiers may call the new task
|
|
switcher's entry point as needed
|
|
this call is available from within DOSSHELL even if the task switcher
|
|
is not installed
|
|
this function is supported by PC Tools v8+ CPTASK, but appears to
|
|
always return an ID of 0000h
|
|
SeeAlso: AX=4B02h,AX=4B04h
|
|
--------T-2F4B04-----------------------------
|
|
INT 2F - DOS 5+ TASK SWITCHER - FREE SWITCHER ID
|
|
AX = 4B04h
|
|
BX = switcher ID
|
|
ES:DI -> task switcher entry point (see #02819)
|
|
Return: AX = 0000h
|
|
BX = status
|
|
0000h successful
|
|
other error (invalid ID or ID not allocated)
|
|
Notes: called by a task switcher when it exits, unless it was the first loaded
|
|
and is providing the support for AX=4B03h and AX=4B04h
|
|
the task switcher providing the identifiers may call the terminating
|
|
task switcher's entry point as needed
|
|
this call is available from within DOSSHELL even if the task switcher
|
|
is not installed
|
|
this call is supported by PC Tools v8+ CPTASK, but appears to return
|
|
sucessfully no matter which ID is given
|
|
SeeAlso: AX=4B02h,AX=4B03h
|
|
--------T-2F4B05-----------------------------
|
|
INT 2F C - DOS 5+ TASK SWITCHER - IDENTIFY INSTANCE DATA
|
|
AX = 4B05h
|
|
ES:BX = 0000h:0000h
|
|
CX:DX -> task switcher entry point (see #02819)
|
|
Return: ES:BX -> startup info structure (see #02822) or 0000h:0000h
|
|
Notes: called by task switcher
|
|
clients with instance data should hook this call, pass it through to
|
|
the previous handler with unchanged registers using a simulated
|
|
interrupt. On return, the client should create a startup info
|
|
structure (see #02822), store the returned ES:BX in the "next"
|
|
field, and return the address of the created structure in ES:BX
|
|
all MS-DOS function calls are available from within this call
|
|
this function is supported by Novell DOS 7 DOSKEY, with structure v3.00
|
|
SeeAlso: AX=1605h,AX=160Bh,AX=4B02h
|
|
|
|
Format of task switcher startup info structure:
|
|
Offset Size Description (Table 02822)
|
|
00h 2 BYTEs major, minor version of info structure (03h,00h)
|
|
02h DWORD pointer to next startup info structure or 0000h:0000h
|
|
06h DWORD 0000h:0000h (ignored)
|
|
0Ah DWORD ignored
|
|
0Eh DWORD pointer to instance data records (see #02823)
|
|
|
|
Format of one instance data record in array:
|
|
Offset Size Description (Table 02823)
|
|
00h DWORD address of instance data (end of array if 0000h:0000h)
|
|
04h WORD size of instance data
|
|
--------W-2F4B06-----------------------------
|
|
INT 2F - MS Windows - WIN.COM - GET ??? POINTER TO WIN.COM
|
|
AX = 4B06h
|
|
Return: AX = 0000h
|
|
ES:BX -> ??? function in WIN.COM
|
|
Note: the entry point is called with
|
|
AX = 0001h or 0003h
|
|
BX = ???
|
|
SeeAlso: AX=4B80h
|
|
--------W-2F4B20-----------------------------
|
|
INT 2F - MS Windows 3+ - WIN.COM - SET PROGRAM TO EXECUTE ON EXIT
|
|
AX = 4B20h
|
|
Return: AX = 0000h if successful
|
|
DX:CX -> 256-byte buffer for pathname and commandline (see #02824)
|
|
Notes: when the Windows function ExitWindows is called with an exit code of
|
|
44h, WIN.COM executes the program specified in the returned buffer
|
|
and then restarts Windows
|
|
the returned address is a real-mode segment:offset value
|
|
SeeAlso: AX=4B21h
|
|
|
|
Format of WIN.COM buffer:
|
|
Offset Size Description (Table 02824)
|
|
00h 128 BYTEs commandline for program (count byte, command tail, 0Dh)
|
|
80h 128 BYTEs ASCIZ pathname of program to execute
|
|
Note: the order above is for a Windows95 DOS box; it may be reversed under
|
|
Windows 3.x
|
|
--------W-2F4B21-----------------------------
|
|
INT 2F - Windows95 - WIN.COM - GET NESTING LEVEL
|
|
AX = 4B21h
|
|
Return: AH = 00h if WIN.COM already active
|
|
AL = number of instances of WIN.COM in memory
|
|
SeeAlso: AX=4B20h
|
|
--------K-2F4B52-----------------------------
|
|
INT 2F - KeyRus v7.3 - API
|
|
AX = 4B52h ('KR')
|
|
BL = function number
|
|
00h installation check
|
|
Return: AL = 82h if installed
|
|
BH = major version number
|
|
BL = minor version number
|
|
ES destroyed
|
|
01h get driver status
|
|
Return: AL??? = current status (see #02825)
|
|
02h set driver state
|
|
AL = new driver state (see #02825)
|
|
03h blank screen (if blanking enabled when TSR was loaded)
|
|
04h unblank screen
|
|
4Ch switch to English keyboard mode
|
|
90h switch to Russian keyboard mode
|
|
Return:
|
|
|
|
Bitfields for KeyRus driver status:
|
|
Bit(s) Description (Table 02825)
|
|
1-0 language mode
|
|
00 Latin
|
|
01 Russian
|
|
10 Alternative
|
|
11 unused
|
|
2 allow character loading (if disabled, use ROM fonts)
|
|
3 English keyboard support
|
|
7-4 used internally (read-only)
|
|
--------W-2F4B80-----------------------------
|
|
INT 2F - MS Windows - WSWAP.EXE - RESET INTERNAL VARIABLES
|
|
AX = 4B80h
|
|
Return: nothing
|
|
Note: called by WINOLDAP.MOD
|
|
SeeAlso: AX=4B06h
|
|
--------p-2F4C-------------------------------
|
|
INT 2F U - Advanced Power Management
|
|
AH = 4Ch
|
|
AL = function
|
|
00h version check
|
|
01h suspend system requested
|
|
FFh suspend/resume battery notification
|
|
???
|
|
Return: ???
|
|
----------2F4D-------------------------------
|
|
INT 2F U - KKCFUNC
|
|
AH = 4Dh
|
|
AL = function
|
|
00h get function address
|
|
01h get error number of last call to KKC DOS function
|
|
02h register/release KKC
|
|
03h get table address
|
|
!!! details to follow
|
|
Return: ???
|
|
Notes: This API is provided by KKCFUNC.SYS, a support driver for Kana Kanji
|
|
Converters (KKC), which is used to handle multiple client KKCs and
|
|
provide all the necessary framework to call DOS functions at any
|
|
time.
|
|
also called by MSKK
|
|
For AL > 3, KKCFUNC passes the call down to the original INT 2Fh,
|
|
as recorded at initialization.
|
|
--------N-2F4E53BL00-------------------------
|
|
INT 2F - SilverNET v2+ - INSTALLATION CHECK
|
|
AX = 4E53h ("NS")
|
|
BL = 00h (function "installation check")
|
|
BH = module ID (see #02826)
|
|
Return: AX = 0000h if specified module installed
|
|
BX = 4E53h if installed
|
|
Program: SilverNET is an SMB-compatible peer-to-peer NOS for DOS or
|
|
Windows systems, by Net-Source, Inc. of Santa Clara, CA.
|
|
SeeAlso: AX=4E53h/BL=01h,AX=4E53h/BL=02h,AX=B800h,AX=B809h
|
|
|
|
(Table 02826)
|
|
Values for SilverNET module ID:
|
|
01h SilverCACHE
|
|
02h Workstation
|
|
03h NetBIOS
|
|
04h Peer
|
|
20h NS Share
|
|
80h NetWare help TSR
|
|
--------N-2F4E53BL01-------------------------
|
|
INT 2F - SilverNET - GET RUNTIME PARAMETER
|
|
AX = 4E53h ("NS")
|
|
BL = 01h (function "get runtime parameter")
|
|
BH = module ID (see #02826)
|
|
CX = parameter index (see #02827,#02829,#02830)
|
|
Return: AX = WORD value at specified index (see #02828)
|
|
Desc: retrieve a word of data from the specified SilverNET module
|
|
|
|
(Table 02827)
|
|
Values for SilverNET Peer parameter index (* = read-only):
|
|
00h * maximum outstanding SMB buffers
|
|
02h * maximum logged-in nodes
|
|
04h * number of shareable resources
|
|
06h * number of characters to print per time slice
|
|
08h * number of printers that can be shared
|
|
0Ah * number of nodes logged in
|
|
0Ch * number of files to allow opened
|
|
0Eh how fast to despool (/PSLICE)
|
|
10h audit flag
|
|
24h * far pointer to resource table (each resource is 96 bytes in length)
|
|
32h * far pointer to SFT (internal if SilverNET files > CONFIG.SYS files,
|
|
else DOS SFT)
|
|
36h spool flags (see #02828)
|
|
SeeAlso: #02829
|
|
|
|
Bitfields for spool flags:
|
|
Bit(s) Description (Table 02828)
|
|
0 LPT1 needs despooling
|
|
1 LPT2 needs despooling
|
|
2 LPT2 needs despooling
|
|
4 COM1 needs despooling
|
|
5 COM2 needs despooling
|
|
6 COM3 needs despooling
|
|
SeeAlso: #02827
|
|
|
|
(Table 02829)
|
|
Values for NS Share parameter index (* = read-only):
|
|
00h version number (high byte = minor, low byte = major)
|
|
10h * segment of first lock record (other records in consecutive paragraphs)
|
|
(if PSP field = 0000h, lock record is free)
|
|
12h * maximum possible number of lock records
|
|
14h * starting segment of sharing buffer
|
|
(NS Share's sharing records are identical to DOS SHARE except that
|
|
fields which are normally offsets into SHARE are segment numbers)
|
|
18h * size of sharing buffer in paragraphs
|
|
1Ah * total free paragraphs in sharing buffer
|
|
1Ch * current number of shared files
|
|
1Eh * current number of locked records
|
|
SeeAlso: #02827,#02830
|
|
|
|
(Table 02830)
|
|
Values for Workstation parameter index (* = read-only):
|
|
00h version number (high byte = minor, low byte = major)
|
|
02h * size of each network buffer for file operations
|
|
04h * number of redirector file buffers
|
|
06h * size of each print cache buffer
|
|
08h * number of network LPT printers
|
|
0Ch flush time in ticks (idle time on network printer before flushing)
|
|
0Eh (16 WORDs) last active time for each printer
|
|
2Eh * stub segment if program split into two parts
|
|
60h receive name number for datagram listens
|
|
62h * 18-byte machine name
|
|
74h * LASTDRIVE (01h = A:, etc.)
|
|
7Ch row number of message box on screen
|
|
7Eh message time in clock ticks
|
|
82h * number of network adapters in use
|
|
84h station ID broadcast flag (never set on redirectors)
|
|
96h * NetBIOS names left
|
|
98h * NCBs left
|
|
9Ah * sessions left
|
|
A2h * total number of network printers (LPT+COM)
|
|
A4h * number of serial network printers
|
|
A8h * segment containing file cache buffers
|
|
AAh * segment containing print cache buffers
|
|
ACh * bytes remaining free in HMA before program loaded
|
|
AEh * start of free memory in HMA
|
|
B2h * flag: using HMA
|
|
SeeAlso: #02829
|
|
--------N-2F4E53BL02-------------------------
|
|
INT 2F - SilverNET - SET RUNTIME PARAMETERS
|
|
AX = 4E53h ("NS")
|
|
BL = 02h (function "set runtime parameters")
|
|
BH = module ID (see #02826)
|
|
CX = parameter index (see #02829,#02830)
|
|
DX = new value for specified parameter
|
|
Desc: set a WORD value in the specified SilverNET module
|
|
Note: not all indexed parameters are writable; modifying a read-only
|
|
parameter can result in system crashes
|
|
SeeAlso: AX=4E53h/BL=00h,AX=4E53h/BL=01h
|
|
--------N-2F5100-----------------------------
|
|
INT 2F U - ODIHLP.EXE - INSTALLATION CHECK
|
|
AX = 5100h
|
|
Return: AL = FFh if installed
|
|
BX = 0000h
|
|
DX:SI -> signature string "ODI$HLP$"
|
|
Program: ODIHLP is a real-mode helper allowing the Windows for Workgroups 3.11
|
|
protected-mode NDIS3 protocol to work with real-mode ODI drivers
|
|
and LSL.COM
|
|
Note: the returned signature string might be the first field of a structure
|
|
SeeAlso: AX=C000h"LSL.COM"
|
|
--------k-2F5200-----------------------------
|
|
INT 2F - JAM.SYS v1.10+ - "GetVersion" - INSTALLATION CHECK
|
|
AX = 5200h
|
|
Return: AH = 80h (successful) if installed
|
|
BX = internal JAM.SYS version number
|
|
CX = size of JAMINFO structure (see #02831,#02832)
|
|
DX = JAM.SYS segment address
|
|
Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
|
|
Utilities by George A. Reznik and friends (JAM Software).
|
|
SeeAlso: AX=5201h
|
|
|
|
Format of JAMINFO v1.10 structure:
|
|
Offset Size Description (Table 02831)
|
|
00h 25 BYTEs extended BIOS parameter block (BPB)
|
|
19h 11 BYTEs ???
|
|
25h DWORD total number of sectors in JAM archive file
|
|
(size of compressed data area)
|
|
29h BYTE flags (see #02833)
|
|
2Ah 127 BYTEs full JAM archive file name
|
|
A9h WORD the number of fragments in archive file
|
|
ABh 96 BYTEs archive file fragmentation list -
|
|
array of 16 FRAGMENT structures (see #02834)
|
|
10Bh DWORD address of the host-drive DPB (Drive Parameter Block)
|
|
10Fh DWORD number of free sectors in JAM archive file
|
|
113h WORD device status word (see #02835)
|
|
SeeAlso: #02832
|
|
|
|
Format of JAMINFO v1.20 structure:
|
|
Offset Size Description (Table 02832)
|
|
00h 25 BYTEs extended BIOS parameter block (BPB)
|
|
19h BYTE physical driver number
|
|
1Ah BYTE reserved
|
|
1Bh BYTE extended boot record signature
|
|
1Ch DWORD volume serial number
|
|
20h 11 BYTEs volume label
|
|
2Bh 8 BYTEs file system ID
|
|
33h DWORD total number of sectors in JAM archive file
|
|
(size of compressed data area)
|
|
37h BYTE flags (see #02833)
|
|
38h 128 BYTEs full JAM archive file name
|
|
B8h WORD the number of fragments in archive file
|
|
BAh 96 BYTEs archive file fragmentation list -
|
|
array of 16 FRAGMENT structures (see #02834)
|
|
11Ah DWORD address of the host-drive DPB (Drive Parameter Block)
|
|
11Eh DWORD number of free sectors in JAM archive file
|
|
122h WORD device status word (see #02835)
|
|
Note: the first 33h bytes are copied from the archive file's boot sector
|
|
SeeAlso: #02831
|
|
|
|
Bitfields for JAMINFO flags:
|
|
Bit(s) Description (Table 02833)
|
|
2-0 reserved
|
|
3 (v1.20+)
|
|
4 enable direct write requests (Int 26h, non-DOS requests, etc.)
|
|
5 read-only mode
|
|
6 no write-behind caching
|
|
7 full undelete-compatible allocation strategy
|
|
SeeAlso: #02831,#02832
|
|
|
|
Format of JAM FRAGMENT structure:
|
|
Offset Size Description (Table 02834)
|
|
00h WORD starting sector (low word)
|
|
02h BYTE starting sector (high byte)
|
|
03h WORD size of fragment (low word)
|
|
05h BYTE size of fragment (high byte)
|
|
SeeAlso: #02831,#02832
|
|
|
|
(Table 02835)
|
|
Values for JAM.SYS status (high byte):
|
|
00h successful
|
|
01h drive is not a JAM drive
|
|
02h drive is already attached
|
|
03h archive file cluster size value is larger than driver's one
|
|
04h drive is not attached
|
|
05h drive is locked
|
|
06h drive is not locked
|
|
07h bad physical-level request
|
|
08h host drive reading/writing error
|
|
09h bad entries in JAM descriptor table
|
|
0Ah compressed data integrity error
|
|
0Bh archive file overflow
|
|
0Ch bad DOS request
|
|
0Dh incorrect parameters in JAMINFO structure
|
|
Note: the low byte of the status is the DOS error code for the Host drive
|
|
SeeAlso: #02598 at INT 2F/AX=0802h
|
|
--------k-2F5201-----------------------------
|
|
INT 2F - JAM.SYS v1.10+ - "GetInfo" - GET COMPRESSED DRIVE INFORMATION
|
|
AX = 5201h
|
|
DL = compressed drive number (0-default, 1-A:, etc.)
|
|
DS:BX -> buffer for JAMINFO structure (see #02831,#02832)
|
|
Return: AH = status (00h,01h) (see #02835)
|
|
SeeAlso: AX=5200h
|
|
--------k-2F5202-----------------------------
|
|
INT 2F - JAM.SYS v1.10+ - "Attach" - MOUNT COMPRESSED DRIVE
|
|
AX = 5202h
|
|
DL = drive number (0-default, 1-A:, etc.) to attach to the JAM
|
|
archive file
|
|
DS:BX -> pointer to JAMINFO structure (see #02831,#02832), which
|
|
contains parameters of the JAM file to mount, and pointer
|
|
to the host drive DPB (i.e. DPB of the drive on which the
|
|
JAM file is located)
|
|
Return: AH = status (00h,02h,03h,08h,09h,0Dh) (see also #02835)
|
|
03h archive file cluster size value is larger than driver's - not
|
|
mounted
|
|
09h bad entries in JAM descriptor table - file mounted read-only
|
|
AL = host drive error code (see #02598 at INT 2F/AX=0802h)
|
|
SeeAlso: AX=5203h
|
|
--------k-2F5203-----------------------------
|
|
INT 2F - JAM.SYS v1.10+ - "Detach" - UNMOUNT COMPRESSED DRIVE
|
|
AX = 5203h
|
|
DL = drive number (0-default, 1-A:, etc.) to detach
|
|
Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #02835)
|
|
AL = host drive error code (see #02598 at INT 2F/AX=0802h)
|
|
SeeAlso: AX=5202h
|
|
--------k-2F5204-----------------------------
|
|
INT 2F - JAM.SYS v1.10+ - "Lock" - LOCK COMPRESSED DRIVE
|
|
AX = 5204h
|
|
DL = drive number (0-default, 1-A:, etc.) to lock
|
|
Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #02835)
|
|
AL = host drive error code (see #02598 at INT 2F/AX=0802h)
|
|
SeeAlso: AX=5205h, AX=5206h, AX=5207h
|
|
--------k-2F5205-----------------------------
|
|
INT 2F - JAM.SYS v1.10+ - "UnLock" - UNLOCK COMPRESSED DRIVE
|
|
AX = 5205h
|
|
DL = drive number (0-default, 1-A:, etc.) to unlock
|
|
Return: AH = status (00h,01h,04h,06h,08h,09h,0Dh) (see #02835)
|
|
AL = host drive error code (see #02598 at INT 2F/AX=0802h)
|
|
SeeAlso: AX=5204h, AX=5206h, AX=5207h
|
|
Note: Lock and UnLock functions were added to the JAM API to prevent
|
|
asynchronous physical-level access (see AX=5206h,AX=5207h) to
|
|
compressed data on JAM drives. In other words, two or more programs
|
|
which use JAM API (say, JMAX optimizer and JCHKDSK - disk checker)
|
|
cannot be run on the same JAM drive simultaneously.
|
|
--------k-2F5206-----------------------------
|
|
INT 2F - JAM.SYS v1.10+ - "Read" - PHYSICAL READ DATA FROM JAM ARCHIVE
|
|
AX = 5206h
|
|
DL = drive number (0-default, 1-A:, etc.)
|
|
DS:BX -> disk transfer packet (see #02836)
|
|
Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #02835)
|
|
AL = host drive error code (see #02598 at INT 2F/AX=0802h)
|
|
Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
|
|
Utilities by George A. Reznik and friends (JAM Software).
|
|
SeeAlso: AX=5207h
|
|
|
|
Format of disk transfer packet:
|
|
Offset Size Description (Table 02836)
|
|
00h DWORD sector number
|
|
04h WORD number of sectors to read(write)
|
|
06h DWORD transfer address
|
|
--------k-2F5207-----------------------------
|
|
INT 2F - JAM.SYS v1.10+ - "Write" - PHYSICAL WRITE DATA TO JAM ARCHIVE
|
|
AX = 5207h
|
|
DL = drive number (0-default, 1-A:, etc.)
|
|
DS:BX -> disk transfer packet (see #02836)
|
|
Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #02835)
|
|
AL = host drive error code (see #02598 at INT 2F/AX=0802h)
|
|
SeeAlso: AX=5206h
|
|
--------p-2F53-------------------------------
|
|
INT 2F U - POWER.EXE - APM event broadcasting???
|
|
AH = 53h
|
|
AL = event???
|
|
05h CPU idle
|
|
0Bh PM event broadcast API
|
|
Return: ???
|
|
Note: called by MS Windows 3.1 POWER.DRV; hooked by MS Mouse driver v8.20+
|
|
and PC-Cache v8.0
|
|
SeeAlso: AX=530Bh,AX=5400h,INT 33/AX=002Fh
|
|
--------p-2F530B-----------------------------
|
|
INT 2F U - ??? (MOUSEPWR.COM, others) - ???
|
|
AX = 530Bh
|
|
BX = subfunction
|
|
0003h ???
|
|
0004h ???
|
|
???
|
|
Return: ???
|
|
Note: it appears that subfunction 0003h reads or restores the current mouse
|
|
settings (the MS Mouse driver hooks AX=530Bh), and 0004h might be
|
|
the converse
|
|
--------p-2F5400-----------------------------
|
|
INT 2F U - POWER.EXE - INSTALLATION CHECK
|
|
AX = 5400h
|
|
Return: AX = POWER.EXE version (AH = major, AL = minor) if installed
|
|
BX = 504Dh ("PM")
|
|
CF clear
|
|
Note: called by MS Windows 3.1 POWER.DRV
|
|
SeeAlso: AH=53h,AX=5401h,AX=5402h,AX=5481h,AX=5482h
|
|
--------p-2F5401-----------------------------
|
|
INT 2F U - POWER.EXE - GET/SET POWER STATUS
|
|
AX = 5401h
|
|
BH = function
|
|
00h get status
|
|
Return: BL = current power management status (see #02837)
|
|
01h set status
|
|
BL = new power managment status (see #02837)
|
|
Return: AX = function status (see #02838)
|
|
Note: called by MS Windows 3.1 POWER.DRV
|
|
SeeAlso: AH=53h,AX=5400h,AX=5402h,AX=5403h
|
|
|
|
Bitfields for power management status:
|
|
Bit(s) Description (Table 02837)
|
|
0 POWER.EXE power management enabled
|
|
1 APM firmware power management enabled
|
|
2-7 reserved (0)
|
|
Notes: bit 1 is ignored if there is no APM firmware
|
|
bits 1-0: 00 = POWER OFF, 10 = POWER STD, 11 = POWER ADV
|
|
|
|
(Table 02838)
|
|
Values for POWER.EXE function status:
|
|
0000h successful
|
|
0002h "ERROR_PM_ALREADY_CONNECTED"
|
|
0003h "ERROR_PM_NOT_CONNECTED"
|
|
0087h "ERROR_PM_INVALID_PARAMETER"
|
|
--------p-2F5402-----------------------------
|
|
INT 2F U - POWER.EXE - GET/SET IDLE DETECTION STRATEGY
|
|
AX = 5402h
|
|
BH = subfunction
|
|
00h get
|
|
other set
|
|
BL = detection strategy (00h-0Fh or FFh)
|
|
Return: BX = current/new detection strategy
|
|
SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5481h,AX=5482h
|
|
--------p-2F5403-----------------------------
|
|
INT 2F U - POWER.EXE - GET/SET ADVANCED POWER MANAGEMENT SETTING
|
|
AX = 5403h
|
|
BX = new power management setting or 0000h to get current setting
|
|
Return: AX = status
|
|
0000h successful
|
|
BX = power management setting (see #02839)
|
|
other error code
|
|
SeeAlso: AX=5401h,AX=5480h
|
|
|
|
(Table 02839)
|
|
Values for power management setting:
|
|
0001h-0005h "min"
|
|
0006h "reg"
|
|
0007h-0008h "max"
|
|
--------t-2F5453-----------------------------
|
|
INT 2F - TesSeRact RAM-RESIDENT PROGRAM INTERFACE
|
|
AX = 5453h
|
|
BX = subfunction
|
|
00h installation check
|
|
CX = 0000h
|
|
DS:SI -> 8-char blank-padded name (see #02840)
|
|
Return: AX = FFFFh installed
|
|
CX = ID number of already-installed copy
|
|
AX = anything else, not installed
|
|
CX = ID number for TSR when installed
|
|
01h get user parameters
|
|
CX = TSR ID number
|
|
Return: AX = status
|
|
0000h successful
|
|
ES:BX -> user parameter block (see #02841)
|
|
nonzero failed
|
|
02h check if hotkey in use
|
|
CL = scan code of hot key (see #00006)
|
|
Return: AX = FFFFh hot key conflicts with another TSR
|
|
otherwise safe to use the hotkey
|
|
03h replace default critical error handler
|
|
CX = TSR ID number
|
|
DS:SI -> new routine for INT 24h
|
|
Return: AX = nonzero, unable to install new handler
|
|
04h get internal data area
|
|
CX = TSR ID number
|
|
Return: AX = status
|
|
0000h successful
|
|
ES:BX -> TSR's internal data area (see #02842)
|
|
nonzero, TSR not found
|
|
05h set multiple hot keys
|
|
CX = TSR ID number
|
|
DL = number of additional hot keys to allocate
|
|
DS:SI -> table of hot keys
|
|
BYTE hotkey scan code (see #00006)
|
|
BYTE hotkey shift state
|
|
BYTE flag value to pass to TSR (nonzero)
|
|
Return: AX = nonzero, unable to install hot keys
|
|
06h - 0Fh reserved
|
|
10h enable TSR
|
|
CX = TSR ID number
|
|
Return: AX = nonzero, unable to enable
|
|
11h disable TSR
|
|
CX = TSR ID number
|
|
Return: AX = nonzero, unable to disable
|
|
12h unload TSR
|
|
CX = TSR ID number
|
|
Return: AX = nonzero, invalid TSR number
|
|
Note: if any interrupts used by TSR have been grabbed by
|
|
another TSR, the TesSeRact routines will wait until
|
|
it is safe to remove the indicated TSR from memory
|
|
13h restart TSR
|
|
CX = TSR ID number of TSR which was unloaded but is still in
|
|
memory
|
|
Return: AX = nonzero, unable to restart TSR
|
|
14h get status word
|
|
CX = TSR ID number
|
|
Return: AX = FFFFh invalid ID number
|
|
= other, successful
|
|
BX = bit flags
|
|
15h set status word
|
|
CX = TSR ID number
|
|
DX = new bit flags
|
|
Return: AX = nonzero, unable to set status word
|
|
16h get INDOS state at popup
|
|
CX = TSR ID number
|
|
Return: AX = 0000h successful
|
|
BX = value of INDOS flag
|
|
17h - 1Fh reserved
|
|
20h call user procedure
|
|
CX = TSR ID number
|
|
ES:DI -> user-defined data
|
|
Return: AX = 0000h successful
|
|
21h stuff keystrokes into keyboard buffer
|
|
CX = TSR ID number
|
|
DL = speed
|
|
00h stuff keystrokes only when buffer is empty
|
|
01h stuff up to four keystrokes per clock tick
|
|
02h stuff up to 15 keystrokes per clock tick
|
|
DH = scan code flag
|
|
if zero, buffer contains alternating ASCII and scan codes
|
|
if nonzero, buffer contains only ASCII codes
|
|
SI = number of keystrokes
|
|
ES:DI -> buffer to stuff
|
|
Return: AX = 0000h success
|
|
F0F0h user aborted with ^C or ^Break
|
|
other unable to stuff keystrokes
|
|
22h (v1.10) trigger popup
|
|
CX = TSR ID number
|
|
Return: AX = 0000h success, TSR will either pop up or beep to
|
|
indicate that it is unable to pop up
|
|
nonzero invalid ID number
|
|
23h (v1.10) invoke TSR's background function
|
|
CX = TSR ID number
|
|
Return: AX = 0000h success
|
|
FFFFh not safe to call background function
|
|
nonzero invalid ID number
|
|
24h - 2Fh reserved
|
|
Notes: Borland's THELP.COM popup help system for Turbo Pascal and Turbo C
|
|
(versions 1.x and 2.x only) fully supports the TesSeRact API, as
|
|
do the SWAP?? programs by Innovative Data Concepts.
|
|
AVATAR.SYS supports functions 00h and 01h (only the first three fields
|
|
of the user parameter block) using the name "AVATAR "
|
|
SeeAlso: AX=CAFEh,INT 16/AX=55FFh,INT 2D"AMIS"
|
|
Index: installation check;TesSeRact TSR interface|uninstall;TesSeRact
|
|
|
|
(Table 02840)
|
|
Values for TesSeRact names:
|
|
"AVATAR " AVATAR.SYS
|
|
"QeditTSR" TSR version of SemWare's Qedit editor
|
|
"SCRNBLNK" Trusted Access screen blanker
|
|
|
|
Format of TesSeRact User Parameter Block:
|
|
Offset Size Description (Table 02841)
|
|
00h 8 BYTEs blank-padded TSR name
|
|
08h WORD TSR ID number
|
|
0Ah DWORD bitmap of supported functions
|
|
0Eh BYTE scan code of primary hotkey (see #00006)
|
|
00h = pop up when shift states match
|
|
FFh = no popup (if shift state also FFh)
|
|
0Fh BYTE shift state of primary hotkey
|
|
FFh = no popup (if scan code also FFh)
|
|
10h BYTE number of secondary hotkeys
|
|
11h DWORD pointer to extra hotkeys set by func 05h
|
|
15h WORD current TSR status flags
|
|
17h WORD PSP segment of TSR
|
|
19h DWORD DTA for TSR
|
|
1Dh WORD default DS for TSR
|
|
1Fh DWORD stack at popup
|
|
23h DWORD stack at background invocation
|
|
Index: hotkeys;TesSeRact TSR interface
|
|
|
|
Format of TSR internal data area:
|
|
Offset Size Description (Table 02842)
|
|
00h BYTE revision level of TesSeRact library
|
|
01h BYTE type of popup in effect
|
|
02h BYTE INT 08 occurred since last invocation
|
|
03h BYTE INT 13 occurred since last invocation
|
|
04h BYTE active interrupts
|
|
05h BYTE active soft interrupts
|
|
06h BYTE DOS major version
|
|
07h BYTE how long to wait before popping up
|
|
08h DWORD pointer to INDOS flag
|
|
0CH DWORD pointer to DOS critical error flag
|
|
10h WORD PSP segment of interrupted program
|
|
12h WORD PSP segment of prog interrupted by INT 28
|
|
14h DWORD DTA of interrupted program
|
|
18h DWORD DTA of program interrupted by INT 28
|
|
1Ch WORD SS of interrupted program
|
|
1Eh WORD SP of interrupted program
|
|
20h WORD SS of program interrupted by INT 28
|
|
22h WORD SP of program interrupted by INT 28
|
|
24h DWORD INT 24 of interrupted program
|
|
28h 3 WORDs DOS 3.0+ extended error info
|
|
2Eh BYTE old BREAK setting
|
|
2Fh BYTE old VERIFY setting
|
|
30h BYTE were running MS WORD 4.0 before popup
|
|
31h BYTE MS WORD 4.0 special popup flag
|
|
32h BYTE enhanced keyboard call in use
|
|
33h BYTE delay for MS WORD 4.0
|
|
11 times (for INTs 08h,09h,13h,16h,1Ch,21h,28h,2Fh,1Bh,23h, and 24h):
|
|
DWORD old interrupt vector
|
|
BYTE interrupt number
|
|
WORD offset in TesSeRact code segment of new interrupt handler
|
|
--------p-2F5480-----------------------------
|
|
INT 2F U - POWER.EXE - GET/SET ???
|
|
AX = 5480h
|
|
BX = direction
|
|
0000h get
|
|
other set
|
|
CX = size of buffer (at least 0010h)
|
|
DS:SI -> buffer
|
|
Return: AX = status
|
|
0000h successful
|
|
other error code
|
|
SeeAlso: AX=5400h,AX=5481h,AX=548Fh
|
|
--------p-2F5481-----------------------------
|
|
INT 2F U - POWER.EXE - GET STATISTICS
|
|
AX = 5481h
|
|
BX = which statistics
|
|
0000h idle detection
|
|
0001h APM statistics
|
|
CX = length of buffer in bytes
|
|
DS:SI -> buffer for statistics (see #02843,#02844)
|
|
Return: AX = status
|
|
0000h successful
|
|
0071h "ERROR_PM_BUFFER_TOO_SMALL"
|
|
0087h "ERROR_PM_INVALID_PARAMETER"
|
|
SeeAlso: AH=53h,AX=5400h,AX=5480h,AX=5402h,AX=5482h
|
|
|
|
Format of POWER.EXE idle detection statistics:
|
|
Offset Size Description (Table 02843)
|
|
00h DWORD "CPU_ON_TIME" total time CPU is active with POWER.EXE idle
|
|
detection enabled, in timer ticks
|
|
04h DWORD "CPU_IDLE_TIME" timer ticks during which CPU was idle
|
|
(divide by previous to get idle rate)
|
|
08h DWORD total idle calls
|
|
0Ch DWORD "TOTAL_APP_IDLE" total INT 2Fh idle calls
|
|
10h DWORD "TOTAL_DOS_YIELD" total INT 28h idle calls
|
|
14h DWORD "TOTAL_KEY_IDLE" total INT 16h idle calls
|
|
18h DWORD "TOTAL_DOS_IDLE" total INT 2Ah idle calls
|
|
|
|
Format of APM statistics:
|
|
Offset Size Description (Table 02844)
|
|
00h DWORD "RESUME_COUNT" total number of resumes since last APM_ENABLE
|
|
--------p-2F5482-----------------------------
|
|
INT 2F U - POWER.EXE - GET/SET APM POLLING FREQUENCY
|
|
AX = 5482h
|
|
BX = new polling frequency or 0000h to get current frequency
|
|
Return: AX = 0000h (successful)
|
|
BX = current frequency if BX=0000h on entry
|
|
SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5480h,AX=5481h,AX=548Fh
|
|
--------p-2F548F-----------------------------
|
|
INT 2F U - POWER.EXE - GET/SET ???
|
|
AX = 548Fh
|
|
BX = ??? or 0000h to get current ???
|
|
Return: AX = 0000h (successful)
|
|
BX = current ???
|
|
CX = ???
|
|
SeeAlso: AX=5400h,AX=5480h,AX=5482h
|
|
--------l-2F5500-----------------------------
|
|
INT 2F U - DOS 5+ - COMMAND.COM INTERFACE
|
|
AX = 5500h
|
|
Return: AX = 0000h if an instance of COMMAND.COM is already running
|
|
DS:SI -> entry point table
|
|
Notes: used to access the shareable portion of COMMAND.COM, which may have
|
|
been moved into the HMA; only the primary COMMAND.COM retains this
|
|
portion
|
|
procedures called from a dispatcher in COMMAND's resident portion;
|
|
most assume that the segment address of the resident portion is on
|
|
the stack and are thus not of general use
|
|
DR PalmDOS up to DR-DOS 7.03 COMMAND.COM do not support this call.
|
|
When loading the default command processor (no SHELL= directive in
|
|
CONFIG.SYS), MS-DOS 6.0-6.22 IO.SYS & PC DOS 6.1-2000 IBMBIO.COM
|
|
check a signature (see #04099) in the COMMAND.COM file image to test
|
|
if it is actually their own shell and has the correct version, before
|
|
they will launch it. If the signature is not found, the message
|
|
"Invalid COMMAND.COM" will be displayed. This test seems to have
|
|
vanished with MS-DOS 7+, as it uses an .EXE style file format.
|
|
In addition to this, the MS-DOS/PC DOS COMMAND.COM checks the version
|
|
of the underlaying OS to see if it is their own. Hence, the
|
|
PC DOS 6.1 (and by SETVER version faking also the PC DOS 7 and 2000)
|
|
COMMAND.COM also run on Novell DOS 7 - DR DOS 7.03, which all
|
|
identify themselves as DOS API level 6.0 and IBM OEM (not yet tested
|
|
as primary shell). PC DOS 5.0 COMMAND.COM should run on DR PalmDOS
|
|
(untested).
|
|
The MS-DOS 7+ COMMAND.COM seems to no longer perform this kind of
|
|
version check any more, which can cause a serious deadlock situation
|
|
on a multi-boot system with DR-DOS installed, when the MS-DOS 7+
|
|
COMMAND.COM is placed in C:\. When IBMBIO.COM attempts to load the
|
|
MS-DOS 7+ COMMAND.COM as a primary shell under DR-OpenDOS 7.02 to
|
|
DR-DOS 7.03 no error message will be displayed by COMMAND.COM, but
|
|
the machine will just hang. To defuse this situation, DR-DOS 7.02+
|
|
IBMBIO.COM was changed to still scan for a SHELL= directive in
|
|
[D]CONFIG.SYS even in F5-mode. For maximum safety, the MS-DOS 7
|
|
COMMAND.COM should be moved from C:\ to C:\WINDOWS\COMMAND\
|
|
and a DCONFIG.SYS file should be created containing for example
|
|
SHELL=C:\DRDOS\COMMAND.COM instead. If a MS-DOS CONFIG.SYS file
|
|
exists, it should contain a SHELL=C:\WINDOWS\COMMAND\COMMAND.COM
|
|
directive. (If no shell can be found at all, DR-DOS IBMBIO.COM would
|
|
display a prompt to enter the proper path to COMMAND.COM).
|
|
The DR-OpenDOS 7.02+ COMMAND.COM is designed to also run on 3rd party
|
|
operating systems like MS-DOS/PC DOS 3.31+, Windows 9x, and in DOS
|
|
boxes of OS/2, Windows NT and 2000, and will for example also take
|
|
advantage of long filenames.
|
|
SeeAlso: AX=5501h
|
|
|
|
Format of Microsoft COMMAND.COM file image signature:
|
|
Offset Size Description (Table 04100)
|
|
00h 3 BYTEs E9h xxh xxh (JMP instruction)
|
|
03h BYTE version
|
|
bits 7-4: major version
|
|
bits 3-0: minor version code
|
|
( 60h for MS-DOS 6.0 and PC-DOS 6.1;
|
|
64h for MS-DOS 6.20, Japanese MS-DOS 6.2, Hangeul MS-DOS 6.2;
|
|
66h for MS-DOS 6.22, PRC (Chinese) MS-DOS 6.22;
|
|
70h for PC DOS 7, PC DOS 7 Y2K edition )
|
|
Notes: Since DR DOS 6.0+, MS-DOS 7.0+, PTS-DOS, S/DOS, 4DOS/NDOS use an .EXE
|
|
style shell file format, this signature is not met by any release of
|
|
these shells. DR DOS 3.31-5.0 used a different jump (E8h) at offset
|
|
00h.
|
|
Older releases of MS-DOS/PC DOS all had a jump (E9h) at offset 00h, but
|
|
other values at offset 03h. For reference here is a list of the
|
|
values for some of these older shells:
|
|
00h for PC DOS 1.10, Olivetti DOS 2.11, MS-DOS 5.0,
|
|
Russian MS-DOS 5.0
|
|
1Eh for MS-DOS 4.01
|
|
BAh for PC DOS 3.10, 3.20, MS-DOS 3.30
|
|
--------l-2F5501-----------------------------
|
|
INT 2F U - DOS 5+ - ROM COMMAND.COM INTERFACE
|
|
AX = 5501h
|
|
Return: ???
|
|
Note: used to determine whether the caller is the first instance of ROM
|
|
COMMAND.COM
|
|
SeeAlso: AX=5500h
|
|
--------R-2F5600-----------------------------
|
|
INT 2F - INTERLNK - INSTALLATION CHECK
|
|
AX = 5600h
|
|
DX = magic value FFFFh
|
|
BL = instance number (00h = any, 01h = first loaded, etc.)
|
|
(BH = 00h and CX = 0000h, see note)
|
|
Return: AL = FFh if installed
|
|
BL = instance number
|
|
CX = version number (CL = major, CH = minor)
|
|
DX = resident CS of driver, DX:0000h -> header (see #02845)
|
|
Notes: INTERLNK was derived from Sewell Development Corporation's FASTLYNX.
|
|
Some Microsoft software explicitly clears the BH and CX registers
|
|
before calling this function.
|
|
BUG: reportedly, the MS-DOS INTERSRV program (though not INTERLNK) causes
|
|
serious FAT corruption and data loss when run under Novell DOS 7.
|
|
INTERSRV apparently checks for DR-DOS by testing the "OS"
|
|
environment variable for the value "DRDOS", which is no longer
|
|
correct for PalmDOS, Novell DOS, or OpenDOS. A workaround may be
|
|
to explicitly set the OS variable to "DRDOS".
|
|
SeeAlso: AX=5601h,AX=5602h,INT 60/AX=0000h
|
|
|
|
Format of Interlnk device driver header:
|
|
Offset Size Description (Table 02845)
|
|
00h DWORD pointer to next driver, offset=FFFFh if last driver
|
|
04h WORD device attributes (see #01647,#01648)
|
|
06h WORD device strategy entry point
|
|
08h WORD device interrupt entry point
|
|
0Ah 8 BYTEs character device name "NUL2 "
|
|
12h 165 BYTEs ???
|
|
B7h 67 BYTEs fully qualified Interlnk filename
|
|
FAh 6 BYTEs ???
|
|
100h DWORD pointer back to Interlnk filename at offset B7h
|
|
104h 8 BYTEs ???
|
|
10Ch BYTE total number of redirected drives
|
|
10Dh BYTE first local drive number (0=A:)
|
|
10Eh BYTE printer redirection (0=no, 1=yes)
|
|
10Fh BYTE ???
|
|
110h 3 BYTEs LPT1...3 status (0FFh=invalid)
|
|
113h 26 BYTEs remote drive number (0=A:, 0FEh=unused) (refer to note below)
|
|
12Dh 26 BYTEs always 0FEh ???
|
|
147h 26 BYTEs always 0FFh ???
|
|
Note: to obtain the remote drive number, subtract the value at offset 10Ch
|
|
from the local drive number before indexing into the table at 113h
|
|
(example: if local drives F, G, H are remote drives C, F, E then
|
|
the first three bytes at offset 113h are 02h, 05h, 04h)
|
|
for each instance of Interlnk, an extra device driver is loaded, but
|
|
all have the same device name NUL2
|
|
SeeAlso: #01646 at INT 21/AH=52h
|
|
--------R-2F5601-----------------------------
|
|
INT 2F - INTERLNK - CHECK IF REDIRECTED DRIVE
|
|
AX = 5601h
|
|
DX = magic value FFFFh
|
|
BH = drive number (0=A:)
|
|
BL = instance number (00h=any, 01h=first loaded, etc.)
|
|
(CX = 0000h, see note)
|
|
Return: (as for AL=00h if redirected drive)
|
|
Note: some Microsoft software explicitly clears the CX register before
|
|
calling this function.
|
|
SeeAlso: AX=5600h,AX=5601h
|
|
--------R-2F5602-----------------------------
|
|
INT 2F - INTERLNK - CHECK IF PORT IN USE
|
|
AX = 5602h
|
|
DX = magic value FFFFh
|
|
BL = instance number (00h=any, 01h=first loaded, etc.)
|
|
CX = base port address of COM / LPT port to check
|
|
Return: (as for AL=00h if port in use for a redirected drive)
|
|
SeeAlso: AX=5600h
|
|
--------d-2F5700-----------------------------
|
|
INT 2F U - IOMEGA DRIVERS - INSTALLATION CHECK
|
|
AX = 5700h
|
|
BX = program ID??? (0201h used by GUEST.EXE)
|
|
DX = 496Fh ('Io')
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
SeeAlso: AX=5701h,AX=5710h,AX=5711h,AX=5712h
|
|
--------d-2F5701-----------------------------
|
|
INT 2F U - IOMEGA DRIVERS - SECONDARY INSTALLATION CHECK
|
|
AX = 5701h
|
|
BX = program ID??? (0201h used by GUEST.EXE)
|
|
DX = 496Fh ('Io')
|
|
Return: AX = 0001h if GUEST.EXE installed
|
|
SeeAlso: AX=5700h,AX=5710h,AX=5711h,AX=5712h
|
|
--------d-2F5710-----------------------------
|
|
INT 2F U - IOMEGA DRIVERS - GET DRIVER INFORMATION???
|
|
AX = 5710h
|
|
BX = program ID??? (0201h used by GUEST.EXE)
|
|
DX = 496Fh ('Io')
|
|
Return: AX = ??? (BX ORed with ???)
|
|
BX = ??? (internal variable)
|
|
CX = ??? (internal variable)
|
|
DX = ??? (CX ORed with ???)
|
|
SeeAlso: AX=5700h,AX=5701h,AX=5711h,AX=5712h
|
|
--------d-2F5711-----------------------------
|
|
INT 2F U - IOMEGA DRIVERS - LOCK MEDIA IN DRIVE
|
|
AX = 5711h
|
|
BX = program ID??? (0201h used by GUEST.EXE)
|
|
DX = 496Fh ('Io')
|
|
Return: CF clear if successful (storage medium in drive)
|
|
AX = new lock count
|
|
CF set on error (drive empty)
|
|
SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5712h
|
|
--------d-2F5712-----------------------------
|
|
INT 2F U - IOMEGA DRIVERS - UNLOCK MEDIA IN DRIVE / EJECT
|
|
AX = 5712h
|
|
BX = program ID??? (0201h used by GUEST.EXE)
|
|
DX = 496Fh ('Io')
|
|
Return: AX = new lock count (00h = unlocked)
|
|
Note: if the lock count was already zero, the storage medium is ejected
|
|
from the drive
|
|
SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5711h
|
|
--------c-2F5758BX4858-----------------------
|
|
INT 2F U - Helix Multimedia Cloaking - CACHECLK - INSTALLATION CHECK
|
|
AX = 5758h
|
|
BX = 4858h ('HX')
|
|
DX = 4443h ('DC')
|
|
CX <> 5758h
|
|
Return: BX = 6878h if installed
|
|
DX = 6463h if installed
|
|
CX = version (CH=major,CL=minor)
|
|
Program: CACHECLK is a 'Cloaked' disk cache by Helix Software
|
|
Note: returns with registers unchanged if CX=5758h on entry
|
|
SeeAlso: INT 16/AX=5758h/BX=4858h,INT 2F/AX=4310h"Cloaking"
|
|
--------X-2F5D00-----------------------------
|
|
INT 2F U - PCMCIA - AWARD PCDISK - GET INFO FROM DRIVER ???
|
|
AX = 5D00h
|
|
Return: ES:BX -> ???
|
|
Note: supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
|
|
SeeAlso: AX=5D01h,INT 21/AX=440Dh"DOS 3.2+"
|
|
--------X-2F5D01-----------------------------
|
|
INT 2F U - PCMCIA - AWARD PCDISK - PUT INFO INTO DRIVER ???
|
|
AX = 5D01h
|
|
ES:BX -> ???
|
|
Return: nothing
|
|
Note: supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
|
|
SeeAlso: AX=5D00h,INT 21/AX=440Dh"DOS 3.2+"
|
|
--------s-2F60FFDL00-------------------------
|
|
INT 2F U - IPLAY v1.00b - INSTALLATION CHECK
|
|
AX = 60FFh
|
|
DL = 00h (function number)
|
|
BX = 5344h ('SD')
|
|
CX = 4D50h ('MP')
|
|
Return: AX = 4F4Bh ('OK') if installed
|
|
Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
|
|
(digitized music files)
|
|
Note: in version 1.00b, any value for DL except 01h invokes this function
|
|
SeeAlso: AX=60FFh/DL=01h
|
|
--------s-2F60FFDL01-------------------------
|
|
INT 2F U - IPLAY v1.00b - GET DATA SEGMENT
|
|
AX = 60FFh
|
|
DL = 01h (function number)
|
|
BX = 5344h ('SD')
|
|
CX = 4D50h ('MP')
|
|
Return: AX = data segment
|
|
Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
|
|
(digitized music files)
|
|
SeeAlso: AX=60FFh/DL=00h
|
|
--------v-2F6282-----------------------------
|
|
INT 2F U - PC Tools v7.0+ VDEFEND, VSAFE, VWATCH, DATAMON - SET ??? ADDRESS
|
|
AX = 6282h
|
|
CX:DX -> ??? or 0000h:0000h
|
|
DI = segment of ??? record (see #02846) or 0000h/FFFFh to ignore
|
|
Return: BX = 0062h
|
|
Note: if CX:DX = 0000h:0000h on entry, the ??? address is not changed
|
|
(DATAMON only)
|
|
SeeAlso: INT 13/AH=FAh"VSAFE",INT 21/AH=FAh"VDEFEND"
|
|
|
|
Format of VSAFE/VWATCH record:
|
|
Offset Size Description (Table 02846)
|
|
00h DWORD ???
|
|
04h WORD offset of ??? in record's segment
|
|
VSAFE 2.0 sets byte at +01h to 56h or 58h
|
|
VWATCH 2.1 sets byte at +02h to 56h or 58h
|
|
06h 2 BYTEs ???
|
|
08h BYTE ??? (01h/other)
|
|
--------v-2F6284BX0000-----------------------
|
|
INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
|
|
AX = 6284h
|
|
BX = 0000h
|
|
CX = 0000h
|
|
Return: AX = segment of resident code
|
|
BX = 5555h
|
|
CX = 5555h
|
|
Note: also supported by DOS 6 UNDELETE which is licensed from PC Tools
|
|
SeeAlso: AX=6284h/BX=0001h,INT 16/AX=FFA3h/BX=0000h
|
|
--------v-2F6284BX0001-----------------------
|
|
INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
|
|
AX = 6284h
|
|
BX = 0001h
|
|
CX = 0001h
|
|
Return: AX:BX -> ??? data (see #02847)
|
|
CX = BX
|
|
SeeAlso: AX=6284h/BX=0000h
|
|
|
|
Format of DPROTECT data for v9.0:
|
|
Offset Size Description (Table 02847)
|
|
00h 5 BYTEs ???
|
|
05h WORD resident code segment (may be segment of DWORD at +03h)
|
|
07h DWORD -> FAR function to sound alert tone
|
|
???
|
|
--------v-2F6284BX0002-----------------------
|
|
INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET OPTIONS
|
|
AX = 6284h
|
|
BX = 0002h
|
|
CX = 0002h
|
|
Return: AX = options (see #02848)
|
|
BX = ??? (0000h for v9)
|
|
CX = AX
|
|
DX = BX
|
|
Note: also supported by DOS 6 UNDELETE which is licensed from PC Tools
|
|
SeeAlso: AX=6284h/BX=0000h,AX=6284h/BX=0003h
|
|
|
|
Bitfields for DATAMON/DPROTECT options:
|
|
Bit(s) Description (Table 02848)
|
|
1 ???
|
|
12 disabled
|
|
13 using Delete Sentry
|
|
14 using Delete Tracker
|
|
--------v-2F6284BX0003-----------------------
|
|
INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - SET OPTION??? FLAGS
|
|
AX = 6284h
|
|
BX = 0003h
|
|
CX = flags (see #02849)
|
|
DX = flags
|
|
bit 15: ???
|
|
Note: v9 DPROTECT only checks bit 12 of CX, and ignores DX entirely
|
|
SeeAlso: AX=6284h/BX=0002h
|
|
|
|
Bitfields for DATAMON/DPROTECT CX flags:
|
|
Bit(s) Description (Table 02849)
|
|
3 ???
|
|
5 ???
|
|
10 ???
|
|
12 disable DATAMON/DPROTECT
|
|
--------v-2F6284BX0004-----------------------
|
|
INT 2F U - PC Tools v8 DATAMON, v9+ DPROTECT - ???
|
|
AX = 6284h
|
|
BX = 0004h
|
|
CX = 0004h
|
|
Return: AX = 5555h
|
|
BX = ??? (0800h)
|
|
CX = ??? (FCCCh for v8, FCCBh for v9)
|
|
--------V-2F6400-----------------------------
|
|
INT 2F - SCRNSAV2.COM - INSTALLATION CHECK
|
|
AX = 6400h
|
|
Return: AL = installation state
|
|
00h not installed
|
|
FFh installed
|
|
Program: SCRNSAV2.COM is a screen saver for PS/2s with VGA by Alan Ballard
|
|
SeeAlso: INT 10/AX=5555h,INT 14/AX=AA01h
|
|
Index: screen saver;SCRNSAV2
|
|
--------N-2F7000-----------------------------
|
|
INT 2F - License Service API - INSTALLATION CHECK
|
|
AX = 7000h
|
|
CX = license server index (0000h to 001Fh)
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
Notes: The License Service API is being maintained by Microsoft but is being
|
|
supported by a large number of companies including Apple, Banyan,
|
|
DEC, HP, Lotus, Microsoft, Novell, Software Publishers Association,
|
|
and Wordperfect (not a complete list!)
|
|
Each license service provider must search for the next free index
|
|
slot to use
|
|
SeeAlso: AX=7001h,AX=7003h,AX=7004h,AX=7005h
|
|
--------N-2F7001-----------------------------
|
|
INT 2F - License Service API - REQUEST LICENSE
|
|
AX = 7001h
|
|
CX = license server index (0000h to 001Fh)
|
|
DS:DX -> SLSREQUEST structure (see #02850)
|
|
Return: AX = status
|
|
0000h success
|
|
else provider error code
|
|
ES:BX = provider specific handle for the license context
|
|
SeeAlso: AX=7002h,AX=7004h,AX=7005h
|
|
|
|
Format of License Service SLSREQUEST structure:
|
|
Offset Size Description (Table 02850)
|
|
00h DWORD (ret) status code
|
|
04h DWORD (ret) handle identifying context
|
|
08h DWORD (call) address of Publisher string
|
|
0Ch DWORD (call) address of Product string
|
|
10h DWORD (call) address of Version string
|
|
14h DWORD units required
|
|
18h DWORD address of comment string
|
|
1Ch DWORD address of SLSCHALLENGE structure (see #02851)
|
|
|
|
Format of License Service SLSCHALLENGE structure:
|
|
Offset Size Description (Table 02851)
|
|
00h DWORD algorithm (currently always 1)
|
|
04h DWORD secret to be challenged (1-255)
|
|
08h DWORD size of challenge in bytes (1-255)
|
|
0Ch N BYTEs challenge data
|
|
--------N-2F7002-----------------------------
|
|
INT 2F - License Service API - RELEASE LICENSE
|
|
AX = 7002h
|
|
CX = license server index (0000h to 001Fh)
|
|
DS:DX -> SLSRELEASE structure (see #02852)
|
|
ES:BX = provider specific handle for the license context
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
SeeAlso: AX=7001h,AX=7005h
|
|
|
|
Format of License Service SLSRELEASE structure:
|
|
Offset Size Description (Table 02852)
|
|
00h DWORD handle indentifying license context
|
|
04h DWORD total units consumed
|
|
08h DWORD address of comment string
|
|
--------N-2F7003-----------------------------
|
|
INT 2F - License Service API - UPDATE
|
|
AX = 7003h
|
|
CX = license server index (0000h to 001Fh)
|
|
DS:DX -> SLSUPDATE structure (see #02853)
|
|
ES:BX = provider specific handle for the license context
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
SeeAlso: AX=7004h,AX=7005h
|
|
|
|
Format of License Service SLSUPDATE structure:
|
|
Offset Size Description (Table 02853)
|
|
00h DWORD (ret) status code
|
|
04h DWORD (call) handle identifying license context
|
|
08h DWORD (call) total units consumed
|
|
0Ch DWORD additional units required
|
|
10h DWORD address of comment string
|
|
14h DWORD address of SLSCHALLENGE structure (see #02851)
|
|
--------N-2F7004-----------------------------
|
|
INT 2F - License Service API - GET ERROR
|
|
AX = 7004h
|
|
CX = license server index (0000h to 001Fh)
|
|
DS:DX -> SLSGETERROR structure (see #02854)
|
|
ES:BX = provider specific handle for the license context
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
SeeAlso: AX=7000h,AX=7001h
|
|
|
|
Format of License Service SLSGETERROR structure:
|
|
Offset Size Description (Table 02854)
|
|
00h DWORD (ret) status code
|
|
04h DWORD handle identifying license context
|
|
08h DWORD error code
|
|
0Ch DWORD buffer size in bytes
|
|
10h N BYTEs data buffer
|
|
--------N-2F7005-----------------------------
|
|
INT 2F - License Service API - QUERY LICENSE
|
|
AX = 7005h
|
|
CX = license server index (0000h to 001Fh)
|
|
DS:DX -> SLSQUERY structure (see #02855)
|
|
ES:BX = provider specific handle for the license context
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
SeeAlso: AX=7001h,AX=7002h
|
|
|
|
Format of License Service SLSQUERY structure:
|
|
Offset Size Description (Table 02855)
|
|
00h DWORD (ret) status code
|
|
04h DWORD handle identifying license context
|
|
08h DWORD information index
|
|
0Ch DWORD buffer size in bytes
|
|
10h N BYTEs data buffer
|
|
--------K-2F7041BX4B70-----------------------
|
|
INT 2F U - HP 200LX - KEY200 - INSTALLATION CHECK
|
|
AX = 7041h
|
|
BX = 4B70h
|
|
Return: BX = 7965h if keyboard remapper KEY200.COM installed
|
|
--------d-2F7200-----------------------------
|
|
INT 2F - SRDISK v1.30+ - INSTALLATION CHECK
|
|
AX = 7200h
|
|
Return: AL = FFh if installed
|
|
ES = segment of device driver header (see #02856)
|
|
Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
|
|
SeeAlso: AX=7201h
|
|
|
|
Format of SRDISK device driver header:
|
|
Offset Size Description (Table 02856)
|
|
00h 10 BYTEs same as standard device driver header
|
|
(see #01646 at INT 21/AH=52h)
|
|
0Ah BYTE number of subunits (drives) supported by driver
|
|
0Bh 3 BYTEs signature "SRD"
|
|
0Eh 4 BYTEs memory type string ("XMS "/"EMS ")
|
|
12h 4 BYTEs ASCII driver version string "N.NN"
|
|
16h BYTE 00h
|
|
17h BYTE configuration format version (currently 00h or 01h)
|
|
18h WORD offset of drive configuration data
|
|
SeeAlso: #01646
|
|
--------d-2F7201-----------------------------
|
|
INT 2F - SRDISK v2.02 - GET CODE/DATA SEGMENT
|
|
AX = 7201h
|
|
Return: AL = FFh if installed
|
|
ES = segment of device driver header (see #02856)
|
|
Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
|
|
SeeAlso: AX=7200h
|
|
--------!---Section--------------------------
|