Interrupt List, part 3 of 13 This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown --------J-1550------------------------------- INT 15 - DOS/V - FONT SUBSYSTEM ACCESS AH = 50h AL = which function address to retrieve 00h "read font" function 01h "write font" function BL = 00h BH = character size (00h single-byte, 01h double-byte) DH = width of character cell DL = height of character cell BP = code page (see #0356) Return: CF clear if successful AH = 00h ES:BX -> requested function's address CF set on error AH = error code (see #0357) SeeAlso: AH=49h (Table 0356) Values for DOS/V code page: 0 default 437 US English 932 Japanese 934 Korea 936 China 938 Taiwan (Table 0357) Values for DOS/V error code: 01h invalid font type in BH 02h BL not zero 03h invalid font size 04h invalid code page 80h unsupported function (PC) 86h unsupported function (XT) --------T-1550------------------------------- INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE AH = 50h BX = segment of page directory table CX = page number of page table SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX" --------T-1551------------------------------- INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE AH = 51h STACK: DWORD selector:offset of function Return: registers as returned by function Note: executes function with privilege level 0 (highest privilege) SeeAlso: AH=10h"VMiX",AH=52h"VMiX" --------B-155101----------------------------- INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER AX = 5101h Return: CF set if successful AH = 00h AL = current configuration number 00h system unit only FFh configuration not recognized BX = status flag bits 0-14: reserved bit 15: additional data is available (location TBD) CF clear on error AH = status 01h expansion unit is not present 86h function not supported Note: CF convention is the reverse of the standard convention for this interrupt. (Perhaps a typo in the IBM BIOS Tech Ref?) --------T-1552------------------------------- INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT AH = 52h SeeAlso: AH=50h"VMiX",AH=51h"VMiX" --------d-1552------------------------------- INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT AH = 52h DL = drive number Return: CF clear if OK to eject media AH = 00h CF set if ejection disallowed AH = error code (B1h,B3h) (see #0140) Note: called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection request is made SeeAlso: INT 13/AH=46h"INT 13 Extensions" --------p-155300----------------------------- INT 15 - Advanced Power Management Specification - INSTALLATION CHECK AX = 5300h BX = device ID of system BIOS (0000h) Return: CF clear if successful AH = major version (BCD) AL = minor version (BCD) BX = 504Dh ("PM") CX = flags (see #0358) CF set on error AH = error code (06h,86h) (see #0359) BUG: early versions of the Award Modular BIOS with built-in APM support reportedly do not set BX on return Bitfields for APM flags: Bit(s) Description (Table 0358) 0 16-bit protected mode interface supported 1 32-bit protected mode interface supported 2 CPU idle call reduces processor speed 3 BIOS power management disabled 4 BIOS power management disengaged (APM v1.1) 5-7 reserved (Table 0359) Values for APM error code: 01h power management functionality disabled 02h interface connection already in effect 03h interface not connected 04h real-mode interface not connected 05h 16-bit protected-mode interface already connected 06h 16-bit protected-mode interface not supported 07h 32-bit protected-mode interface already connected 08h 32-bit protected-mode interface not supported 09h unrecognized device ID 0Ah invalid parameter value in CX 0Bh-1Fh reserved for other interface and general errors 20h-3Fh reserved for CPU errors 40h-5Fh reserved for device errors 60h can't enter requested state 61h-7Fh reserved for other system errors 80h no power management events pending 81h-85h reserved for other power management event errors 86h APM not present 87h-9Fh reserved for other power management event errors --------p-155301----------------------------- INT 15 - Advanced Power Management Specification - CONNECT REAL-MODE INTERFACE AX = 5301h BX = device ID of system BIOS (0000h) Return: CF clear if successful CF set on error AH = error code (02h,05h,07h,09h) (see #0359) SeeAlso: AX=5302h,AX=5303h,AX=5304h --------p-155302----------------------------- INT 15 R - Advanced Power Management Spec - CONNECT 16-BIT PROTMODE INTERFACE AX = 5302h BX = device ID of system BIOS (0000h) Return: CF clear if successful AX = real-mode segment base address of protected-mode 16-bit code segment BX = offset of entry point CX = real-mode segment base address of protected-mode 16-bit data segment ---APM v1.1--- SI = APM BIOS code segment length DI = APM BIOS data segment length CF set on error AH = error code (02h,05h,06h,07h,09h) (see #0359) Notes: the caller must initialize two consecutive descriptors with the returned segment base addresses; these descriptors must be valid whenever the protected-mode interface is called, and will have their limits arbitrarily set to 64K. the protected mode interface is invoked by making a far call with the same register values as for INT 15; it must be invoked while CPL=0, the code segment descriptor must have a DPL of 0, the stack must be in a 16-bit segment and have enough room for BIOS use and possible interrupts, and the current I/O permission bit map must allow access to the I/O ports used for power management. functions 00h-03h are not available from protected mode SeeAlso: AX=5301h,AX=5303h,AX=5304h --------p-155303----------------------------- INT 15 - Advanced Power Management Spec - CONNECT 32-BIT PROTMODE INTERFACE AX = 5303h BX = device ID of system BIOS (0000h) Return: CF clear if successful AX = real-mode segment base address of protected-mode 32-bit code segment EBX = offset of entry point CX = real-mode segment base address of protected-mode 16-bit code segment DX = real-mode segment base address of protected-mode 16-bit data segment ---APM v1.1--- SI = APM BIOS code segment length DI = APM BIOS data segment length CF set on error AH = error code (02h,05h,07h,08h,09h) (see #0359) Notes: the caller must initialize three consecutive descriptors with the returned segment base addresses for 32-bit code, 16-bit code, and 16-bit data, respectively; these descriptors must be valid whenever the protected-mode interface is called, and will have their limits arbitrarily set to 64K. the protected mode interface is invoked by making a far call to the 32-bit code segment with the same register values as for INT 15; it must be invoked while CPL=0, the code segment descriptor must have a DPL of 0, the stack must be in a 32-bit segment and have enough room for BIOS use and possible interrupts, and the current I/O permission bit map must allow access to the I/O ports used for power management. functions 00h-03h are not available from protected mode SeeAlso: AX=5301h,AX=5302h,AX=5304h --------p-155304----------------------------- INT 15 - Advanced Power Management Specification - DISCONNECT INTERFACE AX = 5304h BX = device ID of system BIOS (0000h) Return: CF clear if successful CF set on error AH = error code (03h,09h) (see #0359) SeeAlso: AX=5301h,AX=5302h,AX=5303h --------p-155305----------------------------- INT 15 - Advanced Power Management Specification - CPU IDLE AX = 5305h Return: CF clear if successful (after system leaves idle state) CF set on error AH = error code (03h,0Bh) (see #0359) Notes: call when the system is idle and should be suspended until the next system event or interrupt should not be called from within a hardware interrupt handler to avoid reentrance problems if an interrupt causes the system to resume normal processing, the interrupt may or may not have been handled when the BIOS returns from this call; thus, the caller should allow interrupts on return interrupt handlers may not retain control if the BIOS allows interrupts while in idle mode even if they are able to determine that they were called from idle mode the caller should issue this call continuously in a loop until it needs to perform some processing of its own SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h --------p-155306----------------------------- INT 15 - Advanced Power Management Specification - CPU BUSY AX = 5306h Return: CF clear if successful CF set on error AH = error code (03h,0Bh) (see #0359) Notes: called to ensure that the system runs at full speed even on systems where the BIOS is unable to recognize increased activity (especially if interrupts are hooked by other programs and not chained to the BIOS) this call may be made even when the system is already running at full speed, but it will create unnecessary overhead should not be called from within a hardware interrupt handler to avoid reentrance problems SeeAlso: AX=5305h --------p-155307----------------------------- INT 15 - Advanced Power Management Specification - SET POWER STATE AX = 5307h BX = device ID (see #0360) CX = system state ID (see #0361) Return: CF clear if successful CF set on error AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0359) Note: should not be called from within a hardware interrupt handler to avoid reentrance problems SeeAlso: AX=530Ch (Table 0360) Values for APM device IDs: 0000h system BIOS 0001h all devices for which the system BIOS manages power 01xxh display (01FFh for all attached display devices) 02xxh secondary storage (02FFh for all attached secondary storage devices) 03xxh parallel ports (03FFh for all attached parallel ports) 04xxh serial ports (04FFh for all attached serial ports) ---APM v1.1--- 05xxh network adapters (05FFh for all attached network adapters) 06xxh PCMCIA sockets (06FFh for all) 0700h-DFFFh reserved Exxxh OEM-defined power device IDs F000h-FFFFh reserved (Table 0361) Values for system state ID: 0000h ready (not supported for device ID 0001h) 0001h stand-by 0002h suspend 0003h off (not supported for device ID 0001h) ---APM v1.1--- 0004h last request processing notification (only for device ID 0001h) 0005h last request rejected (only for device ID 0001h) 0006h-001Fh reserved system states 0020h-003Fh OEM-defined system states 0040h-007Fh OEM-defined device states 0080h-FFFFh reserved device states --------p-155307CX0001----------------------- INT 15 - Advanced Power Management Specification - SYSTEM STAND-BY AX = 5307h CX = 0001h BX = 0001h (device ID for all power-managed devices) Return: CF clear Notes: puts the entire system into stand-by mode; normally called in response to a System Stand-by Request notification after any necessary processing, but may also be invoked at the caller's discretion should not be called from within a hardware interrupt handler to avoid reentrance problems the stand-by state is typically exited on an interrupt SeeAlso: AX=4280h,AX=5307h/CX=0002h/BX=0001h,AX=530Bh --------p-155307CX0002----------------------- INT 15 - Advanced Power Management Specification - SUSPEND SYSTEM AX = 5307h CX = 0002h BX = 0001h (device ID for all power-managed devices) Return: after system is resumed CF clear Notes: puts the entire system into a low-power suspended state; normally called in response to a Suspend System Request notification after any necessary processing, but may also be invoked at the caller's discretion should not be called from within a hardware interrupt handler to avoid reentrance problems the caller may need to update its date and time values because the system could have been suspended for a long period of time SeeAlso: AX=5307h/CX=0001h/BX=0001h,AX=530Bh --------p-155308----------------------------- INT 15 - Advanced Power Management Spec - ENABLE/DISABLE POWER MANAGEMENT AX = 5308h BX = device ID for all devices power-managed by APM 0001h (APM v1.1) FFFFh (APM v1.0) CX = new state 0000h disabled 0001h enabled Return: CF clear if successful CF set on error AH = error code (01h,03h,09h,0Ah,0Bh) (see #0359) Notes: when power management is disabled, the system BIOS will not automatically power down devices, enter stand-by or suspended mode, or perform any power-saving actions in response to AX=5305h calls should not be called from within a hardware interrupt handler to avoid reentrance problems SeeAlso: AX=5309h,AX=530Dh,AX=530Fh --------p-155309----------------------------- INT 15 - Advanced Power Management Specification - RESTORE POWER-ON DEFAULTS AX = 5309h BX = device ID for all devices power-managed by APM 0001h (APM v1.1) FFFFh (APM v1.0) Return: CF clear if successful CF set on error AH = error code (09h) (see #0359) Note: should not be called from within a hardware interrupt handler to avoid reentrance problems SeeAlso: AX=5308h --------p-15530ABX0001----------------------- INT 15 - Advanced Power Management Specification - GET POWER STATUS AX = 530Ah BX = 0001h (device ID for all devices power-managed by APM) Return: CF clear if successful BH = AC line status 00h off-line 01h on-line 02h on backup power (APM v1.1) FFh unknown other reserved BL = battery status (see #0362) CH = battery flag (APM v1.1) (see #0363) CL = remaining battery life, percentage 00h-64h (0-100) percentage of full charge FFh unknown DX = remaining battery life, time (APM v1.1) (see #0364) CF set on error AH = error code (09h) (see #0359) Note: should not be called from within a hardware interrupt handler to avoid reentrance problems (Table 0362) Values for APM v1.0+ battery status: 00h high 01h low 02h critical 03h charging FFh unknown other reserved Bitfields for APM v1.1 battery flag: Bit(s) Description (Table 0363) 0 high 1 low 2 critical 3 charging 4-6 reserved 7 no system battery Note: all bits set (FFh) if unknown Bitfields for APM v1.1 remaining battery life: Bit(s) Description (Table 0364) 15 time units: 0=seconds, 1=minutes 14-0 battery life in minutes or seconds Note: all bits set (FFFFh) if unknown --------p-15530B----------------------------- INT 15 - Advanced Power Management Specification - GET POWER MANAGEMENT EVENT AX = 530Bh Return: CF clear if successful BX = event code (see #0365) CF set on error AH = error code (03h,0Bh,80h) (see #0359) Notes: although power management events are often asynchronous, notification will not be made until polled via this call to permit software to only receive event notification when it is prepared to process power management events; since these events are not very time- critical, it should be sufficient to poll once or twice per second the critical resume notification is made after the system resumes from an emergency suspension; normally, the system BIOS only notifies its partner that it wishes to suspend and relies on the partner to actually request the suspension, but no notification is made on an emergency suspension should not be called from within a hardware interrupt handler to avoid reentrance problems SeeAlso: AX=5307h,AX=5307h/BX=0001h/CX=0001h,AX=5307h/BX=0001h/CX=0002h (Table 0365) Values for APM event code: 0001h system stand-by request 0002h system suspend request 0003h normal resume system notification 0004h critical resume system notification 0005h battery low notification ---APM v1.1--- 0006h power status change notification 0007h update time notification 0008h critical system suspend notification 0009h user system standby request notification 000Ah user system suspend request notification 000Bh system standby resume notification 000Ch-00FFh reserved system events 01xxh reserved device events 02xxh OEM-defined APM events 0300h-FFFFh reserved --------p-15530C----------------------------- INT 15 - Advanced Power Management v1.1 - GET POWER STATE AX = 530Ch BX = device ID (see #0360) Return: CF clear if successful BX = system state ID (see #0361) CF set on error AH = error code (01h,09h) (see #0359) SeeAlso: AX=5307h --------p-15530D----------------------------- INT 15 - Advanced Power Management v1.1 - EN/DISABLE DEVICE POWER MANAGEMENT AX = 530Dh BX = device ID (see #0360) CX = function 0000h disable power management 0001h enable power management Return: CF clear if successful CF set on error AH = error code (01h,03h,09h,0Ah,0Bh) (see #0359) SeeAlso: AX=5308h,AX=530Fh --------p-15530E----------------------------- INT 15 - Advanced Power Management v1.1 - DRIVER VERSION AX = 530Eh BX = device ID of system BIOS (0000h) CH = APM driver major version (BCD) CL = APM driver minor version (BCD) Return: CF clear if successful AH = APM connection major version (BCD) AL = APM connection minor version (BCD) CF set on error AH = error code (03h,09h,0Bh) (see #0359) SeeAlso: AX=5300h --------p-15530F----------------------------- INT 15 - Advanced Power Management v1.1 - ENGAGE/DISENGAGE POWER MANAGEMENT AX = 530Fh BX = device ID (see #0360) CX = function 0000h disengage power management 0001h engage power management Return: CF clear if successful CF set on error AH = error code (01h,09h) (see #0359) Note: unlike AX=5308h, this call does not affect the functioning of the APM BIOS SeeAlso: AX=5308h,AX=530Dh --------p-155380BH00------------------------- INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE AX = 5380h BH = 00h Return: CF clear if successful AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH) BL = sustdbymode (see #0366) SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh Bitfields for APM SL sustdbymode: Bit(s) Description (Table 0366) 2 ??? 1 Auto Power Off Timer Enable (APWR_TMR_EN) 0 ??? --------p-155380BH01------------------------- INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE AX = 5380h BH = 01h BL = sustdbymode (see #0366) Return: CF clear if successful SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh --------p-155380BH02------------------------- INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER AX = 5380h BH = 02h Return: CF clear if successful SI:DI = timer count in seconds (actually 1.024 seconds) Desc: reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh --------p-155380BH03------------------------- INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER AX = 5380h BH = 03h SI:DI = timer count in seconds (actually 1.024 seconds) Return: CF clear if successful Desc: sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers Note: the maximum timer count is 268431 seconds SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh --------p-155380BH04------------------------- INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER AX = 5380h BH = 04h Return: CF clear if successful SI:DI = timer count in seconds (actually 1.024 seconds) Desc: reads the value of 82360SL APWR_TMRH & APWR_TMRL registers SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh --------p-155380BH05------------------------- INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER AX = 5380h BH = 05h SI:DI = timer count in seconds (actually 1.024 seconds) Return: CF clear if successful Desc: sets the value of 82360SL APWR_TMRH & APWR_TMRL registers Note: the maximum timer count is 134213 seconds SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh --------p-155380BH06------------------------- INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION AX = 5380h BH = 06h Return: CF clear if successful BL = resume condition (see #0367) Desc: reads the value of 82360SL RESUME_MASK register SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh Bitfields for APM SL resume condition: Bit(s) Description (Table 0367) 7-2 reserved (0) 1 alarm enabled (resume on CMOS alarm) 0 ring enabled --------p-155380BH07------------------------- INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION AX = 5380h BH = 07h BL = resume condition (see #0367) Return: CF clear if successful Desc: sets the value of 82360SL RESUME_MASK register SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh --------p-155380BH08------------------------- INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME AX = 5380h BH = 08h Return: CF clear if successful CH = hours CL = minutes SI = seconds CF set on error AH = error code (see #0368) Desc: gets calendar event time from CMOS ram SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh (Table 0368) Values for APM SL error code: 02h no alarm set 03h no battery --------p-155380BH09------------------------- INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME AX = 5380h BH = 09h CH = hours CL = minutes SI = seconds Return: CF clear if successful CF set on error AH = error code (see #0368) Desc: sets calendar event time in CMOS ram, enables Alarm resume SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh --------p-155380BH0A------------------------- INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE AX = 5380h BH = 0Ah Return: CF clear if successful SI = century DI = year CH = month CL = day CF set on error AH = error code (see #0368) Desc: reads calendar event date from Extended CMOS ram SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh --------p-155380BH0B------------------------- INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE AX = 5380h BH = 0Bh SI = century DI = year CH = month CL = day Return: CF clear if successful CF set on error AH = error code (see #0368) Desc: sets calendar event date in Extended CMOS ram SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh --------p-155380BH0C------------------------- INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE AX = 5380h BH = 0Ch Return: CF clear if successful CL = CPU clock divider (1,2,4 or 8) BL = autocpumode ??? Desc: reads bits 4-5 of CPUPWRMODE register SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh --------p-155380BH0D------------------------- INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE AX = 5380h BH = 0Dh CL = CPU clock divider (1,2,4 or 8) BL = autocpumode ??? Return: CF clear if successful Desc: writes bits 4-5 of CPUPWRMODE register SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh --------p-155380BH7E------------------------- INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER AX = 5380h BH = 7Eh Return: AL = ??? 03h on A-Step 386SL BIOSes 12h on later steps BX = Control port (00B0h) SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh --------p-155380BH7F------------------------- INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK AX = 5380h BH = 7Fh Return: CF clear if successful BX = OEM identifier all other registers OEM-defined ---Intel SL Enhanced Option BIOS--- BX = 534Ch ('SL') CL = 4Fh ('O') AL = version (10h = 1.0) ---HP APM BIOS--- BX = 4850h ('HP') CX = version (0001h) CF set on error AH = error code (03h) (see #0359) SeeAlso: AX=5380h/BH=00h --------p-155380----------------------------- INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS AX = 5380h BH <> 7Fh all other registers OEM-defined Return: OEM-defined SeeAlso: AX=5380h/BH=7Fh --------X-1553B0BH00------------------------- INT 15 - Intel System Management Bus - RESERVED AX = 53B0h BH = 00h Program: the SMBus is a variant of ACCESS.bus being used by Intel and Duracell for the Smart Battery proposal, but designed to be generic enough to handle other devices besides batteries --------X-1553B0BH01------------------------- INT 15 - Intel System Management Bus - INSTALLATION CHECK AX = 53B0h BH = 01h BL = 72h ('r') CX = 6164h ('ad') Return: CF clear if installed AH = SMBus BIOS Interface Specification major version (01h) AL = SMBus BIOS Interface Specification minor version (00h) BL = number of SMBus devices present CX = 6941h ('iA') DX = vendor-specified SMBus hardware code 0000h means undefined hardware type CF set if error AH = Error code 0Ah, 86h (see #2673) Note: this function is only supported in INT 15h mode SeeAlso: AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=06h (Table 2673) Values for Intel System Management Bus error codes: 00h SMBus OK 01h SMBus connect failed 02h SMBus already connected (see also #2674) 03h SMBus disconnect failed 04h SMBus not connected 05h SMBus INT 15 interface disabled 06h SMBus device address request out of range 07h SMBus unknown failure 08h SMBus message list empty 09h SMBus message list overflow 0Ah SMBus invalid signature 10h SMBus device address not acknowledged 11h SMBus device error detected 12h SMBus device command access denied 13h SMBus unknown error 14h SMBus transaction pending 15h SMBus no transaction pending 16h SMBus request does not match pending transaction 17h SMBus device access denied 18h SMBus timeout 19h SMBus protocol not supported 1Ah SMBus busy 1Bh SMBus SMI detected 80h SMBus OK (previously unreported SMI occurred) 86h SMBus not supported (Table 2674) Values for Intel System Management Bus Already Connected sub-error codes: 01h real mode connect already established 02h 16-bit PMode connect already established 03h 32-bit PMode connect already established SeeAlso: #2673 --------X-1553B0BH02------------------------- INT 15 - Intel System Management Bus - REAL MODE CONNECT AX = 53B0h BH = 02h CX = 6941h ('iA') Return: CF clear if successful AX = SMBus Real mode code segment BX = offset of entry point into SMBus BIOS Interface CX = SMBus Real mode data segment CF set if error AH = error code (01h,02h,0Ah,86h) (see #2673) AL = sub-error code if error code is 02h (see #2674) Desc: connect to SMBus interface; once connected, all SMBus calls are made to the supplied entry point instead of INT 15 (with registers identical to those described here for INT 15) Notes: Support for this function is optional this function is only supported in INT 15 mode when implemented SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=05h --------X-1553B0BH03------------------------- INT 15 - Intel System Management Bus - 16-BIT PROTECTED-MODE CONNECT AX = 53B0h BH = 03h CX = 6941h ('iA') Return: CF clear if successful AX = SMBus 16-bit code segment (real mode base address) BX = offset of entry point into SMBus BIOS Interface CX = SMBus 16-bit data segment (real mode base address) SI = code segment length in bytes DI = data segment length in bytes CF set if error AH = error code (01h,02h,0Ah,86h) (see #2673) AL = sub-error code if error code is 02h (see #2674) Desc: connect to SMBus interface; once connected, all SMBus calls are made to the supplied entry point instead of INT 15 (with registers identical to those described here for INT 15) Notes: before calling the entry point, two descriptors must be initialized in the GDT or LDT. They must be consecutiveand be in the order of code, then data. At the time of the call, the descriptors must be valid and have CPL=0. the code descriptor must be ring-0 privilege this function is only supported in INT 15 mode SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=04h,AX=53B0h/BH=05h --------X-1553B0BH04------------------------- INT 15 - Intel System Management Bus - 32-BIT PROTECTED-MODE CONNECT AX = 53B0h BH = 04h CX = 6941h ('iA') Return: CF clear if successful AX = SMBus 32-bit code segment (real mode base address) EBX = offset of entry point into SMBus BIOS Interface CX = SMBus 16-bit code segment (real mode base address) DX = SMBus data segment (real mode base address) SI = code segment length in bytes DI = data segment length in bytes CF set if error AH = error code (01h,02h,0Ah,86h) (see #2673) AL = sub-error code if error code is 02h (see #2674) Desc: connect to SMBus interface; once connected, all SMBus calls are made to the supplied entry point instead of INT 15 (with registers identical to those described here for INT 15) Notes: before calling the entry point, two descriptors must be initialized in the GDT or LDT. They must be consecutive and be in the order of 32-bit code, 16-bit code, then data. At the time of the call, the descriptors must be valid and have CPL=0. the code descriptors must be ring-0 privilege this function is only supported in INT 15 mode SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=05h --------X-1553B0BH05------------------------- INT 15 - Intel System Management Bus - DISCONNECT AX = 53B0h BH = 05h CX = 6941h ('iA') Return: CF clear if successful AH = 00h (SMBus OK) CF set if error AH = error code (03h,04h,05h,0Ah,86h) (see #2673) Note: this function is supported in connected mode (far CALL entry point) only SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h --------X-1553B0BH06------------------------- INT 15 - Intel System Management Bus - DEVICE ADDRESS AX = 53B0h BH = 06h BL = position in list to report CH = 6941h ('iA') Return: CF clear if successful AH = 00h (SMBus OK) BH = number of SMBus devices BL = SMBus Device Address of device at position BL in list CF set if error AH = error code (06h,0Ah,86h) (see #2673) Desc: retrieves already assigned SMBus device addresses Note: this function is supported in INT 15h mode only --------X-1553B0BH07------------------------- INT 15 - Intel System Management Bus - CRITICAL MESSAGES AX = 53B0h BH = 07h CX = 6941h ('iA') Return: CF clear if successful AH = 00h (SMBus OK) AL = device address BX = device message CF set if error AH = error code (05h,07h,08h,09h,0Ah,86h) (see #2673) Desc: retrieves oldest queued critical message from an SMBus device to the host Notes: up to five messages are queued; if the queue is full, messages will be lost and error 09h returned this function is supported in INT 15h mode only --------X-1553B0BH08------------------------- INT 15 - Intel System Management Bus - RESERVED AX = 53B0h BH = 08h-0Fh --------X-1553B0BH10------------------------- INT 15 - Intel System Management Bus - REQUEST AX = 53B0h BH = 10h BL = protocol (see #2675) CH = device address CL = device command DH = MSB Data or block length (for BlockWrite) DL = LSB Data or first byte of block (for BlockWrite) Return: CF clear if successful AH = 00h or 80h (SMBus OK) (80h indicates a previously unreported SMI took place) CF set if error AH = error code (05h,10h,11h,12h,13h,14h,17h,19h,1Ah,86h) (see #2673) Desc: request access to a device on the SMBus SeeAlso: AX=53B0h/BH=11h, AX=53B0h/BH=13h (Table 2675) Values for Intel System Management Bus protocol codes: 00h Quick Command 01h Send Byte 02h Receive Byte 03h Write Byte 04h Read Byte 05h Write Word 06h Read Word 07h Block Write 08h Block Read 09h Process Call 0Ah-FFh reserved --------X-1553B0BH11------------------------- INT 15 - Intel System Management Bus - REQUEST CONTINUATION AX = 53B0h BH = 11h BL = protocol (see #2675) CH = device address CL = number of valid bytes in DX (1 or 2) DH = MSB Data (CL = 1 or 2) DL = LSB Data (CL = 2) Return: CF clear if successful AH = 00h (SMBus OK) CL = SMBus status 00h SMBus hardware not ready for more data 01h SMBus hardware ready for 2 more data bytes CF set if error AH = error code (05h,11h,13h,15h,16h,18h,1Bh,86h) (see #2673) Desc: continue WriteBlock protocol started with function 10h SeeAlso: AX=53B0h/BH=10h, AX=53B0h/BH=13h --------X-1553B0BH12------------------------- INT 15 - Intel System Management Bus - REQUEST ABORT AX = 53B0h BH = 12h BL = protocol (see #2675) CH = device address CL = device command Return: CF clear if successful AH = 00h (SMBus OK) CF set if error AH = error code (05h,13h,15h,16h,86h) (see #2673) Desc: stop the currently pending SMBus request; usually used to terminate a request after an SMI Detected error --------X-1553B0BH13------------------------- INT 15 - Intel System Management Bus - REQUEST DATA AND STATUS AX = 53B0h BH = 13h BL = protocol (see #2675) CH = device address CL = device command Return: CF clear if successful AH = 00h (SMBus OK) CH = status 00h no data pending, transaction complete 01h no data pending, transaction continues 02h data pending CL = number of valid bytes in DX (0-2) DH = MSB data DL = LSB data CF set if error AH = error code (05h,10h,11h,13h,15h,16h,18h,1Bh,86h) (see #2673) Desc: determine when a transaction is complete, gather data returned by read transactions Note: for Block Read protocol (08h), first call returns block length in DH and the first byte of the block in DL --------T-155400----------------------------- INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION AX = 5400h ES:BX -> device information tables DI:DX -> dispatcher entry point Note: called by OmniView to notify programs loaded before OmniView of state changes inside OmniView SeeAlso: AX=5407h,INT 2F/AX=DE00h --------T-155401----------------------------- INT 15 C - Omniview Multitasker - PROCESS CREATION AX = 5401h ES:BX = process handle Note: called by OmniView to notify programs loaded before OmniView of state changes inside OmniView SeeAlso: AX=5402h,INT 2F/AX=DE04h --------T-155402----------------------------- INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION AX = 5402h ES:DX = process handle Note: called by OmniView to notify programs loaded before OmniView of state changes inside OmniView SeeAlso: AX=5401h,INT 2F/AX=DE05h --------T-155403----------------------------- INT 15 C - Omniview Multitasker - SAVE AX = 5403h ES:DX = process swapping out Note: called by OmniView to notify programs loaded before OmniView of state changes inside OmniView SeeAlso: AX=5404h,INT 2F/AX=DE08h --------T-155404----------------------------- INT 15 C - Omniview Multitasker - RESTORE AX = 5404h ES:DX = process swapping in Note: called by OmniView to notify programs loaded before OmniView of state changes inside OmniView SeeAlso: AX=5403h,INT 2F/AX=DE09h --------T-155405----------------------------- INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND AX = 5405h ES:DX = process swapping in Note: called by OmniView to notify programs loaded before OmniView of state changes inside OmniView SeeAlso: AX=5406h --------T-155406----------------------------- INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND AX = 5406h ES:DX = process swapping in Note: called by OmniView to notify programs loaded before OmniView of state changes inside OmniView SeeAlso: AX=5405h --------T-155407----------------------------- INT 15 C - Omniview Multitasker - EXIT NOTIFICATION AX = 5407h Note: called by OmniView to notify programs loaded before OmniView of state changes inside OmniView SeeAlso: AX=5400h,INT 2F/AX=DE03h --------b-1560------------------------------------ INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED AH = 60h AL = new speed 00h normal (8 MHz) 01h Slow Mode 1 (4 MHz) 02h Slow Mode 2 (2 MHz) 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: AX=6301h --------p-156000----------------------------- INT 15 U HP 100LX/200LX - GET MAIN BATTERY LEVEL AX = 6000h Return: AX = battery level Note: multiply the returned value with 1Bh and add 622h to get millivolts SeeAlso: AX=6001h,AX=6002h,AX=6003h,AX=6004h --------p-156001----------------------------- INT 15 U HP 100LX/200LX - GET BACKUP BATTERY LEVEL AX = 6001h Return: AX = battery level Note: multiply the returned value with 1Bh and add 622h to get millivolts SeeAlso: AX=6000h,AX=6002h --------p-156002----------------------------- INT 15 U HP 100LX/200LX - GET POWER INFO AX = 6002h Return: AL = power settings (see #0369) SeeAlso: AX=6000h,AX=6003h,AX=6004h Bitfields for power settings: Bit(s) Description (Table 0369) 0-1 unused ??? 2 card battery status low (OK if bit clear) 3 battery charging off (disabled if bits 3-5 clear) 4 battery charging slow 5 battery charging fast 6 power adaptor active 7 battery type NiCad (alkaline if bit clear) --------p-156003----------------------------- INT 15 U HP 100LX/200LX - SET MAIN BATTERY TYPE AX = 6003h BL = battery type 00h alkaline 01h NiCad SeeAlso: AX=6000h,AX=6004h --------p-156004----------------------------- INT 15 U HP 100LX/200LX - SET BATTERY CHARGING MODE AX = 6004h BL = charging 00h disabled 01h enabled SeeAlso: AX=6000h,AX=6003h --------b-1561------------------------------------ INT 15 - HUNTER 16 - GET POWER LEVEL AH = 61h Return: AH = percentage of full power left (0..100) Desc: determine how much battery power is left SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER" --------b-1561------------------------------- INT 15 U HP 100LX/200LX - SET ANNOUNCIATORS POSITION AH = 61h AL = position (20h = left, 60h = right) Note: The announciators are the indicator symbols for the Shift and Fn keys in the bottom line SeeAlso: AH=62h"HP",INT 16/AH=02h --------b-1562------------------------------------ INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD AH = 62h AL = level (00h 5%, 01h 10%, ... 12h 95%) BX = interval between power low warnings in seconds (1..600) Return: AH = Status Desc: set the level (relative to full power) when power-low warnings begin and the interval between the warnings SeeAlso: AH=61h,AH=65h,AH=66h --------b-1562------------------------------- INT 15 U HP 100LX/200LX - SET DISPLAY CONTRAST AH = 62h BL = contrast (00h-1Fh, 1Fh is the darkest) SeeAlso: AH=47h"HP",AH=61h"HP" --------b-156300---------------------------------- INT 15 - HUNTER 16 - GET IDLE TIMEOUT AX = 6300h Return: AH = status BX = timeout in seconds (0-3600) Desc: get the idle timeout value, the interval without keyboard or communications activity before the system shuts down SeeAlso: AX=6301h --------b-156301---------------------------------- INT 15 - HUNTER 16 - SET IDLE TIMEOUT AX = 6301h BX = timeout in seconds (0-3600) Desc: sets the idle timeout value, the interval without keyboard or communications activity before the system shuts down SeeAlso: AX=6300h --------b-1564------------------------------------ INT 15 - HUNTER 16 - CONTROL RESUME MODE AH = 64h AL = new state 00h disable Resume mode 01h enable Resume mode Return: AH = status Desc: turn Resume mode on or off. In Resume mode the system starts in the application that was running when it shut down as if nothing had happened. SeeAlso: AH=67h,AH=68h,AH=69h --------b-1565------------------------------------ INT 15 - HUNTER 16 - AUTHORISE CHARGING AH = 65h AL = charging level 01h charging not allowed 02h charging allowed until power down 03h charging allowed until batteries changed or fail. Ask user if charging is still allowed on next poweron 04h charging allowed indefinitely BX = 0203h CX = 0405h DX = 0607h Return: AH = status SeeAlso: AH=66h,AH=68h --------b-1566------------------------------------ INT 15 - HUNTER 16 - SET BATTERY LEVEL AH = 66h AL = level in percent of maximum (0..100) Return: AH = status SeeAlso: AH=61h,AH=65h --------b-1567------------------------------------ INT 15 - HUNTER 16 - CONTROL STOP MODE AH = 67h AL = mode when waiting for input 00h use STOP mode (allows communication) 01h use HALT mode (disallows communication) Return: AH = status Desc: select the power save mode to use when waiting for input SeeAlso: AH=69h --------b-1568------------------------------------ INT 15 - HUNTER 16 - REQUEST POWER DOWN AH = 68h Desc: turns off the Hunter 16 if power down is allowed (see AH=69h) SeeAlso: AH=69h --------b-1569------------------------------------ INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY AH = 69h AL = mode 00h inhibit power down 01h allow power down Return: AH = status SeeAlso: AH=67h,AH=68h,AH=6Ah --------b-156A------------------------------------ INT 15 - HUNTER 16 - CONTROL SLOW MODE AH = 6Ah AL = mode 00h inhibit Slow mode 01h allow Slow mode Return: AH = status SeeAlso: AH=69h --------b-156B------------------------------------ INT 15 - HUNTER 16 - GET ROM BIOS VERSION AH = 6Bh Return: BH = version number (ASCII) BL = release number (ASCII) CH = minor release number (ASCII) CL = minor release number (ASCII) SeeAlso: AH=6Ch --------b-156C------------------------------------ INT 15 - HUNTER 16 - GET SERIAL NUMBER AH = 6Ch Return: BL:CX = BCD serial number Note: when shipped, all Hunter 16s have the same Serial Number, but a different number can be stored (see AH=72h) SeeAlso: AH=6Bh,AH=72h --------b-156D------------------------------------ INT 15 - HUNTER 16 - GET EVENT DETAIL AH = 6Dh Return: AH = 00h if successful CX:BX = event flags bit 0..31 (see #0370) Note: this function allows testing for events SeeAlso: AH=6Eh,AH=6Fh Bitfields for HUNTER 16 events: Bit(s) Description (Table 0370) 6 RI received 5 RTC Alarm 4 data received on COM2 3 data received on COM1 2 error on COM2 1 error on COM1 0 PWR button pressed --------b-156E------------------------------------ INT 15 - HUNTER 16 - ENABLE/TRAP EVENT AH = 6Eh AL = Software Interrupt 00h do not trap event else trap as software interrupt number AL BH = event number (see AH=6Dh) BL = enable mask 00h disable event 01h enable event Return: AH = 00h if successful SeeAlso: AH=6Dh,AH=6Fh --------b-156F------------------------------------ INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT AH = 6Fh AL = event number (see AH=6Dh) Return: AH = 00h if successful Desc: Acknowledges the event, so the next similar event can be detected SeeAlso: AH=6Dh"HUNTER",AH=6Eh --------b-1570------------------------------------ INT 15 - HUNTER 16 - CONTROL SOUND AH = 70h AL = new state 00h disable sound else enable sound 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. ----------157000----------------------------- INT 15 - Tandy 1000SL/TL - READ FROM EEPROM AX = 7000h BL = number of word to read (00h-3Fh) Return: CF clear if function supported DX = contents of EEPROM word Note: newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in the clock chip to store system configuration information SeeAlso: AX=7001h ----------157001----------------------------- INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM AX = 7001h BL = number of word to read (00h-3Fh) DX = new value for EEPROM word Return: CF clear if function supported Note: the EEPROMs are normally written only by the system setup program; changing the values can badly mess up a Tandy SeeAlso: AX=7000h ----------157002----------------------------- INT 15 U - Tandy 1000 Model ??? - GET ROM PAGE AX = 7002h Return: AL = ROM page mapped at 0E0000h (0-6 (13?)) Note: some Tandy machines have DOS and DeskMate in a 512k paged ROM. The BIOS uses this call to determine what ROM page is mapped in the 64k segment at 0E0000h. the 1000TL has 8 64k ROM pages; page 7 is permanently mapped at 0F0000h. There may be 16 32k ROM pages on other systems. SeeAlso: AX=7003h,INT E0"DeskMate" ----------157003----------------------------- INT 15 U - Tandy 1000 Model ??? - SET ROM PAGE AX = 7003h DL = ROM page to be mapped at 0E0000h (0-6 (13?)) Return: CF clear if valid ROM page specified Note: Some Tandy machines have DOS and DeskMate in a 512k paged ROM. The BIOS uses this call to map ROM pages in the 64k segment at 0E0000h. The 1000TL has 8 64k ROM pages; page 7 is permanently mapped at 0F0000h. There may be 16 32k ROM pages on other systems. SeeAlso: AX=7002h,INT E0"DeskMate" --------b-1571------------------------------------ INT 15 - HUNTER 16 - SELECT POWER UP KEYS AH = 71h BL = column BH = row AL = column switch (00h disable, 01h enable) CL = row switch (00h disable, 01h enable) Return: AH = status SeeAlso: AH=7Bh,AH=88h --------b-157200---------------------------------- INT 15 - HUNTER 16 - RESET SERIAL NUMBER AX = 7200h Return: AH = 00h if successful Desc: reset the serial number to the default serial number present when the Hunter 16 was shipped SeeAlso: AH=6Ch,AH=72h --------b-1572------------------------------------ INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER AH = 72h AL nonzero DS:BX -> new serial number (6 ASCII digits) Return: AH = 00h if successful Desc: install a new serial number SeeAlso: AH=6Ch,AX=7200h --------b-1573------------------------------------ INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL AH = 73h AL = drive (0: A:, 1: B:) Return: AH = status 00h successful FFh Oracle GT drive not connected AL = power level in percent of maximum (0..100) Desc: get the power remaining in the Oracle GT batteries SeeAlso: AH=61h --------b-1574------------------------------------ INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE AH = 74h AL = new level 01h off 02h unchanged 03h change level BL = desired level (00h-7Fh) Return: AH = status Desc: select the backlight level to use when the Hunter is next turned on SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h --------b-1575------------------------------------ INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE AH = 75h AL = new level 01h off 02h unchanged 03h change level BL = desired level (00h-7Fh) Return: AH = status Desc: select the LCD contrast level to use when the Hunter is next turned on SeeAlso: AH=63h,AH=74h --------b-1576------------------------------------ INT 15 - HUNTER 16 - CONTROL POWER SAVE AH = 76h BX = power save control (see #0371) SeeAlso: AH=74h Bitfields for HUNTER 16 power save control: Bit(s) Description (Table 0371) 0 power save enabled 1 inhibit power save when waiting for COM1 data 2 inhibit power save when waiting for COM2 data 3 inhibit power save when waiting for data from barcode wand 4 inhibit power up on timer tick --------b-1579------------------------------------ INT 15 - HUNTER 16 - REDIRECT LPT1 AH = 79h AL = port to which to redirect (00h COM1, 01h COM2) --------b-157A------------------------------------ INT 15 - HUNTER 16 - INVOKE HOT KEY AH = 7Ah Desc: this function has the same effect as pressing the HOT key SeeAlso: AH=7Bh --------b-157B------------------------------------ INT 15 - HUNTER 16 - CONTROL HOT KEY AH = 7Bh AL = 00h prevent HOT key else allow HOT key Desc: Allow or prevent the HOT key function which is used to examine and change the Hunter setup SeeAlso: AH=71h,AH=7Ah,AH=7Ch --------b-157C------------------------------------ INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION AH = 7Ch AL = 00h prevent HOT key power option else allow HOT key power option Desc: allow or prevent changing the power options SeeAlso: AH=7Bh,AH=7Dh --------b-157D------------------------------------ INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF AH = 7Dh AL = 00h turn off after 10 warnings else never turn off Desc: specify whether the Hunter 16 turns off after 10 low power warnings SeeAlso: AH=7Ch --------b-157E------------------------------------ INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM) AH = 7Eh AL = 00h do not prompt else prompt Desc: select whether the user is prompted for the battery state if the battery cap has been off when the system is turned on SeeAlso: AH=7Fh --------b-157F------------------------------------ INT 15 - HUNTER 16 - SET BATTERY TYPE (APM) AH = 7Fh AL = battery type 00h non-rechargeable else rechargeable SeeAlso: AH=7Eh --------B-1580------------------------------- INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS) AH = 80h BX = device ID CX = process ID CF clear Return: CF clear if successful AH = 00h CF set on error AH = status (see #0372) Note: this function should be hooked by a multitasker which wishes to keep track of device ownership; the default BIOS handler merely returns successfully SeeAlso: AH=81h,AH=82h (Table 0372) Values for status: 80h invalid command (PC,PCjr) 86h function not supported (XT) --------b-1580------------------------------------ INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM) AH = 80h AL = function 00h get Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA) else set BL = battery capacity (same as AL above) SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER" --------B-1581------------------------------- INT 15 C - OS HOOK - DEVICE CLOSE AH = 81h BX = device ID CX = process ID CF clear Return: CF clear if successful AH = 00h CF set on error AH = status (see #0372) Note: this function should be hooked by a multitasker which wishes to keep track of device ownership; the default BIOS handler merely returns successfully SeeAlso: AH=80h,AH=82h --------b-1581------------------------------------ INT 15 - HUNTER 16 - CONTROL POWER OUTPUT AH = 81h AL = new state of power output (00h off, nonzero on) Desc: turn the +5V low power output on or off SeeAlso: AH=80h"HUNTER" --------B-1582------------------------------- INT 15 C - OS HOOK - PROGRAM TERMINATION AH = 82h BX = process ID CF clear Return: CF clear if successful AH = 00h CF set on error AH = status (see #0372) Notes: closes all devices opened by the given process ID with function 80h this function should be hooked by a multitasker which wishes to keep track of device ownership; the default BIOS handler merely returns successfully SeeAlso: AH=80h,AH=81h --------b-1582------------------------------------ INT 15 - HUNTER 16 - SOUND OUTPUT AH = 82h DX = length (duration in seconds = DX * 666670 / frequency) BX = pitch (see #0373) Desc: Sound the tone specified in BX for the duration in DX SeeAlso: AX=1019h (Table 0373) Values for HUNTER 16 sound pitch: BX(dec) Note Frequency BX(dec) Note Frequency 425 G 1568.000 1515 A 440.000 451 F# 1479.503 1605 G# 415.307 477 F 1396.900 1701 G 392.000 506 E 1318.500 1802 F# 369.998 536 D# 1244.523 1909 F 349.230 568 D 1174.700 2022 E 329.630 601 C# 1108.749 2143 D# 311.127 637 C 1046.500 2270 D 293.660 675 B 958.770 2405 C# 277.183 715 A# 932.329 2548 MID C 261.630 758 A 880.000 2700 B 246.940 803 G# 830.609 2860 A# 233.081 850 G 783.990 3030 A 220.000 901 F# 739.990 3210 G# 207.654 954 F 698.460 3401 G 196.000 1011 E 659.260 3604 F# 184.996 1071 D# 622.257 3818 F 174.610 1135 D 587.330 4045 E 164.810 1203 C# 554.365 4286 D# 155.560 1274 C 523.250 4540 D 146.830 1350 B 493.880 4668 C# 142.827 1430 A# 466.162 4803 C 138.810 --------B-1583------------------------------- INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+) AH = 83h AL = subfunction 00h set interval CX:DX = microseconds to delay ES:BX -> byte whose high bit is to be set at end of interval 01h cancel wait interval Return: CF set on error or function already busy AH = status 80h invalid command (PC,PCjr) 86h function not supported (XT and later) CF clear if successful Notes: the resolution of the wait period is 977 microseconds on most systems because most BIOSes use the 1/1024 second fast interrupt from the AT real-time clock chip which is available on INT 70 IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h SeeAlso: AH=41h,AH=86h,INT 70 --------b-1583------------------------------------ INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION AH = 83h AL = state of LCD window (00h disabled, nonzero enabled) Desc: Enable/disable the facility where the displayed window tracks the cursor output to keep the focus visible --------B-1584------------------------------- INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS) AH = 84h DX = subfunction 0000h read joystick switches Return: AL bits 7-4 = switch settings 0001h read positions of joysticks Return: AX = X position of joystick A BX = Y position of joystick A CX = X position of joystick B DX = Y position of joystick B Return: CF set on error AH = status (see #0372) CF clear if successful Notes: if no game port is installed, subfunction 0000h returns AL=00h (all switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h a 250kOhm joystick typically returns 0000h-01A0h SeeAlso: AH=84h"V20-XT-BIOS" --------b-1584------------------------------- INT 15 - V20-XT-BIOS - JOYSTICK SUPPORT AH = 84h DX = subfunction 0000h read joystick switches Return: AL bits 7-4 = switch settings other: read positions of joysticks as indicated by bits 0-3 Return: AX = X position of joystick A (if DX bit 0 set) BX = Y position of joystick A (if DX bit 1 set) CX = X position of joystick B (if DX bit 2 set) DX = Y position of joystick B (if DX bit 3 set) Return: CF set on error AH = status (see #0372) CF clear if successful Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter Koehlmann / c't magazine SeeAlso: AH=84h"PS",INT 10/AH=0Eh/CX=ABCDh --------b-158400---------------------------------- INT 15 - HUNTER 16 - GET DISKETTE PORT AX = 8400h BH = Drive (0: A:, 1: B:) Return: AL = Port (0: COM1, >0: COM2) Desc: return the COM port used for the floppy drive SeeAlso: AX=8401h --------b-158401---------------------------------- INT 15 - HUNTER 16 - SET DISKETTE PORT AX = 8401h BH = Drive (0: A:, 1: B:) BL = Port (0: COM1, >0: COM2) Desc: set the COM port used for the floppy drive SeeAlso: AX=8400h --------B-1585------------------------------- INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS) AH = 85h AL = SysReq key action (00h pressed, 01h released) CF clear Return: CF clear if successful AH = 00h CF set on error AH = status (see #0372) Notes: called by keyboard decode routine the default handler simply returns successfully; programs which wish to monitor the SysReq key must hook this call the SysReq key is often labeled SysRq SeeAlso: INT 09 --------b-158500---------------------------------- INT 15 - HUNTER 16 - RESTORE POWER MENU (APM) AX = 8500h Desc: restore the standard power menu SeeAlso: AX=8501h"HUNTER" --------b-158501---------------------------------- INT 15 - HUNTER 16 - SET POWER MENU (APM) AX = 8501h BL = user software interrupt number Desc: install an alternate power menu routine SeeAlso: AX=8500h"HUNTER" --------B-1586------------------------------- INT 15 - BIOS - WAIT (AT,PS) AH = 86h CX:DX = interval in microseconds Return: CF clear if successful (wait interval elapsed) CF set on error or AH=83h wait already in progress AH = status (see #0372) Note: the resolution of the wait period is 977 microseconds on most systems because most BIOSes use the 1/1024 second fast interrupt from the AT real-time clock chip which is available on INT 70 SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70 --------b-1586------------------------------------ INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE AH = 86h AL = function (00h get, nonzero set) BX = 1234h DS:SI -> 256-byte Attribute buffer Note: In text modes each character has its attribute byte XOR'd with the corresponding byte in the attribute table. If the attribute is 15, 15 is XOR'd with Table[15] --------B-1587------------------------------- INT 15 - SYSTEM - COPY EXTENDED MEMORY AH = 87h CX = number of words to copy (max 8000h) ES:SI -> global descriptor table (see #0375) Return: CF set on error CF clear if successful AH = status (see #0374) Notes: copy is done in protected mode with interrupts disabled by the default BIOS handler; many 386 memory managers perform the copy with interrupts enabled this function is incompatible with the OS/2 compatibility box SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h (Table 0374) Values for extended-memory copy status: 00h source copied into destination 01h parity error 02h interrupt error 03h address line 20 gating failed 80h invalid command (PC,PCjr) 86h unsupported function (XT,PS30) Format of global descriptor table: Offset Size Description (Table 0375) 00h 16 BYTEs zeros (used by BIOS) 10h WORD source segment length in bytes (2*CX-1 or greater) 12h 3 BYTEs 24-bit linear source address, low byte first 15h BYTE source segment access rights (93h) 16h WORD zero 18h WORD destination segment length in bytes (2*CX-1 or greater) 1Ah 3 BYTEs 24-bit linear destination address, low byte first 1Dh BYTE destination segment access rights (93h) 1Eh 18 BYTEs zeros (used by BIOS) --------b-1587------------------------------------ INT 15 - HUNTER 16 - SET INT 72h VECTOR AH = 87h DS:DX = new service routine Desc: set the INT 72h vector which is called in 2 cases: - when the machine is about to turn off or reboot, INT 72h is called with AH=0 - when the machine is powering up INT 72h is called with AH=01h Note: the actual INT 72h vector must also be changed with INT 21/AH=25h --------B-1588------------------------------- INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+) AH = 88h Return: CF clear if successful AX = number of contiguous KB starting at absolute address 100000h CF set on error AH = status 80h invalid command (PC,PCjr) 86h unsupported function (XT,PS30) Notes: TSRs which wish to allocate extended memory to themselves often hook this call, and return a reduced memory size. They are then free to use the memory between the new and old sizes at will. the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h for memory beyond 16MB not all BIOSes correctly return the carry flag, making this call unreliable unless one first checks whether it is supported through a mechanism other than calling the function and testing CF SeeAlso: AH=87h,AH=C7h,AX=DA88h --------b-1588------------------------------------ INT 15 - HUNTER 16 - GET POWER UP KEYS AH = 88h Return: AH = 00h BX = column CL = row SeeAlso: AH=71h --------B-1589------------------------------- INT 15 - SYSTEM - SWITCH TO PROTECTED MODE AH = 89h BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts) BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts) ES:SI -> GDT for protected mode (see #0376) Return: CF set on error AH = FFh error enabling address line 20 CF clear if successful AH = 00h in protected mode at specified address Notes: BL and BH must be multiples of 8 the protected-mode CS must reference the same memory as the CS this function is called from because execution continues with the address following the interrupt call SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch Format of BIOS switch-to-protected-mode Global Descriptor Table: Offset Size Description (Table 0376) 00h 8 BYTEs null descriptor (initialize to zeros) 08h 8 BYTEs GDT descriptor (see #0377) 10h 8 BYTEs IDT descriptor 18h 8 BYTEs DS descriptor 20h 8 BYTEs ES 28h 8 BYTEs SS 30h 8 BYTEs CS 38h 8 BYTEs uninitialized, used to build descriptor for BIOS CS Format of segment descriptor table entry: Offset Size Description (Table 0377) 00h WORD segment limit, low word 02h 3 BYTEs segment base address, low 24 bits 05h BYTE access mode (see #0378) 06h BYTE 386+ extended access mode (see #0379) 07h BYTE 386+ segment base address, high 8 bits SeeAlso: #0376,INT 2C/AX=0002h,INT 31/AX=0009h Bitfields for segment descriptor table access mode field: Bit(s) Description (Table 0378) 3-0 segment type 4 descriptor type (1 = application, 0 = system) 6-5 descriptor privilege level 7 segment is present in RAM SeeAlso: #0377,#0379 Bitfields for 386+ segment descriptor table extended access mode field: Bit(s) Description (Table 0379) 3-0 high 4 bits of segment limit 4 available 5 reserved (0) 6 default operation size (1 = 32 bits, 0 = 16 bits) 7 granularity (1 = 4K, 0 = byte) SeeAlso: #0377,#0378,#1346 --------b-158900---------------------------------- INT 15 - HUNTER 16 - GET POWER MODE AX = 8900h Return: AH = 00h BL = current power mode 00h Standard Power Mode (SPM) 01h Advanced Power Mode (APM) SeeAlso: AX=8901h --------b-158901---------------------------------- INT 15 - HUNTER 16 - SET POWER MODE AX = 8901h BL = new mode 00h Standard Power Mode (SPM) 01h Advanced Power Mode (APM) Return: AH = 00h SeeAlso: AX=8900h --------b-158A------------------------------------ INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM) AH = 8Ah AL = new state of Power Input (00h disabled, nonzero enabled) SI = 1234h DI = 5678h Return: AH = status 00h success FFh failure Desc: Enable or disable Power Input. When Power Input is disabled the AC adaptor will neither charge the batteries nor supply power to the Hunter 16. Disable Power Input if using Alkaline batteries. --------b-158B------------------------------------ INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE AH = 8Bh AL = function 00h get Return: BH = Maximum charging temperature Temp = -20 + (n * 0.63) degrees Centigrade BL = Minimum charging temperature else set BH = maximum charging temperature (as above) BL = minimum charging temperature (as above) Return: AH = status 00h success FFh failure Desc: get/set the temperature interval within which the charger should operate --------b-158C------------------------------------ INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG AH = 8Ch AL = function 00h get Return: BX = which operations disable power save (see #0380) else set BX = which operations should disable power save (see #0380) SeeAlso: AH=8Dh Bitfields for HUNTER 16 operations disabling power save: Bit(s) Description (Table 0380) 0 INT 10h prevents power save 1 INT 13h prevents power save 2 INT 14h prevents power save 3 INT 15h prevents power save 4 INT 1Ah prevents power save 5 INT 21h prevents power save 6 direct write to video RAM prevents power save 7 access to 8250 UART prevents power save 8 access to 8253 (Sound) prevents power save --------b-158D------------------------------------ INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM) AH = 8Dh AL = function 00h get Return: AL = Fast Charge state (00h prevented, else allowed) nonzero set BH = Fast Charge state (00h prevent, nonzero allow) Return: AH = status 00h success FFh failure Desc: control whether Fast Charging (200ma rather than 70ma) is allowed SeeAlso: AH=8Ch --------B-1590------------------------------- INT 15 - OS HOOK - DEVICE BUSY (AT,PS) AH = 90h AL = device type (see #0381) ES:BX -> request block for type codes 80h through BFh CF clear Return: CF set if wait time satisfied CF clear if driver must perform wait AH = 00h Notes: type codes are allocated as follows: 00-7F non-reentrant devices; OS must arbitrate access 80-BF reentrant devices; ES:BX points to a unique control block C0-FF wait-only calls, no complementary INT 15/AH=91h call floppy and hard disk BIOS code uses this call to implement a timeout; for device types 00h and 01h, a return of CF set means that the timeout expired before the disk responded. this function should be hooked by a multitasker to allow other tasks to execute while the BIOS is waiting for I/O completion; the default handler merely returns with AH=00h and CF clear SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h (Table 0381) Values for device type: 00h disk 01h diskette 02h keyboard 03h PS/2 pointing device 21h waiting for keyboard input (Phoenix BIOS) 80h network FBh digital sound (Tandy) FCh disk reset (PS) FDh diskette motor start FEh printer --------B-1591------------------------------- INT 15 - OS HOOK - DEVICE POST (AT,PS) AH = 91h AL = device type (see #0381) ES:BX -> request block for type codes 80h through BFh CF clear Return: AH = 00h Note: this function should be hooked by a multitasker to allow other tasks to execute while the BIOS is waiting for I/O completion; the default handler merely returns with AH=00h and CF clear SeeAlso: AH=90h ----------15A100----------------------------- INT 15 U - AMI PCI BIOS - SET ??? FLAG AX = A100h Return: AX = 0000h CF clear BX,CX,DI may be destroyed Desc: sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in locations 3Eh and 3Fh Notes: in the examined version of the BIOS, nonzero values in AL cause it to drop through to checking the next possible value of AH, i.e. only subfunction 00h is supported also supported by Dell XPS P90 and IBM PS/PV 6384, which also use AMI BIOSes --------n-15BA10----------------------------- INT 15 - HP OmniShare - Pen Driver - REPORT PEN CONTROL AREA EVENT AX = BA10h BL = event 00h the pen left control areas 01h the pen entered the Brightness- area 02h the pen entered the Brightness+ area 03h the pen entered the Contrast- area 04h the pen entered the Contrast+ area Return: CF clear if successfully processed CF set on error (function not supported, ie. not an OmniShare BIOS) Note: The pen driver is responsible for detecting when the pen enters and leaves control areas of the OmniShare tablet, and notifying the BIOS. The BIOS manages the events, including the autorepetition, and sets the status LEDs. SeeAlso: AX=BA20h,AX=BA13h --------n-15BA11----------------------------- INT 15 - HP OmniShare - Pen Driver - SET THE COMMUNICATION LED STATE AX = BA11h BL = new LED state (00h steady, 01h flashing) Return: CF clear if successful CF set on error Note: this function is for use by communication software to give visual feedback of active communications even if the display is in standby mode. SeeAlso: AX=BA10h,AX=BA24h --------n-15BA12----------------------------- INT 15 - HP OmniShare - Pen Driver - STORE PEN BATTERY CHARGE AX = BA12h BL = new battery state (00h good, 01h low charge) Return: CF set on error CF clear if successfully stored in CMOS Note: The last report will be displayed by the Power-On Self Test the next time the OmniShare boots. This allows something meaningful to be reported even if the pen is not detected during the POST. SeeAlso: AX=BA13h --------n-15BA13----------------------------- INT 15 - HP OmniShare - Pen Driver - GET PEN BATTERY CHARGE AX = BA13h Return: CF clear if successful BL = pen battery state (00h good, 01h low charge) CF set on error Note: returns the last value set by AX=BA12h. SeeAlso: AX=BA12h --------p-15BA20----------------------------- INT 15 - HP OmniShare - STANDBY.COM - INSTALLATION CHECK AX = BA20h Return: CF clear if successful (installed) CF set on error (not installed) Notes: The display controller can enter a standby mode after a given timeout, to conserve power or (for the OmniShare) to increase the life of the backlight. A side effect of standby mode is that the communications LED turns on automatically when the display is in standby mode. This is done in hardware, and is intended to show that the unit is still on. SeeAlso: AX=BA10h,AX=BA20h,AX=BA22h,AX=BA24h,AX=BA26h --------p-15BA21----------------------------- INT 15 - HP OmniShare - STANDBY.COM - SET STANDBY DURATION AX = BA21h BL = new timeout before standby mode in minutes (01h-0Fh) 00h to disable automatic switch to standby mode Return: CF clear if successful CF set on error (function not supported) Note: The actual timeout with a GD6205 controller is ((N*64)-32) seconds, instead of (N*60) seconds as documented. SeeAlso: AX=BA20h,AX=BA22h --------p-15BA22----------------------------- INT 15 - HP OmniShare - STANDBY.COM - GET STANDBY DURATION AX = BA22h Return: CF clear if successful BL = standy duration in minutes (01h-0Fh), or 00h if disabled CF set on error (function not supported) Note: The actual timeout with a GD6205 controller is ((N*64)-32) seconds, instead of (N*60) seconds as documented. SeeAlso: AX=BA20h,AX=BA21h --------p-15BA23----------------------------- INT 15 - HP OmniShare - STANDBY.COM - TURN ON THE SCREEN IMMEDIATELY AX = BA23h Return: CF clear if successful CF set on error SeeAlso: AX=BA11h,AX=BA20h,AX=BA24h --------p-15BA24----------------------------- INT 15 - HP OmniShare - STANDBY.COM - TURN OFF THE SCREEN IMMEDIATELY AX = BA24h Return: CF clear if successful CF set on error Note: This function is not implemented yet. Reserved for future versions of the OmniShare. SeeAlso: AX=BA11h,AX=BA20h,AX=BA23h --------p-15BA25----------------------------- INT 15 - HP OmniShare - STANDBY.COM - PREPARE FOR UNINSTALL AX = BA25h Return: CF clear if successful AX = 25BAh BX = PSP of STANDBY.COM resident portion DX:CX -> previous INT 15 handler CF set on error Note: This function is used internally by the STANDBY.COM /u option, and should not be used by application programs. SeeAlso: AX=BA20h --------p-15BA26----------------------------- INT 15 - HP OmniShare - STANDBY.COM - IS THE DISPLAY IN STANDBY MODE? AX = BA26h Return: CF clear if successful AL = display state (00h active, 01h in standby mode) CF set on error (function not supported) SeeAlso: AX=BA20h,AX=BA23h --------p-15BA27----------------------------- INT 15 - HP OmniShare - STANDBY.COM - RESERVED FUNCTIONS AX = BA27h to BA2Fh Desc: reserved for future use --------b-15BC------------------------------- INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS AH = BCh Return: CF clear (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count Note: this function reads system timer channel 0 twice, then does calculations on the returned values to determine the delay loop counter needed by the BIOS for beeps and floppy timeouts SeeAlso: AX=2305h --------E-15BF00----------------------------- INT 15 - Rational Systems DOS/16M - ??? AX = BF00h ??? Return: ??? Note: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h SeeAlso: AX=BF02h --------E-15BF01----------------------------- INT 15 - Rational Systems DOS/16M - ??? AX = BF01h ??? Return: ??? Notes: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h called by DOS/4GW SeeAlso: AX=BF00h,AX=BF02h --------E-15BF02DX0000----------------------- INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK AX = BF02h DX = 0000h Return: DX = nonzero if installed DX:SI -> XBRK structure (see #0382) Note: this function is also supported by DOS/4G SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h Format of DOS/16M XBRK structure: Offset Size Description (Table 0382) 00h DWORD linear address of first available byte 04h DWORD linear address of last available byte + 1 ??? 08h DWORD real-mode address of XBRK structure??? 0Ch DWORD ??? 10h 2 BYTEs ??? 12h WORD segment of ??? 14h 8 BYTEs ??? 1Ch 512 BYTEs protected-mode IDT 21Ch N BYTEs protected-mode GDT --------E-15BF03----------------------------- INT 15 - Rational Systems DOS/4GW - UNINSTALL??? AX = BF03h BX = PSP segment of extender ??? Return: ??? Note: if BX is not the PSP segment of the extender, it passes the call down the INT 15 chain; this allows nested instances of the extender SeeAlso: AX=BF06h --------E-15BF04----------------------------- INT 15 - Rational Systems DOS/4GW - ??? AX = BF04h BX = PSP segment of extender Return: nothing??? Notes: if BX is not the PSP segment of the extender, it passes the call down the INT 15 chain; this allows nested instances of the extender grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h SeeAlso: INT 2F/AX=1607h/BX=22C0h --------E-15BF05----------------------------- INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE AX = BF05h BX = PSP segment of extender Return: nothing??? Notes: if BX is not the PSP segment of the extender, it passes the call down the INT 15 chain; this allows nested instances of the extender calls INT 67/AX=DE01h if ??? --------E-15BF06----------------------------- INT 15 - Rational Systems DOS/4GW - ??? AX = BF06h BX = PSP segment of extender ??? Return: ??? Note: if BX is not the PSP segment of the extender, it passes the call down the INT 15 chain; this allows nested instances of the extender SeeAlso: AX=BF03h --------E-15BFDCDX0000----------------------- INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK AX = BFDCh DX = 0000h SI = 0000h Return: DX = nonzero if installed DX:SI -> XBRK structure (see #0382) SeeAlso: AX=BF02h --------E-15BFDEBX0000----------------------- INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK AX = BFDEh BX = 0000h Return: AX = ??? (0003h) BX = FFFFh SeeAlso: AX=BF02h --------E-15BFDEBX0001----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME AX = BFDEh BX = 0001h Return: BX = 0000h (success) CX:DX -> name of process manager executable SeeAlso: AX=BFDEh/BX=0000h --------E-15BFDEBX0002----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ??? AX = BFDEh BX = 0002h CX:DX -> ??? Return: BX = 0000h (success) SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h --------E-15BFDEBX0003----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? AX = BFDEh BX = 0003h Return: BX = 0000h (success) CX:DX -> ??? SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h --------E-15BFDEBX0004----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? AX = BFDEh BX = 0004h CL = ??? Return: BX = 0000h (success) CX:DX -> XBRK structure (see #0382) SeeAlso: AX=BFDEh/BX=0000h --------E-15BFDEBX0005----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? AX = BFDEh BX = 0005h CX = new value for ??? Return: BX = 0000h (success) AX = old value of ??? DS:SI -> ??? (if AX nonzero on return) ES:DI -> ??? (if AX zero on return) Note: called by DOS4GW.EXE SeeAlso: AX=BFDEh/BX=0000h --------E-15BFDEBX0006----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? AX = BFDEh BX = 0006h Return: BX = 0000h (success) AH = interrupt number??? (BEh) CX:DX = ??? SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview" --------E-15BFDEBX0007----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ??? AX = BFDEh BX = 0007h CX:DX = ??? Return: BX = 0000h (success) SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h --------E-15BFDEBX0008----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? AX = BFDEh BX = 0008h CX = segment of ??? DS = ??? Return: BX = status 0000h successful AL = ??? (80h or C0h) DX = ??? (0603h) if AL=C0h 0001h failed AX = 0000h Note: called by DOS4GW.EXE SeeAlso: AX=BFDEh/BX=0000h --------E-15BFDEBX0009----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER AX = BFDEh BX = 0009h Return: BX = 0000h (success) CX:DX -> full pathname to LOAD32.EXP SeeAlso: AX=BFDEh/BX=0000h --------E-15BFDEBX000A----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ??? AX = BFDEh BX = 000Ah Return: BX = 0000h (success) AX = new value of ??? counter Notes: also resets a variety of values if the counter goes negative called by DOS4GW.EXE SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh --------E-15BFDEBX000B----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ??? AX = BFDEh BX = 000Bh Return: AX = new value of ??? counter Note: called by DOS4GW.EXE SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah --------E-15BFDEBX000C----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? AX = BFDEh BX = 000Ch CL = ??? 00h nonzero Return: ??? SeeAlso: AX=BFDEh/BX=0000h --------E-15BFDEBX000D----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? AX = BFDEh BX = 000Dh ??? Return: ??? SeeAlso: AX=BFDEh/BX=0000h --------E-15BFDEBX000E----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? AX = BFDEh BX = 000Eh DX:CX -> ??? Return: AX = segment of handle for calling task BX = ??? (probably destroyed) DX:CX -> ??? SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h --------E-15BFDEBX000F----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? AX = BFDEh BX = 000Fh Return: AX = segment of handle for calling task BX = ??? (probably destroyed) DX:CX -> ??? Note: identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h --------E-15BFDEBX0010----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE AX = BFDEh BX = 0010h Return: AX = segment of caller's task handle BX destroyed SeeAlso: AX=BFDEh/BX=000Fh --------E-15BFDEBX0011----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? AX = BFDEh BX = 0011h Return: CX = code segment of DVDOS4GX.DVR BX = ??? (0004h) SeeAlso: AX=BFDEh/BX=0000h --------E-15BFDEBX0012----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? AX = BFDEh BX = 0012h Return: DX = code segment of DVDOS4GX.DVR BX = ??? (012Ch) CX = ??? (0006h) SeeAlso: AX=BFDEh/BX=0000h --------E-15BFDEBX0013----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? AX = BFDEh BX = 0013h Return: DX:CX -> ??? SeeAlso: AX=BFDEh/BX=000Eh --------E-15BFDEBX0014----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX AX = BFDEh BX = 0014h CX = index of ??? mailbox (0000h-0004h valid, but no range checking done) Return: AX,BX destroyed SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h --------E-15BFDEBX0015----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX AX = BFDEh BX = 0015h CX = index of ??? mailbox (0000h-0004h valid, but no range checking done) Return: AX,BX destroyed SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h --------E-15BFDEBX0016----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED AX = BFDEh BX = 0016h CX = index of ??? mailbox (0000h-0004h valid, but no range checking done) Return: AX = status 0000h no one owns mailbox 0001h mailbox has an owner BX destroyed SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h --------E-15BFDEBX0017----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER AX = BFDEh BX = 0017h CX = index of ??? mailbox (0000h-0004h valid, but no range checking done) Return: AX = segment of mailbox owner's handle BX = segment of caller's task handle SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h --------E-15BFDEBXFFFD----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? AX = BFDEh BX = FFFDh Return: CX:DX = ??? SeeAlso: AX=BFDEh/BX=FFFEh --------E-15BFDEBXFFFE----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ??? AX = BFDEh BX = FFFEh CX:DX = ??? SeeAlso: AX=BFDEh/BX=FFFDh --------E-15BFDEBXFFFF----------------------- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP AX = BFDEh BX = FFFFh SeeAlso: AX=BFDEh/BX=0000h --------B-15C0------------------------------- INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS) AH = C0h Return: CF set if BIOS doesn't support call CF clear on success ES:BX -> ROM table (see #0383) AH = status 00h successful 86h unsupported function Notes: the 1/10/86 XT BIOS returns an incorrect value for the feature byte the configuration table is at F000h:E6F5h in 100% compatible BIOSes Dell machines contain the signature "DELL" or "Dell" at absolute FE076h and a model byte at absolute address FE845h (see #0389) Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and a product identifier at F000h:00FAh (see #0392) Compaq machines can be identified by the signature string "COMPAQ" at F000h:FFEAh, and is preceded by additional information (see #0390) Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the first three data bytes (model/submodel/revision) in the returned table Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of a laptop information record at F000h:E000h (see #0393) some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte past the end of the configuration table the Phoenix 386 BIOS contains a second version and date string (presumably the last modification for that OEM version) beginning at F000h:FFD8h, with each byte doubled (so that both ROM chips contain the complete information) SeeAlso: AH=C7h,AH=C9h,AH=D1h Format of ROM configuration table: Offset Size Description (Table 0383) 00h WORD number of bytes following 02h BYTE model (see #0388) 03h BYTE submodel (see #0388) 04h BYTE BIOS revision: 0 for first release, 1 for 2nd, etc. 05h BYTE feature byte 1 (see #0384) 06h BYTE feature byte 2 (see #0385) 07h BYTE feature byte 3 (see #0386) 08h BYTE feature byte 4 (see #0387) 09h BYTE feature byte 5: reserved (0) (IBM) ??? (08h) (Phoenix 386 v1.10) ---AWARD BIOS--- 0Ah N BYTEs AWARD copyright notice ---Phoenix BIOS--- 0Ah BYTE ??? (00h) 0Bh BYTE major version 0Ch BYTE minor version (BCD) 0Dh 4 BYTEs ASCIZ string "PTL" (Phoenix Technologies Ltd) ---Quadram Quad386--- 0Ah 17 BYTEs ASCII signature string "Quadram Quad386XT" Bitfields for feature byte 1: Bit(s) Description (Table 0384) 7 DMA channel 3 used by hard disk BIOS 6 2nd 8259 installed 5 Real-Time Clock installed 4 INT 15/AH=4Fh called upon INT 09h 3 wait for external event (INT 15/AH=41h) supported 2 extended BIOS area allocated (usually at top of RAM) 1 bus is Micro Channel instead of ISA 0 system has dual bus (Micro Channel + ISA) SeeAlso: #0383,#0385 Bitfields for feature byte 2: Bit(s) Description (Table 0385) 7 reserved 6 INT 16/AH=09h (keyboard functionality) supported (see #0445) 5 INT 15/AH=C6h (get POS data) supported 4 INT 15/AH=C7h (return memory map info) supported 3 INT 15/AH=C8h (en/disable CPU functions) supported 2 non-8042 keyboard controller 1 data streaming supported 0 reserved SeeAlso: #0383,#0386,AH=C6h,AH=C7h,AH=C8h,INT 16/AH=09h Bitfields for feature byte 3: Bit(s) Description (Table 0386) 7-5 reserved 4 ??? (set on 1992 PS/1's, N51SX, CL57SX, 35SX?, 40SX?) 3 SCSI subsystem supported on system board 2 information panel installed 1 IML (Initial Machine Load) system 0 SCSI supported in IML SeeAlso: #0383,#0385,#0386 Bitfields for feature byte 4: Bit(s) Description (Table 0387) 7 ??? (set on N51SX, CL57SX) 6-4 reserved 3 ??? (set on some 1992 PS/1's, 35SX, 40SX) 2-1 reserved 0 ??? (set on N51SX, CL57SX, 57SX) SeeAlso: #0383,#0386 (Table 0388) Values for model/submodel/revision: Model Submdl Rev BIOS date System FFh * * 04/24/81 PC (original) FFh * * 10/19/81 PC (some bugfixes) FFh * * 10/27/82 PC (HD, 640K, EGA support) FFh 00h rev ??? Tandy 1000SL FFh 01h rev ??? Tandy 1000TL FFh 46h *** ??? Olivetti M15 FEh * * 08/16/82 PC XT FEh * * 11/08/82 PC XT and Portable FEh * * ../..x.. Toshiba laptops up to ~1987 ("x"=product ID) (see #0394) FEh 43h *** ??? Olivetti M240 FEh A6h ??? ??? Quadram Quad386 FDh * * 06/01/83 PCjr FCh * * 01/10/84 AT models 068,099 6 MHz 20MB FCh 00h 00h ??? PC3270/AT FCh 00h 01h 06/10/85 AT model 239 6 MHz 30MB FCh 00h > 01h ??? 7531/2 Industrial AT FCh 01h 00h 11/15/85 AT models 319,339 8 MHz, Enh Keyb, 3.5" FCh 01h 00h 09/17/87 Tandy 3000 FCh 01h 00h ../..x.. Toshiba laptops since ~1988 ("x"=product ID) (see #0394) FCh 01h 00h 03/08/93 Compaq DESKPRO/i FCh 01h 00h various Compaq DESKPRO, SystemPro, ProSignia FCh 01h 00h 07/20/93 Zenith Z-Lite 425L FCh 01h 00h 04/09/90 AMI BIOS FCh 01h 20h 06/10/92 AST FCh 01h 30h ??? Tandy 3000NL FCh 01h ??? ??? Compaq 286/386 FCh 02h 00h 04/21/86 PC XT-286 FCh 02h 00h various Compaq LTE Lite FCh 02h 00h 08/05/93 Compaq Contura 486/486c/486cx FCh 02h 00h 08/11/88 SoftWindows 1.0.1 (Power Macintosh) FCh 04h 00h 02/13/87 ** PS/2 Model 50 (10 MHz/1 ws 286) FCh 04h 01h 05/09/87 PS/2 Model 50 (10 Mhz 286, LW-type 32) FCh 04h 02h ??? PS/2 Model 50 FCh 04h 02h 01/28/88 PS/2 Model 50Z (10 Mhz 286, LW-type 33) FCh 04h 03h 04/18/88 PS/2 Model 50Z (10 MHz/0 ws 286) FCh 04h 04h ??? PS/2 Model 50Z FCh 05h 00h 02/13/87 ** PS/2 Model 60 (10 MHz 286) FCh 06h 00h ??? IBM 7552-140 "Gearbox" FCh 06h 01h ??? IBM 7552-540 "Gearbox" FCh 08h *** ??? Epson, unknown model FCh 08h 00h ??? PS/2 Model 25/286 FCh 09h 00h ??? PS/2 Model 25 (10 MHz 286) FCh 09h 00h 08/25/88 PS/2 Model 30 286 (10 Mhz, LW-type 37) FCh 09h 02h 06/28/89 PS/2 Model 30-286 FCh 09h 02h 06/28/89 PS/2 Model 25 286 (10 Mhz, LW-type 37) FCh 0Bh 00h 12/01/89 PS/1 (LW-Type 44) FCh 0Bh 00h 02/16/90 PS/1 Model 2011 (10 MHz 286) FCh 20h 00h 02/18/93 Compaq ProLinea FCh 30h *** ??? Epson, unknown model FCh 31h *** ??? Epson, unknown model FCh 33h *** ??? Epson, unknown model FCh 42h *** ??? Olivetti M280 FCh 45h *** ??? Olivetti M380 (XP 1, XP3, XP 5) FCh 48h *** ??? Olivetti M290 FCh 4Fh *** ??? Olivetti M250 FCh 50h *** ??? Olivetti M380 (XP 7) FCh 51h *** ??? Olivetti PCS286 FCh 52h *** ??? Olivetti M300 FCh 81h 00h 01/15/88 Phoenix 386 BIOS v1.10 10a FCh 81h 01h ??? "OEM machine" FCh 82h 01h ??? "OEM machine" FCh 94h 00h ??? Zenith 386 FBh 00h 01h 01/10/86 PC XT-089, Enh Keyb, 3.5" support FBh 00h 01h 05/13/94 HP 200LX 2MB BIOS 1.01 A D german FBh 00h 02h 05/09/86 PC XT FBh 00h 04h 08/19/93 HP 100LX 1MB BIOS 1.04 A FBh 4Ch *** ??? Olivetti M200 FAh 00h 00h 09/02/86 PS/2 Model 30 (8 MHz 8086) FAh 00h 01h 12/12/86 PS/2 Model 30 FAh 00h 02h 02/05/87 PS/2 Model 30 FAh 01h 00h 06/26/87 PS/2 Model 25/25L (8 MHz 8086) FAh 30h 00h ??? IBM Restaurant Terminal FAh 4Eh *** ??? Olivetti M111 FAh FEh 00h ??? IBM PCradio 9075 F9h 00h 00h 09/13/85 PC Convertible F9h FFh 00h ??? PC Convertible F8h 00h 00h 03/30/87 ** PS/2 Model 80 (16MHz 386) F8h 00h 00h ??? PS/2 Model 75 486 (33Mhz 486) F8h 01h 00h 10/07/87 PS/2 Model 80 (20MHz 386) F8h 02h 00h ??? PS/2 Model 55-5571 F8h 04h 00h 01/29/88 PS/2 Model 70 (20 Mhz 386DX,LW-type 33) F8h 04h 02h 04/11/88 PS/2 Model 70 20MHz, type 2 system brd F8h 04h 03h 03/17/89 PS/2 Model 70 20MHz, type 2 system brd F8h 05h 00h ??? IBM PC 7568 F8h 06h 00h ??? PS/2 Model 55-5571 F8h 07h 00h ??? IBM PC 7561/2 F8h 07h 01h ??? PS/2 Model 55-5551 F8h 07h 02h ??? IBM PC 7561/2 F8h 07h 03h ??? PS/2 Model 55-5551 F8h 09h 00h 01/29/88 PS/2 Model 70 16MHz 386DX, type 1 sysbd F8h 09h 02h 04/11/88 PS/2 Model 70 some models F8h 09h 03h 03/17/89 PS/2 Model 70 some models F8h 09h 04h 12/15/89 PS/2 Model 70 (16 Mhz 386, LW-type 33) F8h 0Bh 00h 01/18/89 PS/2 Model P70 (8573-121) typ 2 sys brd F8h 0Bh 02h 12/16/89 PS/2 Model P70 ?? F8h 0Ch 00h 11/02/88 PS/2 Model 55SX (16 MHz 386SX) F8h 0Dh 00h ??? PS/2 Model 70 25MHz, type 3 system brd F8h 0Dh 00h 06/08/88 PS/2 Model 70 386 25MHz, type 3 sys brd F8h 0Dh 01h 02/20/89 PS/2 Model 70 386 25MHz, type 3 sys brd F8h 0Dh ??? 12/01/89 PS/2 Model 70 486 25Mhz, type 3 sys brd F8h 0Eh 00h ??? PS/1 486SX F8h 0Fh 00h ??? PS/1 486DX F8h 10h 00h ??? PS/2 Model 55-5551 F8h 11h 00h 10/01/90 PS/2 Model 90 XP (25 MHz 486) F8h 12h 00h ??? PS/2 Model 95 XP F8h 13h 00h 10/01/90 PS/2 Model 90 XP (33 MHz 486) F8h 14h 00h 10/01/90 PS/2 Model 90-AK9 (25 MHz 486), 95 XP F8h 15h 00h ??? PS/2 Model 90 XP F8h 16h 00h 10/01/90 PS/2 Model 90-AKD / 95XP486 (33MHz 486) F8h 17h 00h ??? PS/2 Model 90 XP F8h 19h 05h ??? PS/2 Model 35/35LS or 40 (20 MHz 386SX) F8h 19h 05h 03/15/91 PS/2 Model 35 SX / 40 SX (LW-type 37) F8h 19h 06h 04/04/91 PS/2 Model 35 SX / 40 SX (LW-type 37) F8h 1Ah 00h ??? PS/2 Model 95 XP F8h 1Bh 00h 09/29/89 PS/2 Model 70 486 (25 Mhz 386DX) F8h 1Bh 00h 10/02/89 PS/2 Model 70-486 (25 MHz 486) F8h 1Ch 00h 02/08/90 PS/2 Model 65-121 / 65 SX (16MHz 386SX) F8h 1Eh 00h 02/08/90 PS/2 Model 55LS (16 MHz 386SX) F8h 23h 00h ??? PS/2 Model L40 SX F8h 23h 01h ??? PS/2 Model L40 SX (20 MHz 386SX) F8h 23h 02h 02/27/91 PS/2 Model L40 SX (20Mhz386SX,LW-typ37) F8h 25h 00h ??? PS/2 Model 57 SLC F8h 25h 06h ??? PS/2 Model M57 (20 MHz 386SLC) F8h 26h 00h ??? PS/2 Model 57 SX F8h 26h 01h ??? PS/2 Model 57 (20 MHz 386SX) F8h 26h 02h 07/03/91 PS/2 Model 57 SX (20Mhz 386SX, SCSI) F8h 28h 00h ??? PS/2 Model 95 XP F8h 29h 00h ??? PS/2 Model 90 XP F8h 2Ah 00h ??? PS/2 Model 95 XP (50 MHz 486) F8h 2Bh 00h ??? PS/2 Model 90 / 90XP486 (50 MHz 486) F8h 2Ch 00h ??? PS/2 Model 95 XP F8h 2Ch 01h ??? PS/2 Model 95 (20 MHz 486SX) F8h 2Dh 00h ??? PS/2 Model 90 XP (20 MHz 486SX) F8h 2Eh 00h ??? PS/2 Model 95 XP F8h 2Eh 00h ??? PS/2 Model 95 XP486 (20 Mhz 486SX) F8h 2Eh 01h ??? PS/2 Model 95 (20 MHz 486SX + 487SX) F8h 2Fh 00h ??? PS/2 Model 90 XP (20 MHz 486SX + 487SX) F8h 30h 00h ??? PS/1 Model 2121 (16 MHz 386SX) F8h 33h 00h ??? PS/2 Model 30-386 F8h 34h 00h ??? PS/2 Model 25-386 F8h 36h 00h ??? PS/2 Model 95 XP F8h 37h 00h ??? PS/2 Model 90 XP F8h 38h 00h ??? PS/2 Model 57 F8h 39h 00h ??? PS/2 Model 95 XP F8h 3Fh 00h ??? PS/2 Model 90 XP F8h 40h 00h ??? PS/2 Model 95 XP F8h 41h 00h ??? PS/2 Model 77 F8h 45h 00h ??? PS/2 Model 90 XP (Pentium) F8h 46h 00h ??? PS/2 Model 95 XP (Pentium) F8h 47h 00h ??? PS/2 Model 90/95 E (Pentium) F8h 48h 00h ??? PS/2 Model 85 F8h 49h 00h ??? PS/ValuePoint 325T F8h 4Ah 00h ??? PS/ValuePoint 425SX F8h 4Bh 00h ??? PS/ValuePoint 433DX F8h 4Eh 00h ??? PS/2 Model 295 F8h 50h 00h ??? PS/2 Model P70 (8573) (16 MHz 386) F8h 50h 01h 12/16/89 PS/2 Model P70 (8570-031) F8h 52h 00h ??? PS/2 Model P75 (33 MHz 486) F8h 56h 00h ??? PS/2 Model CL57 SX F8h 57h 00h ??? PS/2 Model 90 XP F8h 58h 00h ??? PS/2 Model 95 XP F8h 59h 00h ??? PS/2 Model 90 XP F8h 5Ah 00h ??? PS/2 Model 95 XP F8h 5Bh 00h ??? PS/2 Model 90 XP F8h 5Ch 00h ??? PS/2 Model 95 XP F8h 5Dh 00h ??? PS/2 Model N51 SLC F8h 5Eh 00h ??? IBM ThinkPad 700 F8h 61h *** ??? Olivetti P500 F8h 62h *** ??? Olivetti P800 F8h 80h 00h ??? PS/2 Model 80 (25 MHz 386) F8h 80h 01h 11/21/89 PS/2 Model 80-A21 (25 Mhz 386) F8h 81h 00h ??? PS/2 Model 55-5502 F8h 87h 00h ??? PS/2 Model N33SX F8h 88h 00h ??? PS/2 Model 55-5530T F8h 97h 00h ??? PS/2 Model 55 Note N23SX F8h 99h 00h ??? PS/2 Model N51 SX F8h F2h 30h ??? Reply Model 32 F8h F6h 30h ??? Memorex Telex F8h FDh 00h ??? IBM Processor Complex (with VPD) F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX) F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX) F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX + 487SX) F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX + 487SX) E4h ??? ??? ??? Triumph Adler PC/XT E1h ??? ??? ??? ??? (checked for by DOS4GW.EXE) E1h 00h 00h ??? PS/2 Model 55-5530 Laptop D9h ??? ??? ??? Peacock XT 9Ah * * ??? Compaq XT/Compaq Plus 30h ??? ??? ??? Sperry PC 2Dh * * ??? Compaq PC/Compaq Deskpro ??? 56h ??? ??? Olivetti, unknown model ??? 74h ??? ??? Olivetti, unknown model Notes: BIOS dates may vary without changes to the revision code, especially for non-IBM machines * This BIOS call is not implemented in these early versions. Read Model byte at F000h:FFFEh and BIOS date at F000h:FFF5h. ** These BIOS versions require the DASDDRVR.SYS patches. *** These Olivetti and Epson machines store the submodel in the byte at F000h:FFFDh. SeeAlso: #0383,#0389 (Table 0389) Values for Dell model byte: 02h Dell 200 03h Dell 300 05h Dell 220 06h Dell 310 07h Dell 325 09h Dell 310A 0Ah Dell 316 0Bh Dell 220E 0Ch Dell 210 0Dh Dell 316SX 0Eh Dell 316LT 0Fh Dell 320LX 11h Dell 425E SeeAlso: #0383,#0388 Format of Compaq product information: Address Size Description (Table 0390) F000h:FFE4h BYTE product family code (first byte) F000h:FFE4h BYTE Point release number F000h:FFE4h BYTE ROM version code F000h:FFE4h BYTE product family code (second byte) F000h:FFE8h WORD BIOS type code SeeAlso: #0391,#0393 Format of Hewlett-Packard ROM ID at F000h:00F8h: Offset Size Description (Table 0391) 00h 2 BYTEs signature "HP" (48h 50h) 02h 2 BYTEs 00h 00h 04h BYTE secondary code revision 05h BYTE primary code revision 06h BYTE date code, year-1960 (BCD) 07h BYTE date code, week of year (BCD) SeeAlso: #0390,#0392 Bitfields for Hewlett-Packard product identifier: Bit(s) Description (Table 0392) 4-0 machine code 0 original Vectra 1 ES/12 2 RS/20 3 Portable/CS 4 ES 5 CS 6 RS/16 other reserved 7-5 CPU type 0 = 80286 1 = 8088 2 = 8086 3 = 80386 other reserved SeeAlso: #0391 Format of Toshiba laptop information: Offset Size Description (Table 0393) 00h 8 BYTEs ASCII product number (e.g. "T2200SX ") 08h 8 BYTEs ASCII version number (e.g. "V1.20 ") 10h 8 BYTEs ASCII signature string "TOSHIBA " 18h 8 BYTEs always zero??? 20h DWORD -> built-in BIOS setup program entry point or 0000h:0000h Note: this record is located at F000h:E000h SeeAlso: #0390,#0391 (Table 0394) Values for Toshiba product ID: model prodID version date product number /hdd FEh 29h ../..).. Toshiba T1000LE FEh 2Ah ../..*.. Toshiba T1000XE FEh 2Bh ../..+.. Toshiba T1000SE FEh 2Ch ../..,.. Toshiba T1000 - FEh 2Dh ../..-.. Toshiba T1200F - FEh 2Dh V4.00 12/26-87 Toshiba T1200H /20 FEh 2Eh ../..... Toshiba T1100+ FCh 22h ../..".. Toshiba T8500 FCh 26h 01/15&88 Toshiba T5200 /100 FCh 27h ../..'.. Toshiba T5100 FCh 28h ../..(.. Toshiba T2000 FCh 2Ah 12/26*89 Toshiba T1200XE FCh 2Bh ../..+.. Toshiba T1600 FCh 2Ch ../..,.. Toshiba T3100e FCh 2Dh ../..-.. Toshiba T3200 FCh 2Fh ../../.. Toshiba T3100 FCh 34h ../..4.. Toshiba T100X FCh 38h ../..8.. Toshiba T2000SXe FCh 39h V1.20 09/16991 Toshiba T2200SX /60 FCh 39h V1.40 10/01992 Toshiba T2200SX /120 (upgraded) FCh 3Ch V1.50 01/28<91 Toshiba T2000SX /40 FCh 3Dh ../..=.. Toshiba T3200SXC FCh 3Eh ../..>.. Toshiba T3100SX FCh 3Fh ../..?.. Toshiba T3200SX FCh 40h ../..@.. Toshiba T4500C FCh 41h 04/05A92 Toshiba T4500 ("T4500SXC" ?) FCh 45h V3.20 04/14E92 Toshiba T4400SX ("C" or "SXC" on cover) FCh 45h 01/13E93 Toshiba T4400SXC FCh 46h * ../..F.. Toshiba T6400 FCh 46h * ../..F.. Toshiba T6400C FCh 5Fh ../.._.. Toshiba T3300SL FCh 69h ../..i.. Toshiba T1900C FCh 6Ah ../..j.. Toshiba T1900 FCh 6Dh ../..m.. Toshiba T1850C FCh 6Eh V1.00 08/19n92 Toshiba T1850 FCh 6Eh 12/25n92 Toshiba T1850 FCh 6Fh 07/17o92 Toshiba T1800 FCh 7Eh V1.30 06/17~93 Toshiba T4600C FCh 7Fh ../..x.. Toshiba T4600 FCh 8Ah ../..x.. Toshiba T6600C FCh 91h ../..x.. Toshiba T2400CS FCh 91h V1.20 07/15x94 Toshiba T2400CT FCh 92h ../..x.. Toshiba T3600CT FCh 96h * ../..x.. Toshiba T200 FCh 96h * ../..x.. Toshiba T200CS FCh 97h ../..x.. Toshiba T4800CT FCh 98h * V1.10 12/22x93 Toshiba T1910 /120 /320 FCh 98h * ../..x.. Toshiba T1910CS FCh 99h ../..x.. Toshiba T4700CS FCh 9Bh V2.30 01/31x94 Toshiba T4700CT FCh 9Bh V2.50 03/22x94 Toshiba T4700CT /320 FCh 9Ch V1.30 01/11x94 Toshiba T1950CT /320 FCh 9Dh * ../..x.. Toshiba T1950 FCh 9Dh * ../..x.. Toshiba T1950CS FCh 9Eh * V1.20 12/25x93 Toshiba T3400 /120 FCh 9Eh * V1.30 03/22x94 Toshiba T3400 /250 FCh 9Eh * ../..x.. Toshiba T3400CT FCh BAh V1.30 02/16x95 Toshiba T2150CDS/CDT FCh BBh V1.30 01/25x95 Toshiba T2100/CS/CT FCh BCh ??? ../..x.. Toshiba T2450CT FCh BEh ../..x.. Toshiba T4850CT FCh ??? ../.. .. Toshiba T1900S FCh ??? ../.. .. Toshiba T1900CT FCh ??? ../.. .. Toshiba T4900CT Note: BIOS version numbers and dates may vary, esp. due to harddisk and flash BIOS upgrades the 8-bit ASCII graphics character in the "date" column above has been substituted by "x" because it depends on code page [*] These models have monochrome and color versions which can be distinguished with INT 42/AX=7503h; as that call is no longer supported on the T21xx series, use the product number at F000h:E000h instead (see #0393) SeeAlso: #0388 --------B-15C1------------------------------- INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS) AH = C1h Return: CF set on error CF clear if successful ES = segment of data area SeeAlso: AH=04h"ABIOS" --------M-15C200----------------------------- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE AX = C200h BH = new state 00h disabled 01h enabled Return: CF set on error AH = status (see #0395) (Table 0395) Values for pointing device function status: 00h successful 01h invalid function 02h invalid input 03h interface error 04h need to resend 05h no device handler installed --------M-15C201----------------------------- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET AX = C201h Return: CF set on error AH = status (see #0395) CF clear if successful BH = device ID BL = value returned by attached device after reset AAh if device is a mouse Note: after successful completion of this call, the pointing device is set as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm, scaling 1:1, unchanged data package size SeeAlso: INT 33/AX=0000h --------M-15C202----------------------------- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE AX = C202h BH = sampling rate 00h 10/second 01h 20/second 02h 40/second 03h 60/second 04h 80/second 05h 100/second 06h 200/second Return: CF set on error AH = status (see #0395) SeeAlso: INT 33/AX=001Ch --------M-15C203----------------------------- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION AX = C203h BH = resolution (see #0396) Return: CF set on error AH = status (see #0395) (Table 0396) Values for pointing device resolution: 00h one count per mm 01h two counts per mm 02h four counts per mm 03h eight counts per mm --------M-15C204----------------------------- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE AX = C204h Return: CF set on error AH = status (see #0395) CF clear if successful BH = device ID --------M-15C205----------------------------- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE AX = C205h BH = data package size (1 - 8 bytes) Return: CF set on error AH = status (see #0395) Note: the pointing device is set as follows: disabled, 100 Hz sample rate, resolution 4 counts/mm, scaling 1:1 SeeAlso: AX=C201h --------M-15C206----------------------------- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS AX = C206h BH = subfunction 00h return device status Return: BL = pointing device status (see #0397) CL = resolution (see #0396) DL = sample rate, reports per second 01h set scaling at 1:1 02h set scaling at 2:1 Return: CF set on error AH = status (see #0395) Bitfields for pointing device status: Bit(s) Description (Table 0397) 0 right button pressed 1 reserved 2 left button pressed 3 reserved 4 0 if 1:1 scaling, 1 if 2:1 scaling 5 device enabled 6 0 if stream mode, 1 if remote mode 7 reserved --------M-15C207----------------------------- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR AX = C207h ES:BX -> FAR user device handler or 0000h:0000h to cancel Return: CF set on error AH = status (see #0395) Note: when the subroutine is called, it is passed the following values on the stack; the handler should return with a FAR return without popping the stack: WORD 1: status (see #0398) WORD 2: X data (high byte = 00h) WORD 3: Y data (high byte = 00h) WORD 4: 0000h SeeAlso: INT 33/AX=000Ch Bitfields for pointing device status: Bit(s) Description (Table 0398) 15-8 reserved (0) 7 Y data overflowed 6 X data overflowed 5 Y data is negative 4 X data is negative 3 reserved (1) 2 reserved (0) 1 right button pressed 0 left button pressed --------B-15C3------------------------------ INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+) AH = C3h AL = function 00h disable PS/2 watchdog timer 01h enable PS/2 watchdog timer BX = timer counter (0001h-00FFh) 02h disable Gearbox system 03h enable Gearbox system Return: CF set on error CF clear if successful Note: the watchdog timer generates an NMI SeeAlso: INT 21/AH=2Bh/CX=6269h/DX=742Dh --------B-15C4------------------------------- INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+) AH = C4h AL = subfunction 00h return base POS register address 01h enable selected slot for setup BL = slot number (1 to 8) 02h disable setup for all slots (enable adapter) Return: CF set on error DX = base POS register address (if subfunction 00h) SeeAlso: AH=C6h --------B-15C5------------------------------- INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95) AH = C5h AL = interrupt being invoked 01h INT 19 02h INT 14 03h INT 16 04h INT 40 (floppy INT 13) 05h INT 17 06h INT 10 07h INT 12 08h INT 11 09h INT 1A Return: all registers except AX must be preserved Notes: called as the very first action of the indicated ROM BIOS interrupt handlers on the PS/2 Models 30/286, 50Z, and 95 default handler does nothing and returns CF clear for the above subfunctions, CF set and AH=86h for all other subfunctions value of AX passed to the original interrupt handler is pushed on stack immediately prior to call --------B-15C6------------------------------- INT 15 U - later PS/2 models - GET POS DATA AH = C6h ??? Return: ??? Notes: this function is referenced by name and number in some IBM BIOS manuals IBM reports that "there are a number of problems with this call" and does not recommend its use. SeeAlso: AH=C4h --------B-15C7------------------------------- INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION AH = C7h DS:SI -> user supplied memory map table (see #0399) Note: call AH=C0h and examine bit 4 of feature byte 2 to check if this function is supported Return: CF set on error, clear if successful SeeAlso: AH=C0h,AH=C9h,AH=D1h Format of memory-map table structure: Offset Size Description (Table 0399) 00h WORD length of table (excluding this word) 02h DWORD local memory between 1M and 16M, in 1K blocks 06h DWORD local memory between 16M and 4G, in 1K blocks 0Ah DWORD system memory between 1M and 16M, in 1K blocks 0Eh DWORD system memory between 16M and 4G, in 1K blocks 12h DWORD cacheable memory between 1M and 16M, in 1K blocks 16h DWORD cacheable memory between 16M and 4G, in 1K blocks 1Ah DWORD 1K blocks before start of non-system memory between 1M and 16M 1Eh DWORD 1K blocks before start of non-system memory between 16M and 4G 22h 2 DWORDs reserved --------B-15C8------------------------------- INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS AH = C8h AL = function 00h disable cache or (90 and 95) disable cache L1 01h enable cache or (90 and 95) enable cache L1 ---models 90 and 95 only--- 02h disable cache L2 03h enable cache L2 04h disable both caches 05h enable both caches 06h return status of both caches 07h-FFh Reserved Return: CF set on error CF clear if successful AH = status (see #0400) For subfunction 06h only: BH = status of cache L2 00h enabled 01h disabled or not installed BL = status of cache L1 (same codes as BH) Notes: supported by at least PS/2 70, 70/486, 80-A21, 90, 95 call AH=C0h and examine bit 3 of feature byte 2 to check if this function is supported. on a 486 system, any external caches must be disabled when the on-chip cache (L1) is disabled. SeeAlso: AH=C0h (Table 0400) Values for status: 00h operation successful 01h function choice (in AL) is invalid 02h NVRAM data is invalid 03h cache test error 04h (90 and 95 only) cannot perform operation requested due to state of other cache (see note above) 05h no L2 cache is present 09h CPU in protected mode --------B-15C9------------------------------- INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION AH = C9h AL = 10h (may be required on some non-PS BIOSes) Return: CF clear if successful AH = 00h CH = CPU type (see #0401) CL = mask revision (stepping level) (see #0402) CF set on error AH = status (80h,86h = function not supported) Notes: the BIOS must save DX at startup in order to be able to support this call; PS/2 Models 56, 57, 90, and 95 are known to support it the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev) SeeAlso: AX=DA92h (Table 0401) Values for CPU type: 03h 80386DX or clone 04h 80486 05h Pentium 23h 80386SX or clone 33h Intel i376 43h 80386SL or clone A3h IBM 386SLC A4h IBM 486SLC (Table 0402) Values for stepping level: ---i376 (type code 33h)--- 05h A0 08h B ---80386/80386DX (type code 03h)--- 03h Intel B1 to B10, Am386DX/DXL step A 05h Intel D0 08h Intel D1/D2/E1, Am386DX/DXL step B ---80386SL (type code 43h)--- 05h A 1xh B ---80386SX (type code 23h)--- 04h Intel A0 05h Intel B, Am386SX/SXL step A1 08h Intel C/D1, Am386SX/SXL step B 09h Intel 386CX/386EX/386SXstatic step A ---80486DX (type code 04h)--- 00h Intel A0/A1 01h Intel B2 to B6 02h Intel C0 03h Intel C1 04h Intel D0 10h Intel cA2/cA3, Cx486SLC step A 11h Intel cB0/cB1 ---486DX2 (type code 04h)--- 02h Am486DX2 (unknown stepping) 32h Intel DX2/Overdrive steps A0 to A2 33h Intel DX2/Overdrive step B1 ---486SX (type code 04h)--- 20h Intel A0 22h Intel B0 27h Intel cA0 28h Intel cB0 ---486SL (type code 04h)--- 40h Intel A ---IntelSX2 (type code 04h)--- 5xh Intel A ---IntelDX4 (type code 04h)--- 8xh Intel A ---487SX (type code 04h)--- 20h Intel A0 21h Intel B0 ---Pentium (type code 05h)--- 0xh Intel P5 steps Ax (1993) 1xh Intel P5 steps Bx (1994) 2xh Intel P54C step A ---RapidCAD (type code 03h)--- 40h A --------B-15CA------------------------------- INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY AH = CAh AL = function 00h read CMOS Return: CL = value of CMOS location 01h write CMOS CL = new value for CMOS location BL = CMOS location (0Eh-3Fh) Return: CF clear if successful AH = 00h CF set on error AH = error code (see #0403) Note: writes do not update the CMOS checksum (Table 0403) Values for CMOS read/write error code: 01h CMOS lost power or has invalid checksum 03h specified location out of range (too high) 04h specified location out of range (too low) 80h unsupported function (PC) 86h unsupported function (XT) --------B-15CB------------------------------- INT 15 U - PS/2 Model 95 - RESERVED AH = CBh ??? Return: ??? --------B-15CC------------------------------- INT 15 U - PS/2 Model 95 - RESERVED AH = CCh ??? Return: ??? --------V-15CCCC----------------------------- INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK AX = CCCCh Return: AX = ABCDh if installed Note: supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+ older versions have the string "VCHAD" 2 bytes after the address of the INT 15 handler which is hooked by all versions for the SysReq key SeeAlso: AH=85h --------B-15CD------------------------------- INT 15 U - PS/2 Model 95 - RESERVED AH = CDh ??? Return: ??? --------B-15CE--BL00------------------------- INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL AH = CEh BL = 00h-0Eh arbitration level to be allocated 0Fh-FFh reserved AL = option byte bit 7-1: reserved (0) bit 0: 0 = need DMA channel for arbitration level requested 1 = no channel required for arbitration level Return: CF set on error AH = status (80h,86h = function not supported) CF clear on success AL = channel number 00h-07h channel number allocated for the arbiration level 08h-FEh reserved FFh no channel requested for arbitration level AH = status (see #0404) Notes: arbitration level 00h has the highest priority, 0Eh the lowest to perform a DMA transfer operation, be sure to call this function first, and call AH=CFh afterward. Failure to use this function can cause unpredictable results. SeeAlso: AH=CFh (Table 0404) Values for DMA arbitration status: 00h success 01h arbitration level not available 02h channel not available 03h invalid arbitration level passed --------B-15CF------------------------------- INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL AH = CFh BL = arbitration level to be deallocated (see AH=CEh) Return: CF set on error AH = status (80h,86h = function not supported) CF clear on success AH = status 00h success 04h arbitration level not allocated SeeAlso: AH=CEh --------B-15D0------------------------------- INT 15 - later PS/2s - RESERVED AH = D0h ??? Return: ??? --------B-15D100DX0000----------------------- INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES AX = D100h DX = 0000h (reserved, must set to 0) Return: BL = size of one DDT entry, in bytes CX = number of DDT entries AH = return code (see #0405) CF set on error CF clear on success SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h (Table 0405) Values for return code: 00h success 01h requested DDT entry not found 02h DDT data not valid 86h function not supported --------B-15D101----------------------------- INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER AX = D101h BX = number of requested entry (starting with 1) DX = 0000h (reserved, must be set to 0) ES:DI -> buffer to contain DDT entry (see #0406) Return: AH = return code (see #0405) CF set on error CF clear on success ES:DI buffer filled with DDT entry SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h Format of Device Descriptor Table (DDT): Offset Size Description (Table 0406) 00h BYTE bits 7-4: reserved (set to 0) bits 3-0: slot of device (0 = system board) 01h BYTE bits 7-4: second interrupt for this device (0 = none) bits 3-0: first interrupt for this device (0 = none) 02h BYTE bits 7-4: second arbitration level for this device bits 3-0: first arbitration level for this device 03h WORD DDT indicators (see #0407) 05h BYTE reserved (0) 06h WORD device ID (0 = none) 08h WORD starting address of first I/O block (0 = none) 0Ah WORD starting address of second I/O block (0 = none) OCh WORD starting address of third I/O block (0 = none) OEh DWORD start of first non-system memory block (0 = none) 12h WORD size of first non-system memory block (in kilobytes) 14h DWORD start of second non-system memory block (0 = none) 18h WORD size of second non-system memory block (in kilobytes) 1Ah BYTE implementation identifier of the device 1Bh BYTE implementation revision level of the device Note: I/O block addresses and non-system memory addresses are listed in ascending order in each DDT entry. Bitfields for DDT indicators: Bit(s) Description (Table 0407) 15 reserved (0) 14 second arbitration level exists 13 first arbitration level exists 12 serial interface is RS-422 11 not address limited 10 DMA channel used 9 second arbitration level can be shared 8 first arbitration level can be shared 7-0 reserved (0) --------B-15D102----------------------------- INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS AX = D102h BX = entry number at which to start searching CX = requested I/O port address DX = 0000h (reserved, must be set to 0) ES:DI -> buffer to contain DDT entry (see #0406) Return: AH = return code (see #0405) BX = DDT entry number where I/O port was found, or total entries plus 1 if port was not found. CF set on error CF clear on success ES:DI buffer filled with DDT entry Desc: the DDT is searched from the specified entry for the I/O port in CX, and the first entry in which it is found is returned SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h --------B-15D103DX0000----------------------- INT 15 - later PS/2s - RETURN ENTIRE DDT AX = D103h DX = 0000h (reserved, must be set to 0) ES:DI -> buffer to contain DDT entry (see #0406) Return: AH = return code (see #0405) CF set on error CF clear on success ES:DI buffer filled with DDT entry SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h --------B-15D104----------------------------- INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID AX = D104h BX = entry number at which to start searching CX = requested device ID DX = 0000h (reserved, must be set to 0) ES:DI -> buffer to contain DDT entry (see #0406) Return: AH = return code (see #0405) BX = DDT entry number where device ID was found, or total entries plus 1 if port was not found. CF set on error CF clear on success ES:DI buffer filled with DDT entry Desc: the DDT is searched from the specified entry for the device ID in CX, and the first entry in which it is found is returned. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h --------B-15D2------------------------------- INT 15 - later PS/2s - RESERVED AH = D2h ??? Return: ??? --------B-15D3------------------------------- INT 15 - later PS/2s - RESERVED AH = D3h ??? Return: ??? --------B-15D4------------------------------- INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT) AH = D4h DL = logical fixed disk drive number Return: AH = return code (see #0408) CF set on error CF clear on success AL = physical fixed disk drive number (Table 0408) Values for return code: 00h success 01h specified logical drive number is invalid 80h function not supported (on PCjr and PC) 86h function not supported --------B-15D5------------------------------- INT 15 - later PS/2s - RESERVED AH = D5h ??? Return: ??? --------B-15D600BL00------------------------- INT 15 - later PS/2s - READ BOOT DEVICE ID AX = D600h BL = 00h DX = device ID Return: CF clear if successful AH = 00h CF set on error AH = status (86h for function not supported) SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h --------B-15D600BL01------------------------- INT 15 - later PS/2s - WRITE BOOT DEVICE ID AX = D600h BL = 01h DX = device ID Return: CF clear on success AH = 00h CF set on error AH = status (86h for function not supported) SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h --------B-15D601BL00------------------------- INT 15 - later PS/2s - READ BOOT DEVICE KEY AX = D601h BL = 00h DX = device ID Return: CF clear on success AH = 00h CF set on error AH = status (86h for function not supported) SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h --------B-15D601BL01------------------------- INT 15 - later PS/2s - WRITE BOOT DEVICE KEY AX = D601h BL = 01h DX = device ID Return: CF clear on success AH = 00h CF set on error AH = status (86h for function not supported) SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h --------B-15D602----------------------------- INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION AX = D602h Return: CF clear on success AH = 00h AL = status of reference-partition boot request 00h boot not requested 01h boot requested CF set on error AH = status (86h for function not supported) SeeAlso: AX=D601h/BL=00h --------X-15D800----------------------------- INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION AX = D800h CL = slot number (including embedded and virtual) Return: CF clear if successful AH = 00h CF set on error AH = error code (80h,82h,83h,86h,87h)(see #0410) AL = bit flags (see #0409) BH = major revision level of configuration utility BL = minor revision level of configuration utility CX = checksum of configuration file DH = number of device functions DL = combined function information byte SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3) Note: call with AL=80h if using 32-bit CS addressing mode instead of 16-bit SeeAlso: AX=D801h,AX=D804h Bitfields for EISA AL bit flags: Bit(s) Description (Table 0409) 7 set if duplicate IDs 6 set if product ID readable 4,5 slot type (00=expansion, 01=embedded, 10=virtual device) 0-3 duplicate ID number if bit 7 set (Table 0410) Values for EISA error code: 80h invalid slot number 81h invalid function number 82h EISA CMOS corrupt 83h empty slot 84h error clearing CMOS 85h EISA CMOS is full 86h invalid BIOS-FW function call 87h invalid system configuration 88h config utility version not supported --------X-15D801----------------------------- INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION AX = D801h CH = function number to read CL = slot number (including embedded and virtual) DS:SI -> 320-byte buffer for standard configuration data block Return: CF clear if successful AH = 00h DS:SI buffer filled CF set on error AH = error code (80h-83h,86h,87h) (see #0410) BX destroyed Note: call with AL=81h if using 32-bit CS addressing mode instead of 16-bit --------X-15D802----------------------------- INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS) AX = D802h BH = EISA config utility major revision level BL = EISA config utility minor revision level Return: CF clear if successful AH = 00h CF set on error AH = error code (84h,86h,88h) (see #0410) Note: call with AL=82h if using 32-bit CS addressing mode instead of 16-bit SeeAlso: AX=D803h --------X-15D803----------------------------- INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY AX = D803h CX = length of data structure (0000h = empty slot) includes two bytes for config file checksum DS:SI -> configuration data Return: CF clear if successful AH = 00h CF set on error AH = error code (84h-86h) (see #0410) Note: call with AL=83h if using 32-bit CS addressing mode instead of 16-bit SeeAlso: AX=D802h --------X-15D804----------------------------- INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT AX = D804h CL = slot number (including embedded and virtual) Return: CF clear if successful AH = 00h CF set on error AH = error code (80h,83h,86h) (see #0410) SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3) Note: call with AL=84h if using 32-bit CS addressing mode instead of 16-bit SeeAlso: AX=D800h --------b-15D820----------------------------- INT 15 - Compaq LTE Lite - GET ??? AX = D820h DS:SI -> 17-byte buffer for ??? Return: DS:SI buffer filled (first byte is length of remaining data, unless it is greater than 10h, in which case the second byte is 00h and no other data is returned) Note: this function is also supported by Compaq's EISA System ROM, Contura 486/486c/486cx and recent DESKPRO/i ROMs SeeAlso: AX=D821h --------b-15D821----------------------------- INT 15 - Compaq LTE Lite - SET ??? AX = D821h DS:SI -> counted string (should not be more than 16 bytes) Return: AH = 00h Note: this function is also supported by Compaq's EISA System ROM, Contura 486/486c/486cx and recent DESKPRO/i ROMs SeeAlso: AX=D820h --------b-15D822BL00------------------------- INT 15 - Compaq EISA System ROM 04/08/93 - GET ??? AX = D822h BL = 00h CX = size of buffer or 0000h to retrieve required buffer size DS:SI -> buffer for ??? (if CX nonzero) Return: CF clear if successful AH = 00h DH = 08h CX = required buffer size to retrieve all data (if CX=0 on entry) DS:SI buffer filled (if CX nonzero on entry) CF set on error (BL nonzero) AH = 86h --------b-15D823----------------------------- INT 15 - Compaq EISA System ROM 04/08/93 - ??? AX = D823h BL = subfunction??? (00h or 80h) BH = ??? DS:SI -> buffer for ??? (see #0411) Return: CF clear if successful AH = 00h DH = 08h DL = ??? CF set on error AH = error code 86h BL neither 00h nor 80h 87h ??? Format of Compaq EISA buffer: Offset Size Description (Table 0411) 00h BYTE ??? 01h WORD ??? 03h BYTE ??? 04h WORD ??? 06h WORD ??? ??? ----------15D824----------------------------- INT 15 - Compaq EISA System ROM 04/08/93 - ??? AX = D824h CX = ??? DS:SI -> ASCIZ string containing ??? Return: CF clear if successful AH = 00h CX = ??? CF set on error AH = error code 87h ??? failed 88h ??? Note: these functions are only available if ??? from keyboard controller command C0h ----------15D825----------------------------- INT 15 - Compaq EISA System ROM 04/08/93 - ??? AX = D825h CX = ??? SI = ??? DI = ??? ??? Return: CF clear if successful AH = 00h CX = ??? CF set on error AH = error code 87h ??? failed 88h ??? CX = ??? Note: these functions are only available if ??? from keyboard controller command C0h ----------15D826----------------------------- INT 15 - Compaq EISA System ROM 04/08/93 - ??? AX = D826h BX = ??? CX = size of buffer in bytes DS:SI -> buffer for ??? ??? Return: CF clear if successful AH = 00h CX = ??? CF set on error AH = error code 87h ??? failed 88h ??? Note: these functions are only available if ??? from keyboard controller command C0h --------X-15D8------------------------------- INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS AH = D8h AL = 80h to 84h other registers as appropriate for AL=00h to 04h Return: as appropriate for AL=00h to 04h Note: these functions are identical to AX=D800h to D804h, except that they should be called when using 32-bit CS addressing mode (pointers use ESI rather than SI as offset) instead of 16-bit addressing mode SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h --------b-15D8------------------------------- INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS AH = D8h AL = A0h to A6h other registers as appropriate for AL=20h to 26h Return: as appropriate for AL=20h to 26h Note: these functions are identical to AX=D820h to D826h, except that they should be called when using 32-bit CS addressing mode ----------15DA------------------------------- INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ??? AH = DAh AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h) other registers vary by function Return: CF clear if successful varies by function CF set on error AH = error code (86h unsupported [sub]function) Note: functions not listed above always return CF set and AH=86h; in the examined BIOS, functions 02h-04h,06h-07h,89h-8Bh, and 8Dh also always return CF set and AH=86h SeeAlso: AX=DA00h,AX=DA01h,AX=DA88h,AX=DA99h,AX=DB00h --------b-15DA00----------------------------- INT 15 U - AMI PCI BIOS - ??? AX = DA00h CL = subfunction 00h ??? 01h ??? 02h get ??? ??? Return: CF clear if successful ??? CF set on error AH = error code (86h unsupported subfunction) Note: in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h always return failure SeeAlso: AX=DA01h --------b-15DA01----------------------------- INT 15 U - AMI PCI BIOS - CPU SPEED CONTROL AX = DA01h CL = subfunction (00h-02h) 00h set low CPU speed 01h set high CPU speed 02h get current CPU speed Return: CF clear if successful AH = current/new CPU speed (00h low, 01h high) AL = ??? (00h) CF set on error AH = error code (86h unsupported subfunction) Notes: in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h are NOPs in both protected and V86 modes due to a test of MSW bit 0 setting the CPU speed also generates the same audible signals generated when manually switching speeds with Ctrl-Alt-Gray- and Ctrl-Alt-Gray+ BUG: the BIOS apparently intends to return CF set if ???, but fails to use a different exit path in that case, resulting in CF clear ----------15DA05----------------------------- INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS AX = DA05h ES:SI -> 8-byte buffer for ??? and BIOS revision strings Return: CF clear ES:SI buffer filled AL = 00h CX = ??? (0000h) Notes: for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision string is "AX1 " SeeAlso: AX=DA15h,AX=DB04h ----------15DA08----------------------------- INT 15 U - AMI PCI BIOS - ??? AX = DA08h ??? Return: CF clear if successful ??? CF set on error AH = error code (86h unsupported subfunction) Note: in the examined v1.00.05.AX1 BIOS, this call always returns failure ----------15DA12----------------------------- INT 15 U - AMI PCI BIOS - v1.00.05.AX1 - ??? AX = DA12h CL = subfunction 00h ??? 01h ??? 02h get ??? 03h ??? 04h ??? ??? Return: CF clear if successful ??? CF set on error AH = error code (86h unsupported subfunction) Desc: ??? performs various manipulations on system chipset registers Notes: subfunctions 00h and 01h are NOPs in protected and V86 modes due to a test of MSW bit 0 subfunctions 00h-02h always return success ----------15DA14----------------------------- INT 15 U - AMI PCI BIOS - GET/SET ??? AX = DA14h CL = subfunction 00h read 01h write DH = new value for ??? (00h-02h) DL = index of ??? (00h-03h, but not range-checked) ??? Return: CF clear if successful DH = current value of ??? if reading CF set on error AH = error code (86h unsupported subfunction) Note: the values for indexes 00h and 01h are stored in CMOS RAM location 19h, and the values for 02h and 03h are stored in location 36h BUG: the v1.00.05.AX1 BIOS range-checks DH on subfunction 00h instead of subfunction 01h, even though DH is never used by subfunction 00h ----------15DA15----------------------------- INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS AX = DA15h ES:DI -> 8-byte buffer for ??? and BIOS revision strings Return: CF clear ES:DI buffer filled AL = 00h Note: for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision string is "AX1 " SeeAlso: AX=DA05h,AX=DB04h ----------15DA19----------------------------- INT 15 U - AMI PCI BIOS - GET/SET ??? AX = DA19h CL = subfunction 00h get first ??? 01h get second ??? 02h set first ??? BX = ??? DX = ??? 03h set second ??? BX = ??? DX = ??? Return: CF clear if successful AX = 0000h BX,DX = ??? (subfunctions 00h and 01h only) CF set on error AH = error code (86h unsupported subfunction) Note: the first ??? is stored in CMOS RAM locations 1Bh-1Eh, the second in locations 1Fh-22h in the v1.00.05.AX1 BIOS ----------15DA88----------------------------- INT 15 U - AMI PCI BIOS - GET EXTENDED MEMORY SIZE AX = DA88h Return: CF clear (successful) AX = 0000h CL:BX = extended memory size in KBytes SeeAlso: AH=88h ----------15DA8C----------------------------- INT 15 U - AMI PCI BIOS - GET BIOS AND CHIPSET??? VERSION AX = DA8Ch CL = subfunction 00h get BIOS version string ES:DI -> 12-byte buffer for version string 01h get chipset ??? BL = what to retrieve (00h,01h) ES:DI -> 12-byte buffer for chipset info??? Return: CF clear if successful ES:DI buffer filled CF set on error AH = error code (86h unsupported subfunction) Notes: the v1.00.05.AX1 BIOS returns "1.00.05.AX1 " as its version string subfunction 01h returns five bytes read from the chipset registers at C000h-C004h (BL=00h) or C200h-C204h (BL=01h), padded to 12 bytes with NULs. On my machine, the results were 86h 80h A3h 04h 46h and 86h 80h 84h 04h 0Fh, respectively; on another machine, the results were identical except that the last byte was 07h instead of 0Fh SeeAlso: AX=DB04h ----------15DA8E----------------------------- INT 15 U - AMI PCI BIOS - ??? AX = DA8Eh ??? Return: CF clear if successful ??? CF set on error AH = error code (86h unsupported subfunction) Note: in the v1.00.05.AX1 BIOS, this call always returns failure ----------15DA92----------------------------- INT 15 U - AMI PCI BIOS - GET CPU TYPE AND SPEED AX = DA92h Return: CF clear (successful) AL = CPU stepping (see also #0402 at INT 15/AH=C9h) AH = CPU model BL = CPU family (05h = Pentium, etc.) CX = external clock speed??? in BCD (0040h,0050h,0060h,0066h are possible return values on my Pentium with the Intel "Neptune" chipset) EAX high word destroyed Note: 90 MHz and faster Pentium CPUs can be configured to run at 1.0, 1.5, or 2.0 times the external clock speed, i.e. a typical 90 MHz Pentium system will run the motherboard at 60 MHz (my 90 MHz Pentium returns 0060h in CX) SeeAlso: AH=C9h ----------15DA99----------------------------- INT 15 U - AMI PCI BIOS - GET/SET ??? FLAG AX = DA99h CL = subfunction 00h check if ??? 01h set ??? flag 02h clear ??? flag Return: CF clear if successful AH = ??? (00h,01h) AL = 00h CF set on error AH = error code (86h unsupported subfunction) Note: the flag is stored in bit 0 of CMOS RAM location 2Ch for BIOS v1.00.05.AX1 --------b-15DB00----------------------------- INT 15 U - AMI BIOS - Flash ROM - ??? AX = DB00h DS:SI -> ??? ES:DI -> ??? Return: CF clear if successful CF set on error AH = status (86h if not implemented) Note: used by FMUP.EXE, Intel's Flash Memory Update utility SeeAlso: AH=DAh,AX=DB01h,AX=DB04h --------b-15DB01----------------------------- INT 15 U - AMI BIOS - Flash ROM - GET BIOS SUBSYSTEM INFORMATION AX = DB01h CL = BIOS subsystem information identifier (see #2618) Return: CF clear if successful AX = 0000h ES:DI -> 56-byte record describing subsystem (see #2619) CF set on error AH = status (01h,86h) AL = 00h Note: used by FMUP.EXE, Intel's Flash Memory Update utility SeeAlso: AX=DB00h,AX=DB02h (Table 2618) Values for AMI BIOS v1.00.05.AX1 subsystem identifier: 00h recovery code 01h system BIOS 02h PCI configuration data 03h logo data area 04h system BIOS/Language (one system) configuration utility (another system) SeeAlso: #2619 Format of AMI BIOS v1.00.05.AX1 subsystem information: Offset Size Description (Table 2619) 00h BYTE subsystem identifier (see #2618) 01h WORD subsystem size in bytes 03h WORD ??? 05h BYTE flag??? (zero/nonzero) 06h BYTE ??? 07h BYTE ??? 08h 24 BYTEs subsystem name 20h BYTE subsystem identifier??? 21h BYTE flag??? (00h or FFh) 22h BYTE ??? (01h,03h seen) 23h 5 BYTEs ??? (apparently always 00h) 28h 16 BYTEs version string??? --------b-15DB02----------------------------- INT 15 U - AMI BIOS - Flash ROM - GET SIZE OF ??? CODE AX = DB02h Return: CF clear AX = 0000h BX = size of ??? in bytes Note: used by FMUP.EXE, Intel's Flash Memory Update utility SeeAlso: AX=DB00h,AX=DB03h --------b-15DB03----------------------------- INT 15 U - AMI BIOS - Flash ROM - GET ??? CODE AX = DB03h DS:SI -> ??? ES:DI -> buffer for ??? code BX = ??? DX = ??? Return: CF clear if successful AH = ??? BX = ??? DX = ??? CF set on error AH = error code Notes: the entry point for the copied code (which is fully relocatable) is the very first byte (see #2620) used by FMUP.EXE, Intel's Flash Memory Update utility SeeAlso: AX=DB00h,AX=DB02h (Table 2620) Call AMI BIOS ??? code with: AL = function 00h 01h 02h perform cold reboot DS:SI -> ??? ES:DI -> ??? Return: AH = status 00h successful 01h invalid function 02h ??? 03h ??? 04h ??? Note: DS:SI and ES:DI are ignored for function 02h --------b-15DB04----------------------------- INT 15 U - AMI BIOS - Flash ROM - GET BIOS REVISION AX = DB04h Return: CF clear BL:BH:DL:DH = BIOS revision string ('AX1 ' for v1.00.05.AX1, 'AV0M' for v1.00.03.AV0M) CL = BIOS major version??? (01h) CH = BIOS minor version??? (00h) AL = ??? (02h) Note: used by FMUP.EXE, Intel's Flash Memory Update utility SeeAlso: AX=DA05h,AX=DA15h,AX=DA8Ch,AX=DB00h,AX=DB03h --------Q-15DE00----------------------------- INT 15 - DESQview - GET PROGRAM NAME AX = DE00h Return: AX = offset into DESQVIEW.DVO of program most recently selected from the "Switch Windows" menu (see #0412) Note: always returns AX=0000h under DESQview/X SeeAlso: AX=DE07h Format of program entry in DESQVIEW.DVO: Offset Size Description (Table 0412) 00h BYTE length of name (FFh if end of file) 01h N BYTEs name 2 BYTEs keys to invoke program (second = 00h if only one key used) BYTE program type 00h normal program 04h divider 80h Delete a Program 81h Change a Program WORD ??? apparently always 0000h --------Q-15DE01----------------------------- INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU AX = DE01h Return: nothing Notes: reads DESQVIEW.DVO, disables Open menu if file not in current directory NOP for DESQview/X --------Q-15DE02----------------------------- INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW AX = DE02h Return: nothing Note: this call is a NOP in DV 2.x SeeAlso: AX=DE03h --------Q-15DE03----------------------------- INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW AX = DE03h Return: AX = ??? for current window BX = ??? for current window Note: this call is a NOP in DV 2.x SeeAlso: AX=DE02h --------Q-15DE04----------------------------- INT 15 - DESQview - GET AVAILABLE COMMON MEMORY AX = DE04h Return: BX = bytes of common memory available CX = largest block available DX = total common memory in bytes SeeAlso: AX=DE05h,AX=DE06h --------Q-15DE05----------------------------- INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY AX = DE05h Return: BX = KB of memory available CX = largest block available DX = total conventional memory in KB SeeAlso: AX=DE04h,AX=DE06h --------Q-15DE06----------------------------- INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY AX = DE06h Return: BX = KB of expanded memory available CX = largest block available DX = total expanded memory in KB SeeAlso: AX=DE04h,AX=DE05h --------Q-15DE07----------------------------- INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER AX = DE07h Return: AX = number of program as it appears on the "Switch Windows" menu Note: this API call may be made from a hardware interrupt handler SeeAlso: AX=DE00h --------Q-15DE08----------------------------- INT 15 - DESQview - GET ??? AX = DE08h Return: AX = 0000h if ??? is not set to the current task 0001h if ??? is set to the current task --------Q-15DE09----------------------------- INT 15 - DESQview - UNIMPLEMENTED AX = DE09h Return: nothing (NOP in DV 1.x and 2.x) --------Q-15DE0A----------------------------- INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE AX = DE0Ah BL = character Return: character displayed, next call will display in next position (which wraps back to the start of the line if off the right edge of screen) Notes: displays character on bottom line of *physical* screen, regardless of current size of window (even entirely hidden) does not know about graphics display modes, just pokes the characters into display memory this API call may be made from a hardware interrupt handler SeeAlso: AX=1003h --------Q-15DE0B----------------------------- INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED AX = DE0Bh BL = API level minor version number BH = API level major version number Return: AX = maximum API level (AH = major, AL = minor) Notes: if the requested API level is greater than the version of DESQview, a "You need a newer version" error window is popped up the API level defaults to 1.00, and is inherited by child tasks --------Q-15DE0C----------------------------- INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY AX = DE0Ch BX = number of bytes Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+) Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient system memory SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h --------Q-15DE0D----------------------------- INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY AX = DE0Dh ES:DI -> previously allocated block Return: nothing SeeAlso: AX=1002h,AX=DE0Ch --------Q-15DE0E----------------------------- INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME AX = DE0Eh ES:DI -> name to find (see #0413) CX = length of name Return: BX = 0000h not found 0001h found DS:SI = object handle SeeAlso: AH=12h/BH=11h,AH=12h/BX=1200h"GETNAME" (Table 0413) Values for special DESQview mailbox names: "COM1" ... "COM4" RBcomm using COM1 ... COM4 "DESQview/X Help Engine" "DESQview/X Network Server" Network Manager "DESQview X Server0" X-Windows server "DESQview X Server7" X-Windows printing service "INBOX" DESQview/X LPD requests "OUTBOX" DESQview/X LPD responses "WAITBOX" semaphore to synchronize DESQview/X LPD communications "_DVNM_" DV/X v1.10 network manager --------Q-15DE0F----------------------------- INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS AX = DE0Fh Return: AX and BX destroyed (seems to be bug, weren't saved&restored) Notes: sends a manager stream with opcodes AEh, BDh, and BFh to task's window enables an additional mouse mode --------Q-15DE10----------------------------- INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM AX = DE10h BH = scan code BL = character Return: nothing Notes: a later read will get the keystroke as if it had been typed by the user multiple pushes are read last-in first-out if a script exists for the pushed key in the current application, the script will be executed early copies of DV 2.00 destroy AX, BX, ES, and DI SeeAlso: INT 16/AH=05h --------Q-15DE11BL00------------------------- INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION AX = DE11h BL = 00h viewport will not move automatically nonzero viewport will move to keep cursor visible (default) Return: nothing --------Q-15DE12BX0000----------------------- INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET AX = DE12h BX = 0000h select normal style (linefeed only moves down) nonzero select C style (linefeed moves to start of next line) Return: nothing Note: set on a per-task basis, and inherited from the parent task --------Q-15DE13----------------------------- INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT AX = DE13h Return: BX = number of calls to BEGINC or ENTERC (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC (see INT 15/AX=101Ch) Note: this API call may be made from within a hardware interrupt handler SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch --------Q-15DE14----------------------------- INT 15 - DESQview v2.20+ - GET OBJECT TYPE AX = DE14h ES:DI -> object Return: BL = 00h not an object 08h window or task 09h mailbox 0Ah keyboard 0Bh timer 0Ch objectq 0Fh pointer 10h panel SeeAlso: AX=1016h --------Q-15DE15----------------------------- INT 15 - DESQview v2.20+ - SET ERROR HANDLING AX = DE15h BL = error handling mode 00h post system error on all error conditions 01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE messages sent to mailboxes which fail due to lack of system or common memory 02h (v2.26+) same as 01h, but also return null pointer for GETMEM calls which fail due to lack of system memory Return: nothing SeeAlso: AX=DE0Ch,AX=DE16h --------Q-15DE16----------------------------- INT 15 - DESQview v2.20+ - GET ERROR HANDLING AX = DE16h Return: BL = current mode 00h always post system error 01h return carry flag set on failed mailbox writes 02h return CF set on failed mailbox writes and NULL on failed GETMEM calls SeeAlso: AX=DE15h --------Q-15DE17----------------------------- INT 15 - DESQview v2.20-2.25 - reserved AX = DE17h Return: pops up "Programming error" window Note: AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25 SeeAlso: AX=1117h --------Q-15DE17----------------------------- INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT AX = DE17h BX = function 0000h get current mapping context without setting nonzero set new mapping context to BX Return: BX = mapping context in effect before call Notes: mapping contexts determine conventional-memory addressability; setting a mapping context ensures that the associated program and data areas are in memory for access. Usable by drivers, TSRs and shared programs. caller need not be running under DESQview this API call may be made from a hardware interrupt handler SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h --------Q-15DE18----------------------------- INT 15 - DESQview v2.20+ - internal - ??? AX = DE18h BP = function number high byte must be 10h low byte is function 00h set ??? BL = ??? (00h-10h, video mode???) BH = value to store 03h set ??? BL = ??? (stored in driver) 0Ah get ??? ES:DI -> 18-byte buffer to hold ??? Note: calls video driver (NOP for Hercules driver,probably CGA and MCGA also) --------Q-15DE19----------------------------- INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY AX = DE19h BX = number of bytes to allocate Return: AX = 0000h successful ES:DI -> allocated block nonzero insufficient memory Note: this API call may be made from within a hardware interrupt handler SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah --------Q-15DE1A----------------------------- INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY AX = DE1Ah ES:DI -> previously allocated block Return: AX = 0000h (successful) Note: this function may be called from within a hardware interrupt handler SeeAlso: AX=DE0Dh,AX=DE19h --------Q-15DE1B----------------------------- INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT AX = DE1Bh Return: nothing SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch --------Q-15DE1C----------------------------- INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT AX = DE1Ch Return: nothing Notes: similar to AX=101Bh, but begins the critical region without ensuring that DOS is free the official documentation states that this call should be paired with "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh this API call may be made from within a hardware interrupt handler SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh --------Q-15DE1D----------------------------- INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES AX = DE1Dh DX = segment of handle for task to receive keystroke BL = character BH = scan code Return: AX = 0000h if successful nonzero if receiver's keyboard buffer was full Notes: the key is treated as though the user had pressed it, ignoring any script which may be bound to the key, and using the current field table if the keyboard object is in field processing mode multiple PUTKEYs are seen in the order in which they are executed SeeAlso: AX=DE10h --------Q-15DE1E----------------------------- INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS AX = DE1Eh Return: CL = actual number of rows on screen CH = actual number of columns on screen BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+) Note: this API call may be made from a hardware interrupt handler SeeAlso: INT 10/AH=0Fh --------Q-15DE1F----------------------------- INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS AX = DE1Fh Return: BX = segment of task handle or 0000h if no tasks are using DOS Note: this API call may be made from within a hardware interrupt handler SeeAlso: AX=DE13h,INT 21/AH=34h --------Q-15DE20----------------------------- INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK AX = DE20h BX = segment of handle of task to interupt DX:CX -> FAR interrupt routine BP,SI,DI,DS,ES as required by interrupt routine Return: nothing Notes: unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task making the DISPATCHINT call multiple "DISPATCHINT" calls are processed in the order in which they were executed the FAR routine is entered with the current ES, DS, SI, DI, and BP values, using the task's internal stack (see AX=101Ah); only SS:SP needs to be preserved this API call may be made from within a hardware interrupt handler SeeAlso: AX=1021h,AX=DE2Ah --------Q-15DE21----------------------------- INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION AX = DE21h BX = new state 0000h turn off nonzero turn on Return: BX = old state of virtualization Notes: this API call may be made from within a hardware interrupt handler under DV 2.40 and 2.42, this call appears to have no effect and always returns a nonzero value in BX which appears to be the offset within the DV common memory segment of the caller's task object; it may only have an effect within a hardware interrupt handler SeeAlso: AX=1117h,AX=DE17h --------Q-15DE22----------------------------- INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS AX = DE22h DX = segment of task handle Return: DX = total amount of memory in paragraphs BX = amount of system memory in paragraphs CX = largest block of system memory available in paragraphs AX = memory flags (see #0414) Notes: if the task handle is a child task, the returned values will be for the process containing the task, rather than the task itself if the process's system memory is swapped out, BX,CX,DX remain unchanged, because the memory usage cannot be determined SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h Bitfields for DESQview process memory flags: Bit(s) Description (Table 0414) 0 system memory resides in shared memory 1 process's memory is swapped out 2 process's system memory is swapped out --------Q-15DE23----------------------------- INT 15 U - DESQview v2.31+ - ??? AX = DE23h BX = ??? IRQ number on first PIC? CX = ??? IRQ number on second PIC? Return: ??? Note: called by QEMM 6.00+ --------Q-15DE24----------------------------- INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION AX = DE24h BX = length of .DVP data CX = length of ??? string DS:SI -> ??? string ES:DI -> .DVP data (see #0317 at AX=102Ch) Return: BX = segment of task handle??? or 0000h on error Note: this call is similar to AX=102Ch except that it can interpret the extended DVP data SeeAlso: AX=102Ch --------Q-15DE25----------------------------- INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY AX = DE25h ES:DI -> 67-byte buffer for ASCIZ directory name Return: ES:DI buffer filled with directory from which DESQview was started BUG: DV 2.42 does not place a terminating NUL at the end of the directory name, so if the buffer is not cleared to zeros before the call, there is no way to tell where the directory name ends. This bug has been fixed in DV 2.52 (DV/X 1.02) SeeAlso: AX=DE2Eh,INT 21/AH=47h --------Q-15DE26----------------------------- INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS AX = DE26h Return: BX = segment of handle for task with keyboard focus Note: under DESQview/X, the X server always has the keyboard focus unless a "direct" window is active SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah --------Q-15DE27----------------------------- INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA AX = DE27h BX = type 0000h process 0001h task ES:DI -> list of Instance Item Structures (see #0415) Return: CF clear if successful AX = ??? BX = ??? CF set on error AX = error code??? 0004h invalid BX value Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h Format of DESQview Instance Item Structure [one element of list]: Offset Size Description (Table 0415) 00h WORD length of data area DESQview should save and restore on context switches (0000h = end of list) 02h DWORD pointer to area to be saved/restored --------Q-15DE28----------------------------- INT 15 U - DESQview v2.50+ - ??? AX = DE28h BX = segment of ??? or 0000h for default ??? Return: ??? Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. SeeAlso: AX=DE2Ah --------Q-15DE29BX0000----------------------- INT 15 U - DESQview/X - ??? AX = DE29h BX = 0000h ??? Return: CF clear if successful ??? CF set on error Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. under DESQview 2.60, this function and all other subfunctions of AX=DE29h always return CF set, as they are unique to DESQview/X --------Q-15DE29BX0001----------------------- INT 15 U - DESQview/X - ??? AX = DE29h BX = 0001h DX = segment of window handle Return: CF clear if successful AX = ??? DX = ??? CF set on error Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. --------Q-15DE29BX0002----------------------- INT 15 U - DESQview/X - ??? AX = DE29h BX = 0002h DX = segment of window handle Return: CF clear if successful AX = ??? DX = ??? CF set on error Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. --------Q-15DE29BX0003----------------------- INT 15 U - DESQview/X - ??? AX = DE29h BX = 0003h DX = segment of window handle Return: CF clear if successful ??? CF set on error Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. --------Q-15DE29BX0004----------------------- INT 15 U - DESQview/X - GET DISPLAY NAME AX = DE29h BX = 0004h CX = size of buffer in bytes DX = segment of window handle ES:DI -> buffer for display name Return: CF clear if successful buffer filled with ASCIZ display name (truncated if necessary) or null string if no display CF set on error Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. the name ":0" refers to the local display --------Q-15DE29BX0005----------------------- INT 15 U - DESQview/X - ??? AX = DE29h BX = 0005h ??? Return: CF clear if successful ??? CF set on error Note: under DESQview 2.60, this function and all other subfunctions of AX=DE29h always return CF set, as they are unique to DESQview/X --------Q-15DE2A----------------------------- INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK AX = DE2Ah BX = segment of handle for task to interrupt or 0000h for caller DX:CX -> interrupt routine BP,SI,DI,DS,ES as required by interrupt routine Return: nothing Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. this call is the same as AX=DE20h except that it will delay interrupting the specified task until after it has exited DOS SeeAlso: AX=1021h,AX=DE20h --------Q-15DE2B----------------------------- INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST AX = DE2Bh ES:DI -> starting object 0000h:0000h for first object in list??? Return: AX = status 0000h successful ES:DI -> next object of same type (window/non-window) 0001h failed (ES:DI was not a valid handle) Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. there are two separate lists, one for window/task objects and one for all other objects SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch --------Q-15DE2C----------------------------- INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION AX = DE2Ch DX = window information format version (0100h for DESQview 2.5x) BX = segment of window handle or 0000h for default ES:DI -> buffer for window information (see #0416) Return: AX = status 0000h successful Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh Format of DESQview window information: Offset Size Description (Table 0416) 00h BYTE task flag: 00h window, 01h task 01h BYTE process number if owner task 00h if non-owner task 02h WORD segment of owner's handle, 0000h if orphaned 04h WORD mapping context (see #0306 at AX=1016h) 06h BYTE task status (see #0417) 07h BYTE unused 08h WORD status bits (see #0418) 0Ah BYTE 01h if foreground-only window (Table 0417) Values for DESQview task status: 00h "Waiting" waiting for input 01h "Idle" keyboard poll limit reached 03h same as 01h 04h "Pausing" INT 15/AX=1000h pause called 04h DV/X direct: user did something to allow task switch 05h "ModeChg" video mode about to be changed 06h "ModeNtf" notify that video mode changed 07h "MoniCh" requested change to other monitor 08h "StartPgm" control relinquished to start new process 09h "MgrCan" made window manager CANCEL command 0Ah "Slicing" time slice expired 0Bh "Exit DOS" notify on DOS calls 0Ch "Enter DOS" process is re-entering DOS 0Dh "Terminate" INT 21/AH=4Ch or task freed 0Eh "BrkNxt" Control-Break pressed 0Fh "MgrCol" keyboard focus taken away 10h "PgmInt" interrupted by API call from another task 11h "BldOpen" call to INT 15/AX=DE01h Bitfields for DESQview task status bits: Bit(s) Description (Table 0418) 6 task is freeing another task 5 process is being created 4 user suspended process 3 process suspended itself 2 process is resized direct window (suspended) 1 process swapped out 0 DESQview process --------Q-15DE2D----------------------------- INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER AX = DE2Dh CX = direction FFFFh set socket handler DX:BX -> FAR function for socket interface must be of the format described under INT 63"DESQview" at #2121 other get socket handler Return: DX:BX -> socket handler (see #2121) Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. the "set" subfunction is normally called only by SOCKET.DVR SeeAlso: AX=DE2Eh,INT 63"DESQview",#2121 --------Q-15DE2E----------------------------- INT 15 U - DESQview v2.50+ - SOCKET API AX = DE2Eh DX:BX -> socket record (see #0420) 0000h:0000h to create a new socket record Return: CX = size of socket record in bytes DX:BX -> socket record which was used Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. socket records are allocated from common memory for Unix compatibility, each socket and connection on a socket is allocated a DOS file handle (referencing an SFT for NUL) which is used on various calls to specify which of possibly multiple connections is to be operated upon SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview" (Table 0419) Values for DESQview/X socket API function number: 0000h initialize socket??? 0001h "gethostname" 0002h "ioctl" check for input 0003h "sleep" delay for specified period 0004h "htons" convert word to network (big-endian) byte order 0005h "select" 0006h "bsd_close"/"so_close" close socket 0007h NOP 0008h "connect" initiate connection on socket 0009h "recv"/"recvfrom" read from socket 000Ah "socket" 000Bh ??? 000Ch "gethostbyname" 000Dh "send"/"sendto" write to socket 000Eh ??? (does something to all connections for process) 000Fh "getpid" get process identifier 0010h "gettimeofday" 0011h "bind" assign name to socket 0012h "listen" listen for connections on socket 0013h "accept" accept connection on socket 0014h connect to X server 0015h "gethostbyaddr" get host information for an address 0016h "getprotobyname" 0017h "getprotobynumber" 0018h "getservbyname" 0019h "getservbyport" 001Ah "getsockname" determine name bound to socket 001Bh "getpeername" get name of connected peer 001Ch "getsockopt"/"setsockopt" 001Dh "so_exit" close all sockets for calling process 001Eh "issock" determine whether file handle references socket 001Fh "so_attach" reattach previously detached socket 0020h "so_detach" temporarily detach socket 0021h "dvpath" get DESQview directory (see also AX=DE24h) 0022h "NewProc" start new application (see also AX=102Ch) 0023h "so_linkup" 0024h "CanonicalPath" canonicalize filename (see also INT 21/AH=60h) 0025h indirect INT 15h call 0026h Network Manager interface 0027h "so_unlink" close connection from "so_linkup" 0028h "raisepriority" 0029h "lowerpriority" 002Ah "so_private" ??? FFFFh "NetExit" (appears to be a NOP) Format of DESQview/X socket record: Offset Size Description (Table 0420) 00h WORD signature F0ADh 02h WORD function number (see #0419) 04h WORD returned error code (see #0440) 06h WORD maximum message size??? (usually 0400h) 08h WORD PSP segment to use or 0000h if socket not valid 0Ah WORD scratch space (JFT size) 0Ch DWORD scratch space (JFT address) 10h DWORD mailbox handle (initialized by function 0000h) 14h DWORD timer object handle (initialized by function 0000h) ---function 0000h--- 18h WORD (ret) ??? ---function 0001h--- 18h WORD (ret) status??? 1Ah 128 BYTEs (ret) ASCIZ hostname (empty string if not on network) 9Ah WORD maximum length of hostname to return ---function 0002h--- 18h WORD (ret) status 1Ah WORD socket's file handle 1Ch WORD IOCTL function 05h "FIONREAD" determine available input 06h "FIONBIO" set blocking state of socket 1Eh WORD (return, subfn 05h) number of bytes available for reading (call, subfn 06h) 0000h blocking, nonzero nonblocking ---function 0003h--- 18h 2 BYTEs unused 1Ah WORD delay time in seconds ---function 0004h--- 18h WORD (ret) result in network (big-endian) byte order 1Ah WORD value to convert to network byte order ---function 0005h--- 18h WORD (ret) number of handles meeting the specified conditions??? 1Ah WORD number of file handles in each bitset 1Ch DWORD bitset of socket handles to check for readability 20h DWORD bitset of socket handles to check for writability 24h DWORD bitset of socket handles to check for errors 28h WORD timeout in ??? or 0000h to block until some socket ready 2Ah DWORD ??? 2Eh DWORD ??? ---function 0006h--- 18h WORD (ret) status: 0000h if successful, FFFFh on error 1Ah WORD socket's file handle ---function 0008h--- 18h WORD (ret) status: 0000h if successful, FFFFh on error 1Ah WORD socket's file handle 1Ch WORD 0001h if socket name specified, 0000h if not 1Eh WORD length of socket name 20h N BYTEs name of socket to which to connect ---function 0009h--- 18h WORD (ret) number of bytes actually read, 0000h if connection closed, or FFFFh on error 1Ah WORD socket's file handle 1Ch WORD number of bytes to read 1Eh WORD flags 20h WORD 0000h if no source address desired 0001h if source address is to be stored (datagram sockets) 22h WORD length of source address 24h 110 BYTEs source address 92h 1K BYTEs buffer for data to be read ---function 000Ah--- 18h WORD (ret) socket's file handle or FFFFh on error 1Ah WORD address family (0001h,0002h) 1Ch WORD socket type 1Eh WORD protocol ---function 000Bh--- 18h WORD (ret) 0001h if ??? or FFFFh on error 1Ah WORD socket's file handle 1Eh WORD (call) ??? ---function 000Ch--- 18h 128 BYTEs ASCIZ hostname (special case if empty string or "unix") 98h ??? (ret) packed 'hostent' structure A2h ??? (ret) ??? ---function 000Dh--- 18h WORD (ret) number of bytes actually written or FFFFh on error 1Ah WORD socket's file handle 1Ch WORD number of bytes to write 1Eh WORD number of bytes to follow in subsequent writes??? 20h WORD flags 22h WORD 0000h if no destination specified, 0001h if destination present 24h WORD 0001h if broadcast message???, 0000h if not (ignored if no destination specified) 26h WORD length of destination address 28h 110 BYTEs destination address 96h 1K BYTEs buffer containing data to be written ---function 000Eh--- no additional fields ---function 000Fh--- 18h DWORD (ret) DESQview task handle of calling process ---function 0010h--- 18h DWORD (ret) current time 1Ch DWORD (ret) ??? ---function 0011h--- 18h WORD (ret) status: 0000h if successful, FFFFh on error 1Ah WORD socket's file handle 1Ch WORD length of name 1Eh N BYTEs buffer for socket name ---function 0012h--- 18h WORD (ret) status: 0000h if successful, FFFFh on error 1Ah WORD socket's file handle 1Ch WORD maximum backlog of pending connections allowed on socket ---function 0013h--- 18h WORD (ret) file handle for new connection or FFFFh on error 1Ah WORD listen()ing socket's file handle 1Ch WORD (call) length of buffer for connecting entity's address (ret) actual length of address 1Eh N BYTEs buffer for connecting entity's address (110 bytes???) ---function 0014h--- 18h WORD (ret) socket's file handle or FFFFh on error 1Ah 4 BYTEs (ret) ??? 1Eh WORD (ret) ??? 20h WORD (ret) ??? 22h 256 BYTEs ASCIZ X display name 122h ??? ---function 0015h--- 18h WORD (call) type of address??? (test for 0001h seen) 1Ah WORD (call) length of buffer for host address 1Ch 110 BYTEs buffer containing ASCIZ host address 8Ah WORD (ret) offset of official host name 8Ch WORD (ret) offset of alias list??? 8Eh WORD (ret) address type??? 90h WORD (ret) length of an address in bytes??? 92h WORD (ret) offset of address??? 9Ah N BYTEs (ret) buffer for hostname, alias list, and host address ---function 0016h--- 18h ??? buffer for ASCIZ protocol name 98h ??? ---function 0017h--- 18h WORD (call) protocol number 1Ah WORD (ret) ??? or 0001h ---function 0018h--- 18h 128 BYTEs buffer containing ASCIZ ??? 98h 128 BYTEs buffer containing ASCIZ ??? 118h WORD (ret) ??? ---function 0019h--- 18h WORD port number 1Ah 128 BYTEs (call) ASCIZ host name (ret) packed servent strctures??? 9Ah WORD (ret) ??? ---function 001Ah--- 18h WORD (ret) 0000h if successful, FFFFh on error 1Ah WORD socket's file handle 1Ch WORD (call) length of buffer for socket name (ret) actual length of socket name 1Eh N BYTEs buffer for socket name ---function 001Bh--- 18h WORD (ret) status: 0000h if successful, FFFFh on error 1Ah WORD socket's file handle 1Ch WORD (call) size of buffer for name (ret) actual size of name 1Eh N BYTEs buffer for peer's name ---function 001Ch--- 18h WORD (ret) status: 0000h if successful, FFFFh on error 1Ah WORD direction: 0000h to get, 0001h to set 1Ch WORD socket's file handle 1Eh WORD option level 20h WORD option name 22h WORD (call) length of buffer for option value (ret) actual length of option value 24h N BYTEs buffer for option value ---function 001Dh--- no additional fields ---function 001Eh--- 18h WORD (ret) status: 0000h ??? or 0001h ??? 1Ah WORD file handle which may or may not be a socket ---function 001Fh--- 18h WORD (ret) file handle or FFFFh on error 1Ah DWORD (call) pointer to Socket Context Record (see #0441) of a previously detached socket ---function 0020h--- 18h WORD (ret) status: 0000h if successful or FFFFh on error 1Ah WORD socket's file handle 1Ch DWORD (ret) pointer to Socket Context Record (see #0441) for the file handle ---function 0021h--- 18h 64 BYTEs buffer for DESQview startup directory (see AX=DE25h) ---function 0022h--- 18h DWORD (ret) task handle of new application 1Ch WORD size of .DVP data 1Eh 129 BYTEs ASCIZ ??? 9Fh N BYTEs .DVP data (see #0317 at AX=102Ch) ---function 0023h--- 18h WORD (ret) ??? or FFFFh on error 1Ah WORD socket's file handle??? ---function 0024h--- 18h WORD (ret) DOS error code (see #0885 at INT 21/AH=59h) 0000h if successful 1Ah 129 BYTEs ASCIZ filename/pathname 11Bh 129 BYTEs ASCIZ canonicalized filename/pathname (see INT 21/AH=60h) ---function 0025h--- 18h WORD value of AX 1Ah WORD value of BX 1Ch WORD (call) value of CX for call if AH value other than 12h (call) number of stack parameters if AH value is 12h (ret) returned CX for calls other than INT 15/AH=12h 1Eh WORD value of DX 20h WORD value of DI 22h WORD value of SI 24h WORD value of DS 26h WORD value of ES 28h WORD (ret) value of FLAGS after call 2Ah N DWORDs (call) stack parameters for INT 15/AH=12h call (ret) stack results from INT 15/AH=12h call ---function 0026h--- 18h WORD (call) Network Manager subfunction (see #0421) (ret) status??? (0000h on error) 1Ah WORD (call) size of parameter data (ret) size of returned data 1Ch N BYTEs (call) parameter data required by call (see #0422,#0423,#0439) (ret) result data (see #0432,#0433,#0438) ---function 0027h--- 18h WORD (ret) status: 0000h if successful, FFFFh on error 1Ah WORD socket's file handle ---functions 0028h,0029h--- 18h WORD (call) file handle for which to set priority low/high FFFFh to change calling task's priority ---function 002Ah--- no additional fields (Table 0421) Values for DESQview/X Network Manager subfunction: 0004h "so_exit"??? 0005h "gethostbyname" 0006h "gethostname" 0009h "socket" 000Dh "gethostbyaddr" 000Fh "getprotobyname" 0010h get protocol name for protocol number 0011h "getservbyname" 0012h "getservbyport" (see #0425) 0013h "getsockname"??? (see #0426) 0016h "shutdown" (see #0427) 0017h kill Network Manager 0018h "getpeername"??? (see #0428) 0019h ??? (called by socket function 0000h) (see #0429) 001Ah ??? (see #0430) 001Bh "so_linkup" (see #0431) 001Dh "getnetstatus" get network services (see #0432) 001Fh "getpwuid" 0020h "getpwnam" 0021h "getpwvar" 0022h "crypt" 0023h "so_unlink" 0024h "getlogin" (see #0433) 0028h "sethostent" 0029h "gethostent" 002Ah "soaddhost" 002Bh "soupdatehost" 002Ch "sodeletehost" 002Dh "setservent" 002Eh "getservent" 002Fh "setpwent" 0030h "getpwent" (see #0434) 0031h "sethostpath" (see #0435) 0032h "endservent" 0033h "endhostent" 0034h "getnettype" get IP network number (see #0436) 0035h ??? (pops up Network Manager window) 0037h "getnettimeout" (see #0437) 0038h get machine name and IP address (see #0438) 0039h "getuid" (see #0439) ---DV/X v2.0+ --- 0041h "deletepwnam" 0045h "renamepw" Format of Function 0026h/Subfunction 000Fh data: Offset Size Description (Table 0422) 00h 8 BYTEs (ret) ??? Format of Function 0026h/Subfunction 0010h data: Offset Size Description (Table 0423) 00h 2 BYTEs (ret) ??? 02h WORD (ret) protocol number 04h WORD (call) protocol number for which to get name 06h WORD (ret) ??? 08h var (ret) ASCIZ protocol name N var (ret) ASCIZ protocol name Format of Function 0026h/Subfunction 0011h data: Offset Size Description (Table 0424) 00h 8 BYTEs ??? 08h var (ret) ASCIZ protocol name var (ret) ASCIZ ??? name var (ret) ASCIZ ??? name Format of Function 0026h/Subfunction 0012h data: Offset Size Description (Table 0425) 00h 8 BYTEs (ret) ??? Format of Function 0026h/Subfunction 0013h data: Offset Size Description (Table 0426) 00h 116 BYTEs (ret) ??? Format of Function 0026h/Subfunction 0016h ("shutdown") data: Offset Size Description (Table 0427) 00h WORD (ret) shutdown status (0000h successful, FFFFh error) 02h 4 BYTEs (ret) ??? 04h WORD (call) socket handle 06*h WORD (call) what (0 = receives, 1 = sends, 2 = both) Format of Function 0026h/Subfunction 0018h data: Offset Size Description (Table 0428) 00h 116 BYTEs (ret) ??? Format of Function 0026h/Subfunction 0019h data: Offset Size Description (Table 0429) 00h 4 BYTEs (ret) ??? 04h DWORD (ret) task handle of ??? Format of Function 0026h/Subfunction 001Ah data: Offset Size Description (Table 0430) 00h 38 BYTEs (ret) ??? Format of Function 0026h/Subfunction 001Bh data: Offset Size Description (Table 0431) 00h 10 BYTEs (ret) ??? Format of Function 0026h/Subfunction 001Dh return data [array]: Offset Size Description (Table 0432) 00h WORD ??? or FFFFh if end of array 02h 7 BYTEs ??? 09h 27 BYTEs ASCIZ name of service Format of Function 0026h/Subfunction 0024h return data: Offset Size Description (Table 0433) 00h var ASCIZ username Format of Function 0026h/Subfunction 0030h data: Offset Size Description (Table 0434) 00h WORD (call) UID or 0000h for current user (ret) ??? 02h WORD (ret) UID 04h 6 BYTEs (ret) ??? 0Ah var (ret) ASCIZ username var (ret) ASCIZ encrypted password var (ret) ASCIZ initial ("home") directory Format of Function 0026h/Subfunction 0031h ("sethostpath") data: Offset Size Description (Table 0435) 00h 4 BYTEs ??? 04h 144 BYTEs ASCIZ ??? Format of Function 0026h/Subfunction 0034h data: Offset Size Description (Table 0436) 00h 1-3 BYTEs IP network number of caller's machine (low byte first) Format of Function 0026h/Subfunction 0037h ("getnettimeout") return data: Offset Size Description (Table 0437) 00h WORD (ret) timeout 02h 2 BYTEs (ret) ??? Format of Function 0026h/Subfunction 0038h return data: Offset Size Description (Table 0438) 00h BYTE ??? 01h 4 BYTEs IP address 05h var ASCIZ machine name ??? Format of Function 0026h/Subfunction 0039h ("getuid") return data: Offset Size Description (Table 0439) 00h WORD user ID 02h 2 BYTEs ??? SeeAlso: #0435,#0438 (Table 0440) Values for DESQview/X socket error code: 0000h successful 0009h "BADF" bad file handle 000Ch "ENOMEM" out of memory 000Eh "EFAULT" bad address 0016h "EINVAL" invalid argument 0018h "EMFILE" too many open files 0020h "EPIPE" ??? broken pipe 0023h "EWOULDBLOCK" operation cannot be completed at this time 0024h "EINPROGRESS" operation now in progress 0026h "ENOTSOCK" socket invalid 0028h "EMSGSIZE" message too long to send atomically 002Ch "ESOCKTNOSUPPORT" socket type not supported 002Fh "EAFNOSUPPORT" address family not supp. by protocol fam. 0031h "EDOM" argument too large 0038h "EISCONN" socket is already connected 0039h "ENOTCONN" socket is not connected Format of DESQview/X Socket Context Record: Offset Size Description (Table 0441) 00h DWORD pointer to next Socket Context Record, 0000h:0000h if last 04h WORD SFT index for socket, 00FFh if not connected, FFFFh if detached 06h WORD PSP segment of owner or 0000h 08h WORD mapping context of owning window (see #0306 at AX=1016h) 0Ah 2 BYTEs ??? 0Ch WORD address family 0Eh WORD socket type 10h WORD protocol 12h WORD socket state 0001h created 0002h bound 0003h listening??? 0005h connected 14h DWORD timer object handle 18h DWORD object handle (mailbox???) 1Ch DWORD object handle of parent of above object or 0000h:0000h 20h DWORD pointer to ??? or 0000h 24h 6 BYTEs ??? 2Ah WORD file handle for socket or FFFFh 2Ch 2 BYTEs ??? 2Eh WORD nonzero if socket nonblocking ---network connections only--- 30h 2 BYTEs ??? 32h WORD ??? 34h 4 BYTEs (big-endian) IP address of remote 38h 6 BYTEs ??? --------Q-15DE2F----------------------------- INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE? AX = DE2Fh Return: BX = status 0001h keyboard focus has been given to a direct window since the last call 0000h if not Notes: DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10. Quarterdeck stated that this call would not be available under future versions of DESQview Classic, but it is still present in v2.60 --------Q-15DE30----------------------------- INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION AX = DE30h Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X Notes: DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10. you must first check the DESQview version to verify that it is 2.50 or greater SeeAlso: INT 21/AH=2Bh/CX=4445h --------Q-15DE31----------------------------- INT 15 - DESQview/X v1.10 - ??? AX = DE31h CX = ??? 0000h ??? nonzero ??? ??? Return: ??? --------b-15DF------------------------------- INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL AH = DFh AL = function 00h turn on Turbo mode 01h turn off Turbo mode 02h set Turbo mode according to hardware switch SeeAlso: INT 13/AX=FFFFh --------b-15E00F----------------------------- INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH AX = E00Fh ES:BX -> start of 2nd processor's execution Return: AL = status 0Fh successful 00h failure SeeAlso: AX=E10Eh,AX=E200h --------b-15E10E----------------------------- INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH AX = E10Eh ES:BX -> start of 2nd processor's execution Return: AL = status 0Fh successful (halted) 00h failure (not halted) SeeAlso: AX=E00Fh,AX=E200h --------b-15E200----------------------------- INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE AX = E200h Return: AX bit 15 set if 2nd processor available SeeAlso: AX=E00Fh,AX=E10Eh --------b-15E4------------------------------- INT 15 - Tandy??? - ??? AH = E4h AL = subfunction 21h, 89h, 8Ah, 8Bh called by 386MAX v6.01 DL = ??? Return: DL = 00h if successful??? Note: the section of code in 386MAX which calls these functions also checks whether the ROM BIOS has both Tandy and Phoenix Technologies signatures if these calls fail; the Tandy 1000SL/TL BIOS does not support this function, however, returning the usual CF set/AH=86h for "unsupported function". --------b-15E4------------------------------- INT 15 - Compaq ROM BIOS 03/08/93 and newer - ??? AH = E4h AL = subfunction 00h get ??? Return: CF clear AH = 00h CX = 0000h BX = ??? (read from [XBDA:0094h]) 01h,02h unsupported by this ROM version Return: CF set, AH = 86h 80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ??? Return: CF clear AH = 00h CX = 0000h BX = ??? 81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs Return: CF set, AH = 86h Notes: functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM these functions are not supported by the 7/26/93 LTE Lite 386 ROM --------b-15E800----------------------------- INT 15 - Compaq Contura - GET ??? AX = E800h Return: AX = 0000h BH = 00h BL = ??? (read from port 0C7Ch) CH = ??? CL = ??? DX = 0000h Note: also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS --------b-15E800----------------------------- INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE??? AX = E800h BX = ??? (0000h) Return: CF clear if successful BH = 02h BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h) CF set on error others??? Notes: used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether the Enhanced Parallel Port expected by that driver is available used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether volume control hardware expected by that driver is available --------b-15E800----------------------------- INT 15 - Compaq Prolinea - GET ??? AX = E800h BX = ??? (1369h) Return: BH = 01h BL = ??? others??? Note: used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether the fix that driver applies is required (will not install if BX on return is other than 010Eh or 010Fh) --------b-15E801----------------------------- INT 15 - Compaq Contura - GET ??? AX = E801h Return: CF clear AX = extended memory in K (read from CMOS locations 30h and 31h) BH = ??? BL = ??? CX = extended memory in K (read from CMOS locations 17h and 18h) DX = ??? Note: also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS SeeAlso: AX=E802h"Compaq" --------b-15E801----------------------------- INT 15 - Dell XPS P90 - DISPLAY MEMORY FOR >64M CONFIGURATIONS AX = E801h Return: AX = extended memory size in K??? (max 3C00h = 15MB) BX = extended memory size in 64K blocks??? Note: supported by the A03 level (6/14/94) and later XPS P90 BIOSes SeeAlso: AX=E820h"Dell" --------b-15E802----------------------------- INT 15 - Compaq Contura - GET ??? AX = E802h Return: CF clear AX = 0000h BX = ??? CX = 0000h Note: this function is also supported by the LTE Lite 25c, 25E, and 486; not supported by LTE Lite 20 and 25. SeeAlso: AX=E801h"Compaq" --------b-15E820----------------------------- INT 15 - Dell XPS P90 - GET MEMORY MAP AX = E820h EDX = 534D4150h ('SMAP') EBX = ??? or 00000000h for default ECX = number of bytes to copy ES:DI -> buffer for result Return: CF clear if successful ES:DI buffer filled EBX = next offset from which to copy or 00000000h if all done high word of ECX may be cleared CF set on error AH = error code (86h) (see #0372 at INT 15/AH=80h) Notes: supported by the A03 level (6/14/94) and later XPS P90 BIOSes a maximum of 20 bytes will be transferred at one time, even if ECX is higher SeeAlso: AX=E801h"Dell" --------m-15F200CX454D----------------------- INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALISATION CHECK ??? AX = F200h CX = 454Dh Return: CF clear if hardware already initialised BX = upper RAM areas in use bit 0: C000-C3FF bit 1: C400-C7FF ... bit 11: EC00-EFFF CF set if hardware not initialised yet --------B-1600------------------------------- INT 16 - KEYBOARD - GET KEYSTROKE AH = 00h Return: AH = BIOS scan code AL = ASCII character Notes: on extended keyboards, this function discards any extended keystrokes, returning only when a non-extended keystroke is available the BIOS scan code is usually, but not always, the same as the hardware scan code processed by INT 09. It is the same for ASCII keystrokes and most unshifted special keys (F-keys, arrow keys, etc.), but differs for shifted special keys. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,INT 18/AH=00h --------B-1601------------------------------- INT 16 - KEYBOARD - CHECK FOR KEYSTROKE AH = 01h Return: ZF set if no keystroke available ZF clear if keystroke available AH = BIOS scan code AL = ASCII character Note: if a keystroke is present, it is not removed from the keyboard buffer; however, any extended keystrokes which are not compatible with 83/84- key keyboards are removed in the process of checking whether a non-extended keystroke is available SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h --------B-1602------------------------------- INT 16 - KEYBOARD - GET SHIFT FLAGS AH = 02h Return: AL = shift flags (see #0442) SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h Bitfields for keyboard shift flags: Bit(s) Description (Table 0442) 7 Insert active 6 CapsLock active 5 NumLock active 4 ScrollLock active 3 Alt key pressed (either Alt on 101/102-key keyboards) 2 Ctrl key pressed (either Ctrl on 101/102-key keyboards) 1 left shift key pressed 0 right shift key pressed SeeAlso: #0447,#2345 --------B-1603------------------------------- INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY AH = 03h AL = subfunction 00h set default delay and rate (PCjr and some PS/2) 01h increase delay before repeat (PCjr) 02h decrease repeat rate by factor of 2 (PCjr) 03h increase delay and decrease repeat rate (PCjr) 04h turn off typematic repeat (PCjr and some PS/2) 05h set repeat rate and delay (AT,PS) BH = delay value (00h = 250ms to 03h = 1000ms) BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec) 06h get current typematic rate and delay (newer PS/2s) Return: BL = repeat rate (see above) BH = delay (see above) Note: use INT 16/AH=09h to determine whether some of the subfunctions are supported SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER" --------B-1604------------------------------- INT 16 - KEYBOARD - SET KEYCLICK (PCjr only) AH = 04h AL = keyclick state 00h off 01h on SeeAlso: AH=03h,AH=04h"K3PLUS" --------K-1604------------------------------- INT 16 - K3PLUS v6.22+ - SET KEYCLICK AH = 04h AL = keyclick state 00h keyclick off, leave loudness setting unchanged 01h keyclick on, leave loudness setting unchanged else bit 0: keyclick enabled if set bits 7-1: new keyclick loudness (non-zero) Note: Applications which try to set a new loudness, but are unsure of the results of other INT 16/AH=04h implementations, should set the new loudness first, and then call this function again with AL=01h or AL=00h SeeAlso: AH=03h,AH=04h"KEYBOARD" --------B-1605------------------------------- INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only) AH = 05h CH = scan code CL = ASCII character Return: AL = status 00h if successful 01h if keyboard buffer full Notes: under DESQview, a number of "keystrokes" invoke specific DESQview-related actions when they are read from the keyboard buffer (see #0443) similarly, some "keystrokes" invoke special functions on the HP 100LX and HP 200LX (see #0444) SeeAlso: AH=00h,AH=25h"K3",AH=71h,AH=FFh,INT 15/AX=DE10h (Table 0443) Values for pseudo-keystrokes for DESQview: 38FBh or FB00h switch to next window (only if main menu already popped up) 38FCh or FC00h pop up DESQview main menu 38FEh or FE00h close the current window 38FFh or FF00h pop up DESQview learn menu (Table 0444) Values for pseudo-keystrokes for HP 100LX/200LX: EE00h pop up topcard display and set other system manager applications into sleep mode --------B-1605------------------------------- INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only) AH = 05h AL = function 01h set keyboard layout to French 02h set keyboard layout to German 03h set keyboard layout to Italian 04h set keyboard layout to Spanish 05h set keyboard layout to UK 80h check if function supported Return: AL <> 80h if supported Return: ??? Note: this function is called by the DOS 3.2 KEYBxx.COM SeeAlso: AH=92h,AH=A2h --------B-1609------------------------------- INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY AH = 09h Return: AL = supported keyboard functions (see #0445) Notes: this function is only available if bit 6 of the second feature byte returned by INT 15/AH=C0h is set (see #0383) reportedly, the Award Modular BIOS v4.50G returns the keyboard function flags in AH instead of AL, and provides this function even though its availability is not indicated by INT 15/AH=C0h SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h Bitfields for supported keyboard functions: Bit(s) Description (Table 0445) 7 reserved 6 INT 16/AH=20h-22h supported (122-key keyboard support) 5 INT 16/AH=10h-12h supported (enhanced keyboard support) 4 INT 16/AH=0Ah supported 3 INT 16/AX=0306h supported 2 INT 16/AX=0305h supported 1 INT 16/AX=0304h supported 0 INT 16/AX=0300h supported SeeAlso: #0385 --------B-160A------------------------------- INT 16 - KEYBOARD - GET KEYBOARD ID AH = 0Ah Return: BX = keyboard ID (see #0446) Note: check return value from AH=09h to determine whether this function is supported SeeAlso: AH=09h (Table 0446) Values for keyboard ID: 0000h no keyboard attached 41ABh Japanese "G" keyboard (translate mode) MF2 Keyboard (usually in translate mode) 54ABh Japanese "P" keyboard (translate mode) 83ABh Japanese "G" keyboard (pass-through mode) MF2 Keyboard (pass-through mode) 84ABh Japanese "P" keyboard (pass-through mode) 90ABh old Japanese "G" keyboard 91ABh old Japanese "P" keyboard 92ABh old Japanese "A" keyboard --------B-1610------------------------------- INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only) AH = 10h Return: AH = BIOS scan code AL = ASCII character Notes: if no keystroke is available, this function waits until one is placed in the keyboard buffer the BIOS scan code is usually, but not always, the same as the hardware scan code processed by INT 09. It is the same for ASCII keystrokes and most unshifted special keys (F-keys, arrow keys, etc.), but differs for shifted special keys. unlike AH=00h, this function does not discard extended keystrokes INT 16/AH=09h can be used to determine whether this function is supported, but only on later model PS/2s SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h --------B-1611------------------------------- INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only) AH = 11h Return: ZF set if no keystroke available ZF clear if keystroke available AH = BIOS scan code AL = ASCII character Notes: if a keystroke is available, it is not removed from the keyboard buffer unlike AH=01h, this function does not discard extended keystrokes some versions of the IBM BIOS Technical Reference erroneously report that CF is returned instead of ZF INT 16/AH=09h can be used to determine whether this function is supported, but only on later model PS/2s SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h --------B-1612------------------------------- INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only) AH = 12h Return: AL = shift flags 1 (same as returned by AH=02h) (see #0447) AH = shift flags 2 (see #0448) Notes: AL bit 3 set only for left Alt key on many machines AH bits 7 through 4 always clear on a Compaq SLT/286 INT 16/AH=09h can be used to determine whether this function is supported, but only on later model PS/2s many BIOSes (including at least some versions of Phoenix and AMI) will destroy AH on return from functions higher than AH=12h, returning 12h less than was in AH on entry (due to a chain of DEC/JZ instructions) SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh Bitfields for keyboard shift flags 1: Bit(s) Description (Table 0447) 7 Insert active 6 CapsLock active 5 NumLock active 4 ScrollLock active 3 Alt key pressed (either Alt on 101/102-key keyboards) 2 Ctrl key pressed (either Ctrl on 101/102-key keyboards) 1 left shift key pressed 0 right shift key pressed SeeAlso: #0442,#0448 Bitfields for keyboard shift flags 2: Bit(s) Description (Table 0448) 7 SysReq key pressed (SysReq is often labeled SysRq) 6 CapsLock pressed 5 NumLock pressed 4 ScrollLock pressed 3 right Alt key pressed 2 right Ctrl key pressed 1 left Alt key pressed 0 left Ctrl key pressed SeeAlso: #0447 --------J-1613------------------------------- INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL AH = 13h AL = function 00h set shift status DX = shift status (see #0449), must preserve internal status bits 01h get shift status Return: DX = current shift status (see #0449) Note: these functions are supplied by the Japanese Front-End Processor SeeAlso: AH=14h,INT 21/AX=6301h Bitfields for DOS/V shift status: Bit(s) Description (Table 0449) 0 full-size rather than half-size 2-1 character input mode 00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused 5-3 internal status 6 Romaji enabled 7 Katakana to Kanji conversion enabled 15-8 internal status --------J-1614------------------------------- INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL AH = 14h AL = function 00h enable display 01h disable display 02h get display state Return: AL = current state (00h enabled, 01h disabled) Desc: control the screen-bottom shift status row(s) for the Japanese Front-End Processor SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh --------B-1620------------------------------- INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only) AH = 20h Return: AH = BIOS scan code (see AH=10h for details) AL = ASCII character Note: use AH=09h to determine whether this function is supported SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h --------b-1620------------------------------------ INT 16 - HUNTER 16 - SET TEMPORARY SHIFT AH = 20h AL = shift status (see #0450) Notes: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. the user can override the specified settings by pressing the keys Bitfields for HUNTER 16 shift status: Bit(s) Description (Table 0450) 4 Scroll Lock on 5 Num Lock on 6 Caps Lock on --------K-1620------------------------------- INT 16 O - K3 v1.5+, K3PLUS v5.0+ - GET EXTENDED BUFFER STATE AH = 20h Return: AX = K3 version ES:BX -> extended keyboard buffer start ES:DX -> extended keyboard buffer end ES:SI -> next keystroke ES:DI -> last keystroke in buffer CX = number of keystrokes in buffer Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the K3 extended German keyboard driver by Martin Gerdes published in c't magazine in 1988 Note: this function is normally unsupported under K3PLUS v6.0+; use AX=AF20h instead SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h --------B-1621------------------------------- INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only) AH = 21h Return: ZF set if no keystroke available ZF clear if keystroke available AH = BIOS scan code AL = ASCII character Notes: use AH=09h to determine whether this function is supported some versions of the IBM BIOS Technical Reference erroneously report that CF is returned instead of ZF SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h --------b-1621------------------------------------ INT 16 - HUNTER 16 - CONTROL SHIFT KEYS AH = 21h AL = shift keys to control (see #0442) BL = shift state for disabled keys Note: If a bit in AL is set the key is disabled and set to the state of the corresponding bit in BL SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER" --------B-1622------------------------------- INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only) AH = 22h Return: AL = shift flags 1 (see #0447) AH = shift flags 2 (see #0448) Note: use AH=09h to determine whether this function is supported SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h --------b-1622------------------------------------ INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL AH = 22h AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled) BX = 0708h CX = 0910h DX = 1112h Return: AL = 00h if successful SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah --------b-1623------------------------------------ INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT AH = 23h AL = new state of breakout (00h enabled, nonzero disabled) BX = 0708h CX = 0910h DX = 1112h Return: AL = 00h if successful Desc: Enables or disables the emergency breakout feature, where the Hunter 16 at power on checks whether the X and P keys are pressed. If so the machine will boot rather than continue the running program SeeAlso: AH=22h"HUNTER" --------b-1624------------------------------------ INT 16 - HUNTER 16 - REDEFINE KEY CODES AH = 24h AL = Matrix Code (see #0451) BL = new Key code Return: AL = status (00h successful, nonzero failed) SeeAlso: AH=2Bh,AH=2Ch (Table 0451) Values for HUNTER 16 Matrix Code: Code Key Code Key Code Key 00h Esc key 1Eh Space 3Bh L 01h 1 21h 0 3Ch , 02h Q 22h - 3Eh Right shift 03h Tab 23h ' 42h 8 04h Num Lock 24h Keypad 4 43h 7 05h \ 25h Enter 44h U 08h LShift 26h Keypad 7 45h I 09h Ctrl 27h . 46h J 0Ah "Paw" key 28h Keypad 1 47h K 0Bh 2 29h Keypad 0 48h M 0Ch W 2Ch = 49h N 0Dh A 2Dh Backspace 4Ah / 0Eh S 2Eh Keypad 8 4Dh 6 0Fh Z 2Fh Keypad 9 4Eh 5 11h Alt 30h Keypad 5 4Fh T 16h 4 31h Keypad 6 50h Y 17h 3 32h Keypad 2 51h G 18h E 33h Keypad 3 52h H 19h R 34h Keypad . 53h B 1Ah D 37h 9 54h V 1Bh F 38h O 55h # 1Ch X 39h P 58h Pwr 1Dh C 3Ah ; 59h Shift Pwr --------b-1625------------------------------------ INT 16 - HUNTER 16 - RESET KEYBOARD AH = 25h Return: AL = 00h Desc: restores the standard keyboard layout after any remapping SeeAlso: AH=24h,AH=2Bh,AH=2Ch --------K-1625------------------------------- INT 16 O - K3 v1.5+, K3PLUS v5.0+ - COPY INTO EXTENDED BUFFER AH = 25h CX = number of keystrokes to copy ES:SI -> buffer containing keystrokes Return: CF clear if successful CF set on error (i.e. buffer full) CX = number of keystrokes NOT transferred ES:SI -> first keystroke not transferred Note: this function is normally unsupported under K3PLUS v6.0+; use AX=AF20h instead SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h --------b-1626------------------------------------ INT 16 - HUNTER 16 - CONTROL KEYCLICK AH = 26h AL = new state of keyclicks (00h disabled, 01h enabled) Return: AL = 00h SeeAlso: AH=2Ah --------b-1627------------------------------------ INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA AH = 27h AL = what to dump 00h whole (virtual) window 01h LCD window only Return: AL = 00h Desc: control whether printscren dumps the whole 80x25 screen or only the part displayed in the LCD window Note: the Hunter 16 has a 240x64 LCD display which serves as a window into a 640x200 virtual screen --------b-1629------------------------------------ INT 16 - HUNTER 16 - GET KEY REPEAT AH = 29h Return: BL = Typematic rate (characters per second) (see #0452) BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s) SeeAlso: AH=03h,AH=2Ah (Table 0452) Values for HUNTER 16 Typematic rate: 00h 30.0 08h 15.0 10h 7.5 18h 3.7 01h 26.7 09h 13.3 11h 6.7 19h 3.3 02h 24.0 0Ah 12.0 12h 6.0 1Ah 3.0 03h 21.8 0Bh 10.9 13h 5.5 1Bh 2.7 04h 20.0 0Ch 10.0 14h 5.0 1Ch 2.5 05h 18.5 0Dh 9.2 15h 4.6 1Dh 2.3 06h 17.1 0Eh 8.6 16h 4.3 1Eh 2.1 07h 16.0 0Fh 8.0 17h 4.0 1Fh 2.0 SeeAlso: AH=2Ah --------b-162A------------------------------------ INT 16 - HUNTER 16 - CONTROL KEY REPEAT AH = 2Ah AL = new state of keyboard autorepeat (00h disabled, 01h enabled) SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh --------b-162B------------------------------------ INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES AH = 2Bh AL = which key table to redefine 00h unshifted 01h shifted 02h Numlock BH = standard scan code of key (00h-80h) BL = new scan code Desc: redefine the generated scan code from BH to BL SeeAlso: AH=24h,AH=2Ah,AH=2Ch --------b-162C------------------------------------ INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES AH = 2Ch AL = Matrix code of key (see AH=29h) BL = new key code Return: AL = status (00h success, nonzero failed) Desc: redefine the key code generated by holding the PAW key down and pressing the key in AL SeeAlso: AH=24h,AH=2Bh --------b-162D------------------------------------ INT 16 - HUNTER 16 - CONTROL BREAK KEYS AH = 2Dh AL = enabled break keys bit 0 Ctrl-C bit 1 Ctrl-Break BX = 0708h CX = 0910h DX = 1112h Return: AL = status (00h success, FFh failed) SeeAlso: AH=21h"HUNTER" --------U-163577----------------------------- INT 16 U - TextWare TWTSR - API AX = 3577h CX = function 00CBh ??? Return: AX = 0000h BX = 0000h DX:CX -> ??? 00CCh uninstall Return: AX = status 0000h successful FFFDh unable to unload because vectors taken 00CDh ??? Return: AX = 0000h BX = 0000h DX:CX -> ??? other Return: AX = 5345h ('SE') Program: TWTSR is a TSR which allows the TextWare hypertext browser to be popped up via hotkey SeeAlso: AX=D724h --------U-164252----------------------------- INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK AX = 4252h Return: AX = 5242h if installed Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of the PC Magazine utility CAPTURE written by Tom Kihlken SeeAlso: AX=4253h,AX=4254h --------U-164253----------------------------- INT 16 - TEXTCAP 2.0 - UNINSTALL AX = 4253h Return: AX = segment of resident code Notes: the uninstall code does not check whether interrupt vectors have been chained by other programs the caller must free the main memory block (using the returned segment) SeeAlso: AX=4252h,AX=4254h --------U-164254----------------------------- INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE AX = 4254h Return: AX = status 4254h if screen dump will be written as soon as disk becomes idle 5442h if screen dump written SeeAlso: AX=4252h,AX=4253h --------e-164500----------------------------- INT 16 - Shamrock Software EMAIL - GET STATUS AX = 4500h DL = port number (01h = COM1) ES:BX -> 13-byte buffer for ASCIZ name Return: AX = 4D00h if EMAIL installed on specified port ES:BX -> "" if no connection -> "*" if connection but caller has not identified name -> name otherwise CX = version (CH = major, CL = minor) DL = privilege level of user (00h = guest) DH = chosen language (00h German, 01h English) SeeAlso: AX=4501h,AX=4502h --------e-164501----------------------------- INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME AX = 4501h DL = port number (01h = COM1) Return: AX = 4D00h if EMAIL installed on specified port BX = maximum connect time in clock ticks CX = maximum connect time for guests (without name) in clock ticks DX = elapsed connect time of current user in clock ticks SeeAlso: AX=4500h --------e-164502----------------------------- INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS AX = 4502h DL = port number (01h = COM1) Return: AX = 4D00h if EMAIL installed on specified port BL = current value of serial port's Line Control Register BH = flags (see #0453) CX = selected country code (33 = France, 49 = Germany, etc) DX = baudrate divisor (115200/DX = baudrate) SeeAlso: AX=4500h Bitfields for Shamrock Software EMAIL flags: Bit(s) Description (Table 0453) 0 ISO code 1 pause 2 linefeed 3 ANSI sequences --------e-164503----------------------------- INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION AX = 4503h DL = port number (01h = COM1) DH = maximum execution time in clock ticks (00h = 5 seconds) ES:BX -> ASCIZ string with new user command-word Return: AX = 4D00h if EMAIL installed on specified port Notes: a single user command (consisting of only uppercase letters and digits) may be defined, and remains valid until it is overwritten or the EMAIL program terminates; the user command must be activated by calling AX=4504h at least once. an existing command word may be redefined with this function SeeAlso: AX=4504h,AX=4505h --------e-164504----------------------------- INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD AX = 4504h DL = port number (01h = COM1) ES:BX -> 80-byte buffer for ASCIZ user input line Return: AX = 4D00h if EMAIL installed on specified port DL = flags bit 0: user function supported (always set) bit 1: user entered user-function command word if DL bit 1 set, ES:BX buffer contains line entered by user which begins with the defined command word and has been converted to all caps Note: caller must process the returned commandline and invoke AX=4505h within five seconds with the result of that processing SeeAlso: AX=4503h,AX=4505h --------e-164505----------------------------- INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION AX = 4505h DL = port number (01h = COM1) DH = error flag bit 3: set on error ES:BX -> ASCIZ text to return to user, max 1024 bytes Return: AH = 4Dh if EMAIL installed on specified port AL = status 00h successful 02h unable to perform function (timeout, prev call not complete) other error Notes: if the error flag in DH is set, the string is not sent and an error message is generated instead; if this function is not called within five seconds of AX=4504h, EMAIL automatically generates an error message the string is copied into an internal buffer, allowing this function's caller to continue immediately SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h --------e-164506----------------------------- INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD AX = 4506h DL = port number (01h = COM1) ES:BX -> 13-byte buffer for ASCIZ filename Return: AX = 4D00h if EMAIL installed on specified port DH = Xmodem status 00h no XGET command given 01h XGET in progress 02h XGET completed successfully ES:BX buffer filled with last filename given to XGET command (without path) Note: DH=02h will only be returned once per XGET; subsequent calls will return DH=00h SeeAlso: AX=4500h,INT 17/AX=2408h --------K-164D4F----------------------------- INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK AX = 4D4Fh Return: AX = 6F6Dh if installed ES = segment of resident code Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov SeeAlso: INT 10/AX=1130h/BX=4D4Fh --------J-165000----------------------------- INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE AX = 5000h BX = country code 0001h USA (English), 0051h Japan Return: AL = status 00h successful 01h bad country code 02h other error SeeAlso: AX=5001h,INT 10/AX=5000h,INT 17/AX=5000h --------J-165001----------------------------- INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE AX = 5001h Return: AL = status 00h successful BX = country code 02h error SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h --------J-1651------------------------------- INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS AH = 51h Return: AL = standard shift key states (see #0442,#0447) AH = Kana lock (00h off, 01h on) SeeAlso: AH=02h,AH=12h,AH=22h --------t-165453BX5242----------------------- INT 16 - TSRBONES - INSTALLATION CHECK AX = 5453h ('TS') BX = 5242h ('RB') CX = 4F4Eh ('ON') DX = 4553h ('ES') Return: AX = 4553h if installed BX = 4F4Eh if installed CX = 5242h if installed DX = 5453h if installed Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis Note: these values are the default as the TSRBONES package is distributed, but will normally be changed when implementing an actual TSR with the TSRBONES skeleton SeeAlso: INT 2D"AMIS" --------A-165500----------------------------- INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR AX = 5500h Return: AX = 4D53h ('MS') if keyboard TSR present Notes: during startup, Microsoft Word tries to communicate with any TSRs that are present through this call. if the return is not 4D53h, Word installs its own INT 09 and INT 16 handlers; otherwise it assumes that the TSR will handle the keyboard SeeAlso: AX=55FFh,INT 1A/AX=3601h --------A-1655FE----------------------------- INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR AX = 55FEh DX = function 0000h initialize ES:BX -> ??? function ES:CX -> ??? structure FFFFh shutdown/reset Return: AX = result 4D4Bh only the INT 1B handler will be installed. other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C are installed Notes: The pointer in ES:CX seems to point at a structure defining a callback function when new keyboard keys are pressed. If a TSR returns AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled). these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit, and before/after shelling out since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs will also cause this interface to be invoked SeeAlso: INT 16/AX=5500h,INT 1A/AX=3601h --------U-1655FF----------------------------- INT 16 C - Microsoft Word - TSR COOPERATION??? AX = 55FFh BX >= 0004h (version of Microsoft Word [BL = major] ???) CX = function 0000h set ??? flag other clear ??? flag Notes: hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j, distributed with PC Tools v7, as well as the Trusted Access SCRNBLNK.COM; this may be part of the standard TesSeRact library known to be called by the German edition of Microsoft Word 5.0 SeeAlso: AX=5500h,INT 2F/AX=5453h --------c-165758BX4858----------------------- INT 16 U - Netroom CACHECLK - INSTALLATION CHECK AX = 5758h BX = 4858h ('HX') DX = 4443h ('DC') CX <> 5758h Return: BX = 6878h if installed CX = 6463h if installed AX = code segment of TSR CX = internal version??? (v3.00 returns 0100h) Program: CACHECLK is a "cloaked" disk cache included with Netroom Notes: if CX=5758h on entry, CACHECLK returns with all registers unchanged the cache statistics are located early in the segment pointed at by AX on return SeeAlso: INT 2F/AX=5758h ----------165758BX5754----------------------- INT 16 U - Netroom ??? - ??? AX = 5758h BX = 5754h ??? Return: ??? ----------165758BX5755----------------------- INT 16 U - Netroom ??? - ??? AX = 5758h BX = 5755h DS:SI -> ??? Return: ??? ----------165758BX5756----------------------- INT 16 U - Netroom ??? - INSTALLATION CHECK AX = 5758h BX = 5756h Return: BX <> 5756h if installed --------m-165758BX5858----------------------- INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS AX = 5758h BX = 5858h Return: CF clear DX:BX -> saved copy of interrupt vector table Note: the installation check consists of calling this function and comparing BX against 5858h on return; if it has changed, PRENET is installed SeeAlso: AX=5758h/BX=5859h Index: installation check;Netroom PRENET --------m-165758BX5859----------------------- INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS AX = 5758h BX = 5859h Return: CF clear DX:BX -> saved copy of interrupt vector table Note: the installation check consists of calling this function and comparing BX against 5859h on return; if it has changed, POSTNET is installed SeeAlso: AX=5758h/BX=5858h Index: installation check;Netroom POSTNET --------U-166969BX6968----------------------- INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK AX = 6969h BX = 6968h Return: resident code unhooked, but not removed from memory Index: uninstall;BACKTALK --------U-166969BX6969----------------------- INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK AX = 6969h BX = 6969h DX = 0000h Return: DX nonzero if installed BX = CS of resident code DX = PSP segment of resident code DS:SI -> ASCIZ identification string "CPoint Talk" --------i-166A6B----------------------------- INT 16 U - FastJuice - DISABLE/UNLOAD??? AX = 6A6Bh Return: ??? Program: FastJuice is a resident battery-power monitor by SeaSide Software SeeAlso: AX=7463h Index: uninstall;FastJuice --------G-166C63----------------------------- INT 16 U - TMED v1.6a - INSTALLATION CHECK AX = 6C63h ('lc') Return: AX = 4C43h ('LC') if installed Program: TMED is a freeware resident memory editor by Liang Chen --------b-166F00----------------------------- INT 16 - HP Vectra EX-BIOS - "F16_INQUIRE" - Extended BIOS INSTALLATION CHECK AX = 6F00h BX <> 4850h (usually set to 0000h for simplicity) Return: BX = 4850h ("HP") if present Notes: called by recent MS Mouse drivers looking for an HP-HIL mouse supported by the original HP Vectra AT and ES/QS/RS series HP Vectras SeeAlso: AX=6F01h,AX=6F04h,AX=6F07h,AX=6F09h,AX=6F0Dh,AX=6F11h,AX=6F12h SeeAlso: INT 14/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h SeeAlso: INT 6F/AH=00h"HP Vectra" --------b-166F01----------------------------- INT 16 - HP Vectra EX-BIOS - "F16_DEF_ATTR" - GET DEFAULT TYPEMATIC VALUES AX = 6F01h Return: AH = 00h (successful) CX = 0004h (size of returned buffer) ES:SI -> buffer for typematic info (see #0454) Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h Format of HP Vectra EX-BIOS typematic info: Offset Size Description (Table 0454) 00h BYTE delay before repeat for all non-Cursor Control Pad keys (see #0455) 01h BYTE typematic rate for all non-Cursor Control Pad keys (see #0456) 02h BYTE delay before repeat for Cursor Control Pad keys (see #0457) 03h BYTE typematic rate for Cursor Control Pad keys (see #0456) (Table 0455) Values for HP Vectra EX-BIOS non-CCP delay time: 00h 17 ms 01h 150 ms 02h 283 ms 03h 417 ms 04h 550 ms 05h 683 ms 06h 817 ms 07h 950 ms 08h 1083 ms 09h 1217 ms 0Ah 1350 ms 0Bh 1483 ms 0Ch 1617 ms 0Dh 1750 ms 0Eh 1883 ms 0Fh 2017 ms Note: the above values assume that the key repeat rate has been set to 60 Hz; double the times if set to 30 Hz SeeAlso: #0454,#0456,#0457 (Table 0456) Values for HP Vectra EX-BIOS typematic rate: 00h 60 / sec 01h 30 / sec 02h 20 03h 15 04h 12 05h 10 06h 8.57 07h 7.5 08h 6.66 09h 6 / sec 0Ah 5.45 0Bh 5 0Ch 4.62 0Dh 4.28 0Eh 4 / sec 0Fh typematic disabled Note: the above values assume that the key repeat rate has been set to 60 Hz; halve the rates if set to 30 Hz SeeAlso: #0455,#0457 (Table 0457) Values for HP Vectra EX-BIOS CCP delay time: 00h 17 ms 01h 83 ms 02h 150 ms 03h 217 ms 04h 283 ms 05h 350 ms 06h 417 ms 07h 483 ms 08h 550 ms 09h 617 ms 0Ah 683 ms 0Bh 750 ms 0Ch 817 ms 0Dh 883 ms 0Eh 950 ms 0Fh 1017 ms Note: the above values assume that the key repeat rate has been set to 60 Hz; double the times if set to 30 Hz SeeAlso: #0455,#0456 --------b-166F02----------------------------- INT 16 - HP Vectra EX-BIOS - "F16_GET_ATTR" - GET CURRENT TYPEMATIC VALUES AX = 6F02h Return: AH = 00h (successful) CX = 0004h (size of returned buffer) ES:SI -> buffer for typematic info (see #0454) Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h SeeAlso: AX=6F00h,AX=6F01h,AX=6F03h --------b-166F03----------------------------- INT 16 - HP Vectra EX-BIOS - "F16_SET_ATTR" - SET TYPEMATIC VALUES AX = 6F03h ES:SI -> buffer containing typematic info (see #0454) Return: AH = 00h (successful) Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h SeeAlso: AX=6F00h,AX=6F01h,AX=6F02h --------b-166F04----------------------------- INT 16 - HP Vectra EX-BIOS - "F16_DEF_MAPPING" - GET DEFAULT KEY MAPPINGS AX = 6F04h ES:SI -> mapping buffer (see #0458) Return: AH = 00h (successful) CX = 001Eh (number of bytes in buffer) ES:SI buffer filled Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras the HIL input system translates the HIL keyboard events to simulate an IBM-compatible keyboard; the translation can be altered dynamically by applications SeeAlso: AX=6F00h,AX=6F05h,AX=6F06h Format of HP Vectra EX-BIOS keyboard mapping info: Offset Size Description (Table 0458) 00h 3 WORDs entry for V_QWERTY driver (IP, CS, DS) 06h 3 WORDs entry for V_SOFTKEY driver (IP, CS, DS) 0Ch 3 WORDs entry for V_FUNCTION driver 12h 3 WORDs entry for V_NUMPAD driver 18h 3 WORDs entry for V_CCP driver --------b-166F05----------------------------- INT 16 - HP Vectra EX-BIOS - "F16_GET_MAPPING" - GET CURRENT KEY MAPPINGS AX = 6F05h ES:SI -> mapping buffer (see #0458) Return: AH = 00h (successful) CX = 001Eh (number of bytes in buffer) ES:SI buffer filled Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras SeeAlso: AX=6F04h,AX=6F06h --------b-166F06----------------------------- INT 16 - HP Vectra EX-BIOS - "F16_SET_MAPPING" - SET KEY MAPPINGS AX = 6F06h CX = number of bytes in buffer (001Eh) ES:SI -> mapping buffer (see #0458) Return: AH = 00h (successful) Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras any application which modifies the key mappings should restore them before terminating drivers installed with this function are assured of 32 bytes of stack space when they are invoked SeeAlso: AX=6F04h,AX=6F05h,AX=6F07h --------b-166F07----------------------------- INT 16 - HP Vectra EX-BIOS - "F16_SET_XLATORS" - SET CCP AND SOFTKEY PADS AX = 6F07h BL = translation to set (see #0459) Return: AH = 00h (successful) Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras this function may no longer work properly if the application has modified the key mappings with AX=6F06h SeeAlso: AX=6F06h,AX=6F09h (Table 0459) Values for HP Vectra keyboard translation specifier: 00h map V_CCP to V_CCPCUR, forcing the cursor pad to return cursor keys 01h map V_CCP to V_CCPNUM, forcing the cursor pad to always return numbers 02h map V_CCP to V_OFF, disabling the cursor pad 03h map V_CCP to V_CCPGID, converting cursor pad keys to GID data 04h map V_CCP to V_RAW, passing cursor pad data untranslated to INT 09 05h map V_SOFTKEY to V_SKEY2KFEY, translating into standard function keys 06h map V_SOFTKEY to V_RAW, passing Softkey scancodes direct to INT 09 07h map V_SOFTKEY to V_OFF, disabling HP Softkeys SeeAlso: #0460 (Table 0460) Values for HP Vectra scancodes and BIOS keycodes for V_RAW translator: INT 09 INT 16 keycode Key scan code Default Shifted Ctrl Alt * (NumPd) 37h 2Ah (Prt Sc) 00/72h 00/37H Sysreq 54h -- -- -- -- CCP-Up 60h 00/D9h 00/BFh 00/A5h 00/8BH CCP-Left 61h 00/DAh 00/C0h 00/A6h 00/8CH CCP-Down 62h 00/DBh 00/C1h 00/A7h 00/8DH CCP-Right 63h 00/DCh 00/C2h 00/A8h 00/8EH CCP-Home 64h 00/DDh 00/C3h 00/A9h 00/8FH CCP-PgUp 65h 00/DEh 00/C4h 00/AAh 00/90H CCP-End 66h 00/DFh 00/C5h 00/ABh 00/91H CCP-PgDn 67h 00/E0h 00/C6h 00/ACh 00/92H CCP-Ins 68h 00/E1h 00/C7h 00/ADh 00/93H CCP-Del 69h 00/E2h 00/C8h 00/AEh 00/94H CCP-CNTR 6Ah 00/E3h 00/C9h 00/AFh 00/95H F1 70h 00/E9h 00/CFh 00/B5h 00/9BH F2 71h 00/EAh 00/D0h 00/B6h 00/9CH F3 72h 00/EBh 00/D1h 00/B7h 00/9DH F4 73h 00/ECh 00/D2h 00/B8h 00/9EH F5 74h 00/EDh 00/D3h 00/B9h 00/9FH F6 75h 00/EEh 00/D4h 00/BAh 00/A0H F7 76h 00/EFh 00/D5h 00/BBh 00/A1H F8 77h 00/F0h 00/D6h 00/BCh 00/A2H SeeAlso: #0005,#0459 --------b-166F08----------------------------- INT 16 - HP Vectra EX-BIOS - "F16_KBD" - GET KEYBOARD INFORMATION AX = 6F08h Return: AH = status 00h successful 02h unsupported (non-HIL, i.e. standard, keyboard) BH = HP-HIL address (HP Vectra AT only???) BL = HP-HIL ID (HP Vectra AT only???) BL = keyboard language (ES/QS/RS only???) (see #0461) Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras the driver's address in the HP_VECTOR_TABLE (see INT 6F/AH=00h) may be computed as (BH-1)*6 + N, where N is the address of the first HP-HIL device driver (see INT 6F/AH=0Ah"SF_INQUIRE_FIRST") SeeAlso: AX=6F05h,AX=6F09h,INT 6F/AH=0Ah"SF_INQUIRE_FIRST" (Table 0461) Values for HP HIL keyboard language code: 00h reserved 01h Arabic-French 02h Kanji 03h Swiss-French 04h Portugese 05h Arabic 06h Hebrew 07h Canadian-English 08h Turkish 09h Greek 0Ah Thai 0Bh Italian 0Ch Hangul (Korean) 0Dh Dutch 0Eh Swedish 0Fh German 10h Chinese (PRC) 11h Chinese (Taiwan) 12h Swiss (French ii) 13h Spanish 14h Swiss (German ii) 15h Belgian (Flemish) 16h Finish 17h United Kingdom 18h French-Canadian 19h French-German 1Ah Norwegian 1Bh French 1Ch Danish 1Dh Katakana 1Eh Latin American Spanish 1Fh United States-American 20h-FEh reserved FFh non-HP keyboard (IBM AT keyboard and IBM Enhanced keyboard) --------b-166F09----------------------------- INT 16 - HP Vectra EX-BIOS - "F16_KBD_RESET" - RESET KEYBOARD TO DEFAULTS AX = 6F09h Return: AH = 00h (successful) Desc: reset all keyboard mappings to their default translators, and reset typematic values to their defaults Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras SeeAlso: AX=6F04h,AX=6F07h,AX=6F08h --------b-166F0A----------------------------- INT 16 - HP Vectra ES/QS/RS EX-BIOS - READ PROCESSOR SPEED AX = 6F0Ah Return: AH = 00h (successful) BX = speed code 0Bh for low speed (see #0462) 12h for medium speed (see #0462) 0Ch for high speed (see #0462) Note: supported by ES, QS, and RS series of HP Vectras SeeAlso: AX=6F00h (Table 0462) Values for HP Vetra CPU speed: Vectra Low Medium High ES 8 MHz - 8 MHz ES/12 8 MHz - 12 MHz QS/16, RS/16 8 MHz - 16 MHz QS/16S 8 MHz - 16 MHz QS/20, RS/20 8 MHz - 20 MHz RS/20C 5 MHz 10 MHz 20 MHz RS/25C 5 MHz 12.5 MHz 25 MHz --------b-166F0B----------------------------- INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO LOW AX = 6F0Bh Return: AH = 00h (successful) Notes: see AX=6F0Ah for speed definitions supported by ES, QS, and RS series of HP Vectras SeeAlso: AX=6F00h,AX=6F0Ah --------b-166F0C----------------------------- INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO HIGH AX = 6F0Ch Return: AH = 00h (successful) Notes: see AX=6F0Ah for speed definitions supported by ES, QS, and RS series of HP Vectras SeeAlso: AX=6F00h,AX=6F0A --------b-166F0D----------------------------- INT 16 - HP Vectra ES/QS/RS EX-BIOS - GET HIL Extended BIOS INTERRUPT NUMBER AX = 6F0Dh Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well) Notes: supported by ES, QS, and RS series of HP Vectras called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL input system SeeAlso: AX=6F00h,AX=6F0Eh,INT 6F"HP Vectra" --------b-166F0E----------------------------- INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET HIL Extended BIOS INTERRUPT NUMBER AX = 6F0Eh BL = new interrupt number (60h-6Fh,78h-7Fh) Return: AH = status (00h = successful) Desc: allows the HIL Extended BIOS software to use a non-default interrupt number in case of an interrupt conflict with another application Notes: supported by ES, QS, and RS series of HP Vectras called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL input system SeeAlso: AX=6F00h,AX=6F0Dh,INT 6F"HP" --------b-166F0F----------------------------- INT 16 - HP Vectras RS/20C and RS/25C - ENABLE MEMORY CACHING AX = 6F0Fh Return: AH = status 00h successful FEh cache subsystem is bad SeeAlso: AX=6F00h,AX=6F10h,AX=6F11h --------b-166F10----------------------------- INT 16 - HP Vectras RS/20C and RS/25C - DISABLE MEMORY CACHING AX = 6F10h Return: AH = 00h (successful) SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F11h --------b-166F11----------------------------- INT 16 - HP Vectras RS/20C and RS/25C - GET MEMORY CACHING STATE AX = 6F11h Return: AH = 00h (successful) AL bit 0 = cache state 0 cache disabled 1 cache enabled SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F10h --------b-166F12----------------------------- INT 16 - HP Vectras RS/20C and RS/25C - SET PROCESSOR SPEED TO MEDIUM AX = 6F12h Return: AH = 00h (successful) Note: see AX=6F0Ah for speed definitions SeeAlso: AX=6F00h,AX=6F0Ah --------K-1670------------------------------- INT 16 - FAKEY.COM - INSTALLATION CHECK AH = 70h Return: AX = 1954h if installed Program: FAKEY is a keystroke faking utility by System Enhancement Associates --------K-1671------------------------------- INT 16 - FAKEY.COM - PUSH KEYSTROKES AH = 71h CX = number of keystrokes DS:SI -> array of words containing keystrokes to be returned by AH=00h Program: FAKEY is a keystroke faking utility by System Enhancement Associates SeeAlso: AH=05h,AH=72h --------K-1672------------------------------- INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES AH = 72h Program: FAKEY is a keystroke faking utility by System Enhancement Associates SeeAlso: AH=71h --------K-1673------------------------------- INT 16 - FAKEY.COM - PLAY TONES AH = 73h CX = number of tones to play DS:SI -> array of tones (see #0463) Program: FAKEY is a keystroke faking utility by System Enhancement Associates SeeAlso: INT 15/AX=1019h Format of FAKEY.COM tone array entries: Offset Size Description (Table 0463) 00h WORD divisor for timer channel 2 02h WORD duration in clock ticks --------i-167463----------------------------- INT 16 U - FastJuice - INSTALLATION CHECK AX = 7463h ("tc") Return: AX = 5443h ("TC") if installed Program: FastJuice is a resident battery-power monitor by SeaSide Software SeeAlso: AX=6A6Bh --------R-1675------------------------------- INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING AH = 75h AL = number of ticks between checks for new screen changes --------R-1676------------------------------- INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE AH = 76h AL = error checking type 00h none 01h fast 02h slow --------R-1677------------------------------- INT 16 - pcANYWHERE III - LOG OFF AH = 77h AL = mode 00h wait for another call 01h leave in Memory Resident Mode 02h leave in Automatic Mode FFh leave in current operating mode --------U-167761----------------------------- INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK AX = 7761h ('wa') Return: AX = 5741h ('WA') if installed Note: WATCH.COM is part of the "TSR" package by Kim Kokkonen SeeAlso: INT 21/AX=7761h --------U-167788BX7789----------------------- INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK AX = 7788h BX = 7789h DS:SI -> signature "PUSHDIR VERSION 1.0" Return: AX = 7789h if installed and signature correct BX = 7788h SI destroyed --------R-1679------------------------------- INT 16 - pcANYWHERE III - CHECK STATUS AH = 79h Return: AX = status FFFFh if resident and active FFFEh if resident but not active FFFDh if in Memory Resident mode FFFCh if in Automatic mode other value if not resident SeeAlso: AX=7B00h,INT 21/AX=2B44h --------R-167A------------------------------- INT 16 - pcANYWHERE III - CANCEL SESSION AH = 7Ah --------R-167B00----------------------------- INT 16 - pcANYWHERE III - SUSPEND AX = 7B00h SeeAlso: AH=79h,AX=7B01h --------R-167B01----------------------------- INT 16 - pcANYWHERE III - RESUME AX = 7B01h SeeAlso: AH=79h,AX=7B00h --------R-167C------------------------------- INT 16 - pcANYWHERE III - GET PORT CONFIGURATION AH = 7Ch Return: AH = port number AL = baud rate (see #0464) SeeAlso: AX=7B00h,AH=7Eh (Table 0464) Values for pcANYWHERE III baud rate: 00h 50 baud 01h 75 baud 02h 110 baud 03h 134.5 baud 04h 150 baud 05h 300 baud 06h 600 baud 07h 1200 baud 08h 1800 baud 09h 2000 baud 0Ah 2400 baud 0Bh 4800 baud 0Ch 7200 baud 0Dh 9600 baud 0Eh 19200 baud SeeAlso: #0206 --------R-167D------------------------------- INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS AH = 7Dh AL = subfunction 00h set terminal parameters 01h get terminal parameters 02h get configuration header and terminal parameters DS:CX -> terminal parameter block SeeAlso: AH=7Ch,AH=7Eh --------R-167E------------------------------- INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT AH = 7Eh AL = subfunction 01h port input status Return AX = 0 if no characer ready, AX = 1 if character ready 02h port input character Return AL = received character 03h port output character in CX 11h hang up phone SeeAlso: AH=7Ch --------R-167F------------------------------- INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE AH = 7Fh AL = subfunction 00h enable remote keyboard only 01h enable host keyboard only 02h enable both keyboards 08h display top 24 lines 09h display bottom 24 lines 10h Hayes modem 11h other modem 12h direct connect --------U-1680------------------------------- INT 16 - MAKEY.COM - INSTALLATION CHECK AH = 80h Return: AX = 1954h if installed Program: MAKEY is a utility by System Enhancement Associates --------U-168765BX4321----------------------- INT 16 - AT.COM version 8/26/87 - API AX = 8765h BX = 4321h CX = ??? or FFFFh if CX = FFFFh DX = number of event to remove or FFFFh Return: ES:BX -> event record array (see #0465) Program: AT.COM is a resident scheduler by Bill Frolik Format of AT.COM event record: Offset Size Description (Table 0465) 00h BYTE in-use flag (00h free, 01h in use, FFh end of array) 01h BYTE day of date on which to trigger 02h BYTE month of date on which to trigger 03h BYTE trigger time, minute 04h BYTE trigger time, hour 05h WORD offset of command to be executed --------K-1692------------------------------- INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!) AH = 92h Return: AH <= 80h if enhanced keyboard functions (AH=10h-12h) supported Desc: this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM to determine the highest supported keyboard function Note: many BIOSes (including at least some versions of Phoenix and AMI) will destroy AH on return from functions higher than AH=12h, returning 12h less than was in AH on entry (due to a chain of DEC/JZ instructions) SeeAlso: AH=05h"PCjr",AH=A2h --------U-1699------------------------------- INT 16 - SCOUT v5.4 - GET ??? AH = 99h Return: AX = ABCDh BX:CX -> ??? (appears to be start of PSP for resident portion) Program: Scout is a memory-resident file manager by New-Ware SeeAlso: AH=9Eh --------U-169E------------------------------- INT 16 - SCOUT v5.4 - INSTALLATION CHECK AH = 9Eh Return: AX = ABCDh if installed Program: Scout is a memory-resident file manager by New-Ware SeeAlso: AH=99h --------K-16A2------------------------------- INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!) AH = A2h Return: AH <= 80h if 122-key keyboard functions (AH=20h-22h) supported Desc: this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM to determine the highest supported keyboard function Note: many BIOSes (including at least some versions of Phoenix and AMI) will destroy AH on return from functions higher than AH=12h, returning 12h less than was in AH on entry (due to a chain of DEC/JZ instructions) SeeAlso: AH=05h"PCjr",AH=92h --------V-16AA------------------------------- INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS AH = AAh Various registers set up by high level language. Return: Graphics performed Note: PT stands for Paint Tools which is a graphics library for Turbo Pascal, Modula 2 and others from DataBiten in Sweden. The library is installed as a memory resident driver. --------U-16AABBBXEEFF----------------------- INT 16 U - JORJ v4.3 - INSTALLATION CHECK AX = AABBh BX = EEFFh Return: AX = EEFFh if installed BX = AABBh if installed CL = hotkey name (default 6Ah 'j' for Alt-J) Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software Co. Index: hotkeys;JORJ --------K-16AF20BX4B33----------------------- INT 16 - K3PLUS v6.00+ (API v2.0+) - GET EXTENDED BUFFER STATE AX = AF20h BX = 4B33h ('K3') Return: AX = K3 version (same as returned in BX by AX=AF4Dh) ES:BX -> extended keyboard buffer start ES:DX -> extended keyboard buffer end ES:SI -> next keystroke ES:DI -> last keystroke in buffer CX = number of keystrokes in buffer Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the K3 extended German keyboard driver by Martin Gerdes published in c't magazine in 1988 Note: this function replaces the identical function AH=20h"K3" SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h,INT 2F/AX=ED58h --------K-16AF25BX4B33----------------------- INT 16 - K3PLUS v6.00+ (API v2.0+) - COPY INTO EXTENDED BUFFER AX = AF25h BX = 4B33h ('K3') CX = number of keystrokes to copy ES:SI -> buffer containing keystrokes Return: CF clear if successful CF set on error (i.e. buffer full) CX = number of keystrokes NOT transferred ES:SI -> first keystroke not transferred Note: this function replaces the identical function AH=25h"K3" SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h,INT 2F/AX=D44Fh/BX=0001h --------K-16AF4DBX4B33----------------------- INT 16 - K3PLUS v6.00+ (API v2.0+) - GET VERSION INFORMATION AX = AF4Dh BX = 4B33h ('K3') Return: AL = 50h if installed BX = K3 version DX = API version ES:CX -> K3 structure (version-dependent) (see #0466) Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the K3 extended German keyboard driver by Martin Gerdes published in c't magazine in 1988 SeeAlso: AX=AF20h,AX=AF50h,AX=AF80h,AX=AF83h,INT 2F/AX=D44Fh/BX=0000h SeeAlso: INT 2F/AX=ED58h Index: installation check;K3PLUS Format of internal K3 structure: Offset Size Description (Table 0466) 00h 3 BYTEs signature "K3$" 03h BYTE length of structure, including this byte and signature 04h WORD compiler switch option flags A (see #0467) 06h WORD compiler switch option flags B (see #0468) 08h BYTE internal flags A (see #0469) 09h BYTE internal flags B (see #0470) 0Ah WORD DOS version recorded at startup 0Ch WORD "ActTypeSpeed" 0Eh WORD last Keyboard-ID sent 41ABh translated, 83ABh native (pass-through) 10h WORD offset of K3TAB Special 12h WORD offset of K3TAB German 14h WORD offset of K3TAB Alt 16h WORD offset of K3TAB AltGr 18h WORD offset of K3TAB Ctrl 1Ah WORD offset of K3TAB NPad 1Ch WORD offset of K3TAB CtrlNPad 1Eh WORD offset of K3TAB AltNPad 20h WORD offset of K3TAB ApoTbl or 0000h 22h WORD offset of K3TAB UmlautTbl or 0000h 24h WORD offset of K3TAB UmlautTblExp or 0000h 26h WORD length of video mode table 28h WORD offset of VidMdTbl or 0000h 2Ah BYTE '$' end marker Bitfields for K3PLUS compiler switch option flags A: Bit(s) Description (Table 0467) 15 GuINT16Fct2 (general use of INT 16 function 2) 14 Int15df (INT 15 has to be predefined) 13 GuAltNP (general use of Alt Numpad) 12 SupAT (ATs+ supported) 11 GuINT16Fct3 (general use of INT 16 function 3) 10 GuINT16Ret (general use of INT16 bad function return) 9-8 Layout (0-2, 3 reserved; 0=PC, 1=AT, 2=MF) 7 ForceMF (force MF decode without read-ID) 6 KXlate (translate keys for special keyboard) 5 UmlautX (umlaut translation capability included) 4 ApoX (translate apostrophe) 3 DoINT16 (INT 16 handler included) 2 UseCC (CopyCursor included) 1-0 UseEB 0=no extended keystroke buffer, 1=reserve mem, 2=use PSP, 3=reserved Bitfields for K3 compiler switch option flags B: Bit(s) Description (Table 0468) 15-11 reserved (0) 10 CtrlSeq (Ctrl macro capability included) 9-8 SupINT16fct55FE 6 DoInstallCheck (check for double installation) 5 SupINT16fct5PcJr (INT 16/AH=05h"PCjr" supported) 4 SendOut (sound and message output supported) 3 SupInt16fct5500 (INT 16/AX=5500h supported) 2 GuINT15Fct4F (calls to INT 15/AH=4Fh supported) 1-0 UseBufferStart (0=use standard area, 1=set standard area, 2=use internal indexes, 3=reserved) Bitfields for K3 internal flags A: Bit(s) Description (Table 0469) 7 DoingUmlautExp 6 CallINT15fct4F 5 Beep1 (requires SendOut set in option flags B) 4 ATflag (set for AT, 386, PS/2 Models 50-80) 3 XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30) 2 KeyClick 1 UmlautExp 0 UmlautTrans Bitfields for K3 internal flags B: Bit(s) Description (Table 0470) 7-5 reserved 4 TranslateE0 enabled 3 Boot enabled 2 PrintScreen enabled 1 Break enabled 0 ApoPendingBeep --------K-16AF50BX4B33----------------------- INT 16 - K3PLUS v6.00+ (API v2.0+) - CHECK IF FUNCTION SUPPORTED AX = AF50h BX = 4B33h ('K3') CH = function 00h get function flags CL = 00h Return: CX = supported function flags (see #0471) nonzero reserved for extensions SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h Bitfields for K3PLUS supported function list: Bit(s) Description (Table 0471) 0 function 4Dh supported 1 function 50h supported 2-3 reserved (0) 4 function 20h supported 5 function 25h supported 6 function 51h supported 7 reserved (0) 8 function 80h supported 9 function 81h supported 10 function 82h supported 11-15 reserved (0) --------K-16AF51BX4B33----------------------- INT 16 - K3PLUS v6.00+ (API v2.00+) - SET OPTIONS AX = AF51h BX = 4B33h ('K3') CX = switches Return: AL = status 00h done CX = previous switch settings 01h switch not supported FFh other error SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h --------K-16AF80BX4B33----------------------- INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 09h VECTOR AX = AF80h BX = 4B33h ('K3') Return: AL = status 00h not supported 81h if successful ES:CX -> original INT 09 handler SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h --------K-16AF81BX4B33----------------------- INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 16h HANDLER AX = AF81h BX = 4B33h ('K3') Return: AL = status 00h not supported 82h if successful ES:CX -> original INT 16 handler SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h --------K-16AF82BX4B33----------------------- INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 10h HANDLER AX = AF82h BX = 4B33h ('K3') Return: AL = status 00h not supported 83h if successful ES:CX -> original INT 10 handler Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the K3 extended German keyboard driver by Martin Gerdes published in c't magazine in 1988 SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h,INT 2F/AX=ED58h --------m-16B0B1----------------------------- INT 16 - VGARAM v1.00 - INSTALLATION CHECK AX = B0B1h ES:DI -> 6 byte signature "VGARAM" Return: AX = B1B0h if installed, DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is not used in text modes available for DOS --------K-16CA--BX736B----------------------- INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API AH = CAh BX = 736Bh ("sk") CX = 736Bh AL = function 00h installation check Return: DX = words available in keyboard buffer 01h place keystroke in buffer DX = keystroke (DH = scan code, DL = ASCII character) Return: DX = words available in keyboard buffer FFFFh on error 02h flush STACKEY and BIOS keyboard buffers Return: AX = CAFFh if installed BX = segment of resident code CX = STACKEY version (CH = major, CL = minor) Program: STACKEY is a shareware keyboard-input faking TSR Index: installation check;STACKEY --------V-16CA00BX6570----------------------- INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK AX = CA00h BX = 6570h ("ep") CX = 6570h Return: AX = CAFFh if installed BX = segment of resident code CX = ??? (0090h) Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette settings permanent across mode switches SeeAlso: AX=CA00h/BX=7670h --------V-16CA00BX7670----------------------- INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK AX = CA00h BX = 7670h ("vp") CX = 7670h Return: AX = CAFFh if installed BX = segment of resident code CX = ??? (0090h) Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette settings permanent across mode switches SeeAlso: AX=CA00h/BX=6570h --------U-16CB00----------------------------- INT 16 - PUPClip v1.12+ - INSTALLATION CHECK AX = CB00h Return: BX = 4342h if installed AX = version (AH = major version, AL = BCD minor version) Program: PUPClip is the freeware PopUP Clipboard for DOS and Windows DOS sessions by SkullC0DEr SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB04h,AX=CB05h,AX=CB06h,AX=CB08h SeeAlso: INT 2F/AX=1701h --------U-16CB01----------------------------- INT 16 - PUPClip v1.12+ - GET CLIPBOARD CURSOR POSITION AX = CB01h Return: BL = column (0-79) BH = row (0-49) SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h --------U-16CB02----------------------------- INT 16 - PUPClip v1.12+ - SET CLIPBOARD CURSOR POSITION AX = CB02h BL = column (0-79) BH = row (0-49) Return: CF clear if successful CF set on error (invalid position) SeeAlso: AX=CB00h,AX=CB01h,AX=CB04h --------U-16CB03----------------------------- INT 16 - PUPClip v1.12+ - GET CHARACTER FROM CURRENT CLIPBOARD CURSOR POSITION AX = CB03h Return: BL = ASCII character at current position SeeAlso: AX=CB00h,AX=CB02h,AX=CB04h,INT 2F/AX=1705h --------U-16CB04----------------------------- INT 16 - PUPClip v1.12+ - WRITE CHARACTER TO CURRENT CLIPBOARD CURSOR POSITION AX = CB04h BL = ASCII character to store SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h,AX=CB05h,INT 2F/AX=1703h --------U-16CB05----------------------------- INT 16 - PUPClip v1.12+ - CLEAR CLIPBOARD CONTENTS AX = CB05h Return: nothing SeeAlso: AX=CB00h,AX=CB04h,AX=CB06h,AX=CB07h,INT 2F/AX=1702h --------U-16CB06----------------------------- INT 16 - PUPClip v1.12+ - SCROLL UP CLIPBOARD CONTENTS AX = CB06h Return: nothing SeeAlso: AX=CB00h,AX=CB05h,AX=CB07h --------U-16CB07----------------------------- INT 16 - PUPClip v1.12+ - SCROLL DOWN CLIPBOARD CONTENTS AX = CB07h Return: nothing SeeAlso: AX=CB00h,AX=CB05h,AX=CB06h --------U-16CB08----------------------------- INT 16 - PUPClip v1.12+ - POP UP AX = CB08h Return: CF clear if successful CF set on error (unsupported video mode) SeeAlso: AX=CB00h --------U-16D724CX00CB----------------------- INT 16 U - APCAL v3.20 - GET ??? AX = D724h CX = 00CBh Return: AX = 0000h BX = 0000h DX:CX -> ??? or 0000h:0000h Program: APCAL is an optionally-resident shareware appointment calendar by Gamma Software SeeAlso: AX=3577h,AX=D724h/CX=00CCh,AX=D724h/CX=00CDh --------U-16D724CX00CC----------------------- INT 16 U - APCAL v3.20 - GET ??? AX = D724h CX = 00CCh Return: AX = 0000h BX = 0000h DX:CX -> ??? (apparently an internal data area) SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh --------U-16D724CX00CD----------------------- INT 16 U - APCAL v3.20 - GET ??? AX = D724h CX = 00CDh Return: AX = ??? (5345h seen) SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh --------v-16DD-------------------------- INT 16 - VIRUS - "Frumble" - INSTALLATION CHECK AH = DDh Return: AL = DDh if resident SeeAlso: INT 13/AX=FD50h,INT 21/AX=0B56h ----------16DFDF----------------------------- INT 16 U - Corel PowerSCSI - FDAUDIO.COM - INSTALLATION CHECK AX = DFDFh Return: ES:DI -> ASCII signature "FDAUDIO/CD" followed by ASCII date, i.e. "06/18/93" if installed --------b-16E000----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - GET VERSION NUMBER AX = E000h Return: CF clear if successful AL = FAh BX = version number (BCD) (0200h = v2.00) CF set on error (not implemented) Notes: this interface is available on AMI BIOSes built from AMI core version 8/8/93 (HiFlex BIOS) or 11/15/93 (WinBIOS) or later the "Meningitis" virus uses this API when attacking a system equipped with an AMI BIOS; it is supposedly able to write itself into the Flash ROM and thus make itself part of the BIOS SeeAlso: AX=E001h,AX=E004h,AX=E006h,AX=E008h,AX=E00Ah,AX=E00Bh,AX=E0FFh --------b-16E001----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - GET CHIPSET SAVE/RESTORE SIZE AX = E001h Return: CF clear if successful AL = FAh BX = number of bytes required to save chipset configuration CF set on error SeeAlso: AX=E000h,AX=E002h,AX=E003h --------b-16E002----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE CHIPSET STATUS & PREPARE CHPSET AX = E002h ES:DI -> buffer for storing chipset status Return: CF clear if successful AL = FAh CF set on error SeeAlso: AX=E000h,AX=E001h,AX=E003h --------b-16E003----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE CHIPSET STATUS AX = E003h ES:DI -> buffer in which chipset status was previously stored Return: CF clear if successful AL = FAh CF set on error SeeAlso: AX=E000h,AX=E001h,AX=E002h --------b-16E004----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - LOWER PROGRAMMING VOLTAGE Vpp AX = E004h Return: CF clear if successful AL = FAh CF set on error Note: this function does not return until the voltage level stabilizes SeeAlso: AX=E000h,AX=E005h,AX=E006h --------b-16E005----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - RAISE PROGRAMMING VOLTAGE Vpp AX = E005h Return: CF clear if successful AL = FAh CF set on error Note: this function does not return until the voltage level stabilizes SeeAlso: AX=E000h,AX=E004h,AX=E007h --------b-16E006----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE PROTECT AX = E006h Return: CF clear if successful AL = FAh CF set on error Note: this function performs any delay required to allow the Flash ROM to stabilize in the write-protected state SeeAlso: AX=E000h,AX=E004h,AX=E007h --------b-16E007----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE ENABLE AX = E007h Return: CF clear if successful AL = FAh CF set on error Note: this function performs any delay required to allow the Flash ROM to stabilize in the write-enabled state SeeAlso: AX=E000h,AX=E005h,AX=E006h,AX=E008h --------b-16E008----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH SELECT AX = E008h Return: CF clear if successful AL = FAh CF set on error Desc: select the Flash ROM if the system contains both EPROM and Flash ROM Note: this function performs any delay required to allow the Flash ROM to stabilize in the selected state; if no EPROM is present, this function always returns successfully SeeAlso: AX=E000h,AX=E007h,AX=E009h --------b-16E009----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH DE-SELECT AX = E009h Return: CF clear if successful AL = FAh CF set on error Desc: select the EPROM if the system contains both EPROM and Flash ROM Note: this function performs any delay required to allow the Flash ROM to stabilize in the de-selected state; if no EPROM is present, this function always returns successfully SeeAlso: AX=E000h,AX=E006h,AX=E008h --------b-16E00A----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - VERIFY ALLOCATED MEMORY AX = E00Ah BX = number of paragraphs ES = starting segment of memory Return: CF clear if successful AL = FAh CF set on error Desc: determine whether the specified memory may be used for flash programming Note: always returns error if BX is zero on entry SeeAlso: AX=E000h,AX=E00Bh --------b-16E00B----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE INTERNAL CACHE STATUS AX = E00Bh ES:DI -> buffer for internal cache status (minimum 4Kbytes) Return: CF clear if successful AL = FAh CF set on error Note: always returns error if the hardware does not contain internal cache or this call is made in protected mode SeeAlso: AX=E000h,AX=E00Ah,AX=E00Ch --------b-16E00C----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE INTERNAL CACHE STATUS AX = E00Ch ES:DI -> buffer containing internal cache status (minimum 4Kbytes) Return: CF clear if successful AL = FAh CF set on error Note: always returns error if the hardware does not contain internal cache or this call is made in protected mode SeeAlso: AX=E000h,AX=E00Bh --------t-16E0E0----------------------------- INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK AX = E0E0h Return: AX = 1F1Fh if installed DWORD 0040h:00F0h -> last data block in TSR list (see #0473) Note: the returned TSR list provides support for communication among TSRs built with TurboPower's Turbo Professional and Object Professional libraries for Turbo Pascal SeeAlso: AX=F0F0h --------b-16E0FF----------------------------- INT 16 - AMI BIOS - BIOS-FLASH Interface - GENERATE CPU RESET AX = E0FFh Return: never SeeAlso: AX=E000h,INT 14/AH=17h"FOSSIL" --------U-16ED--BHED------------------------- INT 16 - BORLAND TURBO LIGHTNING - API AH = EDh BH = EDh BL = function 00h installation check Return: AX = 5205h CH = major version CL = minor version 01h identical to function 00h??? 02h get resident data segment Return: AX = data segment of resident portion 03h get resident ??? Return: AX = offset of some buffer in resident code seg 04h redefine auxiliary dictionary DS:SI -> counted filename string Return: AL = result code 05h select active environment AL = environment (00h to 0Ch) Return: AX = status 0000h if OK 0001h if out of range 06h toggle AutoProof??? AL = state (00h off, 01h on) 07h ??? 08h ??? AL = char??? CX = ??? DX = ??? Return: AX = 0, 1 or 2 09h ??? 0Ah ??? CX = ??? DX = ??? Return: AX = ??? 0Bh check dictionary integrity??? DS:SI -> counted dictionary filename string Return: AX = 0, 40h, 80h 0Ch spellcheck string (disk dictionary, possibly RAM dict as well) DS:SI -> counted string to check Return: AH = 0 AL = result code 00h string found in dictionary 20h string begins more than one word 40h string not found 0Dh set ??? (sets an internal flag) 0Eh spellcheck string (RAM dictionary only) DS:SI -> counted string to check Return: AH = 00h AL = result code 00h string found in dictionary 01h string not found 02h ??? 0Fh ??? 10h ??? Notes: AX in general returns an error code from most functions. Index: installation check;Turbo Lightning --------U-16EF------------------------------- INT 16 - CALCULATOR - INSTALLATION CHECK AH = EFh Return: AX = 0088h if installed Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and Marek Kosznik --------b-16F0------------------------------- INT 16 - Compaq 386 and newer - SET CPU SPEED AH = F0h AL = speed code (see #0472) if AL=09h, CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088 Note: also supported by some versions of AMI BIOS dated June 1992 or later; speed codes 0 or 1 are used for Low Speed, 2 for High Speed SeeAlso: AH=F1h,AH=F3h (Table 0472) Values for speed code: 00h equivalent to 6 MHz 80286 (COMMON) 01h equivalent to 8 MHz 80286 (FAST) 02h full 16 MHz (HIGH) 03h toggles between 8 MHz-equivalent and speed set by system board switch (AUTO or HIGH) 08h full 16 MHz except 8 MHz-equivalent during floppy disk access 09h specify speed directly --------t-16F0F0----------------------------- INT 16 - TurboPower TSRs - INSTALLATION CHECK AX = F0F0h Return: AX = 0F0Fh if installed ES:DI -> last data block in TSR list (see #0473) Note: the returned TSR list provides support for communication among TSRs built with TurboPower's Turbo Professional and Object Professional libraries for Turbo Pascal SeeAlso: AX=E0E0h Format of TurboPower TSR data block: Offset Size Description (Table 0473) 00h DWORD pointer to program tag (counted ASCII string) 04h WORD interface version number (0400h) 06h DWORD pointer to command entry point 0Ah DWORD pointer to previous data block (0000h:0000h if none) 0Eh DWORD pointer to next data block (0000h:0000h if none) ---swappable TSRs only--- 12h DWORD pointer to swapping data 16h DWORD pointer to user data more??? --------b-16F1------------------------------- INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED AH = F1h Return: AL = speed code (see #0472) if AL = 09h, CX = speed code Note: also supported by some versions of AMI BIOS dated June 1992 or later SeeAlso: AH=F0h,AH=F3h --------b-16F2------------------------------- INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE AH = F2h Return: AL = type 00h if 11-bit AT keyboard is in use 01h if 9-bit PC keyboard is in use AH = 00h (04/08/93 system ROM) --------b-16F3------------------------------- INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER) AH = F3h AL = new limit 00h limit is 6 Mhz 01h limit is 8 Mhz/6 Mhz SeeAlso: AH=F0h,AH=F1h --------U-16F398----------------------------- INT 16 U - NORTON GUIDES - INSTALLATION CHECK AX = F398h Return: AX = 6A73h ("js") BH = scan code of current hot key BL = ASCII code of current hot key Note: NG.EXE was written by John Socha --------b-16F400----------------------------- INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS AX = F400h Return: AH = E2h (*) AL = status 00h not present 01h enabled 02h disabled CX = cache memory size bit 15: cache size information is NOT valid bits 14-0: cache memory size in kilobytes DH = cache write technology bit 7: cache write information is NOT valid bits 6-1: reserved (0) bit 0: 0 = Write-through caching 1 = Write-back caching DL = cache type bit 7: cache type information is NOT valid bits 6-1: reserved (0) bit 0: 0 = Direct mapped 1 = Two-way set-associative Notes: also supported by some versions of AMI BIOS dated June 1992 or later many (most) BIOSes return a modified AH when called for an unsupported or non-keyboard function (typically, the highest supported keyboard function [normally 12h] is subtracted from the original AH) SeeAlso: AX=F401h,AX=F402h --------b-16F401----------------------------- INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER AX = F401h Return: AX = E201h Notes: also supported by some versions of AMI BIOS dated June 1992 or later many (most) BIOSes return a modified AH when called for an unsupported or non-keyboard function (typically, the highest supported keyboard function [normally 12h] is subtracted from the original AH) SeeAlso: AX=F400h,AX=F402h --------b-16F402----------------------------- INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER AX = F402h Return: AX = E202h Notes: also supported by some versions of AMI BIOS dated June 1992 or later many (most) BIOSes return a modified AH when called for an unsupported or non-keyboard function (typically, the highest supported keyboard function [normally 12h] is subtracted from the original AH) SeeAlso: AX=F400h,AX=F401h --------v-16FA00DX5945----------------------- INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK AX = FA00h DX = 5945h Return: CF clear DI = 4559h BX = BIOS hotkey scancode (default 2F00h) (VSAFE only) FFFFh if disabled Note: MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h --------v-16FA01DX5945----------------------- INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL AX = FA01h DX = 5945h Return: CF clear if successful DI = 4559h SeeAlso: AX=FA00h --------v-16FA02DX5945----------------------- INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS AX = FA02h DX = 5945h BL = new parameter flags (see #0474) Return: CF clear DI = 4559h CL = old value of parameter flags Bitfields for VSAFE/VWATCH parameter flags: Bit(s) Description (Table 0474) 7 Protect executable files 6 Protect FD boot sector 5 Protect HD boot sector 4 Boot sector viruses 3 Check executable files 2 General write protect 1 Resident 0 HD Low level format --------v-16FA03DX5945----------------------- INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ??? AX = FA03h DX = 5945h Return: CF clear DI = 4559h AX = 0002h --------v-16FA04DX5945----------------------- INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG AX = FA04h DX = 5945h Return: CF clear DI = 4559h BL = hotkey disable flag (nonzero if hotkey disabled) Note: this function is a NOP under VWATCH, merely returning CF clear/DI=4559h SeeAlso: AX=FA00h,AX=FA05h --------v-16FA05DX5945----------------------- INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG AX = FA05h DX = 5945h BL = new value of hotkey disable flag (nonzero to disable hotkey) Return: CF clear DI = 4559h Note: this function is a NOP under VWATCH, merely returning CF clear/DI=4559h SeeAlso: AX=FA00h,AX=FA04h --------v-16FA06DX5945----------------------- INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG AX = FA06h DX = 5945h Return: CF clear DI = 4559h BL = test status 00h don't monitor network drives (default for VWATCH v2.1) FFh monitor network drives (default for VSAFE v2.0) CL = ??? (only VSAFE 2.0) SeeAlso: AX=FA07h --------v-16FA07DX5945----------------------- INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG AX = FA07h DX = 5945h BL = new state 00h don't monitor 01h monitor network drives Return: CF clear DI = 4559h Note: VWATCH v2.1 (from PC Tools 9.0) returns CF set instead SeeAlso: AX=FA00h,AX=FA06h --------v-16FA08DX5945----------------------- INT 16 U - PC Tools v9+ VWATCH v2.1 - ??? AX = FA08h DX = 5945h Return: CF clear DI = 4559h AX = ??? (0002h) BX = version (BH=major, BL=two-digit minor) Note: this function is not supported by the PC Tools 9.0 VSAFE v2.0 SeeAlso: AX=FA00h,AX=FA06h --------U-16FE55----------------------------- INT 16 U - PC Tools v8+ programs - GET ??? AX = FE55h CX = segment of resident program or 0000h for last loaded DX = 0000h Return: DX = resident code segment (unchanged if CX=0000h on entry) AX = ??? or 0000h Note: this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP, and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK seem to hook it merely to return the same AX as the CPTASK loaded prior to them returned --------U-16FEA4----------------------------- INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ??? AX = FEA4h Return: nothing Note: this function is identical to AX=FFA4h, and is implemented by the same code in DESKTOP SeeAlso: AX=FFA4h --------U-16FEC6----------------------------- INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API AX = FEC6h BL = new state (00h enabled, nonzero disabled) Return: nothing Desc: specify whether CPSCHED API calls other than this one and AX=FE55h will be honored --------U-16FED3----------------------------- INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ??? AX = FED3h DS:SI -> 92-byte data record for ??? Return: ??? Note: this function is identical to AX=FFD3h, and is implemented by the same code in DESKTOP SeeAlso: AX=FFD3h --------U-16FEDC----------------------------- INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS AX = FEDCh Return: AX,DX destroyed Index: uninstall;CPSCHED --------U-16FEEFCX0000----------------------- INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK AX = FEEFh CX = 0000h Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed BX = segment of resident portion DX = (CPSCHED v8.0) resident CS Note: this function is identical to AX=FFD3h, and is implemented by the same code in DESKTOP SeeAlso: AX=FFEFh --------U-16FEF1----------------------------- INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK AX = FEF1h BX = ??? Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed DX = 5555h Note: this function is identical to AX=FFD3h, and is implemented by the same code in DESKTOP SeeAlso: AX=FFF1h --------K-16FF------------------------------- INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER AH = FFh DX = scan code Return: AL = status 00h success 01h failure Program: KBUF is a keyboard buffer expander by Mark Adler SeeAlso: AH=05h --------V-16FF------------------------------- INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT AH = FFh Return: AL = interrupt number to which BIOS keyboard handler has been relocated AL+1 = Zoom interrupt number BX = hotkey Notes: the default interrupts are 60h for keyboard and 61h for Zoom interrupt; the default hot key is F10 not all vendors include the Tseng TSR which supports these functions SeeAlso: INT 61"OPTIMA" Index: hotkeys;OPTIMA 1024 VGA ----------16FF--BH00------------------------- INT 16 - FREEZE.COM - INSTALLATION CHECK AH = FFh BH = 00h Return: BH = FFh if installed Program: FREEZE is a PC Magazine utility --------d-16FF70BX0000----------------------- INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK AX = FF70h BX = 0000h CX = 4C69h ('Li') DX = 6E6Bh ('nk') Return: AX = 0000h CX = 4350h ('CP') DH = major version DL = minor version Program: DRIVEMAP is a redirector which allows drives on computers connected over the parallel or serial ports to appear as local drives SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h --------d-16FF70BX0001----------------------- INT 16 U - PC Tools v8+ DRIVEMAP - ??? AX = FF70h BX = 0001h DL = ??? Return: AX = ??? DH = ??? SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h --------d-16FF70BX0002----------------------- INT 16 U - PC Tools v8+ DRIVEMAP - ??? AX = FF70h BX = 0002h CX = ??? DX = ??? Return: AX = ??? or FFFEh/FFFFh on error DL = ??? BUG: DRIVEMAP will branch to random locations for BX values other than those listed above for v8.0-9.0 because a) the incorrect register is range-tested, resulting in BX=0003h-5CD6h being accepted as valid function numbers, and b) the conditional which branches on invalid function numbers jumps to the following instruction, becoming a NOP SeeAlso: INT 2F/AX=9203h"DRIVEMAP" Index: installation check;DRIVEMAP --------T-16FF80BX0000----------------------- INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK AX = FF80h BX = 0000h CX = 0000h DX = 0000h Return: CX = 5555h if installed Program: CPTASK is a task switcher by Central Point Software --------T-16FF80BX0001----------------------- INT 16 U - PC Tools v8+ CPTASK - GET ??? AX = FF80h BX = 0001h ??? Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0) BX = ??? (PSP segment of resident code???) --------T-16FF80BX0002----------------------- INT 16 U - PC Tools v8+ CPTASK - GET ??? AX = FF80h BX = 0002h Return: DX:SI -> ??? --------T-16FF80BX0003----------------------- INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS AX = FF80h BX = 0003h Return: AX = flags (see #0475) SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h Bitfields for CPTASK flags: Bit(s) Description (Table 0475) 10 ??? 13 ??? 14 ??? 15 ??? --------T-16FF80BX0004----------------------- INT 16 U - PC Tools v8+ CPTASK - SET ??? AX = FF80h BX = 0004h CX = new value of ??? Return: ??? Note: this function also sets bit 14 of the flags word returned by AX=FF80h/BX=0003h --------T-16FF80BX0005----------------------- INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS??? AX = FF80h BX = 0005h Return: AX = number of active tasks??? --------T-16FF80BX0006----------------------- INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG AX = FF80h BX = 0006h Return: AX = old state (0000h clear, 0001h set) Note: the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h --------T-16FF80BX0007----------------------- INT 16 U - PC Tools v8+ CPTASK - ??? AX = FF80h BX = 0007h ES:DI -> ??? ??? Return: ??? --------T-16FF80BX0008----------------------- INT 16 U - PC Tools v8+ CPTASK - ??? AX = FF80h BX = 0008h ??? Return: ??? --------T-16FF80BX0009----------------------- INT 16 U - PC Tools v8+ CPTASK - GET ??? AX = FF80h BX = 0009h Return: CL = ??? CH = ??? (01h or 02h) --------T-16FF80BX000A----------------------- INT 16 U - PC Tools v9+ CPTASK - SET ??? AX = FF80h BX = 000Ah DS:SI -> 128-byte buffer containing ??? --------T-16FF80BX000B----------------------- INT 16 U - PC Tools v9+ CPTASK - SET ??? AX = FF80h BX = 000Bh DX = index of ??? task (1-10) --------T-16FF80BX000C----------------------- INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY AX = FF80h BX = 000Ch CX = new delay time in minutes --------T-16FF80BX4350----------------------- INT 16 U - PC Tools v8+ CPTASK - UNINSTALL AX = FF80h BX = 4350h ('CP') CX = 5354h ('ST') Return: never returns; terminates all tasks and exits to program originally calling CPTASK --------U-16FF90----------------------------- INT 16 U - PC Tools v8+ DESKTOP - ??? AX = FF90h ??? Return: ??? Note: available only when popped up --------U-16FF91----------------------------- INT 16 U - PC Tools v7+ DESKTOP - ??? AX = FF91h ??? Return: AX = 0000h Note: calls AX=FFFDh after ??? SeeAlso: AX=FF92h,AX=FFFDh --------U-16FF92----------------------------- INT 16 U - PC Tools v7+ DESKTOP - ??? AX = FF92h ??? Return: AX = 0000h Note: like AX=FF91h, but temporarily sets ??? to 3 SeeAlso: AX=FF91h,AX=FFFDh --------U-16FF93----------------------------- INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG AX = FF93h --------U-16FF94----------------------------- INT 16 U - PC Tools v7+ DESKTOP - SET ??? AX = FF94h CX = ??? (default 0017h) --------U-16FF95----------------------------- INT 16 U - PC Tools v7+ DESKTOP - SET ??? AX = FF95h BX = ??? --------U-16FF96----------------------------- INT 16 U - PC Tools v7+ DESKTOP - ??? AX = FF96h CL = ??? Return: AX = ??? --------U-16FF97----------------------------- INT 16 U - PC Tools v7+ DESKTOP - ??? AX = FF97h DS:DX -> buffer for ??? (see #0476) Return: ??? Format of PC Tools DESKTOP buffer: Offset Size Description (Table 0476) 00h 48 BYTEs ??? 30h 128 BYTEs ??? --------U-16FF98----------------------------- INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY AX = FF98h DX = byte offset in file of overlay header (see #0477) Return: BX = file handle for DESK.OVL file Desc: open the DESK.OVL file, seek to the specified offset, read in the overlay header, and seek to the offset specified by the header Format of PC Tools DESKTOP overlay header: Offset Size Description (Table 0477) 00h 12 BYTEs NUL-padded ASCII overlay filename 0Ch DWORD offset within DESK.OVL file of actual overlay --------U-16FF99----------------------------- INT 16 U - PC Tools v7+ DESKTOP - ??? AX = FF99h ??? Return: ??? --------U-16FF9A----------------------------- INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME AX = FF9Ah Return: ES:BX -> name of current color scheme Note: available even if not popped up --------U-16FF9B----------------------------- INT 16 U - PC Tools v7+ DESKTOP - UNUSED AX = FF9Bh Return: ??? Note: sounds triple-length beep --------T-16FF9C----------------------------- INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER AX = FF9Ch BL = function 00h set ??? pointer DS:SI -> ??? 01h clear pointer to 0000h:0000h ----------16FF9D----------------------------- INT 16 U - PC Tools v8+ CPTASK, VSAFE - ??? AX = FF9Dh ES:BX -> ??? word Return: ??? Note: if ES is non-zero, the word pointed at by ES:BX determines whether the ??? flag is cleared (word = 0000h) or set (word is nonzero). The flag is always cleared if ES=0000h. --------U-16FF9E----------------------------- INT 16 U - PC Tools v7+ DESKTOP - ??? AX = FF9Eh DL = ??? bit 7: ??? bits 6-0: function number??? (00h,01h,other) ??? Return: ??? --------U-16FFA1----------------------------- INT 16 U - PC Tools v7+ DESKTOP - ??? AX = FFA1h ??? Return: ??? Note: same as AX=FFA2h, except ??? set to FFh SeeAlso: AX=FFA2h --------U-16FFA2----------------------------- INT 16 U - PC Tools v7+ DESKTOP - ??? AX = FFA2h ??? Return: ??? Note: calls AX=FFC7h (remove window) and AX=FFFDh SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh --------y-16FFA3BX0000----------------------- INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK AX = FFA3h BX = 0000h CX = 0000h Return: AX = segment of resident code BX = 5555h CX = 5555h Note: also supported by DOS 6 UNDELETE which is licensed from PC Tools SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h,INT 2F/AX=6284h --------y-16FFA3BX0001----------------------- INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ??? AX = FFA3h BX = 0001h CX = 0001h Return: AX:BX -> ??? CX = BX --------y-16FFA3BX0002----------------------- INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ??? AX = FFA3h BX = 0002h CX = 0002h Return: AX = ??? (0 or 1) CX = BX = AX --------y-16FFA3BX0003----------------------- INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ??? AX = FFA3h BX = 0003h CX = 0003h Return: AX = ??? (0 or 1) CX = BX = AX --------y-16FFA3BX0004----------------------- INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG AX = FFA3h BX = 0004h CX = 0004h SeeAlso: AX=FFA3h/BX=0005h --------y-16FFA3BX0005----------------------- INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG AX = FFA3h BX = 0005h CX = 0005h SeeAlso: AX=FFA3h/BX=0004h --------y-16FFA3BX0006----------------------- INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ??? AX = FFA3h BX = 0006h CX = 0006h DX = current PSP segment as known to DOS??? or 0000h ----------16FFA3BXFFA3----------------------- INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK AX = FFA3h BX = FFA3h CX = FFA3h Return: BX = CX = 5555h if installed AX = resident code segment Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk- access indicator on the screen; in v7 and v8, this function was provided by DATAMON Note: DSKLIGHT chains to the previous handler if BX or CX is not FFA3h --------U-16FFA4----------------------------- INT 16 U - PC Tools v7-8 DESKTOP - ??? AX = FFA4h Return: ??? Notes: available even when not popped up sets unknown flag if ??? conditions met SeeAlso: AX=FEA4h --------c-16FFA5CX1111----------------------- INT 16 - PC-Cache v6+ - INSTALLATION CHECK AX = FFA5h CX = 1111h Return: CH = 00h if installed ES:DI -> internal data (see #0478) CL = cache state 01h enabled 02h disabled SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h Format of PC-Cache internal data: Offset Size Description (Table 0478) -1Ch 20 BYTEs cached drive list, one byte per drive A: to T: each byte is either blank (20h) or drive letter (41h-54h) -8 BYTE ??? -7 WORD number of physical transfers (scaled down to 0000h-7FFFh) -5 WORD number of saved transfers (scaled down to 0000h-7FFFh) -3 3 BYTEs ??? --------c-16FFA5CXAAAA----------------------- INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES AX = FFA5h CX = AAAAh Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5) SeeAlso: AX=FFA5h/CX=CCCCh --------c-16FFA5CXCCCC----------------------- INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES AX = FFA5h CX = CCCCh Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5) Note: delayed writes are automatically disabled on EXECing (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??; however, delayed writes are not automatically reenabled upon the program's termination in v6. SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh --------c-16FFA5CXDDDD----------------------- INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE AX = FFA5h CX = DDDDh SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh --------c-16FFA5CXEEEE----------------------- INT 16 - PC-Cache v6+ - ENABLE CACHE AX = FFA5h CX = EEEEh SeeAlso: AX=FFA5h/CX=DDDDh --------c-16FFA5CXFFFF----------------------- INT 16 - PC-Cache v6+ - FLUSH CACHE AX = FFA5h CX = FFFFh SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h --------U-16FFA6----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? AX = FFA6h Return: DS:SI -> ??? Note: available only when popped up --------U-16FFA7----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? PATH AX = FFA7h Return: DS:SI -> ASCIZ path (directory from which PCTools was run???) --------U-16FFA8----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - ??? AX = FFA8h DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total) ??? Return: ??? Notes: available only when popped up strings copied into internal buffer, among other actions --------U-16FFA9----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET VERSION STRING AX = FFA9h Return: DS:SI -> version string --------U-16FFAA----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - ??? AX = FFAAh ??? Return: ??? Note: available only when popped up --------U-16FFAB----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET EDITOR SETTINGS??? AX = FFABh Return: DS:SI -> editor setting strings??? --------U-16FFAC----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ??? AX = FFACh DL = ??? Note: available only when popped up --------U-16FFAD----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ??? AX = FFADh DL = ??? --------U-16FFAE----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? AX = FFAEh Return: AL = ??? --------U-16FFAF----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ??? AX = FFAFh DL = ??? --------U-16FFB0----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ??? AX = FFB0h BL = ??? --------U-16FFB1----------------------------- INT 16 U - PC Tools v6.0-8.0 DESKTOP - ??? AX = FFB1h ??? Return: ??? --------U-16FFB2----------------------------- INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ??? AX = FFB2h Return: DS:SI -> ??? --------U-16FFB3----------------------------- INT 16 U - PC Tools v5.5-8.0 DESKTOP - ??? AX = FFB3h ??? Return: ??? Note: available only when popped up --------U-16FFB4----------------------------- INT 16 U - PC Tools v5.5-8.0 DESKTOP - SET ??? FLAG AX = FFB4h Note: available only when popped up SeeAlso: AX=FFBBh --------U-16FFB5----------------------------- INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET WINDOW PARAMETERS AX = FFB5h BX = window specifier (000Fh to 0019h) (see #0479) DX = 0000h get, nonzero = set ES:DI -> window parameter buffer (see #0480) SeeAlso: AX=FFCBh (Table 0479) Values for PC Tools DESKTOP window specifier: 000Fh comm/FAX 0014h hotkey selection 0015h ASCII table 0016h system colors menu Format of PC Tools DESKTOP window parameters: Offset Size Description (Table 0480) 00h BYTE rows in window, not counting frame 01h BYTE columns in window, not counting frame 02h BYTE row number of top of window 03h BYTE 2*column number of left of window 04h BYTE character attribute for ??? 05h BYTE character attribute for background/border 06h BYTE character attribute for ??? 07h DWORD pointer to ??? on screen 0Bh 4 BYTEs ??? 0Fh BYTE nonzero if window may be resized Note: if running in monochrome mode, character attributes at offsets 04h to 06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h are changed to 07h on reading --------U-16FFB6----------------------------- INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ??? AX = FFB6h Return: AH = ??? AL = ??? --------U-16FFB7----------------------------- INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET ??? AX = FFB7h BX = direction 0000h copy to buffer else copy from buffer DS:SI -> 70-byte buffer with ??? Return: data copied Note: available only when popped up under v6.0+ --------U-16FFB8----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET/SET??? AX = FFB8h BH = subfunction 00h get Return: BL = old value of ??? CL = old value of ??? (v6.0+) CH = old value of ??? (v6.0+) nonzero set BL = new value for ??? CL = new value for ??? (v6.0+) CH = new value for ??? (v6.0+) DH = ??? Return: AL = old value replaced by CL (v6.0+) AH = old value replaced by CH (v6.0+) --------U-16FFB9----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFB9h ??? Return: AX = ??? CX = ??? DS:SI -> ??? ES:DI -> ??? --------U-16FFBA----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFBAh ??? Return: AX = ??? Note: available only when popped up --------U-16FFBB----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLEAR ??? FLAG AX = FFBBh Note: available only when popped up SeeAlso: AX=FFB4h --------U-16FFBC----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - RESTORE ORIGINAL SCREEN??? AX = FFBCh --------U-16FFBD----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? DATABASE INDEXING MESSAGES AX = FFBDh ??? Return: ??? --------U-16FFBE----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFBEh ??? Return: ??? Note: available only when popped up --------U-16FFBF----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFBFh BX = DOS file handle to write on ??? Return: ??? Note: available only when popped up --------U-16FFC0----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFC0h ??? Return: AX = 0000h if successful AX = FFFFh on error Note: available only when popped up --------U-16FFC1----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFC1h BL = ??? ES:DI -> data structure (see #0481) ??? Return: AX = ??? Note: available only when popped up SeeAlso: AX=FFC2h,AX=FFC3h Format of PC Tools DESKTOP data structure: Offset Size Description (Table 0481) 00h WORD ??? 02h WORD ??? 04h WORD ??? 06h WORD ??? 08h WORD ??? 0Ah BYTE ??? 0Bh BYTE ??? (zero/nonzero) ---v7.1--- 0Ch WORD ??? 0Eh BYTE ??? 0Fh WORD ??? 11h WORD ??? ??? --------U-16FFC2----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFC2h BL = ??? ES:DI -> data structure (see #0481) ??? Return: AH = ??? CX = ??? DH = ??? DL = ??? Note: available only when popped up SeeAlso: AX=FFC1h,AX=FFC3h --------U-16FFC3----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFC3h BL = ??? ES:DI -> data structure (see #0481) ??? Return: AH = ??? CX = ??? DH = ??? DL = ??? Note: available only when popped up SeeAlso: AX=FFC1h,AX=FFC2h --------U-16FFC4----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ??? AX = FFC4h Return: AL = ??? BX = segment of scratch space??? CX = segment of stored screen data (section covered by window???) DX = segment of window parameters for ??? ES:BP -> ??? Note: available only when popped up in versions prior to 6.0 --------U-16FFC5----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK WHETHER DESKTOP LOADED RESIDENT AX = FFC5h Return: BL = Desktop state 00h if nonresident nonzero if loaded resident Note: available only when popped up; should call AX=FFEFh first to ensure that DESKTOP is active SeeAlso: AX=FFEFh,AX=FFF3h --------U-16FFC6----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? AX = FFC6h BL = new value for ??? --------U-16FFC7----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - REMOVE WINDOW AX = FFC7h ??? Return: ??? --------U-16FFC8----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ??? AX = FFC8h Return: DS:SI -> ??? Note: valid only while popped up --------U-16FFC9----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY DATA TO CLIPBOARD AX = FFC9h DS:SI -> characters to store in clipboard CX = size in bytes Return: CF set on error Notes: available only when popped up while copying, bytes of 00h and 0Ah are skipped --------U-16FFCA----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? AX = FFCAh DX = ??? Return: AX destroyed Note: available only when popped up --------U-16FFCB----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SELECT WINDOW PARAMETERS??? AX = FFCBh DX = window specifier??? Return: AX destroyed Note: available only when popped up SeeAlso: AX=FFB5h --------U-16FFCC----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY ASCIZ STRING CENTERED IN WINDOW AX = FFCCh DS:SI -> ASCIZ string Return: AX = ??? CX = ??? ES:DI -> address past last character displayed (v5.1/5.5) -> ??? on menu bar (v6.0) --------U-16FFCD----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFCDh DS:DX -> ??? Return: ??? Note: available only when popped up --------U-16FFCE----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? DELAYS AX = FFCEh CX = ??? Return: nothing??? --------U-16FFCF----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLOSE PRINTER/PRINT FILE AX = FFCFh Note: available only when popped up --------U-16FFD0----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO PRINT??? AX = FFD0h ??? Return: ??? Note: available only when popped up --------U-16FFD1----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY PRINT OPTIONS MENU AX = FFD1h Return: BX = number of copies DX = destination 00h cancel 01h LPT1 02h LPT2 03h LPT3 04h COM1 05h COM2 06h disk file Note: available only when popped up --------U-16FFD2----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFD2h BX = ??? Return: BL = ??? Note: available only when popped up --------U-16FFD3----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFD3h DS:SI -> 92-byte data record for ??? Return: ??? SeeAlso: AX=FED3h --------U-16FFD4BH3C------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - CREATE/OPEN/DELETE FILE AX = FFD4h BH = 3Ch create file (with no attributes) 3Dh open file 41h delete file BL = access mode 00h read only 01h write only 02h read/write DS:SI -> ASCIZ filename Return: BX = file handle 0000h on error Note: operation is attempted in (in order) the directory from which the desktop was started/run???, the directory specified with the filename, X:\PCTOOLS\, and X:\ --------U-16FFD5----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFD5h ??? Return: ??? Note: available only when popped up --------U-16FFD6----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFD6h BX = ??? CX = ??? DX = offset in ??? ??? Return: ??? Note: available only when popped up --------U-16FFD7----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFD7h ??? Return: BL = ??? Note: available only when popped up --------U-16FFD8----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SAFE CREATE FILE AX = FFD8h DS:BX -> ASCIZ filename Return: BX = file handle 0000h on error Note: pops up confirmation menu if file already exists only available when popped up??? --------U-16FFD9----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ??? AX = FFD9h Return: AX = ??? Note: available only when popped up --------U-16FFDA----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET NAME OF LAST FILE OPENED AX = FFDAh DS:SI -> ??? (v5.1/5.5 only) Return: DS:SI -> filename --------U-16FFDB----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? AX = FFDBh BL = ??? Note: available only when popped up --------U-16FFDC----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - UNHOOK AX = FFDCh Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to original values Index: uninstall;PC Tools DESKTOP --------U-16FFDDBX0000----------------------- INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK AX = FFDDh BX = 0000h Return: CX = 5555h DX = 5555h if PCShell installed in resident mode --------U-16FFDDBX0001----------------------- INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP AX = FFDDh BX = 0001h Return: CF clear if request successful (PCShell will pop up) CF set on error SeeAlso: AX=FFDDh/BX=0003h --------U-16FFDDBX0002----------------------- INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ??? AX = FFDDh BX = 0002h Return: AL = 00h ??? 01h ??? Note: PCShell v6.0+ displays the error message "Incorrect PCRUN version", awaits a keystroke, and aborts the current process --------U-16FFDDBX0003----------------------- INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP AX = FFDDh BX = 0003h SeeAlso: AX=FFDDh/BX=0001h --------U-16FFDDBX0004----------------------- INT 16 U - PC Tools v5.1+ PCShell API - GET ??? AX = FFDDh BX = 0004h Return: CF clear if successful DS:SI -> ??? --------U-16FFDDBX0005----------------------- INT 16 U - PC Tools v5.1+ PCShell API - ??? AX = FFDDh BX = 0005h ??? Return: ??? Note: resets various variables if certain conditions are met --------U-16FFDDBX0006----------------------- INT 16 U - PC Tools v5.1+ PCShell API - ??? AX = FFDDh BX = 0006h ??? Return: ??? Note: resets various variables if certain conditions are met --------U-16FFDDBX0007----------------------- INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG AX = FFDDh BX = 0007h Return: CF clear if successful SeeAlso: AX=FFDDh/BX=0008h --------U-16FFDDBX0008----------------------- INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG AX = FFDDh BX = 0008h Return: CF undefined SeeAlso: AX=FFDDh/BX=0007h --------U-16FFDDBX0009----------------------- INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS AX = FFDDh BX = 0009h Return: CF clear if successful DS:SI -> list of pointers (see #0482) Format of PC Tools PCShell returned pointer list: Offset Size Description (Table 0482) 00h WORD offset of WORD containing ??? 02h WORD offset of name of program to execute 04h WORD offset of 80-byte buffer for ??? 06h WORD offset of buffer for ??? (length in WORD preceding buffer) 08h WORD offset of buffer for ??? (length in WORD preceding buffer) --------U-16FFDDBX000A----------------------- INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK AX = FFDDh BX = 000Ah Return: CX = 5555h if running DX = 5555h Note: also sets a flag --------U-16FFDDBX000B----------------------- INT 16 U - PC Tools v6.0+ PCRUN API - ??? AX = FFDDh BX = 000Bh ??? Return: CX = 5555h if PCRUN active DX = 5555h Note: also clears flag set by AX=FFDDh/BX=000Ah --------U-16FFDE----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY POPUP MENU AX = FFDEh DS:DX -> menu description (must be on a paragraph boundary) Return: AX = ??? AL seems to be the number of the selected button Note: available only when popped up SeeAlso: AX=FFEEh --------U-16FFDF----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFDFh ??? Return: ??? --------U-16FFE0----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFE0h CX = ??? DX = ??? Note: available only when popped up --------U-16FFE1----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - BEEP AX = FFE1h --------U-16FFE2----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFE2h DX = ??? Return: ??? Note: available only when popped up --------U-16FFE3----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - PRINT CHARACTER AX = FFE3h BL = character to print to currently open printer or print file Return: CF set on error Note: available only when popped up SeeAlso: INT 17/AH=00h --------U-16FFE4----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFE4h DX = segment of ??? Return: ??? Note: available only when popped up --------U-16FFE5----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - POP UP FILE SELECTION MENU AX = FFE5h DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title DX = segment of window parameters??? Return: AX = DOS file handle for file DS:DX -> filename??? FFFFh if function cancelled by user Note: available only when popped up SeeAlso: AX=FFDAh --------U-16FFE6----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK FOR AND GET KEYSTROKE AX = FFE6h Return: AX = 0000h if no key available else BIOS keycode Notes: available only when popped up invokes INT 28 idle interrupt before checking for key --------U-16FFE7----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFE7h BX = segment of ??? Return: ??? Note: available only when popped up --------U-16FFE8----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY NUMBER AX = FFE8h CX = number DH = attribute DS:SI -> destination for ASCII number Return: DS:SI buffer filled in with alternating characters and attributes --------U-16FFE9----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET FILE LIST??? AX = FFE9h Return: BX = segment of file/directory list (14 bytes per file, NUL-padded) Note: available only when popped up --------U-16FFEA----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY COUNTED STRING AX = FFEAh DS:SI -> counted string (count byte followed by string) Return: ??? Note: available only when popped up --------U-16FFEB----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFEBh ??? Return: ??? --------U-16FFEC----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET KEY AX = FFECh DS:SI -> FAR routine to ??? BX = ??? ??? Return: AX = keystroke FFFFh if F10 pressed to go to menu Notes: available only when popped up invokes INT 28 while waiting for keystroke F10 is hotkey to Desktop menu Index: hotkeys;PC Tools DESKTOP --------U-16FFED----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ??? AX = FFEDh Return: AX = ??? Note: available only when popped up --------U-16FFEE----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE PULLDOWN MENUS AX = FFEEh DS:SI -> pulldown menu system description (see #0483) Return: AX destroyed Notes: available only when popped up if the accessory does not need any menu items of its own, it should call AX=FFFAh instead SeeAlso: AX=FFF7h,AX=FFFAh Format of PC Tools DESKTOP pulldown menu system description: Offset Size Description (Table 0483) 00h WORD offset of menu bar contents (counted string) 02h WORD number of items on menu bar 04h 10 BYTEs scan codes for hotkeying to each of up to ten menu items 0Eh 10 BYTEs which character to highlight in each menu item (01h=first) 18h WORD offset of first menu definition (see #0484) 1Ah WORD offset of second menu definition ... Format of PC Tools DESKTOP menu definition: Offset Size Description (Table 0484) 00h WORD offset of menu contents (see #0485) 02h WORD number of entries in menu 04h for each entry: Offset Size Description 00h BYTE scancode of Alt-key to invoke entry 01h BYTE character to highlight (01h=first, etc) 02h WORD offset of FAR routine to handle selection Format of PC Tools DESKTOP menu contents: Offset Size Description (Table 0485) 00h BYTE number of lines in menu 01h BYTE width of menu 02h N BYTEs counted strings, one for each line in menu --------U-16FFEFCX0000----------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - INSTALLATION CHECK AX = FFEFh CX = 0000h Return: CX = ABCDh if PC Tools DESKTOP.EXE installed BX = segment of resident portion AX = ??? (v5.1/5.5 only) SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h --------U-16FFF0----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? AX = FFF0h DX = ??? Return: AX destroyed Note: available only when popped up --------U-16FFF1BX0000----------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ALTERNATE INSTALLATION CHECK AX = FFF1h BX = 0000h leave ??? flag as is nonzero set ??? flag Return: CX = 5555h if installed DX = 5555h --------U-16FFF2----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY HELP LINE AX = FFF2h DS:SI -> ASCIZ function key label string (each label preceded by '[') or help text Return: AX destroyed Notes: available only when popped up if the specified string does not start with '[', it is displayed centered on the bottom line, else the function key labels are shown --------U-16FFF3----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO UNLOAD RESIDENT DESKTOP AX = FFF3h Note: releases any EMS being used; restores video mode, page, and cursor shape; and restores interrupt vectors SeeAlso: AX=FFC5h,AX=FFEFh Index: uninstall;PC Tools DESKTOP --------U-16FFF4----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? AX = FFF4h ??? Return: ??? Note: available only when popped up SeeAlso: AX=FFF6h --------U-16FFF5----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET SCREEN ATTRIBUTE ARRAY AX = FFF5h Return: ES:BX -> screen attributes data structure (see #0486) AL = ??? (v6.0+) Format of PC Tools DESKTOP attribute data structure: Offset Size Description (Table 0486) -1 BYTE attribute for desktop background 00h BYTE attribute for normal characters on desktop menu 01h BYTE attribute for highlighted characters on desktop menu 02h 5 BYTEs ??? 07h BYTE attribute for dialog boxes 08h 15 BYTEs ??? 17h BYTE attribute for message boxes --------U-16FFF6----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - INVOKE NOTEPAD EDITOR AX = FFF6h DS = segment of editor buffer structure (see #0487) BX = ??? DX = segment of window parameters structure (see #0480) Return: ??? Note: available only when popped up SeeAlso: AX=FFF4h Format of PC Tools DESKTOP editor buffer structure: Offset Size Description (Table 0487) 00h WORD offset of current cursor position in buffer segment 02h 2 BYTEs ??? 04h WORD offset of beginning of file data in buffer segment 06h 10 BYTEs ??? 10h N BYTEs ASCIZ name of file being edited --------U-16FFF7----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS MENU BAR ENTRY??? AX = FFF7h DS:SI -> ??? ??? Return: ??? Notes: available only when popped up performs input processing on the menu bar set up with AX=FFEEh SeeAlso: AX=FFEEh,AX=FFFBh --------U-16FFF8----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DRAW EMPTY WINDOW AX = FFF8h DS:0000h -> window parameters structure (see #0480) DS:BX -> DWORD to store address of ??? on screen Return: ??? --------U-16FFF9----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE SCREEN REFRESH ROUTINE AX = FFF9h ES:BX -> FAR routine to redisplay the utility's window Note: available only when popped up --------U-16FFFA----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE STANDARD PULLDOWN MENUS AX = FFFAh Notes: available only when popped up adds the "Window" option to the "Desktop" option which is the only one available when no accessories are active. Unlike AX=FFEEh, no additional menu items are added between "Desktop" and "Window" SeeAlso: AX=FFEEh,AX=FFFBh --------U-16FFFB----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS STANDARD MENU BAR AX = FFFBh Return: ??? Notes: available only when popped up performs input processing on the standard menu bar set up with AX=FFFAh SeeAlso: AX=FFF7h --------U-16FFFC----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET HOTKEYS AND KEYBOARD VECTOR AX = FFFCh Return: ES:BX -> hotkey table (see #0488) DS:DX = original INT 09 vector Format of PC Tools DESKTOP hotkey table: Offset Size Description (Table 0488) 00h 2 BYTEs scancode/shift state for desktop hotkey 02h 2 BYTEs scancode/shift state for clipboard paste key 04h 2 BYTEs scancode/shift state for clipboard copy key 06h 2 BYTEs scancode/shift state for screen autodial key --------U-16FFFD----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY ??? AX = FFFDh Return: AX destroyed Note: copies 4000 bytes from ??? to ??? under certain circumstances SeeAlso: AX=FF91h,AX=FF92h --------M-16FFFE----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SHOW MOUSE CURSOR AX = FFFEh SeeAlso: AX=FFFFh,INT 33/AX=0001h --------M-16FFFF----------------------------- INT 16 U - PC Tools v5.1-8.0 DESKTOP - HIDE MOUSE CURSOR AX = FFFFh SeeAlso: AX=FFFEh,INT 33/AX=0002h --------P-17----DX0ABC----------------------- INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK DX = 0ABCh Return: AX = AAAAh DX = BAAAh ES = code segment of resident portion --------P-17----DX0B90----------------------- INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK DX = 0B90h Return: DX = ABBBh ES = code segment of resident portion --------P-17----DX0B91----------------------- INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK DX = 0B91h Return: DX = ABCBh ES = code segment of resident portion --------P-17----DX0F5F----------------------- INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK DX = 0F5Fh Return: AX = AAAAh DX = F555h ES = code segment of resident portion --------B-1700------------------------------- INT 17 - PRINTER - WRITE CHARACTER AH = 00h AL = character to write DX = printer number (00h-02h) Return: AH = printer status (see #0489) SeeAlso: AH=02h,AH=84h"AX",AX=6F02h,AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC" Bitfields for printer status: Bit(s) Description (Table 0489) 7 not busy 6 acknowledge 5 out of paper 4 selected 3 I/O error 2-1 unused 0 timeout --------B-1701------------------------------- INT 17 - PRINTER - INITIALIZE PORT AH = 01h DX = printer number (00h-02h) Return: AH = printer status (see #0489) Note: some printers report that they are ready immediately after initialization when they actually are not; a more reliable result may be obtained by calling AH=02h after a brief delay SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC" --------B-1702------------------------------- INT 17 - PRINTER - GET STATUS AH = 02h DX = printer number (00h-02h) Return: AH = printer status (see #0489) Note: PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC" --------P-1702--DX0000----------------------- INT 17 - INSET - INSTALLATION CHECK AH = 02h DX = 0000h CX = 07C3h (1987d) Return: CX = 07C2h (1986d) if installed Program: INSET is a text/graphics integration program --------b-170200BX5050----------------------- INT 17 - Advanced Parallel Port (EPP) BIOS - INSTALLATION CHECK AX = 0200h BX = 5050h ('PP') CH = 45h ('E') DX = printer port number (00h-02h) Return: AH = status 00h if installed and port is an enhanced parallel port CX:AL = installed BIOS type 5050h:45h ('PPE') if EPP v3.0 BIOS Installed 4550h:50h ('EPP') if EPP v1.0 BIOS installed DX:BX -> far entry point to Advanced BIOS (see #0490) 03h if installed but specified port not supported CF set Program: The Advanced Parallel Port BIOS provides support for parallel port peripherals using the enhanced modes of the IEEE 1284. SeeAlso: AH=E0h (Table 0490) Call EPP BIOS entry point with: DL = port number AH = function 00h get ??? Return: AH = 00h if successful BH = ??? (10h) BL = ??? (00h) ES:DI -> driver copyright string??? CX = I/O port base address for parallel port AL = IRQ number used by port 01h set port mode??? AL = ??? bit 0: ??? bit 1: ??? bit 2: ??? bits 3-7 reserved (0) Return: AH = 00h if successful CF clear if successful AL = ??? (destroyed?) 02h get port mode??? Return: AL = ??? (01h,02h,04h,FFh) AH = 00h CF clear 03h interrupt control AL = subfunction 00h enable parallel port interrupts 01h disable parallel port interrupts Return: AH = status (00h,05h,06h) (see also #0491) 04h set ??? Return: AH = 00h if successful AL destroyed 05h ??? Return: AL destroyed 06h get ??? Return: AL = ??? (read from port 037Bh after setting bit 5 of port 037Ah) 07h get ??? Return: AL = ??? (read from port 037Ch after clearing bit 5 of port 037Ah) 08h output block of data ES:SI -> block of data to be sent to parallel port CX = number of bytes to output Return: AH = status (see #0491) Note: clears bit 5 of port 037Ah, then does OUTSB to 037Ch 09h read byte of data Return: AH = status (see #0491) AL = byte read from parallel port Note: sets bit 5 of port 037Ah, then does IN from 037Ch 0Ah read block of data ES:DI -> buffer for received data CX = number of bytes to read from paralle port Return: AH = status (see #0491) ES:DI buffer filled if successful Note: sets bit 5 of port 037Ah, then does INSB from 037Ch 0Bh read ??? AL = ??? Return: AH = status (see #0491) AL = byte read if successful Note: clears bit 5 of port 037Ah, does OUT to 037Bh, then sets bit 5 of 037Ah and does IN from 037Ch 0Ch send ??? AL = ??? (byte to send to port 037Bh) DH = ??? (byte to send to port 037Ch) Return: AH = status (see #0491) Note: clears bit 5 of port 037Ah, does OUT to 037Bh, then sets bit 5 of 037Ah and does OUT to 037Ch 0Dh read block ??? AL = ??? (byte to send to port 037Bh) ES:DI -> buffer for received data CX = number of bytes to read Return: AH = status (see #0491) Note: clears bit 5 of port 037Ah, does OUT to 037Bh, then sets bit 5 of 037Ah and does INSB from 037Ch 0Eh write block ??? AL = ??? (byte to send to port 037Bh) ES:DI -> data to be sent CX = number of bytes to write Return: AH = status (see #0491) Note: clears bit 5 of port 037Ah, does OUT to 037Bh, then sets bit 5 of 037Ah and does OUTSB to 037Ch 0Fh NOP??? Return: AH = status (00h,03h,05h) (see #0491) Notes: this function does nothing beyond checking whether the desired port is supported and in the proper mode must call function 01h with AL=04h first to get a successful return code 10h NOP??? Return: AH = status (00h,03h,05h) (see #0491) Notes: this function does nothing beyond checking whether the desired port is supported and in the proper mode must call function 01h with AL=04h first to get a successful return code 11h ??? AL = subfunction 00h ??? 01h ??? ES:DI -> ??? Return: AH = status (00h,03h,05h,06h) (see #0491) 12h ??? AL = subfunction 00h get ??? 01h increment ??? 02h decrement ??? Return: AH = status (00h,05h,06h,07h) (see #0491) AL = current state of ??? (00h,01h) Note: unlike all other functions, this one does not use DL Return: AH = status (see #0491) CF clear if successful CF set on error Notes: functions 03h-12h all require that function 01h have been called with AL=04h first the above description is derived from Compaq's EPPBIOS.SYS, supplied in SOFTPAQ number 0937 (Table 0491) Values for EPP BIOS function status: 00h successful 02h invalid parameter??? 03h unsupported parallel port 05h unsupported in current mode 06h invalid subfunction 07h already ??? FFh invalid/unsupported function --------P-1703------------------------------- INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS AH = 03h Return: BX = ??? CX = ??? Program: ELTSR is the resident portion of the Emulaser PostScript emulator by Vertisoft Systems, Inc. SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h --------c-1703------------------------------- INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING AH = 03h DX = printer port number CX = number of characters to print DS:SI -> string Return: AH = printer status (see #0489) CX = number of characters actually printed Desc: send an entire string of chars to the print spooler with a single call Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible operating system by The Software Link, Inc. SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS" --------c-1703--BX5A00----------------------- INT 17 - DMP Print Spooler v2.03 - INSTALLATION CHECK AH = 03h BX = 5A00h Return: AX = 5ACBh DI = 0000h ES = DMP code segment (also data segment) Program: DMP is a Printer driver/spooler, by DMP (USA), available on the PCTODAY disk, volume 10, March 1991 --------N-170300----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "socket" AX = 0300h CX = type of socket from socket( domain, type, protocol ) DX = local identifier of socket (0 - 31) Return: AX = 0000h success CX = segment of 4500 byte transfer buffer DX = offset of 4500 byte transfer buffer = FFFFH failure CX = error code ENFILE 23 Program: DOSISODE is the ISO developers environment which has been ported to DOS and will run with the Waterloo TCP turned into a resident TSR. Currently it allows a maximum of 6 open sockets. Note: this function will initialize the interface the first time it is called SeeAlso: AX=0400h"DOSISODE",AX=0600h"DOSISODE",AX=0800h"DOSISODE" SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE" --------P-1704------------------------------- INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT AH = 04h Note: has no effect unless ELTSR is deactivated (see AX=0503h) SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h --------N-170400----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "bind" AX = 0400h Note: this function just returns SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0C00h"DOSISODE" --------P-170500----------------------------- INT 17 U - Emulaser ELTSR - ??? AX = 0500h ??? Return: AX = unload status (0001h safe to unload, 0002h not safe) BX = ??? CX = PSP segment of ELTSR DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing) SI = ??? DI = ??? SeeAlso: AH=04h,INT 1A/AH=E5h --------N-170500----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "connect" AX = 0500h SeeAlso: AX=0400h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE" --------P-170501----------------------------- INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS AX = 0501h Return: (see AX=0500h) Note: restores interrupt vectors without checking whether they have been hooked by later programs; should only be called if ELTSR reports that it is safe to unload SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h Index: uninstall;Emulaser ELTSR --------P-170502----------------------------- INT 17 U - Emulaser ELTSR - SET ??? AX = 0502h BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3) CL = ??? DL = ??? Return: (see AX=0500h) SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h --------P-170503----------------------------- INT 17 U - Emulaser ELTSR - DEACTIVATE??? AX = 0503h Return: (see AX=0500h) SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h --------P-1706------------------------------- INT 17 U - Emulaser ELTSR - ??? AH = 06h ??? Return: ??? SeeAlso: AH=05h,INT 1A/AH=E5h --------N-170600----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "listen" AX = 0600h Note: this function just returns SeeAlso: AX=0300h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE" SeeAlso: AX=0E00h"DOSISODE" --------P-1707------------------------------- INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE AH = 07h ES:DX -> ASCIZ filename to be opened Return: ??? Note: new output will be appended to the specified file SeeAlso: AH=08h,INT 1A/AH=E5h --------N-170700----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "accept" AX = 0700h Note: this function just returns SeeAlso: AX=0600h"DOSISODE",AX=0800h"DOSISODE",AX=0C00h"DOSISODE" --------P-1708------------------------------- INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE AH = 08h ??? Return: ??? Desc: close the file previously opened by function 07h SeeAlso: AH=07h,INT 1A/AH=E5h --------N-170800----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "recvfrom" AX = 0800h SeeAlso: AX=0500h"DOSISODE",AX=0900h"DOSISODE",AX=0A00h"DOSISODE" --------P-1709------------------------------- INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE??? AH = 09h BX = ??? CX = ??? DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2) Return: AX = status 00h successful FFh failed Program: ELTSR is the resident portion of the Emulaser PostScript emulator by Vertisoft Systems, Inc. Note: this function calls through to INT 1A/AX=E401h, and thus requires that either ELSPL or Disk Spool II be installed SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h --------N-170900----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "sendto" AX = 0900h SeeAlso: AX=0700h"DOSISODE",AX=0800h"DOSISODE",AX=0A00h"DOSISODE" --------P-170A------------------------------- INT 17 U - Emulaser ELTSR - SET ??? FILENAME AH = 0Ah ES:BX -> ??? buffer CX = length of ??? buffer Return: ??? Note: copies the specified name into the buffer passed to ELSPL as the filename by AH=09h SeeAlso: AH=09h,INT 1A/AH=E5h --------N-170A00----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "select" AX = 0A00h SeeAlso: AX=0800h"DOSISODE",AX=0B00h"DOSISODE",AX=0E00h"DOSISODE" --------P-170B------------------------------- INT 17 U - Emulaser ELTSR - GET ??? AH = 0Bh Return: AX:BX -> ??? SeeAlso: AH=0Ah,INT 1A/AH=E5h --------N-170B00----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "ioctl" AX = 0B00h DX = local identifier of socket (0 - 31) Note: this function sets the socket into non_block mode SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE" --------P-170C------------------------------- INT 17 U - Emulaser ELTSR - SET ??? FLAG AH = 0Ch ??? Return: ??? SeeAlso: AH=0Bh,INT 1A/AH=E5h --------N-170C00----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "close" AX = 0C00h SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0D00h"DOSISODE" --------P-170D------------------------------- INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE AH = 0Dh Return: AX = state (0000h off, 0010h on) Desc: determine the actual state of ScrlLk even when Emulaser is controlling the ScrlLk light as its activity indicator SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h --------N-170D00----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - "shutdown" - SHUTDOWN INTERFACE AX = 0D00h Note: this function is used to shutdown the interface SeeAlso: AX=0C00h"DOSISODE",AX=0E00h"DOSISODE" --------P-170E------------------------------- INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING AH = 0Eh Program: ELTSR is the resident portion of the Emulaser PostScript emulator by Vertisoft Systems, Inc. Note: this function is called by ELTSR on every INT 08 to allow data to be processed in the background, but may also be called by applications to give Emulaser additional CPU time SeeAlso: AH=0Dh,INT 1A/AH=E5h --------N-170E00----------------------------- INT 17 - DOSISODE to WATTCP TSR Interface - INSTALLATION CHECK AX = 0E00h Return: CX = 1234h if installed Program: DOSISODE is the ISO developers environment which has been ported to DOS and will run with the Waterloo TCP turned into a resident TSR. Currently it allows a maximum of 6 open sockets. Note: this function is used to check if the interface is loaded SeeAlso: AX=0300h"DOSISODE",AX=0A00h"DOSISODE" --------P-172000----------------------------- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK AX = 2000h BL = printer number??? Return: AX = status (see #0492) BX = driver version number (BH=major,BL=minor) CH = ??? (00h) CL = ??? DX = ??? (0100h) Note: also enables the remaining printer driver functions (2001h-2007h) SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h (Table 0492) Values for PC Paint function status: 0000h successful 0001h invalid printer??? 0002h ??? 0003h invalid subfunction 0005h driver disabled, must call function 00h first 0009h unknown printer error 000Bh printer not selected 000Ch printer out of paper 000Eh error while writing to serial printer 000Fh ??? 0010h invalid function number 0011h value out of range --------P-172001----------------------------- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG AX = 2001h BL = printer number??? Return: AX = status (see #0492) --------P-172002----------------------------- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION AX = 2002h BL = printer number??? CL = desired information 00h printer type Return: ES:DI -> ASCIZ printer name 01h paper size DX = size index Return: ES:DI -> ASCIZ paper size description 02h ??? Return: BX = ??? 03h printer information??? DX = ??? ES:BX -> buffer for ??? (min 134 bytes) Return: AX = status (see #0492) SeeAlso: AX=2000h,AX=2004h --------P-172003----------------------------- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ??? AX = 2003h ES:BX -> ??? Return: AX = status (see #0492) SeeAlso: AX=2000h,AX=2004h --------P-172004----------------------------- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ??? AX = 2004h BL = printer number??? Return: AX = status (see #0492) ES:DI -> ??? SeeAlso: AX=2000h,AX=2003h --------P-172005----------------------------- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE AX = 2005h BL = printer number??? Return: AX = status (see #0492) Note: this function also clears the flag set by AX=2001h SeeAlso: AX=2000h,AX=2001h,AX=2006h --------P-172006----------------------------- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN AX = 2006h BL = printer number??? Return: AX = status (see #0492) Note: this function also clears the flag set by AX=2001h and disables functions other than AX=2000h SeeAlso: AX=2000h,AX=2001h,AX=2005h --------P-172007----------------------------- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED AX = 2007h Return: AX unchanged SeeAlso: AX=2000h --------N-172400----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS AX = 2400h DL = new state 00h disabled 01h enabled Return: DL = 24h if installed DH = minor version number CX = network address of this machine AL = status (see #0493) SeeAlso: AX=2403h,INT 16/AX=4500h (Table 0493) Values for NET.24 function status: 00h successful 01h timeout 02h header error 03h data error 04h busy 05h invalid parameters --------N-172401----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE AX = 2401h BL = timeout in clock ticks Return: AL = status (see #0493) DX:BX -> receive buffer SeeAlso: AX=2402h,AX=2404h,AX=2408h --------N-172402----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE AX = 2402h transmit buffer filled (see AX=2403h) Return: AL = status (see #0493) SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h --------N-172403----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER AX = 2403h Return: AL = status (see #0493) CX = number of characters in receive ring buffer DX:BX -> transmit buffer SeeAlso: AX=2400h,AX=2402h --------N-172404----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK AX = 2404h BX = target address Return: AL = status (see #0493) SeeAlso: AX=2402h,AX=2405h --------N-172405----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK AX = 2405h BX = target address Return: AL = status (see #0493) SeeAlso: AX=2402h,AX=2404h --------N-172406----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE AX = 2406h Return: AL = status (see #0493) SeeAlso: AX=2407h,AX=240Ah --------N-172407----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE AX = 2407h Return: AL = status (see also #0493) 06h end of data DL = received character SeeAlso: AX=2406h --------N-172408----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE AX = 2408h Return: AL = status (see also #0493) 06h end of data CX = number of bytes in receive buffer DX:SI -> receive buffer SeeAlso: AX=2401h,AX=2405h,AX=2409h --------N-172409----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE AX = 2409h BX = target address CX = number of data bytes DL = command code to send DS:SI -> data bytes for command Return: AL = status (see also #0493) 03h no response 06h remote currently unable to perform command SeeAlso: AX=2405h,AX=2408h --------N-17240A----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT AX = 240Ah Return: AL = status (see #0493) SeeAlso: AX=2406h,AX=240Bh,AX=240Ch --------N-17240B----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE AX = 240Bh DL = character to send Return: AL = status (see also AX=2400h) 03h transmission error 06h write error SeeAlso: AX=2407h,AX=240Ah,AX=240Ch --------N-17240C----------------------------- INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT AX = 240Ch Return: AL = status (see also AX=2400h) 03h transmission error 06h remote breaks connection SeeAlso: AX=240Ah,AX=240Bh --------J-175000----------------------------- INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE AX = 5000h BX = country code 0001h USA (English), 0051h Japan Return: AL = status 00h successful 01h bad country code 02h other error SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h --------J-175001----------------------------- INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE AX = 5001h Return: AL = status 00h successful BX = country code 02h error SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h --------J-1751------------------------------- INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION AH = 51h DX = 2-byte JIS code Return: DX = shift-JIS value or 0000h on error Note: one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard) characters to Shift-JIS characters, and the other performs the opposite conversion SeeAlso: AX=5000h,AH=52h --------J-1752------------------------------- INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION AH = 52h DX = 2-byte shift-JIS code Return: DX = JIS code or 0000h on error Note: one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard) characters to Shift-JIS characters, and the other performs the opposite conversion SeeAlso: AH=51h --------V-1760------------------------------- INT 17 - FLASHUP.COM - INSTALLATION CHECK AH = 60h Return: AL = 60h DX = CS of resident code Notes: FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co. FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah consisting of an 80h followed by the actual command SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah --------V-1761------------------------------- INT 17 - SPEEDSCR.COM - INSTALLATION CHECK AH = 61h Return: AL = 61h DX = CS of resident code Note: SPEEDSCR.COM is by The Software Bottling Co. --------P-1762------------------------------- INT 17 U - T2PS v1.0 - UNINSTALL AH = 62h Return: nothing SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh --------P-1763------------------------------- INT 17 U - T2PS v1.0 - SET PARAMETERS AH = 63h ES:SI -> settings (see #0494) Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D. Technologies SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h Format of T2PS settings: Offset Size Description (Table 0494) 00h WORD LPT port number (0=LPT1, etc.) 02h WORD page heigh in points 04h WORD page width in points 06h WORD top margin in points 08h WORD bottom margin in points 0Ah WORD left margin in points 0Ch WORD right margin in points 0Eh WORD font size in points 10h WORD tab size 12h WORD timeout in clock ticks --------P-1764------------------------------- INT 17 U - T2PS v1.0 - GET PARAMETERS AH = 64h ES:SI -> buffer for settings (see #0494) Return: ES:SI buffer filled SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h --------b-176F00BX0000----------------------- INT 17 - HP Vectra - EXTENDED BIOS - "F17_INQUIRE" - INSTALLATION CHECK AX = 6F00h BX = 0000h Return: BX = 4850h ("HP") if HP Extended BIOS printer extensions available SeeAlso: AX=6F02h,INT 14/AX=6F00h,INT 10/AX=6F00h,INT 14/AX=6F00h SeeAlso: INT 33/AX=6F00h,INT 6F/AH=00h"HP Vectra" --------b-176F02----------------------------- INT 17 - HP Vectra - EXTENDED BIOS - "F17_PUT_BUFFER" - PRINT BUFFER AX = 6F02h CX = size of buffer in bytes DX = port number (0-3) ES:DI -> buffer containing characters to be printed Return: AH = printer status (see #0489) CX = number of bytes successfully printed ---on error (AH bit 0 set)--- ES:DI -> next byte to be sent ---if successful--- ES:DI unchanged SeeAlso: AH=00h,AX=6F00h,INT 14/AX=6F02h --------N-1781------------------------------- INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER AH = 81h AL = 00h (NTNX compatibility mode) CL = number of jobs to cancel Return: AL = status (see #0495) Note: this function cancels the last CL printouts for the current task SeeAlso: AH=82h (Table 0495) Values for Alloy status: 00h success 01h-7Fh warning 80h general failure 81h host overloaded (NTNX only) 82h module busy (NTNX only) 83h host busy (NTNX only) 84h re-entry flag set 85h invalid request 86h invalid printer 87h invalid process ID 89h access denied 8Ah option not available for given port type 8Bh option not available for given task type 91h printer busy C2h file not found C3h path not found C4h file access failure --------N-1782------------------------------- INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER AH = 82h AL = 00h (NTNX compatibility mode) Return: AL = status (see #0495) SeeAlso: AH=81h --------N-1783------------------------------- INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES AH = 83h AL = mode 00h NTNX compatibility CL = number of copies (max 99, default 1) 02h MW386 v2+ BX = logical device number 00h-03h = LPT1-LPT4 04h-07h = COM1-COM4 CX = number of copies Return: AL = status (see #0495) Note: in NTNX compatibility mode, this function only affects LPT1 --------N-1784------------------------------- INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK AH = 84h AL = mode 00h NTNX compatibility 02h MW386 v2+ BX = logical device number 00h-03h = LPT1-LPT4 04h-07h = COM1-COM4 Note: closes spool file and tells spooler to queue the print job (LPT1 only under MW386 in NTNX compatibility mode) --------J-1784------------------------------- INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION AH = 84h AL = character DX = printer number Return: AH = printer status (see #0489) SeeAlso: AH=00h,AH=85h --------J-1785------------------------------- INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION AH = 85h AL = new state (00h enabled, 01h disabled) SeeAlso: AH=84h"AX" --------N-1787------------------------------- INT 17 - Alloy NTNX - SET INDOS POINTER AH = 87h AL = 00h CX:BX -> buffer for user-written printer drivers Return: BX,CX destroyed Note: must be executed before the printer is enabled SeeAlso: AH=8Ah --------N-1788------------------------------- INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER AH = 88h AL = mode 00h NTNX compatibility DX = NTNX printer number (see #0496) 01h MW386 DX = MW386 printer number Return: AH = status (see #0495) Note: removes specified printer from the spooler's list of printers SeeAlso: AH=89h,AH=8Bh (Table 0496) Values for Alloy NTNX printer number: 00h host LPT1 01h host LPT2 02h host LPT3 03h host LPT4 04h host COM1 05h host COM2 06h user's logical COM2 07h user's terminal AUX port 08h user's logical COM1 (MW386 only) --------N-1789------------------------------- INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER AH = 89h AL = mode 00h NTNX compatibility DX = NTNX printer number (see #0496) 01h MW386 DX = MW386 printer number Return: AL = status (see #0495) Note: the specified printer is added to the spooler's list of available printers SeeAlso: AH=88h,AH=8Bh --------N-178A------------------------------- INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER AH = 8Ah ??? SeeAlso: AH=92h --------N-178B------------------------------- INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME AH = 8Bh DS:DX -> ASCIZ printer name Return: AL = status (see also AH=81h) 00h successful DX = physical device number SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy" --------N-178C------------------------------- INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER AH = 8Ch DX = physical device number ES:DI -> 17-byte buffer for ASCIZ device name Return: AL = status (see also AH=81h) 00h successful ES:DI buffer filled SeeAlso: AH=88h,AH=8Bh --------N-178D------------------------------- INT 17 - Alloy NTNX,MW386 - RESET SPOOLER AH = 8Dh AL = 00h Return: AL = status (see #0495) Notes: clears all buffers and resets spooler to boot-up values MW386 supports this function for compatibility only; it is a NOP --------N-178E------------------------------- INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT AH = 8Eh AL = 00h Return: CX:BX -> INT 28 entry point SeeAlso: AH=8Fh --------N-178F------------------------------- INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT AH = 8Fh AL = 00h Return: CX:BX -> DOS intercept routine SeeAlso: AH=8Eh --------N-1790------------------------------- INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME AH = 90h AL = mode 00h NTNX compatibility DL = printer code (FFh=current) (NTNX, MW386 v1.x only) DH = number of copies (FFh=current) (NTNX, MW386 v1.x only) 02h MW386 v2+ BX = logical device number 00h-03h = LPT1-LPT4 04h-07h = COM1-COM4 CX:SI -> ASCIZ pathname Return: AL = status (see #0495) Note: in mode 00h, the file is always sent to logical LPT1 SeeAlso: AH=A0h --------N-1791------------------------------- INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER AH = 91h AL = mode 00h NTNX compatibility Return: CX = user number (00h = host) DX = currently selected printer number (00h-08h) 01h MW386 Return: CX = user number DX = physical dev number of currently selected printer 02h MW386 v2+ BX = logical device number 00h-03h = LPT1-LPT4 04h-07h = COM1-COM4 Return: CX = user number DX = physical device number Return: AL = status (see #0495) SeeAlso: AH=8Ch --------N-1792------------------------------- INT 17 - Alloy NTNX - CHECK PRINTER DRIVER AH = 92h AL = 00h CL = 00h Return: CL = driver state 01h initialized 80h not initialized AX = status (see #0495) SeeAlso: AH=8Ah --------N-1794------------------------------- INT 17 - Alloy NTNX, MW386 - SELECT PRINTER AH = 94h AL = mode 00h NTNX compatibility DX = NTNX printer number (see #0496) 01h MW386 DX = MW386 printer number 02h MW386 v2+ BX = logical printer number DX = MW386 printer number Return: AL = status (see #0495) Note: modes 00h and 01h affect only logical LPT1 SeeAlso: AH=8Bh,AH=95h --------N-1795------------------------------- INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER AH = 95h AL = mode 00h NTNX compatibility Return: DX = NTNX printer number (see #0496) (FFFFh if current printer not compatible with NTNX) 01h MW386 Return: DX = MW386 printer number 02h MW386 v2+ BX = logical device number 00h-03h = LPT1-LPT4 04h-07h = COM1-COM4 Return: DX = MW386 printer number (FFFFh = none) Return: AL = status (see #0495) Note: modes 00h and 01h return the printer number of logical LPT1 only SeeAlso: AH=94h --------N-1796------------------------------- INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS AH = 96h AL = 00h Note: documentation states that this is a NOP, doing only XOR AX,AX before returning SeeAlso: INT 14/AH=24h --------N-1797------------------------------- INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK AH = 97h AL = mode 00h NTNX compatibility 02h MW386 v2+ BX = logical device number 00h-03h = LPT1-LPT4 04h-07h = COM1-COM4 CH,CL,DH = three character break sequence DL = subfunction 00h set break string else reset break Return: AL = status (see #0495) Notes: mode 00h affects only logical LPT1 when the break string is encountered, the spool file will be closed and queued for printing automatically the break string is not permanently saved, and will be reset each time MW386 or the user is rebooted SeeAlso: AH=9Bh --------N-1798------------------------------- INT 17 - Alloy NTNX,MW386 - RESTART PRINTER AH = 98h AL = 00h DL = printer number (FFh=current) Return: AL = status 00h successful 01h incorrect printer 02h task not found Note: MW386 supports this function for compatibility only; it is a NOP --------N-1799------------------------------- INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE AH = 99h AL = mode 00h NTNX compatibility DL = NTNX printer number (see #0496) (FFh = task's current logical LPT1) DH = mode (see #0497) 01h MW386 DX = MW386 printer number CL = mode (as for DH above) Return: AL = status (see #0495) DH = mode (bits 1 and 2 set as above) DL = printer owner's user number if not spooled Bitfields for Alloy printer mode: 0 get mode if 1, set mode if 0 (Table 0497) 1 private ("attached") 2 direct instead of spooled 3-7 reserved (0) --------N-179A------------------------------- INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION AH = 9Ah AL = mode 00h NTNX compatibility DX = NTNX printer number (see #0496) (FFFFh = current logical LPT1) 01h MW386 DX = MW386 printer number CL = tab length (00h = no expansion, 01h-63h = spaces per tab) Return: AL = status (see #0495) Note: beginning with MW386 v2.0, tab expansion is set on a per-printer basis rather than a per-user basis; NTNX and MW386 v1.x ignore DX SeeAlso: AH=A4h --------N-179B------------------------------- INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT AH = 9Bh AL = mode 00h NTNX compatibility CX = timeout value in clock ticks (1/18 sec) (00h = never) 01h MW386 CX = timeout value in seconds (00h = never) 02h MW386 v2+ BX = logical device number 00h-03h = LPT1-LPT4 04h-07h = COM1-COM4 CX = timeout value in seconds (00h = never) Return: AL = status (see #0495) Notes: modes 00h and 01h affect only the current logical LPT1 if no data is sent to a printer for the specified amount of time, the spool file will be closed and queued for printing automatically SeeAlso: AH=97h --------N-17A0------------------------------- INT 17 - Alloy MW386 - SPOOL COPY OF FILE AH = A0h AL = mode 00h NTNX compatibility DX = ??? (NTNX, MW386 v1.x only) 02h MW386 v2+ BX = logical device number 00h-03h = LPT1-LPT4 04h-07h = COM1-COM4 CX:SI -> ASCIZ pathname Return: AL = status (see #0495) Notes: makes a copy of the specified file in the spooler's directory, allowing the original file to be modified or deleted while the copy is printed in mode 00h, the file is printed on logical LPT1 SeeAlso: AH=90h --------N-17A4------------------------------- INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED AH = A4h AL = new state 00h form feed after end of print job disabled 01h form feed enabled Return: AL = status (see #0495) Note: only affects the current logical LPT1 SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)" --------N-17A6------------------------------- INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE AH = A6h AL = new state 00h banner page before print job disabled 01h banner page enabled Return: AL = status (see #0495) Note: only affects the current logical LPT1 SeeAlso: AH=A4h --------N-17A7------------------------------- INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS AH = A7h AL = spool flags (see #0498) BX = logical device number 00h-03h = LPT1-LPT4 04h-07h = COM1-COM4 Return: AL = status (see #0495) Note: the documentation does not state which register contains the result of a GET SeeAlso: AH=A4h,AH=A6h Bitfields for Alloy spool flags: Bit(s) Description (Table 0498) 0 banner page enabled (see AH=A6h) 1 form feed enabled (see AH=A4h) 2-6 reserved (0) 7 set flags if 1, get flags if 0 --------N-17A8------------------------------- INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME AH = A8h CX:SI -> ASCIZ filename without extension (max 8 chars) Return: AL = status (see #0495) Note: allows application to specify banner page filename for spool files collected from the application's printer output SeeAlso: AH=A9h --------N-17A9------------------------------- INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE AH = A9h AL = new spool drive (2=C:,3=D:,etc) Return: AL = status (see #0495) Note: does not remove previous spooling directory since jobs may be pending SeeAlso: AH=A8h --------N-17AA------------------------------- INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS AH = AAh AL = mode 00h NTNX DX = NTNX printer number (see #0496) 01h MW386 DX = MW386 printer number Return: AH = instantaneous printer status 00h printer ready 01h not ready 12h off line 13h out of paper 14h general device failure 15h device timeout 16h bad device number --------N-17AF------------------------------- INT 17 - Alloy MW386 - CHECK SPOOLER AH = AFh Return: AX = 55AAh if spooler available --------c-17C0------------------------------- INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS AH = C0h DX = printer port (0-3) Return: ES:BX -> control block (see #0499) SeeAlso: AH=C1h Format of PCSpool control block: Offset Size Description (Table 0499) 00h WORD printer number 02h WORD address of printer status port 04h WORD number of first record in queue 06h WORD number of last record in queue 08h DWORD characters already printed 0Ch DWORD number of characters remaining 10h DWORD pointer to dequeue buffer 14h DWORD previous count of characters printed 18h DWORD number of clock ticks taken to print them 1Ch WORD offset of next character to output 1Eh WORD offset of next character to print 20h WORD pointer to spooling queue record 22h BYTE current spooling status 23h BYTE current printer status: 00h OK 01h not ready 02h paused with message 03h paused 04h initializing FEh non-existent port FFh not spooled 24h BYTE current control record type 25h WORD observed printer speed 27h WORD characters to print per service 29h BYTE 01h if disk write needed 2Ah BYTE 01h if queued data should be flushed 2Bh BYTE 01h to update cps status --------c-17C1-------------------------------- INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD AH = C1h DX = printer port (0-3) DS:SI -> ASCIZ string to save for display Note: flushes pending writes SeeAlso: AH=C0h,AH=C2h --------c-17C2------------------------------- INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES AH = C2h DX = printer port (0-3) SeeAlso: AH=C3h --------c-17C3------------------------------- INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT) AH = C3h DX = printer port (0-3) SeeAlso: AH=C2h,AH=C7h --------c-17C4------------------------------- INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE AH = C4h Return: DI = B0BFh SI = segment --------c-17C5------------------------------- INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE AH = C5h DX = printer port (0-3) Note: cancels up to the pause record --------c-17C6------------------------------- INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS AH = C6h DX = printer port (0-3) Return: AX = queue status 0000h printer not active or at pause 0001h printer busy --------c-17C7------------------------------- INT 17 - PC Magazine PCSpool - CLOSE QUEUE AH = C7h DX = printer port (0-3) SeeAlso: AH=C3h --------P-17CD00----------------------------- INT 17 - INSET - EXECUTE COMMAND STRING AX = CD00h DS:DX -> ASCIZ command string (max 80 bytes) Return: CX = 07C2h (1986d) Note: user interface menus pop up after last command, unless that command exits INSET --------P-17CD01----------------------------- INT 17 - INSET - GET IMAGE SIZE AX = CD01h DS:DX -> ASCIZ name of image file Return: AX = height in 1/720th inch BX = width in 1/720th inch CX = 07C2h (1986d) --------P-17CD02----------------------------- INT 17 - INSET - INITIALIZE AX = CD02h Return: CX = 07C2h (1986d) Note: all open files are closed and the printer is reset SeeAlso: AX=CD04h --------P-17CD03----------------------------- INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE AX = CD03h Return: CX = 07C2h (1986d) --------P-17CD04----------------------------- INT 17 - INSET - INITIALIZE LINKED MODE AX = CD04h ES:SI -> FAR routine for linked mode (see #0500) Return: CX = 07C2h SeeAlso: AX=CD02h,AX=CD08h (Table 0500) Values INSET linked-mode routine is called with: AL = function 00h send character to printer BL = character to send 01h send string to printer CX = number of bytes to send DS:DX -> buffer containing data 02h move print head to horizontal starting position of image Return: AX = status 0000h success 0001h failure --------P-17CD05----------------------------- INT 17 - INSET - START MERGING IMAGE INTO TEXT AX = CD05h DS:DX -> ASCIZ name of PIX file CX = left margin of text in 1/720th inch Return: AH = printer type 00h page-oriented (multiple images may be placed side-by-side) 01h line-oriented (use AX=CD06h for vertical paper movement) CX = 07C2h (1986d) SeeAlso: AX=CD07h --------P-17CD06----------------------------- INT 17 - INSET - GRAPHICS LINE FEED AX = CD06h Return: AH = completion status 00h image complete 01h image incomplete CX = 07C2h (1986d) SeeAlso: AX=CD09h --------P-17CD07----------------------------- INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER AX = CD07h Return: CX = 07C2h SeeAlso: AX=CD05h --------P-17CD08----------------------------- INT 17 - INSET - CANCEL LINK MODE AX = CD08h Return: CX = 07C2h SeeAlso: AX=CD04h --------P-17CD09----------------------------- INT 17 - INSET - ALTER TEXT LINE SPACING AX = CD09h CX = line spacing in 1/720th inch Return: CX = 07C2h Note: not yet implemented, line spacing is currently fixed at 1/6 inch SeeAlso: AX=CD06h --------P-17CD0A----------------------------- INT 17 - INSET - GET SETUP AX = CD0Ah DS:DX -> buffer for IN.SET data Return: CX = 07C2h --------P-17CD0B----------------------------- INT 17 - INSET - START GETTING SCALED IMAGE AX = CD0Bh DS:SI -> ASCIZ pathname of .PIX file BX = number of bitplanes CX = number of rows in output bitmap DX = number of columns in output bitmap Return: AX = status 0000h OK FFFFh error Note: image is returned in strips by repeated calls to AX=CD0Ch --------P-17CD0C----------------------------- INT 17 - INSET - GET NEXT IMAGE STRIP AX = CD0Ch Return: AX = status 0000h OK but not complete 0001h OK and image complete FFFFh error DS:SI -> buffer (max 4K) for bit map strip CX = start row DX = number of rows BX = offset in bytes between bit planes Note: buffer may be overwritten by subsequent calls SeeAlso: AX=CD0Bh --------P-17E0------------------------------- INT 17 - EPP BIOS - INSTALLATION CHECK AH = E0h Return: ??? (AH <> E0h if installed ???) SeeAlso: AX=0200h"EPP",AH=E1h,AH=E2h --------P-17E1------------------------------- INT 17 - EPP BIOS - DISABLE EPP AH = E1h ??? Return: ??? SeeAlso: AX=0200h"EPP",AH=E0h,AH=E2h --------P-17E2------------------------------- INT 17 - EPP BIOS - ENABLE EPP AH = E2h ??? Return: ??? SeeAlso: AX=0200h"EPP",AH=E0h,AH=E1h --------P-17F0------------------------------- INT 17 - NorthNet Jetstream API - INSTALLATION CHECK AH = F0h DX = printer port (0-3) Return: AX = 0001h Jetstream present else non-Jetstream port Note: NorthNet Jetstream is a high-performance DMA-driven parallel card able to drive printers at up to 80000 characters per second --------P-17F1------------------------------- INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER AH = F1h CX = data buffer length DX = printer port (0-3) DS:SI -> data buffer Return: AX = status 0000h printer not ready (see also AH=02h) other printing started SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h --------P-17F2------------------------------- INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS AH = F2h DX = printer port (0-3) Return: AX = status 0000h prior print request finished other number of characters left to print SeeAlso: AH=02h,AH=F1h,AH=F3h --------P-17F3------------------------------- INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION AH = F3h DX = printer port (0-3) Return: AX = number of unprinted characters due to abort SeeAlso: AH=F1h,AH=F4h --------P-17F4------------------------------- INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS AH = F4h DX = printer port (0-3) DS:DS -> FAR post address (called with interrupts on) SeeAlso: AH=F1h,AH=F3h --------P-17F5------------------------------- INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY AH = F5h CX = data buffer length DX = printer port (0-3) DS:SI -> data buffer (32-bit physical address) Return: AX = status 0000h printer not ready (see also AH=02h) other printing started SeeAlso: AH=F1h --------c-17FF--BX0000----------------------- INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE AH = FFh BX = 0000h CX = 0000h DX = printer port number Return: AH = printer status (see #0489 at AH=00h) Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible operating system by The Software Link, Inc. Desc: close the spool file immediately instead of waiting for the close time to elapse SeeAlso: AH=01h,AH=03h"PC-MOS" --------B-18--------------------------------- INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC) Desc: called when there is no bootable disk available to the system Notes: only PCs produced by IBM contain BASIC in ROM, so the action is unpredictable on compatibles; this interrupt often reboots the system, and often has no effect at all network cards with their own BIOS can hook this interrupt to allow a diskless boot off the network (even when a hard disk is present if none of the partitions is marked as the boot partition) SeeAlso: INT 2F/AX=4A06h,INT 86"NetBIOS" --------J-1800------------------------------- INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE AH = 00h Return: AX = keystroke SeeAlso: AH=01h,AH=02h,INT 16/AH=00h --------J-1801------------------------------- INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE AH = 01h Return: BH = status 00h no keystrokes available 01h keystroke available AX = keystroke SeeAlso: AH=00h,AH=02h,INT 16/AH=01h --------J-1802------------------------------- INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS AH = 02h Return: AL = shift flags SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h --------J-1803------------------------------- INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE AH = 03h ??? Return: ??? SeeAlso: AH=00h,AH=04h --------J-1804------------------------------- INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED AH = 04h ??? Return: ??? Note: details are not available at this time SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h --------J-18--------------------------------- INT 18 - NEC PC-9800 series - VIDEO AH = function 0Ah set video mode 0Bh get video mode 0Ch start text screen display 0Dh end text screen display 0Eh set single display area 0Fh set multiple display area 10h set cursor shape 11h display cursor 12h terminate cursor 13h set cursor position 14h read font patter 16h initialize text video RAM 1Ah define user character ??? Return: ??? Notes: details are not available at this time text video RAM is located at segments A000h (characters) and A200h (attributes) ----------185350BX4849----------------------- INT 18 - SPHINX C-- - WB.COM - API AX = 5350h ('SP') BX = 4849h ('HI') CX = 4E58h ('NX') DH = function 01h set ??? DL = ??? 02h get ??? Return: DL = ??? 03h get ??? Return: ES:DI -> ??? data buffer 06h ??? Return: AX = 7370h ('sp') if installed BX = 6869h ('hi') if installed CX = 6E78h ('nx') if installed Program: SPHINX C-- is a shareware compiler by Peter Cellik for a language which is a cross between C and assembler; WB.COM is the driver which launches the WorkBench --------s-186900----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET STATUS AX = 6900h Return: AX = amount of DRAM on card or 0000h if GUS not available Program: YEA_GUS is a driver for the Graphics Ultra Sound which hooks INT 18h and then shells out the the program requiring its services SeeAlso: AX=6901h,AX=690Ah,AX=690Bh --------s-186901----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESET AX = 6901h BX = number of active voices (14-32) Return: nothing SeeAlso: AX=6900h --------s-186902----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOLUME FOR SPECIFIC VOICE AX = 6902h BX = voice number (00h-1Fh) CX = linear volume (0000h-01FFh) Return: nothing SeeAlso: AX=6900h,AX=6903h,AX=6904h,AX=6909h,AX=690Ah --------s-186903----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET FREQUENCY FOR VOICE AX = 6903h BX = voice number (00h-1Fh) CX = frequency in Hz (0-44100) Return: nothing SeeAlso: AX=6902h,AX=6904h --------s-186904----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET LEFT/RIGHT BALANCE AX = 6904h BX = voice number (00h-1Fh) CX = balance (0 = left, 7 = even, 15 = right) Return: nothing SeeAlso: AX=6902h,AX=6903h --------s-186905----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - PLAY MUSIC AX = 6905h BL = voice number BH = sample type (0 = 8-bit, 1 = 16-bit) CL = looping type (0 = none, 1 = forward, 2 = back and forth) CH:DI = 20-bit starting address for voice data DL:SI = 20-bit address for loop start DH:BP = 20-bit address for loop end SeeAlso: AX=6903h,AX=6906h,AX=690Bh --------s-186906----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - LOAD SOUND DATA AX = 6906h BL = data format (1 = twos-complement, 0 = not) BH = sample type (0 = 8-bit, 1 = 16-bit) CX = number of bytes to send ES:SI -> buffer containing data DL:DI = 20-bit address of GUS DRAM at which to load sound data SeeAlso: AX=6900h,AX=6905h,AX=690Ch --------s-186907----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - STOP VOICE AX = 6907h BX = voice number (00h-1Fh) Return: nothing SeeAlso: AX=6908h,AX=690Dh --------s-186908----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOICE END AX = 6908h BX = voice number (00h-1Fh) CL:DX = 20-bit ending address Return: nothing SeeAlso: AX=690Bh --------s-186909----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RAMP VOLUME AX = 6909h BL = voice number (00h-1Fh) BH = looping type (0 = none, 1 = forward, 2 = back and forth) CX = starting volume DX = ending volume DI:SI = time Return: nothing SeeAlso: AX=6902h,AX=690Ah --------s-18690A----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET VOLUME AX = 690Ah BX = voice number (00h-1Fh) Return: AX = current non-linear volume for voice SeeAlso: AX=6902h,AX=6909h --------s-18690B----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET POSITION AX = 690Bh BX = voice number Return: BX:AX = 20-bit address at which voice is playing SeeAlso: AX=6900h,AX=6905h,AX=6908h --------s-18690C----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SAVE SOUND DATA AX = 690Ch BL = data format (1 = twos-complement, 0 = not) BH = sample type (0 = 8-bit, 1 = 16-bit) CX = number of bytes to get ES:SI -> buffer for retrieved data DL:DI = 20-bit address in GUS DRAM from which to read voice data Return: nothing SeeAlso: AX=6906h --------s-18690D----------------------------- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESTART VOICE AX = 690Dh BX = voice CX = sample type (0 = 8-bit, 1 = 16-bit) DX = looping type (0 = none, 1 = forward, 2 = back and forth) Return: CX = balance value SeeAlso: AX=6907h,AX=6908h --------s-188000----------------------------- INT 18 - Gravis Ultra Sound EURO_MOD.EXE - INITIALIZE AX = 8000h Program: EURO_MOD is a .MOD file player for the Gravis Ultra Sound which hooks INT 18h and then shells out to the program requiring its services SeeAlso: AX=8001h,AX=8004h --------s-188001----------------------------- INT 18 - Gravis Ultra Sound EURO_MOD.EXE - LOAD .MOD FILE AX = 8001h BX:CX -> ASCIZ filename SeeAlso: AX=8000h,AX=8002h --------s-188002----------------------------- INT 18 - Gravis Ultra Sound EURO_MOD.EXE - PLAY .MOD FILE AX = 8002h SeeAlso: AX=8002h,AX=8003h --------s-188003----------------------------- INT 18 - Gravis Ultra Sound EURO_MOD.EXE - STOP PLAYING AX = 8003h --------s-188004----------------------------- INT 18 - Gravis Ultra Sound EURO_MOD.EXE - SHUTDOWN AX = 8004h SeeAlso: AX=8000h,AX=8003h --------B-19--------------------------------- INT 19 - SYSTEM - BOOTSTRAP LOADER Desc: This interrupt reboots the system without clearing memory or restoring interrupt vectors. Because interrupt vectors are preserved, this interrupt usually causes a system hang if any TSRs have hooked vectors from 00h through 1Ch, particularly INT 08. Notes: Usually, the BIOS will try to read sector 1, head 0, track 0 from drive A: to 0000h:7C00h. If this fails, and a hard disk is installed, the BIOS will read sector 1, head 0, track 0 of the first hard disk. This sector should contain a master bootstrap loader and a partition table (see #0502). After loading the master boot sector at 0000h:7C00h, the master bootstrap loader is given control. It will scan the partition table for an active partition, and will then load the operating system's bootstrap loader (contained in the first sector of the active partition) and give it control. true IBM PCs and most clones issue an INT 18 if neither floppy nor hard disk have a valid boot sector to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in 0040h:0072h and jump to FFFFh:0000h. For a cold boot equivalent to a reset, store 0000h at 0040h:0072h before jumping. VDISK.SYS hooks this interrupt to allow applications to find out how much extended memory has been used by VDISKs (see #0501). DOS 3.3+ PRINT hooks INT 19 but does not set up a correct VDISK header block at the beginning of its INT 19 handler segment, thus causing some programs to overwrite extended memory which is already in use. the default handler is at F000h:E6F2h for 100% compatible BIOSes MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk contains extended partitions which point at each other in a loop, since it will never find the end of the linked list of extended partitions under Windows Real and Enhanced modes, calling INT 19 will hang the system in the same was as under bare DOS; under Windows Standard mode, INT 19 will successfully perform a cold reboot as it appears to have been redirected to a MOV AL,0FEh/OUT 64h,AL sequence SeeAlso: INT 14/AH=17h,INT 18,INT 5B"PC Cluster" Format of VDISK header block (at beginning of INT 19 handler's segment): Offset Size Description (Table 0501) 00h 18 BYTEs n/a (for VDISK.SYS, the device driver header) 12h 11 BYTEs signature string "VDISK Vn.m" for VDISK.SYS version n.m 1Dh 15 BYTEs n/a 2Ch 3 BYTEs linear address of first byte of available extended memory Format of hard disk master boot sector: Offset Size Description (Table 0502) 00h 446 BYTEs Master bootstrap loader code 1BEh 16 BYTEs partition record for partition 1 (see #0503) 1CEh 16 BYTEs partition record for partition 2 1DEh 16 BYTEs partition record for partition 3 1EEh 16 BYTEs partition record for partition 4 1FEh WORD signature, AA55h indicates valid boot block Format of partition record: Offset Size Description (Table 0503) 00h BYTE boot indicator (80h = active partition) 01h BYTE partition start head 02h BYTE partition start sector (bits 0-5) 03h BYTE partition start track (bits 8,9 in bits 6,7 of sector) 04h BYTE operating system indicator (see #0504) 05h BYTE partition end head 06h BYTE partition end sector (bits 0-5) 07h BYTE partition end track (bits 8,9 in bits 6,7 of sector) 08h DWORD sectors preceding partition 0Ch DWORD length of partition in sectors SeeAlso: #0502 (Table 0504) Values for operating system indicator: 00h empty 01h DOS 12-bit FAT 02h XENIX root file system 03h XENIX /usr file system (obsolete) 04h DOS 16-bit FAT (up to 32M) 05h DOS 3.3+ extended partition 06h DOS 3.31+ Large File System (16-bit FAT, over 32M) 07h QNX 07h OS/2 HPFS 07h Windows NT NTFS 07h Advanced Unix 08h AIX bootable partition, SplitDrive 09h AIX data partition 09h Coherent filesystem 0Ah OS/2 Boot Manager 0Ah OPUS 0Ah Coherent swap partition 10h OPUS 11h OS/2 Boot Manager hidden 12-bit FAT partition 12h Compaq Diagnostics partition 14h (resulted from using Novell DOS 7.0 FDISK to delete Linux Native part) 14h OS/2 Boot Manager hidden sub-32M 16-bit FAT partition 16h OS/2 Boot Manager hidden over-32M 16-bit FAT partition 17h OS/2 Boot Manager hidden HPFS partition 18h AST special Windows swap file 24h NEC MS-DOS 3.x 3Ch PowerQuest PartitionMagic recovery partition 40h VENIX 80286 42h SFS (Secure File System) by Peter Gutmann 50h Disk Manager, read-only partition 51h Disk Manager, read/write partition 51h Novell??? 52h CP/M 52h Microport System V/386 56h GoldenBow VFeature 61h SpeedStor 63h Unix SysV/386, 386/ix 63h Mach, MtXinu BSD 4.3 on Mach 63h GNU HURD 64h Novell NetWare 65h Novell NetWare (3.11) 70h DiskSecure Multi-Boot 75h PC/IX 80h Minix v1.1 - 1.4a 81h Minix v1.4b+ 81h Linux 81h Mitac Advanced Disk Manager 82h Linux Swap partition 83h Linux native file system (ext2fs/xiafs) 84h OS/2-renumbered type 04h partition (related to hiding DOS C: drive) 93h Amoeba file system 94h Amoeba bad block table A5h FreeBSD B7h BSDI file system (secondarily swap) B8h BSDI swap partition (secondarily file system) C1h DR-DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition C4h DR-DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition C6h DR-DOS 6.0 LOGIN.EXE-secured Huge partition C7h Cyrnix Boot DBh CP/M, Concurrent CP/M, Concurrent DOS DBh CTOS (Convergent Technologies OS) E1h SpeedStor 12-bit FAT extended partition E4h SpeedStor 16-bit FAT extended partition F2h DOS 3.3+ secondary F4h SpeedStor FEh LANstep FFh Xenix bad block table SeeAlso: #0503 --------!---Section--------------------------