home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-04-26 | 227.0 KB | 6,349 lines |
- Interrupt List, part 5 of 7
- This compilation is Copyright (c) 1989,1990,1991,1992 Ralf Brown
- ----------2F8000-----------------------------
- INT 2F - EASY-NET - INSTALLATION CHECK
- AX = 8000h
- Return: AL = 00h not installed
- FFh installed
- Note: EASY-NET is a shareware two-machine serial-port network
- ----------2F8000-----------------------------
- INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
- AX = 8000h
- Return: AL = FFh if installed
- BX = CS of resident code
- CX = ??? (03FCh)
- Note: TurboNET is a NetBIOS-based file redirector and server; a demonstration
- version may be downloaded from Nanosoft's BBS
- SeeAlso: AX=8100h
- ----------2F8000DX0000-----------------------
- INT 2F - FaxBIOS interface - INSTALLATION CHECK
- AX = 8000h
- DX = 0000h
- DI = 0000h
- Return: AL = FFh if installed
- DX:DI -> signature "FaxBiosjpc"
- Note: FaxBIOS may use any multiplex number from 80h through FFh; to determine
- whether it is installed, it is necessary to poll all multiplex
- numbers for one which returns the above signature
- SeeAlso: AH=2Ah,AX=80FBh
- ----------2F8001-----------------------------
- INT 2F - Nanosoft, Inc. TurboNET server - ???
- AX = 8001h
- DS:SI -> 16-byte buffer for ???
- Return: AH = status
- 00h successful
- 01h error
- Note: makes NetBIOS calls
- ----------2F80FB-----------------------------
- INT 2F - FaxBIOS interface - COMMAND SUBMISSION
- AX = 80FBh
- BX = function number (see below)
- DX:DI -> command buffer (see below)
- Return: AL = FFh if submitted OK
- CX = result code (see below)
- Note: FaxBIOS may use any multiplex number from 80h through FFh
- SeeAlso: AX=8000h"FaxBIOS"
-
- Values for function number:
- 0001h SYS_LOGIN
- 0002h SYS_LOGOUT
- 0003h SYS_GET_FAXAPP_INFO
- 0004h STAT_IO_GET
- 0005h STAT_FAXBIOS_GET
- 0006h PDIR_OPEN
- 0007h PDIR_CLOSE
- 0008h PDIR_READ_PERSON
- 0009h PDIR_PARTIAL_READ
- 000Ah PDIR_READ_GROUP
- 000Bh PDIR_READ_MEMBER_LIST
- 000Ch PDIR_WRITE_PERSON
- 000Dh PDIR_WRITE_GROUP
- 000Eh PDIR_DELETE_PERSON
- 000Fh PDIR_DELETE_GROUP
- 0010h PDIR_READ_GROUP_LIST
- 0011h PDIR_IN_GROUP
- 0012h PDIR_OUT_GROUP
- 0013h SCHED_OPEN
- 0014h SCHED_ADD_DEST
- 0015h SCHED_ADD_FILE
- 0016h SCHED_SET_PARAMS
- 0017h SCHED_CANCEL
- 0018h SCHED_CLOSE
- 0019h SLOG_OPEN
- 001Ah SLOG_CLOSE
- 001Bh SLOG_SHORT_ENV_STAT
- 001Ch SLOG_LONG_ENV_STAT
- 001Dh SLOG_DEST_STAT
- 001Eh SLOG_FILE_STAT
- 001Fh SLOG_CANCEL_ENV
- 0020h RLOG_OPEN
- 0021h RLOG_CLOSE
- 0022h RLOG_READ
- 0023h GRAPH_GET_FILE_TYPE
- 0024h GRAPH_EXPORT_FILE
- 0025h GRAPH_GET_LAYOUT_INFO
- 0026h GRAPH_CREATE_FILE
- 0027h GRAPH_CLOSE_FILE
- 0028h GRAPH_CREATE_PAGE
- 0029h GRAPH_WRITE
- 002Ah GRAPH_END_PAGE
- 002Bh GRAPH_OPEN_FILE
- 002Ch GRAPH_GOTO_PAGE
- 002Dh GRAPH_READ
- 002Eh IOCTL_GET
- 002Fh IOCTL_SET
- 0030h IOCTL_ANSWER_FAX
- 0031h IOCTL_DIAL
-
- Values for result code:
- 0000h successful
- 0001h not prepared or servicing another client (busy)
- 0002h call failed due to sharing (LOCKED)
- 0003h logged-in client limit reached (FULL)
- 0004h transport denied (TRANSPORT_DENIED)
- 0005h not implemented (NOT_IMPLEMENTED)
- 0006h aborted while in progress (ABORTED)
- 0007h permissions denied (PERMISSION_DENIED)
- 0008h requested data is no longer valid (NO_LONGER_VALID)
- 0080h unspecified system error occurred
- 0081h an internal file was not found
- 0082h an internal file could not be created
- 0083h an internal file could not be opened
- 0084h an internal file could not be closed
- 0085h error occurred writing to an internal file
- 0086h error occurred reading from an internal file
- 0087h bad or corrupted file encountered
- 0088h an access violation occurred
- 0089h an internal file is empty
- 008Ah insufficient memory to process request
- 008Bh FaxBIOS was unable to issue a handle
- 008Ch an error internal to FaxBIOS occurred
- 008Dh no room on disk
- 0100h unspecified error accessing client file
- 0101h file not found
- 0102h creation fault
- 0103h open fault
- 0104h close fault
- 0105h write fault
- 0106h read fault
- 0107h file corrupted
- 0108h access violation
- 0109h empty file
- 0200h unspecified argument error
- 0201h bad function
- 0202h bad option
- 0203h bad structure size
- 0204h bad buffer size
- 0205h bad client ID
- 0300h unspecified error with token
- 0301h cover sheet token was invalid
- 0302h logo token was invalid
- 0303h signature token was invalid
- 0304h font token was invalid
- 0305h phone directory token was invalid
- 0306h outbound route token was invalid
- 0307h priority token was invalid
- 0308h sort token was invalid
- 0309h billing token was invalid
- 0400h unspecified handle error
- 0401h bad Phone Directory handle
- 0402h bad scheduling handle
- 0403h bad read send log handle
- 0404h bad read receive log handle
- 0405h bad graphics handle
- 0500h data passed in structure was invalid
- 0501h name field given is invalid
- 0502h phone number given is invalid
- 0503h poll code submitted is invalid
- 0504h file type constant was invalid
- 0505h BFT constant not defined or supported
- 0506h resolution not defined or supported
- 0507h page length not defined or supported
- 0508h page width not defined or supported
- 0509h date & time requested are ridiculous
- 050Ah Subject text was not an ASCIIZ string
- 050Bh From text was not an ASCIIZ string
- 050Ch requested envelope ID was not found
- 050Dh requested envelope ID is not valid
- 050Eh envelope requested was not found
- 050Fh destination index is out of range
- 0510h file index is out of range
- 0511h index into receive log is out of range
- 0512h file name specified was incomplete or invalid
- 0513h page selected was out of range
- 0514h bit width more than byte width
- 0515h mode for open is not defined
- 0516h person index is out of range
- 0517h person ID is out of range
- 0518h group index out of range or invalid
- 0519h group ID out of range or invalid
- 051Ah range of indices to read is invalid
- 051Bh group name given is invalid
- 051Ch field_to_use is badly specified
- 051Dh predicate invalid for field specified
- 0600h unspecified client procedure error
- 0601h device of interest is not present
- 0602h device of interest has been removed
- 0603h device of interest is not responding
- 0604h device of interest is disabled
- 0605h could not dial because device was in use
- 0606h maximum destination limit exceeded
- 0607h maximum file limit exceeded
- 0608h scheduling closed with no destination
- 0609h scheduling closed with no files or poll
- 060Ah scheduling closed with no parameters specified
- 060Bh file type specified does not match file
- 060Ch file type specified is not supported
- 060Dh file submitted is not exportable
- 060Eh file type specified is not imageable
- 060Fh error converting file
- 0610h envelope could not be cancelled
- 0611h Phone Directory is full
- 0612h record is already in the Phone Directory
- 0613h selected group in Phone Directory is full
- 0614h person is already in the group
- 0615h person is not in the group & cannot be removed
- 0616h a graphics file to be created already exists
- 0617h a grphics file to be read is empty
- 0618h GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
- 0619h graph read or write attempted without goto or create
- 061Ah graph page contains no data
- 061Bh Phone Directory is already open for this client
- 061Ch schedule log is already open for this client
- 061Dh receive log is aready open for this client
- 061Eh Phone Directory function requires write mode
- 0800h denied exclusive use of the API
-
- Format of SYS_LOGIN command buffer:
- Offset Size Description
- 00h WORD structure size
- 02h WORD function number
- 04h WORD return code
- 06h WORD client ID
- 08h WORD API Major Version
- 0Ah WORD API Minor Version
- 0Ch DWORD reserved for manufacturer's use
- 10h 22 BYTEs manufacturer's ID
- 26h WORD highest possible device number
- 28h WORD maximum destinations per envelope
- 2Ah WORD maximum files per envelope
- 2Ch WORD FaxBIOS capabilities bitmap
- bit 0: transmit supported
- bit 1: receive supported
- bit 2: IOCTL supported
- bit 3: IOCTL_DIAL supported
- bit 4: IOCTL_ANSWER_FAX supported
- bit 5: manual transmit supported
- bit 6: optional phone services supported
- bit 7: canonical phone objects
- bit 8: seam with next supported
- 2Eh DWORD T.30 capabilities bitmap
- bit 0: low vertical resolution (minimum)
- bit 1: high vertical resolution
- bit 2: page width 107mm (4.21 in)
- bit 3: page width 151mm (5.91 in)
- bit 4: page width 215mm (8.46 in) (minimum)
- bit 5: page width 255mm (10.04 in)
- bit 6: page width 303mm (11.93 in)
- bit 7: unused
- bit 8: page length 297mm (11.69 in) (minimum)
- bit 9: page length 364mm (14.33 in)
- bit 10: page length 279mm (11 in)
- bit 11: page length unlimited
- bit 12: Group 4 resolution 300x300
- bit 13: Group 4 resolution 400x400
- bit 14: able to respond to poll from remote
- bit 15: able to poll remote
- bit 16: binary file transfer supported
- 32h WORD IPC handle
- 34h DWORD amount of memory needed to load
- 38h WORD scope (00h for public, nonzero for private)
- 3Ah 6 BYTEs future expansion
- 40h WORD structure size
-
- Format of SYS_LOGOUT command buffer:
- Offset Size Description
- 00h WORD structure size
- 02h WORD function number
- 04h WORD return code
- 06h WORD client ID
- 08h DWORD client tag (for client's internal use)
- 0Ch 6 BYTEs future expansion
- 12h WORD structure size
-
- Format of SYS_GET_FAXAPP_INFO command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch 80 BYTEs FaxBIOS data
- 5Ch 80 BYTEs default cover
- ACh 80 BYTEs default logo
- FCh 80 BYTEs default signature
- 14Ch 80 BYTEs default font 10
- 19Ch 80 BYTEs default font 165
- 1ECh 80 BYTEs default user font
- 23Ch 80 BYTEs default Pdir
- 28Ch 80 BYTEs default sort
- 2DCh 10 BYTEs default bill
- 2E6h 10 BYTEs default route
- 2F0h 40 BYTEs default cover sheet form
- 318h 34 BYTEs valid dial characters
- 33Ah 6 BYTEs local country code
- 340h 6 BYTEs local city or area code
- 346h 6 BYTEs future expansion
- 34Ch WORD structure size
-
- Format of STAT_IO_GET command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD device number
- 0Eh WORD current activity
- 10h WORD number of rings (if ringing)
- 12h WORD number of fascimiles transmitted
- 14h WORD number of fascimiles received
- 16h WORD status of last transmission
- 18h WORD envelope number of last transmission
- 1Ah WORD index of last destination in envelope
- 1Ch WORD status of last reception
- 1Eh WORD current page (if session in progress)
- 20h 80 BYTEs current file
- 70h104 BYTEs remote number
- D8h 20 BYTEs last name
- ECh 20 BYTEs first name
- 100h 32 BYTEs company name
- 120h 32 BYTEs notes
- 140h WORD current envelope ID (if sending)
- 142h WORD total pages in transmission (if sending)
- 144h 6 BYTEs future expansion
- 14h WORD structure size
-
- Format of STAT_FAXBIOS_GET command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD status ID
- 0Eh WORD currenty FaxBIOS function number
- 10h WORD current Client ID being serviced
- 12h WORD number of things to do
- 14h WORD number of them done
- 16h WORD number of pages to do (if any)
- 18h WORD number of them done
- 1Ah WORD number of files to do
- 1Ch WORD number of them done
- 1Eh 80 BYTEs current File
- 6Eh WORD 0 if all devices are idle
- 70h WORD number of fascimiles transmitted
- 72h WORD number of fascimiles received
- 74h WORD status of last transmission in system
- 76h WORD envelope ID of last transmission
- 78h WORD index of last destination in envelope
- 7Ah WORD status of last reception in system
- 7Ch DWORD time of next transmission
- 80h 6 BYTEs future expansion
- 86h WORD structure size
-
- Format of PDIR_OPEN command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch 80 BYTEs Phone Directory token
- 5Ch 80 BYTEs sort order token
- ACh WORD open Mode (0 = read, 1 = write)
- AEh WORD Phone Directory handle
- B0h WORD number of people
- B2h WORD number of groups
- B4h WORD bitmap of fields supported by partial read
- B6h 6 BYTEs future expansion
- BCh WORD structure size
-
- Format of PDIR_CLOSE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD Phone Directory handle
- 0Eh 6 BYTEs future expansion
- 14h WORD structure size
-
- Format of PDIR_READ_PERSON command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD Phone Directory handle
- 0Eh WORD retrieve by index
- 10h WORD person ID or index
- 12h WORD how many groups person is in
- 14h WORD person ID
- 16h 20 BYTEs last name
- 2Ah 20 BYTEs first name
- 3Eh 32 BYTEs company
- 5Eh 32 BYTEs notes
- 7Eh 6 BYTEs FAX country code
- 84h 6 BYTEs FAX city/area code
- 8Ah 14 BYTEs FAX local number
- 98h 14 BYTEs FAX extension
- A6h 24 BYTEs reserved
- BEh 6 BYTEs voice country code
- C4h 6 BYTEs voice city/area code
- CAh 14 BYTEs voice local number
- D8h 14 BYTEs voice extension
- E6h 24 BYTEs reserved
- FEh 10 BYTEs outbound routing information
- 108h 10 BYTEs billing information, credit card etc
- 112h DWORD remote FAX capabilities
- 116h 21 BYTEs T.30 poll code of FAX number
- 12Bh 15 BYTEs reserved
- 13Ah 6 BYTEs future expansion
- 140h WORD structure size
-
- Format of SCHED_OPEN, SCHED_CANCEL command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD scheduler handle
- 0Eh 6 BYTEs future expansion
- 14h WORD structure size
-
- Format of SCHED_ADD_DEST command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD schedule handle
- 0Eh WORD device number if manual send wanted
- 10h WORD non-zero if poll desired
- 12h WORD person ID
- 14h 20 BYTEs last name
- 28h 20 BYTEs first name
- 3Ch 32 BYTEs company
- 5Ch 32 BYTEs notes
- 7Ch 6 BYTEs FAX country code
- 82h 6 BYTEs FAX city/area code
- 88h 14 BYTEs FAX local number
- 96h 14 BYTEs FAX extension
- A4h 24 BYTEs reserved
- BCh 6 BYTEs voice country code
- C2h 6 BYTEs voice city/area code
- C8h 14 BYTEs voice local number
- D6h 14 BYTEs voice extension
- E4h 24 BYTEs reserved
- FCh 10 BYTEs outbound routing information
- 106h 10 BYTEs billing information, credit card etc
- 110h DWORD remote FAX capabilities
- 114h 21 BYTEs T.30 poll code of FAX number
- 129h 15 BYTEs reserved
- 138h 6 BYTEs future expansion
- 13Eh WORD structure size
-
- Format of SCHED_ADD_FILE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD schedule handle
- 0Eh WORD file type
- 0000h unidentified
- 0001h native file format
- 0002h ASCII
- 0003h FaxBIOS Tiff Class F
- 10h 80 BYTEs file name
- 60h 80 BYTEs font token
- B0h WORD conversion options bitmap
- B2h WORD resolution
- 0000h standard 98 lines per inch, 204 dpi
- 0001h fine 196 lines per inch, 204 dpi
- 0002h Group4 300 dpi
- 0003h Group4 400 dpi
- B4h WORD page length
- 0000h 279 mm (11 in)
- 0001h 297 mm (11.69 in)
- 0002h 364 mm (14.33 in)
- 0003h unlimited
- B6h WORD page width
- 0000h 215 mm (8.46 in)
- 0001h 255 mm (10.04 in)
- 0002h 303 mm (11.93 in)
- 0003h 151 mm (5.91 in)
- 0004h 107 mm (4.21 in)
- B8h WORD binary file transfer specification
- 0000h only as FAX
- 0001h only as file (for non-faxable files)
- 0002h as file when possible else FAX
- BAh WORD seam flag (nonzero for seam with next)
- BCh WORD delete flag (nonzero to delete when done)
- BEh 6 BYTEs future expansion
- C4h WORD structure size
-
- Format of SCHED_SET_PARAMS command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD scheduler handle
- 0Eh DWORD time to send
- 10h 10 BYTEs priority token
- 1Ch 80 BYTEs logo file token
- 6Ch 80 BYTEs signature file token
- BCh 80 BYTEs cover page token
- 10Ch 40 BYTEs Subject text
- 134h 40 BYTEs From text
- 15Ch WORD user ID
- 15Eh 6 BYTEs future expansion
- 164h WORD structure size
-
- Format of SCHED_CLOSE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD scheduler handle
- 0Eh WORD envelope ID generated
- 10h 6 BYTEs future expansion
- 16h WORD structure size
-
- Format of SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD log handle
- 0Eh WORD number of entries
- 10h 6 BYTEs future expansion
- 16h WORD structure size
-
- Format of GRAPH_GET_FILE_TYPE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch 80 BYTEs filename
- 5Ch WORD file type
- 0000h unidentified
- 0001h native file format
- 0002h ASCII
- 0003h FaxBIOS Tiff Class F
- 5Eh WORD bitmap of supported capabilities
- 60h 6 BYTEs future expansion
- 66h WORD structure size
-
- Format of GRAPH_CREATE_FILE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch 80 BYTEs filename
- 5Ch WORD graph handle
- 5Eh 6 BYTEs future expansion
- 64h WORD structure size
-
- Format of GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD graph handle
- 0Eh 6 BYTEs future expansion
- 14h WORD structure size
-
- Format of GRAPH_CREATE_PAGE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD graph handle
- 0Eh WORD resolution
- 10h WORD page width
- 12h 6 BYTEs future expansion
- 18h WORD structure size
-
- Format of GRAPH_WRITE_PAGE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD graph handle
- 0Eh DWORD pointer to storage for image
- 12h WORD band height in lines
- 14h WORD width of page image in bytes
- 16h WORD facsimile page width constant
- 18h WORD width of page image in bits
- 1Ah WORD number of bytes actually processed
- 1Ch 6 BYTEs future expansion
- 22h WORD structure size
-
- Format of GRAPH_OPEN_FILE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch 80 BYTEs filename
- 5Ch WORD file type
- 5Eh WORD graph handle
- 60h WORD number of pages
- 62h 6 BYTEs future expansion
- 68h WORD structure size
-
- Format of GRAPH_GOTO_PAGE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD graph handle
- 0Eh WORD page number
- 10h WORD vertical resolution
- 12h WORD page width
- 14h DWORD page length
- 18h 6 BYTEs future expansion
- 1Eh WORD structure size
-
- Format of GRAPH_READ_PAGE command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD graph handle
- 0Eh DWORD pointer to storage for image
- 12h WORD band height in lines
- 14h WORD width of page image in bytes
- 16h WORD facsimile page width constant
- 18h WORD width of page image in bits
- 1Ah WORD number of bytes actually processed
- 1Ch 6 BYTEs future expansion
- 22h WORD structure size
-
- Format of IOCTL_ANSWER_FAX command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD device number
- 0Eh 6 BYTEs future expansion
- 14h WORD structure size
-
- Format of IOCTL_DIAL command buffer:
- Offset Size Description
- 00h 12 BYTEs common data (see SYS_LOGOUT above)
- 0Ch WORD device number
- 0Eh 6 BYTEs country code
- 14h 6 BYTEs city or area code
- 1Ah 14 BYTEs local number
- 28h 14 BYTEs extension
- 36h 14 BYTEs reserved
- 4Eh 6 BYTEs future expansion
- 54h WORD structure size
- ----------2F8100-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
- AX = 8100h
- Return: AL = FFh if installed
- Note: TurboNET is a NetBIOS-based file redirector and server; a demonstration
- version may be downloaded from Nanosoft's BBS
- SeeAlso: AX=8000h"TurboNET"
- ----------2F8101-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
- AX = 8101h
- Return: AL = ???
- DL = ???
- ----------2F8102-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
- AX = 8102h
- Return: AL = ???
- DL = ???
- ----------2F8103-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
- AX = 8103h
- ES:DI -> 17-byte buffer
- Return: buffer filled
- ----------2F8104-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
- AX = 8104h
- BL = ???
- BH = ???
- CX = ???
- DX = ???
- DS:SI -> 16-byte buffer containing ???
- Return: AL = 00h ???
- ----------2F8105-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
- AX = 8105h
- CX = ??? (don't change current value if 0000h)
- DX = ??? (don't change current value if 0000h)
- Return: AL = 00h successful
- ----------2F82-------------------------------
- INT 2F U - Nanosoft, Inc. TurboNET - ???
- AH = 82h
- ???
- Return: ???
- Note: called by TNR.EXE, the TurboNET redirector configuration program
- SeeAlso: AX=8100h
- ----------2F8200-----------------------------
- INT 2F - RESPLAY - SAMPLE/PLAYBACK
- AX = 8200h
- DX:DI -> start of sample space
- CX:BX = length in bytes
- Return: AX = status
- 1000h successful
- 2000h not initialized (see AX=8210h)
- other RESPLAY not installed
- Note: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
- SeeAlso: AX=8201h,AX=8210h
- ----------2F8201-----------------------------
- INT 2F - RESPLAY - INSTALLATION CHECK
- AX = 8201h
- Return: AX = 7746h if installed
- SeeAlso: AX=8202h
- ----------2F8202-----------------------------
- INT 2F - RESPLAY - UNINSTALL
- AX = 8202h
- Return: AX = status
- 1000h successful
- SeeAlso: AX=8201h
- ----------2F8210-----------------------------
- INT 2F - RESPLAY - INITIALIZE
- AX = 8210h
- BL = sound device
- 00h printer port LPT1
- 01h printer port LPT2
- 02h prototype board at I/O address 0300h
- 03h printer port (alternative LPT1)
- 04h internal speaker
- BH = sample rate in multiples of 250 Hz (14h to A0h)
- CL = direction
- 00h playback
- 01h sample
- Return: AX = status
- 1000h successful
- 2000h parameter out of range
- other RESPLAY not installed
- SeeAlso: AX=8200h
- ----------2F8900-----------------------------
- INT 2F - WHOA!.COM - INSTALLATION CHECK
- AX = 8900h
- Return: AL = 00h not installed
- = FFh installed
- Note: WHOA!.COM is a system slow-down utility by Brad D Crandall
- SeeAlso: AX=8901h,AX=8902h
- ----------2F8901-----------------------------
- INT 2F - WHOA!.COM - UNINSTALL
- AX = 8901h
- Return: AL = FDh successful
- = FEh error
- Note: WHOA!.COM is a system slow-down utility by Brad D Crandall
- SeeAlso: AX=8900h
- ----------2F8902-----------------------------
- INT 2F - WHOA!.COM - SET DELAY COUNT
- AX = 8902h
- BX = delay count (larger values slow system down more)
- Return: AL = FDh successful
- = FEh error
- Note: WHOA!.COM is a system slow-down utility by Brad D Crandall
- SeeAlso: AX=8900h
- ----------2F9000-----------------------------
- INT 2F U - RAID - INSTALLATION CHECK
- AX = 9000h
- Return: AL = FFh if installed
- Note: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
- that resides mostly in EMS
- ----------2F9001-----------------------------
- INT 2F U - RAID - GET ???
- AX = 9001h
- Return: DX:AX -> ???
- SeeAlso: AX=9000h
- ----------2F9002-----------------------------
- INT 2F U - RAID - GET RESIDENT SEGMENT
- AX = 9002h
- Return: AX = segment of resident (conventional memory) portion
- SeeAlso: AX=9000h
- ----------2F9003-----------------------------
- INT 2F U - RAID - UNINSTALL
- AX = 9003h
- Return: ???
- SeeAlso: AX=9000h
- ----------2F9004-----------------------------
- INT 2F U - RAID - GET ???
- AX = 9004h
- Return: AX = first available paragraph past end of resident portion???
- CX destroyed
- SeeAlso: AX=9000h
- ----------2F92-------------------------------
- INT 2F - Couriers LAN E-Mail - API
- AH = 92h
- AL = function
- 00h installation check
- 01h uninstall
- 02h pop down MICRO.EXE notification window
- 03h ???
- 04h ???
- 05h ???
- Return: ???
- SeeAlso: AH=9Ch
- ----------2F93-------------------------------
- INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
- AH = 93h
- BX = CX = AX
- Return: AL = FFh if installed and BX=CX=AX on entry
- BX = segment of resident code
- = 01h if installed but BX or CX differ from AX
- Note: InnerMission is a shareware graphical screen blanker by Kevin Stokes
- ----------2F9C-------------------------------
- INT 2F - Couriers LAN E-Mail OPERATOR.EXE - API
- AH = 9Ch
- AL = subfunction
- 01h uninstall
- Return: ???
- SeeAlso: AH=92h
- ----------2FA1--BX0081-----------------------
- INT 2F - Ergo DOS extenders - INSTALLATION CHECK
- AH = A1h
- BX = 0081h
- AL = which
- FEh OS/286,OS/386
- FFh HummingBoard DOS extender
- ES:DI -> 16-byte buffer
- Return: if installed, first four bytes of ES:DI buffer are "IABH"
- Note: since TKERNEL is a licensed version, it is likely that subfunctions
- BX=0082h and BX=0084h are present and function identically to the
- AX=FBA1h/BX=008xh calls
- SeeAlso: AX=ED00h,AX=FBA1h,INT 15/AX=BF02h
- ----------2FA189-----------------------------
- INT 2F U - Biologic HRAMDEV.SYS - API
- AX = A189h
- BX = subfunction
- 0000h set ???
- 0001h remove ???
- 0002h get status ???
- 0003h enable ???
- 0004h disable ???
- 0005h set ??? flag
- 0006h clear ??? flag
- 0007h set ??? flag
- 0008h clear ??? flag
- 0009h set ???
- ES:DI -> function-specific arguments
- if func 0000h: 20-byte buffer containing ???
- if func 0001h: 20-byte buffer for returned ???
- if func 0002h: 16-byte buffer for returned ???
- if func 0009h: WORD containing ???
- Return: BX = A189h if installed
- AH = status
- 00h successful
- FFh failed or invalid function number
- Notes: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
- provides improved high memory access under MSDOS 5.0
- functions 00h and 01h use a stack of four entries; function 01h always
- removes the values stored with the most recent function 00h call
- which has not yet been matched with a function 01h call.
- ----------2FA900-----------------------------
- INT 2F - METZTSR.COM - INSTALLATION CHECK
- AX = A900h
- CF set
- Return: CF clear if resident
- AX = 97FFh
- CF set if not present
- Notes: METZTSR.COM prevents METZ applications (such as the MAGIC screen
- saver) inactivity timeout while running a DOSapp under MS Windows.
- the default multiplex number is A9h, but may be set to any value from
- 80h to FFh with a commandline switch
- SeeAlso: AX=A901h,AX=A902h
- ----------2FA901-----------------------------
- INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
- AX = A901h
- CF set
- Return: CF clear if successful
- AX:DX = BIOS time at which INT 09 was last invoked
- CF set if not present
- SeeAlso: INT 09,INT 1A/AH=00h
- ----------2FA902-----------------------------
- INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
- AX = A902h
- BL = new value
- 00h Ctrl-Alt-Del not allowed
- else Ctrl-Alt-Del allowed (startup default is 01h)
- CF set
- Return: CF clear if successful
- AX = 97FFh
- CF set if not resident
- SeeAlso: AX=A903h
- ----------2FA903-----------------------------
- INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
- AX = A903h
- CF set
- Return: CF clear if successful
- AX = 97FFh if Ctrl-Alt-Del allowed
- AX = 0000h if Ctrl-Alt-Del not allowed
- CF set if not resident
- SeeAlso: AX=A902h
- ----------2FAA00-----------------------------
- INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
- AX = AA00h
- Return: AL = 00h not installed
- FFh installed
- Note: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
- ----------2FAB00-----------------------------
- INT 2F - Btrieve Multi-User - INSTALLATION CHECK
- AX = AB00h
- Return: AL = 4Dh if installed
- SeeAlso: AX=AB01h,AX=AB02h,INT 21/AX=3000h"Btrieve",INT 7B"Btrieve"
- ----------2FAB01-----------------------------
- INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
- AX = AB01h
- BX = process ID
- DS:DX -> 38-byte parameter record (see INT 7B"Btrieve")
- Return: AL = 00h OK
- = other retry after calling INT 7F/AX=0200h
- SeeAlso: AX=AB00h,AX=AB02h,INT 7B"Btrieve",INT 7F/AX=0200h
- ----------2FAB02-----------------------------
- INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
- AX = AB02h
- Return: AL = 00h succesful
- BX = process ID
- AL > 00h failed, retry after calling INT 7F/AX=0200h
- SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
- ----------2FAC00-----------------------------
- INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
- AX = AC00h
- Return: AX = FFFFh
- ES:DI -> ??? (graphics data?) (not documented)
- Note: this installation check was moved here to avoid the conflict with the
- CD-ROM extensions that occurred in DOS 4.00
- SeeAlso: AX=1500h"GRAPHICS"
- ----------2FAD00-----------------------------
- INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
- AX = AD00h
- Return: AL = FFh if installed
- BX = ??? (0100h in MS-DOS 3.30, PCDOS 4.01)
- Note: DOS 5.0 DISPLAY.SYS chains to previous handler if AL is not one of the
- subfunctions listed here
- ----------2FAD01-----------------------------
- INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ???
- AX = AD01h
- BX = ???
- Return: ???
- CF set on error
- ----------2FAD02-----------------------------
- INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ???
- AX = AD02h
- Return: BX = ??? (value set with AX=AD01h)
- ----------2FAD03-----------------------------
- INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ???
- AX = AD03h
- ES:DI -> user buffer
- CX = size of buffer
- Return: CF set if buffer too small
- CF clear if successful
- ----------2FAD04-----------------------------
- INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
- AX = AD04h
- ???
- Return: ???
- ----------2FAD10-----------------------------
- INT 2F U - DOS 4+ DISPLAY.SYS internal - INSTALLATION CHECK???
- AX = AD10h
- ???
- Return: AX = FFFFh
- BX = ??? (0100h in PCDOS 4.01)
- ----------2FAD40-----------------------------
- INT 2F - DOS 4.0 - ???
- AX = AD40h
- DX = ???
- ???
- Return: ???
- Note: called by PCDOS 4.01 PRINT.COM
- ----------2FAD80-----------------------------
- INT 2F - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
- AX = AD80h
- Return: AL = FFh if installed
- BX = version number (BH = major, BL = minor)
- ES:DI -> internal data (see below)
- Note: MSDOS 3.30, PCDOS 4.01, and MSDOS 5.00 all report version 1.00.
-
- Format of KEYB internal data:
- Offset Size Description
- 00h DWORD original INT 09
- 04h DWORD original INT 2F
- 08h 6 BYTEs ???
- 0Eh WORD flags
- 10h BYTE ???
- 11h BYTE ???
- 12h 4 BYTEs ???
- 16h 2 BYTEs country ID letters
- 18h WORD current code page
- ---DOS 3.3---
- 1Ah WORD pointer to first item in list of code page tables???
- 1Ch WORD pointer to ??? item in list of code page tables
- 1Eh 2 BYTEs ???
- 20h WORD pointer to key translation data
- 22h WORD pointer to last item in code page table list (see below)
- 24h 9 BYTEs ???
- ---DOS 4.01---
- 1Ah 2 BYTEs ???
- 1Ch WORD pointer to first item in list of code page tables???
- 1Eh WORD pointer to ??? item in list of code page tables
- 20h 2 BYTEs ???
- 22h WORD pointer to key translation data
- 24h WORD pointer to last item in code page table list (see below)
- 26h 9 BYTEs ???
-
- Format of code page table list entries:
- Offset Size Description
- 00h WORD pointer to next item, FFFFh = last
- 02h WORD code page
- 04h 2 BYTEs ???
-
- Format of translation data:
- Offset Size Description
- 00h WORD size of data in bytes, including this word
- 02h N-2 BYTEs ???
- ----------2FAD81-----------------------------
- INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
- AX = AD81h
- BX = code page (see INT 21/AX=6601h)
- Return: CF set on error
- AX = 0001h (code page not available)
- CF clear if successful
- Notes: called by DISPLAY.SYS
- documented for DOS 5+, but undocumented for earlier versions
- SeeAlso: AX=AD82h
- ----------2FAD82-----------------------------
- INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
- AX = AD82h
- BL = new state
- 00h US keyboard (Control-Alt-F1)
- FFh foreign keyboard (Control-Alt-F2)
- Return: CF set on error (BL not 00h or FFh)
- CF clear if successful
- Note: documented for DOS 5+, but undocumented for earlier versions
- SeeAlso: AX=AD81h,AX=AD83h
- ----------2FAD83-----------------------------
- INT 2F - DOS 5.0 KEYB.COM - GET KEYBOARD MAPPING
- AX = AD83h
- Return: BL = current state
- 00h US keyboard
- FFh foreign keyboard
- SeeAlso: AX=AD82h
- ----------2FAE00DXFFFF-----------------------
- INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
- AX = AE00h
- DX = FFFFh
- CH = FFh
- CL = length of command line tail (4DOS v4.0)
- DS:BX -> command line buffer (see below)
- DS:SI -> command name buffer (see below)
- DI = 0000h (4DOS v4.0)
- Return: AL = FFh if this command is a TSR extension to COMMAND.COM
- AL = 00h if the command should be executed as usual
- Notes: This call provides a mechanism for TSRs to install permanent
- extensions to the command repertoire of COMMAND.COM. It appears
- that COMMAND.COM makes this call before executing the current
- command line, and does not execute it itself if the return is FFh.
- APPEND hooks this call, to allow subsequent APPEND commands to
- execute without re-running APPEND
-
- Format of command line buffer:
- Offset Size Description
- 00h BYTE max length of command line, as in INT 21/AH=0Ah
- 01h BYTE count of bytes to follow, excluding terminating 0Dh
- N BYTEs command line text, terminated by 0Dh
-
- Format of command name buffer:
- Offset Size Description
- 00h BYTE length of command name
- 01h N BYTEs uppercased command name (blank-padded to 11 chars by 4DOS v4)
- ----------2FAE01DXFFFF-----------------------
- INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
- AX = AE01h
- DX = FFFFh
- CH = 00h
- CL = length of command name (4DOS v4.0)
- DS:SI -> command name buffer (see AX=AE00h)
- DS:BX -> command line buffer (see AX=AE00h)
- Return: DS:SI buffer updated
- if length byte is nonzero, the following bytes contain the uppercase
- internal command to execute and the command line buffer contains the
- command's parameters (the first DS:[SI] bytes are ignored)
- Notes: this call requests execution of the command which a previous call to
- AX=AE00h indicated was resident
- APPEND hooks this call
- ----------2FB000-----------------------------
- INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
- AX = B000h
- Return: AL = 00h not installed, OK to install
- = 01h not installed, not OK to install
- = FFh installed
- Notes: called by DISPLAY.SYS
- documented for DOS 5.0, but undocumented in prior versions
- SeeAlso: AX=B001h
- ----------2FB001-----------------------------
- INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
- AX = B001h
- DS:BX -> DWORD buffer for address of 8x8 font table
- Return: buffer filled
- AL = FFh
- Note: PCDOS 3.30/4.01 set the font table offset to 0130h, MSDOS 3.30 to 0030h
- SeeAlso: AX=B000h
- ----------2FB400-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
- AX = B400h
- Return: AL = FFh if installed
- ----------2FB401-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
- AX = B401h
- Return: ES -> host screen buffer (PC ASCII format)
- ES unchanged if communications not started
- ----------2FB402-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - ???
- AX = B402h
- BX = ???
- Return: ???
- ----------2FB403-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - ???
- AX = B403h
- ???
- Return: ???
- ----------2FB404-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - ???
- AX = B404h
- ???
- Return: ???
- ----------2FB405-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - ???
- AX = B405h
- ???
- Return: ???
- ----------2FB700-----------------------------
- INT 2F - APPEND - INSTALLATION CHECK
- AX = B700h
- Return: AL = status
- 00h not installed
- FFh installed
- Note: MSDOS 3.30 APPEND refuses to install itself when run inside TopView or
- a TopView-compatible environment
- ----------2FB701-----------------------------
- INT 2F U - APPEND - ???
- AX = B701h
- ???
- Return: ???
- Note: MSDOS 3.30 APPEND displays "Incorrect APPEND Version" and aborts caller
- ----------2FB702-----------------------------
- INT 2F - APPEND - VERSION CHECK
- AX = B702h
- Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
- AL = major version number
- AH = minor version number, otherwise
- SeeAlso: AX=B710h
- ----------2FB703-----------------------------
- INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
- AX = B703h
- ES:DI -> INT 21 handler APPEND should chain to
- Return: ES:DI -> APPEND's INT 21 handler
- Note: each invocation of this function toggles a flag which APPEND uses to
- determine whether to chain to the user handler or the original
- INT 21
- ----------2FB704-----------------------------
- INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
- AX = B704h
- Return: ES:DI -> active APPEND path (128 bytes max)
- ----------2FB706-----------------------------
- INT 2F - DOS 4+ APPEND - GET APPEND FUNCTION STATE
- AX = B706h
- Return: BX = APPEND state
- bit 0: set if APPEND enabled
- bits 1-11 reserved
- bit 12: (DOS 5.0) set if APPEND applies directory search even if a
- drive has been specified
- bit 13: set if /PATH flag active
- bit 14: set if /E flag active (environment var APPEND exists)
- bit 15: set if /X flag active
- ----------2FB707-----------------------------
- INT 2F - DOS 4+ APPEND - SET APPEND FUNCTION STATE
- AX = B707h
- BX = APPEND state bits (see AX=B706h)
- ----------2FB710-----------------------------
- INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
- AX = B710h
- Return: AX = current APPEND state (see AX=B706h)
- BX = ??? (0000h in MSDOS 3.30 and 5.00)
- CX = ??? (0000h in MSDOS 3.30 and 5.00)
- DL = major version
- DH = minor version
- SeeAlso: AX=B702h
- ----------2FB711-----------------------------
- INT 2F - DOS 4+ APPEND - SET RETURN FOUND NAME STATE
- AX = B711h
- Note: if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
- 6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename is
- written over top of the filename passed to the INT 21h call. The
- application must provide a sufficiently large buffer. This state is
- reset after the next INT 21h call processed by APPEND.
- BUG: DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
- INT 21/AH=6Ch
- SeeAlso: INT 21/AH=4Eh
- ----------2FB800-----------------------------
- INT 2F - network - INSTALLATION CHECK
- AX = B800h
- Return: AL = status
- 00h not installed
- nonzero installed
- BX = installed component flags (test in this order!)
- bit 6 server
- bit 2 messenger
- bit 7 receiver
- bit 3 redirector
- ----------2FB803-----------------------------
- INT 2F - network - GET NETWORK EVENT POST HANDLER
- AX = B803h
- Return: ES:BX -> event post handler (see AX=B804h)
- SeeAlso: AX=B804h,AX=B903h
- ----------2FB804-----------------------------
- INT 2F - network - SET NETWORK EVENT POST HANDLER
- AX = B804h
- ES:BX -> new event post handler
- Notes: used in conjunction with AX=B803h to hook into the network event post
- routine
- The specified handler is called on any network event. Two events are
- defined: message received and critical network error.
- SeeAlso: AX=B803h,AX=B904h
-
- Values post routine is called with:
- AX = 0000h single block message
- DS:SI -> ASCIZ originator name
- DS:DI -> ASCIZ destination name
- ES:BX -> text header (see below)
- AX = 0001h start multiple message block
- CX = block group ID
- DS:SI -> ASCIZ originator name
- DS:DI -> ASCIZ destination name
- AX = 0002h multiple block text
- CX = block group ID
- ES:BX -> text header (see below)
- AX = 0003h end multiple block message
- CX = block group ID
- AX = 0004h message aborted due to error
- CX = block group ID
- AX = 0101h server received badly formatted network request
- Return: AX = FFFFh (PC LAN will process error)
- AX = 0102h unexpected network error
- ES:BX -> NCB (see INT 5C)
- AX = 0103h server received INT 24 error
- other registers as for INT 24, except AH is in BH
- Return: as below, but only 0000h and FFFFh allowed
- Return: AX = response code
- 0000h user post routine processed message
- 0001h PC LAN will process message, but message window not displayed
- FFFFh PC LAN will process message
-
- Format of text header:
- Offset Size Description
- 00h WORD length of text (maximum 512 bytes)
- 02h N BYTEs text of message
- Note: all CRLF sequences in message text are replaced by 14h
- ----------2FB807-----------------------------
- INT 2F - Network - GET NetBIOS NAME NUMBER OF MACHINE NAME
- AX = B807h
- Return: CH = NetBIOS name number of the machine name
- SeeAlso: INT 21/AX=5E00h
- ----------2FB808-----------------------------
- INT 2F - Network - ???
- AX = B808h
- ???
- Return: ???
- ----------2FB809-----------------------------
- INT 2F - LANtastic Network - VERSION CHECK
- AX = B809h
- Return: AH = major version
- AL = minor version
- ----------2FB900-----------------------------
- INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
- AX = B900h
- Return: AL = 00h if not installed
- FFh if installed
- ----------2FB901-----------------------------
- INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
- AX = B901h
- Return: AL = ???
- ES:BX -> RECEIVER.COM INT 2F handler
- Note: allows more efficient execution by letting the caller bypass any other
- INT 2F handlers which have been added since RECEIVER.COM was
- installed
- ----------2FB903-----------------------------
- INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
- AX = B903h
- Return: ES:BX -> POST handler
- SeeAlso: AX=B803h,AX=B904h
- ----------2FB904-----------------------------
- INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
- AX = B904h
- ES:BX -> new POST handler
- SeeAlso: AX=B804h,AX=B903h
- ----------2FB905-----------------------------
- INT 2F - PC Network RECEIVER.COM - GET FILENAME
- AX = B905h
- DS:BX -> 128-byte buffer for filename 1
- DS:DX -> 128-byte buffer for filename 2
- Return: buffers filled from RECEIVER.COM internal buffers
- Note: use of filenames is unknown, but one appears to be for storing messages
- SeeAlso: AX=B906h
- ----------2FB906-----------------------------
- INT 2F - PC Network RECEIVER.COM - SET FILENAME
- AX = B906h
- DS:BX -> 128-byte buffer for filename 1
- DS:DX -> 128-byte buffer for filename 2
- Return: RECEIVER.COM internal buffers filled from user buffers
- Note: use of filenames is unknown, but one appears to be for storing messages
- SeeAlso: AX=B905h
- ----------2FB908-----------------------------
- INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
- AX = B908h
- ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
- Note: this call replaces the address to which RECEIVER.COM chains on an
- INT 09 without preserving the original value. This allows a prior
- handler to unlink, but does not allow a new handler to be added
- such that RECEIVER gets the INT 09 first.
- ----------2FBC00-----------------------------
- INT 2F - Windows 3.0, DOS 5.0 EGA.SYS - INSTALLATION CHECK
- AX = BC00h
- Return: AL = 00h not installed, OK to install
- = 01h not installed, not OK to install
- = FFh installed
- BX = 5456h ("TV")
- Note: AH=BCh is the default value, which may be changed by a command line
- parameter to any value between 80h and FFh
- SeeAlso: AX=BC06h,INT 10/AH=FAh"EGA"
- ----------2FBC06-----------------------------
- INT 2F U - MS Windows 3.0, DOS 5.0 EGA.SYS - GET VERSION INFO
- AX = BC06h
- Return: BX = 5456h ("TV")
- CH = major version
- CL = minor version
- DL = revision
- SeeAlso: AX=BC00h,INT 10/AH=FAh"EGA"
- ----------2FBE00-----------------------------
- INT 2F - REDVIEW - INSTALLATION CHECK
- AX = BE00h
- Return: AL = FFh if installed
- Note: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
- copies data sent to standard output to standard error when the
- former has been redirected to a file, thus allowing the data to
- be seen on the screen at the same time it is captured in a file
- ----------2FBF00-----------------------------
- INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
- AX = BF00h
- Return: AL = FFh if installed
- ----------2FBF01-----------------------------
- INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
- AX = BF01h
- ???
- Return: ???
- ----------2FBF80-----------------------------
- INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
- AX = BF80h
- ES:DI -> FAR entry point to IFS handler in REDIRIFS
- Return: AL = FFh if installed
- ES:DI -> internal workspace
- Note: all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
- ----------2FC000-----------------------------
- INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh
- ES:BX -> call entry point
- ES:SI -> signature string "LINKSUP$"
- Note: LSL.COM may use any multiplex number between C0h and FFh; it searches
- for itself in that range, and installs using the first free multiplex
- number in the range if not already loaded.
- ----------2FC050-----------------------------
- INT 2F U - Explosiv 2.00 - INSTALLATION CHECK
- AX = C050h
- Return: AL = 51h if installed
- Notes: Explosiv is a shareware animated screen blanker for DOS and Windows 3
- by Reidar Gresseth and Chris Hook
- AH=C0h is the default multiplex number, but may be reconfigured to
- any value from C0h to C9h
- SeeAlso: AX=C051h
- ----------2FC052-----------------------------
- INT 2F U - Explosiv 2.00 - UNINSTALL
- AX = C052h
- DX:BX = address to return to on successful uninstall
- Return: at specified address if successful
- AL = 53h on error
- Note: specified return address must have the segment of the caller's PSP
- SeeAlso: AX=C050h
- ----------2FC054-----------------------------
- INT 2F U - Explosiv 2.00 - GET ???
- AX = C054h
- Return: AL = ???
- Note: returns value set by AX=C057h
- SeeAlso: AX=C057h
- ----------2FC055-----------------------------
- INT 2F U - Explosiv 2.00 - SET BLANKING INTERVAL
- AX = C055h
- BX = new interval in clock ticks
- ----------2FC056-----------------------------
- INT 2F U - Explosiv 2.00 - SET ???
- AX = C056h
- BL = ???
- ----------2FC057-----------------------------
- INT 2F U - Explosiv 2.00 - SET ???
- AX = C057h
- BL = ???
- SeeAlso: AX=C054h
- ----------2FC058-----------------------------
- INT 2F U - Explosiv 2.00 - SET ???
- AX = C058h
- BL = ???
- ----------2FC059-----------------------------
- INT 2F U - Explosiv 2.00 - CLEAR ???
- AX = C059h
- Note: clears flag set by AX=C05Ah
- SeeAlso: AX=C05Ah
- ----------2FC05A-----------------------------
- INT 2F U - Explosiv 2.00 - SET ???
- AX = C05Ah
- BL = ???
- Note: sets flag cleared by AX=C059h then stores BL
- SeeAlso: AX=C059h
- ----------2FC05B-----------------------------
- INT 2F U - Explosiv 2.00 - SET ???
- AX = C05Bh
- BL = ???
- ----------2FC05C-----------------------------
- INT 2F U - Explosiv 2.00 - SET ???
- AX = C05Ch
- BL = ???
- ----------2FC900BP0000-----------------------
- INT 2F U - ThunderByte??? - INSTALLATION CHECK
- AX = C900h
- BP = 0000h
- Return: AL = FFh if installed
- BP >= 0014h
- Note: called by TBSCANX
- SeeAlso: AX=C987h,AX=CA00h
- ----------2FC987-----------------------------
- INT 2F U - ThunderByte??? - DISINFECT FILE???
- AX = C987h
- BX:DX -> filename
- BX:CX -> virus name
- Return: AX = status
- 0000h successful???
- Note: called by TBSCANX
- SeeAlso: AX=CA00h
- ----------2FCA00BX5442-----------------------
- INT 2F - TBSCANX - INSTALLATION CHECK
- AX = CA00h
- BX = 5442h ('TB')
- Return: AL = 00h not installed
- = FFh installed
- BX = 7462h ('tb') if BX was 5442h on entry
- Note: TBSCANX is a resident virus scanning module by Frans Veldman. Programs
- may perform virus checks on themselves, other program files, or their
- data files by invoking the TBSCANX API.
- SeeAlso: AX=4653h,AX=C900h
- ----------2FCA01-----------------------------
- INT 2F - TBSCANX - GET STATUS
- AX = CA01h
- Return: AH = BCD version number (v2.2+)
- = CAh for versions before 2.2
- AL = state (00h = disabled, 01h = enabled)
- CX = number of signatures which will be searched
- ---v2.0---
- BX = EMS handle, 0000h if not using EMS
- ---v2.3+---
- BX = segment of swap area, 0000h if not swapped
- DX = EMS handle, FFFFh if not using EMS
- SeeAlso: AX=CA02h
- ----------2FCA02-----------------------------
- INT 2F - TBSCANX - SET STATE
- AX = CA02h
- BL = new state (00h = disabled, 01h = enabled)
- SeeAlso: AX=CA01h
- ----------2FCA03-----------------------------
- INT 2F - TBSCANX - SCAN BUFFER
- AX = CA03h
- CX = size of buffer
- DS:DX -> buffer containing data to scan
- Return: CF clear if no virus signatures found
- BX,ES destroyed
- CF set if signature found
- ES:BX -> ASCIZ virus name (v2.3+)
- DS:DX -> ASCIZ virus name (v2.0)
- AX,CX,DX destroyed (v2.3+)
- all other registers except CS:IP and SS:SP destroyed (v2.0)
- SeeAlso: AX=CA04h
- ----------2FCA04-----------------------------
- INT 2F - TBSCANX - SCAN FILE
- AX = CA04h
- DS:DX -> filename
- Return: CF clear if no virus signatures found
- BX,ES destroyed
- CF set if signature found
- ES:BX -> ASCIZ virus name
- AX,CX,DX destroyed
- Note: this function requires at least 4K free memory
- SeeAlso: AX=CA03h
- ----------2FCAFEBX0000-----------------------
- INT 2F U - THELP v3.0 - INSTALLATION CHECK
- AX = CAFEh
- BX = 0000h
- Return: BX = segment of resident code if installed
- = 0000h if not installed
- SeeAlso: AX=5453h
- ----------2FCB00-----------------------------
- INT 2F - Communicating Applications Specification - INSTALLATION CHECK
- AX = CB00h
- Return: AL = 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- Note: AH = CBh is the default identifier, but may be reconfigured
- SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh
- ----------2FCB01-----------------------------
- INT 2F - Communicating Applications Specification - SUBMIT A TASK
- AX = CB01h
- DS:DX -> ASCIZ name of task control file
- Return: AX >= 0: event handle
- < 0: error code
- Note: files needed for an event must be kept until task is complete or error
- SeeAlso: AX=CB0Bh,AX=CB15h
-
- Error codes (AH = class, AL = subcode, value passed back is 2's complement):
- Class 00h --- FAX warnings
- Subcode 00h no error
- 02h bad scanline count
- 03h page sent with errors, could not retransmit
- 04h received data lost
- 05h invalid or missing logo file
- 06h filename does not match nonstandard format (NSF) header
- 07h file size does not match NSF header
- Class 01h --- DOS warnings (data was sent)
- Subcode 01h invalid function
- 05h access denied
- 06h invalid handle
- others see INT 21/AH=59h
- Class 02h --- fatal errors (data not sent)
- Subcode 00h multiplex handler failed
- 01h unknown command
- 02h bad event handle
- 03h FIND NEXT attempted before FIND FIRST
- 04h no more events
- 07h invalid queue type
- 08h bad control file
- 09h communication board busy
- 0Ah invalid command parameter
- 0Bh can't uninstall resident code
- 0Ch file exists
- 80h unknown task type
- 81h bad phone number
- 82h bad .PCX file header
- 83h unexpected EOF
- 84h unexpected disconnect
- 85h too many dialing retries
- 86h no file specified for send
- 87h communication board timeout
- 88h received too many pages (>1023) of data
- 89h manual connect initiated too long ago
- 8Ah hardware command set error
- 8Bh bad NonStandard Format (NSF) header file
- Class 03h --- fatal DOS errors
- Subcode 02h file not found
- 03h path not found
- others see INT 21/AH=59h
- Class 04h --- FAX errors
- Subcode 01h remote unit not Group 3 compatible
- 02h remote unit did not send capabilities
- 03h other FAX machine incompatible
- 04h other FAX incapable of file transfers
- 05h exceeded retrain or FAX resend limit
- 06h line noise or failure to agree on bit rate
- 07h remote disconnected after receiving data
- 08h no response from remote after sending data
- 09h remote's capabilities incompatible
- 0Ah no dial tone (v1.2+)
- 0Bh invalid response from remote unit after sending data
- 0Dh phone line dead or remote unit disconnected
- 0Eh timeout while waiting for secondary dial tone (v1.2+)
- 11h invalid command from remote after receiving data
- 15h tried to receive from incompatible hardware
- 5Ch received data overflowed input buffer
- 5Dh remote unexpectedly stopped sending data
- 5Eh other FAX machine jammed (no data sent)
- 5Fh remote took too long to send fax scan line
- 63h can't get through to remote unit
- 64h user canceled event
- Class 05h --- application-specific (v1.2+)
- ---Intel FAXPOP.EXE
- Subcode 00h tried to send while in graphics mode
- 01h insufficient disk space
- 02h internal buffer overflow
- Class 06h --- CAS implementation-specific (v1.2+)
- ----------2FCB02-----------------------------
- INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
- AX = CB02h
- Return: AX >= 0: event handle of aborted event
- < 0: error code (see AX=CB01h)
- Note: termination could take up to 30 seconds
- SeeAlso: AX=CB08h,AX=CB10h
- ----------2FCB05-----------------------------
- INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
- AX = CB05h
- CX = status of events to find
- 0000h successful completion
- 0001h waiting to be processed
- 0002h number has been dialed
- 0003h connection established, sending
- 0004h connection established, receiving
- 0005h event aborted
- FFFFh find any event, regardless of status
- other negative values, match error code
- DH = direction
- 00h chronological order, earliest to latest
- 01h reverse chronological order, latest to earliest
- DL = queue to search
- 00h task queue
- 01h receive queue
- 02h log queue
- Return: AX = 0000h successful
- BX = event handle for found event
- < 0 error code (see AX=CB01h)
- SeeAlso: AX=CB06h,AX=CB07h
- ----------2FCB06-----------------------------
- INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
- AX = CB06h
- DL = queue to search
- 00h task queue
- 01h receive queue
- 02h log queue
- Return: AX = 0000h successful
- BX = event handle for found event
- < 0 error code (see AX=CB01h)
- Note: direction of search is same as preceding FIND FIRST call
- SeeAlso: AX=CB05h
- ----------2FCB07-----------------------------
- INT 2F - Communicating Applications Specification - OPEN FILE
- AX = CB07h
- BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
- CX = receive file number (ignored for task queue and log queue)
- 0000h open receive control file
- N open Nth received data file
- DL = queue
- 00h task queue
- 01h receive queue control file or received file, as given by CX
- 02h log queue
- 03h group file in task queue (v1.2+)
- 04h group file in log queue (v1.2+)
- Return: AX = 0000h successful
- BX = DOS file handle for requested file
- < 0 error code (see AX=CB01h)
- Note: the returned file handle has been opened in read-only mode and should
- be closed with INT 21/AH=3Eh after use
- SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
- ----------2FCB08-----------------------------
- INT 2F - Communicating Applications Specification - DELETE FILE
- AX = CB08h
- BX = event handle
- CX = receive file number
- 0000h delete ALL received files and receive control file
- N delete Nth received file
- DL = queue
- 00h delete control file in task queue and corresponding group file
- if it exists
- 01h delete file in receive queue, as given by CX
- 02h delete control file in log queue (individual deletions not
- recommended, to maintain integrity of log) and corresponding
- group file if it exists
- Return: AX = 0000h successful
- < 0 error code (see AX=CB01h)\
- SeeAlso: AX=CB02h,AX=CB09h
- ----------2FCB09-----------------------------
- INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
- AX = CB09h
- DL = queue
- 00h delete all control files in task queue, including all group
- files
- 01h delete all files in receive queue
- 02h delete all control files in log queue, including all group
- files
- Return: AX = 0000h successful
- < 0 error code (see AX=CB01h)
- SeeAlso: AX=CB08h
- ----------2FCB0A-----------------------------
- INT 2F - Communicating Applications Specification - GET EVENT DATE
- AX = CB0Ah
- BX = event handle
- DL = queue
- 00h task queue
- 01h receive queue
- 02h log queue
- Return: AX = 0000h successful
- CX = year
- DH = month
- DL = day
- < 0 error code (see AX=CB01h)
- SeeAlso: AX=CB0Bh,AX=CB0Ch
- ----------2FCB0B-----------------------------
- INT 2F - Communicating Applications Specification - SET TASK DATE
- AX = CB0Bh
- BX = event handle (task event only)
- CX = year
- DH = month
- DL = day
- Return: AX = 0000h successful
- < 0 error code (see AX=CB01h)
- Note: setting a task's date and time to before the current date and time
- causes it to execute immediately
- SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
- ----------2FCB0C-----------------------------
- INT 2F - Communicating Applications Specification - GET EVENT TIME
- AX = CB0Ch
- BX = event handle
- DL = queue
- 00h task queue
- 01h receive queue
- 02h log queue
- Return: AX = 0000h successful
- CH = hour
- CL = minute
- DH = second
- DL = 00h
- < 0 error code (see AX=CB01h)
- SeeAlso: AX=CB0Ah,AX=CB0Dh
- ----------2FCB0D-----------------------------
- INT 2F - Communicating Applications Specification - SET TASK TIME
- AX = CB0Dh
- BX = event handle (task events only)
- CH = hour
- CL = minute
- DH = second
- DL unused
- Return: AX = 0000h successful
- < 0 error code (see AX=CB01h)
- Note: setting a task's date and time to before the current date and time
- causes it to execute immediately
- SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
- ----------2FCB0E-----------------------------
- INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
- AX = CB0Eh
- DS:DX -> 256-byte buffer
- Return: AX = 0000h successful
- buffer filled
- < 0 error code (see AX=CB01h)
-
- Format of external data block:
- Offset Size Description
- 00h BYTE CAS major version
- 01h BYTE CAS minor version
- 02h 68 BYTEs ASCIZ path to directory containing CAS software, ends in slash
- 46h 13 BYTEs ASCIZ name of current phonebook (in CAS directory)
- 53h 13 BYTEs ASCIZ name of current logo file (in CAS directory)
- 60h 32 BYTEs ASCIZ default sender name
- 80h 21 BYTEs ASCIZ CCITT identification of fax device
- 95h 107 BYTEs reserved
- ----------2FCB0F-----------------------------
- INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
- AX = CB0Fh
- DL = subfunction
- 00h get current autoreceive state
- 01h set autoreceive state
- DH = number of rings before answer, 00h = never
- Return: AX = 0000h autoreceive disabled
- = N number of rings before answer
- < 0 error code (see AX=CB01h)
- ----------2FCB10-----------------------------
- INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
- AX = CB10h
- DS:DX -> 512-byte buffer
- Return: AX = 0000h successful
- BX = event handle of current event or negative error code if
- no current event
- buffer filled
- < 0 error code (see AX=CB01h)
- SeeAlso: AX=CB02h,AX=CB0Dh
-
- Format of status area:
- Offset Size Description
- 00h BYTE event type
- 00h send
- 01h receive
- 02h polled send
- 03h polled receive
- 04h to 7Fh reserved
- FFh serious hardware error
- 01h BYTE transfer type
- 00h 200x200 dpi, FAX mode
- 01h 100x200 dpi, FAX mode
- 02h file transfer mode
- 03h to 7Fh reserved
- 02h WORD event status
- 0000h completed successfully
- 0001h waiting
- 0002h number dialed
- 0003h connected, sending
- 0004h connected, receiving
- 0005h aborted
- 0006h to 007Fh reserved
- 0080h to 7FFFh application-specific events
- 8000h to FFFFh error codes
- 04h WORD event time (packed DOS time format, see INT 21/AX=5700h)
- 06h WORD event date (packed DOS date format, see INT 21/AX=5700h)
- 08h WORD number of files to transfer, max 7FFFh
- 0Ah WORD offset of file transfer record
- 0Ch 47 BYTEs ASCIZ phone number to call
- 3Bh 64 BYTEs ASCIZ application-specific tag string
- 7Bh BYTE reserved (00h)
- 7Ch BYTE connect time, seconds
- 7Dh BYTE connect time, minutes
- 7Eh BYTE connect time, hours
- 7Fh DWORD total number of pages in all files
- 83h DWORD pages already transmitted
- 87h WORD number of files already transmitted
- 89h BYTE cover page flag
- 00h don't transmit cover page
- 01h transmit cover page
- 02h to 7Fh reserved
- 8Ah WORD total number of transmission errors
- 8Ch 78 BYTEs reserved (zeros)
- DAh 21 BYTEs ASCIZ remote FAX's CCITT identification
- EFH 32 BYTEs ASCIZ destination name
- 10Fh 32 BYTEs ASCIZ sender name
- 12Fh 80 BYTEs filename of PCX logo file (max 1780x800 pixels)
- 17Fh 128 BYTEs file transfer record for current event (see below)
-
- Format of file transfer record:
- Offset Size Description
- 00h BYTE file type (ignored unless FAX)
- 00h ASCII
- 01h PCX
- 02h DCX
- 03h to 7Fh reserved
- 01h BYTE text size for ASCII FAX file
- 00h = 80 columns by 66 lines (11 inches)
- 01h = 132 columns by 88 lines (11 inches)
- 02h to 7Fh reserved
- 02h BYTE status of file
- 00h untouched
- 01h opened
- 02h moved
- 03h deleted
- 04h not yet received
- 05h to 7Fh reserved
- 03h DWORD bytes already transmitted
- 07h DWORD file size in bytes
- 0Bh WORD pages alread transmitted
- 0Dh WORD number of pages in file
- 0Fh 80 BYTEs ASCIZ filename
- 5Fh BYTE 1/8 inch page length
- if page length below set to 01h through 7Fh, this value
- specifies additional 1/8 inch increments to page length
- 60h BYTE page length
- 00h = 11 inches
- 01h to 7Fh = page length is this number of inches plus value of
- 1/8 inch field above
- 80h to FEh reserved
- FFh = ASCII pages ending with formfeed
- 61h 31 BYTEs reserved (zeros)
- ----------2FCB11-----------------------------
- INT 2F - Communicating Applications Specification - GET QUEUE STATUS
- AX = CB11h
- DL = queue to get status of
- 00h task queue
- 01h receive queue
- 02h log queue
- 03h send events (v1.2+)
- 04h receive events (v1.2+)
- Return: AX >= 0 total number of changes made to queue, modulo 32768
- BX = number of control files currently in queue
- CX = number of received files (zero for task and log queues)
- AX < 0 error code (see AX=CB01h)
- SeeAlso: AX=CB12h
- ----------2FCB11DL03-------------------------
- INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
- AX = CB11h
- DL = 03h
- Return: AX = number of successful sends since resident manager started
- BX = number of unsuccessful sends, including warnings
- SeeAlso: AX=CB11h/DL=04h
- ----------2FCB11DL04-------------------------
- INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
- AX = CB11h
- DL = 04h
- Return: AX = number of received file events since resident manager started
- BX = number of received FAX events
- SeeAlso: AX=CB11h/DL=03h
- ----------2FCB12-----------------------------
- INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
- AX = CB12h
- DS:DX -> 128-byte status buffer
- Return: AX = 0000h successful
- buffer filled with hardware-dependent status information
- < 0 error code (see AX=CB01h)
- SeeAlso: AX=CB10h,AX=CB11h
-
- Format of status buffer for Intel Connection CoProcessor:
- Offset Size Description
- 00h BYTE bit flags
- bit 7: hardware busy sending or receiving
- bit 6: last page of data
- bit 5: no data on current page
- bit 4: retransmit request for current page being transmitted
- bit 3: NSF mode active
- bits 2-0: reserved
- 01h BYTE number of kilobytes of free buffer space
- 02h BYTE page buffer status
- bit 7: Connection CoProcessor has documents to send
- bits 6-0: number of pages in buffer
- 03h BYTE number of retries left for dialing number
- 04h BYTE page number to retransmit
- 05h BYTE communications status
- bit 7: originating call
- bit 6: FAX message to be sent
- bit 5: on line
- bit 4: ring detected and receive enabled
- bit 3: buffer dumped on receive
- bits 2-0: hardware sequence state
- 000 idle
- 001 dial
- 010 answer
- 011 transmit
- 100 receive
- 101 pre-message
- 110 post-message
- 111 disconnect
- 06h BYTE baud rate
- bit 7: reserved
- bits 6-4: baud rate
- 000 = 300 baud (V.21 SDLC or HDLC mode)
- 100 = 2400 baud (V.27 ter)
- 101 = 4800 baud (V.27 ter)
- 110 = 7200 baud (V.29)
- 111 = 9600 baud (V.29)
- bits 3-0: reserved, should be 0110
- 07h 3 BYTEs reserved
- 0Ah BYTE hardware status
- bit 7: modem option installed
- bit 6: Connection CoProcessor has control of DAA (not latched)
- bit 5: on line (not latched)
- bit 4: ring detected (not latched)
- bit 3: data in command buffer (not latched)
- bit 2: set if using DMA channel 1, clear if using DMA channel 3
- bit 1: line length compensation bit 1 set (not latched)
- bit 0: line length compensation bit 0 set (not latched)
- 0Bh BYTE switch states
- bit 7: reserved
- bit 6: unused
- bit 5: spare switch open
- bit 4: FAX ADR1 switch open
- bit 3: FAX ADR0 switch open
- bit 2: alternate interrupt switch open
- bit 1: COM SEL 1 switch open
- bit 0: COM SEL 0 switch open
- Note: valid combinations of bits 0-2 are
- 000 COM2 IRQ3 IObase 2F8h
- 001 COM1 IRQ4 IObase 3F8h
- 010 COM4 IRQ3 IObase 2E8h
- 011 COM3 IRQ4 IObase 3E8h
- 110 COM4 IRQ2 IObase 2E8h
- 111 COM3 IRQ5 IObase 3E8h
- 0Ch BYTE bit flags
- bit 7: reserved
- bit 6: auxiliary relay forced ON
- bit 5: modem select relay forced ON
- bit 4: offhook relay forced ON
- bit 3: 9600 bps enabled
- bit 2: 7200 bps enabled
- bit 1: 4800 bps enabled
- bit 0: 2400 bps enabled
- 0Dh BYTE reserved
- 0Eh WORD error count (only valid while busy, reset when idle)
- 10h DWORD size of nonstandard format (NSF) file in bytes
- 14h BYTE 'A' if Connection CoProcessor board present
- 15h 9 BYTEs reserved
- 1Eh 21 BYTEs ASCIZ CCITT identification
- 33h 77 BYTEs reserved
-
- Format of status buffer for Intel SatisFAXtion board:
- Offset Size Description
- 00h BYTE connection status flags
- bit 7: busy in T.30 CCITT fax protocol
- bit 6: data on current page/file (only used for block xfers)
- bit 5: retransmission of last page requested
- bit 4: in file transfer mode
- bit 3: data in buffer
- bit 2: data buffer dumped on receive
- bit 1: 200x100 dpi resolution instead of 200x200 dpi
- bit 0: data modem in use, FAX image modem not available
- 01h BYTE board state
- bit 7: reserved
- bit 6: handset jack active, data and FAX modems not available
- bits 5-3: current bit rate
- 000 300 bps (V.21 HDLC)
- 100 2400 bps (V.27 ter)
- 101 4800 bps (V.27 ter)
- 110 7200 bps (V.29)
- 111 9600 bps (V.29)
- bits 2-0: T.30 CCITT protocol state
- 000 idle
- 001 dialing
- 010 answering
- 011 transmitting
- 100 receiving
- 101 pre-message
- 110 post-message
- 111 disconnect
- 02h BYTE number of KB free in buffer
- 03h BYTE number of pages or files in buffer
- 04h BYTE number of redials remaining on current number
- 05h BYTE FAX page number to retransmit
- 06h BYTE current page/file in block transfer
- 07h BYTE number of rings received (only if auto-answer enabled)
- 08h WORD error count
- 0Ah DWORD length of file being transferred
- 0Eh 6 BYTEs reserved
- 14h BYTE 'B' is SatisFAXtion board present
- 15h 13 BYTEs ASCIZ transfer agent name
- 22h 5 BYTEs ASCIZ transfer agent version number
- 27h 13 BYTEs ASCIZ resident loader name
- 34h 5 BYTEs ASCIZ resident loader version number
- 39h 21 BYTEs ASCIZ remote CSID
- 4Eh 13 BYTEs ASCIZ resident manager name
- 5Bh 5 BYTEs ASCIZ resident manager version number
- 60h 32 BYTEs reserved
- Note: the Intel Connection CoProcessor and SatisFAXtion may be distinguished
- by examining the byte at offset 14h
- ----------2FCB13DL00-------------------------
- INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
- AX = CB13h
- DL = 00h
- Return: AX = 0040h in progress
- >= 0 passed
- < 0 hardware-dependent failure code (see below)
- SeeAlso: AX=CB13h/DL=01h
-
- Intel Connection CoProcessor failure codes:
- bit 3: 9600 bps FAX modem module failed
- bit 2: SDLC chip failed
- bit 1: RAM failed
- bit 0: ROM checksum failed
-
- Intel SatisFAXtion failure codes:
- bit 1: 2400 bps data modem failed
- bit 0: 9600 bps FAX modem failed
- ----------2FCB13DL01-------------------------
- INT 2F - Communicating Applications Specification - START DIAGNOSTICS
- AX = CB13h
- DL = 01h
- Return: AX = 0000h successfully started
- < 0 error code (see AX=CB01h)
- SeeAlso: AX=CB13h/DL=00h
- ----------2FCB14-----------------------------
- INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
- AX = CB14h
- BX = event handle
- CX = receive file number
- 0001h first received file
- N Nth received file
- DS:DX -> ASCIZ string specifying new name for file (must not exist)
- Return: AX = 0000h successful
- < 0 error code (see AX=CB01h)
- ----------2FCB15-----------------------------
- INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
- AX = CB15h
- DS:DX -> variable-length data area (see below)
- Return: AX >= 0 event handle
- < 0 error code (see AX=CB01h)
- SeeAlso: AX=CB01h
-
- Format of data area:
- Offset Size Description
- 00h BYTE transfer type
- 00h = 200x200 dpi, fax mode
- 01h = 100x200 dpi, fax mode
- 02h = file transfer mode
- 03h to 7Fh reserved
- 01h BYTE text size
- 00h = 80 columns
- 01h = 132 columns
- 02h to 7Fh reserved
- 02h WORD time to send (DOS packed time format, see INT 21/AX=5700h)
- 04h WORD date to send (DOS packed date format, see INT 21/AX=5700h)
- 06h 32 BYTEs ASCIZ destination name
- 26h 80 BYTEs ASCIZ name of file to send
- 76h 47 BYTEs ASCIZ phone number to dial
- A5h 64 BYTEs ASCIZ application-specific tag string
- E5h BYTE reserved (00h)
- E6h BYTE cover page
- 00h don't send cover page
- 01h send cover page
- 02h to 7Fh reserved
- E7h 23 BYTEs reserved (zeros)
- FEh variable ASCIZ string containing text of cover page (if cover page flag
- set to 01h)
- ----------2FCB16BX1234-----------------------
- INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
- AX = CB16h
- BX = 1234h
- CX = 5678h
- DX = 9ABCh
- Return: AX = 0000h successful
- < 0 error code
- SeeAlso: AX=CB00h
- ----------2FCB17-----------------------------
- INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
- AX = CB17h
- BX = event handle
- CL = cover page status
- 00h not read
- 01h read by user
- Return: AX = 0000h successful
- < 0 error code
- ----------2FCB80-----------------------------
- INT 2F - Intel SatisFAXtion CASMGR - ???
- AX = CB80h
- ???
- Return: ???
- ----------2FCB81-----------------------------
- INT 2F - Intel SatisFAXtion CASMGR - ???
- AX = CB81h
- ???
- Return: ???
- ----------2FCB82-----------------------------
- INT 2F - Intel SatisFAXtion CASMGR - ???
- AX = CB82h
- ???
- Return: ???
- ----------2FCC--SI5453-----------------------
- INT 2F U - Qualitas Qcach v4.00
- AH = CCh
- SI = 5453h or 7473h
- AL = ???
- DL = 00h or ???
- Return: SI = 7473h
- ???
- ----------2FCD00-----------------------------
- INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
- AX = CD00h
- Return: AL = 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- SeeAlso: AX=CD02h"Image"
- ----------2FCD00-----------------------------
- INT 2F - SWELL.EXE - INSTALLATION CHECK
- AX = CD00h
- Return: AX = 00FFh installed
- BH = major version
- BL = minor version
- Note: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
- process with INT 21/AH=4Bh
- ----------2FCD01-----------------------------
- INT 2F - Intel Image Processing Interface - SET DEVICE NAME
- AX = CD01h
- CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
- Return: AL = 00h successful
- CX:BX -> internal character device name
- = 80h error
- ----------2FCD01-----------------------------
- INT 2F - SWELL.EXE - SUSPEND ONCE
- AX = CD01h
- Return: AX = 0000h
- SeeAlso: AX=CD02h"SWELL"
- ----------2FCD02-----------------------------
- INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
- AX = CD02h
- Return: AL = 00h/01h successful
- BH = major version number (BCD)
- BL = minor version number (BCD)
- = 80h error
- Note: if return AL = 01h, the IPI supports network redirection
- SeeAlso: AX=CD00h"Image"
- ----------2FCD02-----------------------------
- INT 2F - SWELL.EXE - SUSPEND
- AX = CD02h
- Return: AX = 0000h
- SeeAlso: AX=CD03h"SWELL"
- ----------2FCD03-----------------------------
- INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
- AX = CD03h
- BX = scan line
- CX = requested density in dots per inch (300, 600, or 1200)
- Return: AL = 00h succesful
- CX = density at which scan line was mapped
- ES:DI -> start of scan line
- AL = 80h unsuccessful
- = 81h scan line out of range
- = 82h unsupported scan line density
- = 83h out of memory
- SeeAlso: AX=CD04h"Image"
- ----------2FCD03-----------------------------
- INT 2F - SWELL.EXE - ACTIVATE
- AX = CD03h
- Return: AX = 0000h
- SeeAlso: AX=CD02h"SWELL"
- ----------2FCD04-----------------------------
- INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
- AX = CD04h
- CX:BX -> structure (see below)
- Return: AL = 00h successful
- = 80h unsuccessful
- = 81h scan line out of range
- = 82h unsupported scan line density
- = 83h out of memory
- = 84h unrecognized source
- = 85h initialization error
- SeeAlso: AX=CD03h"Image"
-
- Format of structure:
- Offset Size Description
- 00h WORD image source (0 = conventional memory, 1 = expanded memory)
- 02h DWORD pointer to image data
- 06h WORD scan line on which to place
- 08h WORD bit offset from start of scan line at which to place
- 0Ah WORD density of bitmap data (300, 600, or 1200 dpi)
- 0Ch WORD width in bits of data
- 0Eh WORD source logical page number
- 10h WORD source handle (only if source in expanded memory)
- 12h WORD source offset (only if source in expanded memory)
- ----------2FCD04-----------------------------
- INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
- AX = CD04h
- Return: AX = 0000h
- SeeAlso: AX=CD05h"SWELL"
- ----------2FCD05-----------------------------
- INT 2F - Intel Image Processing Interface - PRINT PAGE
- AX = CD05h
- Return: AL = 00h successful
- = 80h unsuccessful
- Note: page image is retained, so multiple calls will print multiple copies of
- the page
- SeeAlso: AX=CD06h"Image"
- ----------2FCD05-----------------------------
- INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
- AX = CD05h
- Return: AX = 0000h
- SeeAlso: AX=CD04h"SWELL"
- ----------2FCD06-----------------------------
- INT 2F - Intel Image Processing Interface - CLEAR PAGE
- AX = CD06h
- Return: AL = 00h successful
- = 80h unsuccessful
- Note: palette is reset to default
- SeeAlso: AX=CD09h"Image"
- ----------2FCD06-----------------------------
- INT 2F - SWELL.EXE - UNINSTALL
- AX = CD06h
- Return: AX = 0000h uninstalled
- = 8002h programs still swapped, not uninstalled
- ----------2FCD07-----------------------------
- INT 2F - Intel Image Processing Interface - reserved
- AX = CD07h
- ----------2FCD07-----------------------------
- INT 2F - SWELL.EXE - GET INFO
- AX = CD07h
- ES:BX -> 32-byte buffer for info
- Return: AX = 0000h successful
- ES:BX buffer filled
- = 8001h buffer wrong size
-
- Format of info buffer:
- Offset Size Description
- 00h WORD 20h (total size of buffer)
- 02h BYTE suspend-once mode active if nonzero
- 03h BYTE 00h active, 01h suspended
- 04h BYTE 00h quiet, 01h verbose
- 05h BYTE "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
- 06h 26 BYTEs unused???
- ----------2FCD08-----------------------------
- INT 2F - Intel Image Processing Interface - SCREEN IMAGE
- AX = CD08h
- CX:BX -> structure (see below)
- Return: AL = 00h successful
- = 80h unsuccessful
- = 81h scan line out of range
- = 82h unsupported scan line density
- = 83h out of memory
- = 84h unrecognized source
- = 85h initialization error
- SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
-
- Format of structure:
- Offset Size Description
- 00h WORD image source (0 = conventional memory, 1 = expanded memory)
- 02h DWORD pointer to image data
- 06h WORD horizontal position on paper of left edge (in 1200 dpi units)
- 08h WORD vertical position on paper of top edge (in 1200 dpi units)
- 0Ah WORD left cropping (currently must be zero)
- 0Ch WORD top cropping (currently must be zero)
- 0Eh WORD width (currently must be 8000h)
- 10h WORD height (currently must be 8000h)
- 12h WORD horizontal size of image in 1200 dpi units
- 14h WORD vertical size of image in 1200 dpi units
- 16h WORD aspect ratio (currently reserved)
- 18h WORD initialization flag (if 01h, initialization is performed)
- 1Ah WORD pixels per line of source data
- 1Ch WORD number of scan lines in source data
- 1Eh WORD number of scan lines in packet
- 20h WORD bits per pixel (1,2,4,6, or 8)
- 22h WORD pixels per byte (1,2,4, or 8)
- 24h WORD compression type (currently only 00h [uncompressed] supported)
- 26h WORD source page number (if in expanded memory)
- 28h WORD source handle (if in expanded memory)
- 2Ah WORD source offset (if in expanded memory)
- ----------2FCD08-----------------------------
- INT 2F - SWELL.EXE - UNUSED
- AX = CD08h
- Return: AX = FFFFh (error)
- ----------2FCD09-----------------------------
- INT 2F - Intel Image Processing Interface - LOAD SCREEN
- AX = CD09h
- CX:BX -> structure (see below)
- Return: AL = 00h successful
- = 80h unsuccessful
- SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
-
- Format of structure:
- Offset Size Description
- 00h BYTE style
- 44h ('D') diamond style
- 4Ch ('L') line style
- 01h BYTE reserved (00h)
- 02h WORD frequency in lines per inch [sic]
- currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
- 04h WORD screen angle in degrees (-360 to 360)
- currently coerced to nearest of -45, 0, 45, or 90
- ----------2FCD09-----------------------------
- INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
- AX = CD09h
- Return: AX = 0000h
- SeeAlso: AX=CD0Ah"SWELL"
- ----------2FCD0A-----------------------------
- INT 2F - Intel Image Processing Interface - LOAD PALETTE
- AX = CD0Ah
- CX:BX -> palette structure (see below)
- Return: AL = 00h successful
- = 80h unsuccessful
- SeeAlso: AX=CD09h"Image Processing"
-
- Format of palette structure:
- Offset Size Description
- 00h BYTE bits per pixel for which palette is to be used (1,2,4,6, or 8)
- 01h 2**N palette translation values, one per possible pixel value
- ----------2FCD0A-----------------------------
- INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
- AX = CD0Ah
- Return: AX = 0000h
- SeeAlso: AX=CD09h"SWELL"
- ----------2FD000-----------------------------
- INT 2F - MDEBUG display driver - GET DRIVER STATUS
- AX = D000h
- Return: CF set on error
- all other registers must be unchanged)
- CF clear if successful
- AL = FFh
- AH = driver semaphor
- 00h driver is not active
- 01h driver is active
- BX = CS of the driver
- CX = driver version (CH = major, CL = minor, must be >= 013Ch)
- DL = buffer semaphor
- 00h driver is not pending
- 01h driver is pending between functions 02h and 03h
- DH = show semaphor
- 00h driver is not pending
- 01h driver is pending between functions 04h and 05h
- Notes: MDEBUG is a shareware memory-resident debugging tool by Bernd Schemmer,
- including a memory monitor, an interpreter and a disassembler
- MDEBUG can use any two consecutive multiplex numbers between C0h and
- FFh; the default is D0h for the display driver and D1h for the
- command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
- numbers used)
- this function MUST be reentrant, as MDEBUG calls it after every popup
- before any other actions. The handler should not change any
- registers if the display is in an unsupported mode or in a mode
- MDEBUG supports itself, e.g. a normal text mode with at least 80x25
- characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
- not call any of the other functions for this popup session.
- MDEBUG will not call the other functions if the returned version is
- less than the actual version of MDEBUG.
- if the driver is reentrant, DL and DH should be 00h
- SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
- ----------2FD000-----------------------------
- INT 2F - ZWmous - INSTALLATION CHECK
- AX = D000h
- Return: AX = 5A57h ("ZW") if installed
- BX = segment of resident code
- Note: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
- with many non-mouse applications by entering the letter under the
- mouse cursor on button presses
- SeeAlso: INT 33/AX=0003h
- ----------2FD001-----------------------------
- INT 2F - MDEBUG display driver - INITIALIZE DRIVER
- AX = D001h
- Return: CF set on error
- AL = driver semaphor
- AH = buffer semaphor
- Notes: MDEBUG calls this function after every succesful call of the function
- 00h. The function should reset all internal data and the status of
- the driver. If this function returns an error, MDEBUG will not call
- the other functions in this popup session.
- MDEBUG can use any two consecutive multiplex numbers between C0h and
- FFh; the default is D0h for the display driver and D1h for the
- command driver
- SeeAlso: AX=D000h
- ----------2FD002-----------------------------
- INT 2F - MDEBUG display driver - SAVE GRAPHIC DATA
- AX = D002h
- Return: CF set on error
- CF clear if successful
- display memory saved and display switched to one of the text modes
- 02h, 03h or 07h.
- Note: MDEBUG calls this function only once every popup session before
- displaying its windows.
- SeeAlso: AX=D000h,AX=D003h
- ----------2FD003-----------------------------
- INT 2F - MDEBUG display driver - RESTORE GRAPHIC DATA
- AX = D003h
- Return: CF set on error
- CF clear if successful
- display restored to the mode it was in before calling AX=D002h and
- the display memory is restored
- Note: MDEBUG calls this function only once every popup session just before
- it exits to normal DOS.
- SeeAlso: AX=D000h,AX=D002h
- ----------2FD004-----------------------------
- INT 2F - MDEBUG display driver - SHOW SAVED DATA
- AX = D004h
- Return: CF set on error
- CF clear if successful
- display switched to mode it was in before calling AX=D002h and the
- display memory is restored
- Note: This function needn't save the display memory before changing it.
- SeeAlso: AX=D000h,AX=D005h
- ----------2FD005-----------------------------
- INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
- AX = D005h
- Return: CF set on error
- CF clear if successful
- display restored to mode it was in before calling AX=D004h
- Note: This function needn't save or change the display memory
- SeeAlso: AX=D000h,AX=D004h
- ----------2FD0-------------------------------
- INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
- AH = D0h
- AL = 06h-7Fh
- Note: these functions are reserved for future use
- ----------2FD0-------------------------------
- INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
- AH = D0h
- AL = 80h-FFh
- Note: these functions numbers are reserved for user defined features (e.g.
- communication between the transient und resident parts of the driver)
- ----------2FD100-----------------------------
- INT 2F - MDEBUG command driver - GET STATUS
- AX = D100h
- BX = version of MDEBUG (BH = major, BL = minor)
- CX = command driver counter
- ---v1.60+---
- DS:SI -> MDEBUG identification table (see below)
- ES = segment of display memory used by MDEBUG
- DI = size of video mode used by MDEBUG
- (high byte = lines, low byte = columns)
- Return: DL = FFh
- BX = version number of the driver if it is less than the version in BX,
- else unchanged
- CX incremented
- Notes: MDEBUG is a shareware memory-resident debugging tool by Bernd Schemmer,
- including a memory monitor, an interpreter, and a disassembler
- called by MDEBUG at start of popup session; if the version number
- returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
- not call any of the other functions during this popup session
- MDEBUG can use any two consecutive multiplex numbers between C0h and
- FFh; the default is D0h for the display driver and D1h for the
- command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
- actually used)
- this function must end with a far call to the old INT 2F handler after
- changing the registers
- this function MUST be reentrant
- command drivers must also declare the following data at the given
- offsets in the code segment
- 100h 3 BYTEs JMP-command in .COM-files
- 103h BYTE NOP-command (90h)
- 104h 26 BYTEs signature "Kommandotreiber für MDEBUG"
- 11Eh 12 BYTEs name of driver, e.g. "MDHISDRV.COM"
- each driver must have a unique name
- MDEBUG will pass every key and command to the command driver(s) before
- checking for a valid internal command
- SeeAlso: AX=D000h,AX=D101h
-
- Format of MDEBUG identification table:
- Offset Size Description
- -2 WORD entry offset
- 00h WORD CS of MDEBUG
- 02h DWORD old INT 08h vector
- 06h DWORD old INT 09h vector
- 0Ah DWORD address INT 16h routine used by MDEBUG
- 0Eh BYTE length of version string
- 0Fh N BYTEs version string
- ----------2FD101-----------------------------
- INT 2F - MDEBUG command driver - INITIALIZE DRIVER
- AX = D101h
- CX = command driver counter
- Return: DL = FFh if successful
- CX incremented
- else error: all registers unchanged
- Note: this function must end with a far call to the old INT 2F handler after
- changing the registers
- this function must be reentrant
- ----------2FD102-----------------------------
- INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
- AX = D102h
- BL = first character of the interpreter command
- BH = last character of the interpreter command (or blank)
- DS:SI -> parameter for the interpreter command as ASCIZ string
- DS:DI -> MDEBUG data structure (see below)
- Return: AL = FFh
- CF set on error
- AH = error number
- 01h syntax error
- 02h first shell of the command.com is activ
- 03h esc pressed
- 04h break pressed
- 05h DOS is busy
- 06h command ended
- 07h division by zero
- 08h invalid display driver
- 09h invalid command driver
- 0Ah error 8 and 9
- 0Bh unknown error
- 0Ch new error
- DS:SI -> ASCIZ error message (max 30 characters)
- else unknown error
- CF clear if successful
- AH = return code
- 00h continue processing the command line
- 01h leave MDEBUG popup session
- 02h leave MDEBUG popup session and automatically popup again
- if the InDOS flag is zero
- 03h not used (same as 00h)
- 04h not used (same as 00h)
- 05h put new command line into the input buffer,
- DS:SI -> new command line (ASCIZ string, max 66 chars)
- 06h process new command line
- DS:SI -> new command line (ASCIZ string, max 66 chars)
- else unknown status, but continue processing commmand line
- Note: this function must end with a far call to the old INT 2F handler (with
- registers unchanged) if the driver does not support the interpreter
- command in BX. Otherwise, the driver must not chain to the old
- INT 2F.
-
- Format of MDEBUG data structure:
- Offset Size Description
- 00h WORD register SE
- 02h WORD register OF
- 04h WORD register FS
- 06h WORD register FO
- 08h WORD register AX
- 0Ah WORD register BX
- 0Ch WORD register CX
- 0Eh WORD register DX
- 10h WORD register SI
- 12h WORD register DI
- 14h WORD register DS
- 16h WORD register ES
- 18h WORD register BP
- 1Ah WORD register SS
- 1Ch WORD register SP
- 1Eh WORD register FL (flags)
- 20h WORD register R0
- 22h WORD register R1
- 24h WORD register R2
- 26h WORD register R3
- 28h WORD register R4
- 2Ah WORD register R5
- 2Ch WORD register R6
- 2Eh WORD register R7
- 30h WORD register R8
- 32h WORD register CS, return-address
- 34h WORD register IP, return-address
- 36h DWORD saved pointer to data for key <F6> (v1.60)
- saved monitor address (v1.70)
- 3Ah 12 WORDs saved register values on last popup entry (for <F8> key)
- (original register values at popup entry of MDEBUG)
- AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
- 52h 12 WORDs saved register values on last popup exit (for <SHIFT-F8> key)
- AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
- 6Ah DWORD address of the DOS-invars-table
- 6Eh DWORD address of the InDOS flag
- 72h WORD offset of the register which is used for the segment of the
- first monitor window
- 74h WORD offset of the register which is used for the offset of the
- first monitor window
- 76h WORD name of the register which is used for the segment of the
- first monitor segment
- 78h WORD name of the register which is used for the offset of the first
- monitor window
- 7Ah WORD pseudo register 1
- 7Ch WORD pseudo register 2
- ----------2FD103-----------------------------
- INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
- AX = D103h
- BX = key code (like result of an interrupt 16h call)
- CX = 0 -> the cursor is in the ASCII column of the monitor
- CX = 1 -> the cursor is in one of the hex fields of the monitor
- DS:SI -> MDEBUG data structure (see AX=D102h)
- ES:DI -> actual byte in the monitor
- Return: AL = FFh
- AH = return code
- 00h key processed, read next key
- 01h leave MDEBUG popup session
- 02h leave MDEBUG popup session and automatically popup again if DOS
- is not busy
- 03h signal an error (beep)
- 04h driver has redefined the key, proceed with the new key
- BX = new key code
- MDEBUG will not pass the new key to the command driver(s)
- else treat like code 00h
- Note: this function must end with a far call to the old INT 2F handler (with
- registers unchanged) if the driver does not support the key in BX.
- Otherwise, the driver must not chain to the old INT 2F.
- SeeAlso: AX=D104h
- ----------2FD104-----------------------------
- INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
- AX = D104h
- DS:SI -> MDEBUG data structure (see AX=D102h)
- Return: AL = FFh
- AH = return code
- 00h key processed, read next key
- 01h leave MDEBUG popup session
- 02h leave MDEBUG popup session and automactically popup again if
- DOS is not busy
- 03h signal an error (beep)
- 04h driver has redefined the key, proceed with the new key
- BX = new key code
- MDEBUG won't pass the new key to the command driver(s)
- 05h put new command line into the input buffer
- DS:SI -> new command line (ASCIZ string, max 66 chars)
- 06h process new command line
- DS:SI -> new command line (ASCIZ string, max 66 chars)
- else treat like code 00h
- Note: this function must end with a far call to the old INT 2F handler if the
- driver does not support the key in BX. Otherwise, the driver must
- not chain to the old INT 2F.
- SeeAlso: AX=D103h
- ----------2FD1-------------------------------
- INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
- AH = D1h
- AL = 05h-0Ah
- Note: these functions are reserved for future use
- ----------2FD110-----------------------------
- INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
- AX = D110h
- Return: DL = FFh
- ES:BX -> next program in the chain for INT 2F
- CX = code segment of this driver
- DI = offset of driver identification table (see below) (v1.60+)
- Notes: only called by the transient part of the driver
- must be reentrant and the driver must not chain this function to the
- old INT 2F
-
- Format of the driver identification table:
- Offset Size Description
- 00h 26 BYTEs signature "Kommandotreiber für MDEBUG"
- ^- Note: ASCII 129,German U-umlaut
- 27h 12 BYTEs name of driver, e.g. "MDHISDRV.COM"
- each driver must have a unique name
- ----------2FD111-----------------------------
- INT 2F - MDEBUG command driver - START DRIVER
- AX = D111h
- Return: DL = FFh
- Notes: only called by the transient part of the driver to inform the resident
- part that it is installed
- the function must be reentrant and the driver mustn't chain this
- function to the old INT 2F
- SeeAlso: AX=D101h,AX=D112h
- ----------2FD112-----------------------------
- INT 2F - MDEBUG command driver - END DRIVER
- AX = D112h
- Return: DL = FFh
- Notes: only called by the transient part of the driver to inform the resident
- part that it will be released after this function
- the function must be reentrant and the driver mustn't chain this
- function to the old INT 2F
- SeeAlso: AX=D101h,AX=D111h
- ----------2FD1-------------------------------
- INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
- AH = D1h
- AL = 13h-7Fh
- Note: these functions are reserved for future use
- ----------2FD1-------------------------------
- INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
- AH = D1h
- AL = 80h-FFh
- Note: these functions are reserved for user defined features (e.g.
- communication between the transient und resident parts of the driver)
- ----------2FD200BX5144-----------------------
- INT 2F U - Quarterdeck - QEMM/QRAM/VIDRAM/MANIFEST v5.0+ - INSTALLATION CHECK
- AX = D200h
- BX = 5144h ("QD")
- CX = 4D45h ("ME")
- DX = 4D30h ("M0")
- Return: AL = FFh installed
- if BX,CX,DX registers were as specified on entry:
- BX = 4D45h ("ME")
- CX = 4D44h ("MD")
- DX = 5652h ("VR")
- Notes: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
- through FFh, then C0h through D1h
- QEMM and QRAM both responded the same
- for AL <> 0, if the BX/CX/DX values don't match a the identifier of a
- Quarterdeck product, it just chains to the previous INT 2F handler
- ----------2FD201BX4849-----------------------
- INT 2F U - Quarterdeck - GET QD HIMEM PRESENCE
- AX = D201h
- BX = 4849h ("HI")
- CX = 4D45h ("ME")
- DX = 4D51h ("MQ")
- Return: BX = 4F4Bh ("OK")
- ES:DI -> HIMEM entry point
- Notes: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
- through FFh, then C0h through D1h
- SeeAlso: AX=D201h/BX=5145h
- ----------2FD201BX4849-----------------------
- INT 2F U - Quarterdeck - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
- AX = D201h
- BX = 4849h ("HI")
- CX = 5241h ("RA")
- DX = 4D30h ("M0")
- Return: BX = 4F4Bh ("OK")
- CX = segment of start of HIRAM chain
- DX = QEMM/QRAM code segment
- Notes: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
- through FFh, then C0h through D1h
- QEMM and QRAM both responded the same
- the HIRAM memory chain has the same format as the regular DOS 4.0
- memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks
- have the block header program name field set to "UMB"; blocks whose
- "owner" field is set to the QEMM/QRAM code segment returned in DX
- are locked out regions such as video memory and ROMs.
- ----------2FD201BX4D41-----------------------
- INT 2F U - Quarterdeck - MANIFEST v1.0+ - INSTALLATION CHECK
- AX = D201h
- BX = 4D41h ("MA")
- CX = 4E49h ("NI")
- DX = 4645h ("FE")
- Return: BX = 5354h ("ST")
- Note: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
- through FFh, then C0h through D1h
- ----------2FD201BX5145-----------------------
- INT 2F U - Quarterdeck - QEMM v5.0+ - INSTALLATION CHECK
- AX = D201h
- BX = 5145h ("QE")
- CX = 4D4Dh ("MM")
- DX = 3432h ("42")
- Return: BX = 4F4Bh ("OK")
- ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
- Notes: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
- through FFh, then C0h through D1h
- this call is not available under QEMM v6.00 unless Windows3 support
- has been disabled with the NW3 switch to QEMM386.SYS
- SeeAlso: AX=D201h/BX=4849h,INT 67/AH=3Fh
- ----------2FD201BX5649-----------------------
- INT 2F U - Quarterdeck - VIDRAM v5.0+ - INSTALLATION CHECK
- AX = D201h
- BX = 5649h ("VI")
- CX = 4452h ("DR")
- DX = 414dh ("AM")
- Return: BX = 4F4Bh ("OK")
- ES:DI -> VIDRAM entry point
- Note: QEMM/QRAM/VIDRAM/MANIFEST will search for a free AH value from D2h
- through FFh, then C0h through D1h
-
- Call VIDRAM entry point with:
- AH = 00h get status
- Return: AL = VIDRAM state (see below)
- BL = bit 0: ???
- bits 1-7 not used
- BH = flags???
- bit 4: high RAM exists in video area???
- CL = current monitor (01h = mono, 80h = color)
- SI = current top of memory (paragraph)???
- DI = segment of ???
- AH = 01h setup
- AL = VIDRAM state (00h off, 01h no EGA graphics, 02h no graph)
- BL = bit 0: ???
- bits 1-7 not used
- BH = flags???
- CL = monitor (01h = monochrome, 80h = color)
- SI = new top of memory (paragraph)???
- AH = 02h get ???
- Return: ES:DI -> ??? data
- Return: CF set on error
- CF clear if successful
- ----------2FD300BX4562-----------------------
- INT 2F U - TeleReplica - INSTALLATION CHECK
- AX = D300h
- BX = 4562h
- CX = 2745h
- DX = serial port I/O base address??? (03F8h for v3.9)
- Return: SI = segment of resident code
- AX = 251Dh
- BX = DF21h
- CX = F321h
- DX = ???
- ----------2FD3CB-----------------------------
- INT 2F U - LapLink Quick Connect v6 - API
- AX = D3CBh
- CX = function
- 0002h get ???
- Return: BX:AX -> ???
- CL = ???
- CH = ???
- DX = ???
- DI = COM1 I/O port???
- SI = COM2 I/O port???
- 0003h initialization???
- 0004h ???
- 0005h initialization???
- 0006h reset/clear ???
- Return: AX = 0000h
- ES:DI -> next byte after ??? cleared by this call
- 0007h initialization???
- 0008h uninstall
- Return: BX = status
- 0000h successful
- FFFFh incomplete, stub remains in memory
- Return: CX = 534Bh (except function 0002h)
- ----------2FD44D-----------------------------
- INT 2F - 4DOS.COM v2.1+ - API
- AX = D44Dh
- BH = function
- 00h installation check
- Return: AX = 44DDh
- BL = minor version number
- BH = major version number
- CX = PSP segment address for current invocation
- DL = 4DOS shell number (0 for the first (root) shell,
- updated each time a new copy is loaded)
- 01h (internal, v2.1-3.03) terminate current copy of 4DOS
- Return: nothing
- (internal, v4.0) ???
- Return: ES:BX -> data area (see below)
- 02h ???
- DX = ???
- ---v2.1-3.03 only---
- 03h EXEC program
- CX:DX -> EXEC record
- FEh deallocate shell number (passed through to root shell)
- ???
- FFh allocate shell number (passed through to root shell)
- Note: bug in v3.00 will crash system if unrecognized value in BH
- SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
-
- Format of EXEC record:
- Offset Size Description
- 00h WORD offset of ASCIZ program name in same segment as EXEC record
- 02h WORD offset of DOS commandline in same segment as EXEC record
- 04h WORD segment of environment for child process (see INT 21/AH=26h)
-
- Format of 4DOS v4.0 data area:
- Offset Size Description
- 00h 2 BYTEs ???
- 06h WORD XMS handle for swapping
- ???
- ----------2FD44E-----------------------------
- INT 2F - 4DOS v3.0+ - AWAITING USER INPUT
- AX = D44Eh
- ---4DOS v3.01+---
- BX = 0000h 4DOS is ready to display prompt
- = 0001h 4DOS has displayed the prompt, about to accept user input
- Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
- Note: v3.00 only makes the call corresponding to BX=0001h, does not set BX
- SeeAlso: AX=D44Dh
- ----------2FD44FBX0000-----------------------
- INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
- AX = D44Fh
- BX = 0000h
- Return: AX = 44DDh if installed
- SeeAlso: AX=D44Fh/BX=0001h
- ----------2FD44FBX0001-----------------------
- INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
- AX = D44Fh
- BX = 0001h
- CX = number of keystrokes (01h-FFh)
- DS:DX -> keystroke list (one word per keystroke)
- Return: AX = status
- 0000h successful
- nonzero failed
- BX,CX,DX destroyed
- Notes: the keystrokes are the exact values to return from subsequent calls to
- INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
- 0000h causes subfunctions 01h and 11h to indicate an empty
- keyboard buffer
- FFFFh is followed by a word indicating the number of clock
- ticks to delay before the next faked keystroke
- v4.00 KSTACK overwrites any unread keystrokes from the previous
- invocation, and does not range-check CX; it will overwrite memory
- following the resident portion if CX is greater than 100h.
- SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
- ----------2FD600-----------------------------
- INT 2F - HEART.COM - INSTALLATION CHECK
- AX = D600h
- Return: AX = 0303h (two hearts) if installed
- ES:DI -> buffer (see below)
- Note: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
- Once the host program has identified the address of the data area, it
- can change this to indicate safe/critical, alternate colours, etc.
- The entries for the color table are in char/attrib form. Every two
- entries form a pair which is alternated between 68 times a minute.
- The first half of the table is for color videos, the second mono.
- Within each half, the first half is for the safe chars, and the
- second for the critical chars.
-
- Format of buffer:
- Offset Size Description
- 00h 8 WORD Table of colors/attributes (see notes).
- 10h BYTE flags
- bit 0: program is in critical section, so flash double
- exclamation mark
- bit 1: program is in safe code, so flash the heart character
- 11h WORD position of heartbeat on screen, normally 009Eh (last column
- of second line)
- ----------2FD701-----------------------------
- INT 2F - BANYAN VINES v4+ - GET BANV INTERRUPT NUMBER
- AX = D701h
- Return: AX = 0000h installed
- BX = interrupt number (60h to 66h)
- nonzero not present
- Note: if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
- necessary to examine the four bytes preceding the handlers for
- INT 60 through INT 66 for the string "BANV"
- SeeAlso: AX=D702h,AX=D703h,AX=D704h
- ----------2FD702-----------------------------
- INT 2F U - BANYAN VINES v4+ - PCPRINT interface
- AX = D702h
- BX = function
- ???
- Return: ???
- SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
- ----------2FD703-----------------------------
- INT 2F U - BANYAN VINES v4+ - MAIL interface
- AX = D703h
- BX = function
- ???
- Return: ???
- SeeAlso: AX=D702h,AX=D704h
- ----------2FD704-----------------------------
- INT 2F U - BANYAN VINES v4+ - Streettalk Directory Assistance interface
- AX = D704h
- BX = function
- ???
- Return: ???
- SeeAlso: AX=D703h,INT 61/AX=0007h"Banyan"
- ----------2FDA55-----------------------------
- INT 2F U - TRAP.COM - INSTALLATION CHECK
- AX = DA55h
- DL = interrupt number
- DH = ???
- Return: if installed
- AH = interrupt number
- AL = ???
- ES:BX -> ???
- Notes: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
- a separate copy of TRAP is loaded for each interrupt to be traced; thus
- the interrupt number is part of the installation check
- ----------2FDC00-----------------------------
- INT 2F - GOLD.COM - INSTALLATION CHECK
- AX = DC00h
- Return: AL = 00h not installed
- = FFh installed
- Note: GOLD is a TSR by Bob Eager which makes the NumLock key return the code
- for F1; the purpose is to improve Kermit's VTxxx emulation
- ----------2FDC01-----------------------------
- INT 2F - GOLD.COM - GET STATE
- AX = DC01h
- Return: AL = status
- 00h off
- 01h on
- SeeAlso: AX=DC00h,AX=DC02h
- ----------2FDC02-----------------------------
- INT 2F - GOLD.COM - SET STATE
- AX = DC02h
- DL = new state
- 00h off
- 01h on
- Return: AL = 00h (OK)
- SeeAlso: AX=DC01h
- ----------2FDD-------------------------------
- INT 2F - SoftCom programs - API
- AH = DDh
- AL = FEh get info
- Return: ES:BX -> TSR info list (see below)
- AL = program identifier
- BH = function
- FDh get version
- Return: BX = version
- FFh installation check
- Return: AL = FFh if installed
- BX = version
- ES = segment of resident code
- others vary by program
- Return: AL = status
- bit 7 set on error
- AL = 81h unknown function
-
- Format of TSR info list:
- Offset Size Description
- 00h 9 BYTEs blank-padded ASCIZ program name
- 09h BYTE program ID
- 0Ah WORD program's PSP segment
- 0Ch WORD program version (major in high byte)
- 0Eh DWORD pointer to next item in info list or 0000h:0000h
- 12h BYTE number of interrupts hooked
- 13h 5 BYTEs interrupt numbers hooked by program
- 18h 8 BYTEs reserved
- ----------2FDE00BX4445-----------------------
- INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
- AX = DE00h
- BX = 4445h ("DE")
- CX = 5844h ("XD")
- DX = 4931h ("I1")
- Return: AL = FFh if installed (even if other registers do not match)
- if BX,CX, and DX were as specified on entry,
- BX = 4845h ("HE")
- CX = 5245h ("RE")
- DX = 4456h ("DV")
- Notes: AH=DEh is the default XDI multiplex number, but may range from C0h-FFh
- programs should check for XDI starting at DEh to FFh, then C0h to DDh
- the XDI handler should not issue any DOS or BIOS calls, nor should it
- issue DESQview API calls other than those allowed from hardware ints
- ----------2FDE01-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
- AX = DE01h
- BX = driver ID
- other registers as needed by driver
- Notes: XDI drivers should pass this call through to previous handler if ID
- does not match
- DESQview never calls this function
- ----------2FDE01BX5242-----------------------
- INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
- AX = DE01h
- BX = 5242h ("RB")
- CX:DX = program identifier
- 656F7000h ("eop",0) for DVeop
- Return: AX = 5242h ("RB") if installed
- ES:BX -> data or entry point
- CX = version number (CH = major, CL = minor)
-
- Call DVeop entry point with:
- ES:DI -> callback address or 0000h:0000h to remove callback
- Return: AX = status
- 0000h failed (callback table full or attempted to remove non-
- existent callback)
- 0001h successful
- ES:DI -> chaining address
- BX,CX,DX destroyed
- Notes: the callback function is called with a simulated interrupt when the
- DESQview window containing it is closed; it should perform all
- necessary cleanup and then perform a FAR jump to the chaining address
- or an IRET if the chaining address is 0000h:0000h
- if the program wishes to remove itself before the window is closed, it
- should call the DVeop entry point with the previously returned
- chaining address and ignore the returned chaining address.
- ----------2FDE01BX7474-----------------------
- INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
- AX = DE01h
- BX = 7474h
- CL = function
- 00h installation check
- Return: AL = FFh
- 01h get process handle
- DX = keys on Open Window menu (DL = first, DH = second)
- Return: AX = process handle or 0000h if not running
- 02h (v1.3+) set TMAN handle
- DX = TMAN process handle
- 03h (v1.3+) set open keys to ignore on next CL=01h call
- DX = keys on Open Window menu (DL = first, DH = second)
- Return: BX = 4F4Bh ("OK")
- DL destroyed
- Note: DVTXDI is distributed as part of the shareware products DVTree (DOS
- shell/DESQview process manager) and DVTMAN by Mike Weaver
- ----------2FDE01BX7575-----------------------
- INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
- AX = DE01h
- BX = 7575h
- CX = function
- 0000h installation check
- Return: AX = 00FFh if installed
- 0001h turn on notification (currently unused)
- Return: AX = 0001h
- 0002h turn off notification (currently unused)
- Return: AX = 0001h
- 0003h get process information
- Return: AX = status
- 0000h failed
- 0001h successful
- BX = last instantaneous time slice
- in 1/100s (v1.10)
- in 1/18s (v1.11+)
- CX = number of processes
- DX = number of "(starting)" records (v2.00+)
- SI = number of records in process info array
- (v2.00+) (always 15 for v1.x)
- ES:DI -> process info array (see below)
- 0004h get version
- Return: AH = major version
- AL = minor version
- 0005h (v1.10+) get time since DESQview started
- Return: DX:AX = 1/100s since DV start (v1.10)
- DX:AX = 1/18s since DV start (v1.11+)
- 0006h (v1.10+) get number of task switches
- Return: DX:AX = total task switches
- CX = task switches in last instantaneous interval
- Notes: DVSIXDI is part of the DVSI (DESQview System Information) package by
- Daniel J. Bodoh
- for v1.00, function 0003h allocates common memory, which the caller
- must deallocate after reading the process information; only the
- currently used records are placed in the buffer
- for v1.10+, function 0003h merely returns a pointer to the internal
- array of process information; the caller should make a copy of the
- array while inside a critical section (see INT 15/AX=101Bh). Only
- those records with bit 7 of the first byte set are valid.
-
- Format of information for one process (v1.00):
- Offset Size Description
- 00h BYTE flags
- bit 7: process slot is valid
- 01h WORD offset into DESQVIEW.DVO of program's record if started from
- Open Windows menu, else undefined
- 03h WORD Switch Windows window number
- 05h WORD segment of process handle
- 07h WORD number of tasks owned by process
- 09h WORD mapping context of process
- 0Bh DWORD hook for other programs
-
- Format of information for one process (v1.10-v2.00):
- Offset Size Description
- 00h BYTE flags
- bit 7: valid record
- 6: (v2.00+) record is allocated; if bit 7 clear, process
- is "(starting)" and only offsets 01h and 09h are valid
- 5: (v2.00+) this app currently owns the CPU
- 4: reserved (0)
- 3: DESQview system task
- 2: reserved (0)
- 1: task has keyboard (currently unused)
- 0: task swapped out (currently unused)
- 01h WORD Open Window keys
- 03h WORD Switch Windows number
- 05h WORD segment of process handle
- 07h WORD number of tasks for process
- 09h WORD process mapping context
- 0Bh DWORD time process started (relative to start of DESQview)
- 0Fh DWORD time process last got CPU (relative to start of DESQview)
- 13h DWORD time process last gave up CPU (relative to start of DESQview)
- 17h DWORD total CPU time since process started
- 1Bh DWORD CPU time at start of current instantaneous interval
- 1Fh DWORD CPU time in current instantaneous interval
- 23h DWORD hook for other programs
- Note: all times are in 1/100s for v1.10, in 1/18s for v1.11+
- ----------2FDE01BXFFFE-----------------------
- INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
- AX = DE01h
- BX = FFFEh
- CX = 4D47h ("MG")
- DX = 0052h (0,"R")
- Return: AL = FFh
- DX = 584Dh
- ----------2FDE02-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - DV INITIALIZATION COMPLETE
- AX = DE02h
- BX = mapping context of DESQview
- DX = handle of DESQview system task
- SeeAlso: AX=DE03h
- Note: driver should pass this call to previous handler after doing its work
- ----------2FDE03-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - DV TERMINATION
- AX = DE03h
- BX = mapping context of DESQview
- DX = handle of DESQview system task
- SeeAlso: AX=DE02h
- Notes: driver should pass this call to previous handler before doing its work
- DESQview makes this call when it is exiting, but before unhooking any
- interrupt vectors
- ----------2FDE04-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - ADD PROCESS
- AX = DE04h
- BX = mapping context of new process
- DX = handle of process
- Return: nothing
- Notes: XMS XDI handler (installed by default) allocates a 22-byte record
- (see below) from "common" memory to control access to XMS memory
- all DOS, BIOS, and DV API calls are valid in handler
- driver should pass this call to previous handler after processing it
- SeeAlso: AX=DE05h
-
- Format of XMS XDI structure:
- Offset Size Description
- 00h DWORD pointer to 10-byte record???
- 04h DWORD pointer to next XMS XDI structure
- 08h WORD mapping context
- 0Ah BYTE ???
- 0Bh 5 BYTEs XMS entry point to return for INT 2F/AX=4310h
- (FAR jump to next field)
- 10h 6 BYTEs FAR handler for XMS driver entry point
- (consists of a FAR CALL followed by RETF)
- ----------2FDE05-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - REMOVE PROCESS
- AX = DE05h
- BX = mapping context of process
- DX = handle of last task in process
- Return: nothing
- Notes: XMS XDI handler releases the structure allocated by AX=DE04h
- driver should pass this call to previous handler before processing it
- all DOS, BIOS, and DV API calls except those generating a task switch
- are valid in handler
- SeeAlso: AX=DE04h
- ----------2FDE06-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - CREATE TASK
- AX = DE06h
- BX = mapping context of process containing task
- DX = handle of new task
- Notes: driver should pass this call to previous handler after processing it
- all DOS, BIOS, and DV API calls are valid in handler
- ----------2FDE07-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - TERMINATE TASK
- AX = DE07h
- BX = mapping context of process containing task
- DX = handle of task
- Notes: driver should pass this call to previous handler before processing it
- all DOS, BIOS, and DV API calls except those generating a task switch
- are valid in handler
- ----------2FDE08-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - SAVE STATE
- AX = DE08h
- BX = mapping context of task being switched from
- DX = handle of task being switched from
- Notes: invoked prior to task swap, interrupts, etc
- driver should pass this call to previous handler after processing it
- ----------2FDE09-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - RESTORE STATE
- AX = DE09h
- BX = mapping context of task being switched to
- DX = handle of task being switched to
- Notes: state is restored except for interrupts
- driver should pass this call to previous handler before processing it
- ----------2FDE0A-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - CHANGE KEYBOARD FOCUS
- AX = DE0Ah
- BX = mapping context of task receiving focus
- DX = handle of running task
- Notes: driver should pass this call to previous handler before processing it
- this call often occurs inside a keyboard interrupt
- ----------2FDE0B-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - DVP PROCESSING COMPLETE
- AX = DE0Bh
- BX = mapping context of DESQview system task
- CX = number of system memory paragraphs required for the use of all
- XDI drivers (DV will add this to system memory in DVP buffer)
- DX = handle of DESQview system task
- SI = mapping context of new process if it starts
- ES:DI -> DVP buffer
- Return: CX incremented as needed
- Notes: once DV invokes this function, the DVP buffer contents may be changed
- driver should pass this call to previous handler before processing it
- ----------2FDE0C-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - SWAP OUT PROCESS
- AX = DE0Ch
- BX = mapping context of task being swapped out
- DX = handle of DESQview system task
- Note: driver should pass this call to previous handler after processing it
- ----------2FDE0D-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - SWAP IN PROCESS
- AX = DE0Dh
- BX = mapping context of process just swapped in
- DX = handle of DESQview system task
- Note: driver should pass this call to previous handler before processing it
- ----------2FDE0E-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - DVP START FAILED
- AX = DE0Eh
- BX = mapping context of DESQview system task
- DX = handle of DESQview system task
- SI = mapping context of failed process (same as for call to AX=DE0Bh)
- Note: driver should pass this call to previous handler after processing it
- ----------2FDF--BX4448-----------------------
- INT 2F U - HyperDisk v4.20+ - INSTALLATION CHECK
- AH = DFh
- BX = 4448h ('DH')
- Return: AL = FFh if installed
- CX = 5948h ('YH')
- BX:DX -> ??? in resident portion if BX=4448h on entry
- Note: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
- SeeAlso: INT 13/AX=8EEDh
- ----------2FE300-----------------------------
- INT 2F - ANARKEY.COM - INSTALLATION CHECK
- AX = E300h
- Return: AL = 00h not installed
- FEh if installed but suspended (v3.0+)
- FFh installed
- Notes: ANARKEY.COM is a commandline recall program by Steven Calwas
- E3h is the default function number, but can be set to any value from
- C0h to FFh
- SeeAlso: AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h,AX=E307h
- ----------2FE301-----------------------------
- INT 2F U - ANARKEY.COM v2+ - GET ???
- AX = E301h
- Return: DX:BX -> ???
- SeeAlso: AX=E300h
-
- Format of returned data structure for ANARKEY v2.0:
- Offset Size Description
- -7 7 BYTEs signature ('ANARKEY')
- 00h WORD ??? (I see 0001h in v2.0)
- 02h WORD ??? (I see 0001h in v2.0)
- 04h WORD ??? (I see 0 in v2.0)
- 06h WORD PSP segment of next program loaded
-
- Format of returned data structure for ANARKEY v3+:
- Offset Size Description
- -1 BYTE multiplex number
- 00h WORD ??? (I see 0001h in v3.0-4.0)
- 02h WORD ??? (I see 0001h in v3.0-4.0)
- 04h BYTE ??? (I see 0 in v3.0-4.0)
- 05h WORD PSP segment of next program loaded
- ----------2FE302-----------------------------
- INT 2F U - ANARKEY.COM v3+ - ???
- AX = E302h
- BL = ???
- Return: ???
- SeeAlso: AX=E300h
- ----------2FE303-----------------------------
- INT 2F U - ANARKEY.COM v3+ - ANARKMD API
- AX = E303h
- BL = function
- 01h toggle insert mode
- 02h display contents of history buffer
- 03h write history buffer to file
- ES:DX -> file name
- 04h clear history buffer
- 05h undefine all aliases
- 06h show aliases
- 07h list programs using Unix switchar
- 08h jump to bottom of history buffer
- 09h (v4.0) add string to history buffer
- ES:DX -> ASCIZ string
- 0Ah (v4.0) ???
- ES:DX -> ???
- 0Bh (v4.0) copy string to edit buffer for use as next input line
- ES:DX -> ASCIZ string
- 0Ch (v4.0) ???
- 0Dh (v4.0) copy ??? to ???
- 0Eh (v4.0) ???
- 0Fh (v4.0) ???
- 10h (v4.0) set ??? flag
- 11h (v4.0) display error message about running in EMS under Windows
- Return: ???
- SeeAlso: AX=E300h
- ----------2FE304-----------------------------
- INT 2F U - ANARKEY.COM v2+ - ???
- AX = E304h
- BL = ???
- Return: ???
- SeeAlso: AX=E300h
- ----------2FE305-----------------------------
- INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
- AX = E305h
- BL = new state
- 01h suspended
- 00h enabled
- SeeAlso: AX=E300h
- ----------2FE306-----------------------------
- INT 2F U - ANARKEY.COM v4.0 - GET ???
- AX = E306h
- Return: AX = ???
- SeeAlso: AX=E300h
- ----------2FE307-----------------------------
- INT 2F U - ANARKEY.COM v4.0 - GET ???
- AX = E307h
- Return: AX = ???
- BL = ???
- SeeAlso: AX=E300h
- ----------2FE44D-----------------------------
- INT 2F - NDOS - API
- AX = E44Dh
- Note: as NDOS is a licensed version of 4DOS v3.03, the API is identical to
- that for 4DOS, except that AH=E4h instead of D4h and the installation
- check returns AX=44EEh instead of AX=44DDh
- SeeAlso: AX=D44Dh,AX=E44Eh
- ----------2FE44EBX0000-----------------------
- INT 2F - NDOS - AWAITING USER INPUT
- AX = E44Eh
- BX = 0000h NDOS is ready to display prompt
- = 0001h NDOS has displayed the prompt, about to accept user input
- Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
- SeeAlso: AX=E44Dh
- ----------2FED00-----------------------------
- INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
- AX = ED00h
- BL = DOS extender
- 01h 286dosx v1.3+ (Software Development Kit)
- 02h 286dosx v1.3+ (Run-Time Kit)
- 03h 386dosx v4.0+ (SDK)
- 04h 386dosx v4.0+ (RTK)
- Return: AL = status
- 00h not installed
- FFh installed
- SI = 5048h ("PH")
- DI = 4152h ("AR")
- CH = major version number
- CL = minor version number
- DX = flags
- bit 0: running under DPMI
- 1: running under Phar Lap VMM
- SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
- ----------2FEE00-----------------------------
- INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
- AX = EE00h
- Return: AL = FFh if installed
- Note: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
- ----------2FF000-----------------------------
- INT 2F U - 4MAP - INSTALLATION CHECK
- AX = F000h
- Return: AX = 00FFh
- Notes: returns AX=00FFh for any value of AL not listed here
- 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
- ----------2FF001-----------------------------
- INT 2F U - 4MAP - GET KEY MAPPINGS
- AX = F001h
- Return: ES:BX -> key mappings
- SeeAlso: AX=F000h
- ----------2FF002-----------------------------
- INT 2F U - 4MAP - INSERT CHARACTER INTO ???
- AX = F002h
- BL = character to insert
- Return: AX = status
- 0000h successful
- 0001h buffer full
- SeeAlso: AX=F000h,AX=F003h
- ----------2FF003-----------------------------
- INT 2F U - 4MAP - INSERT CHARACTER INTO ???
- AX = F003h
- BL = character to insert
- Return: AX = status
- 0000h successful
- 0001h buffer full
- SeeAlso: AX=F000h,AX=F002h
- ----------2FF1-------------------------------
- INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
- AH = F1h
- AL <> F1h
- Return: AL = F1h if installed
- Note: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
- popup TSRs to be loaded but swapped out to disk, EMS, or XMS. One
- TSR at a time is brought back into memory at the user's request.
- ----------2FF100-----------------------------
- INT 2F - DOS EXTENDER INSTALLATION CHECK
- AX = F100h
- Return: AL = FFh if DOS extender present
- SI = 444Fh ("DO")
- DI = 5358h ("SX")
- Note: supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
- SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
- ----------2FF700-----------------------------
- INT 2F - AUTOPARK.COM - INSTALLATION CHECK
- AX = F700h
- Return: AL = 00h not installed
- FFh installed
- Note: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
- ----------2FF701-----------------------------
- INT 2F - AUTOPARK.COM - SET PARKING DELAY
- AX = F701h
- BX:CX = 32-bit count of 55ms timer ticks
- ----------2FFB-------------------------------
- INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
- AH = FBh
- ----------2FFB00-----------------------------
- INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
- AX = FB00h
- Return: AX = 00FFh if installed
- Note: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
- SeeAlso: INT 10/AH=38h,INT 14/AX=F0F1h
- ----------2FFB00-----------------------------
- INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
- AX = FB00h
- Return: AX = FFFFh if installed
- BX = version (BCD, BH=major, BL=minor)
- SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
- ----------2FFB01-----------------------------
- INT 2F U - AutoBraille v1.1A - ???
- AX = FB01h
- ???
- Return: ???
- ----------2FFB01-----------------------------
- INT 2F U - Jot-It! v1.50 - GET USER NAME
- AX = FB01h
- Return: DX:BX -> ASCIZ user name
- SeeAlso: AX=FB02h"Jot-It"
- ----------2FFB02-----------------------------
- INT 2F U - AutoBraille v1.1A - ???
- AX = FB02h
- Return: AH = ???
- AL = ???
- ----------2FFB02-----------------------------
- INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
- AX = FB02h
- Return: DX:BX -> ASCIZ name of directory in which messages are stored
- SeeAlso: AX=FB01h"Jot-It"
- ----------2FFB03-----------------------------
- INT 2F U - AutoBraille v1.1A - GET NEXT ???
- AX = FB03h
- Return: AX = ???
- ----------2FFB03-----------------------------
- INT 2F U - Jot-It! v1.50 - UNINSTALL
- AX = FB03h
- Return: resident code removed from memory
- Note: CAUTION: NO checks are performed to ensure that the interrupt vectors
- being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
- SeeAlso: AX=FB00h"Jot-It"
- ----------2FFB-------------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AH = FBh
- AL = 04h-08h
- Return: AX = 0000h
- ----------2FFB-------------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AH = FBh
- AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
- Return: ???
- Note: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
- ----------2FFB-------------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AH = FBh
- AL = 10h-1Fh
- ???
- Return: ???
- ----------2FFB20-----------------------------
- INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
- AX = FB20h
- BL = flags to set
- SeeAlso: AX=FB21h"AutoBraille"
- ----------2FFB21-----------------------------
- INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
- AX = FB21h
- BL = flags to clear
- SeeAlso: AX=FB20h"AutoBraille"
- ----------2FFB22-----------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AX = FB22h
- BL = ???
- Note: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
- ----------2FFB28-----------------------------
- INT 2F U - AutoBraille v1.1A - ???
- AX = FB28h
- BX = ???
- ???
- Return: ???
- SeeAlso: AX=FB29h"AutoBraille"
- ----------2FFB29-----------------------------
- INT 2F U - AutoBraille v1.1A - ???
- AX = FB29h
- BX = ???
- ???
- Return: ???
- SeeAlso: AX=FB28h"AutoBraille"
- ----------2FFB-------------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AH = FBh
- AL = 2Bh-34h
- BX = ???
- ----------2FFB35-----------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AX = FB35h
- BL = ???
- ----------2FFB36-----------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AX = FB36h
- BL = ???
- ----------2FFB37-----------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AX = FB37h
- BL = ???
- Note: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
- ----------2FFB42BX0001-----------------------
- INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
- AX = FB42h
- BX = 0001h
- Return: AX = version number??? (AL=major, AH=minor)
- CX = next-selector increment
- ---BC2.0---
- ES:BX -> 80-byte buffer for ???
- DX = DPMI version
- ---BC3.0---
- BX = ??? (0000h)
- DX = ???
- ES:SI -> list of valid selectors ???
- Notes: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
- as version 1.000, while the version distributed with BC++ 3.0
- identifies itself as version 1.0; the former is 10864 bytes, the
- latter 22180 bytes. The BC2.0 version is a DPMI loader, while
- the BC3.0 version also adds a DPMI host and DOS extender
- the BC++ 2.0 version displays an error message if called with BX
- values other than 0001h-0008h
- ----------2FFB42BX0002-----------------------
- INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
- AX = FB42h
- BX = 0002h
- CX = size in bytes
- DX = bit flags
- bit 2: set to allocate DOS memory, clear for DPMI memory
- SI = selector of descriptor to be modified to access allocated memory
- DI = selector of a second descriptor to be modified
- Return: AX = ??? or 0000h on error
- CX:DX = linear base address of DPMI memory block
- SI:DI = handle for DPMI memory block or FFFFh:FFFFh
- ???
- Note: two segment descriptors may be set if a code and an aliased data
- segment are required; if only one descriptor is needed, SI should
- equal DI on entry
- BUG: when allocating DOS memory, the code computes the linear address by
- multiplying the segment number by 4 rather than shifting by 4
- SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h
- ----------2FFB42BX0002-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
- AX = FB42h
- BX = 0002h
- ES:SI -> memory block info (see below)
- Return: ???
- Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
- as version 1.000, while the version distributed with BC++ 3.0
- identifies itself as version 1.0; the former is 10864 bytes, the
- latter 22180 bytes.
- SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h
-
- Format of memory block info:
- Offset Size Description
- 00h WORD flags
- bit 0: set if data segment rather than code segment
- bit 1: information valid
- bit 2: set if DOS memory block rather than DPMI memory block
- bit 4: ???
- bit 15: set if no LDT selectors for memory block???
- 02h DWORD block size in bytes
- ---DPMI memory block---
- 06h DWORD DPMI memory block handle
- ---DOS memory block---
- 06h WORD real-mode segment of memory block
- 08h WORD selector of memory block
- ---
- 0Ah DWORD linear address of memory
- 0Eh WORD memory operation error code
- 0008h no more free LDT descriptors
- ---if flags bit 0 clear---
- 10h WORD code segment selector for memory block or 0000h or FFFFh
- 12h WORD data alias selector for memory block or 0000h or FFFFh
- ---if flags bit 0 set---
- 10h WORD data segment selector for memory block or 0000h or FFFFh
- 12h WORD unused???
- ----------2FFB42BX0003-----------------------
- INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
- AX = FB42h
- BX = 0003h
- Return: DX:AX = size of largest free block in paragraphs
- 0000h:0000h on error (BC3.0 version only)
- Note: AX and DX are destroyed on error, but no other error indicator is
- returned, under the BC++ 2.0 version of DPMILOAD
- SeeAlso: AX=FB42h/BX=0002h
- ----------2FFB42BX0004-----------------------
- INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
- AX = FB42h
- BX = 0004h
- DS:DX -> ASCIZ filename of protected-mode executable
- Return: CX = selector of ??? or 0000h
- ---BC3.0---
- DX = status (0000h,FFF4h,others???) (see below)
- Note: the filename may also be terminated by a CR rather than a NUL under the
- BC++ 3.0 version of DPMILOAD
-
- Values for status:
- 0000h successful
- 0001h ??? failure
- 0002h invalid selector
- 0004h unknown error
- 0008h no more LDT descriptors available???
- FFDEh unable to set descriptor
- FFDFh unable to get segment base address
- FFE0h ???
- FFF2h invalid parameter value
- FFF4h component of filename too long (name not in 8.3 format)
- FFF5h pathname too long (>79 chars)
- FFF6h ???
- FFF8h ???
- FFF9h index out of range
- FFFAh ???
- FFFCh invalid access to code segment???
- FFFEh ???
- FFFFh general error
- ----------2FFB42BX0005-----------------------
- INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
- AX = FB42h
- BX = 0005h
- CX = selector of DPMILOAD data (see below)
- DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
- Return: DX = status (see AX=FB42h/BX=0004h)
- 0000h successful
- AX:BX -> ??? FAR function (called with two words on top of stk)
- else
- BX destroyed
- SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
-
- Format of DPMILOAD data:
- Offset Size Description
- 00h 12 BYTEs ???
- 0Ch WORD ??? bit flags
- 0Eh 14 BYTEs ???
- 1Ch WORD number of memory control records
- 1Eh 25 BYTEs ???
- 37h BYTE ??? bit flags
- bit 4: data valid???
- 38h 4 BYTEs ???
- 3Ch WORD ???
- 3Eh 12 BYTEs ???
- 46h BYTE ??? counter
- 47h BYTE ???
- 48h BYTE ???
- 49h BYTE ???
- 4Ah WORD ???
- 4Ch 2 BYTEs ???
- 4Eh WORD offset of array of 64-byte memory control records
- 52h WORD offset of name list (see below)
- 54h 4 BYTEs ???
- 58h WORD offset of array of 6-byte objects
- 5Ah 8 BYTEs ???
- 62h 9 BYTEs ASCIZ name for ???
- 6Bh 9 BYTEs ASCIZ name for ???
- ???
-
- Format of name list entry [array]:
- Offset Size Description
- 00h BYTE length of name (00h if end of array)
- 01h N BYTEs name
- N+1 WORD 1-based index into array of unknown 6-byte objects
-
- Format of 6-byte objects:
- Offset Size Description
- 00h BYTE ???
- 01h BYTE ???
- 02h BYTE ???
- 03h BYTE 1-based index of memory control record
- 04h WORD ???
-
- Format of memory control record:
- Offset Size Description
- 00h 20 BYTEs memory block info (see AX=FB42h/BX=0002h)
- 14h 6 BYTEs ???
- 1Ah BYTE ???
- 1Bh 2 BYTEs ???
- 1Dh BYTE ??? bit flags
- 1Eh 14 BYTEs ???
- 2Ch DWORD pointer to ??? memory control record or 0000h:0000h
- 30h DWORD pointer to ??? memory control record or 0000h:0000h
- 34h DWORD pointer to next??? memory control record or 0000h:0000h
- 38h DWORD pointer to prev??? memory control record or 0000h:0000h
- 3Ch 4 BYTEs ???
- Note: the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
- the pointers at offsets 34h and 38h
- ----------2FFB42BX0006-----------------------
- INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
- AX = FB42h
- BX = 0006h
- CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
- DX = 1-based index into array of ??? 6-byte objects
- Return: DX = status (see AX=FB42h/BX=0004h)
- 0000h successful
- AX:BX -> ??? FAR function (called with two words on top of stk)
- else
- BX destroyed
- SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
- ----------2FFB42BX0007-----------------------
- INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0007h
- CX = selector of ???
- Return: ???
- Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
- as version 1.000, while the version distributed with BC++ 3.0
- identifies itself as version 1.0; the former is 10864 bytes, the
- latter 22180 bytes.
- ----------2FFB42BX0007-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0007h
- CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
- ???
- Return: DX = status (see AX=FB42h/BX=0004h)
- 0000h successful
- AX = ???
- ----------2FFB42BX0008-----------------------
- INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
- AX = FB42h
- BX = 0008h
- CX = bit flags
- bit 2: set if DPMI memory, clear if DOS memory
- DX = selector of DOS memory block
- SI:DI = handle of DPMI memory block
- Return: DX = 0000h on error, unchanged if succcessful
- Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
- as version 1.000, while the version distributed with BC++ 3.0
- identifies itself as version 1.0; the former is 10864 bytes, the
- latter 22180 bytes.
- SeeAlso: AX=FB42h/BX=0002h
- ----------2FFB42BX0008-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
- AX = FB42h
- BX = 0008h
- ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
- Return: ???
- SeeAlso: AX=FB42h/BX=0009h
- ----------2FFB42BX0009-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
- AX = FB42h
- BX = 0009h
- ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
- ???
- Return: ???
- SeeAlso: AX=FB42h/BX=0008h"3.0"
- ----------2FFB42BX000A-----------------------
- INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
- AX = FB42h
- BX = 000Ah
- CX = 0001h
- DX = ???
- SI = ???
- Return: after user exits subshell
- Notes: this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
- function is not available in protected mode.
- the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
- version also adds a DPMI host and DOS extender.
- SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
- ----------2FFB42BX000B-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
- AX = FB42h
- BX = 000Bh
- ----------2FFB42BX000C-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
- AX = FB42h
- BX = 000Ch ???
- ES:SI -> memory block info ??? (see AX=FB42h/BX=0002h"3.0")
- Return: DX = status???
- SeeAlso: AX=FB42h/BX=000Fh
- ----------2FFB42BX000D-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
- AX = FB42h
- BX = 000Dh
- CX = number of words to copy from protected-mode to real mode stack
- DL = interrupt number
- DH = flags
- bit 0: reset the interrupt controller and A20 line
- ES:DI -> real-mode call structure (see INT 31/AX=0300h)
- Return: CX = status
- 0000h successful
- 0001h failed
- SeeAlso: INT 31/AX=0300h
- ----------2FFB42BX000E-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
- AX = FB42h
- BX = 000Eh
- DS:DX -> ASCIZ or CR-terminated name of ???
- Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) corresponding to
- name, 0000h on error
- SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
- ----------2FFB42BX000F-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
- AX = FB42h
- BX = 000Fh
- ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
- Return: ???
- SeeAlso: AX=FB42h/BX=000Ch
- ----------2FFB42BX0010-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
- AX = FB42h
- BX = 0010h
- DX = segment number
- Return: CX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- DX = selector number for descriptor
- 0008h failed
- SeeAlso: AX=FB42h/BX=0023h
- ----------2FFB42BX0011-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0011h
- CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
- ???
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- AX:BX -> ??? name
- 0002h invalid selector
- FFFEh ??? error
- ----------2FFB42BX0012-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0012h
- CX = selector for ???
- Return: CX = selector for ???
- ----------2FFB42BX0013-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0013h
- CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
- DX = 1-based index of ???
- Return: CX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- BX = ??? or 0000h
- 0002h invalid selector
- FFF9h ??? error
- ----------2FFB42BX0014-----------------------
- INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0014h ???
- CX = 0001h
- Return: BX = 0000h
- Note: unlike most of the DPMILOAD functions, this call is available only in
- real or V86 mode
- SeeAlso: AX=FB42h/BX=000Ah
- ----------2FFB42BX0015-----------------------
- INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0015h uninstall
- CX = 0001h
- Return: ???
- Note: unlike most of the DPMILOAD functions, this call is available only in
- real or V86 mode
- SeeAlso: AX=FB42h/BX=000Ah
- ----------2FFB42BX0016-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
- AX = FB42h
- BX = 0016h
- CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- CX = ???
- ----------2FFB42BX0017-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0017h
- CX = ???
- DX = ???
- ???
- Return: DX = status (0000h,0001h) (see below)
- ----------2FFB42BX0018-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
- AX = FB42h
- BX = 0018h
- CX = ???
- ----------2FFB42BX0019-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0019h
- CX = selector for ???
- ???
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- CX = selector for ???
- ----------2FFB42BX001A-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 001Ah
- CX = selector for ???
- ???
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- 0004h failed
- CX:BX -> ???
- ----------2FFB42BX001B-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 001Bh
- CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
- DX = offset of ???
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- BX = selector for ???
- CX = selector for ???
- 0002h invalid selector
- ----------2FFB42BX001C-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 001Ch
- ES = selector for DPMILOAD data (see AX=FB42h/BX=0005h)
- CX = 1-based index of ???
- DX = 1-based index of ???
- Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
- ----------2FFB42BX001D-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
- AX = FB42h
- BX = 001Dh
- Return: CX:DX = ???
- ----------2FFB42BX001E-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 001Eh
- CX = ???
- ???
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- FFF7h ??? error
- CX:BX -> ???
- ----------2FFB42BX001F-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
- AX = FB42h
- BX = 001Fh
- DS:DX -> 8-character name of ???
- ???
- Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) for ???
- 0000h on error
- SeeAlso: AX=FB42h/BX=000Eh
- ----------2FFB42BX0020-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
- AX = FB42h
- BX = 0020h
- Return: DX = ??? (always 0000h)
- ----------2FFB42BX0021-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
- AX = FB42h
- BX = 0021h
- CL = exception number (00h-1Fh)
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- AX:BX = selector:offset of handler
- FFF2h unable to get exception handler vector
- SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
- ----------2FFB42BX0022-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
- AX = FB42h
- BX = 0022h
- CL = exception number (00h-1Fh)
- SI:DX = selector:offset of new handler
- Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
- SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
- ----------2FFB42BX0023-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
- AX = FB42h
- BX = 0023h
- CX = selector
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- CX = real-mode segment number
- FFF2h descriptor has invalid base address for real-mode segment
- SeeAlso: AX=FB42h/BX=0010h
- ----------2FFB42BX0024-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
- AX = FB42h
- BX = 0024h
- CL = interrupt number
- Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
- AX:BX = selector:offset of handler
- SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
- ----------2FFB42BX0025-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
- AX = FB42h
- BX = 0025h
- CL = interrupt number
- SI:DX = selector:offset of new handler
- Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
- SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
- ----------2FFB42BX0026-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0026h
- CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
- DX = 1-based index of ???
- ???
- Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
- 0000h successful
- BX = offset of ??? within data structure
- ----------2FFB42BX0027-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
- AX = FB42h
- BX = 0027h
- CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
- DX = offset of ???
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- BX = ???
- ----------2FFB42BX0080-----------------------
- INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
- AX = FB42h
- BX = 0080h
- ???
- Return: AX = ???
- ???
- ----------2FFB42BX0081-----------------------
- INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
- AX = FB42h
- BX = 0081h
- ???
- Return: AX = ???
- ???
- ----------2FFB43-----------------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
- AX = FB43h
- BX = subfunction (at least 0000h-000Eh)
- Notes: this function is only present in protected mode; it does nothing but
- an immediate IRET
- DPMILOAD.EXE itself calls various subfunctions:
- subfunction 0004h is called with CX=selector of ???, DI=selector
- of DPMILOAD data
- subfunction 0008h is called with CX=selector of DPMILOAD data
- ----------2FFB64-----------------------------
- INT 2F U - AutoBraille v1.1A - GET ???
- AX = FB64h
- Return: AX = ??? (0006h seen)
- Note: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
- ----------2FFBA1BX0081-----------------------
- INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
- AX = FBA1h
- BX = 0081h
- ES:DI -> 16-byte buffer
- Return: if installed, first four bytes of ES:DI buffer are "IABH"
- Note: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86. It was
- present only in Borland C++ 2.0; with version 3.0, the DOS extender
- was moved into DPMILOAD.
- SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
- SeeAlso: INT 21/AX=4403h"TKERNEL"
- ----------2FFBA1BX0082-----------------------
- INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
- AX = FBA1h
- BX = 0082h
- ES:DI -> response buffer (see below)
- Return: ES:DI buffer filled
- SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
-
- Format of response buffer:
- Offset Size Description
- 00h 4 BYTEs signature "IABH"
- 04h DWORD pointer to FAR extender entry point
-
- Call entry point with:
- AX = function number
- 0000h initialize???
- STACK: WORD ???
- Return: AX = status???
- STACK unchanged
- 0001h get version???
- Return: AX = 0200h for v2.0.34
- 0002h get ???
- Return: AX = ??? (011Eh or 0182h seen)
- 0003h load protected-mode executable
- STACK: DWORD -> ASCIZ filename of executable
- DWORD ???
- DWORD -> program arguments (counted string plus CR)
- DWORD -> environment for protected-mode executable
- (terminated with two consecutive NULs)
- DWORD -> WORD buffer for ???
- Return: AX = status???
- STACK unchanged
- 0004h get descriptor
- STACK: WORD selector for which to get descriptor
- WORD segment number (when running in real mode)
- DWORD -> buffer for descriptor
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX destroyed???
- STACK unchanged
- 0005h ???
- STACK: WORD selector for ???
- WORD subfunction number???
- 0000h run previously-loaded program???
- 0001h ??? (similar to 0000h)
- 0002h
- 0003h
- 0005h ??? (similar to 0000h and 0001h)
- Return: AX = status???
- STACK unchanged
- 0006h ???
- STACK: WORD ???
- DWORD -> WORD (call) max iterations of ???
- (return) remaining iterations
- Return: AX = ???
- STACK unchanged
- 0007h unused
- Return: AX = 0001h
- 0008h unused
- Return: AX = 0001h
- 0009h copy protected-mode memory into conventional memory
- STACK: WORD selector for source segment
- WORD segment of source if in real mode???
- DWORD offset of source
- WORD number of bytes to copy
- DWORD -> low-memory destination
- Return: AX = status
- STACK unchanged
- 000Ah copy conventional memory into protected-mode memory
- STACK: WORD selector for destination segment
- WORD segment of destination if in real mode???
- DWORD offset of destination
- WORD number of bytes to copy
- DWORD -> low-memory source
- Return: AX = status
- STACK unchanged
- 000Bh get ??? pointers
- STACK: WORD desired pointer
- 0000h get ???
- 0002h get protected-mode CR3
- 0003h get 4K page table buffer pointer
- else Return: DX:AX = FFFFh:FFFFh
- Return: DX:AX = requested pointer
- STACK unchanged
- 000Ch set ??? pointers
- STACK: WORD desired pointer
- 0000h set ???
- 0002h set protected-mode CR3
- 0003h set 4K page table buffer pointer
- else ignore
- DWORD new value for pointer
- Return: STACK unchanged
- 000Dh get ??? pointers
- STACK: WORD desired pointer
- 0000h get ???
- 0001h get ???
- 0002h get ???
- 0003h get ???
- 0004h get ???
- 0005h get ???
- 0006h get ???
- 0007h get ???
- else Return: DX:AX = FFFFh:FFFFh
- Return: DX:AX = desired pointer
- STACK unchanged
- 000Eh set ??? pointer
- STACK: WORD desired pointer
- 0000h set ???
- 0001h set ???
- 0002h set ???
- 0003h set ???
- 0004h set ???
- 0005h set ???
- 0006h set ???
- 0007h set ???
- else Return: DX:AX = FFFFh:FFFFh
- Return: STACK unchanged
- 000Fh get ???
- Return: AX = ??? (seen 0008h)
- 0010h get ???
- Return: AX = ???
- 0011h determine whether selector is valid
- STACK: WORD possible selector
- Return: AX = selector or 0000h if invalid
- STACK unchanged
- 0012h get physical address
- STACK: WORD selector for desired segment
- WORD segment number if in real mode
- DWORD offset within segment
- Return: DX:AX = 32-bit physical address or 00000000h on error
- BX destroyed
- STACK unchanged
- 0013h ???
- Note: normally jumps to code for function 0012h
- 0014h copy protected-mode memory to conventional memory, with ???
- STACK: WORD selector for source segment
- WORD segment of source if in real mode???
- DWORD offset of source
- WORD number of bytes to copy
- DWORD -> low-memory destination
- Return: AX = status???
- STACK unchanged
- 0015h copy conventional memory to protected-mode memory, with ???
- STACK: WORD selector for destination segment
- WORD segment of destination if in real mode???
- DWORD offset of destination
- WORD number of bytes to copy
- DWORD -> low-memory source
- Return: AX = status???
- STACK unchanged
- 0016h set ??? pointer
- STACK: WORD unused
- DWORD -> ??? or 0000h:0000h
- Return: AX = 0000h
- STACK unchanged
- 0017h allocate real-mode procedure???
- STACK: DWORD ASCIZ name of procedure
- DWORD ???
- DWORD address of subroutine to invoke
- Return: AX = status
- 0032h procedure by that name exists
- 0033h no more real-mode procedures available
- DX destroyed
- STACK unchanged
- 0018h unused
- Return: AX = 0001h
- 0019h get parameter block
- Return: DX:AX -> parameter block (format unknown at this time,
- but 92h bytes)
- (preceded by signature "!!PARAM-BLOCK!!")
- 001Ah get ???
- Return: AX = ??? (0148h seen)
- 001Bh free real-mode procedure???
- STACK: DWORD -> ASCIZ name of procedure
- Return: ???
- STACK unchanged
- 001Ch check whether packets from protected mode task pending
- Return: AX = 0001h if packets pending, 0000h if not
- 001Dh set ???
- STACK: DWORD ??? or 0000h:0000h
- Return: AX,BX destroyed
- STACK unchanged
- 001Eh ???
- STACK: WORD ??? (high byte ignored)
- DWORD -> data structure (see below)
- Return: AX,BX,CX,DX destroyed
- data structure updated
- STACK unchanged
- Format of data structure
- Offset Size Description
- 00h 2 BYTEs unused
- 02h WORD ???
- 04h WORD ???
- 06h WORD ???
- 08h 2 BYTEs unused
- 0Ah WORD ???
- 0Ch WORD (call) ???
- (return) offset of this data structure (BUG?)
- 001Fh set ???
- STACK: WORD ??? (set to 0001h if zero)
- Return: AX destroyed
- STACK unchanged
- 0020h ???
- STACK: DWORD -> ??? (8 bytes of data)
- Return: AX = ???
- STACK unchanged
- 0021h ???
- STACK: DWORD -> ??? (8 bytes of data)
- WORD ???
- WORD ???
- Return: AX = ???
- STACK unchanged
- 0022h ???
- STACK: DWORD -> ??? (8 bytes of data)
- DWORD -> 4-byte buffer for results
- Return: AX = ???
- STACK unchanged
- 0023h ???
- STACK: DWORD -> ??? (8 bytes of data)
- Return: AX = ???
- STACK unchanged
- 0024h set ???
- STACK: WORD ???
- Return: AX destroyed
- STACK unchanged
- 0025h get ???
- Return: AX = ??? (value set with func 0024h)
- 0026h BUG: jumps to hyperspace due to fencepost error
- FFFFh set DOS memory management functions
- BX:SI -> FAR routine for allocating DOS memory
- (called with AH=48h,BX=number of paragraphs to alloc;
- returns CF clear, AX=segment of allocated memory, or
- CF set on error)
- CX:DI -> FAR routine for freeing DOS memory
- (called with AH=49h,ES=segment of block to free;
- returns CF set on error,AX=error code)
- Note: each of these pointers normally points at INT 21/RETF
- other Return: AX = 0001h
- Note: BX may be destroyed by any of the API calls
- ----------2FFBA1BX0084-----------------------
- INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
- AX = FBA1h
- BX = 0084h
- ES:DI -> response buffer (see below)
- Return: ES:DI buffer filled
- SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
-
- Format of response buffer:
- Offset Size Description
- 00h 4 BYTEs signature "IABH"
- 04h WORD success indicator
- 0001h failed (INT 2F hooked by another program)
- unchanged if successful
- 06h WORD segment of ???
- 08h WORD segment of ??? memory block to free if nonzero
- 0Ah WORD segment of ??? memory block to free if nonzero
- ----------2FFBFBES0000-----------------------
- INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
- AX = FBFBh
- ES = 0000h
- Return: ES nonzero if installed
- ES:BX -> entry point data structure (see below)
- SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
-
- Format of entry point data structure:
- Offset Size Description
- 00h 3 BYTEs signature "FB "
- 03h BYTE driver major version number???
- 04h DWORD speech driver entry point
- 08h 24 BYTEs ???
- 20h ? BYTEs data buffer for calling speech driver
-
- Call driver entry point with:
- AL = function
- 07h speak a string
- data buffer (see above) contains:
- BYTE length of string
- N BYTEs string to speak
- ----------2FFE00DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
- AX = FE00h
- DI = 4E55h ("NU")
- SI = TSR identifier
- 4346h ("CF") NCACHE-F (v5) / NCACHE (v6.0+)
- 4353h ("CS") NCACHE-S (v5 only)
- 4443h ("DC") DISKREET
- 444Dh ("DM") DISKMON
- 4653h ("FS") FILESAVE (v5) / EP (v6.0+)
- Return: SI = TSR reply
- lowercase version of SI on entry (i.e. SI OR 2020h)
- AH = status
- 00h installed but disabled internally
- 01h installed and enabled
- AL = status
- 00h NCACHE-x or DISKREET installed
- 01h FILESAVE / EP / DISKMON v6 installed
- 45h DISKMON v5 installed
- BX = length of *.INI file (DISKMON and FILESAVE/EP only) (see below)
- CX = segment of resident portion
- FFFFh if completely loaded high (NCACHE)
- ---FILESAVE/EP---
- DL = ??? (apparently always 00h)
- ---DISKMON---
- DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6])
- Note: the value returned in CX is incorrect for NCACHE 6.00
- SeeAlso: AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
-
- Format of DISKMON.INI file:
- Offset Size Description
- -6Ch 108 BYTEs (in memory copy only)
- list of filenames which are always protected:
- IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
- MIO.SYS/IO.BIN, COMMAND.COM
- 00h BYTE ??? always 01h
- 01h BYTE disk light (00h off, 01h on)
- 02h BYTE disk protection (00h off, 01h on)
- 03h BYTE protected areas
- 01h system area
- 02h files
- 03h system area and files
- 04h entire disk
- 04h BYTE floppy access (00h not allowed, 01h allowed)
- 05h 27 BYTEs filename extension list (9 entries)
- (lowercase, blank padded or = 000000h)
- 20h 240 BYTEs filename list (20 entries)
- (lowercase, name and extension blank padded, with '.')
- Note: CX:0508h -> copy in installed TSR (v5)
- CX:052Fh -> copy in installed TSR (v6)
-
- Format of FILESAVE.INI / EP.INI file:
- Offset Size Description
- 00h 26 BITs drive list (bit set: file protection on, cleared: off):
- 00h BYTE drives A: - H:
- 01h BYTE drives I: - P:
- 02h BYTE drives Q: - X:
- 03h BYTE drives Y: - Z:
- 04h BYTE which files to protect
- 00h all files
- 01h all files with extension in list
- 02h all files except those with extension in list
- 05h 27 BYTEs filename extension list (9 entries, uppercase, ASCIZ)
- 20h BYTE include files with archive bit clear (00h no, 01h yes)
- 21h WORD number of days after which files are purged (0 = never)
- 23h WORD max kilobytes of erased file space to hold (0 = all)
- Note: CX:03D2h -> copy in installed TSR (v5.0)
- CX:03F5h -> copy in installed TSR (v6.0)
- ----------2FFE01DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
- AX = FE01h
- DI = 4E55h ("NU")
- SI = TSR identifier (see AX=FE00h)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
- AX = status
- 0002h successful (DISKMON, FILESAVE, EP)
- FE00h successful (NCACHE-x, DISKREET)
- Notes: if the enable/disable calls are used on DISKMON or NCACHE-x, the status
- report generated by the programs still indicates the previous state,
- and DISKMON.INI is not updated
- apparently has no effect on DISKREET
- SeeAlso: AX=FE00h,AX=FE02h
- ----------2FFE02DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
- AX = FE02h
- DI = 4E55h ("NU")
- SI = TSR identifier (see AX=FE00h)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
- AX = status
- 0004h successful (DISKMON, FILESAVE)
- FE00h successful (NCACHE-x, DISKREET)
- Note: (see AX=FE01h)
- SeeAlso: AX=FE00h,AX=FE01h
- ----------2FFE03DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ TSRs - internal - ???
- AX = FE03h
- DI = 4E55h ("NU")
- SI = TSR identifier (see AX=FE00h)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
- AX = status
- 0006h successful???
- Notes: only supported by DISKMON, FILESAVE, and NCACHE-x
- reportedly dangerous
- SeeAlso: AX=FE00h
- ----------2FFE04DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
- AX = FE04h
- DI = 4E55h ("NU")
- SI = TSR identifier (see AX=FE00h)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
- AX = status
- 0008h successful???
- SeeAlso: AX=FE00h
- ----------2FFE05DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
- AX = FE05h
- DI = 4E55h ("NU")
- SI = TSR identifier (see AX=FE00h)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
- AX = status
- 000Ah successful???
- Note: reportedly dangerous
- SeeAlso: AX=FE00h
- ----------2FFF00-----------------------------
- INT 2F - Topware Network Operating System - INSTALLATION CHECK
- AX = FF00h
- Return: AL = 00h not installed, OK to install
- = 01h not installed, not OK to install
- = FFh installed
- SeeAlso: AX=FF01h,INT 21/AH=FFh"Topware",INT 7A"Topware"
- ----------2FFF01-----------------------------
- INT 2F - Topware Network Operating System - GET VERSION
- AX = FF01h
- Return: AX = version
- SeeAlso: AX=FF00h
- ----------30---------------------------------
- INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
- the CALL 5 entry point does a FAR jump to here
- Note: under DOS 2+, the instruction at PSP:0005 points two bytes too low in
- memory
- SeeAlso: INT 21/AH=26h
- ----------31---------------------------------
- INT 31 - overwritten by CP/M jump instruction in INT 30
- ----------310000-----------------------------
- INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
- AX = 0000h
- CX = number of descriptors to allocate
- Return: CF clear if successful
- AX = base selector
- CF set on error
- AX = error code (DPMI 1.0+)
- 0000h-7FFFh DOS error passed through by DPMI
- 8001h unsupported function
- 8002h object in wrong state for function
- 8003h system integrity would be endangered
- 8004h deadlock detected
- 8005h pending serialization request cancelled
- 8010h out of DPMI internal resources
- 8011h descriptor unavailable
- 8012h linear memory unavailable
- 8013h physical memory unavailable
- 8014h backing store unavailable
- 8015h callback unavailable
- 8016h handle unavailable
- 8017h maximum lock count exceeded
- 8018h shared memory already serialized exclusively by another
- 8019h shared memory already serialized shared by another client
- 8021h invalid value for numeric or flag parameter
- 8022h invalid segment selector
- 8023h invalid handle
- 8024h invalid callback
- 8025h invalid linear address
- 8026h request not supported by hardware
- Notes: DPMI is the DOS Protected-Mode Interface
- the base and limit of the returned descriptors will be 0, and the type
- will be "data"
- add the value returned by INT 31/AX=0003h to move to subsequent
- descriptors if multiple descriptors were allocated
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0001h,AX=000Dh
- ----------310001-----------------------------
- INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
- AX = 0001h
- BX = selector to free
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
- Notes: only one descriptor is freed per call
- the program's initial CS, DS, and SS descriptors may be freed
- (DPMI 1.0+) any segment registers containing the freed selector are
- set to 0000h
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0000h,AX=000Ah,AX=000Dh
- ----------310002-----------------------------
- INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
- AX = 0002h
- BX = real mode segment
- Return: CF clear if successful
- AX = selector corresponding to real mode segment (64K limit)
- CF set on error
- AX = error code (DPMI 1.0+) (8011h) (see AX=0000h)
- Notes: multiple calls for the same real mode segment return the same selector
- the returned descriptor can never be modified or freed
- not supported by MS Windows 3.0 in Standard mode
- ----------310003-----------------------------
- INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
- AX = 0003h
- Return: CF clear
- AX = value to add to get next sequential selector
- Notes: the increment will be a power of two
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0000h
- ----------310004-----------------------------
- INT 31 P - DPMI 0.9+ - LOCK SELECTOR
- AX = 0004h
- BX = selector to lock (prevent paging)
- Return: ???
- Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
- specification, this function is called by MS Windows TASKMAN,
- PROGMAN, and KERNEL
- SeeAlso: AX=0005h,AX=0600h
- ----------310005-----------------------------
- INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
- AX = 0005h
- BX = selector to unlock (permit paging)
- Return: ???
- Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
- specification, this function is called by MS Windows TASKMAN,
- PROGMAN, and KERNEL
- SeeAlso: AX=0004h,AX=0601h
- ----------310006-----------------------------
- INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
- AX = 0006h
- BX = selector
- Return: CF clear if successful
- CX:DX = linear base address of segment
- CF set on error
- AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
- Note: not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0007h
- ----------310007-----------------------------
- INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
- AX = 0007h
- BX = selector
- CX:DX = linear base address
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8022h,8025h) (see AX=0000h)
- Notes: only modify descriptors allocated with INT 31/AX=0000h
- only the low 24 bits of the address will be used by 16-bit DPMI
- implementations even on a 386 or higher
- DPMI 1.0+ automatically reloads any segment registers containing the
- selector being modified
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AH=E9h"OS/286"
- ----------310008-----------------------------
- INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
- AX = 0008h
- BX = selector
- CX:DX = segment limit
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
- Notes: CX must be zero for 16-bit DPMI implementations
- limits greater than 1MB must be page aligned (low 12 bits set)
- only modify descriptors allocated with INT 31/AX=0000h
- DPMI 1.0+ automatically reloads any segment registers containing the
- selector being modified
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AH=E9h"OS/286"
- ----------310009-----------------------------
- INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
- AX = 0009h
- BX = selector
- CL = access rights/type byte
- CH = 80386 extended rights/type byte (32-bit DPMI implementations only)
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
- Notes: if the Present bit is clear, CL bits 0-3 may have any value
- DPMI 1.0+ automatically reloads any segment registers containing the
- selector being modified
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h
- ----------31000A-----------------------------
- INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
- AX = 000Ah
- BX = selector
- Return: CF clear if successful
- AX = new data selector
- CF set on error
- AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
- Notes: fails if selector in BX is not a code segment or is invalid
- use INT 31/AX=0001h to free new selector
- future changes to the original selector will not be reflected in the
- returned alias selector
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0001h
- ----------31000B-----------------------------
- INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
- AX = 000Bh
- BX = LDT selector
- ES:(E)DI -> 8-byte buffer for copy of descriptor
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
- Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=000Ch
- ----------31000C-----------------------------
- INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
- AX = 000Ch
- BX = LDT selector
- ES:(E)DI -> 8-byte buffer containing descriptor
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
- Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
- only modify descriptors allocated with INT 31/AX=0000h
- DPMI 1.0+ automatically reloads any segment registers containing the
- selector being modified
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=000Bh
- ----------31000D-----------------------------
- INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
- AX = 000Dh
- BX = LDT selector
- Return: CF clear if successful
- descriptor allocated
- CF set on error
- AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
- Notes: free descriptor with INT 31/AX=0001h
- the first 16 descriptors (04h-7Ch) are reserved for this function, but
- some may already be in use by other applications under DPMI 0.9;
- DPMI 1.0 guarantees 16 descriptors per client
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0000h,AX=0001h
- ----------31000E-----------------------------
- INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
- AX = 000Eh
- CX = number of descriptors to copy
- ES:(E)DI -> descriptor buffer (see below)
- Return: CF clear if successful
- descriptors copied
- CF set on error
- AX = error code (8022h) (see AX=0000h)
- CX = number of descriptors successfully copied
- Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
- if the function fails, the first CX descriptors are valid; the
- remainder are not modified
- SeeAlso: AX=000Bh,AX=000Fh
-
- Format of descriptor buffer entry (one per descriptor to get):
- Offset Size Description
- 00h WORD selector (set by client)
- 02h QWORD descriptor (set by host)
- ----------31000F-----------------------------
- INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
- AX = 000Fh
- CX = number of descriptors to copy
- ES:(E)DI -> descriptor buffer (see below)
- Return: CF clear if successful
- descriptors copied
- CF set on error
- AX = error code (8021h,8022h,8025h) (see AX=0000h)
- CX = number of descriptors successfully copied
- Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
- if the function fails, the first CX descriptors are valid; the
- remainder are not modified
- DPMI 1.0+ automatically reloads any segment registers containing a
- selector being modified
- SeeAlso: AX=000Ch,AX=000Eh
-
- Format of descriptor buffer entry (one per descriptor to set):
- Offset Size Description
- 00h WORD selector
- 02h QWORD descriptor
- ----------310100-----------------------------
- INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
- AX = 0100h
- BX = number of paragraphs to allocate
- Return: CF clear if successful
- AX = real mode segment of allocated block
- DX = first selector for allocated block
- CF set on error
- AX = DOS error code (07h,08h) (see INT 21/AH=59h)
- (DPMI 1.0+) DPMI error code (8011h) (see AX=0000h)
- BX = size (in paragraphs) of largest available block
- Notes: multiple contiguous selectors are allocated for blocks of more than 64K
- if the caller is a 16-bit program
- never modify or deallocate returned descriptors
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0101h,AX=0501h
- ----------310101-----------------------------
- INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
- AX = 0101h
- DX = selector of block
- Return: CF set if successful
- CF set on error
- AX = DOS error code (07h,09h) (see INT 21/AH=59h)
- Notes: all descriptors allocated for the block are automatically freed
- DPMI 1.0+ automatically zeros any segment registers containing a
- selector freed by this function
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0100h,AX=0102h,AX=0502h
- ----------310102-----------------------------
- INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
- AX = 0102h
- BX = new block size in paragraphs
- DX = selector of block
- Return: CF clear if successful
- CF set on error
- AX = DOS error code (07h,08h,09h) (see INT 21/AH=59h)
- (DPMI 1.0+) DPMI error code (8011h,8022h) (see AX=0000h)
- BX = maximum block size (in paragraphs) possible
- Notes: increasing the size of a block past a 64K boundary will fail if the
- next descriptor in the LDT is already in use
- shrinking a block past a 64K boundary will cause some selectors to be
- freed; DPMI 1.0+ automatically zeros any segment registers containing
- a selector freed by this function
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0100h
- ----------310200-----------------------------
- INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
- AX = 0200h
- BL = interrupt number
- Return: CF clear
- CX:DX = segment:offset of real mode interrupt handler
- Note: the DPMI implementation is required to support all 256 vectors
- SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
- ----------310201-----------------------------
- INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
- AX = 0201h
- BL = interrupt number
- CX:DX = segment:offset of real mode handler
- Return: CF clear
- Note: all memory that may be touched by a hardware interrupt handler must be
- locked down with INT 31/AX=0600h
- SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
- ----------310202-----------------------------
- INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
- AX = 0202h
- BL = exception number (00h-1Fh)
- Return: CF clear if successful
- CX:(E)DX = selector:offset of handler
- CF set on error
- AX = error code (DPMI 1.0+) (8021h) (see AX=0000h)
- Notes: 16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
- DPMI 1.0+ supports this function only for backward compatibility; use
- AX=0210h or AX=0211h instead
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
- ----------310203-----------------------------
- INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
- AX = 0203h
- BL = exception number (00h-1Fh)
- CX:(E)DX = selector:offset of handler
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8021h,8022h) (see AX=0000h)
- Notes: 32-bit programs must supply an offset in EDX and use a 32-bit interrupt
- stack frame on chaining to the next exception handler
- the handler should return using a FAR return
- all fault stack frames contain an error code, but it is only valid for
- exceptions 08h and 0Ah-0Eh
- handlers will only be called if the exception occurs in protected mode,
- and the DPMI host does not transparently handle the exception
- the handler may change certain values on the stack frame (see below)
- DPMI 1.0+ supports this function only for backward compatibility; use
- AX=0212h or AX=0213h instead
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
-
- Format of stack frame for 16-bit programs: (offset from SS:SP)
- Offset Size Description
- 00h DWORD return CS:IP (do not change)
- 04h WORD error code
- 06h DWORD CS:IP of exception
- 0Ah WORD flags
- 0Ch DWORD SS:SP
-
- Format of stack frame for 32-bit programs: (offset from SS:ESP)
- Offset Size Description
- 00h DWORD return EIP (do not change)
- 04h WORD return CS selector (do not change)
- 06h WORD reserved (do not change)
- 08h DWORD error code
- 0Ch DWORD EIP of exception
- 10h WORD CS selector of exception
- 12h WORD reserved (do not change)
- 14h DWORD EFLAGS
- 18h DWORD ESP
- 1Ch WORD SS
- 1Eh WORD reserved (do not change)
- ----------310204-----------------------------
- INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
- AX = 0204h
- BL = interrupt number
- Return: CF clear
- CX:(E)DX = selector:offset of handler
- Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
- DPMI implementations are required to support all 256 vectors
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2F/AX=FB42h/BX=0024h
- ----------310205-----------------------------
- INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
- AX = 0205h
- BL = interrupt number
- CX:(E)DX = selector:offset of handler
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
- Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
- 32-bit programs must use a 32-bit interrupt stack frame when chaining
- to the next handler
- DPMI implementations are required to support all 256 vectors
- hardware interrupts are reflected to the virtual machine's primary
- client, software interrupts to the current client
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2F/AX=FB42h/BX=0025h
- ----------310210-----------------------------
- INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
- AX = 0210h
- BL = exception number (00h-1Fh)
- Return: CF clear if successful
- CX:(EDX) = selector:offset of exception handler
- CF set on error
- AX = error code (8021h) (see AX=0000h)
- Note: DPMI host reflects exception to current client's handler
- SeeAlso: AX=0202h,AX=0211h,AX=0212h
- ----------310211-----------------------------
- INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
- AX = 0211h
- BL = exception number (00h-1Fh)
- Return: CF clear if successful
- CX:(EDX) = selector:offset of exception handler
- CF set on error
- AX = error code (8021h) (see AX=0000h)
- Notes: returns address of protected-mode handler for real-mode exception
- DPMI host performs a switch to protected mode, reflects the exception
- to the virtual machine's primary client, and returns to real mode
- on the handler's completion
- SeeAlso: AX=0202h,AX=0210h,AX=0213h
- ----------310212-----------------------------
- INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
- AX = 0212h
- BL = exception or fault number (00h-1Fh)
- CX:(E)DX = exception handler selector:offset
- Return: CF clear if successful
- CF set on error
- AX = error code (8021h,8022h) (see AX=0000h)
- Note: DPMI host sends exception to current client's handler
- SeeAlso: AX=0203h,AX=0210h,AX=0213h
- ----------310213-----------------------------
- INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
- AX = 0213h
- BL = exception or fault number (00h-1Fh)
- CX:(E)DX = exception handler selector:offset
- Return: CF clear if successful
- CF set on error
- AX = error code (8021h,8022h) (see AX=0000h)
- Notes: specifies address of protected-mode handler for real-mode exception
- DPMI host performs a switch to protected mode, reflects the exception
- to the virtual machine's primary client, and returns to real mode
- on the handler's completion
- SeeAlso: AX=0203h,AX=0211h,AX=0212h
- ----------310300-----------------------------
- INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
- AX = 0300h
- BL = interrupt number
- BH = flags
- bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
- reserved, must be 0 (DPMI 1.0+)
- others must be 0
- CX = number of words to copy from protected mode to real mode stack
- ES:(E)DI = selector:offset of real mode call structure (see below)
- Return: CF clear if successful
- real mode call structure modified (all fields except SS:SP, CS:IP
- filled with return values from real mode interrupt)
- CF set on error
- AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
- protected mode stack unchanged
- Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
- CS:IP in the real mode call structure is ignored for this call,
- instead, the indicated interrupt vector is used for the address
- the flags in the call structure are pushed on the real mode stack to
- form an interrupt stack frame, and the trace and interrupt flags are
- clear on entry to the handler
- DPMI will provide a small (30 words) real mode stack if SS:SP is zero
- the real mode handler must return with the stack in the same state as
- it was on being called
- SeeAlso: AX=0302h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286"
- SeeAlso: INT 2F/AX=FB42h/BX=000Dh
-
- Format of real mode call structure:
- Offset Size Description
- 00h DWORD EDI
- 04h DWORD ESI
- 08h DWORD EBP
- 0Ch DWORD reserved (00h)
- 10h DWORD EBX
- 14h DWORD EDX
- 18h DWORD ECX
- 1Ch DWORD EAX
- 20h WORD flags
- 22h WORD ES
- 24h WORD DS
- 26h WORD FS
- 28h WORD GS
- 2Ah WORD IP
- 2Ch WORD CS
- 2Eh WORD SP
- 30h WORD SS
- ----------310301-----------------------------
- INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
- AX = 0301h
- BH = flags
- bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
- reserved, must be 0 (DPMI 1.0+)
- others must be 0
- CX = number of words to copy from protected mode to real mode stack
- ES:DI / ES:EDI = selector:offset of real mode call structure
- (see INT 31/AX=0300h)
- Return: CF clear if successful
- real mode call structure modified (all fields except SS:SP, CS:IP
- filled with return values from real mode interrupt)
- CF set on error
- AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
- protected mode stack unchanged
- Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
- the real mode procedure must exit with a FAR return
- DPMI will provide a small (30 words) real mode stack if SS:SP is zero
- the real mode handler must return with the stack in the same state as
- it was on being called
- SeeAlso: AX=0300h,AX=0302h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
- ----------310302-----------------------------
- INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
- AX = 0302h
- BH = flags
- bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
- reserved, must be 0 (DPMI 1.0+)
- others must be 0
- CX = number of words to copy from protected mode to real mode stack
- ES:DI / ES:EDI = selector:offset of real mode call structure
- (see INT 31/AX=0300h)
- Return: CF clear if successful
- real mode call structure modified (all fields except SS:SP, CS:IP
- filled with return values from real mode interrupt)
- CF set on error
- AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
- protected mode stack unchanged
- Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
- the flags in the call structure are pushed on the real mode stack to
- form an interrupt stack frame, and the trace and interrupt flags are
- clear on entry to the handler
- the real mode procedure must exit with an IRET
- DPMI will provide a small (30 words) real mode stack if SS:SP is zero
- the real mode handler must return with the stack in the same state as
- it was on being called
- SeeAlso: AX=0300h
- ----------310303-----------------------------
- INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
- AX = 0303h
- DS:SI / DS:ESI = selector:offset of procedure to call
- ES:DI / ES:EDI = selector:offset of real mode call structure
- (see AX=0300h)
- Return: CF clear if successful
- CX:DX = segment:offset of real mode call address
- CF set on error
- AX = error code (DPMI 1.0+) (8015h) (see AX=0000h)
- Notes: the real mode call structure is static, causing reentrancy problems;
- its contents are only valid at the time of a callback
- the called procedure must modify the real mode CS:IP before returning
- values are returned to real mode by modifying the real mode call struc
- DPMI hosts must provide at least 16 callbacks per client
- SeeAlso: AX=0304h,AX=0C00h
-
- Values callback procedure is called with:
- DS:SI / DS:ESI = selector:offset of real mode SS:SP
- ES:DI / ES:EDI = selector:offset of real mode call structure
- SS:SP / SS:ESP = locked protected mode API stack
- interrupts disabled
- Return: (with IRET)
- ES:DI / ES:EDI = selector:offset of real mode call structure to restore
- ----------310304-----------------------------
- INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
- AX = 0304h
- CX:DX = real mode callback address
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8024h) (see AX=0000h)
- SeeAlso: AX=0303h
- ----------310305-----------------------------
- INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
- AX = 0305h
- Return: CF clear
- AX = size in bytes of state buffer
- BX:CX = real mode address of procedure to save/restore state
- SI:DI / SI:EDI = protected mode procedure to save/restore state
- Notes: the buffer size will be zero if it is not necessary to preserve state
- 16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
- this function is only needed if using the raw mode switch service
- SeeAlso: AX=0306h
-
- Values to call state-save procedures with:
- AL = direction
- 00h save state
- 01h restore state
- ES:DI / ES:EDI -> state buffer
- Return: all registers preserved
- ----------310306-----------------------------
- INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
- AX = 0306h
- Return: CF clear
- BX:CX -> procedure to switch from real to protected mode
- SI:DI / SI:EDI -> procedure to switch from protected to real mode
- Notes: 16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
- the caller must save and restore the state of the task with AX=0305h
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0305h
-
- Values to JUMP at mode-switch procedures with:
- AX = new DS
- CX = new ES
- DX = new SS
- BX / EBX = new SP / ESP
- SI = new CS
- DI / EDI = new IP / EIP
- Notes: BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
- DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
- interrupts will stay disabled during the entire mode switch if they
- are disabled on entry to the mode-switch procedure
- ----------310400-----------------------------
- INT 31 P - DPMI 0.9+ - GET DPMI VERSION
- AX = 0400h
- Return: CF clear
- AH = major version of DPMI spec supported
- AL = two-digit minor version of DPMI spec supported
- BX = flags
- bit 0: running under an 80386 (32-bit) implementation
- bit 1: processor returns to real mode for reflected interrupts
- instead of V86 mode
- bit 2: virtual memory supported
- bit 3: reserved (undefined)
- others reserved (zero)
- CL = processor type (02h=80286, 03h=80386, 04h=80486)
- DH = curr value of virtual master interrupt controller base interrupt
- DL = curr value of virtual slave interrupt controller base interrupt
- SeeAlso: AX=0401h,INT 21/AX=250Ch
- ----------310401-----------------------------
- INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
- AX = 0401h
- ES:(E)DI -> 128-byte buffer (see below)
- Return: CF clear if successful
- AX = capabilities
- bit 0: paged accessed/dirty supported (see AX=0506h,AX=0507h)
- 1: exceptions restartability supported
- 2: device mapping supported (see AX=0508h)
- 3: conventional memory mapping supported (see AX=0509h)
- 4: demand zero-fill supported
- 5: write-protect client capability supported
- 6: write-protect host capability supported
- 7-15: reserved
- CX = reserved (00h)
- DX = reserved (00h)
- buffer filled
- CF set on error (DPMI 0.9 only)
- SeeAlso: AX=0400h
-
- Format of buffer:
- Offset Size Description
- 00h BYTE host major version number
- 01h BYTE host minor version number
- 02h 126 BYTEs ASCIZ host vendor name
- ----------310500-----------------------------
- INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
- AX = 0500h
- ES:DI / ES:EDI -> buffer for memory information (see below)
- Return: CF clear
- Notes: 16-bit programs use ES:DI, 32-bit programs use ES:EDI
- this function must be considered advisory because other applications
- may affect the results at any time after the call
- fields not supported by the DPMI implementation are filled with
- FFFFFFFFh
- DPMI 1.0+ supports this function solely for backward compatibility; use
- AX=050Bh instead
- SeeAlso: AX=0501h,AX=0604h
-
- Format of memory information:
- Offset Size Description
- 00h DWORD largest available block in bytes
- 04h DWORD maximum unlocked page allocation
- 08h DWORD maximum locked page allocation
- 0Ch DWORD total linear address space in pages
- 10h DWORD total unlocked pages
- 14h DWORD free pages
- 18h DWORD total physical pages
- 1Ch DWORD free linear address space in pages
- 20h DWORD size of paging file/partition in pages
- 24h 12 BYTEs reserved
- ----------310501-----------------------------
- INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
- AX = 0501h
- BX:CX = size in bytes
- Return: CF clear if successful
- BX:CX = linear address of block
- SI:DI = memory block handle for resizing and freeing block
- CF set on error
- AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see AX=0000h)
- Notes: no selectors are allocated
- the memory block is allocated unlocked (can be locked with AX=0600h)
- allocations are often page granular (see AX=0604h)
- SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
- ----------310502-----------------------------
- INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
- AX = 0502h
- SI:DI = handle of memory block
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
- Note: any selectors allocated for the memory block must also be freed,
- preferably before freeing the memory block
- SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
- ----------310503-----------------------------
- INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
- AX = 0503h
- BX:CX = new size in bytes (nonzero)
- SI:DI = handle of memory block
- Return: CF clear if successful
- BX:CX = new linear address
- SI:DI = new handle of memory block
- CF set on error
- AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
- (see AX=0000h)
- Notes: any selectors pointing at the block must be updated
- the previous memory block handle becomes invalid
- an error is returned if the new size is 0
- SeeAlso: AX=0102h,AX=0501h,AX=0505h
- ----------310504-----------------------------
- INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
- AX = 0504h
- EBX = page-aligned linear address of memory block (00000000h if any
- address is acceptable)
- ECX = size in bytes (nonzero)
- EDX = flags
- bit 0: set to create committed pages instead of uncommitted pages
- bits 1-31: reserved (0)
- Return: CF clear if successful
- EBX = linear address of memory block
- ESI = memory block handle
- CF set on error
- AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see AX=0000h)
- Note: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- SeeAlso: AX=0501h,AX=0505h
- ----------310505-----------------------------
- INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
- AX = 0505h
- ESI = memory block handle
- ECX = new size in bytes (nonzero)
- EDX = flags
- bit 0: create committed pages rather than uncommitted pages
- bit 1: segment descriptor update required
- ES:EBX -> buffer containing array of WORDs with selectors
- EDI = number of selectors in array
- bits 2-31: reserved (0)
- Return: CF clear if successful
- EBX = new linear base address
- ESI = new memory block handle
- CF set on error
- AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see AX=0000h)
- Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- the old memory block handle becomes invalid
- if EDX bit 1 set and the block's base address is changed, DPMI updates
- all descriptors for selectors in the update buffer which fall within
- the memory block
- SeeAlso: AX=0503h,AX=0504h
- ----------310506-----------------------------
- INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
- AX = 0506h
- ESI = memory block handle
- EBX = offset in memory block of first page
- ECX = number of pages
- ES:EDX -> array of WORDs to hold page attributes (see below)
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (8001h,8023h,8025h) (see AX=0000h)
- Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- if EBX is not page-aligned, it will be rounded down
- SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
-
- Format of page attribute words:
- bits 0-2 page type
- 000 uncommitted
- 001 committed
- 010 mapped (see AX=0508h,AX=0509h)
- other currently unused
- bit 3 page is read/write rather than read-only
- bit 4 accessed/dirty bits supplied in bits 5 and 6
- bit 5 page has been accessed (only valid if bit 4 set)
- bit 6 page has been written (only valid if bit 4 set)
- bits 7-15 reserved (0)
- ----------310507-----------------------------
- INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
- AX = 0507h
- ESI = memory block handle
- EBX = offset in memory block of first page
- ECX = number of pages
- ES:EDX -> array of WORDs with new page attributes (see AX=0506h)
- Return: CF clear if successful
- CF set on error
- AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
- (see AX=0000h)
- ECX = number of pages which have been set
- Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- if EBX is not page-aligned, it will be rounded down
- SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
- ----------310508-----------------------------
- INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
- AX = 0508h
- ESI = memory block handle
- EBX = page-aligned offset within memory block of page(s) to be mapped
- ECX = number of pages to map
- EDX = page-aligned physical address of device
- Return: CF clear if successful
- CF set on error
- AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
- Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- support of this function is optional; hosts are also allowed to support
- the function for some devices but not others
- SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
- ----------310509-----------------------------
- INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
- AX = 0509h
- ESI = memory block handle
- EBX = page-aligned offset within memory block of page(s) to map
- ECX = number of pages to map
- EDX = page-aligned linear address of conventional (below 1M) memory
- Return: CF clear if successful
- CF set on error
- AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
- Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- support of this function is optional
- SeeAlso: AX=0504h,AX=0508h,AX=0801h
- ----------31050A-----------------------------
- INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
- AX = 050AH
- SI:DI = memory block handle
- Return: CF clear if successful
- SI:DI = size in bytes
- BX:CX = base address
- CF set on error
- AX = error code (8023h) (see AX=0000h)
- SeeAlso: AX=0501h,AX=0504h
- ----------31050B-----------------------------
- INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
- AX = 050Bh
- ES:(E)DI -> 128-byte buffer for memory information (see below)
- Return: CF clear if successful
- CF set on error (DPMI 0.9 only)
- Note: 16-bit programs use ES:DI, 32-bit programs must use ES:EDI
- SeeAlso: AX=0500h
-
- Format of memory information:
- Offset Size Description
- 00h DWORD total allocated bytes of physical memory controlled by host
- 04h DWORD total allocated bytes of virtual memory controlled by host
- 08h DWORD total available bytes of virtual memory controlled by host
- 0Ch DWORD total allocated bytes of virtual memory for curr virtual mach
- 10h DWORD total available bytes of virtual memory for curr virtual mach
- 14h DWORD total allocated bytes of virtual memory for current client
- 18h DWORD total available bytes of virtual memory for current client
- 1Ch DWORD total locked bytes for current client
- 20h DWORD maximum locked bytes for current client
- 24h DWORD highest linear address available to current client
- 28h DWORD largest available memory block in bytes
- 2Ch DWORD minimum allocation unit in bytes
- 30h DWORD allocation alignment unit size in bytes
- 34h 76 BYTEs reserved (00h)
- ----------310600-----------------------------
- INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
- AX = 0600h
- BX:CX = starting linear address
- SI:DI = size of region in bytes
- Return: CF clear if successful
- CF set on error
- none of the memory is locked
- AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see AX=0000h)
- Notes: pages at beginning and end will be locked if the region overlaps them
- may be called multiple times for a given page; the DPMI host keeps a
- lock count for each page
- SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
- ----------310601-----------------------------
- INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
- AX = 0601h
- BX:CX = starting linear address
- SI:DI = size of region in bytes
- Return: CF clear if successful
- CF set on error
- none of the memory is unlocked
- AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
- Notes: pages at beginning and end will be unlocked if the region overlaps them
- memory whose lock count has not reached zero remains locked
- SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
- ----------310602-----------------------------
- INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
- AX = 0602h
- BX:CX = starting linear address
- SI:DI = size of region in bytes
- Return: CF clear if successful
- CF set on error
- none of the memory is made pageable
- AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
- Notes: must relock all unlocked real mode memory before terminating process
- for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
- pages at beginning and end will be unlocked if the region overlaps them
- pageability of real mode pages is binary, not a count
- SeeAlso: AX=0600h,AX=0603h
- ----------310603-----------------------------
- INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
- AX = 0603h
- BX:CX = starting linear address
- SI:DI = size of region in bytes
- Return: CF clear if successful
- CF set on error
- none of the memory is relocked
- AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see AX=0000h)
- Notes: pages at beginning and end will be relocked if the region overlaps them
- pageability of real mode pages is binary, not a count
- SeeAlso: AX=0602h
- ----------310604-----------------------------
- INT 31 P - DPMI 0.9+ - GET PAGE SIZE
- AX = 0604h
- Return: CF clear if successful
- BX:CX = page size in bytes
- CF set on error
- AX = error code (DPMI 1.0+)
- 8001h unsupported, 16-bit host
- ----------310700-----------------------------
- INT 31 P - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
- AX = 0700h
- BX:CX = starting linear page number
- SI:DI = number of pages to mark as paging candidates
- Return: ???
- Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
- specification, this function is called by MS Windows TASKMAN,
- PROGMAN, and KERNEL
- SeeAlso: AX=0701h,AX=0702h
- ----------310701-----------------------------
- INT 31 P - DPMI 0.9+ - DISCARD PAGES
- AX = 0701h
- BX:CX = starting linear page number
- SI:DI = number of pages to discard
- Return: ???
- Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
- specification, this function is called by MS Windows TASKMAN,
- PROGMAN, and KERNEL
- SeeAlso: AX=0700h,AX=0703h
- ----------310702-----------------------------
- INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
- AX = 0702h
- BX:CX = starting linear address
- SI:DI = number of bytes to mark as paging candidates
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
- Notes: this function is advisory, and does not force immediate paging
- partial pages will not be discarded
- SeeAlso: AX=0700h,AX=0703h
- ----------310703-----------------------------
- INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
- AX = 0703h
- BX:CX = starting linear address
- SI:DI = number of bytes to mark as discarded
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
- Notes: this function is advisory, and may be ignored by DPMI implementations
- partial pages will not be discarded
- SeeAlso: AX=0701h,AX=0702h
- ----------310800-----------------------------
- INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
- AX = 0800h
- BX:CX = physical address (should be above 1 MB)
- SI:DI = size in bytes
- Return: CF clear if successful
- BX:CX = linear address which maps the requested physical memory
- CF set on error
- AX = error code (DPMI 1.0+) (8003h,8021h) (see AX=0000h)
- Notes: implementations may refuse this call because it can circumvent protects
- the caller must build an appropriate selector for the memory
- do not use for memory mapped in the first megabyte
- SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
- ----------310801-----------------------------
- INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
- AX = 0801h
- BX:CX = linear address returned by AX=0800h
- Return: CF clear if successful
- CF set on error
- AX = error code (8025h) (see AX=0000h)
- Note: should be called at end of access to device mapped with AX=0800h
- SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
- ----------310900-----------------------------
- INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
- AX = 0900h
- Return: CF clear
- virtual interrupts disabled
- AL = 00h if previously disabled
- = 01h if previously enabled
- AH preserved
- Notes: the previous state may be restored simply by executing another INT 31
- a CLI instruction may be used if the previous state is unimportant,
- but should be assumed to be very slow due to trapping by the host
- SeeAlso: AX=0901h,AX=0902h
- ----------310901-----------------------------
- INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
- AX = 0901h
- Return: CF clear
- virtual interrupts enabled
- AL = 00h if previously disabled
- = 01h if previously enabled
- AH preserved
- Notes: the previous state may be restored simply by executing another INT 31
- a STI instruction may be used if the previous state is unimportant,
- but should be assumed to be very slow due to trapping by the host
- SeeAlso: AX=0900h,AX=0902h
- ----------310902-----------------------------
- INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
- AX = 0902h
- Return: CF clear
- AL = 00h if disabled
- = 01h if enabled
- Note: should be used rather than PUSHF because that instruction yields the
- physical interrupt state rather than the per-client virtualized
- interrupt flag
- SeeAlso: AX=0900h,AX=0901h
- ----------310A00-----------------------------
- INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
- AX = 0A00h
- DS:SI / DS:ESI -> case-sensitive ASCIZ vendor name or identifier
- Return: CF clear if successful
- ES:DI / ES:EDI -> FAR extended API entry point
- DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
- CF set on error
- AX = error code (DPMI 1.0+) (8001h) (see AX=0000h)
- Notes: extended API parameters are vendor-specific
- DPMI 1.0+ supports this function solely for backward compatibility; use
- INT 2F/AX=168Ah instead
- SeeAlso: INT 2F/AX=168Ah
- ----------310B00-----------------------------
- INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
- AX = 0B00h
- BX:CX = linear address
- DL = size (1,2,4 bytes)
- DH = type (00h execute, 01h write, 02h read/write)
- Return: CF clear if successful
- BX = watchpoint handle
- CF set on error
- AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see AX=0000h)
- SeeAlso: AX=0212h,AX=0601h
- ----------310B01-----------------------------
- INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
- AX = 0B01h
- BX = watchpoint handle
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
- Note: the watchpoint handle is freed
- SeeAlso: AX=0B00h
- ----------310B02-----------------------------
- INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
- AX = 0B02h
- BX = watchpoint handle
- Return: CF clear if successful
- AX = status flags
- bit 0: watch point has been executed since AX=0B00h or AX=0B03h
- CF set on error
- AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
- SeeAlso: AX=0B00h,AX=0B03h
- ----------310B03-----------------------------
- INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
- AX = 0B03h
- BX = watchpoint handle
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
- SeeAlso: AX=0B02h
- ----------310C00-----------------------------
- INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
- AX = 0C00h
- ES:(E)DI -> resident service provider structure (see below)
- Return: CF clear if successful
- CF set on error
- AX = error code (8015h,8021h,8025h) (see AX=0000h)
- Note: calling this function declares an intent to provide resident
- protected mode services after terminating with AX=0C01h
- SeeAlso: AX=0303h,AX=0C01h
-
- Format of resident service provider structure:
- Offset Size Description
- 00h QWORD descriptor for 16-bit data segment
- 08h QWORD descriptor for 16-bit code segment (zeros if not supported)
- 10h WORD offset of 16-bit callback procedure
- 12h 2 BYTEs reserved
- 14h QWORD descriptor for 32-bit data segment
- 1Ch QWORD descriptor for 32-bit code segment (zeros if not supported)
- 24h DWORD offset of 32-bit callback procedure
- ----------310C01-----------------------------
- INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
- AX = 0C01h
- BL = return code
- DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
- Return: never
- Notes: should only be used if the program will only provide services to
- other DPMI programs
- any protected mode memory remains allocated to the program unless
- explicitly freed before this call
- must first call AX=0C00h or program will simply be terminated
- SeeAlso: AX=0C00h,INT 21/AH=31h
- ----------310D00-----------------------------
- INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
- AX = 0D00h
- ES:(E)DI -> shared memory allocation request structure (see below)
- Return: CF clear if successful
- request structure updated
- CF set on error
- AX = error code (8012h,8013h,8014h,8016h,8021h) (see AX=0000h)
- Note: first 16 bytes of memory block will be initialized to zeros on the
- first allocation
- SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
-
- Format of shared memory allocation request structure:
- Offset Size Description
- 00h DWORD requested length of shared memory block in bytes
- 04h DWORD (return) allocated length of block
- 08h DWORD (return) shared memory handle
- 0Ch DWORD (return) linear address of memory block
- 10h 6 BYTEs selector:offset32 of ASCIZ name for memory block
- (name max 128 bytes)
- 16h 2 BYTEs reserved
- 18h 4 BYTEs reserved (00h)
- ----------310D01-----------------------------
- INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
- AX = 0D01h
- SI:DI = shared memory block handle
- Return: CF clear if successful
- CF set on error
- AX = error code (8023h) (see AX=0000h)
- Notes: handle becomes invalid after this call
- DPMI maintains separate global and virtual machine use counts for each
- shared memory block; when the global use counts reaches zero, the
- block is finally destroyed
- SeeAlso: AX=0502h,AX=0D00h
- ----------310D02-----------------------------
- INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
- AX = 0D02h
- SI:DI = shared memory block handle
- DX = flags
- bit 0: return immediately rather than suspending if serialization
- unavailable
- 1: shared rather than exclusive serialization
- 2-15: reserved (0)
- Return: CF clear if successful
- CF set on error
- AX = error code (8004h,8005h,8017h-8019h,8023h) (see AX=0000h)
- Notes: an exclusive serialization blocks any other serialization attempts for
- the same block by another virtual machine; a shared serialization
- blocks attempts at exclusive serialization by another virtual machine
- hosts are not required to detect deadlock
- a client's interrupt handler can cancel a serialization call which
- caused it to block by calling AX=0D03h
- SeeAlso: AX=0D00h,AX=0D03h
- ----------310D03-----------------------------
- INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
- AX = 0D03h
- SI:DI = shared memory block handle
- DX = flags
- bit 0: release shared serialization rather than exclusive serialztn
- bit 1: free pending serialization
- bits 2-15: reserved (0)
- Return: CF clear if successful
- CF set on error
- AX = error code (8002h,8023h) (see AX=0000h)
- SeeAlso: AX=0D00h,AX=0D02h
- ----------310E00-----------------------------
- INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
- AX = 0E00h
- Return: CF clear
- AX = coprocessor status
- bit 0: numeric coprocessor enabled for current client
- bit 1: client is emulating coprocessor
- bit 2: numeric coprocessor is present
- bit 3: host is emulating coprocessor instructions
- bits 4-7: coprocessor type
- 0000 none
- 0010 80287
- 0011 80387
- 0100 80486 with numeric coprocessor
- other reserved
- bits 8-15: not used
- Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
- SeeAlso: AX=0E01h
- ----------310E01-----------------------------
- INT 31 P - DPMI 1.0+ - SET EMULATION
- AX = 0E01h
- BX = coprocessor flag bits
- bit 0: enable numeric coprocessor for current client
- bit 1: client will emulate coprocessor
- bits 2-15: not used
- Return: CF clear if successful
- CF set on error
- AX = error code (8026h) (see AX=0000h)
- Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
- SeeAlso: AX=0E00h
- ----------32---------------------------------
- INT 32 - VIRUS - reportedly used by "Tiny" Viruses
- SeeAlso: INT 60"VIRUS"
- ----------330000-----------------------------
- INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
- AX = 0000h
- Return: AX = status
- 0000h hardware/driver not installed
- FFFFh hardware/driver installed
- BX = number of buttons
- 0000h other than two
- 0002h two buttons (many drivers)
- 0003h Mouse Systems/Logitech three-button mouse
- FFFFh two buttons
- Notes: to use mouse on a Hercules-compatible monographics card in graphics
- mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
- and then call this function. Logitech drivers v5.01 and v6.00
- reportedly do not correctly use Hercules graphics in dual-monitor
- systems, while version 4.10 does.
- the Logitech mouse driver contains the signature string "LOGITECH"
- SeeAlso: AX=0021h,INT 74
- ----------330001-----------------------------
- INT 33 - MS MOUSE - SHOW MOUSE CURSOR
- AX = 0001h
- SeeAlso: AX=0002h,INT 16/AX=FFFEh
- ----------330002-----------------------------
- INT 33 - MS MOUSE - HIDE MOUSE CURSOR
- AX = 0002h
- Note: multiple calls to hide the cursor will require multiple calls to
- function 01h to unhide it.
- SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh
- ----------330003-----------------------------
- INT 33 - MS MOUSE - RETURN POSITION AND BUTTON STATUS
- AX = 0003h
- Return: BX = button status
- bit 0 left button pressed if 1
- bit 1 right button pressed if 1
- bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
- CX = column
- DX = row
- SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
- ----------330004-----------------------------
- INT 33 - MS MOUSE - POSITION MOUSE CURSOR
- AX = 0004h
- CX = column
- DX = row
- Note: the row and column are truncated to the next lower multiple of the cell
- size; however, some versions of the Microsoft documentation
- incorrectly state that the coordinates are rounded
- SeeAlso: AX=0003h
- ----------330005-----------------------------
- INT 33 - MS MOUSE - RETURN BUTTON PRESS DATA
- AX = 0005h
- BX = button
- 0000h left
- 0001h right
- 0002h middle (Mouse Systems/Logitech mouse)
- Return: AX = button states
- bit 0 left button pressed if 1
- bit 1 right button pressed if 1
- bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
- BX = number of times specified button has been pressed since last call
- CX = column at time specified button was last pressed
- DX = row at time specified button was last pressed
- SeeAlso: AX=0006h
- ----------330006-----------------------------
- INT 33 - MS MOUSE - RETURN BUTTON RELEASE DATA
- AX = 0006h
- BX = button
- 0000h left
- 0001h right
- 0002h middle (Mouse Systems/Logitech mouse)
- Return: AX = button states
- bit 0 left button pressed if 1
- bit 1 right button pressed if 1
- bit 2 middle button pressed if 1 (Mouse Systems/Logitech mouse)
- BX = number of times specified button has been released since last call
- CX = column at time specified button was last released
- DX = row at time specified button was last released
- SeeAlso: AX=0005h
- ----------330007-----------------------------
- INT 33 - MS MOUSE - DEFINE HORIZONTAL CURSOR RANGE
- AX = 0007h
- CX = minimum column
- DX = maximum column
- SeeAlso: AX=0008h,AX=0010h
- ----------330008-----------------------------
- INT 33 - MS MOUSE - DEFINE VERTICAL CURSOR RANGE
- AX = 0008h
- CX = minimum row
- DX = maximum row
- SeeAlso: AX=0007h,AX=0010h
- ----------330009-----------------------------
- INT 33 - MS MOUSE - DEFINE GRAPHICS CURSOR
- AX = 0009h
- BX = column of cursor hot spot in bitmap (-16 to 16)
- CX = row of cursor hot spot (-16 to 16)
- ES:DX -> bitmap
- 16 words screen mask
- 16 words cursor mask
- each word defines the sixteen pixels of a row, low bit
- rightmost
- SeeAlso: AX=000Ah,AX=0012h
- ----------33000A-----------------------------
- INT 33 - MS MOUSE - DEFINE TEXT CURSOR
- AX = 000Ah
- BX = hardware/software text cursor
- 0000h software
- CX = screen mask
- DX = cursor mask
- 0001h hardware
- CX = start scan line
- DX = end scan line
- Note: when the software cursor is selected, the char/attribute data at the
- current screen position is ANDed with the screen mask and then XORed
- with the cursor mask
- SeeAlso: AX=0009h
- ----------33000B-----------------------------
- INT 33 - MS MOUSE - READ MOTION COUNTERS
- AX = 000Bh
- Return: CX = number of mickeys mouse moved horizontally since last call
- DX = number of mickeys mouse moved vertically
- Notes: a mickey is the smallest increment the mouse can sense
- positive values indicate down/right
- SeeAlso: AX=0003h,AX=001Bh
- ----------33000C-----------------------------
- INT 33 - MS MOUSE - DEFINE INTERRUPT SUBROUTINE PARAMETERS
- AX = 000Ch
- CX = call mask
- bit 0 call if mouse moves
- bit 1 call if left button pressed
- bit 2 call if left button released
- bit 3 call if right button pressed
- bit 4 call if right button released
- bit 5 call if middle button pressed (Mouse Systems/Logitech mouse)
- bit 6 call if middle button released (Mouse Sys/Logitech mouse)
- ES:DX -> FAR routine
- Notes: when the subroutine is called, it is passed the following values:
- AX = condition mask (same bit assignments as call mask)
- BX = button state
- CX = cursor column
- DX = cursor row
- SI = horizontal mickey count
- DI = vertical mickey count
- some versions of the Microsoft documentation incorrectly state that CX
- bit 0 means call if mouse cursor moves, and swap the meanings of SI
- and DI
- SeeAlso: AX=0018h
- ----------33000D-----------------------------
- INT 33 - MS MOUSE - LIGHT PEN EMULATION ON
- AX = 000Dh
- SeeAlso: AX=000Eh
- ----------33000E-----------------------------
- INT 33 - MS MOUSE - LIGHT PEN EMULATION OFF
- AX = 000Eh
- SeeAlso: AX=000Dh
- ----------33000F-----------------------------
- INT 33 - MS MOUSE - DEFINE MICKEY/PIXEL RATIO
- AX = 000Fh
- CX = number of mickeys per 8 pixels horizontally (default 8)
- DX = number of mickeys per 8 pixels vertically (default 16)
- SeeAlso: AX=0013h,AX=001Ah
- ----------330010-----------------------------
- INT 33 - MS MOUSE - DEFINE SCREEN REGION FOR UPDATING
- AX = 0010h
- CX,DX = X,Y coordinates of upper left corner
- SI,DI = X,Y coordinates of lower right corner
- Note: mouse cursor is hidden during updating, and needs to be explicitly
- turned on again
- SeeAlso: AX=0001h,AX=0002h,AX=0007h
- ----------330012-----------------------------
- INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
- AX = 0012h
- BH = cursor width in words
- CH = rows in cursor
- BL = horizontal hot spot (-16 to 16)
- CL = vertical hot spot (-16 to 16)
- ES:DX -> bit map of screen and cursor maps
- Return: AX = FFFFh if successful
- SeeAlso: AX=0009h
- ----------330013-----------------------------
- INT 33 - MS MOUSE - DEFINE DOUBLE-SPEED THRESHOLD
- AX = 0013h
- DX = threshold speed in mickeys/second, 0000h = default of 64/second
- Note: if speed exceeds threshold, the cursor's on-screen motion is doubled
- SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
- ----------330014-----------------------------
- INT 33 - MS MOUSE - EXCHANGE INTERRUPT SUBROUTINES
- AX = 0014h
- CX = call mask (see AX=000Ch)
- ES:DX -> FAR routine
- Return: CX = call mask of previous interrupt routine
- ES:DX = FAR address of previous interrupt routine
- SeeAlso: AX=0018h
- ----------330015-----------------------------
- INT 33 - MS MOUSE - RETURN DRIVER STORAGE REQUIREMENTS
- AX = 0015h
- Return: BX = size of buffer needed to store driver state
- SeeAlso: AX=0016h,AX=0017h,AX=0042h
- ----------330016-----------------------------
- INT 33 - MS MOUSE - SAVE DRIVER STATE
- AX = 0016h
- BX = size of buffer (see AX=0015h)
- ES:DX -> buffer for driver state
- Note: although not documented, many drivers appear to require BX on input
- SeeAlso: AX=0015h,AX=0017h
- ----------330017-----------------------------
- INT 33 - MS MOUSE - RESTORE DRIVER STATE
- AX = 0017h
- BX = size of buffer (see AX=0015h)
- ES:DX -> buffer containing saved state
- Notes: although not documented, many drivers appear to require BX on input
- some mouse drivers range-check the values in the saved state based on
- the current video mode; thus, the video mode should be restored
- before the mouse driver's state is restored
- SeeAlso: AX=0015h,AX=0016h
- ----------330018-----------------------------
- INT 33 - MS MOUSE - SET ALTERNATE MOUSE USER HANDLER
- AX = 0018h
- CX = call mask
- bit 0 call if alt key pressed during event
- bit 1 call if ctrl key pressed during event
- bit 2 call if shift button pressed during event
- bit 3 call if right button released
- bit 4 call if right button pressed
- bit 5 call if left button released
- bit 6 call if left button pressed
- bit 7 call if mouse moves
- ES:DX = address of FAR routine
- Return: AX = 0018h if successful
- = FFFFh on error
- Notes: when the subroutine is called, it is passed the following values:
- AX = condition mask (same bit assignments as call mask)
- BX = button state
- CX = cursor column
- DX = cursor row
- DI = horizontal mickey count
- SI = vertical mickey count
- up to three handlers can be defined by separate calls to this function
- SeeAlso: AX=0014h,AX=0019h
- ----------330019-----------------------------
- INT 33 - MS MOUSE - RETURN USER ALTERNATE INTERRUPT VECTOR
- AX = 0019h
- CX = call mask
- Return: BX:DX = user interrupt vector
- CX = call mask (0 if not found)
- Note: attempts to find a user event handler (defined by function 18h)
- whose call mask matches CX
- SeeAlso: AX=0018h
- ----------33001A-----------------------------
- INT 33 - MS MOUSE - SET MOUSE SENSITIVITY
- AX = 001Ah
- BX = horizontal speed \
- CX = vertical speed / (see AX=000Fh)
- DX = double speed threshold (see AX=0013h)
- SeeAlso: AX=0013h,AX=001Bh
- ----------33001B-----------------------------
- INT 33 - MS MOUSE - RETURN MOUSE SENSITIVITY
- AX = 001Bh
- Return: BX = horizontal speed
- CX = vertical speed
- DX = double speed threshold
- SeeAlso: AX=000Bh,AX=001Ah
- ----------33001C-----------------------------
- INT 33 - MS MOUSE - SET INTERRUPT RATE
- AX = 001Ch
- BX = rate
- 00h no interrupts allowed
- 01h 30 per second
- 02h 50 per second
- 03h 100 per second
- 04h 200 per second
- Notes: only available on InPort mouse
- values greater than 4 may cause unpredictable driver behavior
- ----------33001D-----------------------------
- INT 33 - MS MOUSE - DEFINE DISPLAY PAGE NUMBER
- AX = 001Dh
- BX = display page number
- Note: the cursor will be displayed on the specified page
- SeeAlso: AX=001Eh
- ----------33001E-----------------------------
- INT 33 - MS MOUSE - RETURN DISPLAY PAGE NUMBER
- AX = 001Eh
- Return: BX = display page number
- SeeAlso: AX=001Dh
- ----------33001F-----------------------------
- INT 33 - MS MOUSE - DISABLE MOUSE DRIVER
- AX = 001Fh
- Return: AX = 001Fh successful
- FFFFh unsuccessful
- ES:BX = vector for INT 33h before mouse driver was first installed
- Note: restores vectors for Int 10h and Int 71h (8086) or Int 74h (286/386)
- if you restore Int 33h to ES:BX, driver will be completely disabled
- SeeAlso: AX=0020h
- ----------330020-----------------------------
- INT 33 - MS MOUSE - ENABLE MOUSE DRIVER
- AX = 0020h
- Note: restores vectors for Int 10h and Int 71h (8086) or Int 74h (286/386)
- which were removed by function 1Fh
- SeeAlso: AX=001Fh
- ----------330021-----------------------------
- INT 33 - MS MOUSE - SOFTWARE RESET
- AX = 0021h
- Return: AX = FFFFh if mouse driver installed
- 0021h if mouse driver not installed
- BX = 2 if mouse driver is installed
- Note: identical to funtion 00h, but does not reset the mouse
- SeeAlso: AX=0000h
- ----------330022-----------------------------
- INT 33 - MS MOUSE - SET LANGUAGE FOR MESSAGES
- AX = 0022h
- BX = language
- 00h English
- 01h French
- 02h Dutch
- 03h German
- 04h Swedish
- 05h Finnish
- 06h Spanish
- 07h Portugese
- 08h Italian
- Note: only available on international versions of the driver, US versions
- ignore this call
- SeeAlso: AX=0023h
- ----------330023-----------------------------
- INT 33 - MS MOUSE - GET LANGUAGE FOR MESSAGES
- AX = 0023h
- Return: BX = language (see AX=0022h)
- Note: the US version of the driver always returns zero
- SeeAlso: AX=0022h
- ----------330024-----------------------------
- INT 33 - MS MOUSE - GET SOFTWARE VERSION AND MOUSE TYPE
- AX = 0024h
- Return: AX = FFFFh on error
- otherwise,
- BH = major version
- BL = minor version
- CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
- CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
- SeeAlso: AX=004Dh
- ----------330026-----------------------------
- INT 33 - MS MOUSE - ???
- AX = 0026h
- Note: called by the newest Microsoft applications
- ----------33002C-----------------------------
- INT 33 - MS MOUSE - SET ACCELERATION PROFILES
- AX = 002Ch
- ES:DX -> name of file containing profiles
- Note: see MOUSEPRO.FIL for an example set of acceleration profiles
- SeeAlso: AX=0013h,AX=002Dh
- ----------33002D-----------------------------
- INT 33 - MS MOUSE - SELECT ACCELERATION PROFILE
- AX = 002Dh
- BX = acceleration level (01h to 04h)
- Note: acceleration of FFFFh appears to be legal as well, since it is used
- by the MS Control Panel v7.04
- SeeAlso: AX=0013h,AX=002Ch
- ----------330042-----------------------------
- INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
- AX = 0042h
- Return: AX = FFFFh successful
- BX = buffer size in bytes for functions 50h and 52h
- = 0000h MSMOUSE not installed
- = 0042h functions 42h, 50h, and 52h not supported
- SeeAlso: AX=0015h,AX=0050h
- ----------330043-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 0043h
- CX:BX -> ??? (10 bytes of data)
- DL = ???
- Return: ???
- ----------330044CXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - TOGGLE ???
- AX = 0044h
- CX = CDEFh
- Return: AX = new state of ???
- SeeAlso: AX=0045h
- ----------330045CXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - TOGGLE ???
- AX = 0045h
- CX = CDEFh
- Return: AX = new state of ???
- SeeAlso: AX=0044h
- ----------330047-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 0047h
- ES:BX -> ???
- Return: ???
- ----------330048BXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET ???
- AX = 0048h
- BX = CDEFh
- Return: CX = ???
- BH = ???
- BL = ???
- ----------33004CBXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET ??? FLAG
- AX = 004Ch
- BX = CDEFh
- SeeAlso: AX=006Ch
- ----------33004D-----------------------------
- INT 33 - MS MOUSE, LOGITECH - RETURN POINTER TO COPYRIGHT STRING
- AX = 004Dh
- Return: ES:DI -> copyright message "Copyright 1983 Microsoft ***"
- Note: also supported by Kraft mouse driver
- SeeAlso: AX=0024h,AX=006Dh
- ----------33004F-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 004Fh
- ???
- Return: ???
- ----------330050-----------------------------
- INT 33 - PCMOUSE - SAVE MSMOUSE STATE
- AX = 0050h
- BX = buffer size
- ES:DX -> buffer
- Return: AX = FFFFh if successful
- SeeAlso: AX=0042h,AX=0052h
- ----------330052-----------------------------
- INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
- AX = 0052h
- BX = buffer size
- ES:DX -> buffer
- Return: AX = FFFFh if successful
- SeeAlso: AX=0050h
- ----------330053-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 0053h
- ???
- Return: ???
- ----------330054CXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 0054h
- CX = CDEFh
- BX = ???
- Return: ???
- ----------330055-----------------------------
- INT 33 - Kraft Mouse - GET ???
- AX = 0055h
- Return: CX = ???
- DX = ???
- ES = ???
- ----------330058-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 0058h
- Return: AX = CS of driver
- CX:BX -> ???
- DX = ???
- ----------33005A-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 005Ah
- ???
- Return: ???
- ----------330061BXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 0061h
- BX = CDEFh
- Return: CX = ???
- ----------330067-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 0067h
- Return: BL = ???
- ----------33006CBXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 006Ch
- BX = CDEFh
- SeeAlso: AX=004Ch
- ----------33006D-----------------------------
- INT 33 - MS MOUSE, Logitech - GET VERSION STRING
- AX = 006Dh
- Return: ES:DI -> Microsoft version number of resident driver
- Note: also supported by Mouse Systems and Kraft mouse drivers
- SeeAlso: AX=004Dh,AX=266Ch
- ----------330070BXABCD-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER - INSTALLATION CHECK
- AX = 0070h
- BX = ABCDh
- Return: AX = ABCDh if installed
- BX:CX -> data structure (see below)
-
- Format of data structure:
- Offset Size Description
- 00h WORD signature ABCDh
- 02h DWORD pointer to info structure???
- 06h 2 BYTEs ???
- 08h WORD signature ABCDh
-
- Format of info structure:
- Offset Size Description
- 00h WORD driver version
- 02h 8 BYTEs ???
- 0Ah WORD segment of ???
- ???
- ----------330072BXABCD-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 0072h
- BX = ABCDh
- Return: ???
- ----------330073BXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ???
- AX = 0073h
- BX = CDEFh
- DS:DX -> ??? (3 bytes of data)
- Return: CX = ???
- ----------331D6C-----------------------------
- INT 33 - LOGITECH - GET COMPASS PARAMETER
- AX = 1D6Ch
- Return: BX = direction (0=north, 1=south, 2=east, 3=west)
- SeeAlso: AX=1E6Ch
- ----------331E6C-----------------------------
- INT 33 - LOGITECH - SET COMPASS PARAMETER
- AX = 1E6Ch
- BX = direction (0=north, 1=south, 2=east, 3=west)
- SeeAlso: AX=1D6Ch
- ----------331F6C-----------------------------
- INT 33 - LOGITECH - GET BALLISTICS INFORMATION
- AX = 1F6Ch
- Return: BX = 0=off, 1=on
- CX = 1=low, 2=high
- SeeAlso: AX=002Ch,AX=236Ch
- ----------33206C-----------------------------
- INT 33 - LOGITECH - SET LEFT OR RIGHT PARAMETER
- AX = 206Ch
- BX = parameter (00h = right, FFh = left)
- SeeAlso: AX=216Ch
- ----------33216C-----------------------------
- INT 33 - LOGITECH - GET LEFT OR RIGHT PARAMETER
- AX = 216Ch
- Return: BX = parameter (00h = right, FFh = left)
- SeeAlso: AX=206Ch
- ----------33226C-----------------------------
- INT 33 - LOGITECH - REMOVE DRIVER FROM MEMORY
- AX = 226Ch
- Note: this only frees memory; does not restore hooked interrupts
- ----------33236C-----------------------------
- INT 33 - LOGITECH - SET BALLISTICS INFORMATION
- AX = 236Ch
- BX = 0=off, 1=on
- CX = 1=low, 2=high
- SeeAlso: AX=002Ch,AX=1F6Ch
- ----------33246C-----------------------------
- INT 33 - LOGITECH - GET PARAMETERS AND RESET SERIAL MOUSE
- AX = 246Ch
- ES:DX -> parameter table buffer (see below)
- Return: AX = FFFFh if driver installed for serial mouse
- SeeAlso: AX=0000h,AX=256Ch
-
- Format of parameter table:
- Offset Size Description
- 00h WORD baud rate divided by 100 (serial mouse only)
- 02h WORD emulation (serial mouse only)
- 04h WORD report rate (serial mouse only)
- 06h WORD firmware revision (serial mouse only)
- 08h WORD 0 (serial mouse only)
- 0Ah WORD port (serial mouse only)
- 0Ch WORD physical buttons
- 0Eh WORD logical buttons
- ----------33256CBX00h -----------------------
- INT 33 - LOGITECH - SET PARAMETERS
- AX = 256Ch
- BX = 00h set baud rate (serial mouse only)
- CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
- = 01h set emulation (serial mouse only)
- CX = emulation
- 0 = 5 byte packed binary
- 1 = 3 byte packed binary
- 2 = hexadecimal
- 3 = relative bit pad
- 4 = not supported
- 5 = MM Series
- 6 = not supported
- 7 = Microsoft
- = 02h set report rate (serial mouse only)
- CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
- = 03h set port (serial mouse only)
- CX = port (1, 2)
- = 04h set mouse logical buttons
- CX = buttons (2, 3)
- Return: AX = FFFFh if driver installed for serial mouse
- SeeAlso: AX=246Ch,AX=276Ch
- ----------33266C-----------------------------
- INT 33 - LOGITECH - GET VERSION???
- AX = 266Ch
- Return: BX = 'SS'
- CH = '4' major version number
- CL = '1' minor version number
- SeeAlso: AX=006Dh
- ----------33276C-----------------------------
- INT 33 - LOGITECH - ??? Tries MMSeries, Baud 2400
- AX = 276Ch
- SeeAlso: AX=256Ch
- ----------34---------------------------------
- INT 34 - FLOATING POINT EMULATION - OPCODE D8h
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 35,INT 3E
- ----------35---------------------------------
- INT 35 - FLOATING POINT EMULATION - OPCODE D9h
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 34,INT 36
- ----------36---------------------------------
- INT 36 - FLOATING POINT EMULATION - OPCODE DAh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 35,INT 37
- ----------37---------------------------------
- INT 37 - FLOATING POINT EMULATION - OPCODE DBh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 36,INT 38
- ----------38---------------------------------
- INT 38 - FLOATING POINT EMULATION - OPCODE DCh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 37,INT 39
- ----------39---------------------------------
- INT 39 - FLOATING POINT EMULATION - OPCODE DDh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 38,INT 3A
- ----------3A---------------------------------
- INT 3A - FLOATING POINT EMULATION - OPCODE DEh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 39,INT 3B
- ----------3B---------------------------------
- INT 3B - FLOATING POINT EMULATION - OPCODE DFh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 3A,INT 3C
- ----------3C---------------------------------
- INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
- Notes: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- the generated code is CD 3C xy mm ....
- where xy is a modified ESC instruction and mm is the modR/M byte.
- The xy byte appears to be encoded as
- s s 0 1 1 x x x or s s 0 0 0 x x x
- where "ss" specifies the segment override:
- 00 -> DS:
- 01 -> SS:
- 10 -> CS:
- 11 -> ES:
- SeeAlso: INT 3B,INT 3D
- ----------3D---------------------------------
- INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
- Note: the floating-point emulators in Borland and Microsoft languages use
- this interrupt
- SeeAlso: INT 3C,INT 3E
- ----------3E---------------------------------
- INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
- Note: the two bytes following the INT 3E instruction are the subcode and
- a NOP (90h)
- SeeAlso: INT 3D
-
- Subcode Function
- DCh load 8086 stack with 8087 registers
- DEh load 8087 registers from 8086 stack
- E0h round TOS and R1 to single precision, compare, pop twice
- E2h round TOS and R1 to double precision, compare, pop twice
- Note: apparently buggy in TPas5.5, actually rounding to single prec.
- E4h compare TOS/R1 with two POP's
- E6h compare TOS/R1 with POP
- E8h FTST (check TOS value)
- EAh FXAM (check TOS value)
- ECh sine
- EEh cosine
- F0h tangent
- F2h arctangent
- F4h Ln (FLDLN2 to TOS)
- F6h Log2 (FLDLG2 to TOS)
- F8h Log10 (FLDLG10 to TOS
- FAh Exp (FLDL2E to TOS)
- FCh TOS = 2**TOS
- FEh TOS = 10**TOS
- ----------3F---------------------------------
- INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
- Note: INT 3F is the default, and may be overridden while linking
- SeeAlso: INT FE"OVERLAY"
- ----------3F---------------------------------
- INT 3F - Microsoft Dynamic Link Library manager
- SeeAlso: INT 21/AH=4Bh
- ---------------------------------------------
-