Bit AC in the EFLAGS register enables this interrupt on a memory reference on a mis-aligned address when in privilege mode 3.
Return: AX = BIOS equipment list word bits 0 floppy disk(s) installed (see bits 6-7) 1 80x87 coprocessor installed 2,3 number of 16K banks of RAM on motherboard (PC only) number of 64K banks of RAM on motherboard (XT only) 2 pointing device installed (PS) 3 unused (PS) 4-5 initial video mode 00 EGA, VGA, or PGA 01 40x25 color 10 80x25 color 11 80x25 monochrome 6-7 number of floppies installed less 1 (if bit 0 set) 8 DMA support installed (PCjr, some Tandy 1000s, 1400LT) 9-11 number of serial ports installed 12 game port installed 13 serial printer attached (PCjr) internal modem installed (PC/Convertible) 14-15 number of parallel ports installed
—Compaq and many other 386/486 machines–
EAX bit 23: page tables set so that Weitek coprocessor addressable in
real mode
bit 24: Weitek math coprocessor present
—Compaq Systempro
EAX bit 25: internal DMA parallel port available
26: IRQ for internal DMA parallel port (if bit 25 set)
0 = IRQ5
1 = IRQ7
27,28: parallel port DMA channel
00 DMA channel 0
01 DMA channel 0 ???
10 reserved
11 DMA channel 3
SeeAlso: INT 12
AH = BCh DX = 1954h
Return: AX = 1954h
ES:DX -> entry point of driver (instead of INT 14)
AH = FFh
SI = 6A6Ah
AL = SCSI Addressing
bits 2-0 SCSI Target LUN (logical unit number)
bits 5-3 SCSI Target ID
bit 7 write flag, set for write operations, clear otherwise
CX = bytes of data to be transmitted (max FFF0h)
DH = 00h
DL = length of SCSI Command Descriptor Block
DS:DI -> SCSI Command Descriptor Block
ES:BX -> data buffer
Return: CF set on error
AL = error code CF clear if successful
Note: because of busmaster operations with WD7000FASST avoid accessing
video memory directly; check 386 memory manager for VDS support. The WD7000XTAT works with programmed IO and does not have this limitation.
SeeAlso: INT 21/AX=4402“ASPI”
AX = FFFEh
CX = FFFEh
BX = function
00h installation check
Return: AX = 0001h BNFHIGH and BNFLOW both loaded
= 0003h only BNFHIGH loaded
else neither loaded
01h ???
Return: DX:AX -> ???
02h ???
03h ???
04h ???
05h ??? switches current PSP segment and stack if BNFLOW has not
yet announced itself installed
06h ???
Return: AX = ???
SeeAlso: INT 12/AX=FFFEh
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h Note: this call returns the contents of the word at 0040h:0013h; in PC and
XT, this value is set from the switches on the motherboard
SeeAlso: INT 11,INT 2F/AX=4A06h
CX = 1806h
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
CX = 1960h if installed
Note: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
accented characters and box drawing on standard QWERTY keyboards; it also provides break-to-DOS and screen blanking capabilities
CX = 1807h
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
CX = 1961h if installed
Note: PARKER is an optionally-resident hard disk parking program by Johan
Zwiekhorst
AX = FFFEh
CX = FFFEh
BX = function
00h installation check
Return: AX = 0001h installed
else not loaded
02h build program ID list
ES:DI -> buffer of at least 100 bytes, to be filled with words
Return: AX = number of programs defined
ES:DI buffer filled with AX words
03h switch to specified task (task need not be open yet)
DX = two-letter program ID
Return: AX = 0000h if task undefined
04h ???
05h ???
06h get version (undoc)
Return: AX = version * 100 (v1.71 = 00ABh)
07h ???
08h get open tasks (undoc)
ES:DI -> task info buffer (see below)
Return: AX = number of open tasks (max 20)
09h ???
Note: Back & Forth is a task switcher by Progressive Solutions, Inc. SeeAlso: INT 11/AX=FFFEh
Format of task info buffer: Offset Size Description 00h 21 BYTEs ASCIZ task name 15h BYTE hotkey shift state (as for INT 16/AH=02h) 16h WORD hotkey scan code 18h WORD program ID
AH = 00h DL = drive (if bit 7 is set both hard disks and floppy disks reset)
Return: AH = status (see AH=01h)
CF clear if successful (returned AH=00h) CF set on error
Note: forces controller to recalibrate drive heads (seek to track 0) SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4E“TI Professional”
AH = 01h DL = drive (bit 7 set for hard disk)
Return: CF clear if successful (returned status 00h)
CF set on error
AH = status of previous operation
00h successful completion
01h invalid function in AH or invalid parameter
02h address mark not found
03h disk write-protected (floppy)
04h sector not found
05h reset failed (hard disk)
06h disk changed (floppy)
07h drive parameter activity failed (hard disk)
08h DMA overrun
09h attempted DMA across 64K boundary
0Ah bad sector detected (hard disk)
0Bh bad track detected (hard disk)
0Ch unsupported track or invalid media
0Dh invalid number of sectors on format (hard disk)
0Eh control data address mark detected (hard disk)
0Fh DMA arbitration level out of range (hard disk)
10h uncorrectable CRC or ECC error on read
11h data ECC corrected (hard disk)
20h controller failure
40h seek failed
80h timeout (not ready)
AAh drive not ready (hard disk)
BBh undefined error (hard disk)
CCh write fault (hard disk)
E0h status register error (hard disk)
FFh sense operation failed (hard disk)
Note: some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
status in both AH and AL
AH = 02h
AL = number of sectors to read (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer
Return: CF set on error
if AH = 11h (corrected ECC error), AL = burst length CF clear if successful AH = status (see AH=01h) AL = number of sectors transferred
Notes: errors on a floppy may be due to the motor failing to spin up quickly
enough; the read should be retried at least three times, resetting the disk with AH=00h between attempts AWARD AT BIOS extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
SeeAlso: AH=03h,AH=0Ah
AH = 03h AL = number of sectors to write (must be nonzero) CH = low eight bits of cylinder number CL = sector number (bits 0-5) high two bits of cylinder (bits 6-7, hard disk only) DH = head number DL = drive number (bit 7 set for hard disk) ES:BX -> data buffer Return: CF set on error CF clear if successful AH = status (see AH=01h) AL = number of sectors transferred Notes: errors on a floppy may be due to the motor failing to spin up quickly enough; the write should be retried at least three times, resetting the disk with AH=00h between attempts AWARD AT BIOS extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
SeeAlso: AH=02h,AH=0Bh
AH = 04h
AL = number of sectors to verify (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
Return: CF set on error
CF clear if successful AH = status (see AH=01h) AL = number of sectors verified
Notes: errors on a floppy may be due to the motor failing to spin up quickly
enough; the write should be retried at least three times, resetting the disk with AH=00h between attempts this function does not compare the disk with memory, it merely checks whether the sector's stored CRC matches the data's actual CRC AWARD AT BIOS extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
SeeAlso: AH=02h
AH = 05h AL = number of sectors to format CH = track number DH = head number DL = drive number ES:BX -> address field buffer (see below)
Return: CF set on error
CF clear if successful AH = status (see AH=01h)
Notes: on AT or higher, call AH=17h first
the number of sectors per track is read from the diskette parameter table pointed at by INT 1E
SeeAlso: AH=05h“FIXED”,AH=17h,AH=18h,INT 1E
Format of address field buffer entry (one per sector in track): Offset Size Description 00h BYTE track number 01h BYTE head number (0-based) 02h BYTE sector number 03h BYTE sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
AH = 05h AL = interleave value (XT-type controllers only) ES:BX = 512-byte format buffer the first 2*(sectors/track) bytes contain F,N for each sector F = 00h for good sector, 80h for bad sector N = sector number CH = cylinder number (bits 8,9 in high bits of CL) CL = high bits of cylinder number (bits 7,6) DH = head DL = drive
Return: AH = status code (see AH=01h) Notes: AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH for XT-type controllers on an AT or higher, AH=0Fh should be called first
SeeAlso: AH=05h“FLOPPY”,AH=06h,AH=07h,AH=0Fh,AH=18h,AH=1Ah
AH = 06h AL = interleave value CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive
Return: AH = status code (see AH=01h) Note: AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
AH = 07h AL = interleave value (XT only) ES:BX = 512-byte format buffer (see AH=05h) CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive
Return: AH = status code (see AH=01h) Note: AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
SeeAlso: AH=1Ah
AH = 08h DL = drive (bit 7 set for hard disk)
Return: CF set on error
AH = status (07h) (see AH=01h)
CF clear if successful
AH = 00h
BL = drive type (AT/PS2 floppies only)
01h 360K
02h 1.2M
03h 720K
04h 1.44M
06h ??? (checked by 386MAX v6.01)
CH = low eight bits of maximum cylinder number
CL = maximum sector number (bits 5-0)
high two bits of maximum cylinder number (bits 7-6)
DH = maximum head number
DL = number of drives
ES:DI -> drive parameter table (floppies only)
Notes: may return successful even though specified drive is greater than the
number of attached drives of that type (floppy/hard); check DL to ensure validity for systems predating the IBM AT, this call is only valid for hard disks, as it is implemented by the hard disk BIOS rather than the ROM BIOS Toshiba laptops with HardRAM return DL=02h when called with DL=80h, but fail on DL=81h. The BIOS data at 40h:75h correctly reports 01h.
SeeAlso: AH=15h,INT 1E,INT 41
AH = 09h DL = drive (80h for first, 81h for second)
Return: CF clear if successful
CF set on error AH = status (see AH=01h)
Notes: on the PC and XT, this function uses the parameter table pointed at by
INT 41 on the AT and later, this function uses the parameter table pointed at by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if DL=81h
SeeAlso: INT 41,INT 46
AH = 0Ah
AL = number of sectors
CH = low eight bits of cylinder number
CL = sector number (bits 5-0)
high two bits of cylinder number (bits 7-6)
DH = head number
DL = drive number (80h = first, 81h = second)
ES:BX -> data buffer
Return: CF clear if successful
CF set on error AH = status (see AH=01h) AL = number of sectors transferred
Notes: this function reads in four to seven bytes of error-correcting code
along with each sector's worth of information data errors are not automatically corrected, and the read is aborted after the first sector with an ECC error used for diagnostics only on PS/2 systems
SeeAlso: AH=02h,AH=0Bh
AH = 0Bh
AL = number of sectors
CH = low eight bits of cylinder number
CL = sector number (bits 5-0)
high two bits of cylinder number (bits 7-6)
DH = head number
DL = drive number (80h = first, 81h = second)
ES:BX -> data buffer
Return: CF clear if successful
CF set on error AH = status (see AH=01h) AL = number of sectors transferred
Notes: each sector's worth of data must be followed by four to seven bytes of
error-correction information used for diagnostics only on PS/2 systems
SeeAlso: AH=03h,AH=0Ah
AH = 0Ch
CH = low eight bits of cylinder number
CL = sector number (bits 5-0)
high two bits of cylinder number (bits 7-6)
DH = head number
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful AH = status (see AH=01h)
SeeAlso: AH=00h,AH=02h,AH=0Ah
AH = 0Dh DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful AH = status (see AH=01h)
Notes: reinitializes the hard disk controller, resets the specified drive's
parameters, and recalibrates the drive's heads (seek to track 0) not for PS/2 ESDI drives
SeeAlso: AH=00h,INT 21/AH=0Dh
AH = 0Eh DL = drive number (80h = first, 81h = second hard disk) ES:BX -> buffer
Return: CF set on error
CF clear if successful AH = status code (see AH=01h)
Notes: transfers controller's sector buffer. No data is read from the drive
used for diagnostics only on PS/2 systems
SeeAlso: AH=0Ah
AH = 0Fh DL = drive number (80h = first, 81h = second hard disk) ES:BX -> buffer
Return: CF set on error
CF clear if successful AH = status code (see AH=01h)
Notes: does not write data to the drive
should be called before formatting to initialize an XT-type controller's sector buffer used for diagnostics only on PS/2 systems
SeeAlso: AH=0Bh
AH = 10h DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful AH = status (see AH=01h)
AH = 11h DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful AH = status (see AH=01h)
Note: causes hard disk controller to seek the specified drive to cylinder 0 SeeAlso: AH=00h,AH=0Ch,AH=19h“FIXED DISK”
AH = 12h DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful AH = status code (see AH=01h)
SeeAlso: AH=13h,AH=14h
AH = 12h DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h)
Notes: available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
if the given drive is a SCSI device, the SCSI Stop Unit command is sent and either "Disk prepared for shipping" or "Disk Stop command failed" is displayed
AH = 13h DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful AH = status code (see AH=01h)
SeeAlso: AH=12h,AH=14h
AH = 14h
Return: CF set on error
CF clear if successful AH = status code (see AH=01h)
SeeAlso: AH=12h,AH=13h
AH = 15h DL = drive number (bit 7 set for hard disk)
Return: CF clear if successful
AH = type code
00h no such drive
01h floppy without change-line support
02h floppy with change-line support
03h hard disk
CX:DX = number of 512-byte sectors
CF set on error
AH = status (see AH=01h)
SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h“SCSI”
AH = 16h DL = drive number
Return: CF clear if change line inactive
AH = 00h (disk not changed)
CF set if change line active
AH = 06h change line active or not supported
= 80h drive not ready or not present
Note: call AH=15h first to determine whether the drive supports a change
line
SeeAlso: AH=15h
AH = 17h
AL = format type
01h = 320/360K disk in 360K drive
02h = 320/360K disk in 1.2M drive
03h = 1.2M disk in 1.2M drive
04h = 720K disk in 720K drive
DL = drive number
Return: CF set on error
CF clear if successful AH = status (see AH=01h)
Note: this function does not handle 1.44M drives; use AH=18h instead SeeAlso: AH=15h,AH=18h
AH = 18h
DL = drive number
CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
CL = sectors per track (bits 0-5)
top 2 bits of highest cylinder number (bits 6,7)
Return: AH = status
00h requested combination supported
01h function not available
0Ch not supported or drive type unknown
80h there is no disk in the drive
ES:DI -> 11-byte parameter table
SeeAlso: AH=05h,AH=07h,AH=17h
AH = 18h DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h)
CF clear if successful
AX = 4321h (magic number???)
BH = number of SCSI drives connected
BL = SCSI device number for specified drive
CX = 040Ah (magic number???)
Note: also sets an internal flag (non-resettable) which prevents some
controller messages from being displayed, allows writes to removable devices, and enables the INT 13 interface for more than one drive (i.e. DL >= 81h)
SeeAlso: AH=1Bh“SCSI”
AH = 19h DL = drive
Return: CF set on error
AH = status (see AH=01h)
SeeAlso: AH=11h
AH = 19h DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h)
CF clear if successful
AH = disk type (03h = fixed disk)
CX:DX = number of 512-byte sectors
Notes: sends SCSI Read Capacity command to get number of logical blocks and
adjusts the result for 512-byte sectors displays either "Error in Read Capacity Command" or "nnn Bytes per sector" (nnn=256 or 512, the only sizes supported in the translation code) should probably be called when a removable device has its media changed returns the same values as AH=15h
SeeAlso: AH=15h,AH=1Ah
AH = 1Ah
AL = defect table count
CL = format modifiers
bit 4: generate periodic interrupt
bit 3: perform surface analysis
bit 2: update secondary defect map
bit 1: ignore secondary defect map
bit 0: ignore primary defect map
DL = drive
ES:BX -> defect table
Return: CF set on error
AH = status (see AH=01h)
Note: if periodic interrupt selected, INT 15/AH=0Fh is called after each
cylinder is formatted
SeeAlso: AH=07h,INT 15/AH=0Fh
AH = 1Ah CH = track (bits 8,9 in high bits of CL) CL = sector (01h to number of sectors/track for drive) DH = head DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h) CX:DX = logical block number of last quickly-accessible block after given block
Note: sends SCSI Read Capacity command with the PMI bit set to obtain the
logical block address of the last block after which a substantial delay in data transfer will be encountered (usually the last block on the current cylinder). No translation to 512 byte sectors is performed on the result if data is stored on the disk in other than 512 byte sectors.
SeeAlso: AH=15h,AH=19h“SCSI”
AH = 1Bh AL = number of record DL = drive ES:BX -> buffer for manufacturing header (defect list)
Return: CF set on error
AH = status
Note: manufacturing header format (Defect Map Record format) can be found
in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
AH = 1Bh DL = hard drive ID
Return: CF set on error
AH = status code (see AH=01h)
CF clear if successful
ES:BX -> SCSI disk information block
Note: also sets a non-resettable flag which prevents some controller messages
from being displayed
SeeAlso: AH=18h“SCSI”,AH=1Ch“SCSI”
Format of SCSI disk information block: Offset Size Description 00h BYTE drive physical information
bit 0: ??? bit 1: device uses parity bit 2: 256 bytes per sector instead of 512 bit 3: don't have capacity yet??? bit 4: disk is removable bit 5: logical unit number is not present
01h WORD translated number of cylinders 03h BYTE translated number of heads 04h BYTE translated number of sectors per track (17, 34, or 63) 05h BYTE drive address
bits 0-2: logical unit number bits 3-5: device number
06h BYTE 01h at initialization 07h BYTE sense code byte 00h, or extended sense code byte 0Ch 08h BYTE 00h 09h BYTE 00h or extended sense code byte 02h (sense key) 0Ah BYTE 00h 0Bh 10 BYTEs copy of Command Descriptor Block (CDB) 15h DWORD translated number of sectors on device
AH = 1Ch DL = hard drive ID (any valid SCSI hard disk)
Return: CF set on error
AH = status code (see AH=01h)
CF clear if successful
ES:BX -> first byte of free RAM on controller
Notes: the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
to 1BFFh on-bard the controller for storing drive information and controller status; ES:BX points to the first byte available for other uses ES contains the segment at which the controller resides; the controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
SeeAlso: AH=1Bh“SCSI”
AX = 1C0Ah DL = drive ES:BX -> buffer for device configuration (drive physical parameter)
Return: CF set on error
AH = status
Note: device configuration format can be found in IBM ESDI Fixed Disk Drive
Adapter/A Technical Reference
AX = 1C0Bh ES:BX -> buffer for adapter configuration
Return: CF set on error
AH = status
SeeAlso: AX=1C0Ch
AX = 1C0Ch ES:BX -> POS information
Return: CF set on error
AH = status
SeeAlso: AX=1C0Bh
AX = 1C0Eh CH = low 8 bits of cylinder number CL = sector number, high two bits of cylinder number in bits 6 and 7 DH = head number DL = drive number ES:BX -> ABA number
Return: CF set on error
AH = status
Note: ABA (absolute block address) format can be found in IBM ESDI Adapter
Technical Reference by using its Device Configuration Status Block
AH = 1Dh
AL = subfunction
01h get status record
DL = drive???
Return: ES:BX -> status record
CF set on error
AH = error code
02h set cache status
ES:BX -> status record
DL = drive???
Return: CF set on error
Format of status record: Offset Size Description 00h DWORD total number of read requests 04h DWORD total number of hits 08h DWORD number of physical disk reads 0Ch DWORD total number of sectors requested by physical disk reads 10h 6 bytes ??? 16h DWORD pointer to start of error list 1Ah DWORD pointer to end of error list 1Eh WORD ??? 20h BYTE using extended memory if nonzero 21h BYTE ??? 22h 4 BYTEs ASCII version number 26h WORD cache size in K 28h WORD sectors per page
Format of error list: Offset Size Description 00h DWORD relative block address of bad page 04h BYTE drive 05h BYTE sector bit-map 06h WORD next error
AH = 20h ???
Return: ??? Note: seems to return some kind of status
AX = 20FFh
Return: ???
AH = 21h
Return: ??? SeeAlso: AH=25h,AH=2Eh
AH = 22h
AL = 00h disable cache
01h enable cache
AH = 24h BX = number of sectors
Return: ???
AH = 25h BC = interval
Return: ??? SeeAlso: AH=21h,AH=2Eh
AH = 27h BX = 0000h
Return: BX nonzero if installed
AH = 2Ah AL = buffer size
Return: ???
AH = 2Ch
AL = state
00h disable
01h enable
Return: ??? SeeAlso: AH=2Dh
AH = 2Dh
AL = state
00h disable
01h enable
Return: ??? SeeAlso: AH=2Ch
AH = 2Eh BX = flush count
Return: ??? SeeAlso: AH=21h,AH=25h
AH = 30h
AL = what to get
00h system info
01h drive info
DS:DX -> buffer for info
Return: ???
AH = 70h ???
Return: ??? Note: Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
formatting program) make this call, presumably to EDVR.SYS (the partitioning driver)
SeeAlso: AH=ADh
AH = 75h ???
Return: AH = ???
???
Note: intercepted by PC-Cache (v5.1 only)
AH = 76h ???
Return: AH = ???
???
Note: intercepted by PC-Cache (v5.1 only)
AH = 80h
CX = 6572h
DX = 1970h
ES:BX -> data structure (see below)
AL = function
01h ???
04h ???
05h ???
06h installation check
Return: AX = 1965h if installed
07h ???
09h ???
0Ah ???
0Bh ???
0Ch set ??? flag
0Dh clear ??? flag
Return: AH = 00h if successful (except function 06h)
Format of data structure: Offset Size Description 00h DWORD pointer to 19-byte signature string
13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h (v4.04)
04h ??? ???
AH = 81h SI = 4358h ???
Return: ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call returns immediately in PC-Cache v5.x
AH = 82h SI = 4358h ???
Return: AL = ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: AH=84h
AH = 83h SI = 4358h AL = ??? ES:BX -> ??? ???
Return: ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: AH=85h
AH = 84h SI = 4358h AL = ??? ???
Return: AL = ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: AH=82h
AH = 85h SI = 4358h AL = ??? DL = ??? ???
Return: ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: AH=83h
AH = 86h SI = 4358h ???
Return: ??? ———-1387–SI4358———————– INT 13 - Qualitas Qcache v4.00 - ???
AH = 87h SI = 4358h ???
Return: ??? ———-1388–SI4358———————– INT 13 - Qualitas Qcache v4.00 - ???
AH = 88h SI = 4358h ???
Return: ??? ———-138EED—————————– INT 13 - HyperDisk v4.01+ - ???
AX = 8EEDh ???
Return: ??? Note: HyperDisk is a shareware disk cache by HyperWare (Roger Cross) SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh ———-138EEE—————————– INT 13 - HyperDisk v4.01+ - ???
AX = 8EEEh
Return: CF set
AX = CS of HyperDisk resident code ???
Note: identical to AX=8EEFh in HYPERDKX v4.21-4.30 SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh ———-138EEF—————————– INT 13 - HyperDisk v4.01+ - ???
AX = 8EEFh
Return: CF set
AX = CS of HyperDisk resident code ???
Note: identical to AX=8EEEh in HYPERDKX v4.21-4.30 SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh ———-13A0–SI4358———————– INT 13 - Super PC Kwik - GET RESIDENT CODE SEGMENT
AH = A0h SI = 4358h
Return: AX = segment of resident code Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: INT 16/AX=FFA5h/CX=1111h ———-13A1–SI4358———————– INT 13 - Super PC Kwik - FLUSH CACHE
AH = A1h SI = 4358h
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
SeeAlso: INT 16/AX=FFA5h/CX=FFFFh ———-13A2–SI4358———————– INT 13 - Super PC Kwik - ???
AH = A2h SI = 4358h ???
Return: ??? Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC Kwik, and thus support this call
———-13A5——————————- INT 13 - Super PC Kwik - ???
AH = A5h SI = ???
Return: AX = ???
SI = ???
Notes: called when a program terminates but stays resident (see INT 21/AH=31h)
this call is not supported by Qualitas Qcache 4.00
———-13AA–SI4358———————– INT 13 - Qualitas Qcache v4.00 - ???
AH = AAh SI = 4358h ???
Return: ??? ———-13AB–SI4358———————– INT 13 - Qualitas Qcache v4.00 - ???
AH = ABh SI = 4358h ???
Return: ??? ———-13AC–SI4358———————– INT 13 - Qualitas Qcache v4.00 - ???
AH = ACh SI = 4358h ???
Return: ??? ———-13AD——————————- INT 13 - Priam HARD DISK CONTROLLER???
AH = ADh ???
Return: ??? Note: this call is made from Priam's EFMT.EXE (low-level formatter), probably
to check the ROM type on the controller for their hard disk kits
SeeAlso: AH=70h ———-13AD–SI4358———————– INT 13 - Qualitas Qcache v4.00 - ???
AH = ADh SI = 4358h ???
Return: ??? ———-13B0–SI4358———————– INT 13 - Super PC Kwik - ???
AH = B0h SI = 4358h ???
Return: ??? Note: PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
supports this call; Qualitas Qcache does not support it
———-13EE——————————- INT 13 - SWBIOS - SET 1024 CYLINDER FLAG
AH = EEh DL = drive number (80h, 81h)
Return: CF clear
AH = 00h
Notes: the following INT 13 call will interpret the cylinder number as 1024
less than the desired cylinder flag cleared by all INT 13 calls except AH=EEh SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports these calls also supported by HyperDisk v4.01+ and PC-Cache v5.5+, in order to allow caching of drives using SWBIOS to access more than 1024 cylinders
SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh ———-13F9——————————- INT 13 - SWBIOS - INSTALLATION CHECK
AH = F9h DL = drive number (80h,81h)
Return: CF clear
DX = configuration word bit 15 set if other SWBIOS extensions available CF set on error
Note: SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
these calls
SeeAlso: AH=EEh ———-13FE——————————- INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
AH = FEh DL = drive number (80h, 81h)
Return: CF clear
DX = number of cylinders beyond 1024 on drive
Notes: standard INT 13/AH=08h will return a cylinder count truncated to 1024
BIOS without this extension would return count modulo 1024 SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports these calls
SeeAlso: AH=EEh
Note: the installation check for this driver is to determine whether the
"~DOSXAM~" character device exists
———-1400——————————- INT 14 - SERIAL - INITIALIZE PORT
AH = 00h
AL = port parameters
bits 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
bit 2 stop bits (set = 2, clear = 1)
bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
Return: AH = line status (see AH=03h)
FFh if error on Digiboard XAPCM232.SYS AL = modem status (see AH=03h)
Notes: default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
since the PCjr supports a maximum of 4800 bps, attempting to set 9600 bps will result in 4800 bps
SeeAlso: AH=04h“SERIAL”,AH=04h“MultiDOS”,AH=05h“SERIAL”,AH=81h“COMM-DRV” SeeAlso: AH=82h“COURIERS”,AH=8Ch ———-1400——————————- INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
AH = 00h
AL = initializing parameters
7 - 6 - 5 4 - 3 2 1 - 0
-BAUD RATE- PARITY STOP WORD
BITS LENGTH
000 19200 bd 00 none 0: 1 00: 5
001 38400 bd 01 odd 1: 2 01: 6
010 300 bd 11 even 10: 7
011 600 bd 11: 8
100 1200 bd
101 2400 bd
110 4800 bd
111 9600 bd (4800 on PCjr)
DX = port number (0-3 or FFh if only performing non-I/O setup)
Return: AH = RS-232 status code bits
0: RDA - input data is available in buffer
1: OVRN - data has been lost
5: THRE - room is available in output buffer
6: TSRE - output buffer empty
AL = modem status bits
3: always 1
7: DCD - carrier detect
SeeAlso: AH=05h“FOSSIL”,AH=81h“COMM-DRV”,AH=82h“COURIERS” ———-1400——————————- INT 14 - MBBIOS - INITIALIZE PORT
AH = 00h
AL = port parameters
bits 7-5 data rate
(normally 110,150,300,600,1200,2400,4800,9600 bps;
9600,14400,19200,28800,38400,57600,115200,330400 bps
if the high-speed option is set)
bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
bit 2 stop bits (set = 2, clear = 1)
bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
DX = port number
Return: AH = line status (see AH=03h)
AL = modem status (see AH=03h)
Note: MBBIOS was written by H. Roy Engehausen SeeAlso: AH=04h“MBBIOS”,AH=05h“MBBIOS” ———-1401——————————- INT 14 - SERIAL - WRITE CHARACTER TO PORT
AH = 01h AL = character to write DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
Return: AH bit 7 clear if successful
AH bit 7 set on error AH bits 6-0 = port status (see AH=03h)
SeeAlso: AH=02h,AH=0Bh“FOSSIL”,AH=89h ———-1402——————————- INT 14 - SERIAL - READ CHARACTER FROM PORT
AH = 02h DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
Return: AH = line status (see AH=03h)
AL = received character if AH bit 7 clear
Note: will timeout if DSR is not asserted, even if function 03h returns
data ready
SeeAlso: AH=01h,AH=02h“FOSSIL”,AH=84h,AH=FCh ———-1402——————————- INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
AH = 02h DX = port number (0-3)
Return: AL = character received
AH = 00h
SeeAlso: AH=01h,AH=02h“SERIAL” ———-1403——————————- INT 14 - SERIAL - GET PORT STATUS
AH = 03h DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
Return: AH = line status
bit 7: timeout
6: transmit shift register empty
5: transmit holding register empty
4: break detected
3: framing error
2: parity error
1: overrun error
0: receive data ready
AL = modem status
bit 7: carrier detect
6: ring indicator
5: data set ready
4: clear to send
3: delta carrier detect
2: trailing edge of ring indicator
1: delta data set ready
0: delta clear to send
SeeAlso: AH=00h,AH=07h“MultiDOS”,AH=81h“COURIERS”,AX=FD02h ———-1404——————————- INT 14 - SERIAL I/O - EXTENDED INITIALIZE (CONVERTIBLE,PS)
AH = 04h
AL = break status
00h if break
01h if no break
BH = parity
00h no parity
01h odd parity
02h even parity
03h stick parity odd
04h stick parity even
BL = number of stop bits
00h one stop bit
01h two stop bits (1.5 if 5 bit word length)
CH = word length
00h 5 bits
01h 6 bits
02h 7 bits
03h 8 bits
CL = bps rate
00h 110
01h 150
02h 300
03h 600
04h 1200
05h 2400
06h 4800
07h 9600
08h 19200
DX = port number
Return: AX = port status code (see AH=00h) SeeAlso: AH=00h,AH=1Eh ———-1404——————————- INT 14 - FOSSIL - INITIALIZE DRIVER
AH = 04h DX = port number optionally BX=4F50h ES:CX -> byte to be set upon ^C
Return: AX = 1954h (if successful)
BL = maximum function number supported (excluding 7Eh and above) BH = revision of FOSSIL supported DTR is raised
Note: the word at offset 6 in the interrupt handler contains 1954h, and the
following byte contains the maximum function number supported
SeeAlso: AH=05h“FOSSIL”,AH=1Ch ———-1404——————————- INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
AH = 04h
Return: port initialized; if Hayes-compatible modem, a connection has been
established
Note: the port number is stored at offset BEh in the Task Control Block
(see INT 15/AH=13h"MultiDOS")
SeeAlso: AH=00h,AH=05h“MultiDOS”,AH=20h“MultiDOS”,INT 15/AH=13h“MultiDOS” ———-1404——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
AH = 04h
AL = initializing parameters
bits 7-5 unused
bits 4,3: parity (00 none, 01 odd, 11 even)
bit 2: stop bits (0 = one, 1 = two)
bits 1,0: data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
BX = baud rate
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=05h“Digiboard” ———-1404——————————- INT 14 - MBBIOS - INQUIRY
AH = 04h
Return: AH = AAh
AL = 55h
SeeAlso: AH=00h“MBBIOS”,AH=09h“MBBIOS” ———-1405——————————- INT 14 - SERIAL I/O - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
AH = 05h
AL = 00h read modem control register
Return: BL = modem control register (see below)
AH = status
AL = 01h write modem control register
BL = modem control register
bit 0: data terminal ready
bit 1: request to send
bit 2: OUT1
bit 3: OUT2
bit 4: LOOP
bits 5-7 reserved
Return: AX = status
DX = port number
SeeAlso: AH=00h,AH=1Fh ———-1405——————————- INT 14 - FOSSIL - DEINITIALIZE DRIVER
AH = 05h DX = port number
Return: none
DTR is not affected
SeeAlso: AH=00h,AH=04h“FOSSIL”,AH=1Dh,AH=8Dh ———-1405——————————- INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
AH = 05h AL = timeout in seconds (00h = never)
Return: AL = status
00h successful
AH = character read
01h read error
02h timed out
other modem status (CTS, DSR) changed
Note: the port number is stored at offset BEh in the Task Control Block SeeAlso: AH=02h,AH=04h“MultiDOS”,AH=06h“MultiDOS”,AH=22h“MultiDOS” SeeAlso: INT 15/AH=13h“MultiDOS” ———-1405——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
AH = 05h
AL = protocol
bits 7-4 unused
bit 3: RTS/CTS
bit 2: DSR
bits 1,0: XON/XOFF
BH = new XOFF character (00h = current)
BL = new XON character (00h = current)
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=04h“Digiboard” ———-1405——————————- INT 14 - MBBIOS - DROP DTR AND RTS
AH = 05h DX = port number
Return: none SeeAlso: AH=00h“MBBIOS”,AH=06h“MBBIOS”,AH=06h“FOSSIL” ———-1406——————————- INT 14 - FOSSIL - RAISE/LOWER DTR
AH = 06h
DX = port
AL = DTR state to be set
00h = lower
01h = raise
SeeAlso: AH=05h“MBBIOS”,AH=1Ah ———-1406——————————- INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
AH = 06h AL = character
Return: AL = status
00h successful
Notes: the port number is stored at offset BEh in the Task Control Block
if output queue is full, the calling task is blocked until the character can be stored
SeeAlso: AH=01h,AH=04h“MultiDOS”,AH=05h“MultiDOS”,AH=21h“MultiDOS” SeeAlso: INT 15/AH=13h“MultiDOS” ———-1406——————————- INT 14 - MBBIOS - RAISE DTR AND RTS
AH = 06h DX = port number
Return: none SeeAlso: AH=05h“MBBIOS”,AH=07h“MBBIOS” ———-1407——————————- INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
AH = 07h
Return: AL = timer tick interrupt number
AH = ticks per second on interrupt number in AL DX = approximate number of milliseconds per tick
SeeAlso: AH=16h ———-1407——————————- INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
AH = 07h
Return: CL = modem status (see AH=03h)
CH = character at head of input queue (if any) DX = number of characters in input queue
Note: the port number is stored at offset BEh in the Task Control Block SeeAlso: AH=03h,AH=05h“MultiDOS”,AH=08h“MultiDOS”,AH=09h“MultiDOS” SeeAlso: AH=23h“MultiDOS”,INT 15/AH=13h“MultiDOS” ———-1407——————————- INT 14 - MBBIOS - SEND BREAK
AH = 07h DX = port number
Return: none SeeAlso: AH=06h“MBBIOS” ———-1408——————————- INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
AH = 08h DX = port number
SeeAlso: AH=09h“FOSSIL” ———-1408——————————- INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
AH = 08h
Return: AL = line status (see AH=03h)
AH destroyed
Notes: the port number is stored at offset BEh in the Task Control Block
on every line status change, the line status is ORed with the line status accumulator; this function returns the accumulator and clears it
SeeAlso: AH=03h,AH=04h“MultiDOS”,AH=07h“MultiDOS”,INT 15/AH=13h“MultiDOS” ———-1408——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
AH = 08h DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = RS232 status bits (see AH=03h)
ZF set if no characters queued
ZF clear if character available
AL = next character
SeeAlso: AH=03h,AH=09h“Digiboard” ———-1408——————————- INT 14 - MBBIOS - NON-DESTRUCTIVE READ
AH = 08h DX = port number
Return: AL = character
AH = status (see AH=02h)
SeeAlso: AH=0Bh“MBBIOS”,AH=0Ch“FOSSIL” ———-1409——————————- INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
AH = 09h DX = port number
SeeAlso: AH=08h“FOSSIL”,AH=0Ah“FOSSIL”,AH=88h ———-1409——————————- INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
AH = 09h
Return: modem status byte cleared Note: the port number is stored at offset BEh in the Task Control Block SeeAlso: AH=04h“MultiDOS”,AH=07h“MultiDOS”,INT 15/AH=13h“MultiDOS” ———-1409——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
AH = 09h DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=08h“Digiboard”,AH=0Ah“Digiboard”,AH=10h“Digiboard” ———-1409——————————- INT 14 - MBBIOS - GET/SET OPTIONS
AH = 09h AL = option byte 00000001b - Transmit Buffering Enabled 00000101b - Hardware Handshaking Enabled 00100000b - High Speed Option Enabled DX = port number???
Return: AL = old option byte SeeAlso: AH=04h“MBBIOS”,AH=10h“FOSSIL” ———-140A——————————- INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
AH = 0Ah DX = port number
SeeAlso: AH=09h“FOSSIL”,AH=85h ———-140A——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
AH = 0Ah DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of characters available in buffer SeeAlso: AH=09h“Digiboard”,AH=0Dh“Digiboard” ———-140A——————————- INT 14 - MBBIOS - WRITE BUFFER
AH = 0Ah CX = count ES:DI -> buffer
Return: AX = status (see AH=03h)
DI = is updated CX = unsent character count
SeeAlso: AH=0Bh“MBBIOS”,AH=19h“FOSSIL” ———-140B——————————- INT 14 - FOSSIL - TRANSMIT NO WAIT
AH = 0Bh AL = character DX = port number
Return: AX = 0000h character not accepted
= 0001h character accepted
SeeAlso: AH=01h ———-140B——————————- INT 14 - MBBIOS - READ BUFFER
AH = 0Bh CX = size of buffer ES:DI -> buffer
Return: AH = LSR
AL = MSR CX = count of characters DI = is updated
SeeAlso: AH=08h“MBBIOS”,AH=0Ah“MBBIOS”,AH=18h“FOSSIL” ———-140C——————————- INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
AH = 0Ch DX = port number
Return: AX = FFFFh character not available
AX = 00xxh character xx available
SeeAlso: AH=08h“MBBIOS”,AH=20h“FOSSIL” ———-140D——————————- INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
AH = 0Dh
Return: AX = FFFFh character not available
= xxyyh standard IBM-style scan code
SeeAlso: AH=0Eh ———-140D——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
AH = 0Dh DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: ES:BX → CH_KEY_RDY flag SeeAlso: AH=0Ah“Digiboard”
Values for CH_KEY_RDY flag: 00h receive buffer empty FFh characters available ———-140E——————————- INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
AH = 0Eh
Return: AX = xxyyh standard IBM-style scan code SeeAlso: AH=0Dh“FOSSIL” ———-140E——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
AH = 0EH CX = number of characters to write ES:BX -> string DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of characters actually written
ZF clear if successful ZF set on error
SeeAlso: AH=0Fh“Digiboard” ———-140F——————————- INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
AH = 0Fh
AL = bit mask describing flow control requested
0: xon/xoff on transmit (watch for xoff while sending)
1: CTS/RTS (CTS on transmit/RTS on receive)
2: reserved
3: xon/xoff on receive (send xoff when buffer near full)
4-7: all 1
DX = port number
SeeAlso: AH=09h“MBBIOS”,AH=10h“FOSSIL” ———-140F——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
AH = 0Fh CX = number of characters to read ES:BX -> buffer DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of characters read
ZF clear if successful ZF set on error (line status or wrong number of characters)
SeeAlso: AH=0Eh“Digiboard” ———-1410——————————- INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
AH = 10h
AL = bit mask
0: enable/disable ^C/^K checking
1: enable/disable the transmitter
DX = port number
SeeAlso: AH=0Fh“FOSSIL” ———-1410——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
AH = 10h DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=09h“Digiboard”,AH=11h“Digiboard” ———-1411——————————- INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
AH = 11h DH = row DL = column
Note: this is the same as INT 10/AH=02h SeeAlso: AH=12h“FOSSIL” ———-1411——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
AH = 11h DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=09h“Digiboard”,AH=10h“Digiboard” ———-1412——————————- INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
AH = 12h
Return: DH = row
DL = column
Note: this is the same as INT 10/AH=03h SeeAlso: AH=11h“FOSSIL” ———-1412——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
AH = 12h DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of bytes free SeeAlso: AH=0Ah“Digiboard” ———-1413——————————- INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
AH = 13h AL = character
Note: should not be called if it is unsafe to call DOS SeeAlso: AH=15h ———-1414——————————- INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
AH = 14h
AL = 01h enable watchdog
00h disable watchdog
DX = port number
———-1415——————————- INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
AH = 15h AL = character
SeeAlso: AH=13h ———-1416——————————- INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
AH = 16h
AL = function
00h = delete
01h = add
ES:DX -> routine to call
Return: AX = status
0000h successful
0001h unsuccessful
SeeAlso: AH=07h“FOSSIL” ———-1416——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
AH = 16h AL = CCB command number (see below) BL = byte 2 BH = byte 3 CL = byte 1 (for all channel functions except 4Eh and 4Fh) DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=18h“Digiboard”
Values for CCB command number: 40h Set Receive Mid Water Mark 41h Set Receive High Water Mark 42h Flush Receive Buffer 43h Flush Transmit Buffer 44h Transmit Pause 45h Transmit Resume 46h Set Interrupt to Host Mask 47h Set Baud, Data, Stop and Parity 48h Send Break 49h Set Modem Lines 4Ah Set Break Count 4Bh Set Handshake 4Ch Set Xon/Xoff Characters 4Dh Set Transmit Mid Water Mark 4Eh IRQ Polling Timer to Host 4Fh Buffer Set All 50h Port On 51h Port Off 52h Receive Pause 53h Special Character Interrupt 54h RS-422 Enable ———-1417——————————- INT 14 - FOSSIL - REBOOT SYSTEM
AH = 17h
AL = method
00h = cold boot
01h = warm boot
SeeAlso: INT 19 ———-1418——————————- INT 14 - FOSSIL - READ BLOCK
AH = 18h CX = maximum number of characters to transfer DX = port number ES:DI -> user buffer
Return: AX = number of characters transferred SeeAlso: AH=19h“FOSSIL”,AH=83h“COURIERS”,AX=FF02h,INT 6B/AX=0100h ———-1418——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
AH = 18h ES:BX -> 16-byte command string DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h timeout
AL = mailbox status
00h no errors
8Xh BIOS error
ES:BX buffer filled in with mailbox string
ZF clear if no errors
ZF set if either status byte contains an error code
SeeAlso: AH=16h“Digiboard” ———-1419——————————- INT 14 - FOSSIL - WRITE BLOCK
AH = 19h CX = maximum number of characters to transfer DX = port number ES:DI -> user buffer
Return: AX = number of characters transferred SeeAlso: AH=18h“FOSSIL”,AH=86h,INT 6B/AX=0000h ———-1419——————————- INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
AH = 19h
BL = flag
00h disable special character interrupt
FFh enable interrupt
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh failed
SeeAlso: AH=1Ah“Digiboard” ———-141A——————————- INT 14 - FOSSIL - BREAK BEGIN OR END
AH = 1Ah
AL = 00h stop sending 'break'
01h start sending 'break'
DX = port number
SeeAlso: AH=06h“FOSSIL”,AH=8Ah,AH=FAh ———-141A——————————- INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
AH = 1Ah
BX = subfunction
00h return pointer to special character flag byte
01h return pointer to special character counter word
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: ES:BX → special character flag or counter Notes: flag is FFh if one or more special characters are in the receive
buffer; it is 00h and the counter is invalid if no special characters are in the receive buffer counter (if valid) contains the number of characters in the receive buffer up to and including the last-received special character
———-141B——————————- INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
AH = 1Bh DX = port number CX = size of user buffer ES:DI -> user buffer for driver info (see below)
Return: AX = number of characters transferred
CX = 3058h ("0X") (X00 FOSSIL only)
DX = 2030h (" 0") (X00 FOSSIL only)
Format of driver info: Offset Size Description 00h WORD size of structure in bytes 02h BYTE FOSSIL spec driver conforms to 03h BYTE revision level of this specific driver 04h DWORD pointer to ASCIZ identification string 08h WORD size of the input buffer 0Ah WORD number of bytes left in buffer 0Ch WORD size of the output buffer 0Eh WORD number of bytes left in buffer 10h BYTE width of screen 11h BYTE length of screen 12h BYTE actual baud rate, computer to modem ———-141C——————————- INT 14 - X00 FOSSIL - ACTIVATE PORT
AH = 1Ch DX = port number
Return: AX = 1954h if successful
BL = maximum function number supported (not including 7Eh and above) BH = revision of FOSSIL specification supported
Note: this is a duplicate of AH=04h, so that AH=04h may be made compatible
with the PS/2 BIOS in a future release
SeeAlso: AH=04h“FOSSIL”,AH=1Dh ———-141D——————————- INT 14 - X00 FOSSIL - DEACTIVATE PORT
AH = 1Dh DX = port number
Return: none Notes: this is a duplicate of AH=05h, so that AH=05h may be made compatible
with the PS/2 BIOS in a future release ignored if the port was never activated with AH=04h or AH=1Ch
SeeAlso: AH=05h“FOSSIL”,AH=1Ch ———-141E——————————- INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
AH = 1Eh
AL = break status
00h if break
01h if no break
BH = parity
00h no parity
01h odd parity
02h even parity
03h stick parity odd
04h stick parity even
BL = number of stop bits
00h one stop bit
01h two stop bits (1.5 if 5 bit word length)
CH = word length
00h 5 bits
01h 6 bits
02h 7 bits
03h 8 bits
CL = bps rate
00h 110
01h 150
02h 300
03h 600
04h 1200
05h 2400
06h 4800
07h 9600
08h 19200
DX = port number
Return: AX = port status code (see AH=00h) Notes: this function is intended to exactly emulate the PS/2 BIOS AH=04h call
if the port was locked at X00 load time, the appropriate parameters are ignored
SeeAlso: AH=00h,AH=04h“SERIAL I/O” ———-141F——————————- INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
AH = 1Fh
AL = 00h read modem control register
Return: BL = modem control register (see below)
AH = status
AL = 01h write modem control register
BL = modem control register
bit 0: data terminal ready
bit 1: request to send
bit 2: OUT1
bit 3: OUT2 (interrupts) enabled
bit 4: LOOP
bits 5-7 reserved
Return: AX = status
DX = port number
SeeAlso: AH=00h,AH=05h“SERIAL I/O” Notes: this function is intended to exactly emulate the PS/2 BIOS AH=05h call
X00 forces BL bit 3 set (interrupts cannot be disabled)
———-1420——————————- INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
AH = 20h DX = port number
Return: AH = 00h if character was available
AL = next character (removed from receive buffer) AX = FFFFh if no character available
SeeAlso: AH=0Ch,AH=21h“X00” ———-1420——————————- INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
AH = 20h AL = logical port (01h COM1, 02h COM2) DX = physical port number
Return: AX = status
0000h successful
FFFFh failed
SeeAlso: AH=21h“Alloy”,AH=22h“Alloy”,AH=23h“Alloy”,INT 17/AH=8Bh“Alloy” ———-1420——————————- INT 14 - MultiDOS Plus - INITIALIZE PORT
AH = 20h AL = port parameters (see AH=00h"SERIAL") DX = port number (0-3)
Return: AH = status
00h successful
41h no such port
64h monitor mode already active
SeeAlso: AH=00h“SERIAL”,AH=04h“MultiDOS”,AH=21h“MultiDOS”,AH=23h“MultiDOS” ———-1421——————————- INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
AH = 21h AL = character DX = port number
Notes: the given character is inserted at the end of the receive buffer as if
it had just arrived from the serial port; all normal receive processing (XON/XOFF, ^C/^K) is performed on the character fully re-entrant
SeeAlso: AH=20h“X00” ———-1421——————————- INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
AH = 21h DX = physical port number
Return: AX = status
0000h successful
FFFFh failed
SeeAlso: AH=20h“Alloy”,AH=22h“Alloy” ———-1421——————————- INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
AH = 21h AL = character to send DX = port number
Return: AH = status
00h successful
39h no DSR or CTS
3Ch no DSR
3Bh no CTS
41h no such port
42h monitor mode not active
97h timed out
Note: monitor mode must have been turned on with AH=24h before calling SeeAlso: AH=20h“MultiDOS”,AH=22h“MultiDOS”,AH=24h“MultiDOS” ———-1422——————————- INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
AH = 22h AL = logical port (01h COM1, 02h COM2)
Return: AX = status (0000h successful) SeeAlso: AH=20h“Alloy”,AH=21h“Alloy” ———-1422——————————- INT 14 - MultiDOS Plus - RECEIVE CHARACTER
AH = 22h DX = port number
Return: AH = status (see also AH=21h“MultiDOS”)
00h successful
AL = character
3Dh framing and parity error
3Eh overrun error
3Fh framing error
40h parity error
96h ring buffer overflow
Note: if no character is available, this function waits until a character
arrives or an implementation-dependent timeout elapses
SeeAlso: AH=20h“MultiDOS”,AH=21h“MultiDOS”,AH=27h ———-1423——————————- INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
AH = 23h AL = logical port (01h COM1, 02h COM2) DH = user ID DL = process ID (DH,DL both FFh for current task)
Return: AL = MW386 port mode
bit 0: port is shared (spooler only) 1: port is spooled instead of direct (spooler only) 2: port is assigned as logical COM device, not in spooler 3: port is free CX = MW386 port number DH = owner's user ID DL = owner's task ID
SeeAlso: AH=20h“Alloy”,INT 17/AH=8Bh“Alloy” ———-1423——————————- INT 14 - MultiDOS Plus - GET PORT STATUS
AH = 23h DX = port number
Return: AH = line status (see AH=03h)
AL = modem status (see AH=03h)
SeeAlso: AH=03h,AH=07h“MultiDOS”,AH=20h“MultiDOS” ———-1424——————————- INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
AH = 24h CX = physical I/O port number DS:DX -> configuration table (see below)
Return: AH = 00h Note: invalid port numbers are merely ignored SeeAlso: INT 17/AH=96h
Format of configuration table: Offset Size Description 00h BYTE baud rate
00h 38400 01h 19200 02h 9600 03h 7200 04h 4800 05h 3600 06h 2400 07h 2000 08h 1200 09h 600 0Ah 300 0Bh 150 0Ch 134.5
01h BYTE data bits (00h=5, 01h=6, 02h=7, 03h=8) 02h BYTE parity (00h none, 01h odd, 02h even) 03h BYTE stop bits (00h=1, 01h=2) 04h BYTE receive flow control
00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
05h BYTE transmit flow control (as for receive) ———-1424——————————- INT 14 - MultiDOS Plus - SET MONITOR MODE
AH = 24h
AL = port status storage
00h single status for entire receive buffer
01h separate status kept for each byte in receive buffer
DX = port number
Return: AH = status
00h successful
3Ah invalid status storage specified
41h no such port
64h monitor mode already active
Note: in monitor mode, MultiDOS redirects all BIOS video output to a serial
port
SeeAlso: AH=20h“MultiDOS”,AH=25h ———-1425——————————- INT 14 - MultiDOS Plus - CLEAR BUFFERS
AH = 25h
AL = function
00h only clear buffers
01h clear buffers and deactivate
DX = port number
Return: AH = status
00h successful
3Ah invalid function
41h no such port
42h monitor mode not active
SeeAlso: AH=20h“MultiDOS”,AH=24h“MultiDOS” ———-1427——————————- INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
AH = 27h DX = port number
Return: AH = status
00h successful
41h no such port
42h monitor mode not active
AL = number of characters in receive buffer
———-147E——————————- INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
AH = 7Eh
AL = code assigned to external application (80h-BFh)
80h reserved for communications FOSSIL
81h video FOSSIL
82h reserved for keyboard FOSSIL
83h reserved for system FOSSIL
ES:DX -> entry point
Return: AX = 1954h
BL = code assigned to application (same as input AL)
DH = 00h failed
01h successful
SeeAlso: AH=7Fh,AH=80h“FOSSIL”,AX=8100h,AH=82h“FOSSIL”,AH=83h“FOSSIL” ———-147F——————————- INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
AH = 7Fh AL = code assigned to external application ES:DX -> entry point
Return: AX = 1954h
BL = code assigned to application (same as input AL)
DH = 00h failed
01h successful
SeeAlso: AH=7Eh ———-1480——————————- INT 14 - COMMUNICATIONS FOSSIL
AH = 80h
SeeAlso: AH=7Eh ———-1480——————————- INT 14 - COURIERS.COM - INSTALLATION CHECK
AH = 80h
Return: AH = E8h if loaded Note: COURIERS is a TSR utility by PC Magazine ———-1481——————————- INT 14 - COURIERS.COM - CHECK IF PORT BUSY
AH = 81h AL = port number (1-4)
Return: AH = 00h port available
01h port exists but already in use
02h port nonexistent
Note: COURIERS is a TSR utility by PC Magazine SeeAlso: AH=83h,AH=8Dh ———-1481——————————- INT 14 - Egberto Willies COMM-DRV - EXTENDED INITIALIZATION
AH = 81h BX:DI -> port control block
Return: ??? SeeAlso: AH=00h
Format of port control block: Offset Type Description 00h WORD port IO address 02h WORD port IRQ 04h WORD baud rate 06h WORD parity 08h WORD data bits 0Ah WORD stop bits 0Ch WORD break status
0000h off
0Eh WORD flow control protocol 10h BYTE input block 11h BYTE output block 12h WORD low threshold 14h WORD high threshold 16h WORD segment of buffer 18h WORD offset of buffer 1Ah WORD input buffer length 1Ch WORD output buffer length 1Eh BYTE auxiliary address 1Fh BYTE spare 20h 4 WORDs spares ———-148100—————————– INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
AX = 8100h ES:DI -> buffer for VFOSSIL information (see below)
Return: AX = 1954h if installed SeeAlso: AH=7Eh,AX=8101h
Format of VFOSSIL information: Offset Size Description 00h WORD size of information in bytes, including this field 02h WORD VFOSSIL major version 04h WORD VFOSSIL revision level 06h WORD highest VFOSSIL application function supported ———-148101—————————– INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
AX = 8101h ES:DI -> buffer for application function table (see below) CX = length of buffer in bytes
Return: AX = 1954h if installed
BH = highest VFOSSIL application function supported
Note: the number of initialized pointers in the application function table
will never exceed CX/4; if the buffer is large enough, BH+1 pointers will be initialized
SeeAlso: AX=8102h
Format of application function table: Offset Size Description 00h DWORD → function to query current video mode (VioGetMode) 04h DWORD → function to set video mode (VioSetMode) 08h DWORD → function to query hardware config (VioGetConfig) 0Ch DWORD → function to write data in TTY mode (VioWrtTTY) 10h DWORD → function to get current ANSI state (VioGetANSI) 14h DWORD → function to set new ANSI state (VioSetANSI) 18h DWORD → function to get curr cursor position (VioGetCurPos) 1Ch DWORD → function to set cursor position (VioSetCurPos) 20h DWORD → function to get cursor shape (VioGetCurType) 24h DWORD → function to set cursor shape (VioSetCurType) 28h DWORD → function to scroll screen up (VioScrollUp) 2Ch DWORD → function to scroll screen down (VioScrollDn) 30h DWORD → function to read cell string from screen (VioReadCellStr) 34h DWORD → function to read char string from screen (VioReadCharStr) 38h DWORD → function to write a cell string (VioWrtCellStr) 3Ch DWORD → function to write char string, leaving attr (VioWrtCharStr) 40h DWORD → function to write char string,const attr (VioWrtCharStrAttr) 44h DWORD → function to replicate an attribute (VioWrtNAttr) 48h DWORD → function to replicate a cell (VioWrtNCell) 4Ch DWORD → function to replicate a character (VioWrtNChar)
Format of video mode data structure: Offset Size Description 00h WORD length of structure including this field 02h BYTE mode characteristics
bit 0: clear if MDA, set otherwise bit 1: graphics mode bit 2: color disabled (black-and-white)
03h BYTE number of colors supported (1=2 colors, 4=16 colors, etc) 04h WORD number of text columns 06h WORD number of text rows 08h WORD reserved 0Ah WORD reserved 0Ch DWORD reserved
Format of video configuration data: Offset Size Description 00h WORD structure length including this field 02h WORD adapter type
00h monochrome/printer 01h CGA 02h EGA 03h VGA 07h 8514/A
04h WORD display type
00h monochrome 01h color 02h enhanced color 09h 8514
06h DWORD adapter memory size
Format of cursor type record: Offset Size Description 00h WORD cursor start line 02h WORD cursor end line 04h WORD cursor width (always 01h) 06h WORD cursor attribute (FFFFh = hidden)
Call VioGetMode with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to video mode data structure (see above)
Return: AX = error code (00h, 74h, 17Eh, 1B4h)
0000h successful
0074h internal VIO failure
0163h unsupported mode
0166h invalid row value
0167h invalid column value
017Eh buffer too small
01A5h invalid VIO parameter
01B4h invalid VIO handle
Call VioSetMode with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to video mode data structure (see above)
Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)
Call VioGetConfig with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to video configuration data buffer (see above)
Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)
Call VioWrtTTY with:
STACK: WORD VIO handle (must be 00h) WORD length of string DWORD pointer to character string to be written to screen
Return: AX = error code (00h, 74h, 1B4h) (see above) Notes: write wraps at end of line and terminates if it reaches end of screen
in ANSI mode, ANSI control sequences are interpreted, and this func is not required to be reentrant; in non-ANSI mode, the function is reentrant and may be called from within an MSDOS function call
Call VioGetANSI with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to WORD which will be set to 00h if ANSI is off or 01h if ANSI is on
Return: AX = error code (00h, 74h, 1B4h) (see above)
Call VioSetANSI with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to WORD indicating new state of ANSI 00h off 01h on
Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
Call VioGetCurPos with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to WORD to hold current cursor column (0-based) DWORD pointer to WORD to hold current cursor row (0-based)
Return: AX = error code (00h, 74h, 1B4h) (see above)
Call VioSetCurPos with:
STACK: WORD VIO handle (must be 00h) WORD cursor column WORD cursor row
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above) Note: if either coordinate is invalid, the cursor is not moved
Call VioGetCurType with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to cursor type record (see above)
Return: AX = error code (00h, 74h, 1B4h) (see above)
Call VioSetCurType with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to cursor type record (see above)
Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
Call VioScrollUp with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to char/attr cell for filling emptied rows WORD number or rows to scroll (FFFFh = clear area) WORD right column of scroll area WORD bottom row of scroll area WORD left column of scroll area WORD top row of scroll area
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Call VioScrollDn with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to char/attr cell for filling emptied rows WORD number or rows to scroll (FFFFh = clear area) WORD right column of scroll area WORD bottom row of scroll area WORD left column of scroll area WORD top row of scroll area
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
Call VioReadCellStr with:
STACK: WORD VIO handle (must be 00h) WORD column at which to start reading WORD row at which to start reading DWORD pointer to WORD containing length of buffer in bytes on return, WORD contains number of bytes actually read DWORD pointer to buffer for cell string
Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
Call VioReadCharStr with:
STACK: WORD VIO handle (must be 00h) WORD column at which to start reading WORD row at which to start reading DWORD pointer to WORD containing length of buffer in bytes on return, WORD contains number of bytes actually read DWORD pointer to buffer for character string
Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
Call VioWrtCellStr with:
STACK: WORD VIO handle (must be 00h) WORD column at which to start writing WORD row at which to start writing WORD length of cell string in bytes DWORD pointer to cell string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above) Note: write wraps at end of line and terminates if it reaches end of screen
Call VioWrtCharStr with:
STACK: WORD VIO handle (must be 00h) WORD column at which to start writing WORD row at which to start writing WORD length of character string DWORD pointer to character string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above) Note: write wraps at end of line and terminates if it reaches end of screen
Call VioWrtCharStrAttr with:
STACK: WORD VIO handle (must be 00h) DWORD pointer to attribute to be applied to each character WORD column at which to start writing WORD row at which to start writing WORD length of character string DWORD pointer to character string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above) Note: write wraps at end of line and terminates if it reaches end of screen
Call VioWrtNAttr with:
STACK: WORD VIO handle (must be 00h) WORD column at which to start writing WORD row at which to start writing WORD number of times to write attribute DWORD pointer to display attribute to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above) Note: write wraps at end of line and terminates if it reaches end of screen
Call VioWrtNCell with:
STACK: WORD VIO handle (must be 00h) WORD column at which to start writing WORD row at which to start writing WORD number of times to write cell DWORD pointer to cell to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above) Note: write wraps at end of line and terminates if it reaches end of screen
Call VioWrtNChar with:
STACK: WORD VIO handle (must be 00h) WORD column at which to start writing WORD row at which to start writing WORD number of times to write character DWORD pointer to character to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above) Note: write wraps at end of line and terminates if it reaches end of screen ———-148102—————————– INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
AX = 8102h
Return: AX = 1954h Note: terminates all operations; after this call, the video FOSSIL may either
be removed from memory or reinitialized
SeeAlso: AX=8101h,AX=8103h ———-148103—————————– INT 14 - VIDEO FOSSIL - UNINSTALL
AX = 8103h
Return: AX = 1954h Note: this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM ———-1482——————————- INT 14 - KEYBOARD FOSSIL
AH = 82h
SeeAlso: AH=7Eh ———-1482——————————- INT 14 - COURIERS.COM - CONFIGURE PORT
AH = 82h
AL = port number (1-4)
BX = speed (bps)
CX = bit flags
bit 0: enable input flow control
bit 1: enable output flow control
bit 2: use X.PC protocol (not yet implemented)
SeeAlso: AH=00h,AH=8Ch,INT 7A“X.PC” ———-1483——————————- INT 14 - SYSTEM FOSSIL
AH = 83h
SeeAlso: AH=7Eh ———-1483——————————- INT 14 - COURIERS.COM - START INPUT
AH = 83h ES:BX -> circular input buffer CX = length of buffer (should be at least 128 bytes if input flow control enabled)
SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h“BAPI” ———-1484——————————- INT 14 - COURIERS.COM - READ CHARACTER
AH = 84h
Return: ZF set if no characters available
ZF clear AL = character AH = modem status bits bit 7: set on input buffer overflow
SeeAlso: AH=02h,AH=86h,AH=89h ———-1485——————————- INT 14 - COURIERS.COM - FLUSH PENDING INPUT
AH = 85h
SeeAlso: AH=0Ah,AH=88h ———-1486——————————- INT 14 - COURIERS.COM - START OUTPUT
AH = 86h ES:BX -> output buffer CX = length of output buffer
SeeAlso: AH=19h,AH=83h“COURIERS”,AH=A4h“BAPI” ———-1487——————————- INT 14 - COURIERS.COM - OUTPUT STATUS
AH = 87h
Return: AX = number of unsent characters ———-1488——————————- INT 14 - COURIERS.COM - ABORT OUTPUT
AH = 88h
SeeAlso: AH=09h,AH=85h ———-1489——————————- INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
AH = 89h CL = character to send
SeeAlso: AH=01h,AH=84h ———-148A——————————- INT 14 - COURIERS.COM - SEND BREAK
AH = 8Ah
SeeAlso: AH=89h,AH=FAh ———-148C——————————- INT 14 - COURIERS.COM - SET SPEED
AH = 8Ch BX = speed in bps
SeeAlso: AH=00h,AH=82h“COURIERS” ———-148D——————————- INT 14 - COURIERS.COM - DECONFIGURE PORT
AH = 8Dh
SeeAlso: AH=82h“COURIERS” ———-14A0——————————- INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
AH = A0h ???
Return: ??? SeeAlso: AH=A1h“BAPI” ———-14A0–CXFFFF———————– INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
AH = A0h CX = FFFFh
Return: CF clear if successful
AX = 5445h ('TE')
CX <> FFFFh
DX = port number
CF set on error
Note: TES is a network serial port emulation program SeeAlso: AH=A1h“TES” ———-14A1——————————- INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
AH = A1h ???
Return: ??? SeeAlso: AH=A0h“BAPI” ———-14A1——————————- INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
AH = A1h
Return: CX = number of active sessions
ES:SI -> status array (see below)
SeeAlso: AH=A2h“TES”,AH=A3h“TES”
Format of status array entry: Offset Size Description 00h BYTE status 01h WORD offset of name ———-14A2——————————- INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
AH = A2h
Return: CX = number of servers
ES:SI -> array of offsets from ES for server names
SeeAlso: AH=A1h“TES” ———-14A3——————————- INT 14 - Interconnections Inc. TES - START A NEW SESSION
AH = A3h ES:SI -> ???
Return: CF clear if successful
AX = 5445h ('TE')
CX <> FFFFh
DX = port number
CF set on error
SeeAlso: AH=A1h“TES”,AH=A4h“TES”,AH=A6h“TES” ———-14A4——————————- INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
AH = A4h CX = length DH = session number (00h) ES:BX -> buffer
Return: CX = number of bytes sent SeeAlso: AH=19h,AH=86h,AH=A5h“BAPI” ———-14A4——————————- INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
AH = A4h ???
Return: ??? SeeAlso: AH=A3h“TES”,AH=A5h“TES” ———-14A5——————————- INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
AH = A5h CX = length DH = session number (00h) ES:BX -> buffer
Return: CX = number of bytes read SeeAlso: AH=18h,AH=83h“COURIERS”,AH=A4h“BAPI”,AX=FF02h ———-14A5——————————- INT 14 - Interconnections Inc. TES - RESUME A SESSION
AH = A5h AL = session number
Return: ??? SeeAlso: AH=A4h“TES”,AH=A6h“TES” ———-14A6——————————- INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
AH = A6h DH = session number (00h)
SeeAlso: AH=1Ah,AH=8Ah,AH=FAh ———-14A6——————————- INT 14 - Interconnections Inc. TES - DROP A SESSION
AH = A6h AL = session number
Return: AH = status
00h successful
else error
SeeAlso: AH=A3h“TES”,AH=A5h“TES” ———-14A7——————————- INT 14 - 3com BAPI SERIAL I/O - READ STATUS
AH = A7h ???
Return: ??? ———-14A7——————————- INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
AH = A7h ???
Return: ??? SeeAlso: AH=A3h“TES”,AH=A5h“TES” ———-14A8——————————- INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
AH = A8h AL = 00h no visible response ES:SI -> ASCIZ command
Return: ??? ———-14AF00BXAAAA———————– INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
AX = AF00h BX = AAAAh
Return: AX = AF01h if installed ———-14B0——————————- INT 14 - 3com BAPI SERIAL I/O - ENABLE/DISABLE “ENTER COMMAND MODE” CHARACTER
AH = B0h AL = 00h disable = 01h enable
———-14B1——————————- INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
AH = B1h
———-14F0F0—————————– INT 14 - ASAP v1.0 - ???
AX = F0F0h DX = ??? ???
Return: ??? Note: ASAP (Automatic Screen Access Program) is a shareware screen reader by
MicroTalk
SeeAlso: AX=F0F1h ———-14F0F1DX0000———————– INT 14 - ASAP v1.0 - INSTALLATION CHECK
AX = F0F1h DX = 0000h
Return: DX = segment of resident code
= 0000h if not installed
Note: ASAP (Automatic Screen Access Program) is a shareware screen reader by
MicroTalk
SeeAlso: AX=F0F0h,INT 10/AH=38h ———-14F4FF—————————– INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
AX = F4FFh DX = port (00h-03h)
Return: CF clear if present
AX = 0000h
CF set if not present
AX <> 0000h
———-14F9——————————- INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
AH = F9h DX = port (00h-03h)
———-14FA——————————- INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
AH = FAh DX = port (00h-03h)
SeeAlso: AH=1Ah,AH=8Ah ———-14FB——————————- INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
AH = FBh
AL = modem control register
bit 0: data terminal ready
1: request to send
2: OUT1
3: OUT2
4: loopback
bits 5-7 unused
DX = port (00h-03h)
———-14FC——————————- INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
AH = FCh DX = port (00h-03h)
Return: AH = RS232 status bits (see AH=00h)
AL = character
SeeAlso: AH=02h,AH=0Ch,AX=FF02h ———-14FD02—————————– INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
AX = FD02h
Return: CX = number of characters available ———-14FF02—————————– INT 14 - IBM/Yale EBIOS SERIAL I/O - BUFFERED READ
AX = FF02h CX = length DX = port (00h-03h) ES:BX -> buffer
Return: CX = number of characters read SeeAlso: AH=18h,AH=83h“COURIERS”,AH=A5h“BAPI”,AH=FCh
No additional information available at this time.
AH = 00h
Return: CF set on error
AH = 86h no cassette present CF clear if successful
SeeAlso: AH=01h“CASSETTE”
AH = 00h
Return: CX = signed X count
DX = signed Y count
———-1500——————————- INT 15 - VMiX v2+ - INSTALLATION CHECK???
AH = 00h
Return: DX = 0798h??? ———-1500——————————- INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
AH = 00h
Note: if issued by the highest-priority task while MultiDOS is using
priority-based rather than round-robin scheduling, control will be returned to the caller immediately
SeeAlso: AH=03h“MultiDOS”,AX=1000h ———-1501——————————- INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
AH = 01h
Return: CF set on error
AH = 86h no cassette present CF clear if successful
SeeAlso: AH=00h“CASSETTE” ———-1501——————————- INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
AH = 01h AL = NVRAM location (00h to 3Fh) BL = NVRAM data value
Return: AH = return code
00h OK
01h address bad
02h write error
SeeAlso: AH=02h“Amstrad”
Format of NVRAM: Offset Size Description 00h BYTE time of day: seconds 01h BYTE alarm time: seconds 02h BYTE time of day: minutes 03h BYTE alarm time: minutes 04h BYTE time of day: hours 05h BYTE alarm time: hours 06h BYTE day of week, 1 = Sunday 07h BYTE day of month 08h BYTE month 09h BYTE year mod 100 0Ah BYTE RTC status register A
bit 7: set if date/time being updated 6-4: time base speed, default 010 = 32768 Hz 3-0: interrupt rate selection, default 0110 = 1024 Hz
0Bh BYTE RTC status register B
bit 7: clear if normal update, set if abort update 6: periodic interrupt enable 5: alarm interrupt enable 4: update end interrupt enable 3: square wave enable 2: date mode (clear = BCD, set = binary) 1: 24-hour format 0: daylight saving time enable
0Ch BYTE RTC status register C (read-only)
bit 7: IRQF flag 6: PF flag 5: AF flag 4: UF flag
0Dh BYTE RTC status register D
bit 7: battery good
0Eh 6 BYTEs time and date machine last used 14h BYTE user RAM checksum 15h WORD Enter key scancode/ASCII code 17h WORD Forward delete key scancode/ASCII code 19h WORD Joystick fire button 1 scancode/ASCII code 1Bh WORD Joystick fire button 2 scancode/ASCII code 1Dh WORD mouse button 1 scancode/ASCII code 1Fh WORD mouse button 2 scancode/ASCII code 21h BYTE mouse X scaling factor 22h BYTE mouse Y scaling factor 23h BYTE initial VDU mode and drive count 24h BYTE initial VDU character attribute 25h BYTE size of RAM disk in 2K blocks 26h BYTE initial system UART setup byte 27h BYTE initial external UART setup byte 28h 24 BYTEs available for user application Note: bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
the clock chip
———-1501——————————- INT 15 - VMiX - I/O CHANNEL OBJECT MANAGER
AH = 01h
STACK: WORD object ID of requestor
DWORD pointer to name of requested method
WORD arg1
WORD arg2
WORD arg3
WORD arg4
Return: DX:AX??? → IRP structure or 0000h:0000h ———-1501——————————- INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
AH = 01h AL = semaphore number (00h-3Fh)
Return: AH = status
00h successful
02h invalid semaphore number
Notes: if the semaphore is not owned, ownership is assigned to the calling
task and the call returns immediately if the semaphore is already owned by another task, the calling task is placed on a queue for the semaphore and suspended until it can become owner of the semaphore semaphore 0 is used internally by MultiDOS to synchronize DOS access
SeeAlso: AH=02h“MultiDOS”,AH=10h“MultiDOS”,AH=1Bh“MultiDOS” ———-1502——————————- INT 15 - CASSETTE - READ DATA
AH = 02h CX = number of bytes to read ES:BX -> buffer
Return: CF clear if successful
DX = number of bytes read
ES:BX -> byte following last byte read
CF set on error
AH = status
00h successful
01h CRC error
02h bad tape signals
04h no data
80h invalid command
86h no cassette present
SeeAlso: AH=00h“CASSETTE”,AH=03h“CASSETTE” ———-1502——————————- INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
AH = 02h AL = NVRAM location (00h to 3Fh)
Return: AH = return code
00h OK
01h address bad
02h checksum error
AL = NVRAM data value
SeeAlso: AH=01h“Amstrad” ———-1502——————————- INT 15 - VMiX - MEMORY OBJECT MANAGER
AH = 02h STACK: WORD object ID of requestor DWORD pointer to name of requested method WORD arg1 WORD arg2 WORD arg3 WORD arg4 WORD arg5
Return: DX:AX??? = pointer to memory block ———-1502——————————- INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
AH = 02h AL = semaphore number (00h-3Fh)
Return: AH = status
00h successful
01h not semaphore owner
02h invalid semaphore number
Notes: if any tasks are waiting for the semaphore, the first task on the wait
queue will become the new owner and be reawakened do not use within an interrupt handler
SeeAlso: AH=01h“MultiDOS”,AH=10h“MultiDOS”,AH=1Ch“MultiDOS” ———-1503——————————- INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
AH = 03h CX = number of bytes to write ES:BX -> data buffer
Return: CF clear if successful
ES:BX -> byte following last byte written CF set on error AH = status (see AH=02h"CASSETTE") CX = 0000h
SeeAlso: AH=00h“CASSETTE”,AH=02h“CASSETTE” ———-1503——————————- INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
AH = 03h AL = value (I,R,G,B bits)
SeeAlso: AH=04h“Amstrad” ———-1503——————————- INT 15 - VMiX - PROMPTED CONSOLE INPUT
AH = 03h STACK: DWORD pointer to ASCII prompt WORD field outline character WORD length of input field DWORD address of pointer to input buffer WORD number of characters input
Return: AX = length of input (input buffer is padded with blanks) ———-1503——————————- INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
AH = 03h DX = number of time slices to remain suspended
Return: after specified interval has elapsed Note: when priority-based scheduling is in use, high-priority tasks should
use this function to yield the processor
SeeAlso: AH=00h“MultiDOS”,AH=0Ah“MultiDOS” ———-1504——————————- INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
AH = 04h ES:DI -> results buffer length 20h for System Parameter Table DS = segment containing ABIOS RAM extensions (zero if none)
Return: AH = 00h success: results at ES:DI
CF set on failure
SeeAlso: AH=05h“ABIOS”,C1h
Format of ABIOS System Parameter Table: Offset Size Description 00h DWORD FAR address of ABIOS Common Start Routine 04h DWORD FAR address of ABIOS Interrupt Routine 08h DWORD FAR address of ABIOS Time-out Routine 0Ch WORD number of bytes of stack required by this ABIOS implementation 0Eh 16 BYTEs reserved 1Eh WORD number of entries in initialization table ———-1504——————————- INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
AH = 04h AL = value (RDSEL1 and RDSEL0)
SeeAlso: AH=03h“Amstrad”,05h“Amstrad” ———-1504——————————- INT 15 - VMiX - VPRINTF
AH = 04h STACK: DWORD control string DWORD array of arguments
———-1504——————————- INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
AH = 04h AL = mailbox number (00h-3Fh) CX = message length in bytes DS:SI -> message
Return: AH = status
00h successful
01h out of message memory
02h invalid mailbox number
Note: the message is copied into a system buffer; the caller may immediately
reuse its buffer
SeeAlso: AH=05h“MultiDOS” ———-1505——————————- INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
AH = 05h ES:DI -> results buffer length (18h * Number_of_Entries) DS = segment containing ABIOS RAM extensions (zero if none)
Return: AH = 00h success: results at ES:DI
CF set on failure
SeeAlso: AH=04h“ABIOS”,C1h
Format of one entry of ABIOS Initialization Table: Offset Size Description 00h WORD device ID 02h WORD number of Logical IDs 04h WORD Device Block length (zero for ABIOS patch or extension) 06h DWORD → init routine for Device Block and Function Transfer Table 0Ah WORD request block length 0Ch WORD Function Transfer Table length (zero for a patch) 0Eh WORD Data Pointers length (in Common Data Area) 10h BYTE secondary device ID (hardware level this ABIOS ver supports) 11h BYTE revision (device driver revision level this ABIOS supports) 12h 6 BYTEs reserved ———-1505——————————- INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
AH = 05h AL = value (I,R,G,B bits)
SeeAlso: AH=04h“Amstrad” ———-1505——————————- INT 15 - VMiX - GET PROCESS ID OF CURRENT PROCESS
AH = 05h
Return: AX = process ID SeeAlso: AH=06h“VMiX”,AH=0Bh“VMiX” ———-1505——————————- INT 15 - MultiDOS Plus - CHECK MAILBOX
AH = 05h AL = mailbox number (00h-3Fh)
Return: AH = status
00h successful
DX = length of first message in queue, 0000h if no message
02h invalid mailbox number
SeeAlso: AH=04h“MultiDOS”,AH=06h“MultiDOS” ———-1506——————————- INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
AH = 06h
Return: BX = version number ———-1506——————————- INT 15 - VMiX - GET POINTER TO PROCESS CONTROL BLOCK
AH = 06h STACK: WORD process ID
Return: DX:AX??? → process control block SeeAlso: AH=07h“VMiX”,AH=08h“VMiX” ———-1506——————————- INT 15 - MultiDOS Plus - READ MAILBOX
AH = 06h AL = mailbox number (00h-3Fh) CX = size of buffer in bytes ES:DI -> buffer for message
Return: AH = status
00h successful
CX = number of bytes copied
DX = actual length of message
02h invalid mailbox number
Note: if the caller's buffer is not large enough, the message is truncated
and the remainder is lost
SeeAlso: AH=04h“MultiDOS”,AH=05h“MultiDOS” ———-1507——————————- INT 15 - VMiX - GET POINTER TO OBJECT CONTROL BLOCK
AH = 07h STACK: WORD object type
Return: DX:AX??? → object control block SeeAlso: AH=06h“VMiX”,AH=08h“VMiX” ———-1507——————————- INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
AH = 07h BX:CX = entry point of new task DX = stack size in paragraphs
Return: AH = status
00h successful
01h no free task control blocks
02h no free memory for task's stack
Note: execution returns immediately to calling task SeeAlso: AH=08h“MultiDOS”,AH=09h“MultiDOS”,AH=13h“MultiDOS” ———-1508——————————- INT 15 - VMiX - GET CHANNEL CONTROL BLOCK
AH = 08h STACK: WORD channel ID
Return: DX:AX??? → channel control block SeeAlso: AH=06h“VMiX”,AH=07h“VMiX” ———-1508——————————- INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
AH = 08h
Return: calling task terminated, so execution never returns to caller Notes: an internal task must be terminated with this function rather than a
DOS termination function task's stack space is returned to parent task's memory pool
SeeAlso: AH=07h“MultiDOS” ———-1509——————————- INT 15 - VMiX - GET ID OF QUEUED ELEMENT
AH = 09h STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type) WORD subqueue ID
Return: AX = ID SeeAlso: AH=0Ah“VMiX” ———-1509——————————- INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
AH = 09h AL = new priority
Note: the priority has different meanings depending on whether priority-
based or round-robin scheduling is used
SeeAlso: AH=07h“MultiDOS” ———-150A——————————- INT 15 - VMiX - GET ID OF NEXT QUEUED ELEMENT
AH = 0Ah STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type) WORD ID of current element in queue chain
Return: AX = ID of next element SeeAlso: AH=09h“VMiX”,AH=0Fh“VMiX” ———-150A——————————- INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
AH = 0Ah
AL = new interval
00h = 55.0 ms (default)
80h = 27.5 ms
40h = 13.75 ms
20h = 6.88 ms
10h = 3.44 ms
08h = 1.72 ms
SeeAlso: AH=03h“MultiDOS” ———-150B——————————- INT 15 - VMiX - GET TOTAL NUMBER OF ACTIVE PROCESSES
AH = 0Bh
Return: AX = number of active processes SeeAlso: AH=05h“VMiX”,AH=0Eh“VMiX” ———-150B——————————- INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
AH = 0Bh
Notes: sets calling task's screen pointer to actual screen memory; the pointer
may be restored with AH=0Ch caller's video mode must be same as foreground task's video mode any text written while in the background will be saved to the foreground task's virtual screen when it switches to the background useful if a background task wants to display a message on the foreground screen
SeeAlso: AH=0Ch“MultiDOS”
AH = 0Ch STACK: WORD process ID
Return: DX:AX??? → TSS stack store
AH = 0Ch
Note: restores task's screen pointer saved by AH=0Bh; must not be called
unless AH=0Bh has been called first
SeeAlso: AH=0Bh“MultiDOS”
AH = 0Dh STACK: DWORD ASCIZ string starting with requested I/O channel and followed by standard VMiX shell command string
Return: AX = status SeeAlso: AH=0Eh“VMIX” ———-150D——————————- INT 15 - MultiDOS Plus - DISABLE MULTITASKING
AH = 0Dh
Note: calling task receives all time slices until AH=0Eh is called; this
allows time-critical events or nonreentrant code to be processed
SeeAlso: AH=0Eh“MultiDOS”,AH=10h“MultiDOS”,AX=101Bh,AH=20h“MultiDOS” ———-150E——————————- INT 15 - VMiX - TERMINATE PROCESS
AH = 0Eh STACK: WORD process ID
Return: AX = status SeeAlso: AH=0Bh“VMiX”,AH=0Dh“VMIX” ———-150E——————————- INT 15 - MultiDOS Plus - ENABLE MULTITASKING
AH = 0Eh
SeeAlso: AH=0Dh“MultiDOS”,AX=101Ch,AH=20h“MultiDOS” ———-150F——————————- INT 15 - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
AH = 0Fh
AL = phase code
00h reserved
01h surface analysis
02h formatting
Return: CF clear if formatting should continue, set if it should terminate Note: called during ESDI drive formatting after each cylinder is completed SeeAlso: INT 13/AH=1Ah ———-150F——————————- INT 15 - VMiX - GET KEY FIELD OF QUEUED ELEMENT
AH = 0Fh STACK: WORD queue ID (0 = process queue, 1 = object q, 3 = type q) WORD ID of element in queue chain
Return: AX = key SeeAlso: AH=0Ah“VMiX” ———-150F——————————- INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
AH = 0Fh DS:BX -> ASCIZ command
Return: after command has been processed Notes: specified string is executed as if it had been typed at the MultiDOS
command prompt the task is placed on a queue which MultiDOS examines periodically and is suspended until MultiDOS has processed the command all lowercase characters up to the first blank are converted to upper case within the given buffer
———-1510——————————- INT 15 - VMiX - EXECUTE FUNCTION IN PROTECTED MODE
AH = 10h
STACK: DWORD pointer to function
N WORDs function args
Return: ??? ———-1510——————————- INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
AH = 10h AL = semaphore number (00h-3Fh)
Return: AH = status
00h semaphore not in use
01h semaphore owned by another task
02h invalid semaphore number
03h semaphore owned by caller
SeeAlso: AH=02h“MultiDOS”,AH=0Dh“MultiDOS”,AH=1Dh“MultiDOS” ———-151000—————————– INT 15 - TopView - “PAUSE” - GIVE UP CPU TIME
AX = 1000h
Return: after other processes run Note: under DESQview, if the process issuing this call has hooked INT 08h,
the current time-slice is set to expire at the next clock tick rather than immediately
SeeAlso: AH=00h“MultiDOS”,AX=5305h,INT 21/AH=EEh“DoubleDOS”,INT 2F/AX=1680h SeeAlso: INT 60/DI=0106h,INT 62/AH=01h,INT 7A/BX=000Ah,INT 7F/AH=E8h ———-151001—————————– INT 15 - TopView - “GETMEM” - ALLOCATE “SYSTEM” MEMORY
AX = 1001h BX = number of bytes to allocate
Return: ES:DI → block of memory or 0000h:0000h (DV v2.26+) Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
common memory
SeeAlso: AX=1002h,AX=DE0Ch,AX=DE15h ———-151002—————————– INT 15 - TopView - “PUTMEM” - DEALLOCATE “SYSTEM” MEMORY
AX = 1002h ES:DI -> previously allocated block
Return: block freed SeeAlso: AX=1001h,AX=DE0Dh ———-151003—————————– INT 15 - TopView - “PRINTC” - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
AX = 1003h BH = attribute BL = character DX = segment of object handle for window
Note: BX=0 does not display anything, it only positions the hardware cursor ———-1510——————————- INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
AH = 10h AL = 04h thru 12h
Return: pops up “Programming error” window in DV 2.x ———-151013—————————– INT 15 - TopView - “GETBIT” - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
AX = 1013h ES:DI -> FAR service routine
Return: BX = bit mask indicating which bit was allocated
0000h if no more bits available
SeeAlso: AX=1014h,AX=1015h Note: only a few TopView/DESQview API calls are allowed during a hardware
interrupt; if other calls need to be made, the interrupt handler must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
———-151014—————————– INT 15 - TopView - “FREEBIT” - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
AX = 1014h BX = bit mask from INT 15/AX=1013h
SeeAlso: AX=1013h,AX=1015h ———-151015—————————– INT 15 - TopView - “SETBIT” - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
AX = 1015h BX = bit mask for interrupts to post
Return: indicated routines will be called: (DV 2.0x) at next task switch
(DV 2.2x) immediately
SeeAlso: AX=1013h,AX=1014h Notes: this is one of the few TopView calls which are allowed from a hardware
interrupt handler the handler will be called with ES containing the segment of the handle of the next task to be executed; on return, ES must be the segment of a task handle
———-151016—————————– INT 15 - TopView - “ISOBJ” - VERIFY OBJECT HANDLE
AX = 1016h ES:DI = possible object handle
Return: BX = FFFFh if ES:DI is a valid object handle
0000h if ES:DI is not
SeeAlso: AX=DE14h,AX=DE2Bh ———-151017—————————– INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
AX = 1017h
Return: pops up “Programming error” window in DV 2.x ———-151018—————————– INT 15 - TopView - “LOCATE” - FIND WINDOW AT A GIVEN SCREEN LOCATION
AX = 1018h
BH = column
BL = row
ES = segment of object handle for window below which to search
0000h = start search with topmost window
Return: ES = segment of object handle for window which is visible at the
indicated position, or covered by indicated window = 0000h no window
SeeAlso: AX=1023h,AX=1024h ———-151019—————————– INT 15 - TopView - “SOUND” - MAKE TONE
AX = 1019h BX = frequency in Hertz (0000h = silence) CX = duration in clock ticks (18.2 ticks/sec)
Return: immediately, tone continues to completion Notes: if another tone is already playing, the new tone does not start until
completion of the previous one. Up to 32 tones may be queued before the process is blocked until a note completes. in DV 2.00, the lowest tone allowed is 20 Hz if CX = 0, the current note is cancelled; if BX = 0 as well, all queued notes are also cancelled
SeeAlso: INT 16/AH=73h ———-15101A—————————– INT 15 - TopView - “OSTACK” - SWITCH TO TASK'S INTERNAL STACK
AX = 101Ah
Return: stack switched Notes: this call may not be nested; a second call must be preceded by a call
to "USTACK" (AX=1025h) while TopView requires many API calls to be executed while on the task's internal stack, DESQview allows those calls to be executed regardless of the current stack
SeeAlso: AX=1025h ———-15101B—————————– INT 15 - TopView - “BEGINC” - BEGIN CRITICAL REGION
AX = 101Bh
Return: task-switching temporarily disabled Notes: will not task-switch until “ENDC” (AX = 101Ch) called unless task
voluntarily releases the CPU (upon regaining the CPU, task-switching will again be disabled) suspends the caller until DOS is free
SeeAlso: AH=0Dh“MultiDOS”,AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h SeeAlso: INT 60/DI=0602h ———-15101C—————————– INT 15 - TopView - “ENDC” - END CRITICAL REGION
AX = 101Ch
Return: task-switching enabled Note: this API call may be made from within a hardware interrupt handler SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h ———-15101D—————————– INT 15 - TopView - “STOP” - STOP TASK
AX = 101Dh
ES = segment of object handle for task to be stopped
(== handle of main window for that task)
Return: indicated task will not get any CPU time until restarted with AX=101Eh Note: once a task has been stopped, additional “STOP”s are ignored BUG: in DV 2.00, this function is ignored unless the indicated task is the
current task
SeeAlso: AX=101Eh,AX=102Bh,AH=12h“VMiX” ———-15101E—————————– INT 15 - TopView - “START” - START TASK
AX = 101Eh
ES = segment of object handle for task to be started
(== handle of main window for that task)
Return: indicated task is started up again Note: once a task has been started, additional “START”s are ignored SeeAlso: AX=101Dh,AX=102Bh ———-15101F—————————– INT 15 - TopView - “DISPEROR” - POP-UP ERROR WINDOW
AX = 101Fh
BX = bit fields
bits 0-12: number of characters to display
bits 13,14: which mouse button may be pressed to remove window
00 = either
01 = left
10 = right
11 = either
bit 15: beep if 1
ES:DI -> text of message
CH = width of error window (0 = default)
CL = height of error window (0 = default)
DX = segment of object handle
Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed Note: window remains on-screen until ESC or indicated mouse button is pressed ———-151020—————————– INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
AX = 1020h
Return: pops up “Programming error” window in DV v2.00+ ———-151021—————————– INT 15 - TopView - “PGMINT” - INTERRUPT ANOTHER TASK
AX = 1021h BX = segment of object handle for task to interrupt (not self) DX:CX -> FAR routine to jump to next time task is run
Return: nothing Notes: the FAR routine is entered with the current ES, DS, SI, DI, and BP
values, using the task's internal stack (see AX=101Ah); only SS:SP needs to be preserved multiple PGMINTs to a single task are processed last-in first-out if the other task is in a DOS or DV API call, the interruption will occur on return from that call
———-151022BX0000———————– INT 15 - TopView - “GETVER” - GET VERSION
AX = 1022h BX = 0000h
Return: BX nonzero, TopView or compatible loaded
(BL = major version, BH = minor version)
Notes: TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h ———-151023—————————– INT 15 - TopView - “POSWIN” - POSITION WINDOW
AX = 1023h
BX = segment of object handle for parent window within which to
position the window (0 = full screen)
ES = segment of object handle for window to be positioned
DL = bit flags
bits 0,1: horizontal position
00 = current
01 = center
10 = left
11 = right
bits 2,3: vertical position
00 = current
01 = center
10 = top
11 = bottom
bit 4: don't redraw screen if set
bits 5-7 not used
CH = number of columns to offset from position specified by DL
CL = number of rows to offset from position specified by DL
Return: nothing ———-151024—————————– INT 15 - TopView - “GETBUF” - GET VIRTUAL SCREEN INFO
AX = 1024h
BX = segment of object handle for window
(0 = use default)
Return: ES:DI → virtual screen
CX = size of virtual screen in bytes
DL = 00h text screen
01h graphics screen
SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h ———-151025—————————– INT 15 - TopView - “USTACK” - SWITCH BACK TO USER'S STACK
AX = 1025h
Return: stack switched back Notes: call only after having switched to internal stack with AX=101Ah
while TopView requires many API calls to be executed while on the task's private stack, DESQview allows those calls to be executed regardless of the current stack
SeeAlso: AX=101Ah ———-1510——————————- INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
AH = 10h AL = 26h thru 2Ah
Return: pops up “Programming error” window in DV 2.x ———-15102B—————————– INT 15 - DESQview v2.00+ (TopView???) - “POSTTASK” - AWAKEN TASK
AX = 102Bh BX = segment of object handle for task
Return: nothing Note: forces a task which is waiting on its objectq to continue by placing
the handle for the task on the objectq
SeeAlso: AX=101Dh,AX=101Eh ———-15102C—————————– INT 15 - DESQview v2.00+ (TopView???) - START NEW APPLICATION IN NEW PROCESS
AX = 102Ch ES:DI -> contents of .PIF/.DVP file (see below) BX = size of .PIF/.DVP info
Return: BX = segment of object handle for new task
0000h on error
Format of .PIF/.DVP file: Offset Size Description 00h BYTE reserved (0) 01h BYTE checksum of bytes 02h through 170h 02h 30 BYTEs blank-padded program title 20h WORD maximum memory to allocate to partition in K 22h WORD minimum memory required in K 24h 64 BYTEs ASCIZ program pathname 64h BYTE default drive letter ('A',…) 65h 64 BYTEs ASCIZ default directory name A5h 64 BYTEs ASCIZ program parameters E5h BYTE initial screen mode (0-7) (see also offset 189h) E6h BYTE number of text pages used E7h BYTE number of first interrupt to save E8h BYTE number of last interrupt to save E9h BYTE rows in virtual screen buffer EAh BYTE columns in virtual screen buffer EBh BYTE initial window position, row ECh BYTE initial window position, column EDh WORD system memory in K EFh 64 BYTEs ASCIZ shared program name 12Fh 64 BYTEs ASCIZ shared program data file 16Fh BYTE flags1
bit 7: writes text directly to screen bit 6: runs in foreground only bit 5: uses math coprocessor bit 4: accesses system keyboard buffer directly bits 3-1: reserved (0) bit 0: swappable
170h BYTE flags2
bit 6: uses command-line parameters in field at A5h bit 5: swaps interrupt vectors
—information unique to .DVP files— 171h 2 BYTEs keys to use on open menu 173h WORD size of script buffer in bytes 175h WORD automatically give up CPU after this many tests for keyboard
input in one clock tick (default 0 = never)
177h BYTE nonzero = “uses own colors” 178h BYTE nonzero if application swappable 179h 3 BYTEs reserved (0) according to Quarterdeck documentation
in actual .DVP files, frequently 01h
17Ch BYTE nonzero to automatically close on exit 17Dh BYTE nonzero if copy-protect floppy is required —information unique to DESQview 2.0+— 17Eh BYTE .DVP version number
00h DESQview v1.2+ 01h DESQview v2.0+ 02h DESQview v2.2+
17Fh BYTE reserved (0) 180h BYTE initial number of rows in physical window 181h BYTE initial number of columns in physical window 182h WORD maximum expanded memory to allow, in K 184h BYTE flags3
bit 7: automatically assign window position bit 5: maximum memory value has been specified bit 4: disallow "Close" command bit 3: foreground-only when doing graphics bit 2: don't virtualize bit 1: ??? set by DV 2.31 when "Runs in Background" = "D"
185h BYTE keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+) 186h BYTE number of graphics pages used 187h WORD extra system memory size 189h BYTE initial screen mode (FFh = default) (overrides offset E5h) —information unique to DESQview 2.2+— 18Ah BYTE serial port usage
FFh uses all serial ports 00h no serial ports 01h only COM1 02h only COM2
18Bh BYTE flags4
bit 7: automatically close application on exit if .COM or .EXE specified bit 6: swappable if not using serial ports bit 5: start program with window hidden (v2.26+) bit 4: start program in background (v2.26+) bit 3: virtualize text bit 2: virtualize graphics bit 1: share CPU when foreground bit 0: share EGA when foreground and zoomed
18Ch BYTE protection level for 386 machines 18Dh 19 BYTEs reserved (0) for regular DESQview —information unique to DESQview/X 1.0— 18Dh BYTE flags5
bit 0: unused (0) bit 1: don't display DOS window bit 2: don't wait for windows to open bits 3-7: unused (0)
18Eh BYTE X keyboard behavior (0-3) 18Fh BYTE 01h = uses scalable fonts 190h 10 BYTEs unused (0) 19Ah WORD??? sum of all record size fields in records starting at 1A0h 19Ch 4 BYTEs signature “XDVP” 1A0h N BYTEs variable length records
Offset Size Description 00h BYTE length of following record, 00h if end of file 01h BYTE always 0??? (or length may be WORD) 02h BYTE record type 01h Script filename, up to 64 characters 05h Starting... values: ASCII copy of fields as typed into DVPMAN, separated by commas: starting row, starting column, starting height, starting width 03h N BYTEs ASCII data
———-15102D—————————– INT 15 - DESQview v2.00+ - “KMOUSE” - KEYBOARD MOUSE CONTROL
AX = 102Dh
BL = subfunction
00h determine whether using keyboard mouse
Return: BL = 00h using real mouse
01h using keyboard mouse
01h turn keyboard mouse on
02h turn keyboard mouse off
———-15102E—————————– INT 15 - DESQview v2.40 - ALLOCATE ??? MEMORY
AX = 102Eh BX = number of bytes
Return: AX = status
0000h successful
ES = segment of allocated memory
0001h failed
———-1511——————————- INT 15 - TopView commands
AH = 11h AL = various (except 17h)
Note: in DESQview 2.x, these function calls are identical to AH=DEh, so
see those below
SeeAlso: AH=DEh ———-1511——————————- INT 15 - VMiX - EXECUTE SHELL SYSTEM COMMANDS
AH = 11h STACK: DWORD pointer to ASCIZ string containing a VMiX shell request (max len = 127)
Return: AX = status ———-1511——————————- INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
AH = 11h
Note: disables the Alt-Z MultiDOS command/program-selection hotkey SeeAlso: AH=12h“MultiDOS” ———-151117BX0000———————– INT 15 - DESQview v2.20+ - “ASSERTMAP” - GET/SET MAPPING CONTEXT
AX = 1117h
BX = 0000h get current mapping context without setting
nonzero set new mapping context
Return: BX = mapping context in effect before call
interrupts enabled
Notes: this function differs from AX = DE17h for DESQview v2.20 through 2.25
mapping contexts determine conventional-memory addressability; setting a mapping context ensures that the associated program and data areas are in memory for access. Usable by drivers, TSRs and shared programs. caller need not be running under DESQview, but must ensure that the stack in use will not be mapped out by the call
SeeAlso: AX=DE17h,INT 2F/AX=1685h ———-1511DE—————————– INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
AX = 11DEh
Return: CF clear if installed
AX = segment at which QEXT.SYS is located
Note: a private entry point may be found by searching the beginning of the
returned segment for the signature string "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately prior to the signature contains the QEXT version number in BCD, and the word prior to that contains the offset within the QEXT code segment of the private entry point
SeeAlso: INT 67/AH=3Fh
Call private entry point with:
AH = 00h ??? AH = nonzero ???
———-1512——————————- INT 15 - VMiX - PUT PROCESS TO SLEEP
AH = 12h STACK: WORD process ID
Return: AX = status SeeAlso: AH=03h“MultiDOS”,AX=101Dh,AH=13h“VMiX” ———-1512——————————- INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
AH = 12h
Note: enables the Alt-Z MultiDOS command/program-selection hotkey SeeAlso: AH=11h“MultiDOS” ———-1512–BH00————————- INT 15 - TopView - SEND MESSAGE - “HANDLE” - RETURN OBJECT HANDLE
AH = 12h
BH = 00h
BL = which handle to return
00h handle in DWORD on top of stack
01h current task's window handle
02h given task's mailbox handle (task's handle on stack)
03h current task's mailbox handle
04h given task's keyboard handle (task's handle on stack)
05h current task's keyboard object handle
06h given task's OBJECTQ handle (task's handle on stack)
07h current task's OBJECTQ handle
08h \
thru > return 0000:0000 under DV < 2.26
10h /
0Ch (2.26+) task owning object with handle in DWORD on top of stack
0Dh (2.26+) task handle of owner (parent) of current task
Return: DWORD on top of stack is object handle Note: BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
mailbox, panel, pointer, and timer objects) or is an orphan (task, window)
———-1512–BH01————————- INT 15 - TopView - SEND MESSAGE - “NEW” - CREATE NEW OBJECT
AH = 12h
BH = 01h
BL = object type to create
00h (DV 2.0x only) handle is DWORD on top of stack
01h (DV 2.0x only) use task's window handle
02h (DV 2.0x only) given task's mailbox (task's handle on stack)
03h (DV 2.0x only) current task's mailbox
04h (DV 2.0x only) given task's keyboard (task's handle on stack)
05h (DV 2.0x only) current task's keyboard object
08h WINDOW class
09h MAILBOX class
0Ah KEYBOARD class
0Bh TIMER object (counts down 32-bit time in 10ms increments)
0Fh POINTER object
10h PANEL object
STACK: (if window object or WINDOW class)
DWORD address to jump to (no new task if high word == 0)
DWORD (reserved) 0 = non-task window, FFFFh = task window
DWORD bytes for task's private stack (FFFFh == default of 0100h)
DWORD bytes system memory for input buffer for READ/READN
(0 == none, -1 == default--same as logical window size)
DWORD window size, columns
DWORD window size, rows
DWORD length of window title
DWORD address of window title
Return: DWORD on top of stack is new object handle Notes: if a new task is created, it is started with
AX = BX = SI = DI = BP = 0 DX:CX = handle of parent task DS = ES = SS = segment of private stack (and new task's handle) new windows are orphans, inherit the colors/hidden status of the creating task's window, and are placed in the upper left hand corner of the screen but not automatically redrawn new keyboards are closed, and have all object bits cleared except for the hardware cursor bit
SeeAlso: AH=12h/BH=02h ———-1512–BH02————————- INT 15 - TopView - SEND MESSAGE - “FREE” - FREE AN OBJECT
AH = 12h
BH = 02h
BL = object
00h handle in DWORD on top of stack
window: close window and free
timer: free timer
panel: free panel object
pointer: free pointer
01h task's window handle - kills task, never returns
02h given task's mailbox (task's handle on top of stack)
03h current task's mailbox
04h given task's keyboard (task's handle on top of stack)
05h current task's keyboard object
Notes: when a window is freed, its keyboard and pointer objects are freed;
task windows also free any mailbox, objectq, and panel objects held by the task and any child tasks if the keyboard being freed is the default keyboard for a task, this call is equivalent to CLOSE panel and pointer objects are automatically closed if open
SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh ———-1512–BH03————————- INT 15 - TopView - SEND MESSAGE - “ADDR” - GET HANDLE OF MESSAGE SENDER
AH = 12h
BH = 03h
BL = object
00h mailbox handle in DWORD on top of stack
02h sender of last msg read from mailbox (task's handle on stack)
03h sender of last msg read from current task's mailbox
Return: DWORD on stack is task handle of message sender SeeAlso: AH=12h/BH=00h ———-1512–BH03————————- INT 15 - DESQview v2.26+ - “CONNECT” - CONNECT TWO WINDOWS
AH = 12h
BH = 03h
BL = window to be connected
00h handle of window to be attached in DWORD on top of stack
01h attach current task's main window
STACK: DWORD handle of window to attach to or 00000000h to detach
Return: ??? Notes: when two windows are connected, both will move if the user moves either
multiple windows may be attached to a single window, but each window may only be attached to one window at a time
———-1512–BX0300———————– INT 15 - TopView - SEND MESSAGE - “DIR” - GET PANEL FILE DIRECTORY
AH = 12h BX = 0300h STACK: DWORD handle of panel object
Return: STACK: DWORD length of directory (always multiple of 14 bytes)
DWORD address of directory
Note: a null string is returned if the object is not open
Format of panel file: Offset Size Description 00h 2 BYTEs C0h C3h 02h BYTE number of panels in file 03h for each panel in file:
8 BYTEs blank-padded panel name
DWORD panel offset in file
WORD panel length
data for panels (each consists of one or more window/query/manager
streams)
first byte of each panel must be 1Bh, fifth byte must be E5h
———-1512–BH04————————- INT 15 - TopView - SEND MESSAGE - “READ” - READ NEXT LOGICAL LINE OF WINDOW
AH = 12h
BH = 04h
BL = window to read from
00h handle is DWORD on top of stack
01h use calling task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent task of current task
Return: STACK: DWORD number of bytes read
DWORD address of buffer
Notes: reading starts at the current logical cursor position; the cursor is
updated to point at the character following the last one read any translucent blanks (FFh) which are visible on screen are changed to the character which is seen through them the string produced by the read is placed in an input buffer which may be reused by the next READ or READN of a window window stream opcodes D8h and D9h determine whether the read returns characters or attributes
SeeAlso: AH=12h/BH=05h“WINDOW”,AH=12h/BH=12h ———-1512–BH04————————- INT 15 - TopView - SEND MESSAGE - “READ” - GET NEXT RECORD FROM OBJECT
AH = 12h
BH = 04h
BL = object
00h handle is DWORD on top of stack
mailbox: wait for and get next message
keyboard: wait for and get pointer to next input buffer
pointer: wait for and get next message
02h get next message from mailbox (task's handle on top of stack)
03h get next message from current task's mailbox
04h get the next input from keyboard (handle on top of stack)
05h get the next input from task's default keyboard
06h wait for input from any object in OBJECTQ (handle on stack)
07h wait for input from any object in task's default OBJECTQ
Return: STACK: (if objectq) DWORD handle of object with input
(otherwise) DWORD number of bytes DWORD address
Notes: for a keyboard in keystroke mode, the input buffer is a single byte
containing the character code as returned by the BIOS; the BIOS scan code is available via the STATUS call if the character is zero for a keyboard in field mode, the input buffer format is determined by the field table header for the window the keyboard is attached to keyboard input buffers and mailbox message buffers may be invalidated by the next READ, ERASE, CLOSE, or FREE message to the same object
SeeAlso: AH=12h/BH=05h“OBJECT”
Format of pointer message: Offset Size Description 00h WORD row 02h WORD column 04h BYTE status
bit 6: set when press/release mode active and button released bits 7-2: number of clicks-1 if multiple-click mode active bits 1,0: button pressed (00=none,01=button1,10=button2)
05h BYTE field number or zero (APILEVEL >= 2.00 only) ———-1512–BX0400———————– INT 15 - TopView - SEND MESSAGE - “READ” - WAIT FOR TIMER TO EXPIRE
AH = 12h BX = 0400h STACK: DWORD timer's handle
Return: after timer expires
STACK: DWORD time in 1/100 sec after midnight when timer expired
———-1512–BX0400———————– INT 15 - TopView - SEND MESSAGE - “APPLY” - WRITE PANEL TO WINDOW
AH = 12h
BX = 0400h
STACK: DWORD handle of panel object
DWORD window's handle (or 0 for current task's window)
DWORD length of panel name
DWORD pointer to panel name
Return: STACK: DWORD handle of keyboard or 0
DWORD handle of window which was used
Notes: status of APPLY may be checked with STATUS message
panel MUST have the following format
first byte must be 1Bh (i.e. must start with a stream)
first opcode in stream must be E5h
single byte arg of opcode is interpreted thus:
bits 7,6 11 means create new window
10 means create new field table for existing window
01 means use existing window and field table
bit 5 if set, panel contains a field table
(creates a new keyboard and puts it in field mode)
bit 4 if set, panel contains input fields
bit 3 if set, panel contains select fields but no input fields
if the panel contains input or select fields, a keyboard handle is
returned; either the window's current open keyboard or a
newly-created keyboard object. The caller should read that keyboard
to obtain input from the panel.
———-1512–BH05———————— INT 15 - TopView - SEND MESSAGE - “WRITE” - WRITE TO OBJECT
AH = 12h
BH = 05h
BL = object
00h handle is DWORD on top of stack
timer: start timer to end at a specified time
keyboard: add input buffer to queue
pointer: move pointer icon to specified position
02h send message by value/status=0 to mbox (task's handle on stack)
03h send message by value/status=0 to current task's mailbox
04h add input buffer to KEYBOARD queue (handle on top of stack)
05h add input buffer to task's default KEYBOARD queue
06h add an object to OBJECTQ (handle on top of stack)
07h add an object to task's default OBJECTQ
STACK: (if mailbox) DWORD length
DWORD address
(if keyboard) DWORD status (scan code in keystroke mode)
DWORD length (should be 1 in keystroke mode)
DWORD address
(if objectq) DWORD handle of object to add
(if timer) DWORD 1/100ths seconds since midnight (actually
only accurate to 1/18 sec)
(if pointer) DWORD column relative to origin of window
DWORD row relative to origin of window
Notes: under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
the data and status written to a keyboard object must match the format returned by the keyboard object in the current mode the pointer position is scaled according to the current scaling factors
SeeAlso: AH=12h/BH=04h ———-1512–BH05————————- INT 15 - TopView - SEND MESSAGE - “WRITE” - WRITE STRING TO WINDOW
AH = 12h
BH = 05h
BL = window to write to
00h DWORD on top of stack is window handle
01h write string to task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD object handle if handle passed on stack
DWORD total length of string (high word == 0)
DWORD address of string to display
Return: indicated actions performed
a. non-control characters are displayed (opcodes DEh and DFh control whether the attributes are left or changed to the current attrib) b. CR/LF/BS/Tab cause the usual cursor movement c. ESC starts a data structure with additional commands if following byte is less than 20h; otherwise, it is written to the window STACK: DWORD handle of new window if window stream opcode E6h else nothing
Data Structure:
MAGIC DB 1Bh
MODE DB ? ; 00h, 01h, 10h, 14h-1Fh legal
LENGTH DW ? ; length of remainder in bytes
var-length fields follow, each an OPCODE followed by
zero or more args
MODE 00h (set or display values) “WINDOW STREAM”
Opcodes:args
00h display 20h blanks with the default attribute
01h-1Fh display OPCODE blanks with the default attribute
20h display char with default attribute 20h times
BYTE char to repeat
21h-3Fh display char with default attribute OPCODE-20h times
BYTE char to repeat
40h display 20h blanks with specified attribute
BYTE attribute of blanks
41h-5Fh display OPCODE-40h blanks with specified attribute
BYTE attribute of blanks
60h display next 20h characters
20h BYTEs characters to display
61h-7Fh display next OPCODE-60h characters
N BYTEs characters to display
80h-87h display N blanks with default attribute
BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
[000h means 800h]
88h-8Fh display N copies of the character
BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
[000h means 800h]
BYTE character to repeat
90h-97h display N blanks with specified attribute
BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
[000h means 800h]
BYTE attribute
98h-9FH display string at logical cursor pos
BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
[000h means 800h]
N BYTEs string to display
A0h set logical cursor row
BYTE row number (0 is top)
A1h set logical cursor column
BYTE column number (0 is leftmost)
A2h set top edge of scrolling region
BYTE row
A3h set left edge of scrolling region
BYTE column
A4h set row of physical window position
BYTE line
A5h set column of physical window position
BYTE column
A6h set height of physical window
BYTE #rows
A7h set width of physical window
BYTE #columns
A8h set viewport row
BYTE row
A9h set viewport column
BYTE column
AAh set virtual screen height [contents of window unpredictable after]
BYTE rows
ABh set virtual screen width [contents of window unpredictable after]
BYTE columns
ACh-AEh unused
AFh set compatible/preferred video modes
BYTE compatibility/preference mask
bit 7 compatible with monochrome
bit 6 compatible with color text, EGA/VGA graphics
bit 5 compatible with medium-resolution CGA graphics
bit 4 compatible with high-resolution CGA graphics
bit 3 prefer monochrome
bit 2 prefer color text, EGA/VGA graphics
bit 1 prefer medium-resolution CGA graphics
bit 0 prefer high-resolution CGA graphics
B0h move logical cursor down
BYTE #rows (signed, negative values move up)
[if #rows=0 and hardware cursor owner, update hw crsr]
B1h move logical cursor right
BYTE #cols (signed, negative values move left)
[if #cols=0 and hardware cursor owner, update hw crsr]
B2h shift top edge of scrolling region
BYTE #rows (signed)
B3h shift left edge of scrolling region
BYTE #cols (signed)
B4h shift physical window down
BYTE #lines (signed)
B5h shift physical window right
BYTE #columns (signed)
B6h expand physical window vertically
BYTE #lines (signed)
B7h expand physical window horizontally
BYTE #columns (signed)
B8h adjust viewport row
BYTE #rows (signed)
B9h adjust viewport column
BYTE #columns (signed)
BAh adjust virtual screen height [contents of window unpredict after]
BYTE #rows to increase (signed)
BBh adjust virtual screen width [contents of window unpredictbl after]
BYTE #cols to increase (signed)
BCh-BFh reserved (currently unused)
C0h set logical cursor position
BYTE row number (0 is top border)
BYTE column number (0 is left border)
C1h set top left corner of scrolling region
BYTE row
BYTE column
C2h set physical window pos
BYTE upper left row (no top border if 0)
BYTE upper left column (no left border if 0)
C3h set current window size
BYTE #rows
BYTE #cols
C4h set upper left corner of viewport (portion of virtual screen
displayed in window)
BYTE row
BYTE column
C5h set size of virtual screen [contents unpredictable afterwards]
BYTE #rows
BYTE #cols
C6h unused
C7h unused
C8h set logical cursor relative to current position
BYTE number of rows to move down (signed)
BYTE number of columns to move right (signed)
[if #rows=#cols=0 and hardware cursor owner, update hw cursr]
C9h shift top left corner of scrolling region
BYTE #rows (signed)
BYTE #cols (signed)
CAh set window pos relative to current position
BYTE number of rows to shift down (signed)
BYTE number of columns to shift right (signed)
CBh set window size relative to current size
BYTE number of rows to expand (signed)
BYTE number of cols to expand (signed)
CCh shift viewport relative to current position
BYTE rows to shift (signed)
BYTE cols to shift (signed)
CDh resize virtual screen
BYTE #rows to expand (signed)
BYTE #cols to expand (signed)
CEh scroll text when using E8h-EBh/F8h-FBh opcodes (default)
CFh scroll attributes when using E8h-EBh/F8h-FBh opcodes
D0h allow window frame to extend beyond screen
D1h always display a complete frame, even if window extends beyond
edge of screen
D2h allow DV to change logical colors on video mode switch (default)
D3h application changes logical attributes
D4h window is visible [must redraw to actually make visible]
D5h window is hidden [must redraw to actually remove]
D6h window has frame (default)
D7h window unframed [must redraw to actually remove frame]
D8h READ/READN will read characters from window (default)
D9h READ/READN will read attributes from window
DAh use logical attributes, which may be remapped
attributes
1 normal text
2 highlighted normal text
3 help text
4 highlighted help text
5 error message
6 highlighted error message
7 emphasized text
8 marked text
9-16 are reverse video versions of 1-8
DBh use physical attributes for characters
DCh enable special actions for control characters (default)
DDh disable special control char handling, all chars displayable by
BIOS TTY call
DEh write both character and attribute (default)
DFh write character only, leave attribute untouched
E0h repeat following commands through E1h opcode
BYTE number of times to repeat (00h means 256 times)
E1h end of commands to repeat, start repeating them
E2h set current output color
BYTE color
E3h clear virtual screen from scroll origin to end using current color
E4h redraw window
E5h select menu style
BYTE style (normally 18h)
bits 5,4 = 01 use two-letter menu entries for remainder of
this stream
E5h (panel file only)
BYTE modifier
bits 7,6 = 11 panel stream creates new window
= 10 panel defines new field table for existing window
= 01 panel stream uses existing window & field table
bit 5 = 1 stream contains a field table (create kyboard object)
bit 4 = 1 stream defines input fields (create keyboard object)
bit 3 = 1 stream defines select fields but not input fields
bit 2 = 1 stream defines exclusive input window (DV 2.2)
bit 1 reserved
bit 0 reserved
E6h create new window and perform rest of manipulations in new window
BYTE number of rows
BYTE number of columns
Return: DWORD object handle of new window returned on stack at end
E7h no operation
E8h scroll area up (top left corner defined by opcode C1h)
BYTE height
BYTE width
E9h scroll area down (top left corner defined by opcode C1h)
BYTE height
BYTE width
EAh scroll area left (top left corner defined by opcode C1h)
BYTE height
BYTE width
EBh scroll area right (top left corner defined by opcode C1h)
BYTE height
BYTE width
ECh set logical attributes for window contents
BYTE video modes command applies to
bit 7 monochrome
bit 6 color text, EGA/VGA graphics
bit 5 medium-resolution CGA graphics
bit 4 high-resolution CGA graphics
BYTE which attributes to set
bit 7 if set, copy single following byte to indicated attribs
bits 4-6 # of first attribute to change - 1
bits 0-3 # of consecutive attributes to change
N BYTEs new attributes
EDh set logical attributes for window frame
BYTE video modes command applies to (see opcode ECh)
BYTE which attributes to set
bit 7 if set, copy single following byte to indicated attrs
bits 4-6 # of first attribute to change - 1
bits 0-3 # of consecutive attributes to change
N BYTEs new attributes
attributes
1 = top left corner
2 = top right corner
3 = bottom left corner
4 = bottom right corner
5 = top edge
6 = bottom edge
7 = left edge
8 = right edge
EEh set characters for window frame
BYTE video modes command applies to (see opcode ECh)
BYTE which characters to set
bit 7 if set, copy single following byte to indicated chars
bits 4-6 # of first char to change - 1
bits 0-3 # of consecutive chars to change
N BYTEs new chars (same relative position as attributes above)
EFh set window name
BYTE length of name (should be in range 0 to logical screen width)
N BYTEs name
F0h clear input field to blanks
BYTE field number
F1h fill input field with character
BYTE field number
BYTE char
F2h set color of input field
BYTE field number (1-N)
BYTE attribute
F3h set initial contents of input field
BYTE field number (1-N)
N BYTEs enough chars to exactly fill field as defined by op FFh
F4h position cursor to start of specific input field
BYTE field number (1-N)
F5h change field table entry
BYTE field number
7-8 BYTEs field table entry (see opcode FFh below)
F6h set field type
BYTE field number
BYTE type
00h inactive
40h output field
80h input field
C0h deselected field
C2h selected field
F7h "broadcast write" write data to fields with program output bit
set in field table entry, in field number order
N BYTEs (total length of all program output fields)
F8h scroll field up a line
BYTE field number
F9h scroll field down a line
BYTE field number
FAh scroll field left
BYTE field number
FBh scroll field right
BYTE field number
FCh set field table header
BYTE number of fields (must be <= existing number of fields)
BYTE screen behavior bits
bit 7 reserved
bit 6 set if menu items may be selected via keyboard
bit 5 set if left mouse button may terminate entry
bit 4 set if right mouse button may terminate entry
bit 3 if set, select fields return contents or blanks rather
than 'Y' or 'N'
bit 2 if set, modified bits reset on return to application
bits 0,1 = 00 no data returned on read of keyboard
01 data returned as array of chars containing
all fields packed together, with no field
numbers
10 data returned as numbered variable-length
records for all fields
11 data returned as numbered variable-length
records for the fields which were modified
BYTE current input field (updated by DESQview)
BYTE current select field (updated by DESQview)
BYTE attribute for select fields when they are pointed at
BYTE attribute for select fields which have been selected
FDh reset modified bit for all fields
FEh reset selected and modified bits for all fields
FFh set up input fields
6 BYTEs table header (see opcode FCh above)
the field table entries, one for each field
BYTE start row \
BYTE start column \ if menu selection and start is to
BYTE end row / right or below end, select from kbd only
BYTE end column /
BYTE field type
bits 7,6 = 00 inactive (non-entry) field
01 echos keystrokes input to make menu selection
10 fill-in field
11 select field
bit 5 field can be filled by broadcast write (F7h opcode)
bit 4 reserved
bit 3 reserved
bit 2 reserved
bit 1 set if field selected
bit 0 set if field modified
BYTE modifier
if type is fill-in, then bit flags to determine behavior
bit 7 if set, automatically enter CR when field full
bit 6 move to next field when current field is full
bit 5 if set, enter text from right end (for numbers)
bit 4 if set, force input to uppercase
bit 3 if set, clear old contents on first keystroke
bit 2 if set, input returned when cursor moves out
of modified field (API level 2.02+)
bit 1 reserved
bit 0 reserved
if select field, first key to press to activate
00h if have to point-&-click or is an extended-ASCII
keystroke (only if two-key menus enabled)
BYTE (select field only) normal color of field
BYTE second key for select field. This byte is present iff
two-letter menu entries selected with opcode E5h, and
in that case is present regardless of field type
Note: DESQview uses and updates the actual copy of the information
which is contained in the stream. Thus this info must remain
intact until after the data entry is complete.
MODE 01h “QUERY STREAM” (valid only for those opcodes listed here)
A0h return logical cursor row in next byte
A1h return logical cursor column in next byte
A2h return top row of scrolling region in next byte
A3h return left column of scrolling region in next byte
A4h return row of physical window origin in next byte
A5h return column of physical window origin in next byte
A6h return height of physcial window in next byte
A7h return width of physical window in next byte
A8h return row of viewport origin in next byte
A9h return column of viewport origin in next byte
AAh return height of virtual screen in next byte
ABh return width of virtual screen in next byte
AFh return current video mode in next byte
C0h return current logical cursor position in next two bytes
C1h return top left corner of scrolling region in next two bytes
C2h return current window position in next two bytes
C3h return current window size in next two bytes
C4h return current viewport origin in next two bytes
C5h return current virtual screen size in next two bytes
D0h \ overwritten with D0h if frames may fall off screen edge
D1h / D1h if frames always displayed entirely
D2h \ overwritten with D2h if DESQview controls color palette
D3h / D3h if application changes color palette
D4h \ overwritten with D4h if window visible
D5h / D5h if window hidden
D6h \ overwritten with D6h if window has frame
D7h / D7h if window unframed
D8h \ overwritten with D8h if reading characters from window
D9h / D9h if reading attributes from window
DAh \ overwritten with DAh if using logical attributes
DBh / DBh if using physical attributes
DCh \ overwritten with DCh if TTY control char interpretation on
DDh / DDh if TTY control char interpretation off
DEh \ overwritten with DEh if writing both characters and attributes
DFh / DFh if leaving attributes untouched
E2h return current color in next byte
ECh get logical attributes for window contents
BYTE execute call if currently in specified video mode
bit 7 monochrome
bit 6 color text, EGA/VGA graphics
bit 5 medium-resolution CGA graphics
bit 4 high-resolution CGA graphics
BYTE which attributes to get
bit 7 unused???
bits 4-6 first attribute to get - 1
bits 0-3 # consecutive attributes
N BYTEs buffer to hold attributes
EDh get logical attributes for window frame
BYTE execute call if currently in video mode (see opcode ECh)
BYTE which attributes to get
bit 7 unused???
bits 4-6 first attribute to get - 1
bits 0-3 # consecutive attributes
N BYTEs buffer to hold attributes
EEh get characters for window frame
BYTE execute call if currently in video mode (see opcode ECh)
BYTE which attributes to get
bit 7 unused???
bits 4-6 first char to get - 1
bits 0-3 # consecutive chars
N BYTEs buffer to hold chars
EFh return first N characters of current window name
BYTE max length of returned name
N BYTEs buffer to hold window name
F3h return contents of specified field
BYTE field number
N BYTEs buffer to hold field contents (size exactly equal to field
size)
F5h get field table entry
BYTE field number
7-8 BYTEs buffer to hold field table entry
Notes: DV < 2.26 always returns 7 bytes
DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field
table is using 8-byte entries and eighth byte after
F5h is E7h (NOP); otherwise, 7 bytes are returned
DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes
depending on the field table entry size
F6h get type of a field
BYTE field number
BYTE type
FCh get field table header
6 BYTEs buffer to store header
MODE 10h “MANAGER STREAM” (valid only for opcodes listed here)
00h allow window to be moved horizontally
01h allow window to be moved vertically
02h allow window to change width
03h allow window to change height
04h allow window to be scrolled horizontally
05h allow window to be scrolled vertically
06h allow "Close Window" menu selection for application
07h allow "Hide Window" menu selection for application
08h allow application to be suspended ("Rearrange/Freeze")
0Eh allow "Scissors" menu
10h allow DESQview main menu to be popped up
11h allow "Switch Windows" menu
12h allow "Open Window" menu
13h allow "Quit" menu selection
20h-33h opposite of 00h-13h, disallow specified action
40h notify if horizontal position of window changes
41h notify if vertical position of window changes
42h notify if width of window changes
43h notify if height of window changes
44h notify if window scrolled horizontally
45h notify if window scrolled vertically
46h notify if window is closed--program has to clean up and exit itself
47h notify if window is hidden
48h notify if "?" on main menu selected
49h notify if pointer message sent to window
4Ah notify if window is placed in foreground
4Bh notify if window is placed in background
4Ch notify if video mode changes
4Dh notify if "Scissors" menu "Cut" option selected
4Eh notify if "Scissors" menu "Copy" option selected
4Fh notify if "Scissors" menu "Paste" option selected
50h notify if DESQview main menu about to pop up
51h notify if DESQview main menu popped down
60h-71h opposite of 40h-51h: don't notify on specified event
84h attach window to parent task's window (both move together)
85h detach window from parent task's window (may move independently)
86h disable background operation for application
87h enable running in background
88h set minimum size of physical window
BYTE rows
BYTE columns
89h set maximum size of physical window
BYTE rows
BYTE cols
8Ah set primary asynchronous notification routine
DWORD address of routine, 0000h:0000h means none (see also below)
8Bh set async notification parameter
DWORD 32-bit value passed to 8Ah async routine in DS:SI
ACh (DV2.2+) perform regular select field attribute processing
ADh (DV2.2+) protect attributes in selected field from being lost
AEh make window default notify window for owning app (API level 2.00+)
AFh set selected field marker character
BYTE character to display at left edge of selected fields
BCh set standard field processing mode
BDh set alternate field processing mode (enables cursor pad for menus)
BEh disables changing reverse logical attributes with ECh opcode
BFh enables changing reverse logical attributes with ECh opcode
C0h make current window topmost in system
C1h force current process into foreground
C2h make current window topmost in process
C3h position mouse pointer relative to origin of current field
BYTE rows below upper left corner of field
BYTE columns to right of upper left corner of field
C4h position mouse pointer relative to origin of given field
BYTE field number
BYTE rows below upper left corner of field
BYTE columns to right of upper left corner of field
C5h orphan current window (also hides it)
Note: must be last in stream; all subsequent commands ignored
C6h show all windows for this process
C7h hide all windows for this process
C8h suspend process and hide all its windows
C9h force current process into background
CAh make current window bottom-most in process
CBh cancel current window manager operation, remove DV menu, give
control to topmost application
CCh orphan window and give it to the system for use as paste data
CEh reorder windows
DWORD pointer to null-terminated list of words
each word is segment of object handle for a window
FFh no operation
MODES 14h to 1Fh “USER STREAMS”
normally NOPs, but may be defined by SETESC message to invoke FAR routines, one for each mode number on entry to handler, DS:SI -> first byte of actual stream (not header) CX = #bytes in stream ES:DI = window's handle
Asynchronous notification routine defined by manager stream 8Ah called with:
ES:DI = handle of window
DS:SI is 32-bit value set by 8Bh manager stream opcode
mailbox contains message indicating event
Opcode
40h horizontal movement
DWORD object handle of window
BYTE new row
BYTE new col
41h vertical movement
DWORD object handle of window
BYTE new row
BYTE new col
42h horizontal size change
DWORD object handle of window
BYTE new rows
BYTE new cols
43h vertical size change
DWORD object handle of window
BYTE new rows
BYTE new cols
44h scrolled horizontally
DWORD object handle of window
BYTE mouse row within window
BYTE mouse column within window
BYTE field mouse is on, 0 if none
BYTE amount moved: >0 right, <0 left, 0 done
45h scrolled vertically
DWORD object hande of window
BYTE mouse row within window
BYTE mouse column within window
BYTE field mouse is on, 0 if none
BYTE amount moved: >0 down, <0 up, 0 done
46h window close request
DWORD object handle of window
BYTE mouse pointer row
BYTE mouse pointer column
BYTE field mouse is on, 0 if none
47h application's windows hidden
48h Help for Program selected
DWORD object handle of window
BYTE mouse pointer row
BYTE mouse pointer column
BYTE field mouse is on, 0 if none
49h pointer message sent to window
DWORD pointer handle which received message
4Ah switched to window from another ("raise")
4Bh switched away from the window ("lower")
4Ch video mode changed
BYTE new BIOS video mode
4Dh Scissors/cUt selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window created with
copy of data from specified region
BYTE height of region
BYTE width of region
4Eh Scissors/Copy selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window created with
copy of data from specified region
BYTE height of region
BYTE width of region
4Fh Scissors/Paste selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window with data
BYTE height of region
BYTE width of region
Note: orphaned data window should be adopted or freed
when done
50h main menu about to pop up
51h main menu popped down
Return: all registers unchanged ———-1512–BH06————————- INT 15 - DESQview 2.20+ - SEND MESSAGE - “SETPRI” - SET PRIORITY WITHIN OBJECTQ
AH = 12h
BH = 06h
BL = object
00h object handle in DWORD on top of stack
mailbox, keyboard, pointer, or timer
04h given task's keyboard (task's handle on top of stack)
05h current task's default keyboard
STACK: DWORD new priority of object in task's OBJECTQ
Notes: initially all objects have the same default value. Should only make
relative adjustments to this default value. when changing priorities, all objects already on the objectq are reordered
SeeAlso: AH=12h/BH=07h ———-1512–BH07————————- INT 15 - DESQview 2.20+ - SEND MESSAGE - “GETPRI” - GET PRIORITY WITHIN OBJECTQ
AH = 12h
BH = 07h
BL = object
00h object handle in DWORD on top of stack
mailbox, keyboard, pointer, or timer
04h given task's keyboard (task's handle on top of stack)
05h current task's default keyboard
Return: STACK: DWORD object priority Note: initially all objects have the same default value. Should only make
relative adjustments to this default value.
SeeAlso: AH=12h/BH=06h ———-1512–BH08————————- INT 15 - TopView - SEND MESSAGE - “SIZEOF” - GET OBJECT SIZE
AH = 12h
BH = 08h
BL = object
00h handle in DWORD on top of stack
window: total character positions in window
timer: elapsed time since timer started
pointer: number of messages queued to pointer object
panel: number of panels in panel file
keyboard: number of input buffers queued
01h total chars in current task's default window
02h number of messages in task's mailbox (task's handle on stack)
03h number of messages in current task's mailbox
04h number of input buffers queued in task's kbd (handle on stack)
05h number of input buffers queued for current task's default kbd
06h number of objects queued in OBJECTQ (task's handle on stack)
07h number of objects queued in current task's OBJECTQ
0Ch (DV 2.26+) total chars in window owning handle on top of stack
0Dh (DV 2.26+) total chars in parent task's window
Return: DWORD on top of stack is result Note: for panel objects, a count of zero is returned if no panel file is open
for the object
SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h ———-1512–BH09————————- INT 15 - TopView - SEND MESSAGE - “LEN” - GET OBJECT LENGTH
AH = 12h
BH = 09h
BL = object
00h handle in DWORD on top of stack
window: get chars/line
timer: get 1/100 seconds remaining before timer expires
01h get number of chars/line in current task's default window
0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
0Dh (DV 2.26+) get chars/line in parent task's window
Return: DWORD on top of stack is length SeeAlso: AH=12h/BH=08h ———-1512–BH0A————————- INT 15 - TopView - SEND MESSAGE - “ADDTO” - WRITE CHARS AND ATTRIBS TO WINDOW
AH = 12h
BH = 0Ah
BL = window to write to
00h window handle is DWORD on top of stack
01h current task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD count of attributes
DWORD address of attribute string
DWORD count of characters
DWORD address of character string
Notes: if one string is longer than the other, the shorter one will be reused
until the longer one is exhausted the cursor is left just after the last character written
SeeAlso: AH=12h/BH=0Bh“WINDOW” ———-1512–BH0A————————- INT 15 - TopView - SEND MESSAGE - “ADDTO” - SEND MAILBOX MESSAGE/STAT BY VALUE
AH = 12h
BH = 0Ah
BL = mailbox to write to
00h handle is DWORD on top of stack
02h default mailbox of task whose handle is on top of stack
03h current task's default mailbox
STACK: DWORD status (low byte)
DWORD length of message
DWORD address of message
Notes: the message is copied into either system or common memory
insufficient memory normally causes the process to be aborted; under DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
SeeAlso: AH=12h/BH=0Bh“MAILBOX” ———-1512–BH0A————————- INT 15 - TopView - SEND MESSAGE - “ADDTO” - SET OBJECT BITS
AH = 12h
BH = 0Ah
BL = object
00h handle is DWORD on top of stack
timer: start timer for specified interval
pointer: set control flags
keyboard: set control flags
04h set control flags on KEYBOARD object (handle on top of stack)
05h set control flags on task's default KEYBOARD object
STACK: (if timer) DWORD duration in 1/100 seconds
(otherwise) DWORD bits to set
SeeAlso: AH=12h/BH=0Bh“OBJECT”
For keyboard objects, the bits have the following significance:
bit 15 reserved, can't be set bit 14 unused bit 13 reserved, can't be set bit 12-6 unused bit 5 (DV 2.2+) exclusive input bit 4 filter all keys (used with handler established by SETESC) if 0, only keys that would normally be displayed are filtered bit 3 program continues executing while input in progress bit 2 insert mode active for field mode bit 1 hardware cursor displayed when task is hardware cursor owner must be set if keyboard in field mode and field table includes input fields bit 0 keyboard is in field mode rather than keystroke mode
For pointer objects, the bits have the following significance:
bit 15 reserved, can't be set
bit 14-8 unused
bit 7 mouse pointer is hidden while in window
bit 6 get messages even if window not topmost
bit 5 get messages even if window not foreground
bit 4 multiple clicks separated by less than 1/3 second are counted
and returned in a single message
bit 3 pointer position is relative to screen origin, not window origin
bit 2 send message on button release as well as button press
bit 1 (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever
pointer leaves the window
bit 0 send message only on button activity, not movement
DV-specific, and INT 15/AX=DE0Fh must have been called first
———-1512–BH0B————————- INT 15 - TopView - SEND MESSAGE - “SUBFROM” - WRITE ATTRIBUTES TO WINDOW
AH = 12h
BH = 0Bh
BL = window to write attributes to
00h handle is DWORD on top of stack
01h current task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD number of attributes to write
DWORD address of attributes
Note: the attributes are written starting at the current cursor position; the
cursor is left just after the last position written
SeeAlso: AH=12h/BH=0Ah“WINDOW” ———-1512–BH0B————————- INT 15 - TopView - SEND MESSAGE - “SUBFROM” - SEND MAILBOX MESSAGE/STAT BY REF
AH = 12h
BH = 0Bh
BL = mailbox to write to
00h handle is DWORD on top of stack
02h default mailbox of task whose handle is on top of stack
03h current task's default mailbox
STACK: DWORD status (low byte)
DWORD length of message
DWORD address of message
Notes: only a pointer to the message is stored, but the write may still fail
due to insufficient memory under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
SeeAlso: AH=12h/BH=0Ah“MAILBOX” ———-1512–BH0B————————- INT 15 - TopView - SEND MESSAGE - “SUBFROM” - REMOVE OBJECT FROM OBJECTQ
AH = 12h
BH = 0Bh
BL = OBJECTQ from which to remove all copies of a particular object
06h OBJECTQ of task whose handle is on top of stack
07h task's default OBJECTQ
STACK: DWORD handle of object to remove
Note: should be sent whenever an object is erased or closed ———-1512–BH0B————————- INT 15 - TopView - SEND MESSAGE - “SUBFROM” - RESET OBJECT BITS
AH = 12h
BH = 0Bh
BL = object
00h handle is DWORD on top of stack
pointer: reset control flags
keyboard: reset control flags
04h clear control flags on KEYBOARD object (handle on top of stack)
05h clear control flags on task's default KEYBOARD object
STACK: DWORD which bits to clear (see AH=12h/BH=0Ah"OBJECT")
SeeAlso: AH=12h/BH=0Ah“OBJECT” ———-1512–BH0C————————- INT 15 - TopView - SEND MESSAGE - “OPEN” - OPEN OBJECT
AH = 12h
BH = 0Ch
BL = object
00h handle is DWORD on top of stack
window: fill with given character from scroll origin to end
keyboard: attach to a window
timer: open
pointer: start taking input for window
panel: associate with a panel file
01h fill task's default window with given char from scrl org to end
02h open given task's mailbox for input (task's handle on stack)
03h open current task's mailbox
04h attach a KEYBOARD to a window (handle on top of stack)
05h attach task's default KEYBOARD to a window
06h open a task's OBJECTQ (task's handle on top of stack)
07h open current task's OBJECTQ
0Ch (DV 2.26+) fill def window of task owning handle on top of stck
0Dh (DV 2.26+) fill default window of parent of current task
STACK: (if window) DWORD character to fill with
(if keyboard) DWORD handle of window to attach to
(if pointer) DWORD handle of window to attach to
(if panel) DWORD length of filename or resident panel
DWORD address of filename or resident panel
(otherwise) nothing
Notes: if first byte of panel file name is 1Bh, then the “name” IS a panel
if first two bytes of panel file "name" are C0hC3h, then the "name" IS the panel file result code of open may be retrieved with STATUS message logical cursor is left at scroll origin after filling window the task opening a mailbox becomes its owner, and the only task allowed to read the mailbox messages are only sent to a pointer object when the mouse is positioned in the window to which the pointer has been attached there is no need to explicitly open a timer object, as ADDTO and WRITE messages automatically open the timer
SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h“LOCK” ———-1512–BH0D————————- INT 15 - TopView - SEND MESSAGE - “CLOSE” - CLOSE OBJECT
AH = 12h
BH = 0Dh
BL = object
00h handle is DWORD on top of stack
timer: close
keyboard: detach from window and discard queued input
pointer: stop taking input
panel: close
mailbox: close, unlock, and discard any pending messages
02h close given task's mailbox (task's handle on top of stack)
03h close task's default mailbox
04h close KEYBOARD object (handle on top of stack)
05h close task's default KEYBOARD
06h close givent task's OBJECTQ (task's handle on top of stack)
07h close current task's OBJECTQ
Notes: when an OBJECTQ is closed, each object in the OBJECTQ is sent an
ERASE message (AH=12h/BH=0Eh) when a panel object is closed, the panel file and any panels currently in use are freed; window and keyboard objects created by APPLY are not affected, but field mode input ceases open but idle timer objects consume a small amount of CPU time
SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h“LOCK” ———-1512–BH0E————————- INT 15 - TopView - SEND MESSAGE - “ERASE” - ERASE OBJECT
AH = 12h
BH = 0Eh
BL = object
00h handle is DWORD on top of stack
window: clear from scroll origin to end of window
keyboard: discard input
timer: cancel current interval
pointer: discard all pending messages
mailbox: discard all pending messages
01h clear task's default window from scroll origin to end
02h discard all queued messages in mailbox (handle on top of stack)
03h discard all queued messages in current task's default mailbox
04h discard all input queued to KEYBOARD (handle on top of stack)
05h discard all input queued to task's default KEYBOARD
06h remove all objects from OBJECTQ (task's handle on top of stack)
07h remove all objects from current task's OBJECTQ
0Ch (DV 2.26+) clear window of task owning handle on top of stack
0Dh (DV 2.26+) clear default window of parent of current task
Note: when an OBJECTQ is erased, each object in the OBJECTQ is also erased SeeAlso: AH=12h/BH=02h ———-1512–BH0F————————- INT 15 - TopView - SEND MESSAGE - “STATUS” - GET OBJECT STATUS
AH = 12h
BH = 0Fh
BL = object
00h handle is DWORD on top of stack
timer: is it running?
pointer: return status of last message
panel: verify success of last OPEN or APPLY
02h return status of last msg READ from mailbox (handle on stack)
03h return status of last msg READ from task's default mailbox
04h get status of last msg from task's KEYBOARD (task handle on stk)
05h get status of last msg from task's default KEYBOARD
06h return whether OBJECTQ is open or not (handle on top of stack)
07h return whether task's default OBJECTQ is open or not
Return: DWORD on top of stack is status Notes: if object is a panel object, the status indicates the error code:
00h successful 14h panel name not in panel directory 15h not enough memory to apply panel 16h invalid panel format 17h panel file already open 81h-92h DOS error codes+80h \ codes > 80h indicate 95h not enough memory to open panel file > that the panel was 98h null panel file name / not opened if object is a timer, the status is: 00000000h open but not running 40000000h open and running 80000000h closed if object is an OBJECTQ, the status is: 00000000h open 80000000h closed if object is a keyboard in keystroke mode, the status is the extended character code (scan code) of teh last keystroke if object is a keyboard in field mode, the status indicates the reason for the last return from the field manager 00h Enter key pressed 01h Button 1 or keystroke selection 02h Button 2 03h validation 04h auto Enter on field 1Bh Escape pressed 46h ^Break pressed other: extended code for key terminating input the status of mailbox messages sent by the window manager is always 80h the status of a pointer message is the same as the status field in the message
SeeAlso: AH=12h/BH=04h“READ” ———-1512–BH10————————- INT 15 - TopView - SEND MESSAGE - “EOF” - GET OBJECT EOF STATUS
AH = 12h
BH = 10h
BL = object
00h handle is DWORD on top of stack
window: return TRUE if logical cursor past end of window
mailbox: ???
01h returns TRUE if logical cursor past end of task's def window
02h return ??? for task's mailbox (task's handle on top of stack)
03h return ??? for current task's mailbox
0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
0Dh (DV 2.26+) check log cursor of window of parent task
Return: DWORD on top of stack is status ———-1512–BH11————————- INT 15 - TopView - SEND MESSAGE - “AT” - POSITION OBJECT CURSOR
AH = 12h
BH = 11h
BL = window for which to move cursor
00h window's handle is DWORD on top of stack
01h task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD column
DWORD row
———-1512–BH11————————- INT 15 - TopView - SEND MESSAGE - “SETNAME” - ASSIGN NAME TO MAILBOX
AH = 12h
BH = 11h
BL = mailbox to name
00h DWORD on top of stack is mailbox handle
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
STACK: DWORD length of name
DWORD address of name
SeeAlso: AX=DE0Eh ———-1512–BX1100———————– INT 15 - TopView - SEND MESSAGE - “SETSCALE” - SET POINTER SCALE FACTOR
AH = 12h
BX = 1100h
STACK: DWORD object handle for pointer object
DWORD number of colums to scale pointer position to
DWORD number of rows to scale pointer position to
SeeAlso: AH=12h/BX=1200h ———-1512–BH12————————- INT 15 - TopView - SEND MESSAGE - “READN” - GET NEXT N OBJECT BYTES
AH = 12h
BH = 12h
BL = window to read from
00h handle is DWORD on top of stack
01h read next N chars or attributes on task's default window
0Ch (DV 2.26+) read window of task owning handle on top of stack
0Dh (DV 2.26+) read default window of parent of current task
STACK: DWORD count
Return: STACK: DWORD width of screen line
DWORD address
DWORD count actually read
Notes: reading starts at the current logical cursor position; the cursor is
updated to point at the character following the last one read any translucent blanks (FFh) which are visible on screen are changed to the character which is seen through them the string produced by the read is placed in an input buffer which may be reused by the next READ or READN of a window window stream opcodes D8h and D9h determine whether the read returns characters or attributes
SeeAlso: AH=12h/BH=04h“WINDOW”,AH=12h/BH=05h“WINDOW” ———-1512–BX1200———————– INT 15 - TopView - SEND MESSAGE - “GETSCALE” - GET POINTER SCALE FACTOR
AH = 12h BX = 1200h STACK: DWORD object handle for pointer
Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
DWORD pointer pos scaled as if window were this many rows high
SeeAlso: AH=12h/BX=1100h ———-1512–BH13————————- INT 15 - TopView - SEND MESSAGE - “REDRAW” - REDRAW WINDOW
AH = 12h
BH = 13h
BL = window object
00h DWORD on top of stack is handle for window to redraw
01h redraw task's default window
0Ch (DV 2.26+) redraw window of task owning handle on top of stack
0Dh (DV 2.26+) redraw default window of parent of current task
SeeAlso: AH=12h/BH=05h“WINDOW”,AH=12h/BH=0Eh ———-1512–BX1300———————– INT 15 - TopView - SEND MESSAGE - “SETICON” - SPECIFY POINTER ICON
AH = 12h
BX = 1300h
STACK: DWORD object handle for pointer
DWORD character to use for pointer
———-1512–BH14————————- INT 15 - TopView - SEND MESSAGE - “SETESC” - SET ESCAPE ROUTINE ADDRESS
AH = 12h
BH = 14h
BL = message modifier
00h handle is DWORD on top of stack
01h define user stream
04h intercept keystrokes from KEYBOARD to a window (handle on stack)
05h intercept keystrokes from task's default KEYBOARD to a window
STACK: (if window) DWORD user stream number (14h-1Fh)
DWORD address of FAR user stream handler
(if keyboard) DWORD address of FAR filter function
The keyboard filter function is called when the keyboard is in field mode. On entry,
AL = character AH = 00h or extended ASCII code if AL = 00h BL = field number CH = cursor column CL = cursor row DL = field type modifier (sixth item in field table entry) DH = seventh item in field table entry ES:SI = window's handle DS:DI -> field table entry for field containing the cursor
The filter function should return
AH = 00h use keystroke
01h ignore keystroke
FFh beep and ignore keystroke
Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls ———-1512–BH14————————- INT 15 - TopView - SEND MESSAGE - “LOCK” - REQUEST EXCLUSIVE ACCESS TO RESOURCE
AH = 12h
BH = 14h
BL = object
00h mailbox handle is DWORD on top of stack
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
Note: release exclusive access by sending CLOSE message to mailbox
access may be requested multiple times, and requires multiple CLOSEs
SeeAlso: AH=12h/BH=0Dh ———-1512–BH15————————- INT 15 - DESQview v2.20+ - SEND MESSAGE - “SETFLAGS” - SET OBJECT FLAGS
AH = 12h
BH = 15h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
STACK: DWORD flags
if mailbox:
bit 0: all mail messages in common memory
bit 1: allow write even if closed
bit 2: don't erase messages when mailbox closed
if keyboard:
bit 5: exclusive input when keyboard in use for input
Return: nothing Notes: only available if the API level has been set to at least 2.20
equivalent to performing SUBFROM and ADDTO calls on the object
SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h ———-1512–BH16————————- INT 15 - DESQview v2.20+ - SEND MESSAGE - “GETFLAGS” - GET OBJECT FLAGS
AH = 12h
BH = 16h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
Return: STACK: DWORD current control flags Note: only available if the API level has been set to at least 2.20 SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=15h ———-1512–BH17————————- INT 15 - DESQview v2.42-2.52 - BUG
AH = 12h
BH = 17h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
Notes: due to a fencepost error, message 17h is accepted for mailboxes,
keyboards, and pointers, but causes a random branch DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
———-1513——————————- INT 15 - VMiX - WAKE PROCESS
AH = 13h STACK: WORD process ID
Return: AX = status SeeAlso: AH=12h“VMiX” ———-1513——————————- INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
AH = 13h
Return: BX:AX → task control block (see below) SeeAlso: AH=15h“MultiDOS”
Format of MultiDOS Plus v4.0 task control block: Offset Size Description 00h DWORD pointer to next TCB 04h 8 BYTEs ASCIZ task name 0Ch 2 BYTEs ??? 0Eh WORD task PSP segment 10h WORD abort/suspend flags 12h WORD current screen segment (see AH=0Bh,AH=0Ch) 14h WORD priority level (0000h-FFFEh) 16h WORD time slice counter 18h 2 BYTEs ??? 1Ah WORD suspend timer value 1Ch WORD stack segment 1Eh WORD stack pointer 20h WORD display type 22h WORD display memory 24h 2 BYTEs ??? 26h WORD termination count 28h WORD equipment flag for BIO10 driver 2Ah BYTE background CRT mode 2Bh WORD screen width in columns 2Dh WORD screen size in bytes 2Fh WORD segment of physical screen memory 31h 16 BYTEs eight cursor positions 41h WORD current cursor shape 43h BYTE active display page 44h WORD CRT controller I/O port base 46h 2 BYTEs ??? 48h WORD foreground task flag 4Ah 6 BYTEs ??? 50h WORD saved video segment (see AH=0Bh,AH=0Ch) 52h DWORD old INT 22 56h DWORD old INT 23 5Ah DWORD old INT 24 5Eh WORD top of memory for task 60h 4 BYTEs ??? 64h WORD DTA segment (see INT 21/AH=1Ah) 66h WORD DTA offset 68h 4 BYTEs ??? 6Ch BYTE current ANSI.SYS attribute 6Dh BYTE current ANSI.SYS column 6Eh BYTE current ANSI.SYS row 6Fh BYTE current ANSI.SYS display state 70h BYTE maximum ANSI.SYS columns 71h BYTE current ANSI.SYS page 72h WORD saved ANSI.SYS cursor position 74h BYTE ANSI.SYS parameter buffer index 75h BYTE current ANSI.SYS screen mode 76h BYTE ANSI.SYS wrap flag 77h 6 BYTEs ANSI.SYS parameter buffer 7Dh BYTE ANSI.SYS keyboard DSR state 7Eh 7 BYTEs ANSI.SYS keyboard DSR buffer 85h 3 BYTEs ??? 88h 16 BYTEs request header for DOS driver calls 98h 14 BYTEs ??? A6h WORD segment of EMS map if EMS task A8h WORD flag: task makes EMS calls AAh WORD EMS handle for task ACh WORD keyboard shift state AEh 12 BYTEs ??? BAh WORD TCB of parent if child task BCh WORD termination code BEh WORD COM port number C0h 4 BYTEs ??? C4h WORD current IRQ number C6h 2 BYTEs ??? C8h WORD miscellaneous flag word CAh 2 BYTEs ??? CCh DWORD old INT 10 D0h WORD EMS alternate map set number D2h 414 BYTEs DOS current disk and directory context (optional) ———-1514——————————- INT 15 - VMiX - CLEAR WINDOW
AH = 14h STACK: WORD top left corner of window WORD bottom right corner of window
Return: AX = status SeeAlso: AH=15h“VMiX” ———-1514——————————- INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
AH = 14h
Return: AX = current state
0000h MultiDOS Plus command prompt is background task
0001h command prompt is foreground task
SeeAlso: AH=0Bh“MultiDOS” ———-1515——————————- INT 15 - VMiX - SET BANNER WINDOW MESSAGE
AH = 15h STACK: DWORD pointer to ASCIZ banner message
Return: AX = status SeeAlso: AH=14h“VMiX” ———-1515——————————- INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
AH = 15h
Return: BX:AX → system block (see below) SeeAlso: AH=13h“MultiDOS”
Format of MultiDOS Plus 4.0 system block: Offset Size Description 00h WORD segment of system control block 02h WORD redirection flag set by /NOREDIRECT 04h WORD no-INT 10 flag set by /NO10 06h DWORD old INT 10 0Ah DWORD new INT 10 0Eh DWORD pointer to WORD with current TCB offset (see AH=13h) 12h DWORD pointer to WORD with idle task TCB offset 16h DWORD pointer to WORD with foreground TCB offset 1Ah DWORD pointer to WORD with MultiDOS TCB offset 1Eh WORD Task Control Block size 20h WORD number of TCBs 22h WORD flag: EMS present 24h WORD EMS page frame base segment 26h WORD 16K pages in EMS page frame 28h WORD base segment for conventional memory tasks 2Ah WORD conventional memory size in paragraphs 2Ch DWORD pointer to list of queue pointers ———-1516——————————- INT 15 - VMiX - SET ROOT WINDOW SIZE AND HOME CURSOR
AH = 16h STACK: DWORD pointer to I/O Request Packet WORD top left corner of window WORD bottom right corner of window
Return: AX = status SeeAlso: AH=17h“VMiX” ———-1516——————————- INT 15 - MultiDOS Plus - INITIALIZATION
AH = 16h
Note: used internally during initialization; any other calls will cause
unpredicatable results
———-1517——————————- INT 15 - VMiX - GET CONSOLE WINDOW COLORS
AH = 17h
Return: AH = foreground color
AL = background color
SeeAlso: AH=16h“VMiX”,AH=18h“VMiX” ———-1517——————————- INT 15 - MultiDOS Plus - MAP IRQ
AH = 17h AL = IRQ to map (01h-0Fh) BX = offset of task control block (see AH=13h) to associate with IRQ
Return: AX = status
0000h successful
other invalid IRQ
Note: the EMS map of the specified TCB is associated with the given interrupt SeeAlso: AH=18h“MultiDOS”,AH=19h“MultiDOS” ———-1518——————————- INT 15 - VMiX - SET CONSOLE COLORS
AH = 18h STACK: WORD new background/foreground colors
Return: AX = color SeeAlso: AH=17h“VMiX” ———-1518——————————- INT 15 - MultiDOS Plus - UNMAP IRQ
AH = 18h AL = IRQ to unmap (01h-0Fh)
Return: AX = status
0000h successful
0001h invalid IRQ
Note: results are unpredictable if the IRQ has not been mapped SeeAlso: AH=17h“MultiDOS”,AH=19h“MultiDOS” ———-1519——————————- INT 15 - VMiX v2+ - ???
AH = 19h STACK: WORD ???
Return: ??? ———-1519——————————- INT 15 - MultiDOS Plus - UNMAP ALL IRQs
AH = 19h
Return: AX destroyed Note: for MultiDOS internal use only SeeAlso: AH=17h“MultiDOS”,AH=18h“MultiDOS” ———-151A——————————- INT 15 - VMiX v2+ - ???
AH = 1Ah STACK: 3 WORDs ???
Return: ??? ———-151A——————————- INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
AH = 1Ah DS:SI -> 8-byte name
Return: AL = status
00h successful
AH = semaphore number (20h-3Fh)
04h out of string space
Notes: all eight bytes of the name are significant
if the name does not already exist, it is added to the name table and associated with a free semaphore number names cannot be destroyed
SeeAlso: AH=1Bh“MultiDOS”,AH=1Ch“MultiDOS”,AH=1Dh“MultiDOS” ———-151B——————————- INT 15 - VMiX v2+ - ???
AH = 1Bh STACK: 5 WORDs ???
Return: ??? ———-151B——————————- INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
AH = 1Bh DS:SI -> 8-byte name
Return: AH = status
00h successful
02h invalid semaphore number
03h caller already owns semaphore
04h out of string space
Notes: (see notes for AH=01h“MultiDOS”)
equivalent to AH=1Ah followed by AH=01h
SeeAlso: AH=01h“MultiDOS”,AH=1Ah“MultiDOS”,AH=1Ch“MultiDOS”,AH=1Dh“MultiDOS” ———-151C——————————- INT 15 - VMiX v2+ - ???
AH = 1Ch STACK: 5 WORDs ???
Return: ??? ———-151C——————————- INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
AH = 1Ch DS:SI -> 8-byte name
Return: AH = status
00h successful
01h not semaphore owner
02h invalid semaphore number
04h out of string space
Notes: (see notes for AH=02h“MultiDOS”)
equivalent to AH=1Ah followed by AH=02h
SeeAlso: AH=02h“MultiDOS”,AH=1Ah“MultiDOS”,AH=1Bh“MultiDOS”,AH=1Dh“MultiDOS” ———-151D——————————- INT 15 - VMiX v2+ - ???
AH = 1Dh ???
Return: ??? ———-151D——————————- INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
AH = 1Dh DS:SI -> 8-byte name
Return; AH = status
00h semaphore not in use
01h semaphore owned by another task
02h invalid semaphore number
03h caller owns semaphore
04h out of string space
Notes: (see notes for AH=10h“MultiDOS”)
equivalent to AH=1Ah followed by AH=10h
SeeAlso: AH=10h“MultiDOS”,AH=1Ah“MultiDOS”,AH=1Bh“MultiDOS”,AH=1Ch“MultiDOS” ———-151E——————————- INT 15 - VMiX v2+ - ???
AH = 1Eh STACK: WORD ???
Return: ??? ———-151E00—————————– INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
AX = 1E00h DX = event/trigger number (00h-3Fh)
Return: AH = status
00h successful
SeeAlso: AX=1E01h,AX=1E02h ———-151E01—————————– INT 15 - MultiDOS Plus - TRIGGER EVENT
AX = 1E01h DX = event/trigger number (00h-3Fh)
Return: AH = status
00h successful
01h invalid event/trigger number
Notes: schedules any task waiting for event; if no task is waiting, the event
counter is incremented (and will roll over if it was 65535) may be invoked by interrupt handler
SeeAlso: AX=1E00h,AX=1E02h ———-151E02—————————– INT 15 - MultiDOS Plus - WAIT FOR EVENT
AX = 1E02h DX = event/trigger number (00h-3Fh)
Return: AH = status
00h successful
01h invalid event/trigger number
Note: if the event counter is zero, the task is suspended until the event is
triggered with AX=1E01h; else, the counter is decremented and the call returns immediately
SeeAlso: AX=1E00h,AX=1E01h ———-151F——————————- INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
AH = 1Fh
Return: BX = first segment of conventional memory
DX = first segment of EMS swap frame into which MultiDOS will load programs
———-1520——————————- INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
AH = 20h
Return: AX = current state
0000h multitasking enabled
other TCB of task that disabled multitasking
SeeAlso: AH=0Dh“MultiDOS”,AH=13h“MultiDOS” ———-152000—————————– INT 15 - DOS 3+ PRINT.COM - DISABLE CRITICAL REGION FLAG
AX = 2000h
SeeAlso: AX=2001h ———-152001—————————– INT 15 - DOS 3+ PRINT.COM - SET CRITICAL REGION FLAG
AX = 2001h ES:BX -> byte which is to be incremented while in a DOS call
SeeAlso: AX=2000h ———-152010—————————– INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
AX = 2010h ???
Return: ??? SeeAlso: AX=2011h ———-152011—————————– INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
AX = 2011h ???
Return: ??? SeeAlso: AX=2010h ———-1521——————————- INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
AH = 21h
AL = subfunction
00h read POST log
01h write POST log
BH = device ID
BL = error code
Return: CF set on error
AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported) if function 00h: BX = number of error codes stored ES:DI -> error log
Note: the log is a series of words, the first byte of which identifies the
error code and the second the device.
———-152400—————————– INT 15 - Qualitas 386MAX v6.01 - TURN ON ???
AX = 2400h
Return: CF clear
AH = 00h
———-152401—————————– INT 15 - Qualitas 386MAX v6.01 - TURN OFF ???
AX = 2401h
Return: CF clear
AH = 00h
———-152402—————————– INT 15 - Qualitas 386MAX v6.01 - GET STATE OF ???
AX = 2402h
Return: CF clear
AH = 00h AL = current state (00h off, 01h on)
———-152403—————————– INT 15 - Qualitas 386MAX v6.01 - GET ???
AX = 2403h ???
Return: CF clear
AH = 00h
BX = bit flags???
bit 0: ???
bit 1: ???
Note: reportedly also used by some PS/2 models ———-1540——————————- INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
AH = 40h
AL = subfunction
00h get system profile in CX and BX
01h set system profile from CX and BX
02h get internal modem profile in BX
03h set internal modem profile from BX
———-154000—————————– INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
AX = 4000h
Return: AX = 4000h
CL = 00h timeout disabled else timeout in minutes
SeeAlso: AX=4001h,AX=4600h ———-154001CL00————————- INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
AX = 4001h CL = 00h timeout disabled else timeout in minutes
Return: AL = 00h timeout modified
01h timeout cannot be modified
40h timeout cannot be modified
CL = 00h timeout disabled
else timeout in minutes
SeeAlso: AX=4000h,AX=4601h ———-1541——————————- INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE)
AH = 41h
AL = condition type
bits 0-2: condition to wait for
0 any external event
1 compare and return if equal
2 compare and return if not equal
3 test and return if not zero
4 test and return if zero
bit 3: reserved
bit 4: 1=port address, 0=user byte
bits 5-7: reserved
BH = condition compare or mask value
BL = timeout value times 55 milliseconds
00h means no timeout
DX = I/O port address if AL bit 4 set
ES:DI -> user byte if AL bit 4 clear
———-1542——————————- INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE)
AH = 42h
AL = 00h to use system profile
01h to force suspend regardless of system profile
SeeAlso: AH=44h ———-154280—————————– INT 15 - Compaq SLT/286 - ENTER STANDBY
AX = 4280h
Return: AH = 42h
CF clear if successful CF set if unable to enter standby
SeeAlso: AX=4600h,AX=5307h/BX=0001h/CX=0001h ———-1543——————————- INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
AH = 43h
Return: AL = status bits
bit 0: LCD detached
bit 1: reserved
bit 2: RS232/parallel adapter powered on
bit 3: internal modem powered on
bit 4: power activated by alarm
bit 5: standby power lost
bit 6: external power in use
bit 7: power low
———-1544——————————- INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
AH = 44h
AL = 00h to power off
01h to power on
SeeAlso: AH=42h ———-154600—————————– INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
AX = 4600h
Return: AH = modem configuration information
bit 0 powerup state
0 off
1 on
1 modem installed
2 IRQ line assignment
0 IRQ 4
1 IRQ 3
3 COM port assignment
0 = COM 2
1 = COM 1
4 modem state
0 not assigned
1 assigned
5 modem is on
AL = power conservation status information
bit 0 power source (0 internal, 1 external)
1-2 low battery state
00 no low battery condition
01 low battery 1
10 reserved
11 low battery 2
3-4 power conservation mode
00 automatic
01 on
10 off
11 reserved
BH = default system inactivity timeout (1-21 minutes)
BL = current system inactivity timeout (1-21 minutes)
CH = default video display inactivity timeout (1-63 minutes)
CL = current video display inactivity timeout (1-63 minutes)
DH = default fixed disk drive inactivity timeout (1-21 minutes)
DL = current fixed disk drive inactivity timeout (1-21 minutes)
SeeAlso: AX=4280h,AX=4601h,INT 77 ———-154601—————————– INT 15 - Compaq SLT/286 - Modify Power Conservation/Modem Configuration
AX = 4601h BL = system inactivity timeout (1-21 minutes) = FFh do not change CL = video display inactivity timeout (1-63 minutes) = FFh do not change DL = current fixed disk drive inactivity timeout (1-21 minutes) = FFh do not change DH = 00h turn modem OFF = 01h turn modem ON = FFh do not change modem state
Return: CF clear if successful
AH = 00h
BL = current system inactivity timeout (1-21 minutes)
CL = current video display inactivity timeout (1-63 minutes)
DL = current fixed disk drive inactivity timeout (1-21 minutes)
DH = FFh modem state unchanged
= 00h modem turned OFF
= 01h modem turned ON
CF set on error
AH = 01h input is out of range
= 02h - No modem present
SeeAlso: AX=4600h,INT 77 ———-154DD4—————————– INT 15 - HP 95LX - INSTALLATION CHECK
AX = 4DD4h
Return: BX = 4850h (“HP”) if HP 95LX
CX = ??? (0101h)
DL = ??? (00h)
SeeAlso: INT 0B“HP 95LX”,INT 0F“HP 95LX”,INT 5F/AH=00h,INT 60/DI=0100h SeeAlso: INT 61“HP 95LX” ———-154E——————————- INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
AH = 4Eh
AL = light sleep
00h disabled
01h enabled
Note: when light sleep is disabled, the system will continue running at full
speed; when enabled, it may automatically slow to conserve batteries
SeeAlso: INT 06“HP 95LX”,INT 60/DI=0100h ———-154F——————————- INT 15 - OS HOOK - KEYBOARD INTERCEPT (AT model 3×9,XT2,XT286,CONV,PS)
AH = 4Fh AL = hardware scan code CF set
Return: CF set
AL = hardware scan code CF clear scan code should be ignored
Note: called by INT 9 handler to translate scan codes; the INT 09 code does
not examine the scan code it reads from the keyboard until after this function returns. This permits software to rearrange the keyboard; for example, swapping the CapsLock and Control keys, or turning the right Shift key into Enter.
SeeAlso: INT 09,INT 15/AH=C0h ———-155300BX0000———————– INT 15 - Advanced Power Management Specification - INSTALLATION CHECK
AX = 5300h BX = 0000h (device ID of system BIOS)
Return: CF clear if successful
AH = major version (BCD)
AL = minor version (BCD)
BX = 504Dh ("PM")
CX = flags
bit 0: 16-bit protected mode interface supported
bit 1: 32-bit protected mode interface supported
bit 2: CPU idle call reduces processor speed
bit 3: BIOS power management disabled
bits 4-7 reserved
CF set on error
AH = error code (86h) (see below)
Values for error code: 01h power management functionality disabled 02h interface connection already in effect 03h interface not connected 04h real-mode interface not connected 05h 16-bit protected-mode interface already connected 06h 16-bit protected-mode interface not supported 07h 32-bit protected-mode interface already connected 08h 32-bit protected-mode interface not supported 09h unrecognized device ID 0Ah invalid parameter value in CX 0Bh-1Fh reserved for other interface and general errors 20h-3Fh reserved for CPU errors 40h-5Fh reserved for device errors 60h can't enter requested state 61h-7Fh reserved for other system errors 80h no power management events pending 81h-85h reserved for other power management event errors 86h APM not present 87h-9Fh reserved for other power management event errors ———-155301BX0000———————– INT 15 - Advanced Power Management Specification - CONNECT REAL-MODE INTERFACE
AX = 5301h BX = 0000h (device ID of system BIOS)
Return: CF clear if successful
CF set on error
AH = error code (02h,09h) (see AX=5300h)
SeeAlso: AX=5302h,AX=5303h,AX=5304h ———-155302BX0000———————– INT 15 R - Advanced Power Management Spec - CONNECT 16-BIT PROTMODE INTERFACE
AX = 5302h BX = 0000h (device ID of system BIOS)
Return: CF clear if successful
AX = real-mode segment base address of protected-mode 16-bit code
segment
BX = offset of entry point
CX = real-mode segment base address of protected-mode 16-bit data
segment
CF set on error
AH = error code (05h,06h,09h) (see AX=5300h)
Notes: the caller must initialize two consecutive descriptors with the
returned segment base addresses; these descriptors must be valid whenever the protected-mode interface is called, and will have their limits arbitrarily set to 64K. the protected mode interface is invoked by making a far call with the same register values as for INT 15; it must be invoked while CPL=0, the code segment descriptor must have a DPL of 0, the stack must be in a 16-bit segment and have enough room for BIOS use and possible interrupts, and the current I/O permission bit map must allow access to the I/O ports used for power management. functions 00h-03h are not available from protected mode
SeeAlso: AX=5301h,AX=5303h,AX=5304h ———-155303BX0000———————– INT 15 - Advanced Power Management Spec - CONNECT 32-BIT PROTMODE INTERFACE
AX = 5303h BX = 0000h (device ID of system BIOS)
Return: CF clear if successful
AX = real-mode segment base address of protected-mode 32-bit code
segment
EBX = offset of entry point
CX = real-mode segment base address of protected-mode 16-bit code
segment
DX = real-mode segment base address of protected-mode 16-bit data
segment
CF set on error
AH = error code (07h,08h,09h) (see AX=5300h)
Notes: the caller must initialize three consecutive descriptors with the
returned segment base addresses for 32-bit code, 16-bit code, and 16-bit data, respectively; these descriptors must be valid whenever the protected-mode interface is called, and will have their limits arbitrarily set to 64K. the protected mode interface is invoked by making a far call to the 32-bit code segment with the same register values as for INT 15; it must be invoked while CPL=0, the code segment descriptor must have a DPL of 0, the stack must be in a 32-bit segment and have enough room for BIOS use and possible interrupts, and the current I/O permission bit map must allow access to the I/O ports used for power management. functions 00h-03h are not available from protected mode
SeeAlso: AX=5301h,AX=5302h,AX=5304h ———-155304BX0000———————– INT 15 - Advanced Power Management Specification - DISCONNECT INTERFACE
AX = 5304h BX = 0000h (device ID of system BIOS)
Return: CF clear if successful
CF set on error
AH = error code (03h,09h) (see AX=5300h)
SeeAlso: AX=5301h,AX=5302h,AX=5303h ———-155305—————————– INT 15 - Advanced Power Management Specification - CPU IDLE
AX = 5305h
Return: after system leaves idle state
CF clear
Notes: call when the system is idle and should be suspended until the next
system event or interrupt should not be called from within a hardware interrupt handler to avoid reentrance problems if an interrupt causes the system to resume normal processing, the interrupt may or may not have been handled when the BIOS returns from this call; thus, the caller should allow interrupts on return interrupt handlers may not retain control if the BIOS allows interrupts while in idle mode even if they are able to determine that they were called from idle mode the caller should issue this call continuously in a loop until it needs to perform some processing of its own
SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h ———-155306—————————– INT 15 - Advanced Power Management Specification - CPU BUSY
AX = 5306h
Return: CF clear Notes: called to ensure that the system runs at full speed even on systems
where the BIOS is unable to recognize increased activity (especially if interrupts are hooked by other programs and not chained to the BIOS) this call may be made even when the system is already running at full speed, but it will create unnecessary overhead should not be called from within a hardware interrupt handler to avoid reentrance problems
SeeAlso: AX=5305h ———-155307—————————– INT 15 - Advanced Power Management Specification - SET POWER STATE
AX = 5307h
BX = device ID (see below)
CX = system state ID
0000h ready (not supported for device ID 0001h)
0001h stand-by
0002h suspend
0003h off (not supported for device ID 0001h)
0004h-FFFFh reserved
Return: CF clear if successful
CF set on error
AH = error code (01h,09h,0Ah,60h) (see AX=5300h)
Note: should not be called from within a hardware interrupt handler to avoid
reentrance problems
Values for device IDs: 0000h system BIOS 0001h all devices for which the system BIOS manages power 01xxh display (01FFh for all attached display devices) 02xxh secondary storage (02FFh for all attached secondary storage devices) 03xxh parallel ports (03FFh for all attached parallel ports) 04xxh serial ports (04FFh for all attached serial ports) 0500h-FFFFh reserved ———-155307BX0001———————– INT 15 - Advanced Power Management Specification - SYSTEM STAND-BY
AX = 5307h BX = 0001h CX = 0001h
Return: CF clear Notes: puts the entire system into stand-by mode; normally called in response
to a System Stand-by Request notification after any necessary processing, but may also be invoked at the caller's discretion should not be called from within a hardware interrupt handler to avoid reentrance problems the stand-by state is typically exited on an interrupt
SeeAlso: AX=4280h,AX=5307h/BX=0001h/CX=0002h,AX=530Bh ———-155307BX0001———————– INT 15 - Advanced Power Management Specification - SUSPEND SYSTEM
AX = 5307h BX = 0001h CX = 0002h
Return: after system is resumed
CF clear
Notes: puts the entire system into a low-power suspended state; normally
called in response to a Suspend System Request notification after any necessary processing, but may also be invoked at the caller's discretion should not be called from within a hardware interrupt handler to avoid reentrance problems the caller may need to update its date and time values because the system could have been suspended for a long period of time
SeeAlso: AX=5307h/BX=0001h/CX=0001h,AX=530Bh ———-155308BXFFFF———————– INT 15 - Advanced Power Management Spec - ENABLE/DISABLE POWER MANAGEMENT
AX = 5308h
BX = FFFFh
CX = new state
0000h disabled
0001h enabled
Return: CF clear if successful
CF set on error
AH = error code (01h,09h,0Ah) (see AX=5300h)
Notes: when power management is disabled, the system BIOS will not
automatically power down devices, enter stand-by or suspended mode, or perform any power-saving actions in response to AX=5305h calls should not be called from within a hardware interrupt handler to avoid reentrance problems
SeeAlso: AX=5309h ———-155309BXFFFF———————– INT 15 - Advanced Power Management Specification - RESTORE POWER-ON DEFAULTS
AX = 5309h BX = FFFFh
Return: CF clear if successful
CF set on error
AH = error code (09h) (see AX=5300h)
Note: should not be called from within a hardware interrupt handler to avoid
reentrance problems
SeeAlso: AX=5308h ———-15530ABX0001———————– INT 15 - Advanced Power Management Specification - GET POWER STATUS
AX = 530Ah BX = 0001h
Return: CF clear if successful
BH = AC line status
00h off-line
01h on-line
FFh unknown
other reserved
BL = battery status
00h high
01h low
02h critical
03h charging
FFh unknown
other reserved
CL = remaining battery life
00h-64h (0-100) percentage of full charge
FFh unknown
CF set on error
AH = error code (09h) (see AX=5300h)
Note: should not be called from within a hardware interrupt handler to avoid
reentrance problems
———-15530B—————————– INT 15 - Advanced Power Management Specification - GET POWER MANAGEMENT EVENT
AX = 530Bh
Return: CF clear if successful
BX = event code
0001h system stand-by request
0002h system suspend request
0003h normal resume system notification
0004h critical resume system notification
0005h battery low notification
CF set on error
AH = error code (03h,80h) (see AX=5300h)
Notes: although power management events are often asynchronous, notification
will not be made until polled via this call to permit software to only receive event notification when it is prepared to process power management events; since these events are not very time- critical, it should be sufficient to poll once or twice per second the critical resume notification is made after the system resumes from an emergency suspension; normally, the system BIOS only notifies its partner that it wishes to suspend and relies on the partner to actually request the suspension, but no notification is made on an emergency suspension should not be called from within a hardware interrupt handler to avoid reentrance problems
SeeAlso: AX=5307h,AX=5307h/BX=0001h/CX=0001h,AX=5307h/BX=0001h/CX=0002h ———-155400—————————– INT 15 - Omniview Multitasker - INSTALLATION NOTIFICATION
AX = 5400h ES:BX -> device information tables DI:DX -> dispatcher entry point
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5407h ———-155401—————————– INT 15 - Omniview Multitasker - PROCESS CREATION
AX = 5401h ES:BX = process handle
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5402h ———-155402—————————– INT 15 - Omniview Multitasker - PROCESS DESTRUCTION
AX = 5402h ES:DX = process handle
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5401h ———-155403—————————– INT 15 - Omniview Multitasker - SAVE
AX = 5403h ES:DX = process swapping out
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5404h ———-155404—————————– INT 15 - Omniview Multitasker - RESTORE
AX = 5404h ES:DX = process swapping in
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5403h ———-155405—————————– INT 15 - Omniview Multitasker - SWITCHING TO BACKGROUND
AX = 5405h ES:DX = process swapping in
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5406h ———-155406—————————– INT 15 - Omniview Multitasker - SWITCHING TO FOREGROUND
AX = 5406h ES:DX = process swapping in
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5405h ———-155407—————————– INT 15 - Omniview Multitasker - EXIT NOTIFICATION
AX = 5407h
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5400h ———-1580——————————- INT 15 - OS HOOK - DEVICE OPEN (AT,XT286,PS)
AH = 80h BX = device ID CX = process ID CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status
80h invalid command (PC,PCjr)
86h function not supported (XT)
Note: this function should be hooked by a multitasker which wishes to keep
track of device ownership; the default BIOS handler merely returns successfully
SeeAlso: AH=81h,AH=82h ———-1581——————————- INT 15 - OS HOOK - DEVICE CLOSE
AH = 81h BX = device ID CX = process ID CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (see AH=80h)
Note: this function should be hooked by a multitasker which wishes to keep
track of device ownership; the default BIOS handler merely returns successfully
SeeAlso: AH=80h,AH=82h ———-1582——————————- INT 15 - OS HOOK - PROGRAM TERMINATION
AH = 82h BX = process ID CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (see AH=80h)
Notes: closes all devices opened by the given process ID with function 80h
this function should be hooked by a multitasker which wishes to keep track of device ownership; the default BIOS handler merely returns successfully
SeeAlso: AH=80h,AH=81h ———-1583——————————- INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
AH = 83h
AL = subfunction
00h set interval
CX:DX = microseconds to delay
ES:BX -> byte whose high bit is to be set at end of interval
01h cancel wait interval
Return: CF set on error or function already busy
AH = status 80h invalid command (PC,PCjr) 86h function not supported (XT and later) CF clear if successful
Note: the resolution of the wait period is 977 microseconds on most systems
because most BIOSes use the 1/1024 second fast interrupt from the AT real-time clock chip which is available on INT 70
SeeAlso: AH=86h,INT 70 ———-1584——————————- INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
AH = 84h
DX = subfunction
0000h read joystick switches
Return: AL bits 7-4 = switch settings
0001h read positions of joysticks
Return: AX = X position of joystick A
BX = Y position of joystick A
CX = X position of joystick B
DX = Y position of joystick B
Return: CF set on error
AH = status 80h invalid command (PC,PCjr) 86h function not supported (other) CF clear if successful
Notes: if no game port is installed, subfunction 0000h returns AL=00h (all
switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h a 250kOhm joystick typically returns 0000h-01A0h
———-1585——————————- INT 15 - OS HOOK - SysRq KEY ACTIVITY (AT,PS)
AH = 85h AL = 00h SysRq key pressed = 01h SysRq key released CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (see AH=84h)
Notes: called by keyboard decode routine
the default handler simply returns successfully; programs which wish to monitor the SysRq key must hook this call
SeeAlso: INT 09 ———-1586——————————- INT 15 - BIOS - WAIT (AT,PS)
AH = 86h CX:DX = interval in microseconds
Return: CF clear if successful (wait interval elapsed)
CF set on error or AH=83h wait already in progress
AH = status (see AH=84h)
Note: the resolution of the wait period is 977 microseconds on most systems
because most BIOSes use the 1/1024 second fast interrupt from the AT real-time clock chip which is available on INT 70
SeeAlso: AH=83h,INT 70 ———-1587——————————- INT 15 - SYSTEM - COPY EXTENDED MEMORY
AH = 87h CX = number of words to copy (max 8000h) ES:SI -> global descriptor table
Return: CF set on error
CF clear if successful
AH = status
00h source copied into destination
01h parity error
02h interrupt error
03h address line 20 gating failed
80h invalid command (PC,PCjr)
86h unsupported function (XT,PS30)
Notes: copy is done in protected mode with interrupts disabled
this function is incompatible with the OS/2 compatibility box
SeeAlso: AH=88h,AH=89h
Format of global descriptor table: Offset Size Description 00h 16 BYTEs zeros 10h WORD source segment length in bytes (2*CX-1 or greater) 12h 3 BYTEs 24-bit linear source address, low byte first 15h BYTE source segment access rights (93h) 16h WORD zero 18h WORD destination segment length in bytes (2*CX-1 or greater) 1Ah 3 BYTEs 24-bit linear destination address, low byte first 1Dh BYTE destination segment access rights (93h) 1Eh 18 BYTEs zeros ———-1588——————————- INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
AH = 88h
Return: CF clear if successful
AX = number of contiguous KB starting at absolute address 100000h
CF set on error
AH = status
80h invalid command (PC,PCjr)
86h unsupported function (XT,PS30)
Note: TSRs which wish to allocate extended memory to themselves often hook
this call, and return a reduced memory size. They are then free to use the memory between the new and old sizes at will.
SeeAlso: AH=87h ———-1589——————————- INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
AH = 89h
BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
ES:SI -> GDT for protected mode
offset 0h null descriptor (initialize to zeros)
8h GDT descriptor
10h IDT descriptor
18h DS
20h ES
28h SS
30h CS
38h uninitialized, used to build descriptor for BIOS CS
CX = offset into protected-mode CS to jump to
Return: CF set on error
AH = FFh error enabling address line 20 CF clear if successful AH = 00h in protected mode at specified address
Note: BL and BH must be multiples of 8 SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch ———-1590——————————- INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
AH = 90h
AL = device type
00h disk
01h diskette
02h keyboard
03h PS/2 pointing device
21h waiting for keyboard input (Phoenix BIOS)
80h network
FBh digital sound (Tandy)
FCh disk reset (PS)
FDh diskette motor start
FEh printer
ES:BX -> request block for type codes 80h through BFh
CF clear
Return: CF set if wait time satisfied
CF clear if driver must perform wait
AH = 00h
Notes: type codes are allocated as follows:
00-7F non-reentrant devices; OS must arbitrate access 80-BF reentrant devices; ES:BX points to a unique control block C0-FF wait-only calls, no complementary INT 15/AH=91h call floppy and hard disk BIOS code uses this call to implement a timeout; for device types 00h and 01h, a return of CF set means that the timeout expired before the disk responded. this function should be hooked by a multitasker to allow other tasks to execute while the BIOS is waiting for I/O completion; the default handler merely returns with AH=00h and CF clear
SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h ———-1591——————————- INT 15 - OS HOOK - DEVICE POST (AT,PS)
AH = 91h AL = device type (see AH=90h) ES:BX -> request block for type codes 80h through BFh CF clear
Return: AH = 00h Note: this function should be hooked by a multitasker to allow other tasks
to execute while the BIOS is waiting for I/O completion; the default handler merely returns with AH=00h and CF clear
SeeAlso: AH=90h ———-15BC——————————- INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED
AH = BCh
Return: CF clear
BYTE 0040h:00B0h set to ??? (43 on my 386/33)
Note: reads system timer channel 0 twice, then does calculations on returned
values
———-15BF00—————————– INT 15 - Rational Systems DOS/16M - ???
AX = BF00h ???
Return: ??? Note: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h SeeAlso: AX=BF02h ———-15BF01—————————– INT 15 - Rational Systems DOS/16M - ???
AX = BF01h ???
Return: ??? Note: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h SeeAlso: AX=BF02h ———-15BF02DX0000———————– INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
AX = BF02h DX = 0000h
Return: DX = nonzero if installed
DX:SI -> XBRK structure (see below)
SeeAlso: AX=BFDEh/BX=0000h SeeAlso: INT 21/AX=FF00h,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
Format of XBRK structure: Offset Size Description 00h DWORD linear address of last available byte + 1 ??? ??? ———-15BFDEBX0000———————– INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
AX = BFDEh BX = 0000h
Return: AX = ??? (0003h)
BX = FFFFh
SeeAlso: AX=BF02h ———-15BFDEBX0001———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
AX = BFDEh BX = 0001h
Return: BX = 0000h (success)
CX:DX -> name of process manager executable
SeeAlso: AX=BFDEh/BX=0000h ———-15BFDEBX0002———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ???
AX = BFDEh BX = 0002h CX:DX -> ???
Return: BX = 0000h (success) SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h ———-15BFDEBX0003———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh BX = 0003h
Return: BX = 0000h (success)
CX:DX -> ???
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h ———-15BFDEBX0004———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh BX = 0004h
Return: BX = 0000h (success)
CX:DX -> ???
SeeAlso: AX=BFDEh/BX=0000h ———-15BFDEBX0005———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh BX = 0005h CX = new value for ???
Return: BX = 0000h (success)
AX = old value of ??? DS:SI -> ??? (if AX nonzero on return) ES:DI -> ??? (if AX zero on return)
SeeAlso: AX=BFDEh/BX=0000h ———-15BFDEBX0006———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh BX = 0006h
Return: BX = 0000h (success)
AH = interrupt number??? (BEh) CX:DX = ???
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE“DESQview” ———-15BFDEBX0007———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ???
AX = BFDEh BX = 0007h CX:DX = ???
Return: BX = 0000h (success) SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h ———-15BFDEBX0008———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh BX = 0008h CX = ??? DS = ???
Return: BX = status
0000h successful
AL = ??? (80h or C0h)
DX = ??? (0603h) if AL=C0h
0001h failed
AX = 0000h
SeeAlso: AX=BFDEh/BX=0000h ———-15BFDEBX0009———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
AX = BFDEh BX = 0009h
Return: BX = 0000h (success)
CX:DX -> full pathname to LOAD32.EXP
SeeAlso: AX=BFDEh/BX=0000h ———-15BFDEBX000A———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - DECREMENT ???
AX = BFDEh BX = 000Ah
Return: BX = 0000h (success)
AX = new value of ??? counter
Note: also resets a variety of values if the counter goes negative SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh ———-15BFDEBX000B———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - INCREMENT ???
AX = BFDEh BX = 000Bh
Return: AX = new value of ??? counter SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah ———-15BFDEBX000C———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 000Ch
CL = ???
00h
nonzero
Return: ??? SeeAlso: AX=BFDEh/BX=0000h ———-15BFDEBX000D———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh BX = 000Dh ???
Return: ??? SeeAlso: AX=BFDEh/BX=0000h ———-15BFDEBX000E———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh BX = 000Eh DX:CX -> ???
Return: AX = segment of handle for calling task
BX = ??? (probably destroyed) DX:CX -> ???
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h ———-15BFDEBX000F———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
AX = BFDEh BX = 000Fh
Return: AX = segment of handle for calling task
BX = ??? (probably destroyed) DX:CX -> ???
Note: identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h ———-15BFDEBX0010———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET TASK HANDLE
AX = BFDEh BX = 0010h
Return: AX = segment of caller's task handle
BX destroyed
SeeAlso: AX=BFDEh/BX=000Fh ———-15BFDEBX0011———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh BX = 0011h
Return: CX = code segment of DVDOS4GX.DVR
BX = ??? (0004h)
SeeAlso: AX=BFDEh/BX=0000h ———-15BFDEBX0012———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh BX = 0012h
Return: DX = code segment of DVDOS4GX.DVR
BX = ??? (012Ch) CX = ??? (0006h)
SeeAlso: AX=BFDEh/BX=0000h ———-15BFDEBX0013———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh BX = 0013h
Return: DX:CX → ??? SeeAlso: AX=BFDEh/BX=000Eh ———-15BFDEBX0014———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - LOCK ??? MAILBOX
AX = BFDEh BX = 0014h CX = index of ??? mailbox (0000h-0004h valid, but no range checking done)
Return: AX,BX destroyed SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h ———-15BFDEBX0015———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
AX = BFDEh BX = 0015h CX = index of ??? mailbox (0000h-0004h valid, but no range checking done)
Return: AX,BX destroyed SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h ———-15BFDEBX0016———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
AX = BFDEh BX = 0016h CX = index of ??? mailbox (0000h-0004h valid, but no range checking done)
Return: AX = status
0000h no one owns mailbox
0001h mailbox has an owner
BX destroyed
SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h ———-15BFDEBX0017———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
AX = BFDEh BX = 0017h CX = index of ??? mailbox (0000h-0004h valid, but no range checking done)
Return: AX = segment of mailbox owner's handle
BX = segment of caller's task handle
SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h ———-15BFDEBXFFFD———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
AX = BFDEh BX = FFFDh
Return: CX:DX = ??? SeeAlso: AX=BFDEh/BX=FFFEh ———-15BFDEBXFFFE———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ???
AX = BFDEh BX = FFFEh CX:DX = ???
SeeAlso: AX=BFDEh/BX=FFFDh ———-15BFDEBXFFFF———————– INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - NOP
AX = BFDEh BX = FFFFh
SeeAlso: AX=BFDEh/BX=0000h ———-15C0——————————- INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3×9,CONV,XT286,PS)
AH = C0h
Return: CF set if BIOS doesn't support call
CF clear on success
ES:BX -> ROM table (see below)
AH = status
00h successful
86h unsupported function
Notes: the 1/10/86 XT BIOS returns an incorrect value for the feature byte
the configuration table is at F000h:E6F5h in 100% compatible BIOSes Dell machines contain the signature "DELL" or "Dell" at absolute FE076h and a model byte at absolute address FE845h Tandy 1000 machines contain 21h in the byte at F000h:C000h some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte past the end of the configuration table
Format of ROM configuration table: Offset Size Description 00h WORD number of bytes following 02h BYTE model (see below) 03h BYTE submodel (see below) 04h BYTE BIOS revision: 0 for first release, 1 for 2nd, etc. 05h BYTE feature byte 1:
bit 7 = DMA channel 3 used by hard disk BIOS bit 6 = 2nd 8259 installed bit 5 = Real-Time Clock installed bit 4 = INT 15/AH=4Fh called upon INT 9h bit 3 = wait for external event supported bit 2 = extended BIOS area allocated (usually at top of RAM) bit 1 = bus is Micro Channel instead of ISA bit 0 reserved
06h BYTE feature byte 2:
bit 7 = ??? bit 6 = INT 16/AH=09h (keyboard functionality) supported bits 5-0 = ???
07h BYTE feature byte 3:
reserved (0)
08h BYTE feature byte 4:
reserved (0)
09h BYTE feature byte 5:
reserved (0) (IBM) ??? (08h) (Phoenix 386 v1.10)
—AWARD BIOS— 0Ah N BYTEs AWARD copyright notice —Phoenix BIOS— 0Ah BYTE ??? (00h) 0Bh BYTE major version 0Ch BYTE minor version (BCD) 0Dh 4 BYTEs ASCIZ string “PTL” (Phoenix Technologies Ltd)
Values for model/submodel/revision: Model Submdl Rev BIOS date System FFh * * 04/24/81 PC (original) FFh * * 10/19/81 PC (some bugfixes) FFh * * 10/27/82 PC (HD, 640K, EGA support) FFh 46h * ??? Olivetti M15 FEh * * 08/16/82 PC XT FEh * * 11/08/82 PC XT and Portable FEh 43h * ??? Olivetti M240 FEh A6h ??? ??? ??? (checked for by 386MAX v6.01) FDh * * 06/01/83 PCjr FCh * * 01/10/84 AT models 068,099 6 MHz 20MB FCh 00h 01h 06/10/85 AT model 239 6 MHz 30MB FCh 00h <> 01h ??? 7531/2 Industrial AT FCh 01h 00h 11/15/85 AT models 319,339 8 MHz, Enh Keyb, 3.5“ FCh 01h 00h 09/17/87 Tandy 3000 FCh 01h 00h 01/15&88 Toshiba T5200/100 FCh 01h 00h 12/26*89 Toshiba T1200/XE
(Those date characters are not typos)
FCh 01h 30h ??? Tandy 3000NL FCh 01h ??? ??? Compaq 286/386 FCh 02h 00h 04/21/86 PC XT-286 FCh 04h 00h 02/13/87 PS/2 Model 50 (10 MHz/1 ws 286) FCh 04h 03h 04/18/88 PS/2 Model 50Z (10 MHz/0 ws 286) FCh 05h 00h 02/13/87 PS/2 Model 60 (10 MHz 286) FCh 06h ??? ??? 7552 “Gearbox” FCh 08h * ??? Epson, unknown model FCh 09h 00h ??? PS/2 Model 25 (10 MHz 286) FCh 09h 02h 06/28/89 PS/2 Model 30-286 FCh 0Bh 00h 02/16/90 PS/1 Model 2011 (10 MHz 286) FCh 30h * ??? Epson, unknown model FCh 31h * ??? Epson, unknown model FCh 33h * ??? Epson, unknown model FCh 42h * ??? Olivetti M280 FCh 45h * ??? Olivetti M380 (XP 1, XP3, XP 5) FCh 48h * ??? Olivetti M290 FCh 4Fh * ??? Olivetti M250 FCh 50h * ??? Olivetti M380 (XP 7) FCh 51h * ??? Olivetti PCS286 FCh 52h * ??? Olivetti M300 FCh 81h 00h 01/15/88 Phoenix 386 BIOS v1.10 10a FBh 00h 01h 01/10/86 PC XT, Enh Keyb, 3.5” support FBh 00h 02h 05/09/86 PC XT FBh 4Ch * ??? Olivetti M200 FAh 00h 00h 09/02/86 PS/2 Model 30 (8 MHz 8086) FAh 00h 01h 12/12/86 PS/2 Model 30 FAh 01h 00h ??? PS/2 Model 25/25L (8 MHz 8086) FAh 4Eh * ??? Olivetti M111 F9h 00h 00h 09/13/85 PC Convertible F8h 00h 00h 03/30/87 PS/2 Model 80 (16MHz 386) F8h 01h 00h 10/07/87 PS/2 Model 80 (20MHz 386) F8h 04h 02h 04/11/88 PS/2 Model 70 20MHz, type 2 system brd F8h 04h 03h 03/17/89 PS/2 Model 70 20MHz, type 2 system brd F8h 09h 00h ??? PS/2 Model 70 16MHz, type 1 system brd F8h 09h 02h 04/11/88 PS/2 Model 70 some models F8h 09h 03h 03/17/89 PS/2 Model 70 some models F8h 0Bh 00h 01/18/89 PS/2 Model P70 (8573-121) typ 2 sys brd F8h 0Bh 02h 12/16/89 PS/2 Model P70 ?? F8h 0Ch 00h 11/02/88 PS/2 Model 55SX (16 MHz 386SX) F8h 0Dh 00h ??? PS/2 Model 70 25MHz, type 3 system brd F8h 11h 00h 10/01/90 PS/2 Model 90 (25 MHz 486) F8h 13h 00h 10/01/90 PS/2 Model 90 (33 MHz 486) F8h 14h 00h 10/01/90 PS/2 Model 90-AK9 (25 MHz 486) F8h 16h 00h 10/01/90 PS/2 Model 90-AKD (33 MHz 486) F8h 19h 05h ??? PS/2 Model 35/35LS or 40 (20 MHz 386SX) F8h 1Bh 00h 10/02/89 PS/2 Model 70-486 (25 MHz 486) F8h 1Ch 00h 02/08/90 PS/2 Model 65-121 (16 MHz 386SX) F8h 1Eh 00h 02/08/90 PS/2 Model 55LS (16 MHz 386SX) F8h 23h 01h ??? PS/2 Model L40 (20 MHz 386SX) F8h 25h 06h ??? PS/2 Model M57 (20 MHz 386SLC) F8h 26h 01h ??? PS/2 Model 57 (20 MHz 386SX) F8h 2Ah 00h ??? PS/2 Model 95 (50 MHz 486) F8h 2Bh 00h ??? PS/2 Model 90 (50 MHz 486) F8h 2Ch 01h ??? PS/2 Model 95 (20 MHz 486SX) F8h 2Dh 00h ??? PS/2 Model 90 (20 MHz 486SX) F8h 2Eh 01h ??? PS/2 Model 95 (20 MHz 486SX + 487SX) F8h 2Fh 00h ??? PS/2 Model 90 (20 MHz 486SX + 487SX) F8h 30h 00h ??? PS/1 Model 2121 (16 MHz 386SX) F8h 50h 00h ??? PS/2 Model P70 (8573) (16 MHz 386) F8h 50h 01h 12/16/89 PS/2 Model P70 (8570-031) F8h 52h 00h ??? PS/2 Model P75 (33 MHz 486) F8h 61h * ??? Olivetti P500 F8h 62h * ??? Olivetti P800 F8h 80h 00h ??? PS/2 Model 80 (25 MHz 386) F8h 80h 01h 11/21/89 PS/2 Model 80-A21 F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX) F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX) F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX + 487SX) F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX + 487SX) 9Ah * * ??? Compaq XT/Compaq Plus 30h ??? ??? ??? Sperry PC 2Dh * * ??? Compaq PC/Compaq Deskpro ??? 56h ??? ??? Olivetti, unknown model ??? 74h ??? ??? Olivetti, unknown model
Read Model byte at F000h:FFFEh and BIOS date at F000h:FFF5h.
F000h:FFFDh.
Values for Dell model byte: 02h Dell 200 03h Dell 300 05h Dell 220 06h Dell 310 07h Dell 325 09h Dell 310A 0Ah Dell 316 0Bh Dell 220E 0Ch Dell 210 0Dh Dell 316SX 0Eh Dell 316LT 0Fh Dell 320LX 11h Dell 425E ———-15C1——————————- INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
AH = C1h
Return: CF set on error
CF clear if successful
ES = segment of data area
SeeAlso: AH=04h“ABIOS” ———-15C200BH00————————- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
AX = C200h
BH = 00h disable
01h enable
Return: CF set on error
AH = status
00h successful
01h invalid function
02h invalid input
03h interface error
04h need to resend
05h no device handler installed
———-15C201—————————– INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
AX = C201h
Return: CF set on error
AH = status (see AX=C200h)
CF clear if successful
BH = device ID
SeeAlso: INT 33/AX=0000h ———-15C202—————————– INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
AX = C202h
BH = sampling rate
00h 10/second
01h 20/second
02h 40/second
03h 60/second
04h 80/second
05h 100/second
06h 200/second
Return: CF set on error
AH = status (see AX=C200h)
SeeAlso: INT 33/AX=001Ch ———-15C203—————————– INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
AX = C203h
BH = resolution
00h one count per mm
01h two counts per mm
02h four counts per mm
03h eight counts per mm
Return: CF set on error
AH = status (see AX=C200h)
———-15C204—————————– INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
AX = C204h
Return: CF set on error
AH = status (see AX=C200h)
CF clear if successful
BH = device ID
———-15C205—————————– INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
AX = C205h BH = data package size (1 - 8 bytes)
Return: CF set on error
AH = status (see AX=C200h)
SeeAlso: AX=C201h ———-15C206—————————– INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET/SET SCALING FACTOR
AX = C206h
BH = subfunction
00h return device status
Return: BL = status
bit 0: right button pressed
bit 1: reserved
bit 2: left button pressed
bit 3: reserved
bit 4: 0 if 1:1 scaling, 1 if 2:1 scaling
bit 5: device enabled
bit 6: 0 if stream mode, 1 if remote mode
bit 7: reserved
CL = resolution (see AX=C203h)
DL = sample rate, reports per second
01h set scaling at 1:1
02h set scaling at 2:1
Return: CF set on error
AH = status (see AX=C200h)
———-15C207—————————– INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
AX = C207h ES:BX -> FAR user device handler
Return: CF set on error
AH = status (see AX=C200h)
SeeAlso: INT 33/AX=000Ch ———-15C3—————————— INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
AH = C3h
AL = 00h disable
01h enable
BX = timer counter
Return: CF set on error
CF clear if successful
Note: the watchdog timer generates an NMI ———-15C4——————————- INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
AH = C4h
AL = 00h return base POS register address
01h enable slot
BL = slot number
02h enable adapter
Return: CF set on error
DX = base POS register address (if function 00h)
———-15C5——————————- INT 15 U - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
AH = C5h
AL = interrupt being invoked
01h INT 19
02h INT 14
03h INT 16
04h INT 40 (floppy INT 13)
05h INT 17
06h INT 10
07h INT 12
08h INT 11
09h INT 1A
Return: all registers except AX must be preserved Notes: called as the very first action of the indicated ROM BIOS interrupt
handlers on the PS/2 Models 30/286, 50Z, and 95 default handler does nothing and returns CF clear for the above subfunctions, CF set and AH=86h for all other subfunctions value of AX passed to the original interrupt handler is pushed on stack immediately prior to call
———-15C6——————————- INT 15 U - PS/2 Model 95 - ???
AH = C6h ???
Return: ??? ———-15C7——————————- INT 15 U - PS/2 Model 95 - ???
AH = C7h ???
Return: ??? ———-15C8——————————- INT 15 U - PS/2 Model 95 - ???
AH = C8h ???
Return: ??? ———-15C9——————————- INT 15 U - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
AH = C9h AL = 10h (may be required on some non-PS BIOSes)
Return: AH = 00h
CH = CPU type
03h 80386
04h 80486
CL = mask revision
23h 386SX
Notes: the BIOS must save DX at startup in order to be able to support this
call; PS/2 Models 56, 57, 90, and 95 are known to support it the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
———-15CA——————————- INT 15 U - PS/2 Model 95 - ???
AH = CAh ???
Return: ??? ———-15CB——————————- INT 15 U - PS/2 Model 95 - ???
AH = CBh ???
Return: ??? ———-15CC——————————- INT 15 U - PS/2 Model 95 - ???
AH = CCh ???
Return: ??? ———-15CD——————————- INT 15 U - PS/2 Model 95 - ???
AH = CDh ???
Return: ??? ———-15CE——————————- INT 15 U - PS/2 Model 95 - ???
AH = CEh ???
Return: ??? ———-15CF——————————- INT 15 U - PS/2 Model 95 - ???
AH = CFh ???
Return: ??? ———-15D800—————————– INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
AX = D800h CL = slot number (including embedded and virtual)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code
80h invalid slot number
82h EISA CMOS corrupt
83h empty slot
86h invalid BIOS-FW function call
87h invalid system configuration
AL bit flags
bit 7: set if duplicate IDs
6: set if product ID readable
4,5: slot type (00=expansion, 01=embedded, 10=virtual device)
0-3: duplicate ID number if bit 7 set
BH = major revision level of configuration utility
BL = minor revision level of configuration utility
CX = checksum of configuration file
DH = number of device functions
DL = combined function information byte
SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
Note: call with AL=80h if using 32-bit CS addressing mode instead of 16-bit SeeAlso: AX=D801h,AX=D804h ———-15D801—————————– INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
AX = D801h CH = function number to read CL = slot number (including embedded and virtual) DS:SI -> 320-byte buffer for standard configuration data block
Return: CF clear if successful
AH = 00h
DS:SI buffer filled
CF set on error
AH = error code
80h invalid slot number
81h invalid function number
82h EISA CMOS corrupt
83h empty slot
86h invalid BIOS-FW function call
87h invalid system configuration
BX destroyed
Note: call with AL=81h if using 32-bit CS addressing mode instead of 16-bit ———-15D802—————————– INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
AX = D802h BH = EISA config utility major revision level BL = EISA config utility minor revision level
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code
84h error clearing CMOS
86h invalid BIOS-FW function call
88h config utility version not supported
Note: call with AL=82h if using 32-bit CS addressing mode instead of 16-bit SeeAlso: AX=D803h ———-15D803—————————– INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
AX = D803h CX = length of data structure (0000h = empty slot) includes two bytes for config file checksum DS:SI -> configuration data
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code
84h error clearing CMOS
85h EISA CMOS is full
86h invalid BIOS-FW function call
Note: call with AL=83h if using 32-bit CS addressing mode instead of 16-bit SeeAlso: AX=D802h ———-15D804—————————– INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
AX = D804h CL = slot number (including embedded and virtual)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code
80h invalid slot number
83h empty slot
86h invalid BIOS-FW function call
SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
Note: call with AL=84h if using 32-bit CS addressing mode instead of 16-bit SeeAlso: AX=D800h ———-15D8——————————- INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
AH = D8h AL = 80h to 84h other registers as appropriate for AL=00h to 04h
Return: as appropriate for AL=00h to 04h Note: these functions are identical to AX=D800h to D804h, except that they
should be called when using 32-bit CS addressing mode (pointers use ESI rather than SI as offset) instead of 16-bit addressing mode
SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h ———-15DE00—————————– INT 15 - DESQview - GET PROGRAM NAME
AX = DE00h
Return: AX = offset into DESQVIEW.DVO of program most recently selected from
the "Switch Windows" menu (see below)
Note: always returns AX=0000h under DESQview/X SeeAlso: AX=DE07h
Format of program entry in DESQVIEW.DVO: Offset Size Description 00h BYTE length of name (FFh if end of file) 01h N BYTEs name
2 BYTEs keys to invoke program (second = 00h if only one key used) BYTE program type 00h normal program 04h divider 80h Delete a Program 81h Change a Program WORD ??? apparently always 0000h
———-15DE01—————————– INT 15 - DESQview - UPDATE “OPEN WINDOW” MENU
AX = DE01h
Return: nothing Notes: reads DESQVIEW.DVO, disables Open menu if file not in current directory
NOP for DESQview/X
———-15DE02—————————– INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
AX = DE02h
Return: nothing Note: this call is a NOP in DV 2.x SeeAlso: AX=DE03h ———-15DE03—————————– INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
AX = DE03h
Return: AX = ??? for current window
BX = ??? for current window
Note: this call is a NOP in DV 2.x SeeAlso: AX=DE02h ———-15DE04—————————– INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
AX = DE04h
Return: BX = bytes of common memory available
CX = largest block available DX = total common memory in bytes
SeeAlso: AX=DE05h,AX=DE06h ———-15DE05—————————– INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
AX = DE05h
Return: BX = K of memory available
CX = largest block available DX = total conventional memory in K
SeeAlso: AX=DE04h,AX=DE06h ———-15DE06—————————– INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
AX = DE06h
Return: BX = K of expanded memory available
CX = largest block available DX = total expanded memory in K
SeeAlso: AX=DE04h,AX=DE05h ———-15DE07—————————– INT 15 - DESQview - “APPNUM” - GET CURRENT PROGRAM'S NUMBER
AX = DE07h
Return: AX = number of program as it appears on the “Switch Windows” menu Note: this API call may be made from a hardware interrupt handler SeeAlso: AX=DE00h ———-15DE08—————————– INT 15 - DESQview - GET ???
AX = DE08h
Return: AX = 0000h if ??? is not set to the current task
0001h if ??? is set to the current task
———-15DE09—————————– INT 15 - DESQview - UNIMPLEMENTED
AX = DE09h
Return: nothing (NOP in DV 1.x and 2.x) ———-15DE0A—————————– INT 15 - DESQview v2.00+ - “DBGPOKE” - DISPLAY CHARACTER ON STATUS LINE
AX = DE0Ah BL = character
Return: character displayed, next call will display in next position (which
wraps back to the start of the line if off the right edge of screen)
Notes: displays character on bottom line of *physical* screen, regardless
of current size of window (even entirely hidden) does not know about graphics display modes, just pokes the characters into display memory this API call may be made from a hardware interrupt handler
SeeAlso: AX=1003h ———-15DE0B—————————– INT 15 - DESQview v2.00+ - “APILEVEL” - DEFINE MINIMUM API LEVEL REQUIRED
AX = DE0Bh BL = API level minor version number BH = API level major version number
Return: AX = maximum API level (AH = major, AL = minor) Notes: if the requested API level is greater than the version of DESQview, a
"You need a newer version" error window is popped up the API level defaults to 1.00, and is inherited by child tasks
———-15DE0C—————————– INT 15 - DESQview v2.00+ - “GETMEM” - ALLOCATE “SYSTEM” MEMORY
AX = DE0Ch BX = number of bytes
Return: ES:DI → allocated block or 0000h:0000h (DV 2.26+) Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
system memory
SeeAlso: AX=1001h,AX=DE0Dh,AX=DE15h ———-15DE0D—————————– INT 15 - DESQview v2.00+ - “PUTMEM” - DEALLOCATE “SYSTEM” MEMORY
AX = DE0Dh ES:DI -> previously allocated block
Return: nothing SeeAlso: AX=1002h,AX=DE0Ch ———-15DE0E—————————– INT 15 - DESQview v2.00+ - “FINDMAIL” - FIND MAILBOX BY NAME
AX = DE0Eh ES:DI -> name to find CX = length of name
Return: BX = 0000h not found
0001h found DS:SI = object handle
SeeAlso: AH=12h/BH=11h
Special mailbox names: “COM1” … “COM4” RBcomm using COM1 … COM4 “DESQview/X Help Engine” “DESQview/X Network Server” “DESQview X Server0” “INBOX” DESQview/X LPD requests “OUTBOX” DESQview/X LPD responses “WAITBOX” semaphore to synchronize DESQview/X LPD communications ———-15DE0F—————————– INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
AX = DE0Fh
Return: AX and BX destroyed (seems to be bug, weren't saved&restored) Notes: sends a manager stream with opcodes AEh, BDh, and BFh to task's window
enables an additional mouse mode
———-15DE10—————————– INT 15 - DESQview v2.00+ - “PUSHKEY” - PUT KEY INTO KEYBOARD INPUT STREAM
AX = DE10h BH = scan code BL = character
Return: nothing Notes: a later read will get the keystroke as if it had been typed by the user
multiple pushes are read last-in first-out if a script exists for the pushed key in the current application, the script will be executed early copies of DV 2.00 destroy AX, BX, ES, and DI
SeeAlso: INT 16/AH=05h ———-15DE11BL00————————- INT 15 - DESQview 2.00+ - “JUSTIFY” - EN/DISABLE AUTOMATIC WINDOW JUSTIFICATION
AX = DE11h
BL = 00h viewport will not move automatically
nonzero viewport will move to keep cursor visible (default)
Return: nothing ———-15DE12BX0000———————– INT 15 - DESQview v2.01+ - “CSTYLE” - SET “C”-COMPATIBLE CONTROL CHAR INTERPRET
AX = DE12h
BX = 0000h select normal style (linefeed only moves down)
nonzero select C style (linefeed moves to start of next line)
Return: nothing Note: set on a per-task basis, and inherited from the parent task ———-15DE13—————————– INT 15 - DESQview v2.20+ - “GETCRIT” - GET CRITICAL NESTING COUNT
AX = DE13h
Return: BX = number of calls to BEGINC or ENTERC (see INT 15/AX=101Bh,DE1Ch)
without matching ENDC (see INT 15/AX=101Ch)
Note: this API call may be made from within a hardware interrupt handler SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch ———-15DE14—————————– INT 15 - DESQview v2.20+ - GET OBJECT TYPE
AX = DE14h ES:DI -> object
Return: BL = 00h not an object
08h window or task
09h mailbox
0Ah keyboard
0Bh timer
0Ch objectq
0Fh pointer
10h panel
SeeAlso: AX=1016h ———-15DE15BL00————————- INT 15 - DESQview v2.20+ - SET ERROR HANDLING
AX = DE15h
BL = 00h post system error on all error conditions
01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
messages sent to mailboxes which fail due to lack of system
or common memory
02h (v2.26+) same as 01h, but return null pointer for GETMEM
calls which fail due to lack of system memory
Return: nothing SeeAlso: AX=DE16h ———-15DE16—————————– INT 15 - DESQview v2.20+ - GET ERROR HANDLING
AX = DE16h
Return: BL = 00h always post system error
01h return carry flag set on failed mailbox writes
02h return CF set on failed mailbox writes and NULL on failed
GETMEM calls
SeeAlso: AX=DE15h ———-15DE17—————————– INT 15 - DESQview v2.20-2.25 - reserved
AX = DE17h
Return: pops up “Programming error” window Note: AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25 SeeAlso: AX=1117h ———-15DE17BX0000———————– INT 15 - DESQview v2.26+ - “ASSERTMAP” - GET/SET MAPPING CONTEXT
AX = DE17h
BX = 0000h get current mapping context without setting
nonzero set new mapping context
Return: BX = mapping context in effect before call Notes: mapping contexts determine conventional-memory addressability; setting
a mapping context ensures that the associated program and data areas are in memory for access. Usable by drivers, TSRs and shared programs. caller need not be running under DESQview this API call may be made from a hardware interrupt handler
SeeAlso: AX=1117h,INT 2F/AX=1685h ———-15DE18—————————– INT 15 - DESQview v2.20+ - internal - ???
AX = DE18h
BP = function number
high byte must be 10h
low byte is function
00h set ???
BL = ??? (00h-10h, video mode???)
BH = value to store
03h set ???
BL = ??? (stored in driver)
0Ah get ???
ES:DI -> 18-byte buffer to hold ???
Note: calls video driver (NOP for Hercules driver,probably CGA and MCGA also) ———-15DE19—————————– INT 15 - DESQview v2.23+ - “GETCOMMON” - ALLOCATE “COMMON” MEMORY
AX = DE19h BX = number of bytes to allocate
Return: AX = 0000h successful
ES:DI -> allocated block
nonzero insufficient memory
Note: this API call may be made from within a hardware interrupt handler SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah ———-15DE1A—————————– INT 15 - DESQview v2.23+ - “PUTCOMMON” - DEALLOCATE “COMMON” MEMORY
AX = DE1Ah DS:SI -> previously allocated block
Note: this function may be called from within a hardware interrupt handler SeeAlso: AX=DE0Dh,AX=DE19h ———-15DE1B—————————– INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
AX = DE1Bh
Return: nothing SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch ———-15DE1C—————————– INT 15 - DESQview v2.23+ - “ENTERC” - INCREMENT CRITICAL NESTING COUNT
AX = DE1Ch
Return: nothing Notes: similar to AX=101Bh, but begins the critical region without ensuring
that DOS is free the official documentation states that this call should be paired with "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh this API call may be made from within a hardware interrupt handler
SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh ———-15DE1D—————————– INT 15 - DESQview v2.23+ - “PUTKEY” - FAKE USER KEYSTROKES
AX = DE1Dh DX = segment of handle for task to receive keystroke BL = character BH = scan code
Return: AX = 0000h if successful
nonzero if receiver's keyboard buffer was full
Notes: the key is treated as though the user had pressed it, ignoring any
script which may be bound to the key, and using the current field table if the keyboard object is in field processing mode multiple PUTKEYs are seen in the order in which they are executed
SeeAlso: AX=DE10h ———-15DE1E—————————– INT 15 - DESQview v2.23+ - “SCRNINFO” - GET TRUE VIDEO PARAMETERS
AX = DE1Eh
Return: CL = actual number of rows on screen
CH = actual number of columns on screen BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
Note: this API call may be made from a hardware interrupt handler SeeAlso: INT 10/AH=0Fh ———-15DE1F—————————– INT 15 - DESQview v2.23+ - “DOSUSER” - GET HANDLE OF TASK CURRENTLY USING DOS
AX = DE1Fh
Return: BX = segment of task handle or 0000h if no tasks are using DOS Note: this API call may be made from within a hardware interrupt handler SeeAlso: AX=DE13h ———-15DE20—————————– INT 15 - DESQview v2.26+ - “DISPATCHINT” - INTERRUPT ANOTHER TASK
AX = DE20h BX = segment of handle of task to interupt DX:CX -> FAR interrupt routine
Return: nothing Notes: unlike “PGMINT” (AX=1021h), DISPATCHINT may be applied to the task
making the DISPATCHINT call multiple "DISPATCHINT" calls are processed in the order in which they were executed the FAR routine is entered with the current ES, DS, SI, DI, and BP values, using the task's internal stack (see AX=101Ah); only SS:SP needs to be preserved this API call may be made from within a hardware interrupt handler
SeeAlso: AX=1021h ———-15DE21BX0000———————– INT 15 - DESQview v2.26+ - “ASSERTVIR” - CONTROL 386 SCREEN VIRTUALIZATION
AX = DE21h
BX = 0000h turn off
nonzero turn on
Return: BX = old state of virtualization Note: this API call may be made from within a hardware interrupt handler ———-15DE22—————————– INT 15 - DESQview v2.26+ - “PROCESSMEM” - GET TASK MEMORY STATUS
AX = DE22h DX = segment of task handle
Return: DX = total amount of memory in paragraphs
BX = amount of system memory in paragraphs
CX = largest block of system memory available in paragraphs
AX = flags
bit 0: system memory resides in shared memory
1: process's memory is swapped out
2: process's system memory is swapped out
Notes: if the task handle is a child task, the returned values will be for the
process containing the task, rather than the task itself if the process's system memory is swapped out, BX,CX,DX remain unchanged, because the memory usage cannot be determined
SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h ———-15DE23—————————– INT 15 - DESQview v2.31+ - ???
AX = DE23h BX = ??? IRQ number on first PIC? CX = ??? IRQ number on second PIC?
Return: ??? Note: called by QEMM 6.00+ ———-15DE24—————————– INT 15 - DESQview v2.40+ - ???
AX = DE24h
Return: BX = ??? (0000h for v2.40) ———-15DE25—————————– INT 15 - DESQview v2.40+ - ???
AX = DE25h ???
Return: nothing ———-15DE26—————————– INT 15 - DESQview v2.40+ - GET ???
AX = DE26h
Return: BX = segment of handle for X server??? ———-15DE27—————————– INT 15 - DESQview v2.50+ - ???
AX = DE27h BX = ??? (0000h,0001h) ES:DI -> ???
Return: CF clear if successful
AX = ???
BX = ???
CF set on error
AX = ???
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. ———-15DE28—————————– INT 15 - DESQview v2.50+ - ???
AX = DE28h BX = segment of ??? or 0000h for default ???
Return: ??? Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. SeeAlso: AX=DE2Ah ———-15DE29BX0000———————– INT 15 - DESQview v2.50+ - ???
AX = DE29h BX = 0000h ???
Return: CF clear if successful
??? CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. ———-15DE29BX0001———————– INT 15 - DESQview v2.50+ - ???
AX = DE29h BX = 0001h DX = segment of window handle
Return: CF clear if successful
AX = ???
DX = ???
CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. ———-15DE29BX0002———————– INT 15 - DESQview v2.50+ - ???
AX = DE29h BX = 0002h DX = segment of window handle
Return: CF clear if successful
AX = ???
DX = ???
CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. ———-15DE29BX0003———————– INT 15 - DESQview v2.50+ - ???
AX = DE29h BX = 0003h DX = segment of window handle
Return: CF clear if successful
??? CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. ———-15DE29BX0004———————– INT 15 - DESQview v2.50+ - GET DISPLAY NAME
AX = DE29h BX = 0004h CX = size of buffer in bytes DX = segment of window handle ES:DI -> buffer for display name
Return: CF clear if successful
buffer filled with ASCIZ display name (truncated if necessary) or
null string if no display
CF set on error
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
the name ":0" refers to the local display
———-15DE29BX0005———————– INT 15 - DESQview v2.50+ - ???
AX = DE29h BX = 0005h ???
Return: CF clear if successful
??? CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. ———-15DE2A—————————– INT 15 - DESQview v2.50+ - ???
AX = DE2Ah BX = segment of ??? or 0000h for default ???
Return: ??? Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. SeeAlso: AX=DE28h,AX=DE2Bh ———-15DE2B—————————– INT 15 - DESQview v2.50+ - TRAVERSE OBJECT LIST
AX = DE2Bh ES:DI -> object
Return: AX = status
0000h successful
ES:DI -> next object of same type in circular linked list
0001h failed (ES:DI was not a valid handle)
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch ———-15DE2C—————————– INT 15 - DESQview v2.50+ - GET WINDOW INFORMATION???
AX = DE2Ch DX = 0100h BX = segment of window handle or 0000h for default ES:DI -> buffer for info (see below)
Return: AX = status???
0000h successful
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. SeeAlso: AX=DE2Bh
Format of window information: Offset Size Description 00h BYTE task flag: 00h window, 01h task 01h BYTE process number if task 02h WORD segment of owner's handle 04h WORD mapping context??? 06h BYTE status 00h waiting
01h idle 04h pausing 0Ah slicing 0Bh exit DOS
07h BYTE ??? 08h BYTE 01h if DESQview task??? 09h 2 BYTEs ??? ———-15DE2D—————————– INT 15 - DESQview v2.50+ - GET/SET ??? FUNCTION
AX = DE2Dh
CX = direction
FFFFh set ??? function
DX:BX -> FAR function for ???
must contain data storage for a WORD three bytes past
the function entry point and a DWORD five bytes past
the start
other get ??? function
Return: DX:BX → function if CX<>FFFFh on entry Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. SeeAlso: AX=DE2Eh,INT 63“DESQview” ———-15DE2E—————————– INT 15 - DESQview v2.50+ - ???
AX = DE2Eh DX:BX = ??? or 0000h:0000h for default
Return: CX = ???
DX:BX = ???
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. SeeAlso: AX=DE2Dh
INT 15 - DESQview v2.50+ - ???
AX = DE2Fh
Return: BL = ??? (00h,01h) Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. ———-15DE30—————————– INT 15 - DESQview v2.50+ - GET DESQview/X VERSION
AX = DE30h
Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. SeeAlso: INT 21/AH=2Bh/CX=4445h ———-15E00F—————————– INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
AX = E00Fh ES:BX -> start of 2nd processor's execution
Return: AL = 0Fh successful
= 00h failure
SeeAlso: AX=E10Eh,AX=E200h ———-15E10E—————————– INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
AX = E10Eh ES:BX -> start of 2nd processor's execution
Return: AL = 0Fh successful (halted)
= 00h failure (not halted)
SeeAlso: AX=E00Fh,AX=E200h ———-15E200—————————– INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
AX = E200h
Return: AX = 8000h if 2nd processor available SeeAlso: AX=E00Fh,AX=E10Eh ———-15E4——————————- INT 15 - ???
AH = E4h
AL = subfunction
21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
DL = ???
Return: ??? ———-15F200CX454D———————– INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALISATION CHECK ???
AX = F200h CX = 454Dh
Return: CF clear if hardware already initialised
BX = upper RAM areas in use bit 0: C000-C3FF bit 1: C400-C7FF ... bit 11: EC00-EFFF CF set if hardware not initialised yet