Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
back2root:ibm-pc-ms-dos:interrupts:ms_interrupt_list-11-15 [2023/01/05 03:46] – supprimée - modification externe (Unknown date) 127.0.0.1 | back2root:ibm-pc-ms-dos:interrupts:old:ms_interrupt_list-11-15 [2023/01/05 04:01] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== MSDOS - Interrupt List 11h-20h ====== | ||
+ | ===== INT 11 ===== | ||
+ | |||
+ | ==== INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK ==== | ||
+ | |||
+ | Bit AC in the EFLAGS register enables this interrupt on a memory reference on a mis-aligned address when in privilege mode 3. | ||
+ | |||
+ | ==== INT 11 - BIOS - GET EQUIPMENT LIST ==== | ||
+ | < | ||
+ | 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/ | ||
+ | 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 | ||
+ | | ||
+ | 00 DMA channel 0 | ||
+ | 01 DMA channel 0 ??? | ||
+ | 10 reserved | ||
+ | 11 DMA channel 3 | ||
+ | SeeAlso: INT 12 | ||
+ | |||
+ | ==== INT 11 - BNU FOSSIL - INSTALLATION CHECK ==== | ||
+ | |||
+ | AH = BCh | ||
+ | DX = 1954h | ||
+ | Return: AX = 1954h | ||
+ | ES:DX -> entry point of driver (instead of INT 14) | ||
+ | |||
+ | ==== INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND ==== | ||
+ | |||
+ | 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: | ||
+ | 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/ | ||
+ | |||
+ | ==== INT 11 - BACK& | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ===== INT 12 ===== | ||
+ | |||
+ | ==== INT 12 - BIOS - GET MEMORY SIZE ==== | ||
+ | |||
+ | Return: AX = kilobytes of contiguous memory starting at absolute address 00000h | ||
+ | Note: this call returns the contents of the word at 0040h: | ||
+ | XT, this value is set from the switches on the motherboard | ||
+ | SeeAlso: INT 11,INT 2F/AX=4A06h | ||
+ | |||
+ | ==== INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK ==== | ||
+ | |||
+ | CX = 1806h | ||
+ | Return: AX = kilobytes of contiguous memory starting at absolute address 00000h | ||
+ | CX = 1960h if installed | ||
+ | Note: | ||
+ | accented characters and box drawing on standard QWERTY keyboards; it | ||
+ | also provides break-to-DOS and screen blanking capabilities | ||
+ | |||
+ | ==== INT 12 - PARKER v2.0+ - INSTALLATION CHECK ==== | ||
+ | |||
+ | CX = 1807h | ||
+ | Return: AX = kilobytes of contiguous memory starting at absolute address 00000h | ||
+ | CX = 1961h if installed | ||
+ | Note: | ||
+ | Zwiekhorst | ||
+ | |||
+ | ==== INT 12 - Back& | ||
+ | |||
+ | AX = FFFEh | ||
+ | CX = FFFEh | ||
+ | BX = function | ||
+ | 00h installation check | ||
+ | Return: AX = 0001h installed | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | ===== INT 13 ===== | ||
+ | |||
+ | ==== INT 13 - DISK - RESET DISK SYSTEM ==== | ||
+ | |||
+ | 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: | ||
+ | SeeAlso: AH=0Dh, | ||
+ | |||
+ | ==== INT 13 - DISK - GET STATUS OF LAST OPERATION ==== | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - DISK - READ SECTOR(S) INTO MEMORY ==== | ||
+ | |||
+ | 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: | ||
+ | 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, | ||
+ | |||
+ | ==== INT 13 - DISK - WRITE DISK SECTOR(S) ==== | ||
+ | |||
+ | 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: | ||
+ | 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, | ||
+ | |||
+ | ==== INT 13 - DISK - VERIFY DISK SECTOR(S) ==== | ||
+ | |||
+ | 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: | ||
+ | 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' | ||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - FLOPPY - FORMAT TRACK ==== | ||
+ | |||
+ | 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" | ||
+ | |||
+ | Format of address field buffer entry (one per sector in track): | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | ==== INT 13 - FIXED DISK - FORMAT TRACK ==== | ||
+ | |||
+ | AH = 05h | ||
+ | AL = interleave value (XT-type controllers only) | ||
+ | ES:BX = 512-byte format buffer | ||
+ | the first 2*(sectors/ | ||
+ | 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: | ||
+ | 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" | ||
+ | |||
+ | ==== INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT) ==== | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT) ==== | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - DISK - GET DRIVE PARAMETERS (PC, | ||
+ | |||
+ | 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/ | ||
+ | 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. | ||
+ | SeeAlso: AH=15h,INT 1E,INT 41 | ||
+ | |||
+ | ==== INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS) ==== | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later) ==== | ||
+ | |||
+ | 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' | ||
+ | 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, | ||
+ | |||
+ | ==== INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later) ==== | ||
+ | |||
+ | 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' | ||
+ | error-correction information | ||
+ | used for diagnostics only on PS/2 systems | ||
+ | SeeAlso: AH=03h, | ||
+ | |||
+ | ==== INT 13 - HARD DISK - SEEK TO CYLINDER ==== | ||
+ | |||
+ | 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, | ||
+ | |||
+ | ==== INT 13 - HARD DISK - RESET HARD DISKS ==== | ||
+ | |||
+ | 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: | ||
+ | parameters, and recalibrates the drive' | ||
+ | not for PS/2 ESDI drives | ||
+ | SeeAlso: AH=00h,INT 21/AH=0Dh | ||
+ | |||
+ | ==== INT 13 - HARD DISK - READ SECTOR BUFFER (XT only) ==== | ||
+ | |||
+ | 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: | ||
+ | used for diagnostics only on PS/2 systems | ||
+ | SeeAlso: AH=0Ah | ||
+ | |||
+ | ==== INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only) ==== | ||
+ | |||
+ | 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' | ||
+ | used for diagnostics only on PS/2 systems | ||
+ | SeeAlso: AH=0Bh | ||
+ | |||
+ | ==== INT 13 - HARD DISK - CHECK IF DRIVE READY ==== | ||
+ | |||
+ | 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) | ||
+ | |||
+ | ==== INT 13 - HARD DISK - RECALIBRATE DRIVE ==== | ||
+ | |||
+ | 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: | ||
+ | SeeAlso: AH=00h, | ||
+ | |||
+ | ==== INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS) ==== | ||
+ | |||
+ | 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, | ||
+ | |||
+ | ==== INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK ==== | ||
+ | |||
+ | AH = 12h | ||
+ | DL = hard drive ID | ||
+ | Return: CF set on error | ||
+ | AH = status code (see AH=01h) | ||
+ | Notes: | ||
+ | if the given drive is a SCSI device, the SCSI Stop Unit command is sent | ||
+ | and either "Disk prepared for shipping" | ||
+ | is displayed | ||
+ | |||
+ | ==== INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS) ==== | ||
+ | |||
+ | 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, | ||
+ | |||
+ | ==== INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC ==== | ||
+ | |||
+ | AH = 14h | ||
+ | Return: CF set on error | ||
+ | CF clear if successful | ||
+ | AH = status code (see AH=01h) | ||
+ | SeeAlso: AH=12h, | ||
+ | |||
+ | ==== INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later, | ||
+ | |||
+ | 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, | ||
+ | |||
+ | ==== INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later, | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS) ==== | ||
+ | |||
+ | 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, | ||
+ | |||
+ | ==== INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9, | ||
+ | |||
+ | 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, | ||
+ | |||
+ | ==== INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION ==== | ||
+ | |||
+ | 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" | ||
+ | |||
+ | ==== INT 13 - FIXED DISK - PARK HEADS (XT286,PS) ==== | ||
+ | |||
+ | AH = 19h | ||
+ | DL = drive | ||
+ | Return: CF set on error | ||
+ | AH = status (see AH=01h) | ||
+ | SeeAlso: AH=11h | ||
+ | |||
+ | ==== INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE ==== | ||
+ | |||
+ | 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: | ||
+ | adjusts the result for 512-byte sectors | ||
+ | displays either "Error in Read Capacity Command" | ||
+ | sector" | ||
+ | code) | ||
+ | should probably be called when a removable device has its media changed | ||
+ | returns the same values as AH=15h | ||
+ | SeeAlso: AH=15h, | ||
+ | |||
+ | ==== INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS) ==== | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY ==== | ||
+ | |||
+ | AH = 1Ah | ||
+ | CH = track (bits 8,9 in high bits of CL) | ||
+ | CL = sector (01h to number of sectors/ | ||
+ | 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). | ||
+ | performed on the result if data is stored on the disk in other than | ||
+ | 512 byte sectors. | ||
+ | SeeAlso: AH=15h, | ||
+ | |||
+ | ==== INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER ==== | ||
+ | |||
+ | AH = 1Bh | ||
+ | AL = number of record | ||
+ | DL = drive | ||
+ | ES:BX -> buffer for manufacturing header (defect list) | ||
+ | Return: CF set on error | ||
+ | AH = status | ||
+ | Note: | ||
+ | in IBM 70MB, 115MB Fixed Disk Drives Technical Reference | ||
+ | |||
+ | ==== INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK ==== | ||
+ | |||
+ | 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" | ||
+ | |||
+ | Format of SCSI disk information block: | ||
+ | Offset Size Description | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | bits 0-2: logical unit number | ||
+ | bits 3-5: device number | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 0Bh 10 BYTEs copy of Command Descriptor Block (CDB) | ||
+ | | ||
+ | |||
+ | ==== INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM ==== | ||
+ | |||
+ | 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' | ||
+ | SeeAlso: AH=1Bh" | ||
+ | |||
+ | ==== INT 13 - ESDI FIXED DISK - GET DEVICE CONFIGURATION ==== | ||
+ | |||
+ | AX = 1C0Ah | ||
+ | DL = drive | ||
+ | ES:BX -> buffer for device configuration (drive physical parameter) | ||
+ | Return: CF set on error | ||
+ | AH = status | ||
+ | Note: | ||
+ | Adapter/A Technical Reference | ||
+ | |||
+ | ==== INT 13 - ESDI FIXED DISK - GET ADAPTER CONFIGURATION ==== | ||
+ | |||
+ | AX = 1C0Bh | ||
+ | ES:BX -> buffer for adapter configuration | ||
+ | Return: CF set on error | ||
+ | AH = status | ||
+ | SeeAlso: AX=1C0Ch | ||
+ | |||
+ | ==== INT 13 - ESDI FIXED DISK - GET POS INFORMATION ==== | ||
+ | |||
+ | AX = 1C0Ch | ||
+ | ES:BX -> POS information | ||
+ | Return: CF set on error | ||
+ | AH = status | ||
+ | SeeAlso: AX=1C0Bh | ||
+ | |||
+ | ==== INT 13 - ESDI FIXED DISK - TRANSLATE RBA TO ABA ==== | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - IBMCACHE.SYS - CACHE STATUS ==== | ||
+ | |||
+ | 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 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of error list: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | ==== INT 13 - DISK - ??? (Western Digital "Super BIOS") ==== | ||
+ | |||
+ | AH = 20h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: seems to return some kind of status | ||
+ | |||
+ | ==== INT 13 - QCACHE - DISMOUNT ==== | ||
+ | |||
+ | AX = 20FFh | ||
+ | Return: ??? | ||
+ | |||
+ | ==== INT 13 - QCACHE - FLUSH CACHE ==== | ||
+ | |||
+ | AH = 21h | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=25h, | ||
+ | |||
+ | ==== INT 13 - QCACHE - ENABLE/ | ||
+ | |||
+ | AH = 22h | ||
+ | AL = 00h disable cache | ||
+ | 01h enable cache | ||
+ | |||
+ | ==== INT 13 - QCACHE - SET SECTORS ==== | ||
+ | |||
+ | AH = 24h | ||
+ | BX = number of sectors | ||
+ | Return: ??? | ||
+ | |||
+ | ==== INT 13 - QCACHE - SET FLUSH INTERVAL ==== | ||
+ | |||
+ | AH = 25h | ||
+ | BC = interval | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=21h, | ||
+ | |||
+ | ==== INT 13 - QCACHE - INSTALLATION CHECK ==== | ||
+ | |||
+ | AH = 27h | ||
+ | BX = 0000h | ||
+ | Return: BX nonzero if installed | ||
+ | |||
+ | ==== INT 13 - QCACHE - SET BUFFER SIZE ==== | ||
+ | |||
+ | AH = 2Ah | ||
+ | AL = buffer size | ||
+ | Return: ??? | ||
+ | |||
+ | ==== INT 13 - QCACHE - SET BUFFERED WRITES ==== | ||
+ | |||
+ | AH = 2Ch | ||
+ | AL = state | ||
+ | 00h disable | ||
+ | 01h enable | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=2Dh | ||
+ | |||
+ | ==== INT 13 - QCACHE - SET BUFFERED READ ==== | ||
+ | |||
+ | AH = 2Dh | ||
+ | AL = state | ||
+ | 00h disable | ||
+ | 01h enable | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=2Ch | ||
+ | |||
+ | ==== INT 13 - QCACHE - SET FLUSH COUNT ==== | ||
+ | |||
+ | AH = 2Eh | ||
+ | BX = flush count | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=21h, | ||
+ | |||
+ | ==== INT 13 - QCACHE - GET INFO ==== | ||
+ | |||
+ | AH = 30h | ||
+ | AL = what to get | ||
+ | 00h system info | ||
+ | 01h drive info | ||
+ | DS:DX -> buffer for info | ||
+ | Return: ??? | ||
+ | |||
+ | ==== INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE??? ==== | ||
+ | |||
+ | AH = 70h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | formatting program) make this call, presumably to EDVR.SYS (the | ||
+ | partitioning driver) | ||
+ | SeeAlso: AH=ADh | ||
+ | |||
+ | ==== INT 13 - ??? ==== | ||
+ | |||
+ | AH = 75h | ||
+ | ??? | ||
+ | Return: AH = ??? | ||
+ | ??? | ||
+ | Note: | ||
+ | |||
+ | ==== INT 13 - ??? ==== | ||
+ | |||
+ | AH = 76h | ||
+ | ??? | ||
+ | Return: AH = ??? | ||
+ | ??? | ||
+ | Note: | ||
+ | |||
+ | ==== INT 13 - FAST! - API ==== | ||
+ | |||
+ | 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 | ||
+ | | ||
+ | 13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h | ||
+ | 04h 08h 15h (v4.04) | ||
+ | | ||
+ | |||
+ | ==== INT 13 - Super PC Kwik/ | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - Super PC Kwik/ | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - Super PC Kwik/ | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - Super PC Kwik/ | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - Super PC Kwik/ | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== INT 13 - Qualitas Qcache v4.00 - ??? ==== | ||
+ | |||
+ | 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: | ||
+ | SeeAlso: AX=8EEEh, | ||
+ | ----------138EEE----------------------------- | ||
+ | INT 13 - HyperDisk v4.01+ - ??? | ||
+ | AX = 8EEEh | ||
+ | Return: CF set | ||
+ | AX = CS of HyperDisk resident code | ||
+ | ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=8EEDh, | ||
+ | ----------138EEF----------------------------- | ||
+ | INT 13 - HyperDisk v4.01+ - ??? | ||
+ | AX = 8EEFh | ||
+ | Return: CF set | ||
+ | AX = CS of HyperDisk resident code | ||
+ | ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=8EEDh, | ||
+ | ----------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/ | ||
+ | ----------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/ | ||
+ | ----------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: | ||
+ | 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' | ||
+ | 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, | ||
+ | ----------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: | ||
+ | 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: | ||
+ | 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 | ||
+ | |||
+ | ===== INT 14 ===== | ||
+ | |||
+ | ==== INT 14 - SERIAL I/O- Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS) ==== | ||
+ | |||
+ | Note: the installation check for this driver is to determine whether the | ||
+ | " | ||
+ | ----------1400------------------------------- | ||
+ | INT 14 - SERIAL - INITIALIZE PORT | ||
+ | AH = 00h | ||
+ | AL = port parameters | ||
+ | bits 7-5 data rate (110, | ||
+ | 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: | ||
+ | since the PCjr supports a maximum of 4800 bps, attempting to set 9600 | ||
+ | bps will result in 4800 bps | ||
+ | SeeAlso: AH=04h" | ||
+ | SeeAlso: AH=82h" | ||
+ | ----------1400------------------------------- | ||
+ | INT 14 - FOSSIL (Fido/ | ||
+ | AH = 00h | ||
+ | AL = initializing parameters | ||
+ | 7 - 6 - 5 4 - 3 | ||
+ | -BAUD RATE- | ||
+ | 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" | ||
+ | ----------1400------------------------------- | ||
+ | INT 14 - MBBIOS - INITIALIZE PORT | ||
+ | AH = 00h | ||
+ | AL = port parameters | ||
+ | bits 7-5 data rate | ||
+ | (normally 110, | ||
+ | 9600, | ||
+ | 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: | ||
+ | SeeAlso: AH=04h" | ||
+ | ----------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, | ||
+ | ----------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, | ||
+ | ----------1402------------------------------- | ||
+ | INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT | ||
+ | AH = 02h | ||
+ | DX = port number (0-3) | ||
+ | Return: AL = character received | ||
+ | AH = 00h | ||
+ | SeeAlso: AH=01h, | ||
+ | ----------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, | ||
+ | ----------1404------------------------------- | ||
+ | INT 14 - SERIAL I/O - EXTENDED INITIALIZE (CONVERTIBLE, | ||
+ | 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, | ||
+ | ----------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" | ||
+ | ----------1404------------------------------- | ||
+ | INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT | ||
+ | AH = 04h | ||
+ | Return: port initialized; | ||
+ | established | ||
+ | Note: the port number is stored at offset BEh in the Task Control Block | ||
+ | (see INT 15/ | ||
+ | SeeAlso: AH=00h, | ||
+ | ----------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" | ||
+ | ----------1404------------------------------- | ||
+ | INT 14 - MBBIOS - INQUIRY | ||
+ | AH = 04h | ||
+ | Return: AH = AAh | ||
+ | AL = 55h | ||
+ | SeeAlso: AH=00h" | ||
+ | ----------1405------------------------------- | ||
+ | INT 14 - SERIAL I/O - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE, | ||
+ | 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, | ||
+ | ----------1405------------------------------- | ||
+ | INT 14 - FOSSIL - DEINITIALIZE DRIVER | ||
+ | AH = 05h | ||
+ | DX = port number | ||
+ | Return: none | ||
+ | DTR is not affected | ||
+ | SeeAlso: AH=00h, | ||
+ | ----------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, | ||
+ | SeeAlso: INT 15/ | ||
+ | ----------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" | ||
+ | ----------1405------------------------------- | ||
+ | INT 14 - MBBIOS - DROP DTR AND RTS | ||
+ | AH = 05h | ||
+ | DX = port number | ||
+ | Return: none | ||
+ | SeeAlso: AH=00h" | ||
+ | ----------1406------------------------------- | ||
+ | INT 14 - FOSSIL - RAISE/LOWER DTR | ||
+ | AH = 06h | ||
+ | DX = port | ||
+ | AL = DTR state to be set | ||
+ | 00h = lower | ||
+ | 01h = raise | ||
+ | SeeAlso: AH=05h" | ||
+ | ----------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, | ||
+ | SeeAlso: INT 15/ | ||
+ | ----------1406------------------------------- | ||
+ | INT 14 - MBBIOS - RAISE DTR AND RTS | ||
+ | AH = 06h | ||
+ | DX = port number | ||
+ | Return: none | ||
+ | SeeAlso: AH=05h" | ||
+ | ----------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, | ||
+ | SeeAlso: AH=23h" | ||
+ | ----------1407------------------------------- | ||
+ | INT 14 - MBBIOS - SEND BREAK | ||
+ | AH = 07h | ||
+ | DX = port number | ||
+ | Return: none | ||
+ | SeeAlso: AH=06h" | ||
+ | ----------1408------------------------------- | ||
+ | INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE | ||
+ | AH = 08h | ||
+ | DX = port number | ||
+ | SeeAlso: AH=09h" | ||
+ | ----------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; | ||
+ | it | ||
+ | SeeAlso: AH=03h, | ||
+ | ----------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, | ||
+ | ----------1408------------------------------- | ||
+ | INT 14 - MBBIOS - NON-DESTRUCTIVE READ | ||
+ | AH = 08h | ||
+ | DX = port number | ||
+ | Return: AL = character | ||
+ | AH = status (see AH=02h) | ||
+ | SeeAlso: AH=0Bh" | ||
+ | ----------1409------------------------------- | ||
+ | INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT | ||
+ | AH = 09h | ||
+ | DX = port number | ||
+ | SeeAlso: AH=08h" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------140A------------------------------- | ||
+ | INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT | ||
+ | AH = 0Ah | ||
+ | DX = port number | ||
+ | SeeAlso: AH=09h" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | |||
+ | Values for CH_KEY_RDY flag: | ||
+ | | ||
+ | | ||
+ | ----------140E------------------------------- | ||
+ | INT 14 - FOSSIL - KEYBOARD READ WITH WAIT | ||
+ | AH = 0Eh | ||
+ | Return: AX = xxyyh standard IBM-style scan code | ||
+ | SeeAlso: AH=0Dh" | ||
+ | ----------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" | ||
+ | ----------140F------------------------------- | ||
+ | INT 14 - FOSSIL - ENABLE/ | ||
+ | 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/ | ||
+ | 2: reserved | ||
+ | 3: xon/xoff on receive (send xoff when buffer near full) | ||
+ | 4-7: all 1 | ||
+ | DX = port number | ||
+ | SeeAlso: AH=09h" | ||
+ | ----------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" | ||
+ | ----------1410------------------------------- | ||
+ | INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF | ||
+ | AH = 10h | ||
+ | AL = bit mask | ||
+ | 0: enable/ | ||
+ | 1: enable/ | ||
+ | DX = port number | ||
+ | SeeAlso: AH=0Fh" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------1413------------------------------- | ||
+ | INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN | ||
+ | AH = 13h | ||
+ | AL = character | ||
+ | Note: | ||
+ | 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/ | ||
+ | AH = 16h | ||
+ | AL = function | ||
+ | 00h = delete | ||
+ | 01h = add | ||
+ | ES:DX -> routine to call | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | 0001h unsuccessful | ||
+ | SeeAlso: AH=07h" | ||
+ | ----------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" | ||
+ | |||
+ | 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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------141A------------------------------- | ||
+ | INT 14 - FOSSIL - BREAK BEGIN OR END | ||
+ | AH = 1Ah | ||
+ | AL = 00h stop sending ' | ||
+ | 01h start sending ' | ||
+ | DX = port number | ||
+ | SeeAlso: AH=06h" | ||
+ | ----------141A------------------------------- | ||
+ | INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/ | ||
+ | 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 (" | ||
+ | DX = 2030h (" 0") (X00 FOSSIL only) | ||
+ | |||
+ | Format of driver info: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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, | ||
+ | ----------141F------------------------------- | ||
+ | INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/ | ||
+ | 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, | ||
+ | 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, | ||
+ | ----------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" | ||
+ | ----------1420------------------------------- | ||
+ | INT 14 - MultiDOS Plus - INITIALIZE PORT | ||
+ | AH = 20h | ||
+ | AL = port parameters (see AH=00h" | ||
+ | DX = port number (0-3) | ||
+ | Return: AH = status | ||
+ | 00h successful | ||
+ | 41h no such port | ||
+ | 64h monitor mode already active | ||
+ | SeeAlso: AH=00h" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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: | ||
+ | SeeAlso: AH=20h" | ||
+ | ----------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" | ||
+ | ----------1422------------------------------- | ||
+ | INT 14 - MultiDOS Plus - RECEIVE CHARACTER | ||
+ | AH = 22h | ||
+ | DX = port number | ||
+ | Return: AH = status (see also AH=21h" | ||
+ | 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" | ||
+ | ----------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' | ||
+ | DL = owner' | ||
+ | SeeAlso: AH=20h" | ||
+ | ----------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, | ||
+ | ----------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: | ||
+ | SeeAlso: INT 17/AH=96h | ||
+ | |||
+ | Format of configuration table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS | ||
+ | | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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, | ||
+ | ----------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: | ||
+ | ----------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: | ||
+ | SeeAlso: AH=83h, | ||
+ | ----------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 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 0000h off | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------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, | ||
+ | |||
+ | Format of VFOSSIL information: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------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 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of video mode data structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | bit 0: clear if MDA, set otherwise | ||
+ | bit 1: graphics mode | ||
+ | bit 2: color disabled (black-and-white) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of video configuration data: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | 00h monochrome/ | ||
+ | 01h CGA | ||
+ | 02h EGA | ||
+ | 03h VGA | ||
+ | 07h 8514/A | ||
+ | | ||
+ | 00h monochrome | ||
+ | 01h color | ||
+ | 02h enhanced color | ||
+ | 09h 8514 | ||
+ | | ||
+ | |||
+ | Format of cursor type record: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Call VioGetMode with: | ||
+ | STACK: | ||
+ | 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: | ||
+ | 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: | ||
+ | DWORD pointer to video configuration data buffer (see above) | ||
+ | Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above) | ||
+ | |||
+ | Call VioWrtTTY with: | ||
+ | STACK: | ||
+ | WORD length of string | ||
+ | DWORD pointer to character string to be written to screen | ||
+ | Return: AX = error code (00h, 74h, 1B4h) (see above) | ||
+ | Notes: | ||
+ | in ANSI mode, ANSI control sequences are interpreted, | ||
+ | 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: | ||
+ | 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: | ||
+ | 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: | ||
+ | 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 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: | ||
+ | DWORD pointer to cursor type record (see above) | ||
+ | Return: AX = error code (00h, 74h, 1B4h) (see above) | ||
+ | |||
+ | Call VioSetCurType with: | ||
+ | STACK: | ||
+ | DWORD pointer to cursor type record (see above) | ||
+ | Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above) | ||
+ | |||
+ | Call VioScrollUp with: | ||
+ | STACK: | ||
+ | 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: | ||
+ | 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 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 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 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 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: | ||
+ | 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 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 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 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: | ||
+ | be removed from memory or reinitialized | ||
+ | SeeAlso: AX=8101h, | ||
+ | ----------148103----------------------------- | ||
+ | INT 14 - VIDEO FOSSIL - UNINSTALL | ||
+ | AX = 8103h | ||
+ | Return: AX = 1954h | ||
+ | Note: this is an extension to the VFOSSIL spec by Bob Hartman' | ||
+ | ----------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, | ||
+ | ----------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, | ||
+ | ----------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, | ||
+ | ----------1485------------------------------- | ||
+ | INT 14 - COURIERS.COM - FLUSH PENDING INPUT | ||
+ | AH = 85h | ||
+ | SeeAlso: AH=0Ah, | ||
+ | ----------1486------------------------------- | ||
+ | INT 14 - COURIERS.COM - START OUTPUT | ||
+ | AH = 86h | ||
+ | ES:BX -> output buffer | ||
+ | CX = length of output buffer | ||
+ | SeeAlso: AH=19h, | ||
+ | ----------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, | ||
+ | ----------1489------------------------------- | ||
+ | INT 14 - COURIERS.COM - SEND SINGLE CHARACTER | ||
+ | AH = 89h | ||
+ | CL = character to send | ||
+ | SeeAlso: AH=01h, | ||
+ | ----------148A------------------------------- | ||
+ | INT 14 - COURIERS.COM - SEND BREAK | ||
+ | AH = 8Ah | ||
+ | SeeAlso: AH=89h, | ||
+ | ----------148C------------------------------- | ||
+ | INT 14 - COURIERS.COM - SET SPEED | ||
+ | AH = 8Ch | ||
+ | BX = speed in bps | ||
+ | SeeAlso: AH=00h, | ||
+ | ----------148D------------------------------- | ||
+ | INT 14 - COURIERS.COM - DECONFIGURE PORT | ||
+ | AH = 8Dh | ||
+ | SeeAlso: AH=82h" | ||
+ | ----------14A0------------------------------- | ||
+ | INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT | ||
+ | AH = A0h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=A1h" | ||
+ | ----------14A0--CXFFFF----------------------- | ||
+ | INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/ | ||
+ | AH = A0h | ||
+ | CX = FFFFh | ||
+ | Return: CF clear if successful | ||
+ | AX = 5445h (' | ||
+ | CX <> FFFFh | ||
+ | DX = port number | ||
+ | CF set on error | ||
+ | Note: TES is a network serial port emulation program | ||
+ | SeeAlso: AH=A1h" | ||
+ | ----------14A1------------------------------- | ||
+ | INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT | ||
+ | AH = A1h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=A0h" | ||
+ | ----------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" | ||
+ | |||
+ | Format of status array entry: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | ----------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" | ||
+ | ----------14A3------------------------------- | ||
+ | INT 14 - Interconnections Inc. TES - START A NEW SESSION | ||
+ | AH = A3h | ||
+ | ES:SI -> ??? | ||
+ | Return: CF clear if successful | ||
+ | AX = 5445h (' | ||
+ | CX <> FFFFh | ||
+ | DX = port number | ||
+ | CF set on error | ||
+ | SeeAlso: AH=A1h" | ||
+ | ----------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, | ||
+ | ----------14A4------------------------------- | ||
+ | INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION | ||
+ | AH = A4h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=A3h" | ||
+ | ----------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, | ||
+ | ----------14A5------------------------------- | ||
+ | INT 14 - Interconnections Inc. TES - RESUME A SESSION | ||
+ | AH = A5h | ||
+ | AL = session number | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=A4h" | ||
+ | ----------14A6------------------------------- | ||
+ | INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK | ||
+ | AH = A6h | ||
+ | DH = session number (00h) | ||
+ | SeeAlso: AH=1Ah, | ||
+ | ----------14A6------------------------------- | ||
+ | INT 14 - Interconnections Inc. TES - DROP A SESSION | ||
+ | AH = A6h | ||
+ | AL = session number | ||
+ | Return: AH = status | ||
+ | 00h successful | ||
+ | else error | ||
+ | SeeAlso: AH=A3h" | ||
+ | ----------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" | ||
+ | ----------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/ | ||
+ | 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, | ||
+ | ----------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, | ||
+ | ----------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, | ||
+ | ----------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, | ||
+ | --------------------------------------------- | ||
+ | ===== INT 15 ===== | ||
+ | |||
+ | ==== Microsoft TSR Specification ==== | ||
+ | |||
+ | No additional information available at this time. | ||
+ | |||
+ | ==== 00h - CASSETTE - TURN ON TAPE DRIVE' | ||
+ | |||
+ | AH = 00h | ||
+ | Return: CF set on error | ||
+ | AH = 86h no cassette present | ||
+ | CF clear if successful | ||
+ | SeeAlso: AH=01h" | ||
+ | |||
+ | ==== 00h - Amstrad PC1512 - GET AND RESET MOUSE COUNTS ==== | ||
+ | |||
+ | 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" | ||
+ | ----------1501------------------------------- | ||
+ | INT 15 - CASSETTE - TURN OFF TAPE DRIVE' | ||
+ | AH = 01h | ||
+ | Return: CF set on error | ||
+ | AH = 86h no cassette present | ||
+ | CF clear if successful | ||
+ | SeeAlso: AH=00h" | ||
+ | ----------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" | ||
+ | |||
+ | Format of NVRAM: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | bit 7: IRQF flag | ||
+ | 6: PF flag | ||
+ | 5: AF flag | ||
+ | 4: UF flag | ||
+ | | ||
+ | bit 7: battery good | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 28h 24 BYTEs available for user application | ||
+ | Note: bytes 00h-0Dh are the same on the IBM AT as they are used/ | ||
+ | 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 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Return: DX:AX??? -> IRP structure or 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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------1502------------------------------- | ||
+ | INT 15 - VMiX - MEMORY OBJECT MANAGER | ||
+ | AH = 02h | ||
+ | STACK: | ||
+ | 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" | ||
+ | ----------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" | ||
+ | CX = 0000h | ||
+ | SeeAlso: AH=00h" | ||
+ | ----------1503------------------------------- | ||
+ | INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER | ||
+ | AH = 03h | ||
+ | AL = value (I,R,G,B bits) | ||
+ | SeeAlso: AH=04h" | ||
+ | ----------1503------------------------------- | ||
+ | INT 15 - VMiX - PROMPTED CONSOLE INPUT | ||
+ | AH = 03h | ||
+ | STACK: | ||
+ | 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" | ||
+ | ----------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" | ||
+ | |||
+ | Format of ABIOS System Parameter Table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 0Eh 16 BYTEs reserved | ||
+ | | ||
+ | ----------1504------------------------------- | ||
+ | INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER | ||
+ | AH = 04h | ||
+ | AL = value (RDSEL1 and RDSEL0) | ||
+ | SeeAlso: AH=03h" | ||
+ | ----------1504------------------------------- | ||
+ | INT 15 - VMiX - VPRINTF | ||
+ | AH = 04h | ||
+ | STACK: | ||
+ | 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" | ||
+ | ----------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" | ||
+ | |||
+ | Format of one entry of ABIOS Initialization Table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------1505------------------------------- | ||
+ | INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER | ||
+ | AH = 05h | ||
+ | AL = value (I,R,G,B bits) | ||
+ | SeeAlso: AH=04h" | ||
+ | ----------1505------------------------------- | ||
+ | INT 15 - VMiX - GET PROCESS ID OF CURRENT PROCESS | ||
+ | AH = 05h | ||
+ | Return: AX = process ID | ||
+ | SeeAlso: AH=06h" | ||
+ | ----------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" | ||
+ | ----------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: | ||
+ | Return: DX:AX??? -> process control block | ||
+ | SeeAlso: AH=07h" | ||
+ | ----------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' | ||
+ | and the remainder is lost | ||
+ | SeeAlso: AH=04h" | ||
+ | ----------1507------------------------------- | ||
+ | INT 15 - VMiX - GET POINTER TO OBJECT CONTROL BLOCK | ||
+ | AH = 07h | ||
+ | STACK: | ||
+ | Return: DX:AX??? -> object control block | ||
+ | SeeAlso: AH=06h" | ||
+ | ----------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: | ||
+ | SeeAlso: AH=08h" | ||
+ | ----------1508------------------------------- | ||
+ | INT 15 - VMiX - GET CHANNEL CONTROL BLOCK | ||
+ | AH = 08h | ||
+ | STACK: | ||
+ | Return: DX:AX??? -> channel control block | ||
+ | SeeAlso: AH=06h" | ||
+ | ----------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' | ||
+ | SeeAlso: AH=07h" | ||
+ | ----------1509------------------------------- | ||
+ | INT 15 - VMiX - GET ID OF QUEUED ELEMENT | ||
+ | AH = 09h | ||
+ | STACK: | ||
+ | WORD subqueue ID | ||
+ | Return: AX = ID | ||
+ | SeeAlso: AH=0Ah" | ||
+ | ----------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" | ||
+ | ----------150A------------------------------- | ||
+ | INT 15 - VMiX - GET ID OF NEXT QUEUED ELEMENT | ||
+ | AH = 0Ah | ||
+ | STACK: | ||
+ | WORD ID of current element in queue chain | ||
+ | Return: AX = ID of next element | ||
+ | SeeAlso: AH=09h" | ||
+ | ----------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" | ||
+ | ----------150B------------------------------- | ||
+ | INT 15 - VMiX - GET TOTAL NUMBER OF ACTIVE PROCESSES | ||
+ | AH = 0Bh | ||
+ | Return: AX = number of active processes | ||
+ | SeeAlso: AH=05h" | ||
+ | ----------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' | ||
+ | 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" | ||
+ | |||
+ | ==== 0Ch - VMiX - GET POINTER TO PROCESS TSS STACK ==== | ||
+ | |||
+ | AH = 0Ch | ||
+ | STACK: | ||
+ | Return: DX:AX??? -> TSS stack store | ||
+ | |||
+ | ==== 0Ch - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY ==== | ||
+ | |||
+ | AH = 0Ch | ||
+ | Note: | ||
+ | unless AH=0Bh has been called first | ||
+ | SeeAlso: AH=0Bh" | ||
+ | |||
+ | ==== 0Dh - VMiX - START A CHILD PROCESS JOB SHELL ==== | ||
+ | |||
+ | AH = 0Dh | ||
+ | STACK: | ||
+ | followed by standard VMiX shell command string | ||
+ | Return: AX = status | ||
+ | SeeAlso: AH=0Eh" | ||
+ | ----------150D------------------------------- | ||
+ | INT 15 - MultiDOS Plus - DISABLE MULTITASKING | ||
+ | AH = 0Dh | ||
+ | Note: | ||
+ | allows time-critical events or nonreentrant code to be processed | ||
+ | SeeAlso: AH=0Eh" | ||
+ | ----------150E------------------------------- | ||
+ | INT 15 - VMiX - TERMINATE PROCESS | ||
+ | AH = 0Eh | ||
+ | STACK: | ||
+ | Return: AX = status | ||
+ | SeeAlso: AH=0Bh" | ||
+ | ----------150E------------------------------- | ||
+ | INT 15 - MultiDOS Plus - ENABLE MULTITASKING | ||
+ | AH = 0Eh | ||
+ | SeeAlso: AH=0Dh" | ||
+ | ----------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: | ||
+ | SeeAlso: INT 13/AH=1Ah | ||
+ | ----------150F------------------------------- | ||
+ | INT 15 - VMiX - GET KEY FIELD OF QUEUED ELEMENT | ||
+ | AH = 0Fh | ||
+ | STACK: | ||
+ | WORD ID of element in queue chain | ||
+ | Return: AX = key | ||
+ | SeeAlso: AH=0Ah" | ||
+ | ----------150F------------------------------- | ||
+ | INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND | ||
+ | AH = 0Fh | ||
+ | DS:BX -> ASCIZ command | ||
+ | Return: after command has been processed | ||
+ | Notes: | ||
+ | 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: | ||
+ | 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" | ||
+ | ----------151000----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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" | ||
+ | SeeAlso: INT 60/ | ||
+ | ----------151001----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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, | ||
+ | ----------151002----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | AX = 1002h | ||
+ | ES:DI -> previously allocated block | ||
+ | Return: block freed | ||
+ | SeeAlso: AX=1001h, | ||
+ | ----------151003----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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 " | ||
+ | ----------151013----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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, | ||
+ | Note: only a few TopView/ | ||
+ | interrupt; if other calls need to be made, the interrupt handler | ||
+ | must schedule a 2nd-level interrupt with " | ||
+ | ----------151014----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | AX = 1014h | ||
+ | BX = bit mask from INT 15/AX=1013h | ||
+ | SeeAlso: AX=1013h, | ||
+ | ----------151015----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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, | ||
+ | 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 - " | ||
+ | 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, | ||
+ | ----------151017----------------------------- | ||
+ | INT 15 - TopView - UNIMPLEMENTED IN DV 2.x | ||
+ | AX = 1017h | ||
+ | Return: pops up " | ||
+ | ----------151018----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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 | ||
+ | | ||
+ | = 0000h no window | ||
+ | SeeAlso: AX=1023h, | ||
+ | ----------151019----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | AX = 1019h | ||
+ | BX = frequency in Hertz (0000h = silence) | ||
+ | CX = duration in clock ticks (18.2 ticks/sec) | ||
+ | Return: immediately, | ||
+ | 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 - " | ||
+ | AX = 101Ah | ||
+ | Return: stack switched | ||
+ | Notes: this call may not be nested; a second call must be preceded by a call | ||
+ | to " | ||
+ | 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 - " | ||
+ | AX = 101Bh | ||
+ | Return: task-switching temporarily disabled | ||
+ | Notes: will not task-switch until " | ||
+ | voluntarily releases the CPU (upon regaining the CPU, task-switching | ||
+ | will again be disabled) | ||
+ | suspends the caller until DOS is free | ||
+ | SeeAlso: AH=0Dh" | ||
+ | SeeAlso: INT 60/DI=0602h | ||
+ | ----------15101C----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | AX = 101Ch | ||
+ | Return: task-switching enabled | ||
+ | Note: this API call may be made from within a hardware interrupt handler | ||
+ | SeeAlso: AX=101Bh, | ||
+ | ----------15101D----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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 " | ||
+ | BUG: in DV 2.00, this function is ignored unless the indicated task is the | ||
+ | current task | ||
+ | SeeAlso: AX=101Eh, | ||
+ | ----------15101E----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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 " | ||
+ | SeeAlso: AX=101Dh, | ||
+ | ----------15101F----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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: | ||
+ | ----------151020----------------------------- | ||
+ | INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+ | ||
+ | AX = 1020h | ||
+ | Return: pops up " | ||
+ | ----------151021----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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 - " | ||
+ | AX = 1022h | ||
+ | BX = 0000h | ||
+ | Return: BX nonzero, TopView or compatible loaded | ||
+ | (BL = major version, BH = minor version) | ||
+ | Notes: | ||
+ | ----------151023----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | AX = 1023h | ||
+ | BX = segment of object handle for parent window within which to | ||
+ | | ||
+ | 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 - " | ||
+ | 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/ | ||
+ | ----------151025----------------------------- | ||
+ | INT 15 - TopView - " | ||
+ | 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??? | ||
+ | AH = 10h | ||
+ | AL = 26h thru 2Ah | ||
+ | Return: pops up " | ||
+ | ----------15102B----------------------------- | ||
+ | INT 15 - DESQview v2.00+ (TopView??? | ||
+ | AX = 102Bh | ||
+ | BX = segment of object handle for task | ||
+ | Return: nothing | ||
+ | Note: | ||
+ | the handle for the task on the objectq | ||
+ | SeeAlso: AX=101Dh, | ||
+ | ----------15102C----------------------------- | ||
+ | INT 15 - DESQview v2.00+ (TopView??? | ||
+ | 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 | ||
+ | | ||
+ | | ||
+ | 02h 30 BYTEs blank-padded program title | ||
+ | | ||
+ | | ||
+ | 24h 64 BYTEs ASCIZ program pathname | ||
+ | | ||
+ | 65h 64 BYTEs ASCIZ default directory name | ||
+ | A5h 64 BYTEs ASCIZ program parameters | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 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 " | ||
+ | bit 3: foreground-only when doing graphics | ||
+ | bit 2: don't virtualize | ||
+ | bit 1: ??? set by DV 2.31 when "Runs in Background" | ||
+ | 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??? | ||
+ | 19Ch 4 BYTEs | ||
+ | 1A0h N BYTEs | ||
+ | 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, | ||
+ | 03h N BYTEs ASCII data | ||
+ | ----------15102D----------------------------- | ||
+ | INT 15 - DESQview v2.00+ - " | ||
+ | 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: | ||
+ | request (max len = 127) | ||
+ | Return: AX = status | ||
+ | ----------1511------------------------------- | ||
+ | INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE | ||
+ | AH = 11h | ||
+ | Note: | ||
+ | SeeAlso: AH=12h" | ||
+ | ----------151117BX0000----------------------- | ||
+ | INT 15 - DESQview v2.20+ - " | ||
+ | AX = 1117h | ||
+ | BX = 0000h get current mapping context without setting | ||
+ | | ||
+ | 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; | ||
+ | a mapping context ensures that the associated program and data areas | ||
+ | are in memory for access. | ||
+ | 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, | ||
+ | ----------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 | ||
+ | " | ||
+ | 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: | ||
+ | Return: AX = status | ||
+ | SeeAlso: AH=03h" | ||
+ | ----------1512------------------------------- | ||
+ | INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE | ||
+ | AH = 12h | ||
+ | Note: | ||
+ | SeeAlso: AH=11h" | ||
+ | ----------1512--BH00------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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' | ||
+ | 03h current task's mailbox handle | ||
+ | 04h given task's keyboard handle (task' | ||
+ | 05h current task's keyboard object handle | ||
+ | 06h given task's OBJECTQ handle (task' | ||
+ | 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: | ||
+ | mailbox, panel, pointer, and timer objects) or is an orphan (task, | ||
+ | window) | ||
+ | ----------1512--BH01------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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' | ||
+ | 03h (DV 2.0x only) current task's mailbox | ||
+ | 04h (DV 2.0x only) given task's keyboard (task' | ||
+ | 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/ | ||
+ | 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/ | ||
+ | ----------1512--BH02------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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' | ||
+ | 03h current task's mailbox | ||
+ | 04h given task's keyboard (task' | ||
+ | 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/ | ||
+ | ----------1512--BH03------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | AH = 12h | ||
+ | BH = 03h | ||
+ | BL = object | ||
+ | 00h mailbox handle in DWORD on top of stack | ||
+ | 02h sender of last msg read from mailbox (task' | ||
+ | 03h sender of last msg read from current task's mailbox | ||
+ | Return: DWORD on stack is task handle of message sender | ||
+ | SeeAlso: AH=12h/ | ||
+ | ----------1512--BH03------------------------- | ||
+ | INT 15 - DESQview v2.26+ - " | ||
+ | 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 - " | ||
+ | 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 | ||
+ | | ||
+ | | ||
+ | | ||
+ | 8 BYTEs blank-padded panel name | ||
+ | DWORD panel offset in file | ||
+ | WORD panel length | ||
+ | data for panels (each consists of one or more window/ | ||
+ | streams) | ||
+ | first byte of each panel must be 1Bh, fifth byte must be E5h | ||
+ | ----------1512--BH04------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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 address of buffer | ||
+ | Notes: | ||
+ | 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/ | ||
+ | ----------1512--BH04------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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' | ||
+ | 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 | ||
+ | | ||
+ | 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/ | ||
+ | |||
+ | Format of pointer message: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | bit 6: set when press/ | ||
+ | bits 7-2: number of clicks-1 if multiple-click mode active | ||
+ | bits 1,0: button pressed (00=none, | ||
+ | | ||
+ | ----------1512--BX0400----------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | AH = 12h | ||
+ | BX = 0400h | ||
+ | STACK: DWORD timer' | ||
+ | Return: after timer expires | ||
+ | STACK: DWORD time in 1/100 sec after midnight when timer expired | ||
+ | ----------1512--BX0400----------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | AH = 12h | ||
+ | BX = 0400h | ||
+ | STACK: DWORD handle of panel object | ||
+ | DWORD 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: | ||
+ | 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' | ||
+ | newly-created keyboard object. | ||
+ | to obtain input from the panel. | ||
+ | ----------1512--BH05------------------------ | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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/ | ||
+ | 03h send message by value/ | ||
+ | 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 address | ||
+ | (if keyboard) DWORD status (scan code in keystroke mode) | ||
+ | DWORD length (should be 1 in keystroke mode) | ||
+ | DWORD address | ||
+ | (if objectq) | ||
+ | (if timer) | ||
+ | only accurate to 1/18 sec) | ||
+ | (if pointer) | ||
+ | DWORD row relative to origin of window | ||
+ | Notes: | ||
+ | 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/ | ||
+ | ----------1512--BH05------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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 | ||
+ | | ||
+ | b. CR/ | ||
+ | c. ESC starts a data structure with additional commands if following | ||
+ | byte is less than 20h; otherwise, it is written to the window | ||
+ | STACK: | ||
+ | else nothing | ||
+ | |||
+ | Data Structure: | ||
+ | MAGIC | ||
+ | MODE | ||
+ | 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) " | ||
+ | Opcodes: | ||
+ | 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/ | ||
+ | BYTE compatibility/ | ||
+ | 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 | ||
+ | | ||
+ | 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 # | ||
+ | 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/ | ||
+ | CFh scroll attributes when using E8h-EBh/ | ||
+ | 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 | ||
+ | | ||
+ | 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 " | ||
+ | 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 ' | ||
+ | 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 | ||
+ | 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-& | ||
+ | keystroke (only if two-key menus enabled) | ||
+ | BYTE (select field only) normal color of field | ||
+ | BYTE second key for select field. | ||
+ | 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. | ||
+ | | ||
+ | |||
+ | MODE 01h "QUERY STREAM" | ||
+ | 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 | ||
+ | | ||
+ | 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 " | ||
+ | 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" | ||
+ | 07h allow "Hide Window" | ||
+ | 08h allow application to be suspended (" | ||
+ | 0Eh allow " | ||
+ | 10h allow DESQview main menu to be popped up | ||
+ | 11h allow " | ||
+ | 12h allow "Open Window" | ||
+ | 13h allow " | ||
+ | 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 "?" | ||
+ | 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 " | ||
+ | 4Eh notify if " | ||
+ | 4Fh notify if " | ||
+ | 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' | ||
+ | |||
+ | 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 | ||
+ | | ||
+ | Opcode | ||
+ | | ||
+ | DWORD object handle of window | ||
+ | BYTE new row | ||
+ | BYTE new col | ||
+ | | ||
+ | DWORD object handle of window | ||
+ | BYTE new row | ||
+ | BYTE new col | ||
+ | | ||
+ | DWORD object handle of window | ||
+ | BYTE new rows | ||
+ | BYTE new cols | ||
+ | | ||
+ | DWORD object handle of window | ||
+ | BYTE new rows | ||
+ | BYTE new cols | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | DWORD object handle of window | ||
+ | BYTE mouse pointer row | ||
+ | BYTE mouse pointer column | ||
+ | BYTE field mouse is on, 0 if none | ||
+ | | ||
+ | | ||
+ | DWORD object handle of window | ||
+ | BYTE mouse pointer row | ||
+ | BYTE mouse pointer column | ||
+ | BYTE field mouse is on, 0 if none | ||
+ | | ||
+ | DWORD pointer handle which received message | ||
+ | | ||
+ | | ||
+ | | ||
+ | BYTE new BIOS video mode | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | | ||
+ | Return: all registers unchanged | ||
+ | ----------1512--BH06------------------------- | ||
+ | INT 15 - DESQview 2.20+ - SEND MESSAGE - " | ||
+ | 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' | ||
+ | 05h current task's default keyboard | ||
+ | STACK: DWORD new priority of object in task's OBJECTQ | ||
+ | Notes: | ||
+ | relative adjustments to this default value. | ||
+ | when changing priorities, all objects already on the objectq are | ||
+ | reordered | ||
+ | SeeAlso: AH=12h/ | ||
+ | ----------1512--BH07------------------------- | ||
+ | INT 15 - DESQview 2.20+ - SEND MESSAGE - " | ||
+ | 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' | ||
+ | 05h current task's default keyboard | ||
+ | Return: STACK: DWORD object priority | ||
+ | Note: | ||
+ | relative adjustments to this default value. | ||
+ | SeeAlso: AH=12h/ | ||
+ | ----------1512--BH08------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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' | ||
+ | 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' | ||
+ | 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/ | ||
+ | ----------1512--BH09------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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/ | ||
+ | ----------1512--BH0A------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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 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/ | ||
+ | ----------1512--BH0A------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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 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/ | ||
+ | ----------1512--BH0A------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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) | ||
+ | | ||
+ | SeeAlso: AH=12h/ | ||
+ | |||
+ | 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 | ||
+ | | ||
+ | ----------1512--BH0B------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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 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/ | ||
+ | ----------1512--BH0B------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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 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/ | ||
+ | ----------1512--BH0B------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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: | ||
+ | Note: | ||
+ | ----------1512--BH0B------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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: | ||
+ | SeeAlso: AH=12h/ | ||
+ | ----------1512--BH0C------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | AH = 12h | ||
+ | BH = 0Ch | ||
+ | BL = object | ||
+ | 00h handle is DWORD on top of stack | ||
+ | window: | ||
+ | keyboard: attach to a window | ||
+ | timer: | ||
+ | pointer: | ||
+ | panel: | ||
+ | 01h fill task's default window with given char from scrl org to end | ||
+ | 02h open given task's mailbox for input (task' | ||
+ | 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' | ||
+ | 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) | ||
+ | (if keyboard) DWORD handle of window to attach to | ||
+ | (if pointer) | ||
+ | (if panel) | ||
+ | DWORD address of filename or resident panel | ||
+ | (otherwise) | ||
+ | Notes: if first byte of panel file name is 1Bh, then the " | ||
+ | if first two bytes of panel file " | ||
+ | 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/ | ||
+ | ----------1512--BH0D------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | AH = 12h | ||
+ | BH = 0Dh | ||
+ | BL = object | ||
+ | 00h handle is DWORD on top of stack | ||
+ | timer: | ||
+ | keyboard: detach from window and discard queued input | ||
+ | pointer: | ||
+ | panel: | ||
+ | mailbox: | ||
+ | 02h close given task's mailbox (task' | ||
+ | 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' | ||
+ | 07h close current task's OBJECTQ | ||
+ | Notes: when an OBJECTQ is closed, each object in the OBJECTQ is sent an | ||
+ | ERASE message (AH=12h/ | ||
+ | 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/ | ||
+ | ----------1512--BH0E------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | AH = 12h | ||
+ | BH = 0Eh | ||
+ | BL = object | ||
+ | 00h handle is DWORD on top of stack | ||
+ | window: | ||
+ | keyboard: discard input | ||
+ | timer: | ||
+ | pointer: | ||
+ | mailbox: | ||
+ | 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' | ||
+ | 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/ | ||
+ | ----------1512--BH0F------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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 | ||
+ | 95h not enough memory to open panel file > that the panel was | ||
+ | 98h null panel file name / | ||
+ | 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/ | ||
+ | ----------1512--BH10------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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' | ||
+ | 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 - " | ||
+ | AH = 12h | ||
+ | BH = 11h | ||
+ | BL = window for which to move cursor | ||
+ | 00h window' | ||
+ | 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 - " | ||
+ | AH = 12h | ||
+ | BH = 11h | ||
+ | BL = mailbox to name | ||
+ | 00h DWORD on top of stack is mailbox handle | ||
+ | 02h use given task's mailbox (task' | ||
+ | 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 - " | ||
+ | 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/ | ||
+ | ----------1512--BH12------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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: | ||
+ | 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/ | ||
+ | ----------1512--BX1200----------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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/ | ||
+ | ----------1512--BH13------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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/ | ||
+ | ----------1512--BX1300----------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | AH = 12h | ||
+ | BX = 1300h | ||
+ | STACK: DWORD object handle for pointer | ||
+ | DWORD character to use for pointer | ||
+ | ----------1512--BH14------------------------- | ||
+ | INT 15 - TopView - SEND MESSAGE - " | ||
+ | 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 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' | ||
+ | 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 - " | ||
+ | AH = 12h | ||
+ | BH = 14h | ||
+ | BL = object | ||
+ | 00h mailbox handle is DWORD on top of stack | ||
+ | 02h use given task's mailbox (task' | ||
+ | 03h use current task's default mailbox | ||
+ | Note: | ||
+ | access may be requested multiple times, and requires multiple CLOSEs | ||
+ | SeeAlso: AH=12h/ | ||
+ | ----------1512--BH15------------------------- | ||
+ | INT 15 - DESQview v2.20+ - SEND MESSAGE - " | ||
+ | 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/ | ||
+ | ----------1512--BH16------------------------- | ||
+ | INT 15 - DESQview v2.20+ - SEND MESSAGE - " | ||
+ | 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/ | ||
+ | ----------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: | ||
+ | Return: AX = status | ||
+ | SeeAlso: AH=12h" | ||
+ | ----------1513------------------------------- | ||
+ | INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK | ||
+ | AH = 13h | ||
+ | Return: BX:AX -> task control block (see below) | ||
+ | SeeAlso: AH=15h" | ||
+ | |||
+ | Format of MultiDOS Plus v4.0 task control block: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 31h 16 BYTEs eight cursor positions | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 88h 16 BYTEs request header for DOS driver calls | ||
+ | 98h 14 BYTEs ??? | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | AEh 12 BYTEs ??? | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | D2h 414 BYTEs DOS current disk and directory context (optional) | ||
+ | ----------1514------------------------------- | ||
+ | INT 15 - VMiX - CLEAR WINDOW | ||
+ | AH = 14h | ||
+ | STACK: | ||
+ | WORD bottom right corner of window | ||
+ | Return: AX = status | ||
+ | SeeAlso: AH=15h" | ||
+ | ----------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" | ||
+ | ----------1515------------------------------- | ||
+ | INT 15 - VMiX - SET BANNER WINDOW MESSAGE | ||
+ | AH = 15h | ||
+ | STACK: | ||
+ | Return: AX = status | ||
+ | SeeAlso: AH=14h" | ||
+ | ----------1515------------------------------- | ||
+ | INT 15 - MultiDOS Plus - GET SYSTEM BLOCK | ||
+ | AH = 15h | ||
+ | Return: BX:AX -> system block (see below) | ||
+ | SeeAlso: AH=13h" | ||
+ | |||
+ | Format of MultiDOS Plus 4.0 system block: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------1516------------------------------- | ||
+ | INT 15 - VMiX - SET ROOT WINDOW SIZE AND HOME CURSOR | ||
+ | AH = 16h | ||
+ | STACK: | ||
+ | WORD top left corner of window | ||
+ | WORD bottom right corner of window | ||
+ | Return: AX = status | ||
+ | SeeAlso: AH=17h" | ||
+ | ----------1516------------------------------- | ||
+ | INT 15 - MultiDOS Plus - INITIALIZATION | ||
+ | AH = 16h | ||
+ | Note: used internally during initialization; | ||
+ | unpredicatable results | ||
+ | ----------1517------------------------------- | ||
+ | INT 15 - VMiX - GET CONSOLE WINDOW COLORS | ||
+ | AH = 17h | ||
+ | Return: AH = foreground color | ||
+ | AL = background color | ||
+ | SeeAlso: AH=16h" | ||
+ | ----------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" | ||
+ | ----------1518------------------------------- | ||
+ | INT 15 - VMiX - SET CONSOLE COLORS | ||
+ | AH = 18h | ||
+ | STACK: | ||
+ | Return: AX = color | ||
+ | SeeAlso: AH=17h" | ||
+ | ----------1518------------------------------- | ||
+ | INT 15 - MultiDOS Plus - UNMAP IRQ | ||
+ | AH = 18h | ||
+ | AL = IRQ to unmap (01h-0Fh) | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | 0001h invalid IRQ | ||
+ | Note: | ||
+ | SeeAlso: AH=17h" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | ----------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" | ||
+ | equivalent to AH=1Ah followed by AH=01h | ||
+ | SeeAlso: AH=01h" | ||
+ | ----------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" | ||
+ | equivalent to AH=1Ah followed by AH=02h | ||
+ | SeeAlso: AH=02h" | ||
+ | ----------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" | ||
+ | equivalent to AH=1Ah followed by AH=10h | ||
+ | SeeAlso: AH=10h" | ||
+ | ----------151E------------------------------- | ||
+ | INT 15 - VMiX v2+ - ??? | ||
+ | AH = 1Eh | ||
+ | STACK: WORD ??? | ||
+ | Return: ??? | ||
+ | ----------151E00----------------------------- | ||
+ | INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER | ||
+ | AX = 1E00h | ||
+ | DX = event/ | ||
+ | Return: AH = status | ||
+ | 00h successful | ||
+ | SeeAlso: AX=1E01h, | ||
+ | ----------151E01----------------------------- | ||
+ | INT 15 - MultiDOS Plus - TRIGGER EVENT | ||
+ | AX = 1E01h | ||
+ | DX = event/ | ||
+ | Return: AH = status | ||
+ | 00h successful | ||
+ | 01h invalid event/ | ||
+ | Notes: | ||
+ | counter is incremented (and will roll over if it was 65535) | ||
+ | may be invoked by interrupt handler | ||
+ | SeeAlso: AX=1E00h, | ||
+ | ----------151E02----------------------------- | ||
+ | INT 15 - MultiDOS Plus - WAIT FOR EVENT | ||
+ | AX = 1E02h | ||
+ | DX = event/ | ||
+ | Return: AH = status | ||
+ | 00h successful | ||
+ | 01h invalid event/ | ||
+ | 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, | ||
+ | ----------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" | ||
+ | ----------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, | ||
+ | AX = 2010h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=2011h | ||
+ | ----------152011----------------------------- | ||
+ | INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT, | ||
+ | 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: | ||
+ | ----------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, | ||
+ | ----------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, | ||
+ | ----------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, | ||
+ | ----------1543------------------------------- | ||
+ | INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE) | ||
+ | AH = 43h | ||
+ | Return: AL = status bits | ||
+ | bit 0: LCD detached | ||
+ | bit 1: reserved | ||
+ | bit 2: RS232/ | ||
+ | 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/ | ||
+ | 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, | ||
+ | ----------154601----------------------------- | ||
+ | INT 15 - Compaq SLT/286 - Modify Power Conservation/ | ||
+ | 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, | ||
+ | ----------154DD4----------------------------- | ||
+ | INT 15 - HP 95LX - INSTALLATION CHECK | ||
+ | AX = 4DD4h | ||
+ | Return: BX = 4850h (" | ||
+ | CX = ??? (0101h) | ||
+ | DL = ??? (00h) | ||
+ | SeeAlso: INT 0B"HP 95LX", | ||
+ | SeeAlso: INT 61"HP 95LX" | ||
+ | ----------154E------------------------------- | ||
+ | INT 15 - HP 95LX - ENABLE/ | ||
+ | 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", | ||
+ | ----------154F------------------------------- | ||
+ | INT 15 - OS HOOK - KEYBOARD INTERCEPT (AT model 3x9, | ||
+ | AH = 4Fh | ||
+ | AL = hardware scan code | ||
+ | CF set | ||
+ | Return: CF set | ||
+ | AL = hardware scan code | ||
+ | CF clear | ||
+ | scan code should be ignored | ||
+ | Note: | ||
+ | not examine the scan code it reads from the keyboard until after | ||
+ | this function returns. | ||
+ | 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 (" | ||
+ | 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: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------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, | ||
+ | ----------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, | ||
+ | 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, | ||
+ | ----------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, | ||
+ | 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; | ||
+ | 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, | ||
+ | ----------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, | ||
+ | ----------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, | ||
+ | ----------155306----------------------------- | ||
+ | INT 15 - Advanced Power Management Specification - CPU BUSY | ||
+ | AX = 5306h | ||
+ | Return: CF clear | ||
+ | Notes: | ||
+ | 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, | ||
+ | Note: | ||
+ | reentrance problems | ||
+ | |||
+ | Values for device IDs: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------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' | ||
+ | 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, | ||
+ | ----------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' | ||
+ | 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/ | ||
+ | ----------155308BXFFFF----------------------- | ||
+ | INT 15 - Advanced Power Management Spec - ENABLE/ | ||
+ | AX = 5308h | ||
+ | BX = FFFFh | ||
+ | CX = new state | ||
+ | 0000h disabled | ||
+ | 0001h enabled | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AH = error code (01h, | ||
+ | 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: | ||
+ | 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: | ||
+ | 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: | ||
+ | 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, | ||
+ | ----------155400----------------------------- | ||
+ | INT 15 - Omniview Multitasker - INSTALLATION NOTIFICATION | ||
+ | AX = 5400h | ||
+ | ES:BX -> device information tables | ||
+ | DI:DX -> dispatcher entry point | ||
+ | Note: | ||
+ | changes inside OmniView | ||
+ | SeeAlso: AX=5407h | ||
+ | ----------155401----------------------------- | ||
+ | INT 15 - Omniview Multitasker - PROCESS CREATION | ||
+ | AX = 5401h | ||
+ | ES:BX = process handle | ||
+ | Note: | ||
+ | changes inside OmniView | ||
+ | SeeAlso: AX=5402h | ||
+ | ----------155402----------------------------- | ||
+ | INT 15 - Omniview Multitasker - PROCESS DESTRUCTION | ||
+ | AX = 5402h | ||
+ | ES:DX = process handle | ||
+ | Note: | ||
+ | changes inside OmniView | ||
+ | SeeAlso: AX=5401h | ||
+ | ----------155403----------------------------- | ||
+ | INT 15 - Omniview Multitasker - SAVE | ||
+ | AX = 5403h | ||
+ | ES:DX = process swapping out | ||
+ | Note: | ||
+ | changes inside OmniView | ||
+ | SeeAlso: AX=5404h | ||
+ | ----------155404----------------------------- | ||
+ | INT 15 - Omniview Multitasker - RESTORE | ||
+ | AX = 5404h | ||
+ | ES:DX = process swapping in | ||
+ | Note: | ||
+ | changes inside OmniView | ||
+ | SeeAlso: AX=5403h | ||
+ | ----------155405----------------------------- | ||
+ | INT 15 - Omniview Multitasker - SWITCHING TO BACKGROUND | ||
+ | AX = 5405h | ||
+ | ES:DX = process swapping in | ||
+ | Note: | ||
+ | changes inside OmniView | ||
+ | SeeAlso: AX=5406h | ||
+ | ----------155406----------------------------- | ||
+ | INT 15 - Omniview Multitasker - SWITCHING TO FOREGROUND | ||
+ | AX = 5406h | ||
+ | ES:DX = process swapping in | ||
+ | Note: | ||
+ | changes inside OmniView | ||
+ | SeeAlso: AX=5405h | ||
+ | ----------155407----------------------------- | ||
+ | INT 15 - Omniview Multitasker - EXIT NOTIFICATION | ||
+ | AX = 5407h | ||
+ | Note: | ||
+ | changes inside OmniView | ||
+ | SeeAlso: AX=5400h | ||
+ | ----------1580------------------------------- | ||
+ | INT 15 - OS HOOK - DEVICE OPEN (AT, | ||
+ | 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, | ||
+ | ----------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, | ||
+ | ----------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: | ||
+ | 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, | ||
+ | ----------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/ | ||
+ | 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: | ||
+ | the default handler simply returns successfully; | ||
+ | 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, | ||
+ | |||
+ | Format of global descriptor table: | ||
+ | Offset Size Description | ||
+ | 00h 16 BYTEs zeros | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | 8h GDT descriptor | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 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, | ||
+ | ----------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/ | ||
+ | ----------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, | ||
+ | SeeAlso: AX=BF02h | ||
+ | ----------15BF01----------------------------- | ||
+ | INT 15 - Rational Systems DOS/16M - ??? | ||
+ | AX = BF01h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: under DESQview/X 1.02 DVDOS4GX.DVR, | ||
+ | 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/ | ||
+ | SeeAlso: INT 21/ | ||
+ | |||
+ | Format of XBRK structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | ??? | ||
+ | ----------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/ | ||
+ | ----------15BFDEBX0002----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ??? | ||
+ | AX = BFDEh | ||
+ | BX = 0002h | ||
+ | CX:DX -> ??? | ||
+ | Return: BX = 0000h (success) | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------15BFDEBX0003----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ??? | ||
+ | AX = BFDEh | ||
+ | BX = 0003h | ||
+ | Return: BX = 0000h (success) | ||
+ | CX:DX -> ??? | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------15BFDEBX0004----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ??? | ||
+ | AX = BFDEh | ||
+ | BX = 0004h | ||
+ | Return: BX = 0000h (success) | ||
+ | CX:DX -> ??? | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------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/ | ||
+ | ----------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/ | ||
+ | ----------15BFDEBX0007----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ??? | ||
+ | AX = BFDEh | ||
+ | BX = 0007h | ||
+ | CX:DX = ??? | ||
+ | Return: BX = 0000h (success) | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------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/ | ||
+ | ----------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/ | ||
+ | ----------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/ | ||
+ | ----------15BFDEBX000B----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - INCREMENT ??? | ||
+ | AX = BFDEh | ||
+ | BX = 000Bh | ||
+ | Return: AX = new value of ??? counter | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------15BFDEBX000C----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ??? | ||
+ | AX = BFDEh | ||
+ | BX = 000Ch | ||
+ | CL = ??? | ||
+ | 00h | ||
+ | nonzero | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------15BFDEBX000D----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ??? | ||
+ | AX = BFDEh | ||
+ | BX = 000Dh | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------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/ | ||
+ | ----------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: | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------15BFDEBX0010----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET TASK HANDLE | ||
+ | AX = BFDEh | ||
+ | BX = 0010h | ||
+ | Return: AX = segment of caller' | ||
+ | BX destroyed | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------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/ | ||
+ | ----------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/ | ||
+ | ----------15BFDEBX0013----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ??? | ||
+ | AX = BFDEh | ||
+ | BX = 0013h | ||
+ | Return: DX:CX -> ??? | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------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/ | ||
+ | ----------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/ | ||
+ | ----------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/ | ||
+ | ----------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' | ||
+ | BX = segment of caller' | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------15BFDEBXFFFD----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ??? | ||
+ | AX = BFDEh | ||
+ | BX = FFFDh | ||
+ | Return: CX:DX = ??? | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------15BFDEBXFFFE----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ??? | ||
+ | AX = BFDEh | ||
+ | BX = FFFEh | ||
+ | CX:DX = ??? | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------15BFDEBXFFFF----------------------- | ||
+ | INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - NOP | ||
+ | AX = BFDEh | ||
+ | BX = FFFFh | ||
+ | SeeAlso: AX=BFDEh/ | ||
+ | ----------15C0------------------------------- | ||
+ | INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9, | ||
+ | AH = C0h | ||
+ | Return: CF set if BIOS doesn' | ||
+ | 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 " | ||
+ | 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 " | ||
+ | past the end of the configuration table | ||
+ | |||
+ | Format of ROM configuration table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 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 | ||
+ | | ||
+ | bit 7 = ??? | ||
+ | bit 6 = INT 16/AH=09h (keyboard functionality) supported | ||
+ | bits 5-0 = ??? | ||
+ | | ||
+ | reserved (0) | ||
+ | | ||
+ | reserved (0) | ||
+ | | ||
+ | reserved (0) (IBM) | ||
+ | ??? (08h) (Phoenix 386 v1.10) | ||
+ | ---AWARD BIOS--- | ||
+ | | ||
+ | ---Phoenix BIOS--- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Values for model/ | ||
+ | Model Submdl | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | (Those date characters are not typos) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ??? | ||
+ | ??? | ||
+ | * This BIOS call is not implemented in these early versions. | ||
+ | Read Model byte at F000h:FFFEh and BIOS date at F000h: | ||
+ | ** These BIOS versions require the DASDDRVR.SYS patches. | ||
+ | *** These Olivetti and Epson machines store the submodel in the byte at | ||
+ | F000h: | ||
+ | |||
+ | Values for Dell model byte: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------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" | ||
+ | ----------15C200BH00------------------------- | ||
+ | INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/ | ||
+ | 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/ | ||
+ | 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/ | ||
+ | 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: | ||
+ | handlers on the PS/2 Models 30/286, 50Z, and 95 | ||
+ | default handler does nothing and returns CF clear for the above | ||
+ | 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, | ||
+ | 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, | ||
+ | ----------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, | ||
+ | ----------15DE00----------------------------- | ||
+ | INT 15 - DESQview - GET PROGRAM NAME | ||
+ | AX = DE00h | ||
+ | Return: AX = offset into DESQVIEW.DVO of program most recently selected from | ||
+ | the " | ||
+ | Note: | ||
+ | SeeAlso: AX=DE07h | ||
+ | |||
+ | Format of program entry in DESQVIEW.DVO: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | 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" | ||
+ | AX = DE01h | ||
+ | Return: nothing | ||
+ | Notes: | ||
+ | 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, | ||
+ | ----------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, | ||
+ | ----------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, | ||
+ | ----------15DE07----------------------------- | ||
+ | INT 15 - DESQview - " | ||
+ | AX = DE07h | ||
+ | Return: AX = number of program as it appears on the " | ||
+ | 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+ - " | ||
+ | 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: | ||
+ | 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+ - " | ||
+ | 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" | ||
+ | the API level defaults to 1.00, and is inherited by child tasks | ||
+ | ----------15DE0C----------------------------- | ||
+ | INT 15 - DESQview v2.00+ - " | ||
+ | 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, | ||
+ | ----------15DE0D----------------------------- | ||
+ | INT 15 - DESQview v2.00+ - " | ||
+ | AX = DE0Dh | ||
+ | ES:DI -> previously allocated block | ||
+ | Return: nothing | ||
+ | SeeAlso: AX=1002h, | ||
+ | ----------15DE0E----------------------------- | ||
+ | INT 15 - DESQview v2.00+ - " | ||
+ | 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/ | ||
+ | |||
+ | Special mailbox names: | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ----------15DE0F----------------------------- | ||
+ | INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS | ||
+ | AX = DE0Fh | ||
+ | Return: AX and BX destroyed (seems to be bug, weren' | ||
+ | Notes: | ||
+ | enables an additional mouse mode | ||
+ | ----------15DE10----------------------------- | ||
+ | INT 15 - DESQview v2.00+ - " | ||
+ | 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, | ||
+ | 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+ - " | ||
+ | AX = DE11h | ||
+ | BL = 00h viewport will not move automatically | ||
+ | | ||
+ | Return: nothing | ||
+ | ----------15DE12BX0000----------------------- | ||
+ | INT 15 - DESQview v2.01+ - " | ||
+ | AX = DE12h | ||
+ | BX = 0000h select normal style (linefeed only moves down) | ||
+ | | ||
+ | Return: nothing | ||
+ | Note: set on a per-task basis, and inherited from the parent task | ||
+ | ----------15DE13----------------------------- | ||
+ | INT 15 - DESQview v2.20+ - " | ||
+ | AX = DE13h | ||
+ | Return: BX = number of calls to BEGINC or ENTERC (see INT 15/ | ||
+ | | ||
+ | Note: this API call may be made from within a hardware interrupt handler | ||
+ | SeeAlso: AX=101Bh, | ||
+ | ----------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 " | ||
+ | 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+ - " | ||
+ | AX = DE17h | ||
+ | BX = 0000h get current mapping context without setting | ||
+ | | ||
+ | Return: BX = mapping context in effect before call | ||
+ | Notes: | ||
+ | a mapping context ensures that the associated program and data areas | ||
+ | are in memory for access. | ||
+ | programs. | ||
+ | caller need not be running under DESQview | ||
+ | this API call may be made from a hardware interrupt handler | ||
+ | SeeAlso: AX=1117h, | ||
+ | ----------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, | ||
+ | ----------15DE19----------------------------- | ||
+ | INT 15 - DESQview v2.23+ - " | ||
+ | AX = DE19h | ||
+ | BX = number of bytes to allocate | ||
+ | Return: AX = 0000h successful | ||
+ | ES:DI -> allocated block | ||
+ | | ||
+ | Note: this API call may be made from within a hardware interrupt handler | ||
+ | SeeAlso: AX=DE0Ch, | ||
+ | ----------15DE1A----------------------------- | ||
+ | INT 15 - DESQview v2.23+ - " | ||
+ | AX = DE1Ah | ||
+ | DS:SI -> previously allocated block | ||
+ | Note: this function may be called from within a hardware interrupt handler | ||
+ | SeeAlso: AX=DE0Dh, | ||
+ | ----------15DE1B----------------------------- | ||
+ | INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT | ||
+ | AX = DE1Bh | ||
+ | Return: nothing | ||
+ | SeeAlso: AX=101Ch, | ||
+ | ----------15DE1C----------------------------- | ||
+ | INT 15 - DESQview v2.23+ - " | ||
+ | AX = DE1Ch | ||
+ | Return: nothing | ||
+ | Notes: | ||
+ | that DOS is free | ||
+ | the official documentation states that this call should be paired with | ||
+ | " | ||
+ | this API call may be made from within a hardware interrupt handler | ||
+ | SeeAlso: AX=101Bh, | ||
+ | ----------15DE1D----------------------------- | ||
+ | INT 15 - DESQview v2.23+ - " | ||
+ | AX = DE1Dh | ||
+ | DX = segment of handle for task to receive keystroke | ||
+ | BL = character | ||
+ | BH = scan code | ||
+ | Return: AX = 0000h if successful | ||
+ | | ||
+ | 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+ - " | ||
+ | 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+ - " | ||
+ | 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+ - " | ||
+ | AX = DE20h | ||
+ | BX = segment of handle of task to interupt | ||
+ | DX:CX -> FAR interrupt routine | ||
+ | Return: nothing | ||
+ | Notes: | ||
+ | making the DISPATCHINT call | ||
+ | multiple " | ||
+ | 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+ - " | ||
+ | AX = DE21h | ||
+ | BX = 0000h turn off | ||
+ | | ||
+ | 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+ - " | ||
+ | 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' | ||
+ | 2: process' | ||
+ | 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' | ||
+ | unchanged, because the memory usage cannot be determined | ||
+ | SeeAlso: AX=DE04h, | ||
+ | ----------15DE23----------------------------- | ||
+ | INT 15 - DESQview v2.31+ - ??? | ||
+ | AX = DE23h | ||
+ | BX = ??? IRQ number on first PIC? | ||
+ | CX = ??? IRQ number on second PIC? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | ----------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, | ||
+ | ES:DI -> ??? | ||
+ | Return: CF clear if successful | ||
+ | AX = ??? | ||
+ | BX = ??? | ||
+ | CF set on error | ||
+ | AX = ??? | ||
+ | Note: | ||
+ | ----------15DE28----------------------------- | ||
+ | INT 15 - DESQview v2.50+ - ??? | ||
+ | AX = DE28h | ||
+ | BX = segment of ??? or 0000h for default | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=DE2Ah | ||
+ | ----------15DE29BX0000----------------------- | ||
+ | INT 15 - DESQview v2.50+ - ??? | ||
+ | AX = DE29h | ||
+ | BX = 0000h | ||
+ | ??? | ||
+ | Return: CF clear if successful | ||
+ | ??? | ||
+ | CF set on error | ||
+ | Note: | ||
+ | ----------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: | ||
+ | ----------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: | ||
+ | ----------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: | ||
+ | ----------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: | ||
+ | the name ": | ||
+ | ----------15DE29BX0005----------------------- | ||
+ | INT 15 - DESQview v2.50+ - ??? | ||
+ | AX = DE29h | ||
+ | BX = 0005h | ||
+ | ??? | ||
+ | Return: CF clear if successful | ||
+ | ??? | ||
+ | CF set on error | ||
+ | Note: | ||
+ | ----------15DE2A----------------------------- | ||
+ | INT 15 - DESQview v2.50+ - ??? | ||
+ | AX = DE2Ah | ||
+ | BX = segment of ??? or 0000h for default | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=DE28h, | ||
+ | ----------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: | ||
+ | SeeAlso: AX=1016h, | ||
+ | ----------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: | ||
+ | SeeAlso: AX=DE2Bh | ||
+ | |||
+ | Format of window information: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 00h waiting | ||
+ | 01h idle | ||
+ | 04h pausing | ||
+ | 0Ah slicing | ||
+ | 0Bh exit DOS | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------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<> | ||
+ | Note: | ||
+ | SeeAlso: AX=DE2Eh, | ||
+ | ----------15DE2E----------------------------- | ||
+ | INT 15 - DESQview v2.50+ - ??? | ||
+ | AX = DE2Eh | ||
+ | DX:BX = ??? or 0000h:0000h for default | ||
+ | Return: CX = ??? | ||
+ | DX:BX = ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=DE2Dh | ||
+ | --------------------------------------------- | ||
+ | INT 15 - DESQview v2.50+ - ??? | ||
+ | AX = DE2Fh | ||
+ | Return: BL = ??? (00h,01h) | ||
+ | Note: | ||
+ | ----------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: | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------15E00F----------------------------- | ||
+ | INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH | ||
+ | AX = E00Fh | ||
+ | ES:BX -> start of 2nd processor' | ||
+ | Return: AL = 0Fh successful | ||
+ | = 00h failure | ||
+ | SeeAlso: AX=E10Eh, | ||
+ | ----------15E10E----------------------------- | ||
+ | INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH | ||
+ | AX = E10Eh | ||
+ | ES:BX -> start of 2nd processor' | ||
+ | Return: AL = 0Fh successful (halted) | ||
+ | = 00h failure (not halted) | ||
+ | SeeAlso: AX=E00Fh, | ||
+ | ----------15E200----------------------------- | ||
+ | INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE | ||
+ | AX = E200h | ||
+ | Return: AX = 8000h if 2nd processor available | ||
+ | SeeAlso: AX=E00Fh, | ||
+ | ----------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 |