Interrupt List, part 2 of 18 Copyright (c) 1989-1999,2000 Ralf Brown --------V-10BF--CX0000----------------------- INT 10 - Athena Digital HGCIBM.COM - INSTALLATION CHECK AH = BFh CX = 0000h (???) Return: CX = 0202h DL = ??? (internal data, possibly version number) --------b-10BF00----------------------------- INT 10 - VIDEO - Compaq Extensions - SELECT EXTERNAL MONITOR AX = BF00h Return: nothing Desc: specify that the external monitor become the active monitor Note: all registers preserved and the internal monitor is blanked SeeAlso: AX=BF01h,AX=BF12h,AH=12h/BL=35h --------b-10BF01----------------------------- INT 10 - VIDEO - Compaq Extensions - SELECT INTERNAL MONITOR AX = BF01h Return: nothing Desc: specify that the internal monitor become the active monitor Note: all registers preserved and the external monitor is blanked SeeAlso: AX=BF00h,AX=BF12h,AH=12h/BL=35h --------b-10BF02----------------------------- INT 10 - VIDEO - Compaq Extensions - SET MASTER MODE OF CURRENT CONTROLLER AX = BF02h BH = master mode 04h CGA 05h EGA 07h MDA Return: nothing SeeAlso: AX=BF03h --------b-10BF03BX0000----------------------- INT 10 - VIDEO - Compaq Extensions - GET ENVIRONMENT AX = BF03h BX = 0000h Return: BH = active monitor (00h = external, 01h = internal, 03h both, 04h neither) BL = master mode (see #00211) CH = ASIC type and version 00h (reserved, very early Compaq VGCs) 31h if QVision VGA CL = switchable VDU modes supported (see #00212) DH = internal monitor type (see #00213) DL = external monitor type (see #00213) SeeAlso: AX=1A00h,AX=BF00h,AX=BF01h,AX=BF02h,AX=BF11h (Table 00211) Values for Compaq video master mode: 00h switchable VDU not present 04h CGA 05h EGA 07h MDA 08h switchable LCD controller present 09h plasma VGA 0Ah TFT (active-matrix) VGA Bitfields for Compaq switchable VDU modes support: Bit(s) Description (Table 00212) 0 CGA supported 1,2 reserved (1) 3 MDA supported 4 BitBLT engine available 5 132-column support availble 6 640x480x256 mode available 7 8-bit DAC mode available (Table 00213) Values for Compaq monitor type: 00h none 01h dual-mode monitor 02h 5153 RGB monitor (RGBI 16-color) 03h Compaq Color monitor 04h 640x400 flat panel (Plasma CGA) 05h VGC monochrome 06h VGC color 07h 8-level mono LCD VGA (internal) 1024x768 mono VGA (external) 08h 16-level mono plasma VGA (internal) 1024x768 color VGA (external) 09h 4-level mono LCD CGA 0Ah 16-level mono LCD VGA 0Bh active-matrix color VGA 0Ch active-matrix mono VGA 0Dh STN color VGA --------b-10BF04----------------------------- INT 10 - VIDEO - Compaq Extensions - SET MODE SWITCH DELAY AX = BF04h BH = new state of delay (00h enabled, 01h disabled) Return: nothing Note: the 1993/04/08 sytem ROM appears to use BL instead of BH; a future version of the list will provide more definite information SeeAlso: AX=BF05h --------b-10BF05----------------------------- INT 10 - VIDEO - Compaq Extensions - ENABLE/DISABLE DISPLAY AX = BF05h BH = new state of video 00h off 01h on Return: nothing Note: the 1993/04/08 sytem ROM appears to use BL instead of BH; a future version of the list will provide more definite information SeeAlso: AH=12h/BL=36h,AX=BF04h --------b-10BF06----------------------------- INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE AX = BF06h CL = address to be read from gray scale table Return: AL = bit 3-0 - Value read from gray scale table CL = address to be read from gray scale table SeeAlso: AH=12h/BL=33h,AX=BF07h --------b-10BF07----------------------------- INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE AX = BF07h CH = value to write to gray scale table CL = address to be written to gray scale table Return: nothing SeeAlso: AX=BF06h,AX=BF08h --------b-10BF08----------------------------- INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS AX = BF08h CH = bits 7-4 green weight bits 3-0 blue weight CL = bits 7-4 unused bits 3-0 red weight Return: nothing SeeAlso: AH=12h/BL=33h,AX=BF07h --------b-10BF09----------------------------- INT 10 - VIDEO - Compaq Extensions - TURN ON REVERSE VIDEO AX = BF09h Return: CF clear Notes: sets bit 6 of port 03CEh index 81h; in some cases also sets index 84h to 6Fh and index 83h to 04h supported by at least the QVision board and the LTE Lite ROM BIOS SeeAlso: AX=BF0Ah,AX=BF0Bh --------b-10BF0A----------------------------- INT 10 - VIDEO - Compaq Extensions - TURN OFF REVERSE VIDEO AX = BF0Ah Return: CF clear Notes: clears bit 6 of port 03CEh index 81h; in some cases also sets index 84h to 80h and index 83h to FBh supported by at least the QVision board and the LTE Lite ROM BIOS SeeAlso: AX=BF09h,AX=BF0Bh --------b-10BF0B----------------------------- INT 10 - VIDEO - Compaq Extensions - CHECK WHETHER VIDEO REVERSED AX = BF0Bh Return: CF clear AX = state (0000h normal video, 0001h reverse video) Note: supported by at least the QVision board and the LTE Lite ROM BIOS SeeAlso: AX=BF09h,AX=BF0Ah --------b-10BF0C----------------------------- INT 10 - VIDEO - Compaq Extensions - SET DAC 6-BIT MODE AX = BF0Ch Return: CF clear Desc: specify that video DAC registers use only six bits of color info Note: supported by at least the QVision board and the SystemPro XL ROM BIOS SeeAlso: AX=BF0Dh,AX=BF0Eh --------b-10BF0D----------------------------- INT 10 - VIDEO - Compaq Extensions - SET DAC 8-BIT MODE AX = BF0Dh Return: CF clear Desc: specify that video DAC registers use all eight bits of color info Note: supported by at least the QVision board and the SystemPro XL ROM BIOS SeeAlso: AX=BF0Ch,AX=BF0Eh --------b-10BF0E----------------------------- INT 10 - VIDEO - Compaq Extensions - CHECK DAC 6-BIT/8-BIT mode AX = BF0Eh Return: CF clear AL = DAC mode 00h in 6-bit mode 01h in 8-bit mode Note: supported by at least the QVision board and the SystemPro XL ROM BIOS SeeAlso: AX=BF0Ch,AX=BF0Dh --------b-10BF0F----------------------------- INT 10 - VIDEO - Compaq Extensions - SET HIGH ADRESS MAP REGISTER AX = BF0Fh BX = high address map location in megabytes, or 0000h to disable high address map, or FFFFh to let ROM configure high address map Return: CF clear AX = previous value of high address map register Notes: supported by at least the QVision board and the SystemPro XL and LTE Lite ROM BIOSes SeeAlso: AX=BF10h --------b-10BF10----------------------------- INT 10 - VIDEO - Compaq Extensions - GET HIGH ADDRESS MAP REGISTER AX = BF10h Return: CF clear AX = current value of high address map register Notes: supported by at least the QVision board and the SystemPro XL and LTE Lite ROM BIOSes the Compaq QVision documentation (October 1993) says the value is returned in BX, but this appears to be one of many typos SeeAlso: AX=BF0Fh --------b-10BF11----------------------------- INT 10 - VIDEO - Compaq Extensions - GET EXTENDED ENVIRONMENT AX = BF11h Return: AL = BFh if supported CF clear ES:DI -> ASCII signature "COMPAQ" ES:SI -> advanced functionality table (see #00214) Note: supported by at least the QVision board and the LTE Lite and ProSignia ROM BIOSes SeeAlso: AX=1A00h,AX=BF03h Bitfields for Compaq advanced video functionality: Bit(s) Description (Table 00214) 31 future graphics extensions (reserved, set to 0) 30-16 reserved 15-12 available video memory in 256K blocks, less one (0000 = 256K, etc.) 11-8 reserved 7 QVision modes supported 6 Advanced VGA modes supported 5 Accelerated VGA modes supported 4 standard VGA modes supported 3-2 reserved 1 132-column modes supported 0 reserved --------b-10BF12----------------------------- INT 10 - VIDEO - Compaq Extensions - NEW ACTIVE MONITOR AX = BF12h BH reserved BL = function mask (see #00215) Return: CF clear Notes: this function is a NOP if the VGA subsystem is inactive or the current Display Combination Code is 10h or higher supported by at least the QVision board and the LTE Lite and ProSignia ROM BIOSes SeeAlso: AX=BF01h,AX=BF02h,#00733 Bitfields for function mask: Bit(s) Description (Table 00215) 7 command mode if set, bits 1 and 0 make the monitor active when set if clear, bits 1 and 0 toggle the monitor's state when set 6-2 reserved 1 internal monitor 0 external monitor --------b-10BF13----------------------------- INT 10 - VIDEO - Compaq QVision - GAMMA CORRECTION AX = BF13h BL = subfunction 00h load gamma correction table for true-color mode DS = BIOS data segment 01h set palette RAM bypass BH = 00h Return: nothing Note: these functions must be called after a video mode set, and are in effect only for the current video mode SeeAlso: #00733 --------V-10BFA0BXADAD----------------------- INT 10 - VIDEO - Compaq ADAPT.COM - INSTALLATION CHECK AX = BFA0h BX = ADADh Return: AX = BDBDh if newer ADAPT.COM installed BX = BCD version (BH = major, BL = minor) CL = ??? CH = ??? DL = ??? AX = ADADh if older version of ADAPT.COM installed Program: ADAPT is Compaq's Advanced Display Attribute Programming Tool, an optionally-resident utility for setting display colors and cursor size; when resident, it also includes a screen blanker SeeAlso: AX=BFA1h,AX=BFA2h,AX=DFA5h Index: screen saver;ADAPT --------V-10BFA1----------------------------- INT 10 - VIDEO - Compaq ADAPT.COM - GET ??? AX = BFA1h Return: AX = BDBEh if supported CH = current value of ??? DL = current value of ??? SeeAlso: AX=BFA0h,AX=BFA2h --------V-10BFA2----------------------------- INT 10 - VIDEO - Compaq ADAPT.COM - SET ??? AX = BFA2h CH = new value for ??? DL = new value for ??? Return: AX = BDBEh if supported SeeAlso: AX=BFA0h,AX=BFA1h --------A-10C0------------------------------- INT 10 - CU Writer v1.4 - GO TO TEXT ROW AND COLUMN AH = C0h ??? Return: ??? SeeAlso: AH=B1h,AH=C1h,AH=C2h,AH=C3h,AH=C4h --------V-10C000----------------------------- INT 10 - S3 SpeedUp v3.00+ - INSTALLATION CHECK AX = C000h Return: AX = FFFFh if installed DX = version number (binary, DH=major, DL=minor) BX = resident code segment Program: S3SPDUP is a freeware TSR by Dietmar Meschede to improve the speed of chained video modes (both VESA and VGA Mode 13) on S3-chipset video cards SeeAlso: AX=C001h,AX=C002h,AX=C003h,AX=D000h"S3VBE" --------V-10C001----------------------------- INT 10 - S3 SpeedUp v3.00+ - GET ACTIVE OPTIONS AX = C001h Return: AX = FFFFh if function supported BX = currently active options (see #00216) SeeAlso: AX=C000h,AX=C002h,AX=C003h Bitfields for S3SpeedUp options: Bit(s) Description (Table 00216) 0 speed up banked VESA modes 1 speed up 320x200 VGA mode 13 SeeAlso: #00222 --------V-10C002----------------------------- INT 10 - S3 SpeedUp v3.00+ - SET ACTIVE OPTIONS AX = C002h BX = new value for active options (see #00216) Return: AX = FFFFh if function supported SeeAlso: AX=C000h,AX=C001h,AX=C003h,AX=D003h"S3VBE" --------V-10C003----------------------------- INT 10 - S3 SpeedUp v3.10+ - GET FLAGS AX = C003h Return: AX = FFFFh if function supported BX = flags bit 0: SpeedUp is active bit 1: Windows run after SpeedUp SeeAlso: AX=C000h,AX=C001h,AX=C002h,AX=D005h"S3VBE" --------V-10C004----------------------------- INT 10 - S3 SpeedUp v3.10+ - RESERVED FUNCTIONS AX = C004h-C0FFh Return: AX = 5555h SeeAlso: AX=C000h --------A-10C1------------------------------- INT 10 - CU Writer v1.4 - OUTPUT TEXT AH = C1h ??? Return: ??? SeeAlso: AH=C0h,AH=C2h,AH=C3h,AH=C4h --------A-10C2------------------------------- INT 10 - CU Writer v1.4 - REVERSE TEXT AH = C2h ??? Return: ??? SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=C4h --------A-10C3------------------------------- INT 10 - CU Writer v1.4 - TEXT BAR AH = C3h ??? Return: ??? SeeAlso: AH=C0h,AH=C1h,AH=C4h --------A-10C4------------------------------- INT 10 - CU Writer v1.4 - TEXT MENU AH = C4h ??? Return: ??? SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=D0h --------V-10CB00----------------------------- INT 10 - UNCHAIN - SAVE CURRENT VGA REGISTERS AX = CB00h Note: combined with AX=CB06h, this function permits the use of video mode 13h together with the VGA's unchained mode SeeAlso: AX=CB06h,AX=CBFFh --------V-10CB01----------------------------- INT 10 - UNCHAIN - UPDATE PAGE 1 OFFSET AX = CB01h BX = offset of page 1 Return: nothing Desc: inform UNCHAIN of the location of video page 1 in video memory; the default is 0000h SeeAlso: AX=CB02h,AX=CB03h,AX=CB04h,AX=CBFFh --------V-10CB02----------------------------- INT 10 - UNCHAIN - UPDATE PAGE 2 OFFSET AX = CB02h BX = offset of page 2 Return: nothing Desc: inform UNCHAIN of the location of video page 2 in video memory; the default is 3E80h (16000, for 320x200) SeeAlso: AX=CB00h,AX=CB01h,AX=CB03h,AX=CB04h --------V-10CB03----------------------------- INT 10 - UNCHAIN - UPDATE PAGE 3 OFFSET AX = CB03h BX = offset of page 3 Return: nothing Desc: inform UNCHAIN of the location of video page 3 in video memory; the default is 7D00h (32000, for 320x200) SeeAlso: AX=CB01h,AX=CB02h,AX=CB04h --------V-10CB04----------------------------- INT 10 - UNCHAIN - UPDATE PAGE 4 OFFSET AX = CB04h BX = offset of page 4 Return: nothing Desc: inform UNCHAIN of the location of video page 4 in video memory; the default is BB80h (48000, for 320x200) SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB05h --------V-10CB05----------------------------- INT 10 - UNCHAIN - SAVE PALETTE AX = CB05h Return: nothing SeeAlso: AX=CB00h,AX=CB06h --------V-10CB06----------------------------- INT 10 - UNCHAIN - RESTORE VGA REGISTERS AX = CB06h Return: nothing SeeAlso: AX=CB00h,AX=CB05h,AX=CBFFh --------V-10CBFF----------------------------- INT 10 - UNCHAIN - INSTALLATION CHECK AX = CBFFh Return: AX = CCBBh if installed Program: UNCHAIN is a TSR by Colin Buckley which permits use of Borland development tools with Mode X video in the absence of a second monitor SeeAlso: AX=CB00h,AX=CB01h,AX=CB06h --------V-10CC00----------------------------- INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK) AX = CC00h SI = magic value 0000h (if checking version) Return: CX = product signature ABCDh UltraVision 5546h ('UF') UltraFont AL = Ultravision extensions 00h enabled FFh disabled AH = card designator BX:00F0h -> palette values (for compatibility with NEWFONT) DX = support for high resolution modes 00h not active 01h active SI = UltraVision version number (v1.2+), high byte=major,low byte=minor unchanged for versions <1.2 Note: UltraFont is a simplified version of UltraVision for Toshiba; only the signature in CX and the status in AL will be returned SeeAlso: AX=CC01h,AX=CC02h --------V-10CC01----------------------------- INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS AX = CC01h Return: nothing Notes: subsequent BIOS calls will be passed through to previous handler should be followed immediately by mode set to restore normal EGA/VGA state SeeAlso: AX=CC02h --------V-10CC02----------------------------- INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS AX = CC02h Return: nothing Note: should be followed immediately by mode set to restore previous UltraVision state SeeAlso: AX=CC01h --------U-10CCAB----------------------------- INT 10 - HiFont - INSTALLATION CHECK AX = CCABh Return: AX = ABCCh Program: HiFont is a 8x19 font driver for standard VGA by Solar Designer --------V-10CD00----------------------------- INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA) AX = CD00h CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+) DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh) Return: nothing Notes: if palette locking is in effect for the current mode, the new colors will be displayed immediately; otherwise, the system reverts to the default palette palette table 0 is reserved for the default palette and cannot be set UltraVision always sets the border color to black SeeAlso: AX=CD01h,AX=CD02h --------V-10CD01----------------------------- INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA) AX = CD01h CL = palette locking value 00h none 01h text modes only (02h,03h) FFh all modes (all standard color text and graphics modes) Return: nothing Notes: intended for video modes with 16 or fewer colors SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h --------V-10CD02----------------------------- INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA) AX = CD02h Return: CL = palette table number DS:DX -> 17-byte palette register list (see #00217) DS:SI -> current font names table (see #00218,#00219) Note: only the font names are valid on monochrome EGA systems SeeAlso: AX=1009h,AX=CD00h Format of UltraVision palette register list: Offset Size Description (Table 00217) 00h 16 BYTEs colors for palette registers 00h through 0Fh 10h BYTE border color Format of UltraVision v2+ current font names table: Offset Size standard EGA HiRes EGA VGA (Table 00218) 00h 8 BYTEs N/A F19 font F20 font 08h 8 BYTEs F14 font F14 font F14 font 10h 8 BYTEs N/A F11 font F10 font 18h 8 BYTEs F8 font F8 font F8 font Format of UltraVision v1.x current font names table: Offset Size HiRes EGA (Table 00219) 00h 8 BYTEs F19/F14 font 08h 8 BYTEs F11/F8 font --------V-10CD03----------------------------- INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA) AX = CD03h Return: CL = palette locking value 00h none 01h text modes only FFh all modes SeeAlso: AX=CD01h --------V-10CD04----------------------------- INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA) AX = CD04h Return: AL = mode number (see #00220) SeeAlso: AH=0Fh,AX=CC00h,AH=CDh (Table 00220) Values for UltraVision video mode number: 11h 80x25 12h 80x43, 80x50 13h 80x34, 80x36 14h 80x60, 80x63 19h 94x25 1Ah 94x43, 94x50 1Bh 94x36 1Ch 94x63 21h 108x25 22h 108x43, 108x50 23h 107x34, 108x36 24h 108x60, 108x63 31h 120x25 32h 120x43, 120x50 33h 132x25 34h 132x44, 132x50 39h 120x36 3Ah 120x63 3Bh 132x36 3Ch 132x60 Index: video modes;UltraVision --------V-10CD05----------------------------- INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA) AX = CD05h CL = type 00h line cursor FFh box cursor Return: nothing Note: sets default cursor type for text-based programs SeeAlso: AH=01h,AX=CD06h --------V-10CD06----------------------------- INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA) AX = CD06h Return: CL = type 00h line cursor FFh box cursor SeeAlso: AH=03h,AX=CD05h --------V-10CD07----------------------------- INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA) AX = CD07h CL = hardware underline status (see #00221) BL = foreground color for normal text (FFh = current) BH = foreground color for bright text (FFh = current) Return: CL = hardware underline status BL = current foreground color for normal text BH = current foreground color for bright text Notes: when underline or strikeout is enabled in color text modes, the specified colors will be assigned temporarily to colors 01h and 09h, allowing affected text to match non-underlined text. The color remapping uses values from the current onscreen palette regardless of the palette locking status (see AX=CD01h) specify the standard colors (BL=01h,BH=09h) to enable underline or strikeout without color remapping SeeAlso: AX=CD08h (Table 00221) Values for hardware underline status: 00h off (color systems only) 01h underline below characters 02h strike through characters --------V-10CD08----------------------------- INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA) AX = CD08h Return: CL = hardware underline status (see #00221) BL = foreground color for normal text BH = foreground color for bright text Note: only CL is valid on monochrome EGA systems SeeAlso: AX=CD07h --------V-10CD0F----------------------------- INT 10 - VIDEO - UltraVision - GET POINTER TO ??? (EGA,VGA) AX = CD0Fh Return: DS:DI -> pointer to ??? Note: This gets called by DR DOS "Panther" SECURITY. SECURITY also issues a number of calls to the other UltraVision functions in the AH=CCh and AH=CDh range, and carefully checks signatures. SeeAlso: AX=1100h,AX=1103h --------V-10CD10----------------------------- INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA) AX = CD10h BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h) CX = ABCDh load 9xN alternate font (v2+) else number of characters to load DX = character offset into font table DS:SI -> 8-byte ASCII font name ES:BP -> font definitions Return: AX = FFFFh if invalid font parameters Notes: loads the designated characters into UltraVision's resident font area should be followed by a video mode set to reload character generator SeeAlso: AX=1100h,AX=1103h --------V-10CD------------------------------- INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA) AH = CDh AL = text mode number (see #00220) Return: AX = CDCDh if invalid mode SeeAlso: AX=CD04h --------A-10D0------------------------------- INT 10 - CU Writer v1.4 - LOAD PICTURE AH = D0h ??? Return: ??? SeeAlso: AH=B0h"CU Writer",AH=C4h --------V-10D0------------------------------- INT 10 U - VIDEO - HP 100LX/200LX - SET ZOOM MODE AH = D0h AL = zoom mode 02h 80x25 mono 03h 80x25 color 80h 64x18 mono 81h 64x18 color 82h 40x25 mono 83h 40x25 color 84h 40x16 mono 85h 40x16 color Return: nothing Note: zoom mode can only be changed within zoom modes of the same color scheme; if needed, set to mono/color with AH=00h,AL=02h/03h; with mono video modes AL=07h or AL=21h only 80x25 and 40x16 will work the current zoom mode is stored in the BIOS data area at 0040h:009Fh SeeAlso: AH=D1h,AH=D4h --------V-10D000----------------------------- INT 10 - S3VBE/Core2.0 v3.00+ - INSTALLATION CHECK AX = D000h Return: AX = FFFFh if installed BX = resident code segment DX = version (binary, DH = major, DL = minor) Program: S3VBE/Core2.0 is a freeware TSR by Dietmar Meschede to provide VESA 2.0 services on S3-based video cards with VESA 1.2 BIOS SeeAlso: AX=D001h"S3VBE",AX=D002h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE" --------V-10D001----------------------------- INT 10 - S3VBE/Core2.0 v3.00+ - GET ACTIVE OPTIONS AX = D001h Return: AX = FFFFh if supported BX = currently active options (see #00222) SeeAlso: AX=D000h"S3VBE",AX=D002h"S3VBE" Bitfields for S3VBE options: Bit(s) Description (Table 00222) 0 VESA VBE v2.0 extensions enabled 1 linear frame buffer enabled 2 low-resolution video mode support enabled 8 never clear video memory during VBE mode set (v3.10+) ---debug options--- 12 report VBE version 1.2 (v3.10+) 13 always fail AX=4F0Ah (v3.10+) 14 don't copy video mode list (v3.12+) SeeAlso: #00216 --------V-10D002----------------------------- INT 10 - S3VBE/Core2.0 v3.00+ - SET ACTIVE OPTIONS AX = D002h BX = new active options (see #00222) Return: AX = FFFFh if supported SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE" --------V-10D003----------------------------- INT 10 U - S3VBE/Core2.0 v3.10+ - GET VBE/Core CAPABILITIES AX = D003h Return: AX = FFFFh if supported BX = capabilities bit 0: SpeedUp = activate/deactivate linear addressing at A0000h for VBE functions 04h/05h SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE",AX=D004h"S3VBE",AX=D005h"S3VBE" --------V-10D004----------------------------- INT 10 U - S3VBE/Core2.0 v3.10+ - ACTIVATE SPEED-UP AX = D004h Return: AX = FFFFh if supported BX = status 0000h SpeedUp activated 0001h SpeedUp not possible (wrong memory organization for mode) 0002h SpeedUp not possible (linear frame buffer active) Note: called by S3 SpeedUp (see AX=C000h) SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE" --------V-10D005----------------------------- INT 10 U - S3VBE/Core2.0 v3.10+ - DEACTIVATE SPEED-UP AX = D005h Return: AX = FFFFh if supported BX = status 0000h SpeedUp deactivated 0001h SpeedUp not possible (wrong memory organization for mode) 0002h SpeedUp not possible (linear frame buffer active) Notes: called by S3 SpeedUp (see AX=C000h) functions 06h-FFh (e.g. AX=D006h-D0FFh) are considered reserved by v3.10+ and return AX=5555h SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D004h"S3VBE" --------V-10D1------------------------------- INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ??? AH = D1h AL = 01h Return: ??? Note: called by AH=D0h SeeAlso: AH=D0h,AH=D4h --------V-10D4------------------------------- INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ??? AH = D4h AL = 29h Return: ??? Note: called by AH=D0h SeeAlso: AH=D0h,AH=D1h --------V-10D5------------------------------- INT 10 - Netroom SCRNCLK - ??? AH = D5h ??? Return: ??? Program: SCRNCLK is a "cloaked" screen accelerator included with Netroom --------t-10DAAD----------------------------- INT 10 - TSRUNIT v1.10 - INSTALLATION CHECK AX = DAADh BX = check signature (different for each TSR) CX = 0000h Return: CX = return signature (nonzero) if installed ES = program segment prefix Program: TSRUNIT is a Turbo Pascal unit for creating TSRs by Nir Sofer --------V-10DFA5----------------------------- INT 10 U - VIDEO - Compaq ADAPT.COM - GET ??? DATA AREA AX = DFA5h Return: AX = BDBFh if supported ES:DI -> ??? data area BX = ES SeeAlso: AX=BFA0h --------V-10EE------------------------------- INT 10 - VIDEO - IBM "Private" Function AH = EEh SeeAlso: INT 13/AH=FFh"IBM" --------V-10EF------------------------------- INT 10 - VIDEO - MSHERC.COM - GET VIDEO ADAPTER TYPE AND MODE AH = EFh Return: DL = video adapter type 00h original Hercules 01h Hercules Plus (port 03BAh reads x001xxxxx) 02h Hercules InColor (port 03BAh reads x101xxxxx) FFh not a Hercules-compatible card (port 03BAh bit 7 not pulsing) DH = memory mode byte 00h "half" mode 01h "full" mode FFh not a Hercules-compatible card Program: MSHERC.COM/QBHERC.COM is a support program for the Microsoft Quick languages which makes their graphics libraries compatible with a Hercules card by adding video modes 08h and 88h, and supporting text in the new graphics modes. Notes: while in mode 08h or 88h, INT 10 supports the Hercules card much like a CGA. MSHERC performs an installation check by setting DL=FFh and testing whether it has been changed on return, which causes it to reinstall itself when no HGC is present (or HGC emulation has temporarily been disabled); a better installation check would be to use DX=80FFh and check whether DX has been changed reportedly returns DH=00h on some not-entirely-Hercules-compatible cards Index: installation check;MSHERC --------V-10F0------------------------------- INT 10 - EGA Register Interface Library - READ ONE REGISTER AH = F0h BL = register number BH = 00h DX = group index (see #00223) Return: BL = data Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 compatibility box, and others; it is used for software virtualization of write-only registers on an EGA video adapter, so that multiple programs may peacefully coexist without clobbering each other's display settings SeeAlso: AH=F1h"EGA",AH=F2h"EGA",AH=FAh"EGA",INT 2F/AX=BC00h (Table 00223) Values for group index: Pointer/data chips 00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes 08h Sequencer (5 registers) 3C4h 10h Graphics Controller (9 registers) 3CEh 18h Attribute Controller (20 registers) 3C0h Single registers 20h Miscellaneous Output register 3C2h 28h Feature Control register (3BAh mono modes, 3DAh color modes) 30h Graphics 1 Position register 3CCh 38h Graphics 2 Position register 3CAh --------V-10F0------------------------------- INT 10 - VHRBIOS.SYS - INSTALLATION CHECK AH = F0h Return: BX = 4F4Bh ('OK') Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" black&white A4/portrait monitor SeeAlso: AH=F1h"VHRBIOS.SYS",AH=F2h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS" SeeAlso: AH=96h"VHRBIOS.SYS" --------V-10F1------------------------------- INT 10 - EGA Register Interface Library - WRITE ONE REGISTER AH = F1h DX = group index (see #00223) if single register: BL = value to write otherwise BL = register number BH = value to write Return: BL = data Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 compatibility box, and others SeeAlso: AX=7F05h,AH=F0h"EGA",AH=F3h"EGA",AH=FAh"EGA" --------V-10F1------------------------------- INT 10 - VHRBIOS.SYS - SET REVERSE VIDEO AH = F1h AL = new video state (bit 5 set for black text on white, clear for white on black) Return: ??? Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" black&white A4/portrait monitor SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F3h"VHRBIOS.SYS" --------V-10F2------------------------------- INT 10 - EGA Register Interface Library - READ REGISTER RANGE AH = F2h CH = starting register number CL = number of registers (>1) DX = group index (00h,08h,10h,18h) (see #00223) ES:BX -> buffer, CL bytes Return: nothing Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 compatibility box, and others SeeAlso: AH=F0h"EGA",AH=F3h"EGA",AH=FAh"EGA" --------V-10F2------------------------------- INT 10 - VHRBIOS.SYS - ??? AH = F2h Return: ??? Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" black&white A4/portrait monitor SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS" --------V-10F3------------------------------- INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE AH = F3h CH = starting register CL = number of registers (>1) DX = group index (00h,08h,10h,18h) (see #00223) ES:BX -> buffer, CL bytes Return: nothing Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 compatibility box, and others SeeAlso: AX=7F05h,AH=F1h"EGA",AH=F2h"EGA",AH=F4h"EGA" --------V-10F3------------------------------- INT 10 - VHRBIOS.SYS - SWITCH BETWEEN DUAL MONITORS??? AH = F3h Return: ??? Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" black&white A4/portrait monitor SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=F6h"VHRBIOS.SYS" --------V-10F4------------------------------- INT 10 - EGA Register Interface Library - READ REGISTER SET AH = F4h CX = number of registers to read (>1) ES:BX -> table of register records (see #00224) Return: register values in table filled in Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 compatibility box, and others SeeAlso: AH=F0h"EGA",AH=F2h"EGA",AH=F5h"EGA" Format of EGA RIL entries in table of register records: Offset Size Description (Table 00224) 00h WORD group index Pointer/data chips 00h CRTC (3B4h mono modes, 3D4h color modes) 08h Sequencer 3C4h 10h Graphics Controller 3CEh 18h Attribute Controller 3C0h Single registers 20h Miscellaneous Output register 3C2h 28h Feature Control register (3BAh mono modes, 3DAh color) 30h Graphics 1 Position register 3CCh 38h Graphics 2 Position register 3CAh 02h BYTE register number (0 for single registers) 03h BYTE register value --------V-10F4------------------------------- INT 10 - VHRBIOS.SYS - GET VERSION AH = F4h Return: AX = driver version (AH = major, AL = minor) Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" black&white A4/portrait monitor SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F5h"VHRBIOS.SYS" --------V-10F5------------------------------- INT 10 - EGA Register Interface Library - WRITE REGISTER SET AH = F5h CX = number of registers to write (>1) ES:BX -> table of records (see #00224) Return: nothing Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 compatibility box, and others SeeAlso: AX=7F05h,AH=F1h"EGA",AH=F3h"EGA",AH=F4h"EGA" --------V-10F5------------------------------- INT 10 - VHRBIOS.SYS - GET VENDOR ID AH = F5h Return: AXBX = vendor ID (4D44h:5349h = 'MDSI' for Micro Display Systems Inc.) Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" black&white A4/portrait monitor SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=F6h"VHRBIOS.SYS" --------V-10F6------------------------------- INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS AH = F6h Return: nothing Note: provided by the Microsoft Mouse driver, OS/2 compatibility box, and others SeeAlso: AH=F5h"EGA",AH=F7h"EGA" --------V-10F6------------------------------- INT 10 - VHRBIOS.SYS - GET INFO AH = F6h AL = what to get 00h device driver state Return: AX = device driver state 01h video mode info Return: AL = video mode DH = screen height in rows DL = screen width in columns Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" black&white A4/portrait monitor SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=96h"VHRBIOS.SYS --------V-10F7------------------------------- INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE AH = F7h DX = port number Pointer/data chips 00h CRTC (3B4h mono modes, 3D4h color modes) 08h Sequencer 3C4h 10h Graphics Controller 3CEh 18h Attribute Controller 3C0h Single registers 20h Miscellaneous Output register 3C2h 28h Feature Control register (3BAh mono modes, 3DAh color modes) 30h Graphics 1 Position register 3CCh 38h Graphics 2 Position register 3CAh ES:BX -> table of one-byte entries, one byte to be written to each register Return: nothing Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 compatibility box, and others SeeAlso: AH=F0h"EGA",AH=F6h"EGA" --------V-10FA--BX0000----------------------- INT 10 - EGA Register Interface Library - INTERROGATE DRIVER AH = FAh BX = 0000h Return: BX = 0000h if RIL driver not present ES:BX -> EGA Register Interface version number, if present: byte 0 = major release number byte 1 = minor release number Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 compatibility box, and others SeeAlso: AH=F0h"EGA",AH=F6h"EGA",INT 2F/AX=BC00h --------K-10FA------------------------------- INT 10 - FASTBUFF.COM - INSTALLATION CHECK AH = FAh Return: AX = 00FAh if installed ES = segment of resident code Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David Steiner Index: screen saver;FASTBUFF --------V-10FE------------------------------- INT 10 - TopView - GET SHADOW BUFFER AH = FEh ES:DI -> assumed video buffer B800h:0000h color text/CGA graphics, B000h:0000h mono text, or A000h:0000h EGA/VGA graphics (RSIS environments only) Return: ES:DI -> actual video buffer for calling process Desc: Determine the address of the virtual screen to which the program should write instead of the actual video memory; this permits programs to be multitasked without interfering with each other's output, and allows memory managers to move the video memory to permit larger programs to be loaded. Notes: if no multitasker or RSIS-compliant environment is installed, ES:DI is returned unchanged; RSIS is the Relocated Screen Interface Specification for display pages other than 0, use AH=05h and AH=0Fh to determine whether a particular page exists TopView requires a call to AH=FFh to notify it that the screen has changed; DESQview will check for changes itself until the first call to AH=FFh SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview" SeeAlso: INT 21/AH=ECh"DoubleDOS" --------V-10FF------------------------------- INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER AH = FFh CX = number of consecutive changed characters ES:DI -> first changed character in shadow buffer Return: nothing Notes: avoid CX=0000h DESQview will discontinue the automatic screen updating initiated by AH=FEh after this call not supported (ignored) by DESQview/X 1.0x SeeAlso: AH=93h,AH=FEh --------E-10FF------------------------------- INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS AH = FFh AL = video mode (see #00225) Program: GO32.EXE is a DOS extender included as part of the 80386 port of the GNU C/C++ compiler by DJ Delorie and distributed as DJGPP SeeAlso: AH=00h,INT 21/AH=FFh"GO32" (Table 00225) Values for GO32 video mode number: 00h 80x25 text 01h default text 02h CXxDX text 03h biggest text 04h 320x200 graphics 05h default graphics 06h CXxDX graphics 07h biggest non-interlaced graphics 08h biggest graphics Index: video modes;GO32 --------V-10FF------------------------------- INT 10 - VIDEO - Oak VGA BIOS v1.02+ - SET EMULATION AH = FFh AL = emulation 43h ('C') CGA emulation 45h ('E') EGA emulation 4Dh ('M') Hercules emulation 56h ('V') VGA emulation ES:DI -> signature string "Calamity" Return: VGA switched to suggested mode SeeAlso: AH=00h,AX=007Fh/BH=00h,AX=007Fh/BH=02h,AX=5F01h --------R-10FF00----------------------------- INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP AX = FF00h Return: BL = state 00h not connected 01h connected SeeAlso: AX=FF01h,AX=FF02h --------R-10FF01----------------------------- INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE AX = FF01h Return: nothing SeeAlso: AX=FF00h,AX=FF02h --------R-10FF02----------------------------- INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED AX = FF02h Return: ES:DI -> ASCIZ phone number SeeAlso: AX=FF00h,AX=FF01h --------C-11--------------------------------- INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK Desc: automatically generated by the CPU when the AC flag is set, the current privilege level is 3, and a misaligned memory access (WORD not on an even address or DWORD not on a multiple of 4) is made Note: not all V86 monitors allow the AC flag to be set, such as Turbo Debugger 386 SeeAlso: INT 12"CPU" --------B-11--------------------------------- INT 11 - BIOS - GET EQUIPMENT LIST Return: (E)AX = BIOS equipment list word (see #00226,#03215 at INT 4B"Tandy") Note: since older BIOSes do not know of the existence of EAX, the high word of EAX should be cleared before this call if any of the high bits will be tested SeeAlso: INT 4B"Tandy 2000",MEM 0040h:0010h Bitfields for BIOS equipment list: Bit(s) Description (Table 00226) 0 floppy disk(s) installed (number specified by bits 7-6) 1 80x87 coprocessor installed 3-2 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) 5-4 initial video mode 00 EGA, VGA, or PGA 01 40x25 color 10 80x25 color 11 80x25 monochrome 7-6 number of floppies installed less 1 (if bit 0 set) 8 DMA support installed (PCjr, Tandy 1400LT) DMA support *not* installed (Tandy 1000's) 11-9 number of serial ports installed 12 game port installed 13 serial printer attached (PCjr) internal modem installed (PC/Convertible) 15-14 number of parallel ports installed ---Compaq, Dell, and many other 386/486 machines-- 23 page tables set so that Weitek coprocessor addressable in real mode 24 Weitek math coprocessor present ---Compaq Systempro--- 25 internal DMA parallel port available 26 IRQ for internal DMA parallel port (if bit 25 set) 0 = IRQ5 1 = IRQ7 28-27 parallel port DMA channel 00 DMA channel 0 01 DMA channel 0 ??? 10 reserved 11 DMA channel 3 Notes: Some implementations of Remote (Initial) Program Loader (RPL/RIPL) don't set bit 0 to indicate a "virtual" floppy drive, although the RPL requires access to its memory image through a faked drive A:. This may have caused problems with releases of DOS 3.3x and earlier, which assumed A: and B: to be invalid drives then and would discard any attempts to access these drives. Implementations of RPL should set bit 0 to indicate a "virtual" floppy. The IBM PC DOS 3.3x-2000 IBMBIO.COM contains two occurences of code sequences like: INT 11h JMP SHORT skip DB 52h,50h,53h; "RPS" skip: OR AX,1 TEST AX,1 While at the first glance this seems to be a bug since it just wastes memory and the condition is always true, this could well be a signature for an applyable patch to stop it from forcing AX bit 0 to be always on. MS-DOS IO.SYS does not contain these signatures, however. BUGs: Some old BIOSes didn't properly report the count of floppy drives installed to the system. In newer systems INT 13h/AH=15h can be used to retrieve the number of floppy drives installed. Award BIOS v4.50G and v4.51PG erroneously set bit 0 even if there are no floppy drives installed; use two calls to INT 13/AH=15h to determine whether any floppies are actually installed SeeAlso: INT 12"BIOS",#03215 at INT 4B"Tandy 2000" --------d-11----SI6A6A----------------------- INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6 SI = 6A6Ah AH = command (see #00227) AL = SCSI Addressing (see #00228) Return: CF clear if successful DI = 6A6Ah if AH=01h on entry (maybe for all functions???) AH = ??? for command 01h CF set on error AL = error code SeeAlso: INT 21/AX=4402h"ASPI" (Table 00227) Values for SDLP command: 00h SDLP initialization 01h SDLP System Identify 02h simple read sectors 03h simple write sectors 04h simple verify sectors/seek to sector 05h get device size/type 06h ready unit 07h format unit 08h diagnostics 09h rewind 0Ah erase 0Bh write filemarks 0Ch space 0Dh prevent/allow media removal 0Eh load/unload media 0Fh reserved - returns good status 10h set block size 11h write setmark 12h set error level 13h get address of Request Sense Buffer 14h get SDLP error via Request Sense F0h Vendor Unique Function (WD7000-FASST2 only) FDh reset current SCSI HAC FEh get/set current SCSI HAC FFh execute SCSI command Bitfields for SDLP SCSI addressing: Bit(s) Description (Table 00228) 7-6 Host Adapter 5-3 SCSI Target ID 2-0 SCSI Target LUN (logical unit number) --------V-110225BX6900----------------------- INT 11 - Blank-It Screen Blanker - INSTALLATION CHECK AX = 0225h BX = 6900h Return: BL = 23h ES:DI -> ASCIZ "BLNKIT" Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems, Inc. SeeAlso: AX=0225h/BX=6902h,AX=0225h/BX=6908h,AX=0225h/BX=6909h,INT 14/AX=AA01h Index: screen saver;Blank-It --------V-110225BX6901----------------------- INT 11 - Blank-It Screen Blanker - SET TIMEOUT FOR SCREEN BLANKING AX = 0225h BX = 6901h CX = timeout in timer ticks (18.2/second) or 0000h to disable timeout largest value is 59 minutes (FBACh or 64428) Return: CF clear if successful DI = 6A6Ah (possibly also 6A6Ah for all following functions) AH = ??? CF set on error AL = error code SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6904h Index: screen saver;Blank-It --------V-110225BX6902----------------------- INT 11 - Blank-It Screen Blanker - ENABLE THE SOFTWARE AX = 0225h BX = 6902h Return: CF clear if successful CF set on error AL = error code SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6903h Index: screen saver;Blank-It --------V-110225BX6903----------------------- INT 11 - Blank-It Screen Blanker - DISABLE THE SOFTWARE AX = 0225h BX = 6903h Return: CF clear if successful CF set on error AL = error code SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6902h Index: screen saver;Blank-It --------V-110225BX6904----------------------- INT 11 - Blank-It Screen Blanker - GET BLANKING TIMEOUT AX = 0225h BX = 6904h Return: CF clear if successful BX = timeout (see AX=0225h/BX=6901h) CF set on error AL = error code SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6901h Index: screen saver;Blank-It --------V-110225BX6905----------------------- INT 11 - Blank-It Screen Blanker - ENABLE WINDOWS COMPATIBILITY MODE AX = 0225h BX = 6905h Return: CF clear if successful CF set on error AL = error code SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6906h Index: screen saver;Blank-It --------V-110225BX6906----------------------- INT 11 - Blank-It Screen Blanker - DISABLE WINDOWS COMPATIBILITY MODE AX = 0225h BX = 6906h Return: CF clear if successful CF set on error AL = error code Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems, Inc. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6905h Index: screen saver;Blank-It --------V-110225BX6907----------------------- INT 11 - Blank-It Screen Blanker - UNBLANK THE SCREEN AX = 0225h BX = 6907h Return: CF clear if successful CF set on error AL = error code SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6908h Index: screen saver;Blank-It --------V-110225BX6908----------------------- INT 11 - Blank-It Screen Blanker - BLANK THE SCREEN AX = 0225h BX = 6908h Return: CF clear if successful CF set on error AL = error code SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6907h Index: screen saver;Blank-It --------V-110225BX6909----------------------- INT 11 - Blank-It Screen Blanker - SET HOTKEY FOR MANUAL BLANKING AX = 0225h BX = 6909h CL = key scan code (see #00229) Return: CF clear if successful CF set on error AL = error code Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems, Inc. SeeAlso: AX=0225h/BX=6900h Index: screen saver;Blank-It|hotkeys;Blank-It (Table 00229) Values for Blank-It hotkey scan code: 00h No hot key 1Dh Left CTRL 2Ah Left Shift 36h Right Shift 57h F11 58h F12 SeeAlso: #00006 --------G-1105D7----------------------------- INT 11 CU - Borland C++ IDE - INSTALLED CALLOUT AX = 05D7h BX = product ID (0088h) Note: called by the BC++ IDE when an application calls INT 12/AX=05D7h/BX=05D7h SeeAlso: INT 12/AX=05D7h/BX=05D7h Index: installation check;Borland C++ IDE --------F-1177------------------------------- INT 11 - RainbowFAX v1.3 - SFENGINE API - OPERATIONAL CONTROL AH = 77h AL = subfunction 01h request SFENGINE start Return: AX = 0001h 02h check if SFENGINE started Return: AX = 0000h or 0001h 03h request SFENGINE stop Return: AX = 0001h 04h check if SFENGINE stopped Return: AX = 0000h or 0001h 05h installation check Return: AX = 0001h 06h uninstall??? BX:DX -> return address for successful uninstall??? Return: (at caller's address) AX = 0000h else Return: AX = FFFFh (invalid subfunction) Return: ES:DX -> ASCIZ signature string "SFAX ENGINE V1.0" followed by internal data area??? SeeAlso: AH=78h,AH=79h,AH=7Ah,AH=7Ch Index: installation check;RainbowFAX|installation check;SFENGINE Index: uninstall;RainbowFAX|uninstall;SFENGINE --------F-1178------------------------------- INT 11 - RainbowFAX v1.3 - SFENGINE API - ??? AH = 78h AL = subfunction 01h set ??? BX = new state for ??? 0000h ??? else ??? Return: AX = 0001h 02h set ??? BX = ??? CX = ??? Return: AX = 0001h 03h set ??? BX = new state for ??? 0000h ??? else ??? Return: AX = 0001h else Return: AX = FFFFh (invalid subfunction) SeeAlso: AH=77h,AH=79h,AH=7Ah,AH=7Ch --------F-1179------------------------------- INT 11 - RainbowFAX v1.3 - SFENGINE API - ??? AH = 79h AL = subfunction 01h set ??? flag Return: AX = previous state (0000h already set, 0001h clear) 02h clear ??? flag (refer to subfunc 01h) Return: AX = 0001h 03h set ??? flag (different from subfn 02h or 04h) Return: AX = 0001h 04h clear ??? flag (different from subfn 02h or 03h) Return: AX = 0001h else Return: AX = FFFFh (invalid subfunction) SeeAlso: AH=77h,AH=78h,AH=7Ah,AH=7Ch --------F-117A------------------------------- INT 11 - RainbowFAX v1.3 - SFENGINE API - ??? AH = 7Ah AL = subfunction 01h set ??? flag Return: AX = previous state (0000h already set, 0001h clear) 02h clear ??? flag Return: AX = 0001h 03h set ??? flag (different from subfn 02h) Return: AX = 0001h else Return: AX = FFFFh (invalid subfunction) SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ch --------F-117C01----------------------------- INT 11 - RainbowFAX v1.3 - SFENGINE API - SET ??? FLAG AX = 7C01h Return: AX = 0001h SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C02h,AX=7C03h --------F-117C02----------------------------- INT 11 - RainbowFAX v1.3 - SFENGINE API - CLEAR ??? FLAG AX = 7C02h Return: AX = 0001h SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C01h,AX=7C03h --------F-117C03----------------------------- INT 11 - RainbowFAX v1.3 - SFENGINE API - UNSUPPORTED FUNCTIONS AX = 7C03h-7CFFh Return: AX = FFFFh SeeAlso: AH=77h,AX=7C01h,AX=7C02h --------S-11BC--DX1954----------------------- INT 11 - BNU FOSSIL - INSTALLATION CHECK AH = BCh DX = 1954h Return: AX = 1954h ES:DX -> entry point of driver (instead of INT 14) SeeAlso: INT 14/AH=04h"FOSSIL" --------d-11FF--SI6A6A----------------------- INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND AH = FFh SI = 6A6Ah AL = SCSI Addressing (see #00230) CX = bytes of data to be transmitted (max FFF0h) DH = 00h DL = length of SCSI Command Descriptor Block DS:DI -> SCSI Command Descriptor Block ES:BX -> data buffer Return: CF set on error AL = error code CF clear if successful Note: because of busmaster operations with WD7000FASST avoid accessing video memory directly; check 386 memory manager for VDS support. The WD7000XTAT works with programmed IO and does not have this limitation. SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h Bitfields for SDLP SCSI addressing: Bit(s) Description (Table 00230) 2-0 SCSI Target LUN (logical unit number) 5-3 SCSI Target ID 7 write flag, set for write operations, clear otherwise --------T-11FFFECXFFFE----------------------- INT 11 - BACK&FORTH (before v1.62) API AX = FFFEh CX = FFFEh BX = function 00h installation check Return: AX = installation state 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 Index: installation check;BACK&FORTH --------B-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:0013h; in PC and XT, this value is set from the switches on the motherboard SeeAlso: INT 11"BIOS",INT 2F/AX=4A06h,INT 4C"Tandy 2000",MEM 0040h:0013h --------C-12--------------------------------- INT 12 - CPU-generated (Pentium +) - MACHINE CHECK EXCEPTION Notes: Intel documents this interrupt as CPU model-dependent for current Pentium processors, the reason for the machine check exception may be read from model-specific registers 00h and 01h (described, for example, in Christian Ludloff's 4P package) for Pentium Pro/II processors, the reason may be read from the MCG_STATUS MSR (see MSR 0000017Ah) this exception is enabled by bit 6 of CR4 SeeAlso: INT 11"CPU",MSR 00000000h,MSR 00000001h,MSR 0000017Ah --------K-12----CX1806----------------------- INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK CX = 1806h Return: AX = kilobytes of contiguous memory starting at absolute address 00000h CX = 1960h if installed Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows accented characters and box drawing on standard QWERTY keyboards; it also provides break-to-DOS and screen blanking capabilities SeeAlso: INT 14/AX=AA01h Index: screen saver;KEYBUI --------d-12----CX1807----------------------- INT 12 - PARKER v2.0+ - INSTALLATION CHECK CX = 1807h Return: AX = kilobytes of contiguous memory starting at absolute address 00000h CX = 1961h if installed Program: PARKER is an optionally-resident hard disk parking program by Johan Zwiekhorst --------G-1205D7BX05D7----------------------- INT 12 U - Borland C++ IDE - INSTALLATION CHECK AX = 05D7h (1495d) BX = 05D7h Note: the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded SeeAlso: INT 11/AX=05D7h --------v-124350BX4920----------------------- INT 12 C - CPI-standard virus - "FRIEND" CHECK AX = 4350h BX = 4920h CX = AB46h DX = 554Eh Return: if friendly (not to be infected) CX:DX -> ASCIZ identity code (changes yearly) SeeAlso: INT 13/AX=EC00h"VIRUS",INT 13/AX=5001h,INT 21/AX=0B56h --------T-12FFFECXFFFE----------------------- INT 12 - Back&Forth v1.62+ - API AX = FFFEh CX = FFFEh BX = function 00h installation check Return: AX = 0001h installed else not loaded 01h (reserved) 02h build program ID list (shareware Back&Forth) 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 02h get memory statistics (Back&Forth Professional) Return: AX = available swap memory, KBytes BX = maximum task size, KBytes DX = fixed overhead per task, excluding video/macro storage 03h switch to specified task (task need not be open yet) DX = two-letter program ID Return: AX = status 0000h if task undefined 0001h task switch will occur when safe 04h (reserved) 05h (reserved) 06h get version (documented only for Back&Forth Professional) Return: AX = version * 100 (v1.71 = 00ABh) 07h spawn program (Back&Forth Professional only???) ES:DI -> BF_SPAWN record (see #00232) Return: AX = status 0000h if no task handles free 0001h spawn will occur when safe 08h get open tasks (documented only for Back&Forth Professional) ES:DI -> task info buffer (see #00231,#00233) Return: AX = number of open tasks (max 20) Note: the supplied buffer must be large enough to hold 21 task entries 09h (reserved) ---Back&Forth Professional--- 0Ah get active clipboard filename Return: DX:AX -> ASCIZ clipboard filename 0Bh get active task number AX = active task number (00h-13h) BX = number of tasks allocated DX = maximum number of tasks 0Ch (reserved) 0Dh (reserved) 0Eh (reserved) 0Fh stuff string into keyboard buffer ES:DI -> ASCIZ string to be stuffed Return: nothing 10h check if in graphics mode Return: AX = state 0000h color text mode 0004h mono text mode FFFFh graphics mode 11h get Back&Forth Professional user number Return: AX = user number (0000h-00FFh) 12h switch task by task number DX = task number Return: AX = status 0000h attempted to switch to active task 0001h task switch will occur when safe FFFFh invalid task number 13h delete (kill) task DX = task number Return: AX = status 0000h attempted to delete the active task 0001h successfully deleted FFFFh invalid task number Note: the active task number will change if the deleted task was lower in the task list than the active task 14h get next available task handle Return: AX = next available task handle FFFFh if task table is full Program: Back & Forth is a task switcher by Progressive Solutions, Inc. SeeAlso: INT 11/AX=FFFEh Index: installation check;BACK&FORTH Format of Back&Forth task info buffer: Offset Size Description (Table 00231) 00h 21 BYTEs ASCIZ task name 15h BYTE hotkey shift state (as for INT 16/AH=02h) 16h WORD hotkey scan code (see also #00006) 18h WORD program ID Index: hotkeys;Back&Forth SeeAlso: #00232,#00233 Format of Back&Forth Professional BF_SPAWN record: Offset Size Description (Table 00232) 00h 21 BYTEs task description 15h BYTE flag: disable hotkeys 16h WORD environment size in bytes 18h BYTE hotkey shift flags 19h WORD hotkey scancode 1Bh WORD maximum number of EMS pages 1Dh WORD required memory in KBytes 1Fh 3 BYTEs DESQview-style two-letter program ID 22h 13 BYTEs base name of program to be run (no path or extension) 2Fh 66 BYTEs directory from which to start program 71h 66 BYTEs initial current directory for program SeeAlso: #00231,#00233 Format of Back&Forth Professional BF_TASK record: Offset Size Description (Table 00233) 00h DWORD Unix-style task start time (seconds since 1970/1/1) 04h 21 BYTEs task description 19h DWORD elapsed time in task (seconds) 1Dh WORD task ID 1Fh BYTE task hotkey keyboard flags 20h WORD task hotkey scan code (see also #00006) 22h DWORD time task was suspended/exited 26h WORD task handle SeeAlso: #00231,#00232 --------B-1300------------------------------- 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 #00234) CF clear if successful (returned AH=00h) CF set on error Note: forces controller to recalibrate drive heads (seek to track 0) for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems, both the master drive and the slave drive respond to the Reset function that is issued to either drive SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4D/AH=00h"TI Professional" SeeAlso: INT 56"Tandy 2000",MEM 0040h:003Eh --------B-1301------------------------------- 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 (see #00234) Note: some BIOSes return the status in AL; the PS/2 Model 30/286 returns the status in both AH and AL SeeAlso: AH=00h,INT 4D/AH=01h,MEM 0040h:0041h,MEM 0040h:0074h (Table 00234) Values for disk operation status: 00h successful completion 01h invalid function in AH or invalid parameter 02h address mark not found 03h disk write-protected 04h sector not found/read error 05h reset failed (hard disk) 05h data did not verify correctly (TI Professional PC) 06h disk changed (floppy) 07h drive parameter activity failed (hard disk) 08h DMA overrun 09h data boundary error (attempted DMA across 64K boundary or >80h sectors) 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 (PS/2 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 31h no media in drive (IBM/MS INT 13 extensions) 32h incorrect drive type stored in CMOS (Compaq) 40h seek failed 80h timeout (not ready) AAh drive not ready (hard disk) B0h volume not locked in drive (INT 13 extensions) B1h volume locked in drive (INT 13 extensions) B2h volume not removable (INT 13 extensions) B3h volume in use (INT 13 extensions) B4h lock count exceeded (INT 13 extensions) B5h valid eject request failed (INT 13 extensions) B6h volume present but read protected (INT 13 extensions) BBh undefined error (hard disk) CCh write fault (hard disk) E0h status register error (hard disk) FFh sense operation failed (hard disk) SeeAlso: #M0022 --------B-1302------------------------------- 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 1-63 (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 #00234) AL = number of sectors transferred (only valid if CF set for some BIOSes) Notes: errors on a floppy may be due to the motor failing to spin up quickly enough; the read should be retried at least three times, resetting the disk with AH=00h between attempts most BIOSes support "multitrack" reads, where the value in AL exceeds the number of sectors remaining on the track, in which case any additional sectors are read beginning at sector 1 on the following head in the same cylinder; the MSDOS CONFIG.SYS command MULTITRACK (or the Novell DOS DEBLOCK=) can be used to force DOS to split disk accesses which would wrap across a track boundary into two separate calls the IBM AT BIOS and many other BIOSes use only the low four bits of DH (head number) since the WD-1003 controller which is the standard AT controller (and the controller that IDE emulates) only supports 16 heads AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh) in order to perform direct accesses such as INT 13h reads and writes all versions of MS-DOS (including MS-DOS 7 [Windows 95]) have a bug which prevents booting on hard disks with 256 heads (FFh), so many modern BIOSes provide mappings with at most 255 (FEh) heads some cache drivers flush their buffers when detecting that DOS is bypassed by directly issuing INT 13h from applications. A dummy read can be used as one of several methods to force cache flushing for unknown caches (e.g. before rebooting). BUGS: When reading from floppies, some AMI BIOSes (around 1990-1991) trash the byte following the data buffer, if it is not arranged to an even memory boundary. A workaround is to either make the buffer word aligned (which may also help to speed up things), or to add a dummy byte after the buffer. MS-DOS may leave interrupts disabled on return from this function. Apparently some BIOSes or intercepting resident software have bugs that may destroy DX on return or not properly set the Carry flag. At least some Microsoft software frames calls to this function with PUSH DX, STC, INT 13h, STI, POP DX. on the original IBM AT BIOS (1984/01/10) this function does not disable interrupts for harddisks (DL >= 80h). On these machines the MS-DOS/ PC DOS IO.SYS/IBMBIO.COM installs a special filter to bypass the buggy code in the ROM (see CALL F000h:211Eh) SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM" SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02h --------B-1303------------------------------- 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 1-63 (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 #00234) AL = number of sectors transferred (only valid if CF set for some BIOSes) Notes: errors on a floppy may be due to the motor failing to spin up quickly enough; the write should be retried at least three times, resetting the disk with AH=00h between attempts most BIOSes support "multitrack" writes, where the value in AL exceeds the number of sectors remaining on the track, in which case any additional sectors are written beginning at sector 1 on the following head in the same cylinder; the CONFIG.SYS command MULTITRACK can be used to force DOS to split disk accesses which would wrap across a track boundary into two separate calls the IBM AT BIOS and many other BIOSes use only the low four bits of DH (head number) since the WD-1003 controller which is the standard AT controller (and the controller that IDE emulates) only supports 16 heads AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH under Windows95, an application must issue a physical volume lock on the drive via INT 21/AX=440Dh before it can successfully write to the disk with this function SeeAlso: AH=02h,AH=0Bh,AH=07h"V10DISK.SYS",AH=22h"PS/1",AH=43h"IBM" SeeAlso: INT 21/AX=440Dh"DOS 3.2+",INT 4D/AH=03h --------B-1304------------------------------- 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 1-63 (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 1985/11/15) Return: CF set on error CF clear if successful AH = status (see #00234) AL = number of sectors verified Notes: errors on a floppy may be due to the motor failing to spin up quickly enough (timeout error 80h); the write should be retried at least three times, resetting the disk with AH=00h between attempts on floppys, the operation should also be retried on media change (06h) detection. this function does not compare the disk with memory, it merely checks whether the sector's stored CRC matches the data's actual CRC the IBM AT BIOS and many other BIOSes use only the low four bits of DH (head number) since the WD-1003 controller which is the standard AT controller (and the controller that IDE emulates) only supports 16 heads AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH BUG: some Epson ROM BIOSes sometimes have problems properly handling this function. The workaround is to reset the disk (INT 13/AH=00h) before the call. SeeAlso: AH=02h,AH=44h,INT 4D/AH=04h,INT 4D/AH=06h --------B-1305------------------------------- 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 #00235) Return: CF set on error CF clear if successful AH = status (see #00234) 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 BUG: some old Compaq BIOSes have a bug when attempting to call this function from Windows Standard Mode with EMM386 loaded. A possible workaround is to call this function from Real Mode e.g. through DPMI function "Call Real Mode function with FAR return" (see INT 31/AX=0301h). SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E Format of floppy format address field buffer entry (one per sector in track): Offset Size Description (Table 00235) 00h BYTE track number 01h BYTE head number (0-based) 02h BYTE sector number 03h BYTE sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024) --------B-1305------------------------------- 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/track) bytes contain F,N for each sector F = sector type 00h for good sector 20h to unassign from alternate location 40h to assign to alternate location 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: CF set on error CF clear if successful AH = status code (see #00234) Notes: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more than 1024 cylinders by placing bits 10 and 11 of the cylinder number into bits 6 and 7 of DH for XT-type controllers on an AT or higher, AH=0Fh should be called first the IBM AT BIOS and many other BIOSes use only the low four bits of DH (head number) since the WD-1003 controller which is the standard AT controller (and the controller that IDE emulates) only supports 16 heads not all controller support sector types 20h and 40h under Windows95, an application must issue a physical volume lock on the drive via INT 21/AX=440Dh before it can successfully write to the disk with this function SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah --------d-1305------------------------------- INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND AH = 05h DL = hard drive ID ES:BX -> mode select data (see #00236) Return: CF set on error CF clear if successful AH = status code (see #00234) Notes: this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to format a SCSI disk with the desired parameters the mode select data below is from the SCSI-1 specification the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h Format of Future Domain SCSI mode select data: Offset Size Description (Table 00236) 00h BYTE number of bytes of remaining data (12 + vendor unique length) 01h BYTE reserved (0) 02h BYTE medium type (0 for hard disk) 03h BYTE reserved (0) 04h BYTE block descriptor length (8) 05h BYTE density code (0 for hard disk) 06h 3 BYTEs (big-endian) number of blocks (000000h for entire disk) 09h BYTE reserved (0) 0Ah 3 BYTEs (big-endian) block length (512 standard, or 256) 0Dh ??? vendor-specific parameter bytes (optional) --------d-13057FSI324D----------------------- INT 13 - 2M - FORMAT TRACK AX = 057Fh SI = 324Dh ("2M") CH = track number DH = head number DL = drive number ES:BX -> boot sector of future 2M diskette Return: CF set on error CF clear if successful AH = status (see #00234) Program: 2M is a TSR developed by Ciriaco Garc¡a de Celis to support non standard diskettes with 820-902/1476-1558K (5.25 DD/HD) and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED) InstallCheck: must search for a "CiriSOFT:2M:1.3" or "CiriSOFT:2MX:3.0" or similar (recomended ":2M:", ":2MX:", or ":2MB:" substrings) in the CiriSOFT TSR interface Notes: it is not necessary to call AH=17h or AH=18h first (will be ignored) the diskette format must always begin on cylinder 0 head 0 the boot sector can be obtained from an already-formatted 2M diskette (by calling AH=02h with head number 00h in 2M v1.x and with head number 80h for 2M v2+) since 2M v2.0, the BOOT sector is emulated using the first physical sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED diskettes store the SuperBOOT code. To skip the FAT2 emulation (using FAT1) of 2M, in order to read the SuperBOOT code, head number must be 80h-81h instead 0-1 (bit 7 active) in standard read/write functions. This lets diskcopy programs format 2M target diskettes copying SuperBOOT code. If the target diskette is already 2MF formatted (containing boot code) this trick it is not necessary. when using STV technology (offset 65 of boot sector equal to 1) it is necessary to write the full track before formatting (except track 0 side 0) to complete the format and skip future CRC errors on read; in track 0 side 1 the head used must be 81h instead 1. Diskcopy programs may do a format-write-verify sequential phases to improve performance SeeAlso: AH=05h"FLOPPY",AH=18h/CX=5055h,INT 2F"CiriSOFT" --------B-1306------------------------------- 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 #00234) Note: AWARD AT BIOS and AMI 386sx BIOS have been 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=05h"FIXED",AH=07h"FIXED" --------d-1306------------------------------- INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING AH = 06h AL = interleave (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique) DL = hard drive ID DH = defect list info (see #00237) ES:BX -> defect table A, B or C (see #00238,#00239,#00240) Return: CF set on error CF clear if successful AH = status code (see #00234) Notes: block addresses must be in ascending order (for table B, cylinder is most significant, byte from index least significant; for table C, cylinder is most significant, sector number least significant) table B defect bytes from index of FFFFFFFFh indicates that the entire track shall be reassigned table C defect sector number of FFFFFFFFh indicates that the entire track shall be reassigned the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI" Bitfields for Future Domain SCSI defect list info: Bit(s) Description (Table 00237) 7-5 drive LUN 4 defect list is available 3 defect list is complete (erase drive's defect list) 2-0 defect table format (000=use defect table A, 100=use defect table B, 101=use defect table C) Format of Future Domain SCSI defect table A: Offset Size Description (Table 00238) 00h WORD number of bytes remaining in table 02h BYTE reserved (0) 03h BYTE reserved (0) 04h WORD (big-endian) defect list length (4*number of defects) 06h 4 DWORDs (big-endian) defect block addresses Format of Future Domain SCSI defect table B: Offset Size Description (Table 00239) 00h WORD number of bytes remaining in table 02h BYTE reserved (0) 03h BYTE reserved (0) 04h WORD (big-endian) defect list length (8*number of defects) 06h 8N BYTEs defect list [array] (see #00241) Format of Future Domain SCSI defect table C: Offset Size Description (Table 00240) 00h WORD number of bytes remaining in table 02h BYTE reserved (0) 03h BYTE reserved (0) 04h WORD (big-endian) defect list length (8*number of defects) 06h 8N BYTEs defect list [array] (see #00241) Format of Future Domain SCSI defect list entry: Offset Size Description (Table 00241) 00h 3 BYTEs (big-endian) cylinder number of defect 03h BYTE head number of defect 04h DWORD (big-endian) defect bytes from index --------d-1306------------------------------- INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES AH = 06h Return: AH = status code (see #00234) CF clear if successful AL = first drive supported (80h nonconcurrent operation, 81h concurrent operation) CF set on error Desc: determine the number of the first supported SCSI drive Note: the return value is 80h when two SCSI drives are supported, 81h if only one SCSI drive is installed SeeAlso: AH=08h"PC",#00732 at INT 1A/AX=B102h --------d-1306------------------------------- INT 13 - V10DISK.SYS - READ DELETED SECTORS AH = 06h AL = number of sectors CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive ES:BX -> buffer Return: AH = status code (see #00234) Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies SeeAlso: AH=02h,AH=07h"V10DISK.SYS" --------B-1307------------------------------- 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 #00234) Note: AWARD AT BIOS and AMI 386sx BIOS have been 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=05h"FIXED",AH=06h"FIXED",AH=1Ah --------d-1307------------------------------- INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE AH = 07h AL = interleave (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique) DL = hard drive ID Return: CF set on error CF clear if successful AH = status code (see #00234) SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED" --------d-1307------------------------------- INT 13 - V10DISK.SYS - WRITE DELETED SECTORS AH = 07h AL = number of sectors CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive ES:BX -> buffer Return: AH = status code (see #00234) Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies SeeAlso: AH=03h,AH=06h"V10DISK.SYS" --------B-1308------------------------------- INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI) AH = 08h DL = drive (bit 7 set for hard disk) ES:DI = 0000h:0000h to guard against BIOS bugs Return: CF set on error AH = status (07h) (see #00234) CF clear if successful AH = 00h AL = 00h on at least some BIOSes BL = drive type (AT/PS2 floppies only) (see #00242) CH = low eight bits of maximum cylinder number CL = maximum sector number (bits 5-0) high two bits of maximum cylinder number (bits 7-6) DH = maximum head number DL = number of drives ES:DI -> drive parameter table (floppies only) Notes: may return successful even though specified drive is greater than the number of attached drives of that type (floppy/hard); check DL to ensure validity for systems predating the IBM AT, this call is only valid for hard disks, as it is implemented by the hard disk BIOS rather than the ROM BIOS the IBM ROM-BIOS returns the total number of hard disks attached to the system regardless of whether DL >= 80h on entry. Toshiba laptops with HardRAM return DL=02h when called with DL=80h, but fail on DL=81h. The BIOS data at 40h:75h correctly reports 01h. may indicate only two drives present even if more are attached; to ensure a correct count, one can use AH=15h to scan through possible drives Reportedly some Compaq BIOSes with more than one hard disk controller return only the number of drives DL attached to the corresponding controller as specified by the DL value on entry. However, on Compaq machines with "COMPAQ" signature at F000h:FFEAh, MS-DOS/PC DOS IO.SYS/IBMBIO.COM call INT 15/AX=E400h and INT 15/AX=E480h to enable Compaq "mode 2" before retrieving the count of hard disks installed in the system (DL) from this function. the maximum cylinder number reported in CX is usually two less than the total cylinder count reported in the fixed disk parameter table (see INT 41h,INT 46h) because early hard disks used the last cylinder for testing purposes; however, on some Zenith machines, the maximum cylinder number reportedly is three less than the count in the fixed disk parameter table. for BIOSes which reserve the last cylinder for testing purposes, the cylinder count is automatically decremented on PS/1s with IBM ROM DOS 4, nonexistent drives return CF clear, BX=CX=0000h, and ES:DI = 0000h:0000h machines with lost CMOS memory may return invalid data for floppy drives. In this situation CF is cleared, but AX,BX,CX,DX,DH,DI, and ES contain only 0. At least under some circumstances, MS-DOS/ PC DOS IO.SYS/IBMBIO.COM just assumes a 360 KB floppy if it sees CH to be zero for a floppy. the PC-Tools PCFORMAT program requires that AL=00h before it will proceed with the formatting if this function fails, an alternative way to retrieve the number of floppy drives installed in the system is to call INT 11h. In fact, the MS-DOS/PC-DOS IO.SYS/IBMBIO.COM attempts to get the number of floppy drives installed from INT 13/AH=08h, when INT 11h AX bit 0 indicates there are no floppy drives installed. In addition to testing the CF flag, it only trusts the result when the number of sectors (CL preset to zero) is non-zero after the call. BUGS: several different Compaq BIOSes incorrectly report high-numbered drives (such as 90h, B0h, D0h, and F0h) as present, giving them the same geometry as drive 80h; as a workaround, scan through disk numbers, stopping as soon as the number of valid drives encountered equals the value in 0040h:0075h a bug in Leading Edge 8088 BIOS 3.10 causes the DI,SI,BP,DS, and ES registers to be destroyed some Toshiba BIOSes (at least before 1995, maybe some laptops??? with 1.44 MB floppies) have a bug where they do not set the ES:DI vector even for floppy drives. Hence these registers should be preset with zero before the call and checked to be non-zero on return before using them. Also it seems these BIOSes can return wrong info in BL and CX, as S/DOS 1.0 can be configured to preset these registers as for an 1.44 MB floppy. the PS/2 Model 30 fails to reset the bus after INT 13/AH=08h and INT 13/AH=15h. A workaround is to monitor for these functions and perform a transparent INT 13/AH=01h status read afterwards. This will reset the bus. The MS-DOS 6.0 IO.SYS takes care of this by installing a special INT 13h interceptor for this purpose. AD-DOS may leave interrupts disabled on return from this function. Some Microsoft software explicitly sets STI after return. SeeAlso: AH=06h"Adaptec",AH=13h"SyQuest",AH=48h,AH=15h,INT 1E SeeAlso: INT 41"HARD DISK 0" (Table 00242) Values for diskette drive type: 01h 360K 02h 1.2M 03h 720K 04h 1.44M 05h ??? (reportedly an obscure drive type shipped on some IBM machines) 2.88M on some machines (at least AMI 486 BIOS) 06h 2.88M 10h ATAPI Removable Media Device --------d-1308------------------------------- INT 13 - V10DISK.SYS - SET FORMAT AH = 08h AL = number of sectors CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive Return: AH = status code (see #00234) Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies Note: details not available SeeAlso: AH=03h,AH=06h"V10DISK.SYS" --------y-130800DLF0------------------------- INT 13 - SecureDrive - INSTALLATION CHECK AX = 08000h DL = F0h Return: AX = EDCBh for version 1.0-1.2 AX = EDCCh for version 1.3 CX = code segment DX = data address within code segment Program: SecureDrive by Mike Ingle allows you to create an encrypted partition on your harddisk. --------B-1309------------------------------- 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 #00234) 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"HARD DISK 0",INT 46"HARD DISK 1" --------B-130A------------------------------- INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later) AH = 0Ah AL = number of sectors (01h may be only value supported) 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 #00234) AL = number of sectors transferred Notes: this function reads in four to seven bytes of error-correcting code along with each sector's worth of information data errors are not automatically corrected, and the read is aborted after the first sector with an ECC error used for diagnostics only on PS/2 systems; IBM officially classifies this function as optional BUG: on the original IBM AT BIOS (1984/01/10) this function does not disable interrupts for harddisks (DL >= 80h). On these machines the MS-DOS/ PC DOS IO.SYS/IBMBIO.COM installs a special filter to bypass the buggy code in the ROM (see CALL F000h:211Eh) SeeAlso: AH=02h,AH=0Bh,MEM 0040h:0074h --------B-130B------------------------------- INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later) AH = 0Bh AL = number of sectors (01h may be only value supported) 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 #00234) AL = number of sectors transferred Notes: each sector's worth of data must be followed by four to seven bytes of error-correction information used for diagnostics only on PS/2 systems; IBM officially classifies this function as optional SeeAlso: AH=03h,AH=0Ah,MEM 0040h:0074h --------B-130C------------------------------- 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 #00234) SeeAlso: AH=00h,AH=02h,AH=0Ah,AH=47h --------B-130D------------------------------- 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 #00234) Notes: reinitializes the hard disk controller, resets the specified drive's parameters, and recalibrates the drive's heads (seek to track 0) for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems, both the master drive and the slave drive respond to the Reset function that is issued to either drive not for PS/2 ESDI drives SeeAlso: AH=00h,INT 21/AH=0Dh --------B-130E------------------------------- 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 #00234) Notes: transfers controller's sector buffer. No data is read from the drive used for diagnostics only on PS/2 systems SeeAlso: AH=0Ah --------B-130F------------------------------- 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 #00234) Notes: does not write data to the drive should be called before formatting to initialize an XT-type controller's sector buffer used for diagnostics only on PS/2 systems SeeAlso: AH=0Bh --------B-1310------------------------------- 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 #00234 at AH=01h) SeeAlso: AH=11h --------B-1311------------------------------- 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 #00234 at AH=01h) Note: causes hard disk controller to seek the specified drive to cylinder 0 SeeAlso: AH=00h,AH=0Ch,AH=10h,AH=19h"FIXED DISK",MEM 0040h:003Eh --------B-1312------------------------------- 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 #00234 at AH=01h) AL = 00h SeeAlso: AH=13h,AH=14h --------d-1312------------------------------- INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK AH = 12h DL = hard drive ID Return: CF set on error CF clear if successful AH = status code (see #00234 at AH=01h) Notes: available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A if the given drive is a SCSI device, the SCSI Stop Unit command is sent and either "Disk prepared for shipping" or "Disk Stop command failed" is displayed the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) --------d-1312------------------------------- INT 13 - SyQuest - START/STOP SCSI DISK AH = 12h AL = subfunction 00h start disk 01h stop disk CX = wait flag 00h wait for ready 01h don't wait for ready DL = hard drive ID (bit 7 for hard disks must be set) Return: CF set on error CF clear if successful AH = status 00h successful 01h invalid function request 80h timeout SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest" --------B-1313------------------------------- 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 #00234 at AH=01h) AL = 00h SeeAlso: AH=12h"HARD DISK",AH=14h"HARD DISK" --------d-1313------------------------------- INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+) AH = 13h DL = drive ID (bit 7 set for hard disks) Return: CF set on error AH = status (07h) (see #00234 at AH=01h) CF clear if successful AH = 00h BL = drive type (AT/PS2 floppies only) (see #00242) 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: the return values are identical to the standard INT 13/AH=08h, but the number of drives is not limited to 2, so scanning all possible drive numbers with the Read DASD Type call (AH=15h) should generally be preferred to determine the number of drives attached to the system. SeeAlso: AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest" --------B-1314------------------------------- INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC AH = 14h Return: CF set on error CF clear if successful AH = status code (see #00234 at AH=01h) AL = 00h SeeAlso: AH=12h,AH=13h --------B-1315------------------------------- INT 13 - DISK - GET DISK TYPE (XT 1986/1/10 or later,XT286,AT,PS) AH = 15h DL = drive number (bit 7 set for hard disk) (AL = FFh, CX = FFFFh, see Note) Return: CF clear if successful AH = type code 00h no such drive (SpeedStor) AL = 03h hard disk CX:DX = number of 512-byte sectors 01h floppy without change-line support 02h floppy (or other removable drive) with change-line support 03h hard disk CX:DX = number of 512-byte sectors CF set on error AH = status (see #00234 at AH=01h) Note: SyQuest can report type 01h or 02h for 'hard disks', since its media is removable BUGS: many versions of the Award 486 BIOS do not return the sector count because the BIOS exit code restores CX and DX to their original values after the function had already set them to correct values Some releases of PC Tools REBUILD preset CX=FFFFh and only trust the results if CH <= 2 on return (which would cut off drives > 16 Gb). several different Compaq BIOSes incorrectly report high-numbered drives (such as 90h, B0h, D0h, and F0h) as present, giving them the same geometry as drive 80h; as a workaround, scan through disk numbers, stopping as soon as the number of valid drives encountered equals the value in 0040h:0075h the PS/2 Model 30 fails to reset the bus after INT 13/AH=08h and INT 13/AH=15h. A workaround is to monitor for these functions and perform a transparent INT 13/AH=01h status read afterwards. This will reset the bus. The MS-DOS 6.0 IO.SYS takes care of this by installing a special INT 13h interceptor for this purpose. Some releases of SpeedStor have a bug where it reports AX=0003h instead of correctly reporting AH=03h for hard disks. A possible workaround when testing for hard disks is to check for AH=03h and AX=0003h. In this case this function should be invoked with a bogus fixed value in AL, e.g. AL=FFh. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI",MEM 0040h:0075h --------B-1316------------------------------- INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1986/1/10 or later,XT286,AT,PS) AH = 16h DL = drive number (00h-7Fh) SI = 0000h (to avoid crash on AT&T 6300) Return: CF clear if change line inactive AH = 00h (disk not changed) CF set if change line active AH = status 01h invalid command (SyQuest) 06h change line active or not supported 80h drive not ready or not present Notes: call AH=15h first to determine whether the drive supports a change line this call also clears the media-change status, so that a disk change is only reported once BUGS: some versions of Award 386 Modular BIOS and AMI BIOS fail to clear the media-change status AT&T 6300 WGS systems crash if SI <> 0 on entry. some pre 1986/08/04 Compaq ROM BIOS have a serious bug where this function may re-configure a hard disk depending on what is located at ES:[BX] and data indexed to by it. MS-DOS/PC DOS IO.SYS/IBMBIO.COM install a special filter when they detect Compaq ROM BIOSes with earlier dates. some Compaq 286 systems have a bug in all INT 13h functions >= 16h, which causes the byte at DS:0074h to be destroyed when called for hard disks (DL >= 80h). MS-DOS/PC DOS IO.SYS/IBMBIO.COM performs a test on this bug using this sub-function, and if found installs a special filter which points DS into ROM, so that it cannot cause any harm. some drives (or controllers???) forget the change line status if another drive is accessed afterwards. The DOS BIOS takes care of this by not relying on the reported change line status when the change line is not active and a different drive is accessed, instead it reports "don't know" to the DOS kernel. SeeAlso: AH=15h,AH=49h --------B-1317------------------------------- 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 or 1.44M drive DL = drive number Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) Note: this function does not handle 1.44M drives; use AH=18h instead SeeAlso: AH=15h,AH=18h --------d-131700----------------------------- INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE AX = 1700h CL = length of buffer DL = hard drive ID ES:BX -> buffer for info (see #00243) Return: CF clear if successful CH = number of bytes returned in buffer??? CF set on error AH = status code (see #00234 at AH=01h) Notes: this function is not available with 8-bit controller ROM versions < 7.0 information block bytes 5-n are vendor-specific in older SCSI devices the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI" Format of Future Domain SCSI inquiry information block: Offset Size Description (Table 00243) 00h BYTE device type bits 0-4: peripheral device type (see #00244) bits 5-7: peripheral qualifier (see #00245) 01h BYTE device type modifier bits 0-6: device type modifier bit 7: removable medium 02h BYTE SCSI version (see #00246) 03h BYTE data format/capabilities (see #00247) 04h BYTE additional data length (total remaining bytes) 05h 2 BYTEs reserved 07h BYTE device capabilities (see #00248) 08h 8 BYTEs vendor identification (space-padded ASCII) 10h 8 BYTEs product identification (space-padded ASCII) 20h 4 BYTEs product revision level (space-padded ASCII) 24h 20 BYTEs vendor specific 38h 40 BYTEs reserved 60h var vendor specific parameters (Table 00244) Values for Future Domain SCSI peripheral device type: 00h direct-access device (e.g., magnetic disk) 01h sequential-access device (e.g., magnetic tape) 02h printer device 03h processor device 04h write-once device (e.g., some optical disks) 05h CD-ROM device 06h scanner device 07h optical memory device (e.g., some optical disks) 08h medium changer device (e.g., jukeboxes) 09h communications device 0Ah (defined by ASC IT8) 0Bh (defined by ASC IT8) 0Ch-1Eh reserved 1Fh unknown or no device type (Table 00245) Values for Future Domain SCSI peripheral qualifier: 000b device is currently connected to this logical unit and available 001b target is capable of supporting the specified peripheral, but the physical device is not currently connected to this logical unit 010b reserved 011b target can't support a physical device on this logical unit 1xxb vendor specific Bitfields for Future Domain SCSI version: Bit(s) Description (Table 00246) 0-2 ANSI-approved version 000 device might or might not comply to ANSI standard 001 device complies to ANSI SCSI-1 010 device complies to ANSI SCSI-2 other reserved 3-5 ECMA version 6-7 ISO version Bitfields for Future Domain SCSI data format/capabilities: Bit(s) Description (Table 00247) 0-2 response data format 000 information block is as specified in SCSI-1 001 information block is as specified in CCS 010 information block is as specified in SCSI-2 other reserved 4-5 reserved 6 terminate I/O process supported 7 asynchronous event notification supported Bitfields for Future Domain SCSI device capabilities: Bit(s) Description (Table 00248) 0 device responds to RESET with a hard RESET 1 tagged command queuing supported 2 reserved 3 linked commands supported 4 synchronous data transfer supported 5 16-transfers supported 6 32-transfers supported 7 relative addressing supported --------B-1318------------------------------- INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS) 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 (see #01264 at INT 1E) Note: this function does not set the INT 1E vector to point at the returned parameter table; it is the caller's responsibility to do so SeeAlso: AH=05h,AH=07h,AH=17h,INT 1E --------d-1318------------------------------- 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 #00234 at AH=01h) CF clear if successful AX = 4321h (magic number) CX = controller family code (see #00249) ---if family code=0200h DH = number of exclusively ROM-controlled SCSI devices DL = canonical SCSI device number for specified drive ---if family code <> 0200h BH = number of exclusively ROM-controlled SCSI devices BL = canonical SCSI device number for specified drive Notes: also sets an internal flag (non-resettable) which prevents some controller messages from being displayed, allows writes to removable devices (use caution!), and enables the INT 13 interface for more than one drive (i.e. DL >= 81h) in at least some ROM versions the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h (Table 00249) Values for Future Domain SCSI controller family code: 0200h TMC-1680/? (ROM 3.0) 0203h TMC-1650/1660/1670/1680 (ROM 2.0) 040Ah TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A) 050Dh TMC-840/841/880/881 (ROM 5.2D) 0700h TMC-830/850/860/875/885 (ROM 7.0) --------d-1318--CX5055----------------------- INT 13 - PU_1700.COM - INSTALLATION CHECK AH = 18h CX = 5055h ('PU') DL = 00h Return: AX = 7570h ('up') if PU_1700 is installed Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits formatting diskettes at higher capacity (1.78M instead of 1.44M) SeeAlso: AX=057Fh/SI=324Dh"2M" --------d-1318--CXD2C9----------------------- INT 13 - XDF.COM - API AH = 18h CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey) DX = 0000h BX = function 0000h installation check Return: AH = 0Ch CX = 7269h ("ri" = Roger Ivey) ES = segment of driver CF set 2F64h ("/d") disable the driver Return: AH = 0Ch ES:BX = pointer to activation flag (it is set to 0: set it to 1 to enable the driver again) CX = 7269h CF set 2F75h ("/u") unload the driver (restore interrupts & free memory) Return: AH = 0Ch DL = 55h ("U") if successful = 00h if fails CX = 7269h ES = segment of driver CF set AL, BX, DH, and DI destroyed Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks, developed by Roger D. Ivey Note: After disabling or enabling the driver, a disk change must be performed or simulated to reset the driver. --------B-1319------------------------------- INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS) AH = 19h DL = drive Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AH=11h --------d-1319------------------------------- INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE AH = 19h DL = hard drive ID Return: CF set on error AH = status code (see #00234 at AH=01h) CF clear if successful AH = disk type (03h = fixed disk) CX:DX = number of 512-byte sectors Notes: sends SCSI Read Capacity command to get number of logical blocks and adjusts the result for 512-byte sectors displays either "Error in Read Capacity Command" or "nnn Bytes per sector" (nnn=256 or 512, the only sizes supported in the translation code) should probably be called when a removable device has its media changed returns the same values as AH=15h the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h --------d-131A------------------------------- INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS) AH = 1Ah AL = defect table entry count CL = format modifiers (see #00250) DL = drive (80h,81h) ES:BX -> defect table (see #00251), ignored if AL=00h Return: CF set on error CF clear if successful AH = status (see #00234 at 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 Bitfields for ESDI format modifiers: Bit(s) Description (Table 00250) 4 generate periodic interrupt 3 perform surface analysis 2 update secondary defect map 1 ignore secondary defect map 0 ignore primary defect map Format of defect table entry [array]: Offset Size Description (Table 00251) 00h 3 BYTEs relative sector address (little-endian) 03h BYTE flags and defect count bit 7: last logical sector on track bit 6: first logical sector on track bit 5: last logical sector on cylinder bit 4: logical sectors are pushed onto next track bits 3-0: number of defects pushed from previous cylinder --------d-131A------------------------------- 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/track for drive) DH = head DL = hard drive ID Return: CF set on error AH = status code (see #00234 at AH=01h) CX:DX = logical block number of last quickly-accessible block after given block Notes: sends SCSI Read Capacity command with the PMI bit set to obtain the logical block address of the last block after which a substantial delay in data transfer will be encountered (usually the last block on the current cylinder). No translation to 512 byte sectors is performed on the result if data is stored on the disk in other than 512 byte sectors. the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=15h,AH=19h"SCSI" --------d-131B------------------------------- INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER AH = 1Bh AL = number of sectors to read DL = drive ES:BX -> buffer for manufacturing header (defect list) Return: CF set on error CF clear if successful AH = status Note: manufacturing header format (Defect Map Record format) can be found in IBM 70MB, 115MB Fixed Disk Drives Technical Reference the first sector read contains the manufacturing header with the number of defect entries and the beginning of the defect map; the remaining sectors contain the remainder of the defect map --------d-131B------------------------------- 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 #00234 at AH=01h) CF clear if successful ES:BX -> SCSI disk information block (see #00252) Notes: also sets a non-resettable flag which prevents some controller messages from being displayed the TMC-950 does not support any Future Domain BIOS calls; instead, it provides a full CAM implementation (see INT 4F/AX=8100h) SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI" Format of Future Domain SCSI disk information block: Offset Size Description (Table 00252) 00h BYTE drive physical information (see #00253) 01h WORD translated number of cylinders 03h BYTE translated number of heads 04h BYTE translated number of sectors per track (17, 34, or 63) 05h BYTE drive address bits 0-2: logical unit number bits 3-5: device number 06h BYTE 01h at initialization 07h BYTE sense code byte 00h, or extended sense code byte 0Ch 08h BYTE 00h 09h BYTE 00h or extended sense code byte 02h (sense key) 0Ah BYTE 00h 0Bh 10 BYTEs copy of Command Descriptor Block (CDB) (see #03236,#03237) 15h DWORD translated number of sectors on device Bitfields for Future Domain SCSI device physical information: Bit(s) Description (Table 00253) 0 ??? 1 device uses parity 2 256 bytes per sector instead of 512 3 don't have capacity yet??? 4 disk is removable 5 logical unit number is not present --------d-131C------------------------------- 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 #00234 at 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-board the controller for storing drive information and controller status; ES:BX points to the first byte available for other uses ES contains the segment at which the controller resides; the controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h SeeAlso: AH=1Bh"SCSI" --------d-131C------------------------------- INT 13 U - ESDI FIXED DISK - ??? AH = 1Ch AL = subfunction (01h-06h) DL = drive (80h,81h) ??? Return: ??? Note: these functions perform a controller command 0612h without DMA SeeAlso: AX=1C08h,PORT 3510h"ESDI" --------d-131C08----------------------------- INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS AX = 1C08h DL = drive (80h,81h) ES:BX -> buffer for Command Complete Status Block (see #00254) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AX=1C09h,AX=1C0Ah,PORT 3510h"ESDI" Format of ESDI Command Complete Status Block: Offset Size Description (Table 00254) 00h BYTE 07h 01h BYTE size of block in words (07h) 02h BYTE command error code (see #00255) 03h BYTE command status code (see #00256) 04h BYTE device error code, group 1 (see #00257) 05h BYTE device error flags, group 2 (see #00258) 06h WORD number of unprocessed sectors due to abnormal termination 08h DWORD last Relative Sector Address processed by command 0Ch WORD number of sectors corrected by ECC codes (Table 00255) Values for ESDI command error code: 00h successful 01h parameter invalid 02h unknown function 03h unsupported command 04h command cancelled 05h unknown function 06h controller diagnostics failed 07h formatting failed 08h format error in primary map 09h format error in secondary map 0Ah diagnostic failure during formatting 0Bh warning: secondary map too large during formatting 0Ch warning: non-zero defect 0Dh system checksum error during formatting 0Eh warning: incompatible device 0Fh warning: push table overflowed 10h warning: more than 15 sectors pushed to next cylinder 11h internal hardware error 12h warning: errors found while verifying sectors 13h invalid device FFh device error (Table 00256) Values for ESDI command status code: 01h successful 03h successful after ECC 05h successful after retries 06h format partially completed 07h successful after ECC and retries 08h command completed with warning (see #00255) 09h abort complete 0Ah reset complete 0Bh data transfer ready (no status block) 0Ch command completed with failure (see #00257,#00258) 0Dh DMA error 0Eh command block error (see #00255) 0Fh bad attention code SeeAlso: #00257 (Table 00257) Values for ESDI device error code, group 1: 00h successful 01h seek fault detected by device 02h interface fault 03h sector ID not found 04h disk not formatted 05h unrecoverable ECC error 06h ECC error in sector ID 07h invalid relative sector address 08h timeout 09h sector defective 0Ah disk changed (removable media) 0Bh selection error 0Ch write protected (removable media) 0Dh write fault 0Eh read fault 0Fh no index or sector pulse 10h device not ready 11h seek error detected by adapter 12h bad format 13h volume overflow 14h data address mark not found 15h sector ID not found 16h missing device configuration data 17h first/last relative sector flags missing 18h track empty 81h timeout while waiting for stop 82h timeout while waiting for end of data transfer 84h stopped awaiting data transfer during formatting 85h timeout while waiting for head switch 86h timeout while awaiting DMA completion SeeAlso: #00256,#00258 Bitfields for ESDI device error flags, group 2: Bit(s) Description (Table 00258) 7-5 unused 4 ready 3 selected 2 write fault 1 on track 0 0 seek/command complete SeeAlso: #00257 --------d-131C09----------------------------- INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS AX = 1C09h DL = drive (80h,81h) ES:BX -> buffer for Device Status Block (see #00259) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AX=1C08h,AX=1C0Ah,PORT 3510h"ESDI" Format of ESDI Device Status Block: Offset Size Description (Table 00259) 00h BYTE 08h 01h BYTE number of words in block (09h) 02h BYTE error flags 03h BYTE unused 04h BYTE command error code (see #00255) 05h BYTE command status code (see #00256) 06h WORD ESDI standard status 08h 5 WORDs ESDI vendor-specific status codes --------d-131C0A----------------------------- INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION AX = 1C0Ah DL = drive (80h,81h) ES:BX -> buffer for Drive Configuration Status Block (see #00260) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) Note: device configuration format can be found in IBM ESDI Fixed Disk Drive Adapter/A Technical Reference SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch Format of ESDI Drive Configuration Status Block: Offset Size Description (Table 00260) 00h BYTE 09h 01h BYTE number of words in block (06h) 02h BYTE flags 03h BYTE number of spare sectors per cylinder 04h DWORD total number of usable sectors 08h WORD total number of cylinders 0Ah BYTE tracks per cylinder 0Bh BYTE sectors per track --------d-131C0B----------------------------- INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION AX = 1C0Bh ES:BX -> buffer for Controller Configuration Status Block (see #00261) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AX=1C0Ch Format of ESDI Controller Configuration Status Block: Offset Size Description (Table 00261) 00h BYTE E9h 01h BYTE number of words in block (06h) 02h WORD unused (0000h) 04h DWORD controller microcode revision level 08h 2 WORDs unused (0000h) --------d-131C0C----------------------------- INT 13 U - ESDI FIXED DISK - GET POS INFORMATION AX = 1C0Ch ES:BX -> buffer for POS Information Status Block (see #00262) Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) SeeAlso: AX=1C0Bh Format of ESDI POS Information Status Block: Offset Size Description (Table 00262) 00h BYTE EAh 01h BYTE number of words in block (05h) 02h WORD magic value FFDDh 04h BYTE POS register 3 05h BYTE POS register 2 06h BYTE POS register 5 (unused, FFh) 07h BYTE POS register 4 (unused, FFh) 08h BYTE POS register 7 (unused, FFh) 09h BYTE POS register 6 (unused, FFh) --------d-131C0D----------------------------- INT 13 U - ESDI FIXED DISK - ??? AX = 1C0Dh DL = drive (80h,81h) ??? Return: ??? Note: invokes controller command 0614h without DMA SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI" --------d-131C0E----------------------------- INT 13 U - 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 (80h,81h) ES:BX -> ABA number Return: CF set on error CF clear if successful AH = status (see #00234 at AH=01h) Note: ABA (absolute block address) format can be found in IBM ESDI Adapter Technical Reference by using its Device Configuration Status Block SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI" --------d-131C0F----------------------------- INT 13 U - ESDI FIXED DISK - ??? AX = 1C0Fh DL = drive (80h,81h) ??? Return: ??? Note: invokes controller command 0614h without DMA SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI" --------d-131C12----------------------------- INT 13 U - ESDI FIXED DISK - ??? AX = 1C12h DL = drive (80h,81h) ??? Return: ??? Note: invokes controller command 0612h without DMA SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI" --------c-131D------------------------------- INT 13 - IBMCACHE.SYS - CACHE STATUS AH = 1Dh AL = subfunction 01h get status record DL = drive??? Return: ES:BX -> status record (see #00263) CF set on error AH = error code 02h set cache status ES:BX -> status record (see #00263) DL = drive??? Return: CF set on error Format of IBMCACHE.SYS status record: Offset Size Description (Table 00263) 00h DWORD total number of read requests 04h DWORD total number of hits 08h DWORD number of physical disk reads 0Ch DWORD total number of sectors requested by physical disk reads 10h 6 BYTEs ??? 16h DWORD pointer to start of error list (see #00264) 1Ah DWORD pointer to end of error list 1Eh WORD ??? 20h BYTE using extended memory if nonzero 21h BYTE ??? 22h 4 BYTEs ASCII version number 26h WORD cache size in KB 28h WORD sectors per page Format of IBMCACHE.SYS error list: Offset Size Description (Table 00264) 00h DWORD relative block address of bad page 04h BYTE drive 05h BYTE sector bit-map 06h WORD next error --------d-131F------------------------------- INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT AH = 1Fh AL = subfunction 00h allow media removal 01h prevent media removal (lock door) DL = drive ID (bit 7 set for hard disks) Return: CF clear if successful AH = 00h CF set on error AH = error code 00h successful 01h invalid function request 80h timeout DDh media change requested SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest" --------d-1320------------------------------- INT 13 - DISK - ??? (Western Digital "Super BIOS") AH = 20h ??? Return: ??? Notes: returns some kind of status related to whether the drive contains its default media type QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases --------b-1320------------------------------- INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT AH = 20h DL = drive number (00h,01h) Return: CF clear if successful AL = media type (see #00265) AH = 00h CF set on error AH = error code 01h invalid request 30h drive does not support media sense 31h no such drive / media not present 32h non-default media / drive does not support media type Notes: this function is supported by the 1993/3/8 Compaq ROM BIOS, but only partially (AL is always 00h when successful) by the 1993/8/3 version this function is also supported by some recent versions of the Phoenix 486 BIOS this function does not seem to be supported by some Toshiba BIOSes (at least before 1995, maybe some laptops??? with 1.44 MB floppies), because S/DOS 1.0 contains code to bypass a call to this function, always assuming the drive would not support media sense. SeeAlso: AH=15h (Table 00265) Values for Compaq/ATAPI diskette media type: 03h 720K (1M unformatted) 04h 1.44M (2M unformatted) 06h 2.88M (4M unformatted) 0Ch 360K 0Dh 1.2M 0Eh Toshiba 3mode 0Fh NEC 3mode (1024-byte sectors) 10h ATAPI Removable Media Device --------c-1320------------------------------- INT 13 u - QUICKCACHE II v4.20 - DISMOUNT AH = 20h AL = drive (00h = A:, etc. or 7Fh for all removable drives??? or FFh for all drives) Return: AX = status (0000h successful) Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and Associates, Inc. Desc: flush any dirty buffers for the specified drive(s) and then discard those sector buffers SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h --------d-1321------------------------------- INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS AH = 21h AL = number of sectors to write CH = low byte of 12-bit cylinder number CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7) DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7) DL = drive number (80h,81h) ES:BX -> buffer for data to be read Return: CF clear if successful ES:BX buffer filled CF set on error AH = status (see #00234 at AH=01h) Desc: read from the disk using the Multiple Block mode available on newer IDE drives and some hard disk controllers, which generates an interrupt only after the end of transferring a group of sectors rather than after each sector Notes: must call AH=24h"PS/1" before using this function input values in CL and DH are not range-checked the byte at address 0040h:0074h is set to the status of the operation SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1" --------c-1321------------------------------- INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE AH = 21h Return: AX = status (0000h successful) Desc: immediately write all dirty sectors back to disk Note: this is one out of several cache flush calls issued by the PTS-DOS 6.51 and S/DOS 1.0 kernel before rebooting. It is called with DL=80h and conflicts with the PS/2 function of the same function number, because the kernel does not perform Quickcache's installation check first. SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh --------d-1322------------------------------- INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS AH = 22h AL = number of sectors to write CH = low byte of 12-bit cylinder number CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7) DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7) DL = drive number (80h,81h) ES:BX -> buffer containing data to be written Return: CF clear if successful CF set on error AH = status (see #00234 at AH=01h) Desc: write to the disk using the Multiple Block mode available on newer IDE drives and some hard disk controllers, which generates an interrupt only after the end of transferring a group of sectors rather than after each sector Notes: must call AH=24h"PS/1" before using this function input values in CL and DH are not range-checked the byte at address 0040h:0074h is set to the status of the operation SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1" --------c-1322------------------------------- INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE AH = 22h AL = new state (00h disabled, 01h enabled) Return: AX = status (0000h successful) Note: enables/disables caching of all drives SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h --------d-1323------------------------------- INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER AH = 23h AL = feature number (see #00266) DL = drive number (80h,81h) ??? Return: CF clear if successful CF set on error AH = status (see #00234 at AH=01h) SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1" (Table 00266) Values for PS/1 hard disk feature number: 01h select 8-bit data transfers instead of 16-bit 02h enable write cache 22h Write Same, user-specified area 33h disable retries 44h set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh) 54h set cache segments 55h disable lookahead 66h disable reverting to power-on defaults 77h disable error correctioni 81h select 16-bit data transfers (default) 82h disable write cache 88h enable error correction (default) 99h enable retries (default) AAh enable lookahead BBh set ECC length for read long/write long to four bytes CCh enable reverting to power-on defaults DDh Write Same, entire disk SeeAlso: #P0535 --------c-1323------------------------------- INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS AH = 23h Return: AX = status (0000h successful) ES = segment of ??? data --------d-1324------------------------------- INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE AH = 24h AL = number of sectors per block (2,4,8,16) DL = drive number (80h,81h) Return: CF clear if successful CF set onerror AH = status (see #00234 at AH=01h) Desc: specify how many sectors the controller should transfer as a group between operation-complete interrupts when using the Read Multiple and Write Multiple functions (AH=21h,AH=22h) Notes: set the number of sectors to 0 to disable multiple-transfer mode the maximum value for the block size depends on the fixed disk drive type. The value is stored in byte 15h of the fixed disk drive parameter table that is created by POST. the byte at address 0040h:0074h is set to status of operation. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1" --------c-1324------------------------------- INT 13 u - QUICKCACHE II v4.20 - SET SECTORS AH = 24h BX = new number of sector buffers in cache Return: AX = status 0000h successful 0001h failed--size adjusted 8000h cache cannot be resized while enabled SeeAlso: AH=36h --------d-1325------------------------------- INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE AH = 25h DL = drive number (80h,81h) ES:BX-> 512 byte buffer for reply packet Return: CF clear if successful CF set on error AH = status (see #00234 at AH=01h) buffer filled with ATA/IDE-style drive information block (see #00267) Desc: retrieves the 256 words of drive data stored on an IDE hard disk Notes: the byte at address 0040h:0074h is set to the status of the operation IBM officially classifies this function as optional SeeAlso: AH=23h"PS/1" Format of drive information block: Offset Size Description (Table 00267) 00h WORD general drive configuration (see #00268) 02h WORD number of cylinders 04h WORD reserved 06h WORD number of heads 08h WORD number of unformatted bytes per track 0Ah WORD number of unformatted bytes per sector 0Ch WORD number of sectors per track 0Eh 6 BYTEs vendor unique 14h 20 BYTEs serial number in ASCII, 0000h=not specified) 28h WORD buffer type 2Ah WORD buffer size in 512 byte increments (0000h=not specified) 2Ch WORD number of ECC bytes passed on Read/Write Long cmds 0000h = not specified 2Eh 8 BYTEs firmware revision in ASCII, 0000h=not specified 36h 40 BYTEs model number in ASCII, 0000h=not specified 5Eh WORD bits 15-8 Vendor Unique bits 7-0 00h = Read/Write Multiple commands not implemented xxh = Maximum number of sectors that can be transferred per interrupt on Read and Write Multiple commands 60h WORD 0000h = cannot perform doubleword I/O 0001h = can perform doubleword I/O 62h WORD capabilities bit 15-9 0=reserved bit 8 1=DMA Supported bit 7-0 Vendor Unique 64h WORD reserved 66h WORD bits 15-8 PIO data transfer cycle timing mode bits 7-0 Vendor Unique 68h WORD bits 15-8 DMA data transfer cycle timing mode bits 7-0 Vendor Unique 6Ah WORD bits 15-1 reserved bit 0 1=the fields reported in tranlation mode are valid 0=the fields reported in translation mode may be valid 6Ch WORD number of current cylinders 6Eh WORD number of current heads 70h WORD number of current sectors per track 72h DWORD current capacity in sectors 76h WORD reserved 78h 136 BYTEs not defined by ATA spec 2.6 100h 64 BYTEs vendor unique 140h 96 BYTEs reserved Note: the above description is as in the ATA (AT Attachment) Specification. SeeAlso: #P0516 Bitfields for general drive configuration: Bit(s) Description (Table 00268) 15 0 reserved for non-magnetic drives 14 format speed tolerance gap required 13 track offset option available 12 data strobe offset option available 11 rotational speed tolerance is > 0.5% 10 disk transfer rate > 10 Mbs 9 disk transfer rate > 5Mbs but <= 10Mbs 8 disk transfer rate <= 5Mbs 7 removable cartridge drive 6 fixed drive 5 spindle motor control option implemented 4 head switch time > 15 usec 3 not MFM encoded 2 soft sectored 1 hard sectored 0 reserved (0) --------c-1325------------------------------- INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL AH = 25h BX = interval Return: AX = status (0000h successful) Desc: specify how often the cache should write dirty buffers to disk when buffered writes are enabled SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh --------c-1326------------------------------- INT 13 U - QUICKCACHE II v4.20 - UNINSTALL AH = 26h Return: AX = status 0000h successful 0001h-00FFh interrupt vector which was hooked by another TSR SeeAlso: AH=27h --------c-1327--BX0000----------------------- INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK AH = 27h BX = 0000h Return: AX = 0000h if installed BX nonzero if installed BH = major version BL = binary minor version Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and Associates, Inc. SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h --------c-1328------------------------------- INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT AH = 28h AL = new state (00h disabled, 01h enabled) Return: AX = status (0000h successful) SeeAlso: AH=20h"QUICKCACHE" --------c-1329------------------------------- INT 13 U - QUICKCACHE II v4.20 - NOP AH = 29h Return: AX = 0000h --------c-132A------------------------------- INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE AH = 2Ah AL = buffer size (1-30) Return: AX = status (0000h successful) Desc: specify the number of cache sector buffers to dedicate to buffered read and write operations SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah --------c-132B------------------------------- INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS AH = 2Bh AL = new state (00h disabled, 01h enabled) Return: AX = status (0000h successful) --------c-132C------------------------------- INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES AH = 2Ch AL = new state (00h disabled, 01h enabled) Return: AX = status (0000h successful) Desc: specify whether the cache should delay disk writes Note: this function enables or disables delayed writes for all drives; use AH=38h to change a single drive SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h --------c-132D------------------------------- INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ AH = 2Dh AL = new state (00h disabled, 01h enabled) Return: AX = status (0000h successful) Desc: specify whether the cache should attempt to read ahead of actual requests Note: this function enables or disables read-ahead for all drives; use AH=37h to change a single drive SeeAlso: AH=2Ch,AH=37h --------c-132E------------------------------- INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT AH = 2Eh BX = flush count Return: AX = status (0000h successful) Desc: specify how many dirty sectors the cache should write after each flush interval (see AH=25h"QUICKCACHE") when buffered writes are enabled SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch --------c-132F------------------------------- INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH AH = 2Fh Return: AX = status (0000h successful) Desc: immediately flush up to "flushcount" dirty sectors to disk as if the flush interval had expired SeeAlso: AH=21h"QUICKCACHE" --------c-1330------------------------------- INT 13 u - QUICKCACHE II v4.20 - GET INFO AH = 30h AL = what to get 00h system info (see #00269) 01h drive info (see #00270) 02h access frequency (array of 30 words) 03h drive index (array of 32 bytes indicating BIOS drive for DOS drive) DS:DX -> buffer for info Return: AX = status (0000h successful, 8000h invalid info specifier) Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and Associates, Inc. Format of QUICKCACHE II system info: Offset Size Description (Table 00269) 00h BYTE flag: cache enabled 01h BYTE flag: buffered writes enabled 02h BYTE flag: buffered reads enabled 03h BYTE flag: sounds enabled 04h BYTE flag: autodismount enabled 05h BYTE ??? 06h BYTE flag: ??? 07h BYTE flag: ??? 08h BYTE flag: "em_assigned" 09h BYTE flag: emulated EMS 0Ah BYTE single sector bonus 0Bh BYTE "sticky_max" 0Ch BYTE write sector bonus 0Dh BYTE bonus threshold 0Eh WORD flush interval 10h WORD flush count 12h WORD reserve pool size 14h WORD remaining space in reserve pool 16h WORD required free memory 18h WORD total cache sectors 1Ah WORD dirty cache sectors 1Ch BYTE trace buffer size 1Dh BYTE reserved (padding) SeeAlso: #00270 Format of QUICKCACHE II drive info [16-element array, one element]: Offset Size Description (Table 00270) 00h BYTE DOS drive number 01h BYTE BIOS drive number 02h BYTE maximum sector number 03h BYTE maximum head number 04h BYTE read buffer size 05h BYTE write buffer size 06h BYTE last status 07h BYTE flag: enabled 08h BYTE flag: buffered write enabled 09h BYTE flag: buffered read enabled 0Ah BYTE flag: in use (drive info is valid) 0Bh BYTE flag: cylinder flush 0Ch BYTE reserved (padding) 0Dh BYTE sectors per track 0Eh WORD sector size 10h WORD sectors assigned 12h WORD dirty sectors 14h WORD reserved sectors 16h WORD number of read errors 18h WORD number of write errors 1Ah DWORD "rio_count" 1Eh DWORD number of cache misses 22h DWORD "wio_count" 26h DWORD "dio_count" SeeAlso: #00269 --------c-1331------------------------------- INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY AH = 31h BX = number of paragraphs of conventional memory to reserve for apps Return: AX = status (0000h successful) --------c-1332------------------------------- INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE AH = 32h AL = drive number (00h=A:) Return: AX = status (0000h successful) SeeAlso: AH=22h"QUICKCACHE",AH=33h --------c-1333------------------------------- INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE AH = 33h AL = drive number (00h=A:) Return: AX = status (0000h successful) SeeAlso: AH=22h"QUICKCACHE",AH=32h --------c-1334------------------------------- INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING AH = 34h AL = function 00h end sector locking/unlocking 01h lock all accessed sectors into cache 02h unlock all accessed sectors and discard from cache Return: AX = status (0000h successful) SeeAlso: AH=20h"QUICKCACHE",AH=35h --------c-1335------------------------------- INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE AH = 35h BX = number of sectors in lock pool Return: AX = status (0000h successful) Desc: specify the number of cache sector buffers which may be dedicated to data locked into the cache SeeAlso: AH=34h --------c-1336------------------------------- INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE AH = 36h AL = new size of trace buffer Return: AX = status (0000h successful) Note: called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call SeeAlso: AH=24h"QUICKCACHE" --------c-1337------------------------------- INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE AH = 37h AL = new state (00h disabled, else enabled) DL = drive number (00h = A:) Return: AX = status (0000h successful) SeeAlso: AH=2Dh,AH=38h --------c-1338------------------------------- INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE AH = 38h AL = new state (00h disabled, else enabled) DL = drive number (00h = A:) Return: AX = status (0000h successful) SeeAlso: AH=2Ch,AH=37h --------c-1339------------------------------- INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE AH = 39h AL = new size of read buffer DL = drive number (00h = A:) Return: AX = status (0000h successful) Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and Associates, Inc. SeeAlso: AH=2Ah,AH=3Ah --------c-133A------------------------------- INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE AH = 3Ah AL = new size of write buffer DL = drive number (00h = A:) Return: AX = status (0000h successful) SeeAlso: AH=2Ah,AH=39h --------c-133B------------------------------- INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ??? AH = 3Bh AL = new state of ??? (01h enabled, else disabled) Return: AX = status (0000h successful) Note: is affected by the flag reported at offset 05h of the system info returned by AH=30h, and sets the flag at offset 06h SeeAlso: AH=3Ch --------c-133C------------------------------- INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ??? AH = 3Ch AL = new state of ??? (01h enabled, else disabled) Return: AX = status (0000h successful) Note: is affected by the flag reported at offset 05h of the system info returned by AH=30h, and sets the flag at offset 07h SeeAlso: AH=3Bh --------c-133D------------------------------- INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE AH = 3Dh AL = new state (01h enabled, else disabled) DL = drive number (00h = A:) Return: AX = status (0000h successful) --------c-133E------------------------------- INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS AH = 3Eh AL = new value for bonus Return: AX = status (0000h successful) Desc: specify the bonus score to give to single-sector transfers in order to keep those sectors in the cache longer --------c-133F------------------------------- INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD AH = 3Fh AL = new value for bonus threshold Return: AX = status (0000h successful) --------c-1340------------------------------- INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max" AH = 40h AL = new value for "sticky_max" Return: AX = status (0000h successful) SeeAlso: AH=41h"QUICKCACHE" --------d-1341--BX55AA----------------------- INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK AH = 41h BX = 55AAh DL = drive (80h-FFh) Return: CF set on error (extensions not supported) AH = 01h (invalid function) CF clear if successful BX = AA55h if installed AH = major version of extensions 01h = 1.x 20h = 2.0 / EDD-1.0 21h = 2.1 / EDD-1.1 30h = EDD-3.0 AL = internal use CX = API subset support bitmap (see #00271) DH = extension version (v2.0+ ??? -- not present in 1.x) Note: the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of the INT 13 Extensions API SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext" Bitfields for IBM/MS INT 13 Extensions API support bitmap: Bit(s) Description (Table 00271) 0 extended disk access functions (AH=42h-44h,47h,48h) supported 1 removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h) supported 2 enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported extended drive parameter table is valid (see #00273,#00278) 3-15 reserved (0) --------c-1341------------------------------- INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ??? AH = 41h AL = direction 01h save to file else restore from file ES:DI -> 1024-byte buffer for ??? Return: AX = status (0000h successful, 8000h failed) Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and Associates, Inc. SeeAlso: AH=40h"QUICKCACHE" --------d-1342------------------------------- INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ AH = 42h DL = drive number DS:SI -> disk address packet (see #00272) Return: CF clear if successful AH = 00h CF set on error AH = error code (see #00234) disk address packet's block count field set to number of blocks successfully transferred SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext" Format of disk address packet: Offset Size Description (Table 00272) 00h BYTE size of packet (10h or 18h) 01h BYTE reserved (0) 02h WORD number of blocks to transfer (max 007Fh for Phoenix EDD) 04h DWORD -> transfer buffer 08h QWORD starting absolute block number (for non-LBA devices, compute as (Cylinder*NumHeads + SelectedHead) * SectorPerTrack + SelectedSector - 1 10h QWORD (EDD-3.0, optional) 64-bit flat address of transfer buffer; used if DWORD at 04h is FFFFh:FFFFh --------N-134257DX1234----------------------- INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK AX = 4257h ("BW") DX = 1234h Return: BX = 414Ch if installed Program: BWLPD is the printer daemon from the BW-NFS package SeeAlso: INT 62/AH=00h"ETHDEV" --------d-1343------------------------------- INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE AH = 43h AL = write flags ---v1.0,2.0--- bit 0: verify write bits 7-1 reserved (0) ---v2.1+ --- 00h,01h write without verify 02h write with verify DL = drive number DS:SI -> disk address packet (see #00272) Return: CF clear if successful AH = 00h CF set on error AH = error code (see #00234) disk address packet's block count field set to number of blocks successfully transferred Note: the BIOS returns CF set/AH=01h (invalid function) if verify is requested but not supported SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h --------d-1344------------------------------- INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS AH = 44h DL = drive number DS:SI -> disk address packet (see #00272) Return: CF clear if successful AH = 00h CF set on error AH = error code (see #00234) disk address packet's block count field set to number of blocks successfully verified SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h --------d-1345------------------------------- INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE AH = 45h AL = operation 00h lock media in drive 01h unlock media 02h check lock status DL = drive number Return: CF clear if successful AH = 00h AL = lock state (00h = unlocked) CF set on error AH = error code (see #00234) Notes: this function is required to be supported for any removable drives numbered 80h or higher a device may be locked even if no media is present in the drive up to 255 locks may be placed on a drive, and the media will not be physically unlocked until all locks have been removed SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions" --------d-1346------------------------------- INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA AH = 46h AL = 00h (reserved) DL = drive number Return: CF clear if successful AH = 00h CF set on error AH = error code (see #00234) SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions" --------d-1347------------------------------- INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK AH = 47h DL = drive number DS:SI -> disk address packet (see #00272) Return: CF clear if successful AH = 00h CF set on error AH = error code (see #00234) Note: this function initiates the seek, and may return before the seek actually completes SeeAlso: AH=0Ch,AH=42h"INT 13 Ext" --------d-1348------------------------------- INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS AH = 48h DL = drive (80h-FFh) DS:SI -> buffer for drive parameters (see #00273) Return: CF clear if successful AH = 00h DS:SI buffer filled CF set on error AH = error code (see #00234) BUGS: several different Compaq BIOSes incorrectly report high-numbered drives (such as 90h, B0h, D0h, and F0h) as present, giving them the same geometry as drive 80h; as a workaround, scan through disk numbers, stopping as soon as the number of valid drives encountered equals the value in 0040h:0075h Dell machines using PhoenixBIOS 4.0 Release 6.0 fail to correctly handle this function if the flag word at DS:[SI+2] is not 0000h on entry SeeAlso: AH=08h,AH=41h,AH=49h,MEM 0040h:0075h Format of IBM/MS INT 13 Extensions drive parameters: Offset Size Description (Table 00273) 00h WORD (call) size of buffer (001Ah for v1.x, 001Eh for v2.x, 42h for v3.0) (ret) size of returned data 02h WORD information flags (see #00274) 04h DWORD number of physical cylinders on drive 08h DWORD number of physical heads on drive 0Ch DWORD number of physical sectors per track 10h QWORD total number of sectors on drive 18h WORD bytes per sector ---v2.0+ --- 1Ah DWORD -> EDD configuration parameters (see #00278) FFFFh:FFFFh if not available ---v3.0 --- 1Eh WORD signature BEDDh to indicate presence of Device Path info 20h BYTE length of Device Path information, including signature and this byte (24h for v3.0) 21h 3 BYTEs reserved (0) 24h 4 BYTEs ASCIZ name of host bus ("ISA" or "PCI") 28h 8 BYTEs ASCIZ name of interface type "ATA" "ATAPI" "SCSI" "USB" "1394" IEEE 1394 (FireWire) "FIBRE" Fibre Channel 30h 8 BYTEs Interface Path (see #00275) 38h 8 BYTEs Device Path (see #00276) 40h BYTE reserved (0) 41h BYTE checksum of bytes 1Eh-40h (two's complement of sum, which makes the 8-bit sum of bytes 1Eh-41h equal 00h) Note: if the size is less than 30 on call, the final DWORD will not be returned by a v2.x implementation; similarly for the Device Path info SeeAlso: #00277,#03196 Bitfields for IBM/MS INT 13 Extensions information flags: Bit(s) Description (Table 00274) 0 DMA boundary errors handled transparently 1 cylinder/head/sectors-per-track information is valid 2 removable drive 3 write with verify supported 4 drive has change-line support (required if drive >= 80h is removable) 5 drive can be locked (required if drive >= 80h is removable) 6 CHS information set to maximum supported values, not current media 15-7 reserved (0) Note: bits 4-6 are only valid if bit 2 is set SeeAlso: #00273 Format of EDD v3.0 Interface Path: Offset Size Description (Table 00275) ---ISA--- 00h WORD 16-bit base address 02h 6 BYTEs reserved (0) ---PCI--- 00h BYTE PCI bus number 01h BYTE PCI device number 02h BYTE PCI function number 03h 5 BYTEs reserved (0) SeeAlso: #00273,#00276 Format of EDD v3.0 Device Path: Offset Size Description (Table 00276) ---ATA--- 00h BYTE flag: 00h = master, 01h = slave 01h 7 BYTEs reserved (0) ---ATAPI--- 00h BYTE flag: 00h = master, 01h = slave 01h BYTE logical unit number 02h 6 BYTEs reserved (0) ---SCSI--- 00h BYTE logical unit number 01h 7 BYTEs reserved (0) ---USB--- 00h BYTE to be determined 01h 7 BYTEs reserved (0) ---IEEE1394--- 00h QWORD 64-bit FireWire General Unique Identifier (GUID) ---FibreChannel--- 00h QWORD Word Wide Number (WWN) SeeAlso: #00273,#00275 Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table: Offset Size Description (Table 00277) 00h WORD number of cylinders 02h BYTE number of heads 03h BYTE A0h (signature indicating translated table) 04h BYTE number of physical sectors per track 05h WORD starting write precompensation cylinder number 07h BYTE reserved 08h BYTE control byte (see #03198 at INT 41"DISK 0") 09h WORD number of physical cylinders 0Bh BYTE number of physical heads 0Ch WORD cylinder number of landing zone 0Eh BYTE number of logical sectors per track 0Fh BYTE checksum Program: the Phoenix Enhanced Disk Drive Specification is an addition to the IBM/MS INT 13 extensions SeeAlso: #00278,#03196 Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table: Offset Size Description (Table 00278) 00h WORD physical I/O port base address 02h WORD disk-drive control port address 04h BYTE drive flags (see #00279) 05h BYTE proprietary information bits 7-4 reserved (0) bits 3-0: Phoenix proprietary (used by BIOS) 06h BYTE IRQ for drive (bits 3-0; bits 7-4 reserved and must be 0) 07h BYTE sector count for multi-sector transfers 08h BYTE DMA control bits 7-4: DMA type (0-2) as per ATA-2 specification bits 3-0: DMA channel 09h BYTE programmed I/O control bits 7-4: reserved (0) bits 3-0: PIO type (1-4) as per ATA-2 specification 0Ah WORD drive options (see #00280) 0Ch 2 BYTEs reserved (0) 0Eh BYTE extension revision level (high nybble=major, low nybble=minor) (currently 10h for v1.0 and 11h for v1.1-3.0) 0Fh BYTE 2's complement checksum of bytes 00h-0Eh 8-bit sum of all bytes 00h-0Fh should equal 00h Note: this structure is also called the Device Paramter Table Extension (DPTE) SeeAlso: #00277 Bitfields for Phoenix Enhanced Disk Drive Spec drive flags: Bit(s) Description (Table 00279) 7 reserved (1) 6 LBA enabled 5 reserved (1) 4 drive is slave 3-0 reserved (0) SeeAlso: #00278,#00280 Bitfields for Phoenix Enhanced Disk Drive Spec drive options: Bit(s) Description (Table 00280) 0 fast PIO enabled 1 fast DMA access enabled 2 block PIO (multi-sector transfers) enabled 3 CHS translation enabled 4 LBA translation enabled 5 removable media 6 ATAPI device (CD-ROM) 7 32-bit transfer mode ---v1.1+ --- 8 ATAPI device uses DRQ to signal readiness for packet command (must be 0 if bit 6 is 0) 10-9 translation type (must be 00 if bit 3 is 0) 00 Phoenix bit-shifting translation 01 LBA-assisted translation 10 reserved 11 proprietary translation ---v3.0--- 11 Ultra DMA access enabled 15-12 reserved (0) SeeAlso: #00278,#00279 --------d-1349------------------------------- INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE AH = 49h DL = drive number Return: CF clear if media has not changed AH = 00h CF set if media may have changed AH = 06h (see #00234) Note: unlike AH=16h, any drive number may be specified SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h --------d-134A------------------------------- INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AH = 4Ah AL = 00h DS:SI -> specification packet (see #00281) Return: CF clear if successful CF set on error (drive will not be in emulation mode) AX = return codes SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh Format of Bootable CD-ROM Specification Packet: Offset Size Description (Table 00281) 00h BYTE size of packet in bytes (13h) 01h BYTE boot media type (see #00282) 02h BYTE drive number 00h floppy image 80h bootable hard disk 81h-FFh nonbootable or no emulation 03h BYTE CD-ROM controller number 04h DWORD Logical Block Address of disk image to emulate 08h WORD device specification (see also #00282) (IDE) bit 0: drive is slave instead of master (SCSI) bits 7-0: LUN and PUN bits 15-8: bus number 0Ah WORD segment of 3K buffer for caching CD-ROM reads 0Ch WORD load segment for initial boot image if 0000h, load at segment 07C0h 0Eh WORD number of 512-byte virtual sectors to load (only valid for AH=4Ch) 10h BYTE low byte of cylinder count (for INT 13/AH=08h) 11h BYTE sector count, high bits of cylinder count (for INT 13/AH=08h) 12h BYTE head count (for INT 13/AH=08h) SeeAlso: #00283,AH=08h Bitfields for Bootable CD-ROM boot media type: Bit(s) Description (Table 00282) 3-0 media type 0000 no emulation 0001 1.2M diskette 0010 1.44M diskette 0011 2.88M diskette 0100 hard disk (drive C:) other reserved 5-4 reserved (0) 6 image contains ATAPI driver 7 image contains SCSI driver(s) SeeAlso: #00281 --------d-134B00----------------------------- INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION AX = 4B00h DL = drive number or 7Fh to terminate all emulations DS:SI -> empty specification packet (see #00281) Return: CF clear if successful CF set on error (drive will still be in emulation mode) AX = return codes DS:SI specification packet filled SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh --------d-134B01----------------------------- INT 13 - Bootable CD-ROM - GET STATUS AX = 4B01h DL = drive number DS:SI -> empty specification packet (see #00281) Return: CF clear if successful CF set on error AX = return codes DS:SI specification packet filled Note: same as AX=4B00h, but does not terminate emulation SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh --------d-134C------------------------------- INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT AH = 4Ch AL = 00h DS:SI -> specification packet (see #00281) Return: never, if successful CF set (error while attempting to boot) AX = error codes SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Dh --------d-134D00----------------------------- INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG AX = 4D00h DS:SI -> command packet (see #00283) Return: CF clear if successful CF set on error AX = return codes SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch Format of Bootable CD-ROM "get boot catalog" command packet: Offset Size Description (Table 00283) 00h BYTE size of packet in bytes (08h) 01h BYTE number of sectors of boot catalog to read 02h DWORD -> buffer for boot catalog 06h WORD first sector in boot catalog to transfer SeeAlso: #00281 --------d-134E------------------------------- INT 13 - IBM/MS INT 13 Extensions v2.1+ - SET HARDWARE CONFIGURATION AH = 4Eh AL = function 00h enable prefetch 01h disable prefetch 02h set maximum PIO transfer mode 03h set PIO mode 0 04h set default PIO transfer mode 05h enable INT 13h DMA maximum mode 06h disable INT 13h DMA DL = drive number Return: CF clear if successful AH = 00h AL = status 00h command was safe (only affected specified drive) 01h other devices are affected CF set on error AH = error code (see #00234) Note: DMA and PIO modes are mutually exclusive, so selecting DMA disables PIO (for either the specified device or all devices on that controller), and selecting PIO disables DMA SeeAlso: AH=41h"INT 13 Extensions",AX=5001h"Enhanced Disk Drive" --------d-135001----------------------------- INT 13 - Enhanced Disk Drive Spec v3.0 - SEND PACKET COMMAND AX = 5001h DL = drive number ES:BX -> command packet (see #00284) Return: CF clear if successful AH = 00h CF set on error AH = error code Desc: send data to and from a serial packet-oriented device, such as IEEE1394 and USB SeeAlso: AH=41h"INT 13 Extensions",AH=4Eh Format of Enhanced Disk Drive Spec v3.0 command packet: Offset Size Description (Table 00284) 00h WORD signature B055h 02h BYTE length of packet in bytes 03h BYTE reserved (0) 04h N BYTEs formatted packet data --------v-135001------------------------ INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK AX = 5001h Return: AX = 0150h if resident SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h --------v-135342CX0001----------------------- INT 13 - ScanBoot - INSTALLATION CHECK AX = 5342h ("SB") CX = 0001h DX = 0000h Return: CF clear if ScanBoot installed AX = 0000h CX = serial number ("SW" if shareware release) DX = version BX,SI,ES destroyed Program: ScanBoot is a virus-detection TSR by PanSoft --------d-135501----------------------------- INT 13 - Seagate ST01/ST02 - Inquiry AX = 5501h DH = number of bytes to transfer DL = drive ID (80h, 81h, ...) ES:BX -> buffer for results Return: ES:BX buffer filled with the Inquiry results Notes: the ST01/ST02 BIOS does not return any success/failure indication, so all commands must be assumed to have been successful the ST01/ST02 BIOS always maps its drives after the previous BIOS drives without changing the BIOS drive count at 0040h:0075h this command is identical to the SCSI Inquiry command --------d-135502----------------------------- INT 13 - Seagate ST01/ST02 - RESERVED AX = 5502h --------d-135503----------------------------- INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ) AX = 5503h DH = DTQ byte (see #00285) DL = drive ID (80h, 81h, ...) Return: nothing Bitfields for DTQ byte: Bit(s) Description (Table 00285) 7 reserved 6 SCSI drive attached 5 reserved 4 selected drive is ST225N/NP (Paired) 3 selected drive is ST225N 2 Host Adapter checks parity on the selected drive 1 selected drive has been installed 0 Seagate installation software present --------d-135504----------------------------- INT 13 U - Seagate - ??? - RETURN IDENTIFICATION AX = 5504h DX = drive (bit 7 set for hard disk) Return: CF clear if successful AX = 4321h if ST01/ST02h AX = 4322h if ??? Seagate controller CF set on error SeeAlso: AX=5505h,AX=5514h --------d-135504----------------------------- INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION AX = 5504h DL = drive ID (80h, 81h, ...) Return: AX = 4321h BL = selected drive number (00h, 01h) BH = number of drives attached to Host Adapter (max. 2) --------d-135505----------------------------- INT 13 - Seagate - ??? - PARK HEADS AX = 5505h DX = drive (bit 7 set for hard disk) Return: CF clear if successful CF set on error SeeAlso: AX=5504h,AX=5515h --------d-135505----------------------------- INT 13 - Seagate ST01/ST02 - PARK HEADS AX = 5505h DL = drive ID (80h, 81h, ...) DH = subfunction 00h park heads (SCSI Stop command) 01h un-park heads (SCSI Start command) Return: nothing --------d-135506----------------------------- INT 13 - Seagate ST01/ST02 - SCSI Bus Parity AX = 5506h DL = drive ID (80h, 81h, ...) DH = subfunction 00h disable parity check 01h enable parity check 02h return current parity setting Return: AL = status 00h parity checking disabled 01h parity checking enabled --------d-135507----------------------------- INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS AX = 5507h to 550Dh Note: officially listed as "reserved" --------d-135514----------------------------- INT 13 U - Seagate - ??? AX = 5514h DX = drive (bit 7 set for hard disk) Return: CF clear if successful CF set on error AX = return value (FEBEh,FEBFh,FEDAh,FEDBh) SeeAlso: AX=5504h,AX=5515h --------d-135515----------------------------- INT 13 U - Seagate - PARK HEADS??? AX = 5515h DX = drive (bit 7 set for hard disk) Return: CF clear if successful CF set on error Note: appears to be identical to AX=5505h SeeAlso: AX=5504h,AX=5505h --------d-1359------------------------------- INT 13 - SyQuest - Generic SCSI pass through AH = 59h CX = HOST_ID, 0-based DX = 80h ES:BX pointer to SCSI structure (see #00286) Return: CF clear AH = 95h SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest" Format of SyQuest SCSI structure: Offset Size Description (Table 00286) 00h WORD opcode (see #00287) 02h BYTE target's SCSI ID 03h BYTE target's logical unit number 04h BYTE data direction (00h no data xfer, 01h data in, FFh data out) 05h BYTE host status 00h successful 01h selection time out 02h data over-run or under-run 06h BYTE target status at command completion 00h successful 02h check status 08h busy 07h BYTE command data block length 08h DWORD request data length 0Ch DWORD result data length (actual length of data transferred) 10h DWORD -> CDB (see #03236,#03237,#03238) 14h DWORD -> data buffer Note: The handler does not perform a 'Request Sense' command if there was an error (Table 00287) Values for SCSI opcode: 00h verify interface clears carry flag and returns if function is available 01h returns the ID of the INT 13h Handler in a NULL terminated string of length less than 40 byte including the terminator. The string is stored in the buffer pointed by p_buf. 02h device mapping info. The caller provides a one byte buffer. The handler stores the Int 13h Device ID (80h or above) in the buffer. It stores 0 if that target does not exists. 03h execute SCSI command 04h device reset 05h SCSI bus reset SeeAlso: #00286 --------d-1370------------------------------- INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE??? AH = 70h ??? Return: ??? Note: Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level formatting program) make this call, presumably to EDVR.SYS (the partitioning driver) SeeAlso: AH=ADh ----------1375------------------------------- INT 13 - ??? AH = 75h ??? Return: AH = ??? ??? Note: intercepted by PC-Cache (v5.1 only) ----------1376------------------------------- INT 13 - ??? AH = 76h ??? Return: AH = ??? ??? Note: intercepted by PC-Cache (v5.1 only) --------c-137B00----------------------------- INT 13 - NOW! v3.05 - GET INFORMATION AX = 7B00h CX:DX -> 1F8h-byte buffer for information record (see #00288) Return: AX = 0000h BX = segment of main resident code ES = ??? Program: NOW! is a disk cache by Vertisoft Systems, Inc. SeeAlso: AX=7B02h,AH=EFh Format of NOW! information record: Offset Size Description (Table 00288) 00h 80 BYTEs name of directory from which NOW! was started 50h 424 BYTEs ??? 81h ? BYTEs array of bytes for ??? F7h 250 BYTEs array of 25 entries, one per drive??? Offset Size Description 00h 2 BYTEs ??? 02h WORD ??? 04h WORD ??? 06h 4 BYTEs ??? 1F1h 7 BYTEs ??? --------c-137B01----------------------------- INT 13 - NOW! v3.05 - ??? AX = 7B01h Return: DX = segment of ??? SeeAlso: AX=7B00h --------c-137B02----------------------------- INT 13 - NOW! v3.05 - SET INFORMATION AX = 7B02h BX = segment of ??? (10h above a PSP) CX:DX -> 1F8h-byte information record (see #00288) Return: ??? Program: NOW! is a disk cache by Vertisoft Systems, Inc. Note: NOW! grabs the INT 24h value from the PSP reached via the segment in BX SeeAlso: AX=7B00h --------c-137B03----------------------------- INT 13 - NOW! v3.05 - ??? AX = 7B03h ??? Return: ??? SeeAlso: AX=7B00h,AX=7B04h --------c-137B04----------------------------- INT 13 - NOW! v3.05 - ??? AX = 7B04h ??? Return: ??? SeeAlso: AX=7B03h --------c-137B05----------------------------- INT 13 - NOW! v3.05 - GET DISK ACCESSES??? AX = 7B05h Return: BX:AX = number of physical accesses??? DX:CX = total disk accesses??? SeeAlso: AX=7B00h,AX=7B06h --------c-137B06----------------------------- INT 13 - NOW! v3.05 - GET ??? AX = 7B06h BX = ??? Return: AX = 0000h BX = ??? SeeAlso: AX=7B05h,AX=7B07h --------c-137B07----------------------------- INT 13 - NOW! v3.05 - GET ??? AX = 7B07h Return: AX = ??? BX = ??? CX = ??? DX = ??? SeeAlso: AX=7B06h --------c-137B08----------------------------- INT 13 - NOW! v3.05 - ??? AX = 7B08h CX = ??? (default 00h) Return: ??? SeeAlso: AX=7B00h --------c-1380--CX6572----------------------- INT 13 - FAST! v4.02+ - API AH = 80h CX = 6572h DX = 1970h ES:BX -> request packet (see #00290) AL = function number (see #00289) Return: AH = status (except function 06h) 00h if successful 01h invalid function 05h not supported by the installed variant CF clear if successful CF set on error AL may be destroyed Program: FAST! is a disk cache by Future Computing Systems and marketed by BLOC Publishing Corp. SeeAlso: AX=8001h,AX=8006h,AX=8007h Index: hotkeys;FAST! (Table 00289) Values for FAST! function: 01h get cache information (see AX=8001h) 04h disable cache 05h enable cache and reset statistics 06h installation check (see AX=8006h) 07h unhook interrupts (see AX=8007h) 09h flush cache 0Ah (v4.02+) enable staged writes 0Bh (v4.02+) disable staged writes 0Ch (v4.02+) enable beep on flush 0Dh (v4.02+) disable beep on flush 0Eh ??? 0Fh ??? 10h (v4.12+) enable hotkeys 11h (v4.12+) disable hotkeys 12h (v4.13+) set idle delay 13h (v4.13+) set flush dirty percentage 14h (v5.00+) enable mouse checks 15h (v5.00+) disable mouse checks 16h (v5.00d+) reduce cache size to minimum 17h (v5.00d+) increase cache size to maximum Format of FAST! request packet: Offset Size Description (Table 00290) 00h DWORD pointer to 19-byte signature string (see #00291) 04h DWORD pointer to buffer for data (if needed by function) (Table 00291) Values for FAST! v4.04-v5.03 signature string: 13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h --------c-138001CX6572----------------------- INT 13 - FAST! v4.02+ - GET CACHE INFORMATION AX = 8001h CX = 6572h DX = 1970h ES:BX -> request packet (see #00292) Return: AH = 00h if successful SeeAlso: AH=80h,AX=8006h Format of FAST! request packet: Offset Size Description (Table 00292) 00h DWORD -> 19-byte signature string (see #00291) 04h DWORD -> buffer for cache information (see #00293) Format of FAST! cache information (v5.00-5.03): Offset Size Description (Table 00293) 00h WORD binary version number of FAST! (v5.00 = 01F4h) 02h BYTE revision letter (61h = X.XXa, 62h = X.XXb, etc.) 03h BYTE FAST! variant (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS) 04h DWORD total number of read requests 08h DWORD number of physical disk reads 0Ch DWORD grabbed hash buckets 10h DWORD "st_386mem" 14h DWORD total number of writes (only counted when staging enabled) 18h DWORD number of physical disk writes (only when staging enabled) 1Ch DWORD number of write errors while flushing cache 20h WORD flags1 (see #00294) 22h WORD flags bit 0: ??? bit 1: staged writes enabled 24h WORD ??? 26h WORD maximum cache size in KB 28h WORD minimum cache size in KB 2Ah WORD segment of first cache buffer (FASTC) segment of EMS page frame (FASTE) XMS handle (FASTX XMS) 2Ch WORD number of hash buckets containing no entries 2Eh WORD number of hash buckets containing one entry 30h WORD number of hash buckets containing two entries 32h WORD number of hash buckets containing three entries 34h WORD number of hash buckets containing four entries 36h WORD number of hash buckets containing five entries 38h WORD maximum contiguous sectors 3Ah WORD hash factor 3Ch WORD number of paragraphs of memory used below 1M 3Eh WORD entries per hash bucket 40h WORD idle delay in seconds 42h 2 BYTEs ??? 44h WORD staged write threshold percentage 46h 2 BYTEs ??? 48h WORD number of dirty sectors 4Ah WORD number of staged write buffers 4Ch WORD current cache size in KB 4Eh WORD beep frequency in Hz 50h WORD ??? 52h WORD ??? Bitfields for FAST! flags1: Bit(s) Description (Table 00294) 0 beep on flush 3 hotkeys enabled 4 mouse idle check enabled 8 caching enabled 13 ??? --------c-138006CX6572----------------------- INT 13 - FAST! v4.02+ - INSTALLATION CHECK AX = 8006h CX = 6572h DX = 1970h ES:BX -> request packet (see #00295) Return: AX = 1965h if installed SeeAlso: AH=80h,AX=8001h,AX=8007h Format of FAST! request packet: Offset Size Description (Table 00295) 00h DWORD -> 19-byte signature string (see #00291) --------c-138007CX6572----------------------- INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS AX = 8007h CX = 6572h DX = 1970h ES:BX -> request packet (see #00296) Return: AX = 1965h if installed SeeAlso: AH=80h,AX=8006h Index: uninstall;FAST! Format of FAST! request packet: Offset Size Description (Table 00296) 00h DWORD -> 19-byte signature string (see #00291) --------c-1381--SI4358----------------------- INT 13 - Super PC-Kwik v3.20+ - ??? 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 (PC-Cache v5.1 corresponds to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27) returns immediately in PC-Cache v5.x Index: PC-Cache|Qualitas Qcache --------c-1382--SI4358----------------------- INT 13 - Super PC-Kwik v3.20+ - ??? 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 Index: PC-Cache|Qualitas Qcache --------c-1383--SI4358----------------------- INT 13 - Super PC-Kwik v3.20+ - ??? 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 Index: PC-Cache|Qualitas Qcache --------c-1384--SI4358----------------------- INT 13 - Super PC-Kwik v3.20+ - ??? 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 Index: PC-Cache|Qualitas Qcache --------c-1385--SI4358----------------------- INT 13 - Super PC-Kwik v3.20+ - ??? 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 (PC-Cache v5.1 corresponds to PC-Kwik v3.20) SeeAlso: AH=83h Index: PC-Cache|Qualitas Qcache --------c-1386--SI4358----------------------- INT 13 - Super PC-Kwik v4.00+ - ??? AH = 86h SI = 4358h ??? Return: ??? Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and thus supports this call Index: Qualitas Qcache --------c-1387--SI4358----------------------- INT 13 - Super PC-Kwik v4.00+ - ??? AH = 87h SI = 4358h ??? Return: AH = status??? (00h) CX = ??? DX = ??? (0000h) Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and thus supports this call Index: Qualitas Qcache --------c-1388--SI4358----------------------- INT 13 - Super PC-Kwik v4.00+ - ??? AH = 88h SI = 4358h ??? Return: AH = status??? (00h) CX = ??? DX = ??? (0000h) Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and thus supports this call Index: Qualitas Qcache --------c-1389--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 89h SI = 4358h ??? Return: ??? --------c-138A--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 8Ah SI = 4358h ??? Return: ??? --------c-138EED----------------------------- INT 13 - HyperDisk v4.01+ - ??? AX = 8EEDh ??? Return: ??? Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross) SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00h --------c-138EEE----------------------------- INT 13 - HyperDisk v4.01+ - ??? AX = 8EEEh Return: CF set AX = CS of HyperDisk resident code ??? Note: identical to AX=8EEFh in HYPERDKX v4.21-4.30 SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh --------c-138EEF----------------------------- INT 13 - HyperDisk v4.01+ - ??? AX = 8EEFh Return: CF set AX = CS of HyperDisk resident code ??? Note: identical to AX=8EEEh in HYPERDKX v4.21-4.30 SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh --------c-1392--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 92h SI = 4358h ??? Return: AH = status??? (00h) DL = ??? SeeAlso: AH=93h --------c-1393--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 93h SI = 4358h ??? Return: AH = status??? (00h) AL = ??? SeeAlso: AH=92h --------c-1394--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 94h SI = 4358h ??? Return: ??? --------c-1395--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 95h SI = 4358h ??? Return: AH = status??? (00h) DX = ??? --------c-1396--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 96h SI = 4358h AL = ??? (01h) BX = ??? (0790h) DL = ??? Return: AH = status??? (00h) DX = ??? --------c-1397--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 97h SI = 4358h ??? Return: ??? --------c-1398--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 98h SI = 4358h ??? Return: ??? --------c-1399--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 99h SI = 4358h ??? Return: ??? --------c-139A--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 9Ah SI = 4358h ??? Return: ??? --------c-139B--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 9Bh SI = 4358h ??? Return: ??? --------c-139C--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 9Ch SI = 4358h ??? Return: ??? Note: functions 9Ch and 9Dh are the only ones which are fully reentrant; all other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear if a previous call is still in progress --------c-139D--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = 9Dh SI = 4358h ??? Return: ??? --------c-13A0--SI4358----------------------- INT 13 - Super PC-Kwik v3.20+ - 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 (note that PC-Cache v5.5 corresponds to PC-Kwik v3.27) SeeAlso: INT 16/AX=FFA5h/CX=1111h Index: PC-Cache|Qualitas Qcache --------c-13A1--SI4358----------------------- INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE AH = A1h SI = 4358h Return: CF clear AH = 00h (v5.10) Notes: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of Super PC-Kwik, and thus support this call (note that PC-Cache v5.1 corresponds to PC-Kwik v3.20) this function is one out of several cache flush calls issued by the PTS-DOS 6.51 and S/DOS 1.0 kernel before rebooting. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh Index: PC-Cache|Qualitas Qcache --------c-13A2--SI4358----------------------- INT 13 - Super PC-Kwik v3.20+ - ??? 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 (note that PC-Cache v5.1 corresponds to PC-Kwik v3.20) Index: PC-Cache|Qualitas Qcache --------c-13A3--SI4358----------------------- INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE AH = A3h SI = 4358h Return: CF clear SeeAlso: AH=A4h --------c-13A4--SI4358----------------------- INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE AH = A4h SI = 4358h Return: CF clear SeeAlso: AH=A3h --------c-13A5--SI4358----------------------- INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION AH = A5h SI = 4358h Return: AX = ??? SI = ??? Notes: called and used internally by Super PC-Kwik when a program terminates via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch this call is not supported by Qualitas Qcache 4.00 Index: PC-Cache SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch --------c-13A6--SI4358----------------------- INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION AH = A6h SI = 4358h DS:DX -> ASCIZ program name ES:BX -> EXEC data block (see #01590 at INT 21/AH=4Bh) Return: ??? Note: called and used internally by Super PC-Kwik when a program is loaded with INT 21/AX=4B00h SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh --------c-13A7--SI4358----------------------- INT 13 CU - Super PC-Kwik 5.1 - ??? AH = A7h SI = 4358h Return: ??? Note: called and used internally by Super PC-Kwik on some INT 21 calls SeeAlso: AH=A5h,AH=A6h,AH=A8h --------v-13A759----------------------------- INT 13 U - Novell DOS 7 - SDRes v27.03 - ??? AX = A759h Return: AX = 59A7h if installed DX:BX -> ??? data Program: SDRes is the resident portion of the Search&Destroy antiviral by Fifth Generation Systems, as bundled with Novell DOS 7 SeeAlso: INT 21/AH=0Eh/DL=ADh --------c-13A8--SI4358----------------------- INT 13 CU - Super PC-Kwik 5.1 - ??? AH = A8h SI = 4358h Return: ??? Note: called and used internally by Super PC-Kwik on some INT 21 calls SeeAlso: AH=A5h,AH=A6h,AH=A7h --------c-13A9--SI4358----------------------- INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION AH = A9h SI = 4358h Return: ??? Note: called and used internally by Super PC-Kwik when an application issues INT 21/AH=4Dh SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh --------c-13AA--SI4358----------------------- INT 13 - Super PC-Kwik v4+ - ??? AH = AAh SI = 4358h ??? Return: ??? Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports this call --------c-13AB--SI4358----------------------- INT 13 - Super PC-Kwik v4+ - ??? AH = ABh SI = 4358h ??? Return: ??? Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports this call --------c-13AC--SI4358----------------------- INT 13 - Super PC-Kwik v4+ - ??? AH = ACh SI = 4358h ??? Return: ??? Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports this call --------d-13AD------------------------------- INT 13 - Priam HARD DISK CONTROLLER??? AH = ADh ??? Return: ??? Note: this call is made from Priam's EFMT.EXE (low-level formatter), probably to check the ROM type on the controller for their hard disk kits SeeAlso: AH=70h --------c-13AD--SI4358----------------------- INT 13 - Super PC-Kwik v4+ - ??? AH = ADh SI = 4358h ??? Return: ??? Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports this call --------c-13AE--SI4358----------------------- INT 13 - Super PC-Kwik v5.10+ - ??? AH = AEh SI = 4358h ??? Return: ??? --------c-13B0--SI4358----------------------- INT 13 - Super PC-Kwik v3.20+ - ??? 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 Index: PC-Cache ----------13BF00----------------------------- INT 13 - Mylex/Adaptec??? - ??? AX = BF00h BX = PCI address??? DI = 0000h ??? DL = drive number (80h = C:) Return: ??? Note: some poorly-commented code using this function notes that there had been a workaround for some Mylex BIOS bug by setting DL to 8Fh --------d-13E000----------------------------- INT 13 - XBIOS - COMMAND AX = E000h CX = 0 DL = drive number (80h,81h,82h,83h) ES:BX = pointer to XBIOS Command Block (see #00297) Return: CF clear if successful CX = 1234h XBIOS Signature CF set on error Program: XBIOS is a driver in some versions of Disk Manager that is loaded from the disk MBR, replacing the ROM BIOS disk support e.g. adding LBA mode support, and read/write multiple. SeeAlso: AH=F9h"SWBIOS" Format of XBIOS Command Block: Offset Size Description (Table 00297) 00h BYTE function 0Eh Get XBIOS Configuration Information Return: buffer points to Ontrackr_Ref_Data structure (see #00298) 01h BYTE reserved (must be zero before function call) 02h DWORD buffer pointer - Input or output depending on opcode SeeAlso: #00298,#00299 Format of Ontrackr_Ref_Data structure: Offset Size Description (Table 00298) 00h WORD Size of structure (33h) 02h BYTE VxD Chain mode 03h 12 BYTEs Drive 1: Ontrackr_VxD_Data structure (see #00299) 0Fh 12 BYTEs Drive 2: Ontrackr_VxD_Data structure 1Bh 12 BYTEs Drive 3: Ontrackr_VxD_Data structure 27h 12 BYTEs Drive 4: Ontrackr_VxD_Data structure (see #00299) SeeAlso: #00297,#00299 Format of Ontrackr_VxD_Data structure: Offset Size Description (Table 00299) 00h BYTE INT 13h drive number 01h DWORD Delta skew value 05h BYTE Physical heads (Word 3 of Identify Data) 06h BYTE Physical sectors per track (Word 6 of Identify Data) 07h BYTE Multiple Block Size (Blocking factor) 08h BYTE Read/Write Multiple disable flags 00001000b drive supports r/w multiple 00000100b do not use read multiple 00000010b do not use write multiple 09h WORD Base port address (1F0/170) 0Bh BYTE Hardware interrupt channel (14/15) SeeAlso: #00298 --------v-13EC00----------------------------- INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK AX = EC00h Return: CF clear if installed SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h --------d-13EE------------------------------- INT 13 - SWBIOS - SET 1024-CYLINDER FLAG AH = EEh DL = drive number (80h, 81h) Return: CF clear AH = 00h Program: SWBIOS is a TSR by Ontrack Computer Systems Desc: the following INT 13 call will add 1024 to the specified cylinder number to get the actual cylinder number desired Notes: the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh Disk Manager also supports these calls this function is 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 for software which supports that call, this function is equivalent to calling AH=EFh with CX=0400h SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AX=DF00h Index: PC-Cache;huge disks|Disk Manager --------c-13EF------------------------------- INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET AH = EFh CX = cylinder offset for next INT 13 call DL = drive number (80h, 81h) Return: CF clear AH = 00h Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for IDE drives supporting the read multiple and write multiple commands Desc: the following INT 13 call will add the number given by this call to the specified cylinder to get the actual cylinder number, then reset the offset to zero Note: this function is also supported by the NOW! disk cache, and presumably newer versions of SWBIOS and Disk Manager for software which supports this call, AH=EEh is equivalent to calling this function with CX=0400h the cylinder offset is reset to 0 by all INT 13 called except AH=EEh and AH=EFh SeeAlso: AX=7B00h --------v-13F2------------------------------- INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK AH = F2h Return: CF ??? if installed SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h --------d-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 Program: SWBIOS is a TSR by Ontrack Computer Systems XBIOS is a driver in some versions of Disk Manager that is loaded from the disk MBR, replacing the ROM BIOS disk support eg adding LBA mode support, and read/write multiple. Note: Disk Manager also supports these calls SeeAlso: AH=EEh,AX=E000h"XBIOS",AH=FFh"EZ-Drive" Index: Disk Manager --------v-13FA--DX5945----------------------- INT 13 - PC Tools v8+ VSAFE, VWATCH - API AH = FAh DX = 5945h AL = function (00h-07h) Return: varies by function if not installed: CF set AH = 01h Note: this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh, so it is listed in its entirety under INT 16/AX=FA00h and following SeeAlso: INT 16/AX=FA00h --------v-13FD50------------------------ INT 13 - VIRUS - "Predator" - INSTALLATION CHECK AX = FD50h Return: AX = 50FDh if resident SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS" --------d-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 Program: SWBIOS is a TSR by Ontrack Computer Systems Notes: standard INT 13/AH=08h will return a cylinder count truncated to 1024 BIOS without this extension would return count modulo 1024 Disk Manager also supports these calls SeeAlso: AH=EEh ----------13FF------------------------------- INT 13 - EZ-Drive - INSTALLATION CHECK AH = FFh DL = drive number (80h) Return: CF clear AX = AA55h ES:BX -> string "AERMH13Vxx", where xx is the version number of the EZ-Drive driver CF set on error Program: EZ-Drive is a driver by Micro House that is loaded from the hard disk MBR, replacing the ROM BIOS disk support, eg adding LBA mode support, and read/write multiple. Note: this function is called by the Windows95 Master Boot Record SeeAlso: AX=E000h"XBIOS",AH=F9h"SWBIOS" --------B-13FF------------------------------- INT 13 - IBM SurePath BIOS - Officially "Private" Function AH = FFh --------U-13FFFFBHAA------------------------- INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE AX = FFFFh BH = AAh BL = subfunction 00h installation check Return: AX = 1234h if installed 01h turn on Turbo mode 02h turn off Turbo mode 03h set Turbo mode according to hardware switch 04h set disk access to Turbo mode 05h set disk access to Normal mode Return: nothing SeeAlso: INT 15/AH=DFh Index: installation check;UNIQUE UX Turbo Utility --------S-14--------------------------------- INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS) InstallCheck: determine whether the "~DOSXAM~" character device exists Index: installation check;Digiboard DigiCHANNEL --------S-1400------------------------------- INT 14 - SERIAL - INITIALIZE PORT AH = 00h AL = port parameters (see #00300) DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS) Return: AH = line status (see #00304) FFh if error on Digiboard XAPCM232.SYS AL = modem status (see #00305) Notes: default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes since the PCjr supports a maximum of 4800 bps, attempting to set 9600 bps will result in 4800 bps various network and serial-port drivers support the standard BIOS functions with interrupt-driven I/O instead of the BIOS's polled I/O the 1993/04/08 Compaq system ROM uses only the low two bits of DX the default setting used by DOS (MS-DOS 6, DR-DOS 7.03, PTS-DOS) when (re-)initializing the serial devices is AL=A3h (2400 bps, no parity, 1 stop bit, 8 data bits). SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch SeeAlso: MEM 0040h:0000h,PORT 03F8h"Serial" Bitfields for serial port parameters: Bit(s) Description (Table 00300) 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps) 4-3 parity (00 or 10 = none, 01 = odd, 11 = even) 2 stop bits (set = 2, clear = 1) 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8) SeeAlso: #00302,#00307,#00308,#00309 --------S-1400------------------------------- INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE AH = 00h AL = initializing parameters 7 - 6 - 5 4 - 3 2 1 - 0 -BAUD RATE- PARITY STOP WORD BITS LENGTH 000 19200 bd 00 none 0: 1 00: 5 001 38400 bd 01 odd 1: 2 01: 6 010 300 bd 11 even 10: 7 011 600 bd 11: 8 100 1200 bd 101 2400 bd 110 4800 bd 111 9600 bd (4800 on PCjr) DX = port number (0-3 or FFh if only performing non-I/O setup) Return: AH = RS-232 status code bits (see #00301) AL = modem status bits bit 3: always 1 bit 7: DCD - carrier detect SeeAlso: #00300,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS" Bitfields for FOSSIL RS-232 status: Bit(s) Description (Table 00301) 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 --------S-1400------------------------------- INT 14 - Tandy 2000 - SERIAL - RESET COMM PORT AH = 00h AL = RS-232C parameters (see #00302) DL = port number DH = protocol bit 0: use XON/XOFF on received data bit 1: use XON/XOFF when transmitting Return: AH = line status (see #00304) AL = modem status (see #00305) Note: this interrupt is identical to INT 53 on the Tandy 2000 SeeAlso: AH=04h"Tandy 2000",INT 53"Tandy 2000" --------S-1400------------------------------- INT 14 - MBBIOS - INITIALIZE PORT AH = 00h AL = port parameters (see #00302) DX = port number Return: AH = line status (see #00304) AL = modem status (see #00305) Note: MBBIOS was written by H. Roy Engehausen SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS" Bitfields for MBBIOS port parameters: Bit(s) Description (Table 00302) 7-5 data rate (normally 110,150,300,600,1200,2400,4800,9600 bps; 9600,14400,19200,28800,38400,57600,115200,330400 bps if the high-speed option is set) 4-3 parity (00 or 10 = none, 01 = odd, 11 = even) 2 stop bits (set = 2, clear = 1) 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8) SeeAlso: #00300 --------N-1400--DXFFFF----------------------- INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS AH = 00h DX = FFFFh ES:DI -> vector string specifying new parameters Return: AH = return code (00h,03h) (see #00303) Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network Note: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS function, but redirects the port over the network; if DX is any other value, the call is chained SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh (Table 00303) Values for Connection Manager return code: 00h successful 01h no such connection 02h invalid connection ID 03h invalid subvector found 04h communication error (check BH) 06h insufficient resources, retry later FFh no data available --------S-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 #00304) Notes: various network and serial-port drivers support the standard BIOS functions with interrupt-driven I/O instead of the BIOS's polled I/O the 1993/04/08 Compaq system ROM uses only the low two bits of DX SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h,MEM 0040h:007Ch --------N-1401--DXFFFF----------------------- INT 14 - Connection Manager - SEND CHARACTER AH = 01h DX = FFFFh BH = character to send Return: AH = return code (00h-02h,06h) (see #00303) Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS function, but redirects the port over the network; if DX is any other value, the call is chained this function is provided primarily for compatibility; AH=06h/DX=FFFFh is the preferred function because it provides better performance SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh --------S-1402------------------------------- INT 14 - SERIAL - READ CHARACTER FROM PORT AH = 02h AL = 00h (ArtiCom) DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS)) Return: AH = line status (see #00304) AL = received character if AH bit 7 clear Notes: will timeout if DSR is not asserted, even if function 03h returns data ready various network and serial-port drivers support the standard BIOS functions with interrupt-driven I/O instead of the BIOS's polled I/O the 1993/04/08 Compaq system ROM uses only the low two bits of DX SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh --------S-1402------------------------------- INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT AH = 02h DX = port number (0-3) Return: AL = character received AH = 00h SeeAlso: AH=01h,AH=02h"SERIAL" --------N-1402--DXFFFF----------------------- INT 14 - Connection Manager - RECEIVE CHARACTER AH = 02h DX = FFFFh BH = character to send Return: AH = return code (00h-02h,04h,FFh) (see #00303) BH = line status (see #00304) AL = received character (if any) Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS function, but redirects the port over the network; if DX is any other value, the call is chained this function is provided primarily for compatibility; AH=07h/DX=FFFFh is the preferred function because it provides better performance SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh --------S-1403------------------------------- INT 14 - SERIAL - GET PORT STATUS AH = 03h AL = 00h (ArtiCom) DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS) Return: AH = line status (see #00304) AL = modem status (see #00305) AX = 9E00h if disconnected (ArtiCom) Note: the 1993/04/08 Compaq system ROM uses only the low two bits of DX SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h Bitfields for serial line status: Bit(s) Description (Table 00304) 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 Note: for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved through a separate call (see AX=8000h"COMM-DRV") Bitfields for modem status: Bit(s) Description (Table 00305) 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 --------N-1403--DXFFFF----------------------- INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS AH = 03h DX = FFFFh AL = connection ID Return: AH = return code (00h-02h) (see #00303) BH = line status (see #00306) BL = modem status (see #00305) (only bits 4,5,7; all others zero) Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS function, but redirects the port over the network; if DX is any other value, the call is chained SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh Bitfields for Connection Manager line status: Bit(s) Description (Table 00306) 7 CTS changed 6 current CTS state 5 timeout 4 break 3 framing error 2 parity error 1 overrun 0 current carrier state (0 active, 1 no carrier) --------S-1404------------------------------- INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS) AH = 04h AL = break status 00h if break 01h if no break BH = parity (see #00307) BL = number of stop bits 00h one stop bit 01h two stop bits (1.5 if 5 bit word length) CH = word length (see #00308) CL = bps rate (see #00309) DX = port number Return: AX = port status code (see #00304,#00305) SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM" (Table 00307) Values for serial port parity: 00h no parity 01h odd parity 02h even parity 03h stick parity odd 04h stick parity even SeeAlso: #00300,#00308,#00309,#00310 (Table 00308) Values for serial port word length: 00h 5 bits 01h 6 bits 02h 7 bits 03h 8 bits SeeAlso: #00300,#00307,#00309,#00345 (Table 00309) Values for serial port bps rate: 00h 110 (19200 if ComShare installed) 01h 150 (38400 if ComShare installed) 02h 300 03h 600 (14400 if ComShare installed) 04h 1200 05h 2400 06h 4800 (28800 if ComShare installed) 07h 9600 08h 19200 ---ComShare--- 09h 38400 0Ah 57600 0Bh 115200 SeeAlso: #00300,#00307,#00309,#00346,#00353,AH=36h,#00364,#00606,#02923 --------S-1404------------------------------- INT 14 - Tandy 2000 - SERIAL - FLUSH COMM BUFFER AH = 04h DL = port number DH = protocol bit 0: use XON/XOFF on received data bit 1: use XON/XOFF when transmitting Return: nothing Desc: clears the serial interface buffer Note: this interrupt is identical to INT 53 on the Tandy 2000 SeeAlso: AH=00h"Tandy 2000",INT 53"Tandy 2000" --------S-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 specification 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; this can serve as an installation check SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh Index: installation check;FOSSIL --------S-1404------------------------------- INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT AH = 04h Return: port initialized; if Hayes-compatible modem, a connection has been established Note: the port number is stored at offset BEh in the Task Control Block (see #00456 at INT 15/AH=13h"MultiDOS") SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS" --------S-1404------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE AH = 04h AL = initializing parameters (see #00310) BX = baud rate DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful FFh error SeeAlso: AH=05h"Digiboard" Bitfields for Digiboard initializing parameters: Bit(s) Description (Table 00310) 7-5 unused 4-3 parity (00 none, 01 odd, 11 even) 2 stop bits (0 = one, 1 = two) 1-0 data bits (00 = five, 01 = six, 10 = seven, 11 = eight) SeeAlso: #00307,#00308 --------S-1404------------------------------- INT 14 - MBBIOS - INSTALLATION CHECK AH = 04h DX = port number Return: AX = AA55h if installed on specified port SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS" --------N-1404--DXFFFF----------------------- INT 14 - Connection Manager - OPEN COMMUNICATION AH = 04h DX = FFFFh ES:DI -> Connection Request protocol vector (see #00311) Return: AH = return code 00h successful AL = connection ID BH = connection type 00h direct connection or no dialing 01h Connection Server dialed phone 01h no response from Connection Server 03h invalid request Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network Desc: initiate a connection to the Connection Server listed in the current Client parameter set Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS function, but redirects the port over the network; if DX is any other value, the call is chained all subvectors of the Connection Request vector are optional; if missing, default values are provided by the default connection parameter set SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh Format of Connection Manager protocol command vector: Offset Size Description (Table 00311) 00h WORD (big-endian) total length of command (including this word) 02h WORD (big-endian) command code EF01h Connection Request EF06h Modify Connection Parameters 04h N BYTEs list of subvectors (see #00313) allowable subvector types are 01h-04h,17h,18h for command code EF01h; 03h,04h for command code EF06h (see #00312) (Table 00312) Values for Connection Manager subvector type code: 01h Connection ID 02h Destination ID 03h Asynchronous line parameters 04h Data transfer parameters 09h Line speed 0Ah Serial coding 0Bh Packet size 0Ch Timers 0Dh Special characters 0Eh Target ID 0Fh Telephone number 10h ASCII destination ID 11h Parity 12h Bits per character 13h Number of stop bits 14h Packet timer 15h Intercharacter timer 17h Flags 18h Parameter ranges 19h Flow control Format of Connection Manager subvector: Offset Size Description (Table 00313) 00h BYTE length of subvector 01h BYTE type code (see #00312) 02h N-2 BYTEs data, which may include subvectors SeeAlso: #00314,#00315,#00316,#00317,#00318,#00319,#00320,#00321,#00322,#00323,#00324 SeeAlso: #00325,#00326,#00328,#00329,#00330,#00331,#00332,#00333,#00311 Format of Connection ID subvector: Offset Size Description (Table 00314) 00h BYTE 03h (length) 01h BYTE 01h (subvector "Connection ID") 02h BYTE connection ID SeeAlso: #00313 Format of Destination ID subvector: Offset Size Description (Table 00315) 00h BYTE length 01h BYTE 02h (subvector "Destination ID") 02h N BYTEs subvector(s) of type 0Eh, 0Fh, or 10h SeeAlso: #00313 Format of Asynchronous line parameters subvector: Offset Size Description (Table 00316) 00h BYTE length 01h BYTE 03h (subvector "Asynchronous line parameters") 02h N BYTEs subvector(s) of type 09h, 0Ah, or 19h SeeAlso: #00313 Format of Data transfer parameters subvector: Offset Size Description (Table 00317) 00h BYTE length 01h BYTE 04h (subvector "Data transfer parameters") 02h N BYTEs subvector(s) of type 0Bh, 0Ch, or 0Dh SeeAlso: #00313 Format of Line speed subvector: Offset Size Description (Table 00318) 00h BYTE 04h (length) 01h BYTE 09h (subvector "Line speed") 02h WORD bit map, highest set bit selects speed bit 0: 2400 bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600 SeeAlso: #00313 Format of Serial coding subvector: Offset Size Description (Table 00319) 00h BYTE length 01h BYTE 0Ah (subvector "Serial coding") 02h N BYTEs subvector(s) of type 11h, 12h, or 13h SeeAlso: #00313 Format of Packet size subvector: Offset Size Description (Table 00320) 00h BYTE 04h (length) 01h BYTE 0Bh (subvector "Packet size") 02h WORD (big-endian) packet size, 1 to 1024 SeeAlso: #00313 Format of Timers subvector: Offset Size Description (Table 00321) 00h BYTE length 01h BYTE 0Ch (subvector "Timers") 02h 8 BYTEs subvector of type 14h or 15h SeeAlso: #00313 Format of Special characters subvector: Offset Size Description (Table 00322) 00h BYTE length 01h BYTE 0Dh (subvector "Special characters") 02h N BYTEs list of ASCII characters to be used as EOM or EOB SeeAlso: #00313 Format of Target ID: Offset Size Description (Table 00323) 00h BYTE length 01h BYTE 0Eh (subvector "Target ID") 02h N BYTEs target ID, 1-16 bytes SeeAlso: #00313 Format of Telephone number subvector: Offset Size Description (Table 00324) 00h BYTE length 01h BYTE 0Fh (subvector "Telephone number") 02h N BYTEs telephone number SeeAlso: #00313 Format of ASCII destination ID subvector: Offset Size Description (Table 00325) 00h BYTE length 01h BYTE 10h (subvector "ASCII destination ID") 02h N BYTEs destination ID SeeAlso: #00313 Format of Parity subvector: Offset Size Description (Table 00326) 00h BYTE 03h (length) 01h BYTE 11h (subvector "Parity") 02h BYTE parity type (see #00327) SeeAlso: #00313 Bitfields for Connection Manager parity type: Bit(s) Description (Table 00327) 7 odd 6 even 5 mark 4 space 3 none SeeAlso: #00326 Format of Bits per character subvector: Offset Size Description (Table 00328) 00h BYTE 03h (length) 01h BYTE 12h (subvector "Bits per character") 02h BYTE bits per character bit 7: seven bit 6: eight SeeAlso: #00313 Format of Number of stop bits subvector: Offset Size Description (Table 00329) 00h BYTE 03h (length) 01h BYTE 13h (subvector "Number of stop bits") 02h BYTE stop bits bit 7: one bit 6: 1.5 bit 5: two SeeAlso: #00313 Format of Packet timer and Intercharacter timer subvectors: Offset Size Description (Table 00330) 00h BYTE 04h (length) 01h BYTE subvector type 14h Packet timer 15h Intercharacter timer 02h WORD (big-endian) unit of value representing 20ms SeeAlso: #00313 Format of Flags subvector: Offset Size Description (Table 00331) 00h BYTE 03h (length) 01h BYTE 17h (subvector "Flags") 02h BYTE flags bit 7: queueing requested SeeAlso: #00313 Format of Parameter ranges subvector: Offset Size Description (Table 00332) 00h BYTE length 01h BYTE 18h (subvector "Parameter ranges") 02h N BYTEs subvector(s) of type 09h, 11h, 12h, or 13h SeeAlso: #00313 Format of Flow control subvector: Offset Size Description (Table 00333) 00h BYTE length (02h-04h) 01h BYTE 19h (subvector "Flow control") 02h BYTE XOFF character 03h BYTE XON character Note: if length is 02h, flow control is disabled; if length is 03h, any character will be accepted as XON after an XOFF SeeAlso: #00313 --------S-140400----------------------------- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK AX = 0400h Return: AX = 0FF0h SeeAlso: AX=0401h,AX=0408h --------S-140401----------------------------- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE AX = 0401h CX = mode Return: nothing SeeAlso: AX=0400h,AX=0402h --------S-140402----------------------------- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE AX = 0402h CL = parameters Return: nothing SeeAlso: AX=0400h,AX=0401h --------S-140403----------------------------- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT AX = 0403h CX = timeout Return: nothing SeeAlso: AX=0400h --------S-140404----------------------------- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER AX = 0404h Return: nothing SeeAlso: AX=0400h,AX=0405h,AX=0406h --------S-140405----------------------------- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT AX = 0405h Return: AX = number of characters in buffer SeeAlso: AX=0400h,AX=0404h,AX=0407h --------S-140406----------------------------- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER AX = 0406h Return: nothing SeeAlso: AX=0400h,AX=0404h,AX=0407h --------S-140407----------------------------- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT AX = 0407h Return: AX = number of characters in the buffer SeeAlso: AX=0400h,AX=0405h,AX=0406h --------S-140408----------------------------- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL AX = 0408h Return: nothing SeeAlso: AX=0400h --------S-1405------------------------------- INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS) AH = 05h AL = function 00h read modem control register Return: BL = modem control register (see #00334) AH = status 01h write modem control register BL = modem control register (see #00334) Return: AX = status DX = port number Note: also supported by ArtiCom SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh Bitfields for modem control register: Bit(s) Description (Table 00334) 0 data terminal ready 1 request to send 2 OUT1 3 OUT2 4 LOOP 5-7 reserved --------S-1405------------------------------- INT 14 - FOSSIL - DEINITIALIZE DRIVER AH = 05h DX = port number Return: none DTR is not affected SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh --------S-1405------------------------------- INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT AH = 05h AL = timeout in seconds (00h = never) Return: AL = status 00h successful AH = character read 01h read error 02h timed out other modem status (CTS, DSR) changed Note: the port number is stored at offset BEh in the Task Control Block SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS" SeeAlso: INT 15/AH=13h"MultiDOS" --------S-1405------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL AH = 05h AL = protocol (see #00335) BH = new XOFF character (00h = current) BL = new XON character (00h = current) DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful FFh error SeeAlso: AH=04h"Digiboard" Bitfields for Digiboard protocol: Bit(s) Description (Table 00335) 7-4 unused 3 RTS/CTS 2 DSR 1,0 XON/XOFF --------S-1405------------------------------- INT 14 - MBBIOS - DROP DTR AND RTS AH = 05h DX = port number Return: none SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL" --------S-1405------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL AH = 05h AL = new port protocol (see #00336) BH = new XOFF character BL = new XON character DX = port number Return: AH = FFh if invalid protocol SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS" Bitfields for PC-MOS/386 serial port protocol: Bit(s) Description (Table 00336) 7 set to enable/disable CD monitoring, clear to set protocol ---bit 7 set--- 4 CD monitoring enabled 5 automatic restart enabled ---bit 7 clear--- 0 receive XON/XOFF 1 transmit XON/XOFF 2 DTR/DSR 3 RTS/CTS ----------1405------------------------------- INT 14 - PhysTechSoft PTS ROM-DOS - SET PACKET AH = 05h CX = packet length DX = port number DS:SI -> packet Return: AH = error code (0 = no error, -1 = error) Notes: The embedded PC can send messages at any time. The managing PC may force the embedded PC to receive messages only after causing a reset on the remote embedded PC. !!!from Matthias Paul: Description of the high-level control packets: After the reset the embedded PC will send a 4-byte packet "LOAD" to the managing PC to indicate it is now able to receive commands. The managing PC can send commands using 6-byte sized packets starting with "COMM" followed by a 2-byte command code: "01" demand setup information "02" demand sending of diagnostic information If diagnostic information is requested, the embedded PC will send back a header packet starting with 4-byte "DIAG" followed by 2 bytes indicating the count of diagnostic data packets following. Each diagnostic data packet is sized 134 bytes, starting with the 4-byte "DIAG", a 2-byte number packet, followed by 128 bytes of data. If setup information is requested, the embedded PC will send back 8 bytes length packets starting with "SETP" and 2 byte of setup information of the LOADER and BIOS. The contents varies. If the embedded PC requests the managing PC to send a BIOS it will send a 4 byte packet "BIOS". The managing PC will then send back a 6-byte sized BIOS header packet starting with "BIOS" and a 2-byte indicator of the BIOS image size in packets. The embedded PC will answer by sending a 6 byte packet starting with "BIOS" followed by the running number of the demanded packet. The managing PC will then send the requested part of the BIOS image in a 134 byte sized packet, starting with "BIOS", the 2 byte running number of the packet and 128 bytes of the actual BIOS info. The embedded PC acknowledges that it received the BIOS with a 6-byte packet "BIOS", followed by 2-bytes of 0. If the embedded PCs requests the managing PC to send the operating system, it will follow the same proceduce as for requesting the BIOS. The only difference is that instead of "BIOS", the string "PTOS" will be used in the communication. Debug information packets have a length of 32 bytes starting with the 4-byte "DEBU" signature, and followed by the contents of the PCU registers in the following order: SP, SS, ES, DS, BP, DI, SI, DX, CX, BX, AX, IP, CS, Flags. Debug information is send after reaching the corresponding breakpoint. Description of the low-level packet protocol: Before sending a packet the sending side sends a byte 52h and for a certain time (ca. 1 second for the embedded PC) waits for confirmation (41h) from the receiving side. If no acknowledge is received this procedure is repeated 4 more times before an error is returned. If acknowledge was received the following information is sent: 2 BYTEs synchronization (50h, 50h) BYTE data packet size - 1 2 BYTEs CRC of the data var. data 2 BYTEs synchronization (F0h, F0h) The receiving side must acknowledge this by sending back two bytes 59h, 59h. If the sender does not receive the confirmation, it tries 4 more times before returning an error. SeeAlso: INT 14h/AH=06h, INT 15h/AX=E908h, INT 15h/E909h --------N-1405--DXFFFF----------------------- INT 14 - Connection Manager - CLOSE COMMUNICATION AH = 05h DX = FFFFh AL = connection ID Return: AH = return code 00h successful 01h no such connection 02h invalid connection ID AL = correct connection ID Desc: terminate existing connection to allow another one to be established Note: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS function, but redirects the port over the network; if DX is any other value, the call is chained SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh --------S-1406------------------------------- INT 14 - FOSSIL - RAISE/LOWER DTR AH = 06h DX = port AL = DTR state to be set 00h = lower 01h = raise Return: nothing SeeAlso: AH=05h"MBBIOS",AH=1Ah --------S-1406------------------------------- INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT AH = 06h AL = character Return: AL = status 00h successful Notes: the port number is stored at offset BEh in the Task Control Block if output queue is full, the calling task is blocked until the character can be stored SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS" SeeAlso: INT 15/AH=13h"MultiDOS" --------S-1406------------------------------- INT 14 - MBBIOS - RAISE DTR AND RTS AH = 06h DX = port number Return: none SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS" --------S-1406------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION AH = 06h DX = port number Return: AH bit 7 set AL = number of highest function supported by driver Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible operating system by The Software Link, Inc. SeeAlso: AH=18h"PC-MOS" --------N-1406------------------------------- INT 14 - TelAPI - WRITE BLOCK AH = 06h CX = number of characters to write DX = port number ES:DI -> buffer containing data Return: AX = number of characters actually sent (negative on error) CX = ??? SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI",AH=E3h"TelAPI" ----------1406------------------------------- INT 14 - PhysTechSoft PTS ROM-DOS - GET PACKET AH = 06h CX = buffer size for packet DX = port number DS:SI -> buffer for packet Return: AH = error code (00h = no error, FFh = error) CX = packet size SeeAlso: AH=05h"PTS ROM-DOS",INT 15/AX=E908h,INT 15/AX=E909h --------N-1406--DXFFFF----------------------- INT 14 - Connection Manager - SEND CHARACTER BLOCK AH = 06h DX = FFFFh AL = connection ID CX = number of characters to send ES:DI -> buffer containing data to be sent Return: AH = return code (see #00303) Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh --------S-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 --------S-1407------------------------------- INT 14 - MultiDOS Plus IODRV - GET PORT STATUS AH = 07h Return: CL = modem status (see #00305) CH = character at head of input queue (if any) DX = number of characters in input queue Note: the port number is stored at offset BEh in the Task Control Block SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS" SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS" --------S-1407------------------------------- INT 14 - MBBIOS - SEND BREAK AH = 07h DX = port number Return: none SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS" --------S-1407------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK AH = 07h BX = duration of break in clock ticks DX = port number Return: nothing --------N-1407------------------------------- INT 14 - TelAPI - READ BLOCK AH = 07h CX = length of buffer in bytes DX = port number ES:DI -> buffer for data Return: AX > 0000h number of characters actually read AX = 0000h host has closed connection AX < 0000h error code (see #00397) CX = ??? Note: translates CRLF into local EOL if the connection is in ASCII mode, negotiates various Telnet options, and immediately executes several different Telnet action commands SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI",AH=E2h"TelAPI" --------N-1407--DXFFFF----------------------- INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK AH = 07h DX = FFFFh AL = connection ID BL = flag 00h wait for data nonzero do not wait if no data avaiable CX = size of receive buffer ES:DI -> buffer for received characters Return: AH = return code (00h-02h,04h,FFh) (see #00303) BH = line status (see #00306) CX = number of characters received Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh --------S-1408------------------------------- INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE AH = 08h DX = port number Return: nothing SeeAlso: AH=09h"FOSSIL" --------S-1408------------------------------- INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS AH = 08h Return: AL = line status (see #00304) AH destroyed Notes: the port number is stored at offset BEh in the Task Control Block on every line status change, the line status is ORed with the line status accumulator; this function returns the accumulator and clears it SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS" --------S-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 #00304 at AH=03h) ZF set if no characters queued ZF clear if character available AL = next character SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard" --------S-1408------------------------------- INT 14 - MBBIOS - NON-DESTRUCTIVE READ AH = 08h DX = port number Return: AL = character (if AH bit 0 set) AH = status (see #00304) SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL" --------S-1408------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK AH = 08h DX = port number Return: CF set if carrier loss detected ZF set if input buffer empty ZF clear if characters available AL = next character dequeued --------N-1408--DXFFFF----------------------- INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS AH = 08h DX = FFFFh CX = size of buffer for parameters or 0000h to get length ES:DI -> buffer for parameter vector (see #00311) Return: AH = return code 00h successful CX = number of bytes required (if CX=0000h on entry) CX = number of bytes omitted for lack of space (if CX nonzero) nonzero invalid request Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh --------S-1409------------------------------- INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT AH = 09h DX = port number Return: nothing SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h --------S-1409------------------------------- INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS AH = 09h Return: modem status byte cleared Note: the port number is stored at offset BEh in the Task Control Block SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS" --------S-1409------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS AH = 09h DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful FFh error SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard" --------S-1409------------------------------- INT 14 - MBBIOS - GET/SET OPTIONS AH = 09h AL = option byte (see #00337) DX = port number??? Return: AL = old option byte SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL" Bitfields for MBBIOS option byte: Bit(s) Description (Table 00337) 0 transmit buffering enabled 2 hardware handshaking enabled 5 high-speed option enabled (see AH=00h"MBBIOS",#00302) other reserved --------S-1409------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS AH = 09h DX = port number Return: nothing SeeAlso: AH=13h"PC-MOS" --------N-1409--DXFFFF----------------------- INT 14 - Connection Manager - SEND BREAK AH = 09h DX = FFFFh AL = connection ID Return: AH = return code (00h-02h) (see #00303 at AH=00h/DX=FFFFh) Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh --------S-140A------------------------------- INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT AH = 0Ah DX = port number Return: nothing SeeAlso: AH=09h"FOSSIL",AH=85h --------S-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 Note: this function is also supported by the PC-MOS/386 v5.01 $serial.sys SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard" --------S-140A------------------------------- INT 14 - MBBIOS - WRITE BUFFER AH = 0Ah CX = count ES:DI -> buffer (see #00338) Return: AX = status (see #00304,#00305) CX = unsent character count DI updated Note: the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES contains the segment of a buffer containing the packet to be sent, which by default will be freed once the packet has been sent. Use AH=0Ch"MBBIOS" to allocate the buffer. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL" Format of MBBIOS PACCOM buffer: Offset Size Description (Table 00338) 00h 504 BYTEs data area 1F8h WORD length of data in data area 1FAh BYTE flags/status bit 7: don't discard buffer after transmitting data bit 6: buffer has been transmitted 1FBh BYTE reserved (0) for additional flags/status 1FCh WORD user data 1FEh WORD MBBIOS-internal pointer to next buffer --------N-140A--DXFFFF----------------------- INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS AH = 0Ah DX = FFFFh ES:DI -> vector string containing new parameters (see #00311) Return: AH = return code (00h-03h,06h) (see #00303) Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network Note: any subvectors valid for the Change Parameters command replace the existing values in the current set SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh --------S-140B------------------------------- INT 14 - FOSSIL - TRANSMIT NO WAIT AH = 0Bh AL = character DX = port number Return: AX = result 0000h character not accepted 0001h character accepted SeeAlso: AH=01h --------S-140B------------------------------- INT 14 - MBBIOS - READ BUFFER AH = 0Bh CX = size of buffer ES:DI -> buffer Return: AH = composite line status (see #00304) formed by ORing all statuses on receive interrupts; bit 0 set if additional characters available AL = composite modem status (see #00305) formed by ORing all statuses CX = number of characters actually read DI updated Note: the PACCOM version of MBBIOS does not use CX or ES:DI on call, instead returning ES set to the segment of the buffer containing a received packet, or 0000h if no packets available; the buffer may be freed with AH=0Ch"MBBIOS" SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL" --------N-140B--DXFFFF----------------------- INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION AH = 0Bh DX = FFFFh AL = service name 00h use parameter file or default 01h use specified name ES:DI -> 16-byte blank-padded name BH = connection notification 00h program awaiting connection, don't notify user 01h notify user on connecting BL = connection type 00h connection will use Connection Manager API Return: AH = return code (00h-02h) (see #00303 at AH=00h/DX=FFFFh) AL = connection ID if AH=00h Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh --------S-140C------------------------------- INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD AH = 0Ch DX = port number Return: AX = FFFFh character not available AX = 00xxh character xx available SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL" --------S-140C------------------------------- INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT AH = 0Ch ES = segment of buffer to free, or 0000h to allocate new buffer Return: ES = segment of allocated buffer (if ES=0000h on entry) Note: the PACCOM version of MBBIOS uses only ES as buffer address for AH=0Ah and AH=0Bh SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS" --------N-140C--DXFFFF----------------------- INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST AH = 0Ch DX = FFFFh AL = connection ID from AH=0Bh/DX=FFFFh Return: AH = return code (00h-03h) (see also #00303 at AH=00h/DX=FFFFh) 03h not prepared for inbound connection AL = connection ID (if AH=00h) or correct connection ID (if AH=02h) Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh --------S-140D------------------------------- INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT AH = 0Dh Return: AX = result FFFFh character not available xxyyh standard IBM-style scan code SeeAlso: AH=0Eh --------S-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 (see #00339) SeeAlso: AH=0Ah"Digiboard" (Table 00339) Values for Digiboard CH_KEY_RDY flag: 00h receive buffer empty FFh characters available --------S-140D------------------------------- INT 14 - MBBIOS PACCOM support - SET TXD AH = 0Dh AL = new setting (FFh = 1.0) Return: nothing Desc: specify the time from RTS to start or packet SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS" --------N-140D--DXFFFF----------------------- INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY AH = 0Dh DX = FFFFh Return: AH = return code 00h successful nonzero operation not terminated Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network Desc: end all Connection Client TSR activity to allow it to be removed from memory SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh --------S-140D00----------------------------- INT 14 - MBBIOS - GET AVAILABLE BYTES AX = 0D00h Return: AX = bytes in transmit buffer CX = bytes in receive buffer SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS" --------S-140D01----------------------------- INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS AX = 0D01h Return: nothing Note: this function lowers DTR, RTS, etc. SeeAlso: AX=0D02h --------S-140D02----------------------------- INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS AX = 0D02h Return: nothing Note: this function raises DTR, RTS, etc. SeeAlso: AX=0D01h --------S-140D03----------------------------- INT 14 - MBBIOS - SET HANDSHAKE BYTE AX = 0D03h CL = new handshake byte Return: CL = previous handshake byte Note: this function lowers DTR, RTS, etc. --------S-140E------------------------------- INT 14 - FOSSIL - KEYBOARD READ WITH WAIT AH = 0Eh Return: AX = xxyyh standard IBM-style scan code SeeAlso: AH=0Dh"FOSSIL" --------S-140E------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING AH = 0Eh CX = number of characters to write ES:BX -> string DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AX = number of characters actually written ZF clear if successful ZF set on error SeeAlso: AH=0Fh"Digiboard" --------S-140E------------------------------- INT 14 - MBBIOS PACCOM support - SET PERSISTENCE AH = 0Eh AL = new setting (FFh = 1.0) Return: nothing Desc: specify the time from end of DCD to RTS SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS" --------N-140E--DXFFFF----------------------- INT 14 - Connection Manager - SET HARDWARE FLOW STATE AH = 0Eh DX = FFFFh AL = connection ID from AH=04h/DX=FFFFh BL = RTS state (00h off, 01h on) Return: AH = return code (00h-03h) (see also #00303 at AH=00h/DX=FFFFh) 03h invalid request (BL not 00h or 01h) Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh --------S-140F------------------------------- INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL AH = 0Fh AL = bit mask describing requested flow control (see #00340) DX = port number Return: nothing SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL" Bitfields for FOSSIL requested flow control: Bit(s) Description (Table 00340) 0 XON/XOFF on transmit (watch for XOFF while sending) 1 CTS/RTS (CTS on transmit/RTS on receive) 2 reserved 3 XON/XOFF on receive (send XOFF when buffer near full) 4-7 all 1 --------S-140F------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING AH = 0Fh CX = number of characters to read ES:BX -> buffer DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AX = number of characters read ZF clear if successful ZF set on error (line status or wrong number of characters) SeeAlso: AH=0Eh"Digiboard" --------S-140F------------------------------- INT 14 - MBBIOS PACCOM support - SET SLOT TIME AH = 0Fh AL = new setting in clock ticks Return: nothing Desc: specify the time from end of DCD to RTS SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS" --------N-140F--DXFFFF----------------------- INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS AH = 0Fh DX = FFFFh AL = connection ID CX = size of buffer or 0000h to get length of returned vector ES:DI -> buffer for connection parameter vector (see #00311) Return: AH = return code (00h-02h,06h) (see #00303 at AH=00h/DX=FFFFh) CX = number of bytes which could not be returned because the given buffer was too small Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh --------S-1410------------------------------- INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF AH = 10h AL = bit mask bit 0: enable/disable ^C/^K checking bit 1: enable/disable the transmitter DX = port number Return: nothing SeeAlso: AH=0Fh"FOSSIL" --------S-1410------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER AH = 10h DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful FFh error SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard" --------S-1410------------------------------- INT 14 - MBBIOS PACCOM support - SET CRC WAIT AH = 10h AL = new setting in clock ticks (should be at least 5 character times) Return: nothing Desc: specify the time from start of last character to dropping RTS SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS" --------N-1410--DXFFFF----------------------- INT 14 - Connection Manager - QUERY SERVICE NAMES AH = 10h DX = FFFFh CL = subfunction 00h search first 01h search next ES:DI -> pattern buffer (see #00341) Return: AH = return code (00h,01h,03h,06h) (see also #00303 at AH=00h/DX=FFFFh) 01h no (more) matching names 03h invalid request ES:DI buffer filled with reply buffer (see #00341) containing matched name if AH=00h Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network Desc: obtain the names of groups and lines available for connection requests, and the names of active Connection Servers SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh Format of Connection Manager pattern/reply buffer: Offset Size Description (Table 00341) 00h WORD length of pattern (30h or 32h) 02h 16 BYTEs server pattern or name 12h 16 BYTEs group pattern or name 22h 16 BYTEs line pattern or name 23h BYTE (optional) ??? 24h BYTE (optional, returned) current line status 00h available 01h out of service 02h currently allocated to a connection Note: pattern may include '?' wildcard to match any character --------S-1411------------------------------- INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION AH = 11h DH = row DL = column Return: nothing Note: this is the same as INT 10/AH=02h SeeAlso: AH=12h"FOSSIL" --------S-1411------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER AH = 11h DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful FFh error SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard" --------S-1411------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT AH = 11h DX = port number Return: AL = status 00h successful 01h IRQ for port is shared 02h IRQ was reserved SeeAlso: AH=04h"SERIAL",AH=05h"SERIAL",AH=12h"PC-MOS" --------S-1412------------------------------- INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION AH = 12h Return: DH = row DL = column Note: this is the same as INT 10/AH=03h SeeAlso: AH=11h"FOSSIL" --------S-1412------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE AH = 12h DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AX = number of bytes free SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard" --------S-1412------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS AH = 12h DX = port number Return: AH = status FFh port number invalid AL = line parameters (see #00304) AH = flow control configuration (see #00336 at AH=05h"PC-MOS") CX:BX = bps rate DL = XOFF character or 00h for none DH = XON character or 00h for none --------S-1413------------------------------- INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN AH = 13h AL = character Return: nothing Note: should not be called if it is unsafe to call DOS SeeAlso: AH=15h --------S-1413------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL AH = 13h DX = port number Return: AH = status FFh port number invalid else ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data) SeeAlso: AH=17h"PC-MOS" --------S-1414------------------------------- INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING AH = 14h AL = 01h enable watchdog 00h disable watchdog DX = port number Return: nothing SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR" --------S-1414------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING AH = 14h CX = number of characters in string DX = port number ES:BX -> string to be sent SI = timeout in timer ticks or 0000h for default Return: AX = number of bytes actually sent ZF clear if successful ZF set on timeout SeeAlso: AH=01h,AH=15h"PC-MOS" --------S-1414------------------------------- INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED AH = 14h Return: AX = number of boards installed SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard" --------S-1415------------------------------- INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES AH = 15h AL = character Return: nothing SeeAlso: AH=13h"FOSSIL" --------S-1415------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING AH = 15h CX = size of buffer DX = port number ES:BX -> buffer for received characters SI = timeout in clock ticks or 0000h for default Return: AX = number of characters actually read ZF set on timeout (no data available) SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS" --------S-1415------------------------------- INT 14 - Digiboard - ENABLE/DISABLE MEMORY AH = 15h AL = new state (00h disabled, 01h enabled) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard" --------S-1416------------------------------- INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN AH = 16h AL = function 00h = delete 01h = add ES:DX -> routine to call Return: AX = status 0000h successful 0001h unsuccessful SeeAlso: AH=07h"FOSSIL" --------S-1416------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER AH = 16h ES:BX -> calling driver's INT 14 entry point Return: nothing Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible operating system by The Software Link, Inc. --------S-1416------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND AH = 16h AL = CCB command number (see #00342) (see also following entries) 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 80h error FFh error SeeAlso: AX=1646h,AH=18h"Digiboard" (Table 00342) Values for Digiboard 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 --------S-141646----------------------------- INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK AX = 1646h BL = bits to set BH = bits to clear CL = byte 1 DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=16h"Digiboard",AX=1647h --------S-141647----------------------------- INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY AX = 1647h BL = baud BH = datatype CL = byte 1 DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h --------S-141649----------------------------- INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES AX = 1649h BL = bits to set BH = bits to clear CL = byte 1 DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=16h"Digiboard",AX=1647h --------S-14164A----------------------------- INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT AX = 164Ah BL = break count CL = byte 1 DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh --------S-14164B----------------------------- INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE AX = 164Bh BL = bits to set BH = bits to clear CL = byte 1 DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch --------S-14164C----------------------------- INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS AX = 164Ch BL = XON character BH = XOFF character CL = byte 1 DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh --------S-14164D----------------------------- INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK AX = 164Dh BX = new mid-water mark CL = byte 1 DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh --------S-14164E----------------------------- INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST AX = 164Eh BL = ticks BH = ??? CL = mode DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=16h"Digiboard",AX=164Dh --------S-14164F----------------------------- INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL AX = 164Fh BL = size DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=16h"Digiboard",AX=164Dh --------S-141653----------------------------- INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT AX = 1653h BL = enable/disable BH = special character CL = byte 1 DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h error FFh error SeeAlso: AH=16h"Digiboard",AX=1646h --------S-1417------------------------------- INT 14 - FOSSIL - REBOOT SYSTEM AH = 17h AL = method 00h = cold boot 01h = warm boot SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h --------S-1417------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER AH = 17h AL = new value for UART's modem control register DX = port number Return: nothing --------S-1418------------------------------- INT 14 - FOSSIL - READ BLOCK AH = 18h CX = maximum number of characters to transfer DX = port number ES:DI -> user buffer Return: AX = number of characters transferred SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h --------S-1418------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND AH = 18h ES:BX -> 16-byte command string DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful 80h timeout AL = mailbox status 00h no errors 8Xh BIOS error ES:BX buffer filled in with mailbox string ZF clear if no errors ZF set if either status byte contains an error code SeeAlso: AH=16h"Digiboard" --------S-1418------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION AH = 18h DX = port number Return: DS:BX -> 40-byte buffer containing a string identifying the serial driver SeeAlso: AH=06h"PC-MOS" --------S-1419------------------------------- INT 14 - FOSSIL - WRITE BLOCK AH = 19h CX = maximum number of characters to transfer DX = port number ES:DI -> user buffer Return: AX = number of characters transferred SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h --------S-1419------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT AH = 19h BL = flag 00h disable special character interrupt FFh enable interrupt DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: AH = status 00h successful FFh failed SeeAlso: AH=1Ah"Digiboard" --------S-1419------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH AH = 19h AL = what to flush bit 0: input buffer bit 1: output buffer DX = port number Return: nothing SeeAlso: AH=09h"PC-MOS" --------S-141A------------------------------- INT 14 - FOSSIL - BREAK BEGIN OR END AH = 1Ah AL = 00h stop sending 'break' 01h start sending 'break' DX = port number Return: nothing SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh --------S-141A------------------------------- INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER AH = 1Ah BX = subfunction 00h return pointer to special character flag byte 01h return pointer to special character counter word DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) Return: ES:BX -> special character flag or counter Notes: flag is FFh if one or more special characters are in the receive buffer; it is 00h and the counter is invalid if no special characters are in the receive buffer counter (if valid) contains the number of characters in the receive buffer up to and including the last-received special character --------S-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 #00343) Return: AX = number of characters transferred CX = 3058h ("0X") (X00 FOSSIL only) DX = 2030h (" 0") (X00 FOSSIL only) Format of FOSSIL driver info: Offset Size Description (Table 00343) 00h WORD size of structure in bytes 02h BYTE FOSSIL spec driver conforms to 03h BYTE revision level of this specific driver 04h DWORD pointer to ASCIZ identification string 08h WORD size of the input buffer 0Ah WORD number of bytes left in buffer 0Ch WORD size of the output buffer 0Eh WORD number of bytes left in buffer 10h BYTE width of screen 11h BYTE length of screen 12h BYTE actual baud rate, computer to modem --------S-141C------------------------------- INT 14 - X00 FOSSIL - ACTIVATE PORT AH = 1Ch DX = port number Return: AX = 1954h if successful BL = maximum function number supported (not including 7Eh and above) BH = revision of FOSSIL specification supported Note: this is a duplicate of AH=04h, so that AH=04h may be made compatible with the PS/2 BIOS in a future release SeeAlso: AH=04h"FOSSIL",AH=1Dh --------S-141D------------------------------- INT 14 - X00 FOSSIL - DEACTIVATE PORT AH = 1Dh DX = port number Return: none Notes: this is a duplicate of AH=05h, so that AH=05h may be made compatible with the PS/2 BIOS in a future release ignored if the port was never activated with AH=04h or AH=1Ch SeeAlso: AH=05h"FOSSIL",AH=1Ch --------S-141E------------------------------- INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION AH = 1Eh AL = break status 00h if break 01h if no break BH = parity (see #00344) BL = number of stop bits 00h one stop bit 01h two stop bits (1.5 if 5 bit word length) CH = word length (see #00345) CL = bps rate (see #00346) DX = port number Return: AX = port status code (see #00304,#00305) Notes: this function is intended to exactly emulate the PS/2 BIOS AH=04h call if the port was locked at X00 load time, the appropriate parameters are ignored SeeAlso: AH=00h,AH=04h"SERIAL" (Table 00344) Values for X00 FOSSIL parity: 00h no parity 01h odd parity 02h even parity 03h stick parity odd 04h stick parity even SeeAlso: #00307,#00345,#00346 (Table 00345) Values for X00 FOSSIL word length: 00h 5 bits 01h 6 bits 02h 7 bits 03h 8 bits SeeAlso: #00308,#00344,#00346 (Table 00346) Values for X00 FOSSIL bps rate: 00h 110 01h 150 02h 300 03h 600 04h 1200 05h 2400 06h 4800 07h 9600 08h 19200 SeeAlso: #00309,#00344,#00345 --------S-141E------------------------------------ INT 14 - HUNTER 16 - READ COMMS PARAMETERS AH = 1Eh CX = channel number (00h COM1, 01h COM2, ...) DS:BX -> buffer for communications parameters (see #00347) Return: DS:BX buffer filled Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. SeeAlso: AH=20h"HUNTER" Format of HUNTER 16 communications parameters: Offset Size Description (Table 00347) 00h BYTE communications type (00h IBM, nonzero Husky) 01h BYTE port number (00h COM1, 01h COM2) 02h BYTE baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200, 05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400) 03h BYTE data bits (01h seven, 02h eight) 04h BYTE parity (00h none, 01h odd, 02h even) 05h BYTE stop bits (00h one, 01h two) 06h BYTE handshake (see #00348) 07h BYTE handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780) 08h BYTE Nulls after CR (0-20) 09h BYTE LF (00h off, 01h on) 0Ah BYTE Serig. 0..7Fh: Ignore this character 80h: Serig off 0Bh BYTE echo (00h off, 01h on) 0Ch BYTE transmit timeout in seconds (1-60) or 00h to disable 0Dh BYTE receive timeout in seconds (1-60) or 00h to disable 0Eh 5 BYTEs reserved Bitfields for HUNTER 16 handshake: Bit(s) Description (Table 00348) 0-1 0: RTS off, 1: RTS hold, 2: RTS true 2 DTR enabled 4 CTS enabled 5 DSR enabled 6 DCD enabled --------S-141F------------------------------- INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL AH = 1Fh DX = port number AL = direction 00h read modem control register Return: BL = modem control register (see #00349) AH = status 01h write modem control register BL = modem control register (see #00349) Return: AX = status 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) SeeAlso: AH=00h,AH=05h"SERIAL" Bitfields for X00 FOSSIL modem control register: Bit(s) Description (Table 00349) 0 data terminal ready 1 request to send 2 OUT1 3 OUT2 (interrupts) enabled 4 LOOP 5-7 reserved --------S-1420------------------------------- INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT AH = 20h DX = port number Return: AH = 00h if character was available AL = next character (removed from receive buffer) AX = FFFFh if no character available SeeAlso: AH=0Ch,AH=21h"X00" --------S-1420------------------------------- INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT AH = 20h AL = logical port (01h COM1, 02h COM2) DX = physical port number Return: AX = status 0000h successful FFFFh failed SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy" --------S-1420------------------------------- INT 14 - MultiDOS Plus - INITIALIZE PORT AH = 20h AL = port parameters (see #00300 at AH=00h"SERIAL") DX = port number (0-3) Return: AH = status 00h successful 41h no such port 64h monitor mode already active SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS" --------S-1420------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE AH = 20h DX = port number Return: AX = number of bytes in output buffer SeeAlso: AH=0Ah"Digiboard" --------S-1420------------------------------------ INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS AH = 20h CX = channel number (00h COM1, 01h COM2, ...) DS:BX -> buffer with communications parameter (see #00347) Return: AX = status 0000h successful 0001h invalid parameter SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER" --------S-1421------------------------------- INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER AH = 21h AL = character DX = port number Return: nothing Notes: the given character is inserted at the end of the receive buffer as if it had just arrived from the serial port; all normal receive processing (XON/XOFF, ^C/^K) is performed on the character fully re-entrant SeeAlso: AH=20h"X00" --------S-1421------------------------------- INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT AH = 21h DX = physical port number Return: AX = status 0000h successful FFFFh failed SeeAlso: AH=20h"Alloy",AH=22h"Alloy" --------S-1421------------------------------- INT 14 - MultiDOS Plus - TRANSMIT CHARACTER AH = 21h AL = character to send DX = port number Return: AH = status (see #00350) Note: monitor mode must have been turned on with AH=24h before calling SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS" (Table 00350) Values for MultiDOS Plus 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 --------S-1421------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT AH = 21h AL = char to send DX = port number SI = timeout in timer ticks (0000h = default) Return: after character is sent or timeout expires Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible operating system by The Software Link, Inc. SeeAlso: AH=01h,AH=0Eh"Digiboard",AH=22h"PC-MOS" --------S-1421------------------------------------ INT 14 - HUNTER 16 - EXTENDED CONTROL AH = 21h AL = command 01h force transmission of buffer 02h clear transmit buffer 03h clear receive buffer DX = port (00h COM1, 01h COM2) Return: AH = extended status Desc: executes the command on the selected port SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER" --------S-1422------------------------------- INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT AH = 22h AL = logical port (01h COM1, 02h COM2) Return: AX = status (0000h successful) SeeAlso: AH=20h"Alloy",AH=21h"Alloy" --------S-1422------------------------------- INT 14 - MultiDOS Plus - RECEIVE CHARACTER AH = 22h DX = port number Return: AH = status (see also AH=21h"MultiDOS") 00h successful AL = character 3Dh framing and parity error 3Eh overrun error 3Fh framing error 40h parity error 96h ring buffer overflow Note: if no character is available, this function waits until a character arrives or an implementation-dependent timeout elapses SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h --------S-1422------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT AH = 22h DX = port number SI = timeout in timer ticks (0000h = default) Return: AH = port status (see also #00304 at AH=03h) bit 7 = 1 indicates time-out AL = character received Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible operating system by The Software Link, Inc. SeeAlso: AH=02h,AH=0Fh"Digiboard",AH=21h"PC-MOS" --------S-1422------------------------------------ INT 14 - HUNTER 16 - EXTENDED STATUS AH = 22h DX = port (00h COM1, 01h COM2) Return: AH = extended status BX = number of characters in input buffer CX = number of characters in output buffer Desc: returns the most recent Extended Status code for the port SeeAlso: AH=21h"HUNTER" --------S-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 (see #00351) CX = MW386 port number DH = owner's user ID DL = owner's task ID SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy" Bitfields for MW386 port mode: Bit(s) Description (Table 00351) 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 --------S-1423------------------------------- INT 14 - MultiDOS Plus - GET PORT STATUS AH = 23h DX = port number Return: AH = line status (see #00304 at AH=03h) AL = modem status (see #00305 at AH=03h) SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS" --------S-1423------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP AH = 23h DX = port number BX = TCB segment/selector address of owner task Return: nothing SeeAlso: AH=0Dh"Digiboard",AH=21h"PC-MOS",AH=22h"PC-MOS" --------S-1423------------------------------------ INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES AH = 23h BH = handshake line to set (00h RTS, 01h DTR) BL = new level (00h low, 01h high) Return: nothing Desc: sets the handshake lines of COM1 to the desired level SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER" --------S-1424------------------------------- INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS AH = 24h CX = physical I/O port number DS:DX -> configuration table (see #00352) Return: AH = 00h Note: invalid port numbers are merely ignored SeeAlso: INT 17/AH=96h Format of Alloy MW386 configuration table: Offset Size Description (Table 00352) 00h BYTE baud rate (see #00353) 01h BYTE data bits (00h=5, 01h=6, 02h=7, 03h=8) 02h BYTE parity (00h none, 01h odd, 02h even) 03h BYTE stop bits (00h=1, 01h=2) 04h BYTE receive flow control 00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS 05h BYTE transmit flow control (as for receive) (Table 00353) Values for Alloy MW386 baud rate: 00h 38400 01h 19200 02h 9600 03h 7200 04h 4800 05h 3600 06h 2400 07h 2000 08h 1200 09h 600 0Ah 300 0Bh 150 0Ch 134.5 SeeAlso: #00309 --------S-1424------------------------------- INT 14 - MultiDOS Plus - SET MONITOR MODE AH = 24h AL = port status storage 00h single status for entire receive buffer 01h separate status kept for each byte in receive buffer DX = port number Return: AH = status 00h successful 3Ah invalid status storage specified 41h no such port 64h monitor mode already active Note: in monitor mode, MultiDOS redirects all BIOS video output to a serial port SeeAlso: AH=20h"MultiDOS",AH=25h --------S-1424------------------------------- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ??? AH = 24h Return: ??? Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible operating system by The Software Link, Inc. --------S-1424------------------------------------ INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING AH = 24h AL = new CTS handshake state for COM1 (00h disabled, 01h enabled) Return: nothing SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER" --------S-1425------------------------------- INT 14 - MultiDOS Plus - CLEAR BUFFERS AH = 25h AL = function 00h only clear buffers 01h clear buffers and deactivate DX = port number Return: AH = status 00h successful 3Ah invalid function 41h no such port 42h monitor mode not active SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS" --------S-1425------------------------------------ INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS AH = 25h AL = new state of RS232 drivers (00h off, 01h on) Return: nothing Note: this function can be used to save power by turning off the RS232 drivers. It can also be used to turn on the RS232 drivers before connecting to a remote system to avoid "garbage" while the drivers turn on. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER" --------S-1426------------------------------------ INT 14 - HUNTER 16 - CONTROL RI POWER UP AH = 26h AL = 00h enable RI power up else disable RI power up Return: nothing Desc: control whether the Ring Indicator handshake can power up the Hunter --------S-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 --------S-1427------------------------------------ INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT AH = 27h AL = number of extended protocols installed (since last call) Return: AL = total number installed, including new ones Desc: Returns the number of extended communication protocols installed SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER" --------S-1428------------------------------------ INT 14 - HUNTER 16 - GET PROTOCOL NAME AH = 28h AL = protocol handle DS:BX -> 8 character buffer for protocol name Return: AH = status 00h successful DS:BX buffer filled with the protocol name FFh failed SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER" --------S-1429------------------------------------ INT 14 - HUNTER 16 - GET PROTOCOL HANDLE AH = 29h DS:BX -> buffer containing the protocol name Return: AH = status 00h successful AL = handle FFh failed SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER" --------S-142A------------------------------------ INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU AH = 2Ah AL = protocol handle Return: AH = status 00h successful FFh failed AL = menu handle SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER" --------S-142B------------------------------------ INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS AH = 2Bh AL = protocol handle DS:BX -> buffer for extended protocol parameters Return: AH = status 00h successful DS:BX buffer filled with extended parameters FFh failed SeeAlso: AH=2Ah"HUNTER" --------S-142C00---------------------------------- INT 14 - HUNTER 16 - GET DTR AX = 2C00h Return: AH = 00h BL = current state 00h normal DTR operation else DTR is forced high Desc: Indicates whether the DTR signal on COM1 is forced high Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. SeeAlso: AH=2Ch"SET DTR" --------S-142C------------------------------------ INT 14 - HUNTER 16 - SET DTR AH = 2Ch AL nonzero BL = new state 00h normal operation else force DTR high Return: AH = 00h Desc: determine whether the DTR signal on COM1 should be forced high SeeAlso: AX=2C00h --------N-1436------------------------------- INT 14 - ComShare - INSTALLATION CHECK AH = 36h Return: AX = 4353h ('CS') if installed BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.) CX reserved for future use WORD DX:[0100h] = ComShare version number Program: The ComShare System is a modem-sharing program for NetBIOS and NetWare-based networks by NashaKala Corporation Note: ComShare supports the standard BIOS INT 14h calls with a slight change in the interpretation of speed values (see #00309 at AH=04h"SERIAL") SeeAlso: AH=00h"SERIAL",AH=04h"SERIAL",AX=F4FFh --------t-144000----------------------------- INT 14 - I1541 - INSTALLATION CHECK AX = 4000h Return: AX = 1541h if installed BH = I1541 major version (BCD) BL = I1541 minor version (BCD) CX = 0000h --------t-144001----------------------------- INT 14 - I1541 - TEST IF 1541 CABLE CONNECTED AX = 4001h Return: CF clear if connected BL = LPT number where 1541 cable is connected (1..3) CF set if cable not connected Desc: scan all the LPT ports searching for the adapter cable SeeAlso: AX=4000h --------t-144002----------------------------- INT 14 - I1541 - SELECT LPT PORT FOR OUTPUT AX = 4002h BL = LPT number (1..3) Return: CF clear if successful CF set otherwise Desc: force the input output routines to work on the cable placed on LPT BL SeeAlso: AX=4001h --------t-144003----------------------------- INT 14 - I1541 - RESET ALL DEVICES AX = 4003h Return: nothing Desc: send a reset pulse of 100ms to all CBM devices Note: it is necessary to wait about 2 seconds after reset before executing other instructions SeeAlso: AX=4000h,AX=4004h --------t-144004----------------------------- INT 14 - I1541 - SEND LISTEN SIGNAL AX = 4004h BH = device number (0..15) Return: CF clear if successful CF set on error AL = error number (see #00354) SeeAlso: AX=4005h,AX=4006h (Table 00354) Values for I1541 error number: 00h device not present 01h listener not ready 02h missing EOI time-out 03h EOI not completed 04h data not released 05h frame error --------t-144005----------------------------- INT 14 - I1541 - SEND SECONDARY ADDRESS FOR LISTEN AX = 4005h BL = channel number and mode (see #00355) Return: CF clear if successful CF set on error AL = error number (see #00354) SeeAlso: AX=4004h,AX=4006h Bitfields for I1541 channel number and mode: Bit(s) Description (Table 00355) 7-4 mode 0110 read/write 1110 close channel 1111 open channel 3-0 channel number --------t-144006----------------------------- INT 14 - I1541 - SEND UNLISTEN SIGNAL AX = 4006h Return: CF clear if successful CF set on error AL = error number (see #00354) SeeAlso: AX=4004h,AX=4005h --------t-144007----------------------------- INT 14 - I1541 - SEND TALK SIGNAL AX = 4007h BH = device number (0-15) Return: CF clear if successful CF set on error AL = error number (see #00354) SeeAlso: AX=4008h,AX=4009h --------t-144008----------------------------- INT 14 - I1541 - SEND SECONDARY ADDRESS FOR TALK AX = 4008h BL = channel number and mode (see #00355) Return: CF clear if successful CF set on error AL = error number (see also #00354) 40h turn around time-out SeeAlso: AX=4007h,AX=4009h --------t-144009----------------------------- INT 14 - I1541 - SEND UNTALK SIGNAL AX = 4009h Return: CF clear if successful CF set on error AL = error number (see #00354) SeeAlso: AX=4007h,AX=4008h --------t-14400A----------------------------- INT 14 - I1541 - SEND A BYTE TO A DEVICE AX = 400Ah BL = byte to send CL = last-byte flag 00h more bytes follow 01h this is the last byte to be sent Return: CF clear if successful CF set on error AL = error number (see #00354) SeeAlso: AX=4000h,AX=400Bh --------t-14400B----------------------------- INT 14 - I1541 - RECEIVE A BYTE FROM A DEVICE AX = 400Bh Return: CF clear if successful AL = byte received CL = last-byte flag 00h more bytes to follow 01h received byte is the last CF set on error AL = error number 80h EOI response required 81h talker not ready 82h clock not set 83h clock not released CL = 00h SeeAlso: AX=4000h,AX=400Ah --------t-14400C----------------------------- INT 14 - I1541 - WAIT AX = 400Ch CX = number of 838ns microticks to wait (0000h means 65536, ~55ms) Return: after wait period elapses SeeAlso: AX=4000h,AX=400Dh --------t-14400D----------------------------- INT 14 - I1541 - LONGWAIT AX = 400Dh DX:CX = number of 838ns microticks to wait (0000h:0000h means 4294967296, about one hour) Example: To wait 1s you must set DX:CX=(1s/838ns)=1193180 SeeAlso: AX=4000h,AX=400Ch --------t-14400E----------------------------- INT 14 - I1541 - GET INFO AX = 400Eh Return: AX = LPT port I/O address in use (0000h if no cable in use) BL = LPT number (1..3) in use (00h if no cable in use) CF set if the cable is auto-detectable CF clear if cable could not be auto-detected or is not present SeeAlso: AX=4000h --------S-1456------------------------------- INT 14 U - BWCOM14 - INSTALLATION CHECK AH = 56h Return: CX = 0001h if installed Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem connected to the serial port) distributed as part of the Beame&Whiteside BW-NFS package SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h --------S-1457------------------------------- INT 14 U - BWCOM14 - INITIALIZE AH = 57h DL = port number Return: AL = initialization status (00h successful, 01h already initialized) CX = port status (0001h port redirected, 0002h and FFFFh failed) Note: after this call, all invocations of INT 14/AH=00h-03h for the specified port will be handled by BWCOM14 until AH=58h is called SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h --------S-1458------------------------------- INT 14 U - BWCOM14 - SHUTDOWN AH = 58h Return: CX = status (0001h successful, 0002h not initialized) Note: after this call, BWCOM14 will no longer redirect the COM port SeeAlso: AH=56h,AH=57h --------N-146F--BXFFFE----------------------- INT 14 U - Connection Manager - ??? AH = 6Fh BX = FFFEh ??? Return: ??? Program: Connection Manager by Softwarehouse Corp. permits the sharing of serial ports over an IPX or NetBIOS-based network --------N-146F--BXFFFF----------------------- INT 14 - Connection Manager - INSTALLATION CHECK AH = 6Fh BX = FFFFh Return: DX:BX -> Connection Manager Communication Table if installed BX = FFFFh if not installed SeeAlso: AH=0Dh/DX=FFFFh --------S-146F00----------------------------- INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK AX = 6F00h BX <> 4850h (usually set to 0000h for simplicity) Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available AX destroyed Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h --------S-146F01----------------------------- INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT AX = 6F01h BX = port attributes (see #00356) DX = port number (0-3) Return: AH = line status (see #00304) AL = modem status (see #00305) Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras SeeAlso: AX=6F00h Bitfields for HP Vectra Extended BIOS serial port attributes: Bit(s) Description (Table 00356) 8-5 data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200) 4-3 parity 00 none 01 odd 10 none 11 even 2 stop bits (0 = one, 1 = two) 1-0 bits per character 10 seven-bit characters 11 eight-bit characters 0x undefined --------S-146F02----------------------------- INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER AX = 6F02h CX = number of characters in buffer DX = port number (0-3) ES:DI -> buffer containing characters Return: AH = line status (see #00304) AL = modem status (see #00305) CX = number of bytes actually sent ES:DI -> next byte to be transferred (unchanged if all bytes sent) Desc: send characters from the specified buffer until all characters have been sent or an error/timeout is encountered Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h --------S-146F03----------------------------- INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER AX = 6F03h CX = size of buffer DX = port number (0-3) ES:DI -> buffer for received characters Return: AH = line status (see #00304) ---on error (AH bit 7 set)--- AL = 00h ES:DI -> next byte to be transferred ---if successful--- AL = last byte read ES:DI unchanged CX = number of bytes read Desc: read characters into the specified buffer until the buffer is filled or a timeout occurs Notes: supported by original HP Vectra AT and by ES/QS/RS series Vectras polls the Data Set Ready modem status and Data Ready line status bits to determine when characters are available SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h --------S-146F04----------------------------- INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR AX = 6F04h BL = lowest termination character BH = highest termination character CX = size of buffer DX = port number (0-3) ES:DI -> buffer for received characters Return: AH = line status (see #00304) ---on error (AH bit 7 set)--- AL = 00h ES:DI -> next byte to be transferred ---if successful--- AL = last byte read ES:DI unchanged CX = number of bytes read Desc: read characters into the specified buffer until the buffer is filled, a character in the specified range is received, or a timeout occurs Notes: supported by original HP Vectra AT and by ES/QS/RS series Vectras polls the Data Set Ready modem status and Data Ready line status bits to determine when characters are available SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h --------U-147000----------------------------- INT 14 - NEWCOM - INSTALLATION CHECK AX = 7000h Return: AX = 4E43h ('NC') if installed BX = 4F4Dh ('OM') if installed CH = major version number CL = minor version number DH = patch level DL = language (currently: 00h English, 01h French) Program: Newcom is a DOS commandline-enhancer by kilobug@kali.isicom.fr SeeAlso: INT 2F/AX=D44Dh --------S-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 = status 00h failed 01h successful SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL" --------S-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 = status 00h failed 01h successful SeeAlso: AH=7Eh --------S-1480------------------------------- INT 14 - COMMUNICATIONS FOSSIL AH = 80h SeeAlso: AH=7Eh --------S-1480------------------------------- INT 14 - COURIERS.COM - INSTALLATION CHECK AH = 80h Return: AH = E8h if loaded Program: COURIERS is a TSR utility by PC Magazine --------S-148000----------------------------- INT 14 - ARTICOM - INSTALLATION CHECK AX = 8000h Return: AL = FFh if installed BH = major version BL = minor version Program: ArtiCom is an asynchronous communications driver by Artisoft which works on top of NetBIOS and allows modem/serial-port sharing by programs using INT 14 for serial I/O. Note: ArtiCom supports 32 simultaneous COM ports using multiport cards and drivers SeeAlso: AH=00h"SERIAL",AH=01h,AH=02h,AH=03h,AH=04h"SERIAL",AH=05h"SERIAL" SeeAlso: AX=8001h,AX=8002h --------S-148000----------------------------- INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS AX = 8000h DX = port number Return: AX = code for last error (see #00357) BX = number of characters in output buffer CX = nubmer of characters in input buffer DX = state flag (see #00358) Program: COMM-DRV is a universal serial communications driver by Willies' Computer Software Company, which supports standard INT 14 and FOSSIL calls as well as its own interfaces SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV" (Table 00357) Values for COMM-DRV error code: 00h no error 01h buffer not set or attempted to change buffer for active port 02h port not active 03h transmit buffer full 04h receive buffer full 05h syntax error 06h invalid buffer size 07h invalid port 08h handler changed 09h invalid baud rate 0Ah invalid parity setting 0Bh invalid data length 0Ch invalid number of stop bits 0Dh invalid protocol number 0Eh IRQ changed 0Fh port changged 10h invalid threshold setting 11h invalid IRQ number 12h interrupts not enabled 13h invalid break syntax 14h fatal error 15h CTS error 16h invalid RS232 I/O port address 17h environment variable not set 18h error on IOCTL call 19h error during atexit cleanup 1Ah error mapping for direct calls 1Bh error opening device 1Ch unable to allocate memory 1Dh error on external micro card 1Eh card changed error 1Fh card type error 20h not supported 21h parent port error 22h card command buffer full 23h no subdevice for this port 24h unknown error 25h external card busy 26h no more timers available 27h INT 14 vector changed 28h INT 08 vector changed 29h DPMI error 2Ah TSR buffer too small (or nonexistent) 2Bh out of asynchronous resources 2Ch out of timer resources 2Dh out of "other" timer resources 2Eh file I/O error 2Fh hardware memory > 64K Bitfields for state flag : Bit(s) Description (Table 00358) 0 port is active 1 output throttled (XOFF received, or DSR or CTS reset) 2 input throttled (XOFF sent, or DTR or RTS reset) --------S-148001----------------------------- INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY AX = 8001h Return: AX = error code, if error (see #00360) SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM" Index: uninstall;ARTICOM --------S-148001----------------------------- INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS AX = 8001h DX = port number Return: BX:DI -> Port Control Block (see #00367) SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV" --------S-148002----------------------------- INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS AX = 8002h ES:DI -> buffer for redirector status structure (see #00359) Return: AX = error code, if error (see #00360) SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM" Format of ARTICOM redirector status: Offset Size Description (Table 00359) 00h WORD redirector major and minor version numbers 02h WORD redirectable ports found 04h WORD redirectable ports + local ports found 06h WORD redirector internal buffer size 08h WORD maximum servers maintained 0Ah WORD number of adapters found --------S-148002----------------------------- INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS AX = 8002h DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful BX:DI -> Port Control Block (see #00367) (modifyable portion only) SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV" --------S-148003----------------------------- INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING AX = 8003h CX = error number to translate (see #00360) Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate SeeAlso: AX=8000h (Table 00360) Values for ARTICOM error codes: 00h "No error" 01h "An invalid port number was specified" 02h "Port is already redirected" 03h "Too many ports redirected" 04h "Cannot locate the server" 05h "Server is busy" 06h "Access denied" 07h "Resource in use" 08h "Resource in use - request queued" 09h "No such resource" 0Ah "Invalid username/password pair" 0Bh "Noncompatible version number" 0Ch "Can't remove from memory" 0Dh "Bad NETBIOS adapter number" 0Eh "No more entries in list" 0Fh "Resource is not available at this time" 10h "Invalid value to INT 14 call" --------S-148003----------------------------- INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES AX = 8003h DX = port number Return: AX = number of characters in input buffer BX = input buffer size CX = number of characters in output buffer DX = output buffer size SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV" --------S-148004----------------------------- INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE AX = 8004h DX = port to redirect (COM1=0, COM2=1, ...) CH = attach type CL = adapter to use for attach, 0FFh to search all ES:DI -> attachment structure (see #00361) Return: AX = error code, if error (see #00360) Note: The wildcard '*' is supported in the server and resource fields. If wild cards are used then the first matching available server is attached. SeeAlso: AX=8000h,AX=8003h,AX=8005h Format of ARTICOM attachment structure: Offset Size Description (Table 00361) 00h 16 BYTEs server to look for attach 10h 16 BYTEs attach to resource name 20h 16 BYTEs username for attach 30h 16 BYTEs password for username or resource 40h BYTE attach type 00h normal 01h queue if resource is in use (not yet supported in v1.00) --------S-148005----------------------------- INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE AX = 8005h DX = port to detach (COM1=0, COM2=1, ...) Return: AX = error code, if error (see #00360) Note: only a previously attached resource can be detached SeeAlso: AX=8000h,AX=8003h,AX=8004h --------S-148006----------------------------- INT 14 - ARTICOM - GET RESOURCE INFORMATION AX = 8006h BX = remote port (COM1=0, COM2=1, ...) CL = adapter number, FFh to try all adapters ES:DI -> resource information structure (see #00362) DS:SI -> 16 byte server name. See note. Return: AX = error code, if error (see #00360) BX = next remote port, recall to get next resource info Note: Wild cards supported in both the resource field and server name string DS:SI. If wild cards used then first matching available resource information is searched. Set the resource field to FFh to return all resources. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h Format of ARTICOM resource information structure: Offset Size Description (Table 00362) 00h BYTE 00h = free, else used 01h 16 BYTEs resource name 11h 16 BYTEs username of resource user 21h WORD amount of time used 23h WORD amount of time remaining 53h 48 BYTEs description of resource 93h 64 BYTEs initialization string for modem B3h 32 BYTEs dial string for modem D3h 32 BYTEs hang-up string for modem --------S-148007----------------------------- INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION AX = 8007h DX = port index (COM1=0, COM2=1, ...) ES:DI -> buffer for port information structure (see #00363) Return: CF clear if redirection info returned and port is redirected CF set if not a redirected port AX = error code, if error (see #00360) SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h Format of ARTICOM port information structure: Offset Size Description (Table 00363) 00h 16 BYTEs server name resource is on 10h BYTE adapter number server is on 11h 16 BYTEs resource name 21h WORD remote port index, use to get additional information 23h WORD buffer size 25h WORD baud rate (see #00364) 26h BYTE modem status register 27h BYTE modem control register 28h BYTE line status register 29h BYTE line control register 2Ah BYTE flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS 2Bh WORD send timeout in ticks 2Dh WORD receive timeout in ticks 2Fh WORD time used on remote port 31h WORD time left before timeout 33h BYTE if server changes allowed? 34h WORD FFFFh (-1) if connection ok, else old port index (Table 00364) Values for ARTICOM baud rate: 00h 110 01h 150 02h 300 03h 600 04h 1200 05h 2400 06h 4800 07h 9600 08h 19200 09h 38400 0Ah 57600 0Bh 115200 0Ch 134.5 0Dh 1800 0Eh 2000 0Fh 3600 10h 7200 SeeAlso: #00309 --------S-148008----------------------------- INT 14 - ARTICOM - GET AVAILABLE SERVER NAME AX = 8008h BX = server index (0,1,...) ES:DI -> server name structure (see #00365) Return: AX = error code, if error (see #00360) BX = next remote port, repeat call to get next available server Note: the wildcard '*' is supported in the server name field. Set the server name to FFh to search for all servers. SeeAlso: AX=8000h,AX=8003h,AX=8007h Format of ARTICOM server name structure: Offset Size Description (Table 00365) 00h 16 BYTEs (call) ASCIZ server name 10h BYTE (ret) the adapter server is found --------S-148009----------------------------- INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS AX = 8009h BX = send timeout in ticks CX = receive timeout in ticks DX = port index (COM1=0, COM2=1, ...) Return: nothing SeeAlso: AX=8000h,AX=800Ah --------S-14800A----------------------------- INT 14 - ARTICOM - MODIFY FLOW CONTROL AX = 800Ah BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS) DX = port index (COM1=0, COM2=1, ...) Return: AX = error code, if error (see #00360) Note: for attached ports only! SeeAlso: AX=8000h,AX=8003h,AX=8009h --------S-148025----------------------------- INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR AX = 8025h DS:DX -> address of trap function (see #00366) to call on read/write Return: nothing Note: setting the vector to a user function allows the redirector's activity to be monitored. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h (Table 00366) Values ARTICOM trap function is called with: AH = operation 80h reading character 81h writing character AL = character Return: AX must be preserved far JUMP to old trap function (see AX=8035h) --------S-148035----------------------------- INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR AX = 8035h Return: ES:BX -> address of current send/receive routine Note: this function returns the address of the routine which is called inside A-REDIR.EXE each time a character is received or sent on the active COM port. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h --------S-1481------------------------------- INT 14 - COURIERS.COM - CHECK IF PORT BUSY AH = 81h AL = port number (1-4) Return: AH = status 00h port available 01h port exists but already in use 02h port nonexistent Program: COURIERS is a TSR utility by PC Magazine SeeAlso: AH=83h,AH=8Dh --------S-1481------------------------------- INT 14 - COMM-DRV - EXTENDED INITIALIZATION AH = 81h BX:DI -> port control block (see #00367) DX = port number Return: AH = line status register (see #00304) error if bit 7 set AL = modem status register (see #00305) Program: COMM-DRV is a universal serial communications driver by Willies' Computer Software Company, which supports standard INT 14 and FOSSIL calls as well as its own interfaces Note: AX=8001h should be called first to fill in the port control block SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV" Format of COMM-DRV port control block: Offset Type Description (Table 00367) 00h WORD port IO address 02h WORD port IRQ 04h WORD baud rate 06h WORD parity 08h WORD data bits 0Ah WORD stop bits 0Ch WORD break status (0000h off) 0Eh WORD flow control protocol 10h BYTE input block 11h BYTE output block 12h WORD low threshold 14h WORD high threshold 16h WORD segment of buffer 18h WORD offset of buffer 1Ah WORD input buffer length 1Ch WORD output buffer length 1Eh BYTE auxiliary address 1Fh BYTE spare 20h 4 WORDs spares --------V-148100----------------------------- INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION AX = 8100h ES:DI -> buffer for VFOSSIL information (see #00368) Return: AX = 1954h if installed SeeAlso: AH=7Eh,AX=8101h Format of VFOSSIL information: Offset Size Description (Table 00368) 00h WORD size of information in bytes, including this field 02h WORD VFOSSIL major version 04h WORD VFOSSIL revision level 06h WORD highest VFOSSIL application function supported --------V-148101----------------------------- INT 14 - VIDEO FOSSIL - OPEN VFOSSIL AX = 8101h ES:DI -> buffer for application function table (see #00369) 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 VFOSSIL application function table: Offset Size Description (Table 00369) 00h DWORD -> function to query current video mode (VioGetMode)(see #00374) 04h DWORD -> function to set video mode (VioSetMode) (see #00375) 08h DWORD -> function to query hardware config (VioGetConfig) (see #00376) 0Ch DWORD -> function to write data in TTY mode (VioWrtTTY) (see #00377) 10h DWORD -> function to get current ANSI state (VioGetANSI) (see #00378) 14h DWORD -> function to set new ANSI state (VioSetANSI) (see #00379) 18h DWORD -> function to get curr cursor position (VioGetCurPos) (see #00380) 1Ch DWORD -> function to set cursor position (VioSetCurPos) (see #00381) 20h DWORD -> function to get cursor shape (VioGetCurType) (see #00382) 24h DWORD -> function to set cursor shape (VioSetCurType) (see #00383) 28h DWORD -> function to scroll screen up (VioScrollUp) (see #00384) 2Ch DWORD -> function to scroll screen down (VioScrollDn) (see #00385) 30h DWORD -> function to read cell string from screen (VioReadCellStr) (see #00386) 34h DWORD -> function to read char string from screen (VioReadCharStr) (see #00387) 38h DWORD -> function to write a cell string (VioWrtCellStr) (see #00388) 3Ch DWORD -> function to write char string, leaving attr (VioWrtCharStr) (see #00389) 40h DWORD -> function to write char string,const attr (VioWrtCharStrAttr) (see #00390) 44h DWORD -> function to replicate an attribute (VioWrtNAttr) (see #00391) 48h DWORD -> function to replicate a cell (VioWrtNCell) (see #00392) 4Ch DWORD -> function to replicate a character (VioWrtNChar) (see #00393) Format of VFOSSIL video mode data structure: Offset Size Description (Table 00370) 00h WORD length of structure including this field 02h BYTE mode characteristics bit 0: clear if MDA, set otherwise bit 1: graphics mode bit 2: color disabled (black-and-white) 03h BYTE number of colors supported (1=2 colors, 4=16 colors, etc) 04h WORD number of text columns 06h WORD number of text rows 08h WORD reserved 0Ah WORD reserved 0Ch DWORD reserved SeeAlso: #00374,#00375 Format of VFOSSIL video configuration data: Offset Size Description (Table 00371) 00h WORD structure length including this field 02h WORD adapter type 00h monochrome/printer 01h CGA 02h EGA 03h VGA 07h 8514/A 04h WORD display type 00h monochrome 01h color 02h enhanced color 09h 8514 06h DWORD adapter memory size SeeAlso: #00376 Format of VFOSSIL cursor type record: Offset Size Description (Table 00372) 00h WORD cursor start line 02h WORD cursor end line 04h WORD cursor width (always 01h) 06h WORD cursor attribute (FFFFh = hidden) (Table 00373) Values for VFOSSIL error code: 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 (Table 00374) Call VioGetMode with: STACK: WORD VIO handle (must be 00h) DWORD pointer to video mode data structure (see #00370) Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #00373) SeeAlso: #00375 (Table 00375) Call VioSetMode with: STACK: WORD VIO handle (must be 00h) DWORD pointer to video mode data structure (see #00370) Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #00373) SeeAlso: #00374 (Table 00376) Call VioGetConfig with: STACK: WORD VIO handle (must be 00h) DWORD pointer to video configuration data buffer (see #00371) Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #00373) (Table 00377) Call VioWrtTTY with: STACK: WORD VIO handle (must be 00h) WORD length of string DWORD pointer to character string to be written to screen Return: AX = error code (00h, 74h, 1B4h) (see #00373) Notes: write wraps at end of line and terminates if it reaches end of screen in ANSI mode, ANSI control sequences are interpreted, and this func is not required to be reentrant; in non-ANSI mode, the function is reentrant and may be called from within an MS-DOS function call (Table 00378) Call VioGetANSI with: STACK: WORD VIO handle (must be 00h) DWORD pointer to WORD which will be set to 00h if ANSI is off or 01h if ANSI is on Return: AX = error code (00h, 74h, 1B4h) (see #00373) SeeAlso: #00379 (Table 00379) Call VioSetANSI with: STACK: WORD VIO handle (must be 00h) DWORD pointer to WORD indicating new state of ANSI 00h off, 01h on Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #00373) SeeAlso: #00378 (Table 00380) Call VioGetCurPos with: STACK: WORD VIO handle (must be 00h) DWORD pointer to WORD to hold current cursor column (0-based) DWORD pointer to WORD to hold current cursor row (0-based) Return: AX = error code (00h, 74h, 1B4h) (see #00373) SeeAlso: #00381 (Table 00381) Call VioSetCurPos with: STACK: WORD VIO handle (must be 00h) WORD cursor column WORD cursor row Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) Note: if either coordinate is invalid, the cursor is not moved SeeAlso: #00380 (Table 00382) Call VioGetCurType with: STACK: WORD VIO handle (must be 00h) DWORD pointer to cursor type record (see #00372) Return: AX = error code (00h, 74h, 1B4h) (see #00373) SeeAlso: #00383 (Table 00383) Call VioSetCurType with: STACK: WORD VIO handle (must be 00h) DWORD pointer to cursor type record (see #00372) Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #00373) SeeAlso: #00384 (Table 00384) Call VioScrollUp with: STACK: WORD VIO handle (must be 00h) DWORD pointer to char/attr cell for filling emptied rows WORD number or rows to scroll (FFFFh = clear area) WORD right column of scroll area WORD bottom row of scroll area WORD left column of scroll area WORD top row of scroll area Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) SeeAlso: #00385,INT 10/AH=06h (Table 00385) Call VioScrollDn with: STACK: WORD VIO handle (must be 00h) DWORD pointer to char/attr cell for filling emptied rows WORD number or rows to scroll (FFFFh = clear area) WORD right column of scroll area WORD bottom row of scroll area WORD left column of scroll area WORD top row of scroll area Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) SeeAlso: #00384,INT 10/AH=07h (Table 00386) Call VioReadCellStr with: STACK: WORD VIO handle (must be 00h) WORD column at which to start reading WORD row at which to start reading DWORD pointer to WORD containing length of buffer in bytes on return, WORD contains number of bytes actually read DWORD pointer to buffer for cell string Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #00373) (Table 00387) Call VioReadCharStr with: STACK: WORD VIO handle (must be 00h) WORD column at which to start reading WORD row at which to start reading DWORD pointer to WORD containing length of buffer in bytes on return, WORD contains number of bytes actually read DWORD pointer to buffer for character string Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #00373) (Table 00388) Call VioWrtCellStr with: STACK: WORD VIO handle (must be 00h) WORD column at which to start writing WORD row at which to start writing WORD length of cell string in bytes DWORD pointer to cell string to write Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) Note: write wraps at end of line and terminates if it reaches end of screen (Table 00389) Call VioWrtCharStr with: STACK: WORD VIO handle (must be 00h) WORD column at which to start writing WORD row at which to start writing WORD length of character string DWORD pointer to character string to write Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) Note: write wraps at end of line and terminates if it reaches end of screen (Table 00390) Call VioWrtCharStrAttr with: STACK: WORD VIO handle (must be 00h) DWORD pointer to attribute to be applied to each character WORD column at which to start writing WORD row at which to start writing WORD length of character string DWORD pointer to character string to write Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) Note: write wraps at end of line and terminates if it reaches end of screen (Table 00391) Call VioWrtNAttr with: STACK: WORD VIO handle (must be 00h) WORD column at which to start writing WORD row at which to start writing WORD number of times to write attribute DWORD pointer to display attribute to replicate Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) Note: write wraps at end of line and terminates if it reaches end of screen (Table 00392) Call VioWrtNCell with: STACK: WORD VIO handle (must be 00h) WORD column at which to start writing WORD row at which to start writing WORD number of times to write cell DWORD pointer to cell to replicate Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) Note: write wraps at end of line and terminates if it reaches end of screen (Table 00393) Call VioWrtNChar with: STACK: WORD VIO handle (must be 00h) WORD column at which to start writing WORD row at which to start writing WORD number of times to write character DWORD pointer to character to replicate Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) Note: write wraps at end of line and terminates if it reaches end of screen --------V-148102----------------------------- INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL AX = 8102h Return: AX = 1954h Note: terminates all operations; after this call, the video FOSSIL may either be removed from memory or reinitialized SeeAlso: AX=8101h,AX=8103h --------V-148103----------------------------- INT 14 - VIDEO FOSSIL - UNINSTALL AX = 8103h Return: AX = 1954h Note: this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM --------K-1482------------------------------- INT 14 - KEYBOARD FOSSIL AH = 82h SeeAlso: AH=7Eh --------S-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) Return: nothing SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC" --------S-1482------------------------------- INT 14 - COMM-DRV v14.0 - PORT CLEANUP AH = 82h DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful Desc: reset the port to its state before the AH=81h initialization and unhook any interrupts used by the port SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV" ----------1483------------------------------- INT 14 - SYSTEM FOSSIL AH = 83h SeeAlso: AH=7Eh --------S-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) Return: nothing SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI" --------S-1483------------------------------- INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS AH = 83h DX = port number AL = subfunction 00h flush input buffer 01h flush output buffer 02h flush both buffers Return: AH bit 7 set on error AH bit 7 clear if successful SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV" --------S-1484------------------------------- INT 14 - COURIERS.COM - READ CHARACTER AH = 84h Return: ZF set if no characters available ZF clear AL = character AH = modem status bits bit 7: set on input buffer overflow SeeAlso: AH=02h,AH=86h,AH=89h --------S-1484------------------------------- INT 14 - COMM-DRV v14.0 - SEND PACKET AH = 84h CX = packet length in bytes DX = port number ES:DI -> packet to be sent Return: AH = line status (see #00304) bit 7 set on error AL destroyed SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV" --------S-1485------------------------------- INT 14 - COURIERS.COM - FLUSH PENDING INPUT AH = 85h Return: nothing SeeAlso: AH=0Ah,AH=88h"COURIERS" --------S-1485------------------------------- INT 14 - COMM-DRV v14.0 - RECEIVE PACKET AH = 85h CX = length of packet in bytes DX = port number ES:DI -> buffer for packet Return: AH = line status (see #00304) bit 7 set on error AL destroyed Note: this call requires that at least the requested number of bytes are already present in the input buffer, and will fail if there are fewer bytes available SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV" --------S-1486------------------------------- INT 14 - COURIERS.COM - START OUTPUT AH = 86h ES:BX -> output buffer CX = length of output buffer Return: nothing SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI" --------S-1486------------------------------- INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS AH = 86h BL = maximum clock ticks to wait before signalling error on input func BH = maximum clock ticks to wait before signalling error on output DX = port number SI = input timeout in clock ticks if BL=FFh and BH=FFh DI = output timeout in clock ticks if BL=FFh and BH=FFh Return: AH bit 7 set on error AH bit 7 clear if successful Note: functions 02h, 85h, and 8Eh will wait for the input timeout before returning an error when no data is available; functions 01h and 84h will wait for the output timeout before returning an error if there is no space to output the data SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV" --------S-1487------------------------------- INT 14 - COURIERS.COM - OUTPUT STATUS AH = 87h Return: AX = number of unsent characters SeeAlso: AH=88h"COURIERS" --------S-1487------------------------------- INT 14 - COMM-DRV v14.0 - TURN ON DTR AH = 87h DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV" --------S-1488------------------------------- INT 14 - COURIERS.COM - ABORT OUTPUT AH = 88h SeeAlso: AH=09h"FOSSIL",AH=85h"COURIERS" --------S-1488------------------------------- INT 14 - COMM-DRV v14.0 - TURN OFF DTR AH = 88h DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful Program: COMM-DRV is a universal serial communications driver by Willies' Computer Software Company, which supports standard INT 14 and FOSSIL calls as well as its own interfaces SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV" --------S-1489------------------------------- INT 14 - COURIERS.COM - SEND SINGLE CHARACTER AH = 89h CL = character to send Return: nothing SeeAlso: AH=01h,AH=84h"COURIERS" --------S-1489------------------------------- INT 14 - COMM-DRV v14.0 - TURN ON RTS AH = 89h DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV" --------S-148A------------------------------- INT 14 - COURIERS.COM - SEND BREAK AH = 8Ah Return: nothing SeeAlso: AH=89h"COURIERS",AH=FAh --------S-148A------------------------------- INT 14 - COMM-DRV v14.0 - TURN OFF RTS AH = 8Ah DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV" --------S-148B------------------------------- INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE AH = 8Bh CX = bitmask of interrupt to process 00h = deinstall BX:DI -> DWORD containing address of function to be called Return: AH bit 7 clear if successful AH bit 7 set on error --------S-148C------------------------------- INT 14 - COURIERS.COM - SET SPEED AH = 8Ch BX = speed in bps Return: nothing SeeAlso: AH=00h,AH=82h"COURIERS" --------S-148C------------------------------- INT 14 - COMM-DRV v14.0 - READ UART REGISTER AH = 8Ch AL = register offset DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful AL = contents of UART register SeeAlso: AH=8Dh"COMM-DRV" --------S-148D------------------------------- INT 14 - COURIERS.COM - DECONFIGURE PORT AH = 8Dh Return: nothing SeeAlso: AH=82h"COURIERS" --------S-148D------------------------------- INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER AH = 8Dh AL = register offset BL = new value for UART register DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful SeeAlso: AH=8Ch"COMM-DRV" --------S-148E------------------------------- INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY AH = 8Eh CX = length of packet in bytes DX = port number ES:DI -> buffer for packet Return: AH = line status (see #00304) bit 7 set on error (see AX=8000h"COMM-DRV") AL destroyed Program: COMM-DRV is a universal serial communications driver by Willies' Computer Software Company, which supports standard INT 14 and FOSSIL calls as well as its own interfaces Desc: retrieve a packet from the input buffer without removing it from the buffer Note: this call requires that at least the requested number of bytes are already present in the input buffer, and will fail if there are fewer bytes available SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV" --------S-14A0------------------------------- INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT AH = A0h ES:BX -> ASCIZ internet host name CX = length of name Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #00394) CL = session ID Program: the Bridge Application Program Interface is a set of functions which makes many of the details of LAN communications transparent Note: Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h (Table 00394) Values for 3com BAPI return code: 00h successful 01h no characters written 02h no characters read 03h no such session 04h clearinghouse name not found 05h no response from host 06h no more sessions available 07h session aborted 08h invalid clearinghouse name 09h not supported 0Ah internal (general) network error 0Bh out of memory 0Ch invalid IP address --------S-14A0--CXFFFF----------------------- INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT AH = A0h CX = FFFFh Return: CF clear if successful AX = 5445h ('TE') CX <> FFFFh DX = port number CF set on error Program: TES is a network serial port emulation program SeeAlso: AH=A1h"TES" --------S-14A1------------------------------- INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT AH = A1h DH = session ID (00h for external session managment) Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394) AL destroyed (Novell TELAPI.EXE) SeeAlso: AH=A0h"BAPI" --------S-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 #00395) SeeAlso: AH=A2h"TES",AH=A3h"TES" Format of Interconnections TES status array entry: Offset Size Description (Table 00395) 00h BYTE status 01h WORD offset of name --------S-14A2------------------------------- INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER AH = A2h AL = character DH = session ID (00h for external session managment) Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #00394) SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI" --------S-14A2------------------------------- INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES AH = A2h Return: CX = number of servers ES:SI -> array of offsets from ES for server names SeeAlso: AH=A1h"TES" --------S-14A3------------------------------- INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER AH = A3h DH = session ID (00h for external session managment) Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #00394) AL = character read or 00h if none available SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI" --------S-14A3------------------------------- INT 14 - Interconnections Inc. TES - START A NEW SESSION AH = A3h ES:SI -> ??? Return: CF clear if successful AX = 5445h ('TE') CX <> FFFFh DX = port number CF set on error SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES" --------S-14A4------------------------------- INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK AH = A4h CX = length of buffer in bytes DH = session ID (00h for external session managment) ES:BX -> buffer containing data Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #00394) CX = number of bytes actually sent SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI" --------S-14A4------------------------------- INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION AH = A4h ??? Return: ??? SeeAlso: AH=A3h"TES",AH=A5h"TES" --------S-14A5------------------------------- INT 14 - 3com BAPI SERIAL I/O - READ BLOCK AH = A5h CX = length of buffer DH = session ID (00h for external session managment) ES:BX -> buffer for data Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #00394) CX = number of bytes actually read SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI" SeeAlso: AH=A7h"BAPI",AX=FF02h --------S-14A5------------------------------- INT 14 - Interconnections Inc. TES - RESUME A SESSION AH = A5h AL = session number Return: ??? SeeAlso: AH=A4h"TES",AH=A6h"TES" --------S-14A6------------------------------- INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK AH = A6h DH = session ID (00h for external session managment) Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394) Desc: generate a short break signal; if data delivery was turned off by the break, wait for the host to turn it on again SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI" --------S-14A6------------------------------- INT 14 - Interconnections Inc. TES - DROP A SESSION AH = A6h AL = session number Return: AH = status 00h successful else error SeeAlso: AH=A3h"TES",AH=A5h"TES" --------S-14A7------------------------------- INT 14 - 3com BAPI SERIAL I/O - READ STATUS AH = A7h DH = session ID (00h for external session managment) Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394) CX = number of bytes available for reading Note: Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available SeeAlso: AH=A5h"BAPI" --------S-14A7------------------------------- INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION AH = A7h ??? Return: ??? SeeAlso: AH=A3h"TES",AH=A5h"TES" --------S-14A8------------------------------- INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER AH = A8h AL = 00h no visible response ES:SI -> ASCIZ command Return: ??? --------N-14A8------------------------------- INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION??? AH = A8h DH = session ID??? CH = subfunction 02h ??? 0Dh ??? 0Fh ??? 10h ??? 11h ??? 28h ??? else Return: AH = 09h (not supported) Return: AH = return code (see #00394) 00h successful CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h) CL = ??? (7Fh/FFh) (subfunction 28h) CX = ??? (subfunction 11h) SeeAlso: AH=A9h"TelAPI" --------N-14A9------------------------------- INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL??? AH = A9h DH = session ID??? CH = subfunction 02h ??? 0Dh ??? 0Fh ??? 10h ??? 11h ??? 28h ??? else Return: AH = 09h (not supported) ??? Return: AH = return code (see #00394) ??? SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h --------V-14AA01----------------------------- INT 14 - DimVGA v2.0+ - INSTALLATION CHECK AX = AA01h Return: AX = FFFFh if installed, unchanged BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h) CX = resident segment (v3.1+) Program: DimVGA is a public domain screen saver by Menno Pieters SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI" SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h SeeAlso: INT 2F/AX=E300h Index: screen saver;DimVGA --------V-14AA02----------------------------- INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD AX = AA02h BX = number of clock ticks Return: AX = FFFFh Note: on screen modes with 256 or less colors DimVGA will dim the screen, when more than 256 colors can be used DimVGA will blank the screen. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h Index: screen saver;DimVGA --------V-14AA03----------------------------- INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR AX = AA03h BX = percentage remaining visible (1-99) Return: AX = FFFFh SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h Index: screen saver;DimVGA --------V-14AA04----------------------------- INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD AX = AA04h Return: AX = FFFFh BX = current time-out in clock ticks SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah Index: screen saver;DimVGA --------V-14AA05----------------------------- INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR AX = AA05h Return: AX = FFFFh BX = current dimming factor SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah Index: screen saver;DimVGA --------V-14AA06----------------------------- INT 14 - DimVGA v2.0+ - DISABLE AX = AA06h Return: AX = FFFFh SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah Index: screen saver;DimVGA --------V-14AA07----------------------------- INT 14 - DimVGA v2.0+ - ENABLE AX = AA07h Return: AX = FFFFh SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah Index: screen saver;DimVGA --------V-14AA08----------------------------- INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY' AX = AA08h Return: AX = FFFFh Note: this function will dim the screen immediately, even if DimVGA is currently disabled SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h Index: screen saver;DimVGA --------V-14AA09----------------------------- INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY' AX = AA09h Return: AX = FFFFh Note: this function will undim the screen immediately, even if DimVGA is currently disabled SeeAlso: AX=AA01h,AX=AA08h Index: screen saver;DimVGA --------V-14AA0A----------------------------- INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED AX = AA0Ah Return: AX = FFFFh BX = current state (0000h disabled, 0001h enabled) SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h Index: screen saver;DimVGA --------V-14AA0B----------------------------- INT 14 - DimVGA v2.1+ - SET HOTKEY AX = AA0Bh BH = shift state (see #00396) BL = keyboard scancode Return: AX = FFFFh SeeAlso: AX=AA01h,AX=AA0Ch Index: screen saver;DimVGA Bitfields for DimVGA hotkey shift state: Bit(s) Description (Table 00396) 7-4 unused 3 Alt key pressed 2 Ctrl key pressed 1 Left shift key pressed 0 Right shift key pressed --------V-14AA0C----------------------------- INT 14 - DimVGA v2.1+ - GET HOTKEY AX = AA0Ch Return: AX = FFFFh BH = shift state (see #00396) BL = keyboard scancode SeeAlso: AX=AA01h,AX=AA0Bh Index: screen saver;DimVGA --------V-14AA0D----------------------------- INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS AX = AA0Dh BX = new mouse check status 0000h mouse checking off 0001h mouse checking on Return: AX = FFFFh Note: before switching mouse checking on, a mouse driver should be found in memory. If no mouse driver is found, mouse checking should be switched off (resident DimVGA does not check by itself). SeeAlso: AX=AA01h,AX=AA0Eh Index: screen saver;DimVGA --------V-14AA0E----------------------------- INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS AX = AA0Eh Return: BX = mouse check status (0000h disabled, 0001h enabled) SeeAlso: AX=AA01h,AX=AA0Dh Index: screen saver;DimVGA --------V-14AA0F----------------------------- INT 14 - DimVGA v3.4 - SET LOCKING STATUS AX = AA0Fh BX = locking status 0000h disabled 0001h enabled Return: AX = FFFFh SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h Index: screen saver;DimVGA --------V-14AA10----------------------------- INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS AX = AA10h Return: BX = locking status (0000h disabled, 0001h enabled) SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh Index: screen saver;DimVGA ----------14AD------------------------------- INT 14 - IBM SurePath BIOS - Officially "Private" Function AH = ADh SeeAlso: AH=AEh"IBM",AH=AFh"IBM" ----------14AE------------------------------- INT 14 - IBM SurePath BIOS - Officially "Private" Function AH = AEh SeeAlso: AH=ADh"IBM",AH=AFh"IBM" ----------14AF------------------------------- INT 14 - IBM SurePath BIOS - Officially "Private" Function AH = AFh SeeAlso: AH=ADh"IBM",AH=AEh"IBM" --------S-14AF00BXAAAA----------------------- INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK AX = AF00h BX = AAAAh Return: AX = AF01h if installed BH = protocol type (if BX=AAAAh on entry) 01h NetManage TCP/IP BL = version for protocol type (if BX=AAAAh on entry) Note: early versions of the BAPI and the ROM BIOS simply destroy AX; this behavior is used to determine whether the newer functions (AH=B0h, AH=B1h,etc) are available SeeAlso: AH=A0h"BAPI" --------S-14B0------------------------------- INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER AH = B0h AL = new state (00h disabled, 01h enabled) Return: AH = return code (00h,07h,0Ah) (see #00394) Note: disabling the ECM character allows applications to send data which includes the ECM character SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h --------S-14B1------------------------------- INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE AH = B1h Return: AH = return code (00h,07h,0Ah) (see #00394) Desc: provide a means for the application or terminal emulator to perform the same action normally caused by the ECM character SeeAlso: AH=B0h,AH=B2h --------S-14B2------------------------------- INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE AH = B2h Return: AH = return code (00h,07h,0Ah) (see #00394) AL = watch flag (00h disabled, 01h enabled) Desc: determine whether the ECM character is enabled SeeAlso: AH=B0h,AH=B1h --------S-14B3------------------------------- INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO AH = B3h AL = direction (00h get, 01h set) DH = session ID (00h for external session managment) DL = configuration item (00h = end-of-line mapping) CX = new configuration item value (if AL=01h) ---if DL=00h--- CH = application EOL type (app to Telnet client) 01h application will send lone CR 02h application will send CR-? pair CL = driver EOL type (Telnet client to Telnet server) 01h driver should send CR-NUL pair 02h driver should send CR-LF pair Return: AH = return code (00h,03h,09h-0Bh) (see #00394) ---if AL=00h--- CX = configuration item value (above) SeeAlso: AH=B2h --------N-14E0------------------------------- INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING) AH = E0h BX = port number to connect with (default 0017h used if <= 0) CX:DX = Internet address of remote host DS:DI -> 2-byte remote host (session) identifier ES:SI -> 1700-byte buffer for Telnet state record 0000h:0000h to use TelAPI internally-allocated space Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #00397) ES:SI buffer filled with state record ES:SI -> internally-allocated state record in some versions Note: the remote host identifier may be used to refer to this connection SeeAlso: AH=E1h,AH=ECh,AX=FF00h (Table 00397) Values for TelAPI status: 0000h-7FFFh successful (session number) FED3h (-301) no session allocated, or out of TelAPI data space FF37h (-201) all sessions in use FFBDh (-67) unknown hostname FFC0h (-64) host not functioning FFC3h (-61) connection attempt refused FFC4h (-60) connection attempt timed out FFC8h (-56) socket already connected FFCDh (-51) network is unreachable FFDDh (-35) operation would block --------S-14E000----------------------------- INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK AX = E000h DX = port number (0-3) Return: ES:BX -> status block (see #00398) Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and ships with the METZ terminal program as MTEMNP.DRV (a TSR despite the .DRV extension) SeeAlso: AX=E006h Format of MX5 Extended FOSSIL status block: Offset Size Description (Table 00398) 00h BYTE flag: active (00h no, 01h yes) 01h BYTE MNP level (2,4,5) 02h BYTE series ID from remote MNP 03h DWORD total packets transmitted 07h DWORD duplicate packets transmitted 0Bh DWORD maximum speed 0Fh DWORD total packets received 13h DWORD duplicate packets received 17h DWORD maximum speed --------S-14E001----------------------------- INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL AX = E001h BH = function 00h get MNP level 01h set MNP level BL = new level (00h none, 02h/04h/05h MNP level N) DX = port number (0-3) Return: BL = MNP level SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h --------S-14E002----------------------------- INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE AX = E002h BH = function 00h get answer/originate mode 01h set mode BL = new mode (00h originate [default], 01h answer) DX = port number (0-3) Return: BL = answer/originate mode SeeAlso: AX=E001h,AX=E003h,AX=E006h --------S-14E003----------------------------- INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS AX = E003h BH = function 00h get wait ticks 01h set wait ticks BL = MNP wait ticks (default 0Eh) DX = port number (0-3) Return: BL = wait ticks SeeAlso: AX=E001h,AX=E002h,AX=E006h --------S-14E004----------------------------- INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL AX = E004h BH = function 00h get sound level 01h set sound level BL = new sound level (00h off, 01h on [default]) DX = port number Return: BL = sound state Desc: specify whether MX5 should generate beeps after an MNP connection (three high beeps if successful, high then low on connection failure) SeeAlso: AX=E002h,AX=E006h --------S-14E005----------------------------- INT 14 - MX5 Extended FOSSIL - UNINSTALL AX = E005h Return: BX = segment of MX5's memory block or 0000h on failure Note: caller must free the returned memory block to complete the uninstall SeeAlso: AX=E006h --------S-14E006BX0000----------------------- INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK AX = E006h BX = 0000h Return: BX = 4D58h ('MX') if installed AH = major version AL = minor version SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h --------S-14E007----------------------------- INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS AX = E007h CX = number of ticks to wait Return: nothing SeeAlso: AX=E006h --------N-14E1------------------------------- INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION AH = E1h BX = connection ID Return: AX = status (0000h,FFF7h,maybe others) (see #00397) Note: flushes and releases all buffers and data space used by the connection SeeAlso: AH=E0h,AH=E6h,AX=FF00h --------N-14E2------------------------------- INT 14 - TelAPI - "telread" - BUFFERED READ AH = E2h BX = connection ID (see AH=E0h"TelAPI") CX = length of buffer in bytes ES:SI -> buffer for data Return: AX > 0000h number of characters actually read AX = 0000h host has closed connection AX < 0000h error code (see #00397) Note: translates CRLF into local EOL if the connection is in ASCII mode, negotiates various Telnet options, and immediately executes several different Telnet action commands SeeAlso: AH=07h"TelAPI",AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h --------N-14E3------------------------------- INT 14 - TelAPI - "telwrite" - BUFFERED WRITE AH = E3h BX = connection ID CX = length of buffer in bytes ES:SI -> buffer containing data Return: AX > 0000h number of characters actually written AX < 0000h error code (see #00397) Note: translates local EOL into CRLF if the connection is in ASCII mode, sends the appropriate Telnet commands for the characters selected for IP, AYT, AO, EC, EL, and Break SeeAlso: AH=06h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h --------N-14E4------------------------------- INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL AH = E4h BX = connection ID (see AH=E0h"TelAPI") CX = Telnet command/option identifier (see #00400) ES:SI -> buffer containing command/option argument (see #00399) Return: AX = status (0000h, etc.) (see #00397) Desc: start filter control, initiate Telnet option negotiation, or get filter control status SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h Format of TelAPI Telnet command/option argument: Offset Size Description (Table 00399) 00h 5 WORD numeric arguments 0Ah DWORD -> ASCIZ string SeeAlso: #00400 (Table 00400) Values for TelAPI Telnet command/option identifier: 01h ASCII args: none 02h BINARY args: none 03h LOCALECHO args: none client echos data 04h REMOTEECHO args: none server echos data 05h SGA args: none Suppress Go-Ahead signal 07h CHARMODE args: none no line-buffering 08h LINEMODE args: -> erase-line ch perform line-buffering 09h RECVEOL args: EOL type 0Ah SENDEOL args: EOL type 0Bh EOR args: none enable end-of-record sequence 0Dh BREAK args: -> break char 0Eh VERBOSE args: verbosity display Telnet negotiations? 0Fh AYT args: -> AYT escape ch 10h AO args: -> AO escape char 11h IP args: -> IP escape char 12h EC args: -> escape char 13h EL args: -> escape char 14h STATUS args: type; returns data in structure 18h TERMTYPE args: -> terminal type 19h ATTACHPORT args: port number ; returns session number 1Bh TRANSMIT_EOR args: EOR enabled append EOR to every telwrite? SeeAlso: #00399 --------N-14E5------------------------------- INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS AH = E5h Return: AX = status (0000h,other) (see also #00397) FFFFh unable to reset Desc: close all sessions and reset TelAPI to defaults SeeAlso: AH=E1h,AH=E6h,AX=FF00h --------N-14E6------------------------------- INT 14 - TelAPI - "telunload" - UNINSTALL AH = E6h Return: AX = status 0000h successful FFFFh unable to uninstall Notes: TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B this function invokes AH=E5h internally SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h --------N-14E7------------------------------- INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST AH = E7h ES:SI -> 10-word buffer for session list Return: AX = 0000h (successful) ES:SI buffer filled Desc: determine, for each of the ten allowable sessions, whether the session is currently available Note: each word in the buffer is filled with either 0000h to indicate that the corresponding sesion is unavailable, or 0001h if available SeeAlso: AH=E0h,AH=E5h,AX=FF00h --------N-14E8------------------------------- INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION AH = E8h BX = connection ID (see AH=E0h"TelAPI") CX = serial port number (0000h-0003h = COM1-COM4) Return: AX = status 0000h successful FFFFh failed SeeAlso: AH=E0h,AH=E9h,AX=FF00h --------N-14E9------------------------------- INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT AH = E9h DX = serial port number (0000h-0003h = COM1-COM4) Return: AX >= 0000h session number AX < 0000h error code (see #00397) SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h --------N-14EA------------------------------- INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION AH = EAh BX = connection ID (see AH=E0h"TelAPI") ES:SI -> buffer for status info (see #00401) Return: AX = status (0000h,FFFFh,etc.) SeeAlso: AH=E9h,AH=EBh,AX=FF00h Format of TelAPI Telnet connection status information: Offset Size Description (Table 00401) 00h 4 BYTEs remote host IP address 04h 20 BYTEs reserved 18h WORD local port number 1Ah BYTE connection mode (00h = ASCII, 01h = Binary) 1Bh BYTE echo flag (00h local, 01h remote) 1Ch BYTE SGA flag (00h will, 01h won't) 1Dh BYTE EOR negotation flag (00h do negotiate, 01h don't) 1Eh BYTE buffering (00h line mode, 01h character mode) 1Fh BYTE reserved 20h BYTE verbose flag (00h no, 01h verbose mode) 21h BYTE received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF) 22h BYTE sent EOL (00h no translation, 01h CR, 02h LF) 23h BYTE break character 24h BYTE IP escape character 25h BYTE AO escape character 26h BYTE AYT escape character 27h BYTE EC escape character 28h BYTE EL escape character 29h 41 BYTEs ASCIZ Telnet-negotiated terminal type 52h 9 BYTEs session ID SeeAlso: #00402 --------N-14EB------------------------------- INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS AH = EBh ES:SI -> buffer for session statuses (see #00402) Return: ES:SI buffer filled SeeAlso: AH=E9h,AH=EAh,AX=FF00h Format of TelAPI session status information [array]: Offset Size Description (Table 00402) 00h BYTE session state (00h available, 01h connected) 01h 9 BYTEs session ID if connected 0Ah WORD attached COM port if connected, FFFFh if not SeeAlso: #00401 --------N-14EC------------------------------- INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING) AH = ECh BX = port number to connect with (default 0017h used if <= 0) CX:DX = Internet address of remote host DS:DI -> 2-byte remote host (connection) identifier ES:SI -> 1700-byte buffer for Telnet state record 0000h:0000h to use TelAPI internally-allocated space Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #00397) ES:SI buffer filled with state record ES:SI -> internally-allocated state record in some versions Notes: the remote host identifier may be used to refer to this connection this function returns immediately; use AH=EDh to check whether the connection has been established yet this function is not supported by the Microdyne TelAPI v3.7 SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h --------N-14ED------------------------------- INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION AH = EDh BX = connection ID (see AH=ECh) Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #00397) 0000h session now connected 0001h connection still in progress Note: this function is not supported by the Microdyne TelAPI v3.7 SeeAlso: AH=EDh,AX=FF00h --------a-14F0F0----------------------------- INT 14 - ASAP v1.0 - ??? AX = F0F0h DX = ??? ??? Return: ??? Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by MicroTalk SeeAlso: AX=F0F1h --------a-14F0F1DX0000----------------------- INT 14 - ASAP v1.0 - INSTALLATION CHECK AX = F0F1h DX = 0000h Return: DX = segment of resident code 0000h if not installed Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by MicroTalk SeeAlso: AX=F0F0h,INT 10/AX=3800h --------S-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 SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh --------S-14F9------------------------------- INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL AH = F9h DX = port (00h-03h) Return: nothing SeeAlso: AX=F4FFh --------S-14FA------------------------------- INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK AH = FAh DX = port (00h-03h) Return: nothing SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah --------S-14FB------------------------------- INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS AH = FBh AL = modem control register (see #00334 at AH=05h"SERIAL") DX = port (00h-03h) Return: nothing SeeAlso: AH=05h"SERIAL" --------S-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 #00304 at AH=03h) AL = character SeeAlso: AH=02h,AH=0Ch,AX=FF02h --------S-14FD02----------------------------- INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS AX = FD02h Return: CX = number of characters available --------N-14FF00----------------------------- INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK AX = FF00h Return: AX = 00FFh if installed BX = version number * 100 (decimal) SeeAlso: AH=E6h,AX=F4FFh --------S-14FF01----------------------------- INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER AX = FF01h CX = length of buffer (0000h to cancel buffer assignment) DX = port (00h-03h) ES:BX -> send buffer Return: nothing SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h --------S-14FF02----------------------------- INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER AX = FF02h CX = length of buffer (0000h to cancel buffer assignment) DX = port (00h-03h) ES:BX -> receive buffer Return: nothing SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF01h --------S-14FFF8----------------------------- INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR AX = FFF8h BX = card type (sub-device number) CX = new baudrate divisor DX = index to baud rate Return: AH bit 7 set on error AH bit 7 clear if successful Program: COMM-DRV is a universal serial communications driver by Willies' Computer Software Company, which supports standard INT 14 and FOSSIL calls as well as its own interfaces SeeAlso: AX=8000h"COMM-DRV" --------S-14FFFB----------------------------- INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER AX = FFFBh DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful BX = highest port number --------S-14FFFC----------------------------- INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS AX = FFFCh DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful BX = flags (see #00403) SeeAlso: AX=FFFDh Bitfields for INT 14h flags: Bit(s) Description (Table 00403) 0 port active for INT 14h 1 interface behaving like a FOSSIL driver --------S-14FFFD----------------------------- INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS AX = FFFDh BX = flags (see #00403) DX = port number Return: AH bit 7 set on error AH bit 7 clear if successful SeeAlso: AX=FFFCh --------S-14FFFE----------------------------- INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL AX = FFFEh Return: AH bit 7 set on error AH bit 7 clear if successful --------S-14FFFF----------------------------- INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA AX = FFFFh BX:SI -> DWORD buffer for address of information area (see #00404) (initialized to zeros) Return: BX:SI buffer filled with nonzero value if installed Program: COMM-DRV is a universal serial communications driver by Willies' Computer Software Company, which supports standard INT 14 and FOSSIL calls as well as its own interfaces Index: installation check;COMM-DRV Format of COMM-DRV information area: Offset Size Description (Table 00404) 00h 8 BYTEs signature "COMM-DRV" 08h 2 BYTEs 00h,00h 0Ah DWORD -> direct address mapping table 0Eh DWORD previous INT 14 vector --------t-15--------------------------------- INT 15 - Microsoft TSR Specification No additional information available at this time. --------B-1500------------------------------- INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only) AH = 00h Return: CF set on error AH = 86h no cassette present CF clear if successful SeeAlso: AH=01h"CASSETTE",MEM 0040h:0067h"PC" --------M-1500------------------------------- INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS AH = 00h Return: CX = signed X count DX = signed Y count --------O-1500------------------------------- INT 15 - VMiX v2+ - INSTALLATION CHECK AH = 00h Return: DX = 0798h if installed AX = version (AH = major, AL = minor) --------T-1500------------------------------- INT 15 - MultiDOS Plus - GIVE UP TIME SLICE AH = 00h Return: nothing Note: if issued by the highest-priority task while MultiDOS is using priority-based rather than round-robin scheduling, control will be returned to the caller immediately SeeAlso: AH=03h"MultiDOS",AX=1000h --------B-1501------------------------------- INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only) AH = 01h Return: CF set on error AH = 86h no cassette present CF clear if successful SeeAlso: AH=00h"CASSETTE" --------b-1501------------------------------- INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM AH = 01h AL = NVRAM location (00h to 3Fh) (see #00405) BL = NVRAM data value Return: AH = return code 00h OK 01h address bad 02h write error SeeAlso: AH=02h"Amstrad" Format of Amstrad NVRAM: Offset Size Description (Table 00405) 00h BYTE time of day: seconds 01h BYTE alarm time: seconds 02h BYTE time of day: minutes 03h BYTE alarm time: minutes 04h BYTE time of day: hours 05h BYTE alarm time: hours 06h BYTE day of week, 1 = Sunday 07h BYTE day of month 08h BYTE month 09h BYTE year mod 100 0Ah BYTE RTC status register A (see #00406) 0Bh BYTE RTC status register B (see #00407) 0Ch BYTE RTC status register C (read-only) (see #00408) 0Dh BYTE RTC status register D bit 7: battery good 0Eh 6 BYTEs time and date machine last used 14h BYTE user RAM checksum 15h WORD Enter key scancode/ASCII code 17h WORD Forward delete key scancode/ASCII code 19h WORD Joystick fire button 1 scancode/ASCII code 1Bh WORD Joystick fire button 2 scancode/ASCII code 1Dh WORD mouse button 1 scancode/ASCII code 1Fh WORD mouse button 2 scancode/ASCII code 21h BYTE mouse X scaling factor 22h BYTE mouse Y scaling factor 23h BYTE initial VDU mode and drive count 24h BYTE initial VDU character attribute 25h BYTE size of RAM disk in 2K blocks 26h BYTE initial system UART setup byte 27h BYTE initial external UART setup byte 28h 24 BYTEs available for user application Note: bytes 00h-0Dh are the same on the IBM AT as they are used/updated by the clock chip Bitfields for RTC status register A: Bit(s) Description (Table 00406) 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 SeeAlso: #00405 Bitfields for RTC status register B: Bit(s) Description (Table 00407) 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 SeeAlso: #00405 Bitfields for RTC status register C: Bit(s) Description (Table 00408) 7 IRQF flag 6 PF flag 5 AF flag 4 UF flag SeeAlso: #00405 --------O-1501------------------------------- INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER AH = 01h STACK: WORD object ID of requestor DWORD pointer to ASCIZ name of requested method "assign" assign channel to object "deassign" deassign channel "cursor" set cursor on/off "init" initialize comm port "open" open I/O channel "position" set cursor position "receive" get buffered packet from comm port "send" send buffered packet to comm port "vio" set current virtual I/O to specified channel "window" make window at cursor position ---if "assign"--- WORD object UID WORD caller UID/PID DWORD CSL with port ---if "deassign"--- WORD channel ID ---if "cursor"--- WORD channel ID (must be a SRCSINK) WORD new state (0000h off, 0001h on) ---if "init"--- WORD channel ID (must be a SRCSINK) WORD comm port number (00h-03h) WORD UART init code ---if "open"--- WORD channel ID ---if "position"--- WORD channel ID (must be a SRCSINK) WORD position (high byte = row, low byte = column) ---if "receive"--- DWORD pointer to buffer ---if "send"--- WORD length of buffer DWORD pointer to buffer ---if "vio"--- WORD channel ID (must be a SRCSINK) ---if "window"--- WORD top left (high byte = row, low byte = column) WORD bottom right (high byte = row, low byte = column) Return: DX:AX -> IRP structure or 0000h:0000h SeeAlso: AH=00h"VMiX",AH=02h"VMiX" --------T-1501------------------------------- INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE AH = 01h AL = semaphore number (00h-3Fh) Return: AH = status 00h successful 02h invalid semaphore number Notes: if the semaphore is not owned, ownership is assigned to the calling task and the call returns immediately if the semaphore is already owned by another task, the calling task is placed on a queue for the semaphore and suspended until it can become owner of the semaphore semaphore 0 is used internally by MultiDOS to synchronize DOS access SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS" --------B-1502------------------------------- INT 15 - CASSETTE - READ DATA (PC and PCjr only) 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 (see #00409) SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE",MEM 0040h:0069h,MEM 0040h:006Bh"PC" (Table 00409) Values for Cassette status: 00h successful 01h CRC error 02h bad tape signals 04h no data 80h invalid command 86h no cassette present --------b-1502------------------------------- INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM AH = 02h AL = NVRAM location (00h to 3Fh) Return: AH = return code 00h OK 01h address bad 02h checksum error AL = NVRAM data value SeeAlso: AH=01h"Amstrad" --------O-1502------------------------------- INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER AH = 02h STACK: WORD object ID of requestor DWORD pointer to ASCIZ name of requested method "assign" allocate low memory block "assign extended" allocate extended memory pages "assign gdt" allocate GDT selector "paged" allocate low paged memory "paged extended" alllocate extended memory pages "deassign" free memory block "deassign gdt" free GDT selector "getvpage" get physical address for virtual page "setvpage" set physical address for virtual page "info" get VMiX memory usage info block "move" move contents of 32-bit memory "newmcb" make new DOS memory control block "owner" get process ID of MCB or PSP owner "umb" allocate upper memory block "video" toggle system use of video memory and get stat ---if "assign"--- WORD number of objects WORD size in bytes (multiple of 512 bytes) ---if "assign extended"--- WORD number of objects WORD size in bytes (multiple of 4K) ---if "assign gdt"--- WORD access type (low byte) WORD segment size in paragraphs DWORD pointer to start of physical segment ---if "paged"--- WORD number of 512-byte pages ---if "paged extended" WORD number of 4K pages ---if "deassign"--- DWORD pointer returned by previous allocation call ---if "deassign gdt"--- WORD GDT selector ---if "getvpage"--- WORD owner's process ID DWORD pointer to buffer for page structure (struct VPGE) ---if "setvpage"--- WORD owner's process ID DWORD pointer to new page structure (struct VPGE) ---if "info"--- no additional arguments ---if "move" DWORD 32-bit source address DWORD 32-bit destination address WORD number of words to move ---if "newmcb"--- DWORD pointer to new MCB's location WORD size of memory block DWORD pointer to ASCIZ name string (max 8 chars) ---if "owner"--- WORD MCB or PSP segment ---if "umb"--- WORD size in paragraphs ---if "video"--- no additional arguments Return: DX:AX -> memory block or VPGE struct or 0000h:0000h SeeAlso: AH=00h"VMiX",AH=01h"VMiX" --------T-1502------------------------------- INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE AH = 02h AL = semaphore number (00h-3Fh) Return: AH = status 00h successful 01h not semaphore owner 02h invalid semaphore number Notes: if any tasks are waiting for the semaphore, the first task on the wait queue will become the new owner and be reawakened do not use within an interrupt handler SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS" --------B-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 #00409) CX = 0000h SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE" --------V-1503------------------------------- INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER AH = 03h AL = value (I,R,G,B bits) Return: nothing SeeAlso: AH=04h"Amstrad" --------O-1503------------------------------- INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT AH = 03h STACK: DWORD pointer to ASCII prompt WORD field outline character WORD length of input field (max 7Fh) DWORD address of pointer to input buffer Return: AX = length of input (input buffer is padded with blanks) SeeAlso: AH=04h"VMiX" --------T-1503------------------------------- INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL AH = 03h DX = number of time slices to remain suspended Return: after specified interval has elapsed Note: when priority-based scheduling is in use, high-priority tasks should use this function to yield the processor SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS" --------B-1504------------------------------- INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS) AH = 04h ES:DI -> 32-byte results buffer for System Parameter Table (see #00410) DS = segment containing ABIOS RAM extensions (zero if none) Return: CF clear if successful AH = 00h success ES:DI buffer filled AL destroyed CF set on failure AX destroyed AH = 80h/86h if not supported SeeAlso: AH=05h"ABIOS",AH=C1h Format of ABIOS System Parameter Table: Offset Size Description (Table 00410) 00h DWORD FAR address of ABIOS Common Start Routine 04h DWORD FAR address of ABIOS Interrupt Routine 08h DWORD FAR address of ABIOS Time-out Routine 0Ch WORD number of bytes of stack required by this ABIOS implementation 0Eh 16 BYTEs reserved 1Eh WORD number of entries in initialization table --------V-1504------------------------------- INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER AH = 04h AL = value (RDSEL1 and RDSEL0) Return: nothing SeeAlso: AH=03h"Amstrad",AH=05h"Amstrad" --------O-1504------------------------------- INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM AH = 04h STACK: DWORD control string DWORD array of arguments Return: nothing SeeAlso: AH=03h"VMiX" --------T-1504------------------------------- INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK AH = 04h AL = mailbox number (00h-3Fh) CX = message length in bytes DS:SI -> message Return: AH = status 00h successful 01h out of message memory 02h invalid mailbox number Note: the message is copied into a system buffer; the caller may immediately reuse its buffer SeeAlso: AH=05h"MultiDOS" --------B-1505------------------------------- INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS) AH = 05h ES:DI -> results buffer of length 18h * Number_of_Entries (see #00411) DS = segment containing ABIOS RAM extensions (zero if none) Return: CF clear if successful AH = 00h success ES:DI buffer filled AL destroyed CF set on failure AX destroyed AH = 80h/86h if not supported SeeAlso: AH=04h"ABIOS",AH=C1h Format of one entry of ABIOS Initialization Table: Offset Size Description (Table 00411) 00h WORD device ID (see #00412) 02h WORD number of Logical IDs 04h WORD Device Block length (zero for ABIOS patch or extension) 06h DWORD -> init routine for Device Block and Function Transfer Table 0Ah WORD request block length 0Ch WORD Function Transfer Table length (zero for a patch) 0Eh WORD Data Pointers length (in Common Data Area) 10h BYTE secondary device ID (hardware level this ABIOS ver supports) 11h BYTE revision (device driver revision level this ABIOS supports) 12h 6 BYTEs reserved (Table 00412) Values for ABIOS device ID: 00h ABIOS internal calls 01h floppy disk 02h hard disk 03h video 04h keyboard 05h parallel port 06h serial port 07h system timer 08h real-time clock 09h system services 0Ah NMI 0Bh mouse 0Eh CMOS RAM 0Fh DMA 10h Programmable Option Select (POS) 16h keyboard password --------V-1505------------------------------- INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER AH = 05h AL = value (I,R,G,B bits) Return: nothing SeeAlso: AH=04h"Amstrad" --------O-1505------------------------------- INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS AH = 05h Return: AX = process ID SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX" --------T-1505------------------------------- INT 15 - MultiDOS Plus - CHECK MAILBOX AH = 05h AL = mailbox number (00h-3Fh) Return: AH = status 00h successful DX = length of first message in queue, 0000h if no message 02h invalid mailbox number SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS" --------b-1506------------------------------- INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER AH = 06h Return: BX = version number --------O-1506------------------------------- INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK AH = 06h STACK: WORD process ID Return: DX:AX -> process control block SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX" --------T-1506------------------------------- INT 15 - MultiDOS Plus - READ MAILBOX AH = 06h AL = mailbox number (00h-3Fh) CX = size of buffer in bytes ES:DI -> buffer for message Return: AH = status 00h successful CX = number of bytes copied DX = actual length of message 02h invalid mailbox number Note: if the caller's buffer is not large enough, the message is truncated and the remainder is lost SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS" --------O-1507------------------------------- INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK AH = 07h STACK: WORD object type Return: DX:AX -> object control block SeeAlso: AH=06h"VMiX",AH=08h"VMiX" ----------1507------------------------------- INT 15 - IBM SurePath BIOS - Officially "Private" Function AH = 07h SeeAlso: AH=08h"IBM" --------T-1507------------------------------- INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD) AH = 07h BX:CX = entry point of new task DX = stack size in paragraphs Return: AH = status 00h successful 01h no free task control blocks 02h no free memory for task's stack Note: execution returns immediately to calling task SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS" --------O-1508------------------------------- INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK AH = 08h STACK: WORD channel ID Return: DX:AX -> channel control block SeeAlso: AH=06h"VMiX",AH=07h"VMiX" --------B-1508------------------------------- INT 15 - IBM SurePath BIOS - WAIT REQUESTED TIME PERIOD AH = 08h AL = function 00h wait in increments of 15.025 microseconds CX = number of time increments to wait (0000h = maximum) 80h wait in increments of 840 ns ECX = number of time increments to wait 81h I/O event wait BH = bitmask of bits to check BL = expected pattern DX = I/O port address ECX = number of 840 ns microticks to wait Return: ECX = 00000000h if expected pattern did not occur 82h memory event wait BH = bitmask of bits to check BL = expected pattern ES:SI -> BYTE to check ECX = number of 840 ns microticks to wait Return: ECX = 00000000h if expected pattern did not occur other reserved Return: CF clear if successful CF set on error AH = status 00h successful 01h used 15.025 microsecond interval, time rounded up 08h reserved subfunction 86h function not supported Notes: IBM classifies this function as optional if the POST determines that the timer is nonfunctional, this function uses the 15.025 microsecond refresh timer instead of the full-resolution timer SeeAlso: AH=07h"IBM",AH=09h"IBM",AH=86h --------T-1508------------------------------- INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD) AH = 08h Return: calling task terminated, so execution never returns to caller Notes: an internal task must be terminated with this function rather than a DOS termination function task's stack space is returned to parent task's memory pool SeeAlso: AH=07h"MultiDOS" --------O-1509------------------------------- INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT AH = 09h STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type) WORD subqueue ID Return: AX = queue ID SeeAlso: AH=0Ah"VMiX" ----------1509------------------------------- INT 15 - IBM BIOS - RESERVED FOR PCMCIA SYSTEM RESOURCE TABLE ACCESS AH = 09h no further details available SeeAlso: AH=08h"IBM" --------T-1509------------------------------- INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY AH = 09h AL = new priority Return: nothing Note: the priority has different meanings depending on whether priority- based or round-robin scheduling is used SeeAlso: AH=07h"MultiDOS" --------O-150A------------------------------- INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT AH = 0Ah STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type) WORD ID of current element in queue chain Return: AX = ID of next element SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX" --------T-150A------------------------------- INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL AH = 0Ah AL = new interval 00h = 55.0 ms (default) 80h = 27.5 ms 40h = 13.75 ms 20h = 6.88 ms 10h = 3.44 ms 08h = 1.72 ms SeeAlso: AH=03h"MultiDOS" --------O-150B------------------------------- INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER AH = 0Bh STACK: WORD caller's UID DWORD pointer to ASCIZ name of requested method "abort" abort current send/receive on comm port "block" start/end critical section "close" terminate interrupt-drive comm I/O "open" prepare comm port for interrupt-driven I/O "delay" set delay timer and wait "hibernate" put process to sleep "ints" enable/disable interrupt-driven INT 14h "length" get current send/receive buffer offsets "kswitch" switch stacks "numproc" get number of active processes "protocol" set protocol function for comm interrupts "relocate" set/reset VMiX flag for relocating to himem "status" get current open comm port status "wake" awaken a process "xport" get comm port polled for logins ---if "abort"--- no additional arguments ---if "block"--- WORD 0000h end, 0001h start ---if "close"--- no additional arguments ---if "open"--- WORD comm port (00h-03h) WORD BIOS parameter byte (see #00300 at INT 14/AH=00h), except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200 ---if "delay"--- WORD time in seconds ---if "hibernate"--- WORD process ID ---if "ints"--- WORD 0000h if no, 0001h if yes ---if "length","numproc","relocate","status","xport"--- no additional arguments ---if "kswitch"--- DWORD pointer to new stack ---if "protocol"--- DWORD pointer to function (must be in low "assign"ed memory when in 386 mode) ---if "wake"--- WORD process ID Return: DX:AX -> result or 0000h:0000h ---if "length"--- BYTE receive offset BYTE send offset ---if "kswitch"--- DWORD old stack pointer ---if "numproc"--- WORD number of active processes ---if "status"--- current open comm port status ---if "xport"--- current comm port being polled for logins Note: the "delay" command reportedly disables the keyboard until the delay completes SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX" --------T-150B------------------------------- INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY AH = 0Bh Return: nothing Notes: sets calling task's screen pointer to actual screen memory; the pointer may be restored with AH=0Ch caller's video mode must be same as foreground task's video mode any text written while in the background will be saved to the foreground task's virtual screen when it switches to the background useful if a background task wants to display a message on the foreground screen SeeAlso: AH=0Ch"MultiDOS" --------O-150C------------------------------- INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK AH = 0Ch STACK: WORD process ID Return: DX:AX -> TSS stack store SeeAlso: AH=00h"VMiX" --------T-150C------------------------------- INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY AH = 0Ch Return: nothing Note: restores task's screen pointer saved by AH=0Bh; must not be called unless AH=0Bh has been called first SeeAlso: AH=0Bh"MultiDOS" --------O-150D------------------------------- INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL AH = 0Dh STACK: DWORD ASCIZ string starting with requested I/O channel and followed by standard VMiX shell command string Return: AX = process ID or error code "SYS_ERROR" Note: the maximum string length is 7Fh characters SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh --------T-150D------------------------------- INT 15 - MultiDOS Plus - DISABLE MULTITASKING AH = 0Dh Return: nothing Note: calling task receives all time slices until AH=0Eh is called; this allows time-critical events or nonreentrant code to be processed SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS" --------O-150E------------------------------- INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS AH = 0Eh STACK: WORD process ID Return: AX = status (SYS_OK or SYS_ERROR) SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX" --------T-150E------------------------------- INT 15 - MultiDOS Plus - ENABLE MULTITASKING AH = 0Eh Return: nothing SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS" --------d-150F------------------------------- INT 15 C - 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 CF set if formatting should terminate Note: called during ESDI drive formatting after each cylinder is completed SeeAlso: INT 13/AH=1Ah --------O-150F------------------------------- INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT AH = 0Fh STACK: WORD queue ID (0 = process queue, 1 = object q, 3 = type q) WORD ID of element in queue chain Return: AX = key SeeAlso: AH=0Ah"VMiX" --------T-150F------------------------------- INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND AH = 0Fh DS:BX -> ASCIZ command Return: after command has been processed Notes: specified string is executed as if it had been typed at the MultiDOS command prompt the task is placed on a queue which MultiDOS examines periodically and is suspended until MultiDOS has processed the command all lowercase characters up to the first blank are converted to upper case within the given buffer --------!---Section--------------------------