home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / dos / tools / inter47 / interrup.c < prev    next >
Text File  |  1995-08-13  |  359KB  |  9,927 lines

  1. Interrupt List, part 3 of 13
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown
  3. --------J-1550-------------------------------
  4. INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
  5.     AH = 50h
  6.     AL = which function address to retrieve
  7.         00h "read font" function
  8.         01h "write font" function
  9.     BL = 00h
  10.     BH = character size (00h single-byte, 01h double-byte)
  11.     DH = width of character cell
  12.     DL = height of character cell
  13.     BP = code page (see #0356)
  14. Return: CF clear if successful
  15.         AH = 00h
  16.         ES:BX -> requested function's address
  17.     CF set on error
  18.         AH = error code (see #0357)
  19. SeeAlso: AH=49h
  20.  
  21. (Table 0356)
  22. Values for DOS/V code page:
  23.  0    default
  24.  437    US English
  25.  932    Japanese
  26.  934    Korea
  27.  936    China
  28.  938    Taiwan
  29.  
  30. (Table 0357)
  31. Values for DOS/V error code:
  32.  01h    invalid font type in BH
  33.  02h    BL not zero
  34.  03h    invalid font size
  35.  04h    invalid code page
  36.  80h    unsupported function (PC)
  37.  86h    unsupported function (XT)
  38. --------T-1550-------------------------------
  39. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  40.     AH = 50h
  41.     BX = segment of page directory table
  42.     CX = page number of page table
  43. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  44. --------T-1551-------------------------------
  45. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  46.     AH = 51h
  47.     STACK:    DWORD    selector:offset of function
  48. Return: registers as returned by function
  49. Note:    executes function with privilege level 0 (highest privilege)
  50. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  51. --------B-155101-----------------------------
  52. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  53.     AX = 5101h
  54. Return: CF set if successful
  55.         AH = 00h
  56.         AL = current configuration number
  57.         00h system unit only
  58.         FFh configuration not recognized
  59.         BX = status flag
  60.         bits 0-14: reserved
  61.         bit 15: additional data is available (location TBD)
  62.     CF clear on error
  63.         AH = status
  64.         01h expansion unit is not present
  65.         86h function not supported
  66. Note:    CF convention is the reverse of the standard convention for this
  67.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  68. --------T-1552-------------------------------
  69. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  70.     AH = 52h
  71. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  72. --------d-1552-------------------------------
  73. INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
  74.     AH = 52h
  75.     DL = drive number
  76. Return: CF clear if OK to eject media
  77.         AH = 00h
  78.     CF set if ejection disallowed
  79.         AH = error code (B1h,B3h) (see #0140)
  80. Note:    called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection
  81.       request is made
  82. SeeAlso: INT 13/AH=46h"INT 13 Extensions"
  83. --------p-155300-----------------------------
  84. INT 15 - Advanced Power Management Specification - INSTALLATION CHECK
  85.     AX = 5300h
  86.     BX = device ID of system BIOS (0000h)
  87. Return: CF clear if successful
  88.         AH = major version (BCD)
  89.         AL = minor version (BCD)
  90.         BX = 504Dh ("PM")
  91.         CX = flags (see #0358)
  92.     CF set on error
  93.         AH = error code (06h,86h) (see #0359)
  94. BUG:    early versions of the Award Modular BIOS with built-in APM support
  95.       reportedly do not set BX on return
  96.  
  97. Bitfields for APM flags:
  98. Bit(s)    Description    (Table 0358)
  99.  0    16-bit protected mode interface supported
  100.  1    32-bit protected mode interface supported
  101.  2    CPU idle call reduces processor speed
  102.  3    BIOS power management disabled
  103.  4    BIOS power management disengaged (APM v1.1)
  104.  5-7    reserved
  105.  
  106. (Table 0359)
  107. Values for APM error code:
  108.  01h    power management functionality disabled
  109.  02h    interface connection already in effect
  110.  03h    interface not connected
  111.  04h    real-mode interface not connected
  112.  05h    16-bit protected-mode interface already connected
  113.  06h    16-bit protected-mode interface not supported
  114.  07h    32-bit protected-mode interface already connected
  115.  08h    32-bit protected-mode interface not supported
  116.  09h    unrecognized device ID
  117.  0Ah    invalid parameter value in CX
  118.  0Bh-1Fh reserved for other interface and general errors
  119.  20h-3Fh reserved for CPU errors
  120.  40h-5Fh reserved for device errors
  121.  60h    can't enter requested state
  122.  61h-7Fh reserved for other system errors
  123.  80h    no power management events pending
  124.  81h-85h reserved for other power management event errors
  125.  86h    APM not present
  126.  87h-9Fh reserved for other power management event errors
  127. --------p-155301-----------------------------
  128. INT 15 - Advanced Power Management Specification - CONNECT REAL-MODE INTERFACE
  129.     AX = 5301h
  130.     BX = device ID of system BIOS (0000h)
  131. Return: CF clear if successful
  132.     CF set on error
  133.         AH = error code (02h,05h,07h,09h) (see #0359)
  134. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  135. --------p-155302-----------------------------
  136. INT 15 R - Advanced Power Management Spec - CONNECT 16-BIT PROTMODE INTERFACE
  137.     AX = 5302h
  138.     BX = device ID of system BIOS (0000h)
  139. Return: CF clear if successful
  140.         AX = real-mode segment base address of protected-mode 16-bit code
  141.         segment
  142.         BX = offset of entry point
  143.         CX = real-mode segment base address of protected-mode 16-bit data
  144.         segment
  145.         ---APM v1.1---
  146.         SI = APM BIOS code segment length
  147.         DI = APM BIOS data segment length
  148.     CF set on error
  149.         AH = error code (02h,05h,06h,07h,09h) (see #0359)
  150. Notes:    the caller must initialize two consecutive descriptors with the
  151.       returned segment base addresses; these descriptors must be valid
  152.       whenever the protected-mode interface is called, and will have
  153.       their limits arbitrarily set to 64K.
  154.     the protected mode interface is invoked by making a far call with the
  155.       same register values as for INT 15; it must be invoked while CPL=0,
  156.       the code segment descriptor must have a DPL of 0, the stack must be
  157.       in a 16-bit segment and have enough room for BIOS use and possible
  158.       interrupts, and the current I/O permission bit map must allow access
  159.       to the I/O ports used for power management.
  160.     functions 00h-03h are not available from protected mode
  161. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  162. --------p-155303-----------------------------
  163. INT 15 - Advanced Power Management Spec - CONNECT 32-BIT PROTMODE INTERFACE
  164.     AX = 5303h
  165.     BX = device ID of system BIOS (0000h)
  166. Return: CF clear if successful
  167.         AX = real-mode segment base address of protected-mode 32-bit code
  168.         segment
  169.         EBX = offset of entry point
  170.         CX = real-mode segment base address of protected-mode 16-bit code
  171.         segment
  172.         DX = real-mode segment base address of protected-mode 16-bit data
  173.         segment
  174.         ---APM v1.1---
  175.         SI = APM BIOS code segment length
  176.         DI = APM BIOS data segment length
  177.     CF set on error
  178.         AH = error code (02h,05h,07h,08h,09h) (see #0359)
  179. Notes:    the caller must initialize three consecutive descriptors with the
  180.       returned segment base addresses for 32-bit code, 16-bit code, and
  181.       16-bit data, respectively; these descriptors must be valid whenever
  182.       the protected-mode interface is called, and will have their limits
  183.       arbitrarily set to 64K.
  184.     the protected mode interface is invoked by making a far call to the
  185.       32-bit code segment with the same register values as for INT 15; it
  186.       must be invoked while CPL=0, the code segment descriptor must have a
  187.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  188.       for BIOS use and possible interrupts, and the current I/O permission
  189.       bit map must allow access to the I/O ports used for power management.
  190.     functions 00h-03h are not available from protected mode
  191. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  192. --------p-155304-----------------------------
  193. INT 15 - Advanced Power Management Specification - DISCONNECT INTERFACE
  194.     AX = 5304h
  195.     BX = device ID of system BIOS (0000h)
  196. Return: CF clear if successful
  197.     CF set on error
  198.         AH = error code (03h,09h) (see #0359)
  199. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  200. --------p-155305-----------------------------
  201. INT 15 - Advanced Power Management Specification - CPU IDLE
  202.     AX = 5305h
  203. Return: CF clear if successful (after system leaves idle state)
  204.     CF set on error
  205.         AH = error code (03h,0Bh) (see #0359)
  206. Notes:    call when the system is idle and should be suspended until the next
  207.       system event or interrupt
  208.     should not be called from within a hardware interrupt handler to avoid
  209.       reentrance problems
  210.     if an interrupt causes the system to resume normal processing, the
  211.       interrupt may or may not have been handled when the BIOS returns
  212.       from this call; thus, the caller should allow interrupts on return
  213.     interrupt handlers may not retain control if the BIOS allows
  214.       interrupts while in idle mode even if they are able to determine
  215.       that they were called from idle mode
  216.     the caller should issue this call continuously in a loop until it needs
  217.       to perform some processing of its own
  218. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  219. --------p-155306-----------------------------
  220. INT 15 - Advanced Power Management Specification - CPU BUSY
  221.     AX = 5306h
  222. Return: CF clear if successful
  223.     CF set on error
  224.         AH = error code (03h,0Bh) (see #0359)
  225. Notes:    called to ensure that the system runs at full speed even on systems
  226.       where the BIOS is unable to recognize increased activity (especially
  227.       if interrupts are hooked by other programs and not chained to the
  228.       BIOS)
  229.     this call may be made even when the system is already running at full
  230.       speed, but it will create unnecessary overhead
  231.     should not be called from within a hardware interrupt handler to avoid
  232.       reentrance problems
  233. SeeAlso: AX=5305h
  234. --------p-155307-----------------------------
  235. INT 15 - Advanced Power Management Specification - SET POWER STATE
  236.     AX = 5307h
  237.     BX = device ID (see #0360)
  238.     CX = system state ID (see #0361)
  239. Return: CF clear if successful
  240.     CF set on error
  241.         AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0359)
  242. Note:    should not be called from within a hardware interrupt handler to avoid
  243.       reentrance problems
  244. SeeAlso: AX=530Ch
  245.  
  246. (Table 0360)
  247. Values for APM device IDs:
  248.  0000h    system BIOS
  249.  0001h    all devices for which the system BIOS manages power
  250.  01xxh    display (01FFh for all attached display devices)
  251.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  252.  03xxh    parallel ports (03FFh for all attached parallel ports)
  253.  04xxh    serial ports (04FFh for all attached serial ports)
  254. ---APM v1.1---
  255.  05xxh    network adapters (05FFh for all attached network adapters)
  256.  06xxh    PCMCIA sockets (06FFh for all)
  257.  0700h-DFFFh reserved
  258.  Exxxh    OEM-defined power device IDs
  259.  F000h-FFFFh reserved
  260.  
  261. (Table 0361)
  262. Values for system state ID:
  263.  0000h    ready (not supported for device ID 0001h)
  264.  0001h    stand-by
  265.  0002h    suspend
  266.  0003h    off (not supported for device ID 0001h)
  267. ---APM v1.1---
  268.  0004h    last request processing notification (only for device ID 0001h)
  269.  0005h    last request rejected (only for device ID 0001h)
  270.  0006h-001Fh reserved system states
  271.  0020h-003Fh OEM-defined system states
  272.  0040h-007Fh OEM-defined device states
  273.  0080h-FFFFh reserved device states
  274. --------p-155307CX0001-----------------------
  275. INT 15 - Advanced Power Management Specification - SYSTEM STAND-BY
  276.     AX = 5307h
  277.     CX = 0001h
  278.     BX = 0001h (device ID for all power-managed devices)
  279. Return: CF clear
  280. Notes:    puts the entire system into stand-by mode; normally called in response
  281.       to a System Stand-by Request notification after any necessary
  282.       processing, but may also be invoked at the caller's discretion
  283.     should not be called from within a hardware interrupt handler to avoid
  284.       reentrance problems
  285.     the stand-by state is typically exited on an interrupt
  286. SeeAlso: AX=4280h,AX=5307h/CX=0002h/BX=0001h,AX=530Bh
  287. --------p-155307CX0002-----------------------
  288. INT 15 - Advanced Power Management Specification - SUSPEND SYSTEM
  289.     AX = 5307h
  290.     CX = 0002h
  291.     BX = 0001h (device ID for all power-managed devices)
  292. Return: after system is resumed
  293.     CF clear
  294. Notes:    puts the entire system into a low-power suspended state; normally
  295.       called in response to a Suspend System Request notification after
  296.       any necessary processing, but may also be invoked at the caller's
  297.       discretion
  298.     should not be called from within a hardware interrupt handler to avoid
  299.       reentrance problems
  300.     the caller may need to update its date and time values because the
  301.       system could have been suspended for a long period of time
  302. SeeAlso: AX=5307h/CX=0001h/BX=0001h,AX=530Bh
  303. --------p-155308-----------------------------
  304. INT 15 - Advanced Power Management Spec - ENABLE/DISABLE POWER MANAGEMENT
  305.     AX = 5308h
  306.     BX = device ID for all devices power-managed by APM
  307.         0001h (APM v1.1)
  308.         FFFFh (APM v1.0)
  309.     CX = new state
  310.         0000h disabled
  311.         0001h enabled
  312. Return: CF clear if successful
  313.     CF set on error
  314.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0359)
  315. Notes:    when power management is disabled, the system BIOS will not
  316.       automatically power down devices, enter stand-by or suspended mode,
  317.       or perform any power-saving actions in response to AX=5305h calls
  318.     should not be called from within a hardware interrupt handler to avoid
  319.       reentrance problems
  320. SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
  321. --------p-155309-----------------------------
  322. INT 15 - Advanced Power Management Specification - RESTORE POWER-ON DEFAULTS
  323.     AX = 5309h
  324.     BX = device ID for all devices power-managed by APM
  325.         0001h (APM v1.1)
  326.         FFFFh (APM v1.0)
  327. Return: CF clear if successful
  328.     CF set on error
  329.         AH = error code (09h) (see #0359)
  330. Note:    should not be called from within a hardware interrupt handler to avoid
  331.       reentrance problems
  332. SeeAlso: AX=5308h
  333. --------p-15530ABX0001-----------------------
  334. INT 15 - Advanced Power Management Specification - GET POWER STATUS
  335.     AX = 530Ah
  336.     BX = 0001h (device ID for all devices power-managed by APM)
  337. Return: CF clear if successful
  338.         BH = AC line status
  339.         00h off-line
  340.         01h on-line
  341.         02h on backup power (APM v1.1)
  342.         FFh unknown
  343.         other reserved
  344.         BL = battery status (see #0362)
  345.         CH = battery flag (APM v1.1) (see #0363)
  346.         CL = remaining battery life, percentage
  347.         00h-64h (0-100) percentage of full charge
  348.         FFh unknown
  349.         DX = remaining battery life, time (APM v1.1) (see #0364)
  350.     CF set on error
  351.         AH = error code (09h) (see #0359)
  352. Note:    should not be called from within a hardware interrupt handler to avoid
  353.       reentrance problems
  354.  
  355. (Table 0362)
  356. Values for APM v1.0+ battery status:
  357.  00h    high
  358.  01h    low
  359.  02h    critical
  360.  03h    charging
  361.  FFh    unknown
  362.  other    reserved
  363.  
  364. Bitfields for APM v1.1 battery flag:
  365. Bit(s)    Description    (Table 0363)
  366.  0    high
  367.  1    low
  368.  2    critical
  369.  3    charging
  370.  4-6    reserved
  371.  7    no system battery
  372. Note:    all bits set (FFh) if unknown
  373.  
  374. Bitfields for APM v1.1 remaining battery life:
  375. Bit(s)    Description    (Table 0364)
  376.  15    time units: 0=seconds, 1=minutes
  377.  14-0    battery life in minutes or seconds
  378. Note:    all bits set (FFFFh) if unknown
  379. --------p-15530B-----------------------------
  380. INT 15 - Advanced Power Management Specification - GET POWER MANAGEMENT EVENT
  381.     AX = 530Bh
  382. Return: CF clear if successful
  383.         BX = event code (see #0365)
  384.     CF set on error
  385.         AH = error code (03h,0Bh,80h) (see #0359)
  386. Notes:    although power management events are often asynchronous, notification
  387.       will not be made until polled via this call to permit software to
  388.       only receive event notification when it is prepared to process
  389.       power management events; since these events are not very time-
  390.       critical, it should be sufficient to poll once or twice per second
  391.     the critical resume notification is made after the system resumes
  392.       from an emergency suspension; normally, the system BIOS only notifies
  393.       its partner that it wishes to suspend and relies on the partner to
  394.       actually request the suspension, but no notification is made on an
  395.       emergency suspension
  396.     should not be called from within a hardware interrupt handler to avoid
  397.       reentrance problems
  398. SeeAlso: AX=5307h,AX=5307h/BX=0001h/CX=0001h,AX=5307h/BX=0001h/CX=0002h
  399.  
  400. (Table 0365)
  401. Values for APM event code:
  402.  0001h    system stand-by request
  403.  0002h    system suspend request
  404.  0003h    normal resume system notification
  405.  0004h    critical resume system notification
  406.  0005h    battery low notification
  407. ---APM v1.1---
  408.  0006h    power status change notification
  409.  0007h    update time notification
  410.  0008h    critical system suspend notification
  411.  0009h    user system standby request notification
  412.  000Ah    user system suspend request notification
  413.  000Bh    system standby resume notification
  414.  000Ch-00FFh reserved system events
  415.  01xxh    reserved device events
  416.  02xxh    OEM-defined APM events
  417.  0300h-FFFFh reserved
  418. --------p-15530C-----------------------------
  419. INT 15 - Advanced Power Management v1.1 - GET POWER STATE
  420.     AX = 530Ch
  421.     BX = device ID (see #0360)
  422. Return: CF clear if successful
  423.         BX = system state ID (see #0361)
  424.     CF set on error
  425.         AH = error code (01h,09h) (see #0359)
  426. SeeAlso: AX=5307h
  427. --------p-15530D-----------------------------
  428. INT 15 - Advanced Power Management v1.1 - EN/DISABLE DEVICE POWER MANAGEMENT
  429.     AX = 530Dh
  430.     BX = device ID (see #0360)
  431.     CX = function
  432.         0000h disable power management
  433.         0001h enable power management
  434. Return: CF clear if successful
  435.     CF set on error
  436.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0359)
  437. SeeAlso: AX=5308h,AX=530Fh
  438. --------p-15530E-----------------------------
  439. INT 15 - Advanced Power Management v1.1 - DRIVER VERSION
  440.     AX = 530Eh
  441.     BX = device ID of system BIOS (0000h)
  442.     CH = APM driver major version (BCD)
  443.     CL = APM driver minor version (BCD)
  444. Return: CF clear if successful
  445.         AH = APM connection major version (BCD)
  446.         AL = APM connection minor version (BCD)
  447.     CF set on error
  448.         AH = error code (03h,09h,0Bh) (see #0359)
  449. SeeAlso: AX=5300h
  450. --------p-15530F-----------------------------
  451. INT 15 - Advanced Power Management v1.1 - ENGAGE/DISENGAGE POWER MANAGEMENT
  452.     AX = 530Fh
  453.     BX = device ID (see #0360)
  454.     CX = function
  455.         0000h disengage power management
  456.         0001h engage power management
  457. Return: CF clear if successful
  458.     CF set on error
  459.         AH = error code (01h,09h) (see #0359)
  460. Note:    unlike AX=5308h, this call does not affect the functioning of the APM
  461.       BIOS
  462. SeeAlso: AX=5308h,AX=530Dh
  463. --------p-155380BH00-------------------------
  464. INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE
  465.     AX = 5380h
  466.     BH = 00h
  467. Return: CF clear if successful
  468.         AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH)
  469.         BL = sustdbymode (see #0366)
  470. SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh
  471.  
  472. Bitfields for APM SL sustdbymode:
  473. Bit(s)    Description    (Table 0366)
  474.  2    ???
  475.  1    Auto Power Off Timer Enable (APWR_TMR_EN)
  476.  0    ???
  477. --------p-155380BH01-------------------------
  478. INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE
  479.     AX = 5380h
  480.     BH = 01h
  481.     BL = sustdbymode (see #0366)
  482. Return: CF clear if successful
  483. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  484. --------p-155380BH02-------------------------
  485. INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER
  486.     AX = 5380h
  487.     BH = 02h
  488. Return: CF clear if successful
  489.     SI:DI = timer count in seconds (actually 1.024 seconds)
  490. Desc:    reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  491. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh
  492. --------p-155380BH03-------------------------
  493. INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER
  494.     AX = 5380h
  495.     BH = 03h
  496.     SI:DI = timer count in seconds (actually 1.024 seconds)
  497. Return: CF clear if successful
  498. Desc:    sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  499. Note:    the maximum timer count is 268431 seconds
  500. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh
  501. --------p-155380BH04-------------------------
  502. INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER
  503.     AX = 5380h
  504.     BH = 04h
  505. Return: CF clear if successful
  506.     SI:DI = timer count in seconds (actually 1.024 seconds)
  507. Desc:    reads the value of 82360SL APWR_TMRH & APWR_TMRL registers
  508. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh
  509. --------p-155380BH05-------------------------
  510. INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER
  511.     AX = 5380h
  512.     BH = 05h
  513.     SI:DI = timer count in seconds (actually 1.024 seconds)
  514. Return: CF clear if successful
  515. Desc:    sets the value of 82360SL APWR_TMRH & APWR_TMRL registers
  516. Note:    the maximum timer count is 134213 seconds
  517. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh
  518. --------p-155380BH06-------------------------
  519. INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION
  520.     AX = 5380h
  521.     BH = 06h
  522. Return: CF clear if successful
  523.         BL = resume condition (see #0367)
  524. Desc:    reads the value of 82360SL RESUME_MASK register
  525. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh
  526.  
  527. Bitfields for APM SL resume condition:
  528. Bit(s)    Description    (Table 0367)
  529.  7-2    reserved (0)
  530.  1    alarm enabled (resume on CMOS alarm)
  531.  0    ring enabled
  532. --------p-155380BH07-------------------------
  533. INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION
  534.     AX = 5380h
  535.     BH = 07h
  536.     BL = resume condition (see #0367)
  537. Return: CF clear if successful
  538. Desc:    sets the value of 82360SL RESUME_MASK register
  539. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh
  540. --------p-155380BH08-------------------------
  541. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME
  542.     AX = 5380h
  543.     BH = 08h
  544. Return: CF clear if successful
  545.         CH = hours
  546.         CL = minutes
  547.         SI = seconds
  548.     CF set on error
  549.         AH = error code (see #0368)
  550. Desc:    gets calendar event time from CMOS ram
  551. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  552.  
  553. (Table 0368)
  554. Values for APM SL error code:
  555.  02h    no alarm set
  556.  03h    no battery
  557. --------p-155380BH09-------------------------
  558. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME
  559.     AX = 5380h
  560.     BH = 09h
  561.     CH = hours
  562.     CL = minutes
  563.     SI = seconds
  564. Return: CF clear if successful
  565.     CF set on error
  566.         AH = error code (see #0368)
  567. Desc:    sets calendar event time in CMOS ram, enables Alarm resume
  568. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh
  569. --------p-155380BH0A-------------------------
  570. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE
  571.     AX = 5380h
  572.     BH = 0Ah
  573. Return: CF clear if successful
  574.         SI = century
  575.         DI = year
  576.         CH = month
  577.         CL = day
  578.     CF set on error
  579.         AH = error code (see #0368)
  580. Desc:    reads calendar event date from Extended CMOS ram
  581. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh
  582. --------p-155380BH0B-------------------------
  583. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE
  584.     AX = 5380h
  585.     BH = 0Bh
  586.     SI = century
  587.     DI = year
  588.     CH = month
  589.     CL = day
  590. Return: CF clear if successful
  591.     CF set on error
  592.         AH = error code (see #0368)
  593. Desc:    sets calendar event date in Extended CMOS ram
  594. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  595. --------p-155380BH0C-------------------------
  596. INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE
  597.     AX = 5380h
  598.     BH = 0Ch
  599. Return: CF clear if successful
  600.     CL = CPU clock divider (1,2,4 or 8)
  601.     BL = autocpumode ???
  602. Desc:    reads bits 4-5 of CPUPWRMODE register
  603. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh
  604. --------p-155380BH0D-------------------------
  605. INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE
  606.     AX = 5380h
  607.     BH = 0Dh
  608.     CL = CPU clock divider (1,2,4 or 8)
  609.     BL = autocpumode ???
  610. Return: CF clear if successful
  611. Desc:    writes bits 4-5 of CPUPWRMODE register
  612. SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh
  613. --------p-155380BH7E-------------------------
  614. INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER
  615.     AX = 5380h
  616.     BH = 7Eh
  617. Return:    AL = ???
  618.         03h on A-Step 386SL BIOSes
  619.         12h on later steps
  620.     BX = Control port (00B0h)
  621. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  622. --------p-155380BH7F-------------------------
  623. INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
  624.     AX = 5380h
  625.     BH = 7Fh
  626. Return: CF clear if successful
  627.         BX = OEM identifier
  628.         all other registers OEM-defined
  629.         ---Intel SL Enhanced Option BIOS---
  630.         BX = 534Ch ('SL')
  631.         CL = 4Fh ('O')
  632.         AL = version (10h = 1.0)
  633.         ---HP APM BIOS---
  634.         BX = 4850h ('HP')
  635.         CX = version (0001h)
  636.     CF set on error
  637.         AH = error code (03h) (see #0359)
  638. SeeAlso: AX=5380h/BH=00h
  639. --------p-155380-----------------------------
  640. INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
  641.     AX = 5380h
  642.     BH <> 7Fh
  643.     all other registers OEM-defined
  644. Return: OEM-defined
  645. SeeAlso: AX=5380h/BH=7Fh
  646. --------X-1553B0BH00-------------------------
  647. INT 15 - Intel System Management Bus - RESERVED
  648.     AX = 53B0h
  649.     BH = 00h
  650. Program: the SMBus is a variant of ACCESS.bus being used by Intel and Duracell
  651.       for the Smart Battery proposal, but designed to be generic enough to
  652.       handle other devices besides batteries
  653. --------X-1553B0BH01-------------------------
  654. INT 15 - Intel System Management Bus - INSTALLATION CHECK
  655.     AX = 53B0h
  656.     BH = 01h
  657.     BL = 72h ('r')
  658.     CX = 6164h ('ad')
  659. Return: CF clear if installed
  660.         AH = SMBus BIOS Interface Specification major version (01h)
  661.         AL = SMBus BIOS Interface Specification minor version (00h)
  662.         BL = number of SMBus devices present
  663.         CX = 6941h ('iA')
  664.         DX = vendor-specified SMBus hardware code
  665.         0000h means undefined hardware type
  666.     CF set if error
  667.         AH = Error code 0Ah, 86h (see #2673)
  668. Note:    this function is only supported in INT 15h mode
  669. SeeAlso: AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=06h
  670.  
  671. (Table 2673)
  672. Values for Intel System Management Bus error codes:
  673.  00h    SMBus OK
  674.  01h    SMBus connect failed
  675.  02h    SMBus already connected (see also #2674)
  676.  03h    SMBus disconnect failed
  677.  04h    SMBus not connected
  678.  05h    SMBus INT 15 interface disabled
  679.  06h    SMBus device address request out of range
  680.  07h    SMBus unknown failure
  681.  08h    SMBus message list empty
  682.  09h    SMBus message list overflow
  683.  0Ah    SMBus invalid signature
  684.  10h    SMBus device address not acknowledged
  685.  11h    SMBus device error detected
  686.  12h    SMBus device command access denied
  687.  13h    SMBus unknown error
  688.  14h    SMBus transaction pending
  689.  15h    SMBus no transaction pending
  690.  16h    SMBus request does not match pending transaction
  691.  17h    SMBus device access denied
  692.  18h    SMBus timeout
  693.  19h    SMBus protocol not supported
  694.  1Ah    SMBus busy
  695.  1Bh    SMBus SMI detected
  696.  80h    SMBus OK (previously unreported SMI occurred)
  697.  86h    SMBus not supported
  698.  
  699. (Table 2674)
  700. Values for Intel System Management Bus Already Connected sub-error codes:
  701.  01h    real mode connect already established
  702.  02h    16-bit PMode connect already established
  703.  03h    32-bit PMode connect already established
  704. SeeAlso: #2673
  705. --------X-1553B0BH02-------------------------
  706. INT 15 - Intel System Management Bus - REAL MODE CONNECT
  707.     AX = 53B0h
  708.     BH = 02h
  709.     CX = 6941h ('iA')
  710. Return: CF clear if successful
  711.         AX = SMBus Real mode code segment
  712.         BX = offset of entry point into SMBus BIOS Interface
  713.         CX = SMBus Real mode data segment
  714.     CF set if error
  715.         AH = error code (01h,02h,0Ah,86h) (see #2673)
  716.         AL = sub-error code if error code is 02h (see #2674)
  717. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  718.       to the supplied entry point instead of INT 15 (with registers
  719.       identical to those described here for INT 15)
  720. Notes:    Support for this function is optional
  721.     this function is only supported in INT 15 mode when implemented
  722. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  723. --------X-1553B0BH03-------------------------
  724. INT 15 - Intel System Management Bus - 16-BIT PROTECTED-MODE CONNECT
  725.     AX = 53B0h
  726.     BH = 03h
  727.     CX = 6941h ('iA')
  728. Return: CF clear if successful
  729.         AX = SMBus 16-bit code segment (real mode base address)
  730.         BX = offset of entry point into SMBus BIOS Interface
  731.         CX = SMBus 16-bit data segment (real mode base address)
  732.         SI = code segment length in bytes
  733.         DI = data segment length in bytes
  734.     CF set if error
  735.         AH = error code (01h,02h,0Ah,86h) (see #2673)
  736.         AL = sub-error code if error code is 02h (see #2674)
  737. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  738.       to the supplied entry point instead of INT 15 (with registers
  739.       identical to those described here for INT 15)
  740. Notes:    before calling the entry point, two descriptors must be initialized
  741.       in the GDT or LDT.  They must be consecutiveand be in the order of
  742.       code, then data.  At the time    of the call, the descriptors must be
  743.       valid and have CPL=0.
  744.     the code descriptor must be ring-0 privilege
  745.     this function is only supported in INT 15 mode
  746. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  747. --------X-1553B0BH04-------------------------
  748. INT 15 - Intel System Management Bus - 32-BIT PROTECTED-MODE CONNECT
  749.     AX = 53B0h
  750.     BH = 04h
  751.     CX = 6941h ('iA')
  752. Return: CF clear if successful
  753.         AX = SMBus 32-bit code segment (real mode base address)
  754.         EBX = offset of entry point into SMBus BIOS Interface
  755.         CX = SMBus 16-bit code segment (real mode base address)
  756.         DX = SMBus data segment (real mode base address)
  757.         SI = code segment length in bytes
  758.         DI = data segment length in bytes
  759.     CF set if error
  760.         AH = error code (01h,02h,0Ah,86h) (see #2673)
  761.         AL = sub-error code if error code is 02h (see #2674)
  762. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  763.       to the supplied entry point instead of INT 15 (with registers
  764.       identical to those described here for INT 15)
  765. Notes:    before calling the entry point, two descriptors must be initialized in
  766.       the GDT or LDT.  They must be consecutive and be in the order of
  767.       32-bit code, 16-bit code, then data.    At the time of the call, the
  768.       descriptors must be valid and have CPL=0.
  769.     the code descriptors must be ring-0 privilege
  770.     this function is only supported in INT 15 mode
  771. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=05h
  772. --------X-1553B0BH05-------------------------
  773. INT 15 - Intel System Management Bus - DISCONNECT
  774.     AX = 53B0h
  775.     BH = 05h
  776.     CX = 6941h ('iA')
  777. Return: CF clear if successful
  778.         AH = 00h (SMBus OK)
  779.     CF set if error
  780.         AH = error code (03h,04h,05h,0Ah,86h) (see #2673)
  781. Note:    this function is supported in connected mode (far CALL entry point)
  782.       only
  783. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h
  784. --------X-1553B0BH06-------------------------
  785. INT 15 - Intel System Management Bus - DEVICE ADDRESS
  786.     AX = 53B0h
  787.     BH = 06h
  788.     BL = position in list to report
  789.     CH = 6941h ('iA')
  790. Return: CF clear if successful
  791.         AH = 00h (SMBus OK)
  792.         BH = number of SMBus devices
  793.         BL = SMBus Device Address of device at position BL in list
  794.     CF set if error
  795.         AH = error code (06h,0Ah,86h) (see #2673)
  796. Desc:    retrieves already assigned SMBus device addresses
  797. Note:    this function is supported in INT 15h mode only
  798. --------X-1553B0BH07-------------------------
  799. INT 15 - Intel System Management Bus - CRITICAL MESSAGES
  800.     AX = 53B0h
  801.     BH = 07h
  802.     CX = 6941h ('iA')
  803. Return: CF clear if successful
  804.         AH = 00h (SMBus OK)
  805.         AL = device address
  806.         BX = device message
  807.     CF set if error
  808.         AH = error code (05h,07h,08h,09h,0Ah,86h) (see #2673)
  809. Desc:    retrieves oldest queued critical message from an SMBus device to the
  810.       host
  811. Notes:    up to five messages are queued; if the queue is full, messages will be
  812.       lost and error 09h returned
  813.     this function is supported in INT 15h mode only
  814. --------X-1553B0BH08-------------------------
  815. INT 15 - Intel System Management Bus - RESERVED
  816.     AX = 53B0h
  817.     BH = 08h-0Fh
  818. --------X-1553B0BH10-------------------------
  819. INT 15 - Intel System Management Bus - REQUEST
  820.     AX = 53B0h
  821.     BH = 10h
  822.     BL = protocol (see #2675)
  823.     CH = device address
  824.     CL = device command
  825.     DH = MSB Data or block length (for BlockWrite)
  826.     DL = LSB Data or first byte of block (for BlockWrite)
  827. Return: CF clear if successful
  828.         AH = 00h or 80h (SMBus OK)
  829.          (80h indicates a previously unreported SMI took place)
  830.     CF set if error
  831.         AH = error code (05h,10h,11h,12h,13h,14h,17h,19h,1Ah,86h)
  832.           (see #2673)
  833. Desc:    request access to a device on the SMBus
  834. SeeAlso: AX=53B0h/BH=11h, AX=53B0h/BH=13h
  835.  
  836. (Table 2675)
  837. Values for Intel System Management Bus protocol codes:
  838.  00h    Quick Command
  839.  01h    Send Byte
  840.  02h    Receive Byte
  841.  03h    Write Byte
  842.  04h    Read Byte
  843.  05h    Write Word
  844.  06h    Read Word
  845.  07h    Block Write
  846.  08h    Block Read
  847.  09h    Process Call
  848.  0Ah-FFh reserved
  849. --------X-1553B0BH11-------------------------
  850. INT 15 - Intel System Management Bus - REQUEST CONTINUATION
  851.     AX = 53B0h
  852.     BH = 11h
  853.     BL = protocol (see #2675)
  854.     CH = device address
  855.     CL = number of valid bytes in DX (1 or 2)
  856.     DH = MSB Data (CL = 1 or 2)
  857.     DL = LSB Data (CL = 2)
  858. Return: CF clear if successful
  859.         AH = 00h (SMBus OK)
  860.         CL = SMBus status
  861.         00h SMBus hardware not ready for more data
  862.         01h SMBus hardware ready for 2 more data bytes
  863.     CF set if error
  864.         AH = error code (05h,11h,13h,15h,16h,18h,1Bh,86h) (see #2673)
  865. Desc:    continue WriteBlock protocol started with function 10h
  866. SeeAlso: AX=53B0h/BH=10h, AX=53B0h/BH=13h
  867. --------X-1553B0BH12-------------------------
  868. INT 15 - Intel System Management Bus - REQUEST ABORT
  869.     AX = 53B0h
  870.     BH = 12h
  871.     BL = protocol (see #2675)
  872.     CH = device address
  873.     CL = device command
  874. Return: CF clear if successful
  875.         AH = 00h (SMBus OK)
  876.     CF set if error
  877.         AH = error code (05h,13h,15h,16h,86h) (see #2673)
  878. Desc:    stop the currently pending SMBus request; usually used to terminate
  879.       a request after an SMI Detected error
  880. --------X-1553B0BH13-------------------------
  881. INT 15 - Intel System Management Bus - REQUEST DATA AND STATUS
  882.     AX = 53B0h
  883.     BH = 13h
  884.     BL = protocol (see #2675)
  885.     CH = device address
  886.     CL = device command
  887. Return: CF clear if successful
  888.         AH = 00h (SMBus OK)
  889.         CH = status
  890.         00h no data pending, transaction complete
  891.         01h no data pending, transaction continues
  892.         02h data pending
  893.         CL = number of valid bytes in DX (0-2)
  894.         DH = MSB data
  895.         DL = LSB data
  896.     CF set if error
  897.         AH = error code (05h,10h,11h,13h,15h,16h,18h,1Bh,86h) (see #2673)
  898. Desc:    determine when a transaction is complete, gather data returned by read
  899.       transactions
  900. Note:    for Block Read protocol (08h), first call returns block    length in DH
  901.       and the first byte of the block in DL
  902. --------T-155400-----------------------------
  903. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  904.     AX = 5400h
  905.     ES:BX -> device information tables
  906.     DI:DX -> dispatcher entry point
  907. Note:    called by OmniView to notify programs loaded before OmniView of state
  908.       changes inside OmniView
  909. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  910. --------T-155401-----------------------------
  911. INT 15 C - Omniview Multitasker - PROCESS CREATION
  912.     AX = 5401h
  913.     ES:BX = process handle
  914. Note:    called by OmniView to notify programs loaded before OmniView of state
  915.       changes inside OmniView
  916. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  917. --------T-155402-----------------------------
  918. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  919.     AX = 5402h
  920.     ES:DX = process handle
  921. Note:    called by OmniView to notify programs loaded before OmniView of state
  922.       changes inside OmniView
  923. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  924. --------T-155403-----------------------------
  925. INT 15 C - Omniview Multitasker - SAVE
  926.     AX = 5403h
  927.     ES:DX = process swapping out
  928. Note:    called by OmniView to notify programs loaded before OmniView of state
  929.       changes inside OmniView
  930. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  931. --------T-155404-----------------------------
  932. INT 15 C - Omniview Multitasker - RESTORE
  933.     AX = 5404h
  934.     ES:DX = process swapping in
  935. Note:    called by OmniView to notify programs loaded before OmniView of state
  936.       changes inside OmniView
  937. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  938. --------T-155405-----------------------------
  939. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  940.     AX = 5405h
  941.     ES:DX = process swapping in
  942. Note:    called by OmniView to notify programs loaded before OmniView of state
  943.       changes inside OmniView
  944. SeeAlso: AX=5406h
  945. --------T-155406-----------------------------
  946. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  947.     AX = 5406h
  948.     ES:DX = process swapping in
  949. Note:    called by OmniView to notify programs loaded before OmniView of state
  950.       changes inside OmniView
  951. SeeAlso: AX=5405h
  952. --------T-155407-----------------------------
  953. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  954.     AX = 5407h
  955. Note:    called by OmniView to notify programs loaded before OmniView of state
  956.       changes inside OmniView
  957. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  958. --------b-1560------------------------------------
  959. INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
  960.     AH = 60h
  961.     AL = new speed
  962.         00h normal (8 MHz)
  963.         01h Slow Mode 1 (4 MHz)
  964.         02h Slow Mode 2 (2 MHz)
  965. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  966.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  967. SeeAlso: AX=6301h
  968. --------p-156000-----------------------------
  969. INT 15 U HP 100LX/200LX - GET MAIN BATTERY LEVEL
  970.     AX = 6000h
  971. Return: AX = battery level
  972. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  973. SeeAlso: AX=6001h,AX=6002h,AX=6003h,AX=6004h
  974. --------p-156001-----------------------------
  975. INT 15 U HP 100LX/200LX - GET BACKUP BATTERY LEVEL
  976.     AX = 6001h
  977. Return: AX = battery level
  978. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  979. SeeAlso: AX=6000h,AX=6002h
  980. --------p-156002-----------------------------
  981. INT 15 U HP 100LX/200LX - GET POWER INFO
  982.     AX = 6002h
  983. Return: AL = power settings (see #0369)
  984. SeeAlso: AX=6000h,AX=6003h,AX=6004h
  985.  
  986. Bitfields for power settings:
  987. Bit(s)    Description    (Table 0369)
  988.  0-1    unused ???
  989.  2    card battery status low (OK if bit clear)
  990.  3    battery charging off (disabled if bits 3-5 clear)
  991.  4    battery charging slow
  992.  5    battery charging fast
  993.  6    power adaptor active
  994.  7    battery type NiCad (alkaline if bit clear)
  995. --------p-156003-----------------------------
  996. INT 15 U HP 100LX/200LX - SET MAIN BATTERY TYPE
  997.     AX = 6003h
  998.     BL = battery type
  999.         00h alkaline
  1000.         01h NiCad
  1001. SeeAlso: AX=6000h,AX=6004h
  1002. --------p-156004-----------------------------
  1003. INT 15 U HP 100LX/200LX - SET BATTERY CHARGING MODE
  1004.     AX = 6004h
  1005.     BL = charging
  1006.         00h disabled
  1007.         01h enabled
  1008. SeeAlso: AX=6000h,AX=6003h
  1009. --------b-1561------------------------------------
  1010. INT 15 - HUNTER 16 - GET POWER LEVEL
  1011.     AH = 61h
  1012. Return: AH = percentage of full power left (0..100)
  1013. Desc:    determine how much battery power is left
  1014. SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
  1015. --------b-1561-------------------------------
  1016. INT 15 U HP 100LX/200LX - SET ANNOUNCIATORS POSITION
  1017.     AH = 61h
  1018.     AL = position (20h = left, 60h = right)
  1019. Note:    The announciators are the indicator symbols for the Shift and Fn keys
  1020.       in the bottom line
  1021. SeeAlso: AH=62h"HP",INT 16/AH=02h
  1022. --------b-1562------------------------------------
  1023. INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
  1024.     AH = 62h
  1025.     AL = level (00h 5%, 01h 10%, ... 12h 95%)
  1026.     BX = interval between power low warnings in seconds (1..600)
  1027. Return: AH = Status
  1028. Desc:    set the level (relative to full power) when power-low warnings begin
  1029.       and the interval between the warnings
  1030. SeeAlso: AH=61h,AH=65h,AH=66h
  1031. --------b-1562-------------------------------
  1032. INT 15 U HP 100LX/200LX - SET DISPLAY CONTRAST
  1033.     AH = 62h
  1034.     BL = contrast (00h-1Fh, 1Fh is the darkest)
  1035. SeeAlso: AH=47h"HP",AH=61h"HP"
  1036. --------b-156300----------------------------------
  1037. INT 15 - HUNTER 16 - GET IDLE TIMEOUT
  1038.     AX = 6300h
  1039. Return: AH = status
  1040.     BX = timeout in seconds (0-3600)
  1041. Desc:    get the idle timeout value, the interval without keyboard or
  1042.        communications activity before the system shuts down
  1043. SeeAlso: AX=6301h
  1044. --------b-156301----------------------------------
  1045. INT 15 - HUNTER 16 - SET IDLE TIMEOUT
  1046.     AX = 6301h
  1047.     BX = timeout in seconds (0-3600)
  1048. Desc:    sets the idle timeout value, the interval without keyboard or
  1049.       communications activity before the system shuts down
  1050. SeeAlso: AX=6300h
  1051. --------b-1564------------------------------------
  1052. INT 15 - HUNTER 16 - CONTROL RESUME MODE
  1053.     AH = 64h
  1054.     AL = new state
  1055.         00h disable Resume mode
  1056.         01h enable Resume mode
  1057. Return: AH = status
  1058. Desc:    turn Resume mode on or off. In Resume mode the system starts in
  1059.       the application that was running when it shut down as if nothing
  1060.       had happened.
  1061. SeeAlso: AH=67h,AH=68h,AH=69h
  1062. --------b-1565------------------------------------
  1063. INT 15 - HUNTER 16 - AUTHORISE CHARGING
  1064.     AH = 65h
  1065.     AL = charging level
  1066.         01h charging not allowed
  1067.         02h charging allowed until power down
  1068.         03h charging allowed until batteries changed or fail.
  1069.         Ask user if charging is still allowed on next poweron
  1070.         04h charging allowed indefinitely
  1071.     BX = 0203h
  1072.     CX = 0405h
  1073.     DX = 0607h
  1074. Return: AH = status
  1075. SeeAlso: AH=66h,AH=68h
  1076. --------b-1566------------------------------------
  1077. INT 15 - HUNTER 16 - SET BATTERY LEVEL
  1078.     AH = 66h
  1079.     AL = level in percent of maximum (0..100)
  1080. Return: AH = status
  1081. SeeAlso: AH=61h,AH=65h
  1082. --------b-1567------------------------------------
  1083. INT 15 - HUNTER 16 - CONTROL STOP MODE
  1084.     AH = 67h
  1085.     AL = mode when waiting for input
  1086.         00h use STOP mode (allows communication)
  1087.         01h use HALT mode (disallows communication)
  1088. Return: AH = status
  1089. Desc:    select the power save mode to use when waiting for input
  1090. SeeAlso: AH=69h
  1091. --------b-1568------------------------------------
  1092. INT 15 - HUNTER 16 - REQUEST POWER DOWN
  1093.     AH = 68h
  1094. Desc:    turns off the Hunter 16 if power down is allowed (see AH=69h)
  1095. SeeAlso: AH=69h
  1096. --------b-1569------------------------------------
  1097. INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
  1098.     AH = 69h
  1099.     AL = mode
  1100.         00h inhibit power down
  1101.         01h allow power down
  1102. Return: AH = status
  1103. SeeAlso: AH=67h,AH=68h,AH=6Ah
  1104. --------b-156A------------------------------------
  1105. INT 15 - HUNTER 16 - CONTROL SLOW MODE
  1106.     AH = 6Ah
  1107.     AL = mode
  1108.         00h inhibit Slow mode
  1109.         01h allow Slow mode
  1110. Return: AH = status
  1111. SeeAlso: AH=69h
  1112. --------b-156B------------------------------------
  1113. INT 15 - HUNTER 16 - GET ROM BIOS VERSION
  1114.     AH = 6Bh
  1115. Return: BH = version number (ASCII)
  1116.     BL = release number (ASCII)
  1117.     CH = minor release number (ASCII)
  1118.     CL = minor release number (ASCII)
  1119. SeeAlso: AH=6Ch
  1120. --------b-156C------------------------------------
  1121. INT 15 - HUNTER 16 - GET SERIAL NUMBER
  1122.     AH = 6Ch
  1123. Return: BL:CX = BCD serial number
  1124. Note:    when shipped, all Hunter 16s have the same Serial Number, but a
  1125.       different number can be stored (see AH=72h)
  1126. SeeAlso: AH=6Bh,AH=72h
  1127. --------b-156D------------------------------------
  1128. INT 15 - HUNTER 16 - GET EVENT DETAIL
  1129.     AH = 6Dh
  1130. Return: AH = 00h if successful
  1131.     CX:BX = event flags bit 0..31 (see #0370)
  1132. Note:    this function allows testing for events
  1133. SeeAlso: AH=6Eh,AH=6Fh
  1134.  
  1135. Bitfields for HUNTER 16 events:
  1136. Bit(s)    Description    (Table 0370)
  1137.  6    RI received
  1138.  5    RTC Alarm
  1139.  4    data received on COM2
  1140.  3    data received on COM1
  1141.  2    error on COM2
  1142.  1    error on COM1
  1143.  0    PWR button pressed
  1144. --------b-156E------------------------------------
  1145. INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
  1146.     AH = 6Eh
  1147.     AL = Software Interrupt
  1148.           00h  do not trap event
  1149.           else trap as software interrupt number AL
  1150.     BH = event number (see AH=6Dh)
  1151.     BL = enable mask
  1152.         00h disable event
  1153.         01h enable event
  1154. Return: AH = 00h if successful
  1155. SeeAlso: AH=6Dh,AH=6Fh
  1156. --------b-156F------------------------------------
  1157. INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
  1158.     AH = 6Fh
  1159.     AL = event number (see AH=6Dh)
  1160. Return: AH = 00h if successful
  1161. Desc:    Acknowledges the event, so the next similar event can be detected
  1162. SeeAlso: AH=6Dh"HUNTER",AH=6Eh
  1163. --------b-1570------------------------------------
  1164. INT 15 - HUNTER 16 - CONTROL SOUND
  1165.     AH = 70h
  1166.     AL = new state
  1167.         00h disable sound
  1168.         else enable sound
  1169. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  1170.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  1171. ----------157000-----------------------------
  1172. INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
  1173.     AX = 7000h
  1174.     BL = number of word to read (00h-3Fh)
  1175. Return: CF clear if function supported
  1176.         DX = contents of EEPROM word
  1177. Note:    newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
  1178.       the clock chip to store system configuration information
  1179. SeeAlso: AX=7001h
  1180. ----------157001-----------------------------
  1181. INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
  1182.     AX = 7001h
  1183.     BL = number of word to read (00h-3Fh)
  1184.     DX = new value for EEPROM word
  1185. Return: CF clear if function supported
  1186. Note:    the EEPROMs are normally written only by the system setup program;
  1187.       changing the values can badly mess up a Tandy
  1188. SeeAlso: AX=7000h
  1189. ----------157002-----------------------------
  1190. INT 15 U - Tandy 1000 Model ??? - GET ROM PAGE
  1191.     AX = 7002h
  1192. Return: AL = ROM page mapped at 0E0000h (0-6 (13?))
  1193. Note:    some Tandy machines have DOS and DeskMate in a 512k paged ROM.  The
  1194.       BIOS uses this call to determine what ROM page is mapped in the 64k
  1195.       segment at 0E0000h.
  1196.     the 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  1197.       0F0000h.  There may be 16 32k ROM pages on other systems.
  1198. SeeAlso: AX=7003h,INT E0"DeskMate"
  1199. ----------157003-----------------------------
  1200. INT 15 U - Tandy 1000 Model ??? - SET ROM PAGE
  1201.     AX = 7003h
  1202.     DL = ROM page to be mapped at 0E0000h (0-6 (13?))
  1203. Return: CF clear if valid ROM page specified
  1204. Note:    Some Tandy machines have DOS and DeskMate in a 512k paged ROM.  The
  1205.       BIOS uses this call to map ROM pages in the 64k segment at 0E0000h.
  1206.     The 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  1207.       0F0000h.  There may be 16 32k ROM pages on other systems.
  1208. SeeAlso: AX=7002h,INT E0"DeskMate"
  1209. --------b-1571------------------------------------
  1210. INT 15 - HUNTER 16 - SELECT POWER UP KEYS
  1211.     AH = 71h
  1212.     BL = column
  1213.     BH = row
  1214.     AL = column switch (00h disable, 01h enable)
  1215.     CL = row switch (00h disable, 01h enable)
  1216. Return: AH = status
  1217. SeeAlso: AH=7Bh,AH=88h
  1218. --------b-157200----------------------------------
  1219. INT 15 - HUNTER 16 - RESET SERIAL NUMBER
  1220.     AX = 7200h
  1221. Return: AH = 00h if successful
  1222. Desc:    reset the serial number to the default serial number present when the
  1223.       Hunter 16 was shipped
  1224. SeeAlso: AH=6Ch,AH=72h
  1225. --------b-1572------------------------------------
  1226. INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
  1227.     AH = 72h
  1228.     AL nonzero
  1229.     DS:BX -> new serial number (6 ASCII digits)
  1230. Return: AH = 00h if successful
  1231. Desc:    install a new serial number
  1232. SeeAlso: AH=6Ch,AX=7200h
  1233. --------b-1573------------------------------------
  1234. INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
  1235.     AH = 73h
  1236.     AL = drive (0: A:, 1: B:)
  1237. Return: AH = status
  1238.         00h successful
  1239.         FFh Oracle GT drive not connected
  1240.     AL = power level in percent of maximum (0..100)
  1241. Desc:    get the power remaining in the Oracle GT batteries
  1242. SeeAlso: AH=61h
  1243. --------b-1574------------------------------------
  1244. INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
  1245.     AH = 74h
  1246.     AL = new level
  1247.         01h off
  1248.         02h unchanged
  1249.         03h change level
  1250.         BL = desired level (00h-7Fh)
  1251. Return: AH = status
  1252. Desc:    select the backlight level to use when the Hunter is next turned on
  1253. SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
  1254. --------b-1575------------------------------------
  1255. INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
  1256.     AH = 75h
  1257.     AL = new level
  1258.         01h off
  1259.         02h unchanged
  1260.         03h change level
  1261.         BL = desired level (00h-7Fh)
  1262. Return: AH = status
  1263. Desc:    select the LCD contrast level to use when the Hunter is next turned on
  1264. SeeAlso: AH=63h,AH=74h
  1265. --------b-1576------------------------------------
  1266. INT 15 - HUNTER 16 - CONTROL POWER SAVE
  1267.     AH = 76h
  1268.     BX = power save control (see #0371)
  1269. SeeAlso: AH=74h
  1270.  
  1271. Bitfields for HUNTER 16 power save control:
  1272. Bit(s)    Description    (Table 0371)
  1273.  0    power save enabled
  1274.  1    inhibit power save when waiting for COM1 data
  1275.  2    inhibit power save when waiting for COM2 data
  1276.  3    inhibit power save when waiting for data from barcode wand
  1277.  4    inhibit power up on timer tick
  1278. --------b-1579------------------------------------
  1279. INT 15 - HUNTER 16 - REDIRECT LPT1
  1280.     AH = 79h
  1281.     AL = port to which to redirect (00h COM1, 01h COM2)
  1282. --------b-157A------------------------------------
  1283. INT 15 - HUNTER 16 - INVOKE HOT KEY
  1284.     AH = 7Ah
  1285. Desc:    this function has the same effect as pressing the HOT key
  1286. SeeAlso: AH=7Bh
  1287. --------b-157B------------------------------------
  1288. INT 15 - HUNTER 16 - CONTROL HOT KEY
  1289.     AH = 7Bh
  1290.     AL = 00h prevent HOT key
  1291.         else allow HOT key
  1292. Desc:    Allow or prevent the HOT key function which is used to examine and
  1293.       change the Hunter setup
  1294. SeeAlso: AH=71h,AH=7Ah,AH=7Ch
  1295. --------b-157C------------------------------------
  1296. INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
  1297.     AH = 7Ch
  1298.     AL = 00h prevent HOT key power option
  1299.         else allow HOT key power option
  1300. Desc:    allow or prevent changing the power options
  1301. SeeAlso: AH=7Bh,AH=7Dh
  1302. --------b-157D------------------------------------
  1303. INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
  1304.     AH = 7Dh
  1305.     AL = 00h turn off after 10 warnings
  1306.         else never turn off
  1307. Desc:    specify whether the Hunter 16 turns off after 10 low power warnings
  1308. SeeAlso: AH=7Ch
  1309. --------b-157E------------------------------------
  1310. INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
  1311.     AH = 7Eh
  1312.     AL = 00h do not prompt
  1313.         else prompt
  1314. Desc:    select whether the user is prompted for the battery state if the
  1315.       battery cap has been off when the system is turned on
  1316. SeeAlso: AH=7Fh
  1317. --------b-157F------------------------------------
  1318. INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
  1319.     AH = 7Fh
  1320.     AL = battery type
  1321.         00h     non-rechargeable
  1322.         else rechargeable
  1323. SeeAlso: AH=7Eh
  1324. --------B-1580-------------------------------
  1325. INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
  1326.     AH = 80h
  1327.     BX = device ID
  1328.     CX = process ID
  1329.     CF clear
  1330. Return: CF clear if successful
  1331.         AH = 00h
  1332.     CF set on error
  1333.         AH = status (see #0372)
  1334. Note:    this function should be hooked by a multitasker which wishes to keep
  1335.       track of device ownership; the default BIOS handler merely returns
  1336.       successfully
  1337. SeeAlso: AH=81h,AH=82h
  1338.  
  1339. (Table 0372)
  1340. Values for status:
  1341.  80h    invalid command (PC,PCjr)
  1342.  86h    function not supported (XT)
  1343. --------b-1580------------------------------------
  1344. INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
  1345.     AH = 80h
  1346.     AL = function
  1347.         00h get
  1348.         Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
  1349.         else set
  1350.         BL = battery capacity (same as AL above)
  1351. SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
  1352. --------B-1581-------------------------------
  1353. INT 15 C - OS HOOK - DEVICE CLOSE
  1354.     AH = 81h
  1355.     BX = device ID
  1356.     CX = process ID
  1357.     CF clear
  1358. Return: CF clear if successful
  1359.         AH = 00h
  1360.     CF set on error
  1361.         AH = status (see #0372)
  1362. Note:    this function should be hooked by a multitasker which wishes to keep
  1363.       track of device ownership; the default BIOS handler merely returns
  1364.       successfully
  1365. SeeAlso: AH=80h,AH=82h
  1366. --------b-1581------------------------------------
  1367. INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
  1368.     AH = 81h
  1369.     AL = new state of power output (00h off, nonzero on)
  1370. Desc:    turn the +5V low power output on or off
  1371. SeeAlso: AH=80h"HUNTER"
  1372. --------B-1582-------------------------------
  1373. INT 15 C - OS HOOK - PROGRAM TERMINATION
  1374.     AH = 82h
  1375.     BX = process ID
  1376.     CF clear
  1377. Return: CF clear if successful
  1378.         AH = 00h
  1379.     CF set on error
  1380.         AH = status (see #0372)
  1381. Notes:    closes all devices opened by the given process ID with function 80h
  1382.     this function should be hooked by a multitasker which wishes to keep
  1383.       track of device ownership; the default BIOS handler merely returns
  1384.       successfully
  1385. SeeAlso: AH=80h,AH=81h
  1386. --------b-1582------------------------------------
  1387. INT 15 - HUNTER 16 - SOUND OUTPUT
  1388.     AH = 82h
  1389.     DX = length (duration in seconds = DX * 666670 / frequency)
  1390.     BX = pitch (see #0373)
  1391. Desc:    Sound the tone specified in BX for the duration in DX
  1392. SeeAlso: AX=1019h
  1393.  
  1394. (Table 0373)
  1395. Values for HUNTER 16 sound pitch:
  1396. BX(dec)     Note    Frequency    BX(dec)     Note    Frequency
  1397.   425    G    1568.000     1515    A     440.000
  1398.   451    F#    1479.503     1605    G#     415.307
  1399.   477    F    1396.900     1701    G     392.000
  1400.   506    E    1318.500     1802    F#     369.998
  1401.   536    D#    1244.523     1909    F     349.230
  1402.   568    D    1174.700     2022    E     329.630
  1403.   601    C#    1108.749     2143    D#     311.127
  1404.   637    C    1046.500     2270    D     293.660
  1405.   675    B     958.770     2405    C#     277.183
  1406.   715    A#     932.329     2548    MID C     261.630
  1407.   758    A     880.000     2700    B     246.940
  1408.   803    G#     830.609     2860    A#     233.081
  1409.   850    G     783.990     3030    A     220.000
  1410.   901    F#     739.990     3210    G#     207.654
  1411.   954    F     698.460     3401    G     196.000
  1412.  1011    E     659.260     3604    F#     184.996
  1413.  1071    D#     622.257     3818    F     174.610
  1414.  1135    D     587.330     4045    E     164.810
  1415.  1203    C#     554.365     4286    D#     155.560
  1416.  1274    C     523.250     4540    D     146.830
  1417.  1350    B     493.880     4668    C#     142.827
  1418.  1430    A#     466.162     4803    C     138.810
  1419. --------B-1583-------------------------------
  1420. INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
  1421.     AH = 83h
  1422.     AL = subfunction
  1423.         00h set interval
  1424.         CX:DX = microseconds to delay
  1425.         ES:BX -> byte whose high bit is to be set at end of interval
  1426.         01h cancel wait interval
  1427. Return: CF set on error or function already busy
  1428.         AH = status
  1429.         80h invalid command (PC,PCjr)
  1430.         86h function not supported (XT and later)
  1431.     CF clear if successful
  1432. Notes:    the resolution of the wait period is 977 microseconds on most systems
  1433.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  1434.       real-time clock chip which is available on INT 70
  1435.     IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
  1436. SeeAlso: AH=41h,AH=86h,INT 70
  1437. --------b-1583------------------------------------
  1438. INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
  1439.     AH = 83h
  1440.     AL = state of LCD window (00h disabled, nonzero enabled)
  1441. Desc:    Enable/disable the facility where the displayed window tracks the
  1442.       cursor output to keep the focus visible
  1443. --------B-1584-------------------------------
  1444. INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
  1445.     AH = 84h
  1446.     DX = subfunction
  1447.         0000h read joystick switches
  1448.         Return: AL bits 7-4 = switch settings
  1449.         0001h read positions of joysticks
  1450.         Return: AX = X position of joystick A
  1451.             BX = Y position of joystick A
  1452.             CX = X position of joystick B
  1453.             DX = Y position of joystick B
  1454. Return: CF set on error
  1455.         AH = status (see #0372)
  1456.     CF clear if successful
  1457. Notes:    if no game port is installed, subfunction 0000h returns AL=00h (all
  1458.       switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
  1459.     a 250kOhm joystick typically returns 0000h-01A0h
  1460. SeeAlso: AH=84h"V20-XT-BIOS"
  1461. --------b-1584-------------------------------
  1462. INT 15 - V20-XT-BIOS - JOYSTICK SUPPORT
  1463.     AH = 84h
  1464.     DX = subfunction
  1465.         0000h read joystick switches
  1466.         Return: AL bits 7-4 = switch settings
  1467.         other: read positions of joysticks as indicated by bits 0-3
  1468.         Return: AX = X position of joystick A (if DX bit 0 set)
  1469.             BX = Y position of joystick A (if DX bit 1 set)
  1470.             CX = X position of joystick B (if DX bit 2 set)
  1471.             DX = Y position of joystick B (if DX bit 3 set)
  1472. Return: CF set on error
  1473.         AH = status (see #0372)
  1474.     CF clear if successful
  1475. Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
  1476.        Koehlmann / c't magazine
  1477. SeeAlso: AH=84h"PS",INT 10/AH=0Eh/CX=ABCDh
  1478. --------b-158400----------------------------------
  1479. INT 15 - HUNTER 16 - GET DISKETTE PORT
  1480.     AX = 8400h
  1481.     BH = Drive (0: A:, 1: B:)
  1482. Return: AL = Port (0: COM1, >0: COM2)
  1483. Desc:    return the COM port used for the floppy drive
  1484. SeeAlso: AX=8401h
  1485. --------b-158401----------------------------------
  1486. INT 15 - HUNTER 16 - SET DISKETTE PORT
  1487.     AX = 8401h
  1488.     BH = Drive (0: A:, 1: B:)
  1489.     BL = Port (0: COM1, >0: COM2)
  1490. Desc:    set the COM port used for the floppy drive
  1491. SeeAlso: AX=8400h
  1492. --------B-1585-------------------------------
  1493. INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
  1494.     AH = 85h
  1495.     AL = SysReq key action (00h pressed, 01h released)
  1496.     CF clear
  1497. Return: CF clear if successful
  1498.         AH = 00h
  1499.     CF set on error
  1500.         AH = status (see #0372)
  1501. Notes:    called by keyboard decode routine
  1502.     the default handler simply returns successfully; programs which wish
  1503.       to monitor the SysReq key must hook this call
  1504.     the SysReq key is often labeled SysRq
  1505. SeeAlso: INT 09
  1506. --------b-158500----------------------------------
  1507. INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
  1508.     AX = 8500h
  1509. Desc:    restore the standard power menu
  1510. SeeAlso: AX=8501h"HUNTER"
  1511. --------b-158501----------------------------------
  1512. INT 15 - HUNTER 16 - SET POWER MENU (APM)
  1513.     AX = 8501h
  1514.     BL = user software interrupt number
  1515. Desc:    install an alternate power menu routine
  1516. SeeAlso: AX=8500h"HUNTER"
  1517. --------B-1586-------------------------------
  1518. INT 15 - BIOS - WAIT (AT,PS)
  1519.     AH = 86h
  1520.     CX:DX = interval in microseconds
  1521. Return: CF clear if successful (wait interval elapsed)
  1522.     CF set on error or AH=83h wait already in progress
  1523.         AH = status (see #0372)
  1524. Note:    the resolution of the wait period is 977 microseconds on most systems
  1525.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  1526.       real-time clock chip which is available on INT 70
  1527. SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
  1528. --------b-1586------------------------------------
  1529. INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
  1530.     AH = 86h
  1531.     AL = function (00h get, nonzero set)
  1532.     BX = 1234h
  1533.     DS:SI -> 256-byte Attribute buffer
  1534. Note:    In text modes each character has its attribute byte XOR'd with the
  1535.       corresponding byte in the attribute table.  If the attribute is 15,
  1536.       15 is XOR'd with Table[15]
  1537. --------B-1587-------------------------------
  1538. INT 15 - SYSTEM - COPY EXTENDED MEMORY
  1539.     AH = 87h
  1540.     CX = number of words to copy (max 8000h)
  1541.     ES:SI -> global descriptor table (see #0375)
  1542. Return: CF set on error
  1543.     CF clear if successful
  1544.     AH = status (see #0374)
  1545. Notes:    copy is done in protected mode with interrupts disabled by the default
  1546.       BIOS handler; many 386 memory managers perform the copy with
  1547.       interrupts enabled
  1548.     this function is incompatible with the OS/2 compatibility box
  1549. SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
  1550.  
  1551. (Table 0374)
  1552. Values for extended-memory copy status:
  1553.  00h    source copied into destination
  1554.  01h    parity error
  1555.  02h    interrupt error
  1556.  03h    address line 20 gating failed
  1557.  80h    invalid command (PC,PCjr)
  1558.  86h    unsupported function (XT,PS30)
  1559.  
  1560. Format of global descriptor table:
  1561. Offset    Size    Description    (Table 0375)
  1562.  00h 16 BYTEs    zeros (used by BIOS)
  1563.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  1564.  12h  3 BYTEs    24-bit linear source address, low byte first
  1565.  15h    BYTE    source segment access rights (93h)
  1566.  16h    WORD    zero
  1567.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  1568.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  1569.  1Dh    BYTE    destination segment access rights (93h)
  1570.  1Eh 18 BYTEs    zeros (used by BIOS)
  1571. --------b-1587------------------------------------
  1572. INT 15 - HUNTER 16 - SET INT 72h VECTOR
  1573.     AH = 87h
  1574.     DS:DX = new service routine
  1575. Desc:    set the INT 72h vector which is called in 2 cases:
  1576.       - when the machine is about to turn off or reboot, INT 72h is called
  1577.         with AH=0
  1578.       - when the machine is powering up INT 72h is called with AH=01h
  1579. Note:    the actual INT 72h vector must also be changed with INT 21/AH=25h
  1580. --------B-1588-------------------------------
  1581. INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
  1582.     AH = 88h
  1583. Return: CF clear if successful
  1584.         AX = number of contiguous KB starting at absolute address 100000h
  1585.     CF set on error
  1586.         AH = status
  1587.         80h invalid command (PC,PCjr)
  1588.         86h unsupported function (XT,PS30)
  1589. Notes:    TSRs which wish to allocate extended memory to themselves often hook
  1590.       this call, and return a reduced memory size.    They are then free to
  1591.       use the memory between the new and old sizes at will.
  1592.     the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
  1593.       for memory beyond 16MB
  1594.     not all BIOSes correctly return the carry flag, making this call
  1595.       unreliable unless one first checks whether it is supported through
  1596.       a mechanism other than calling the function and testing CF
  1597. SeeAlso: AH=87h,AH=C7h,AX=DA88h
  1598. --------b-1588------------------------------------
  1599. INT 15 - HUNTER 16 - GET POWER UP KEYS
  1600.     AH = 88h
  1601. Return: AH = 00h
  1602.     BX = column
  1603.     CL = row
  1604. SeeAlso: AH=71h
  1605. --------B-1589-------------------------------
  1606. INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
  1607.     AH = 89h
  1608.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  1609.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  1610.     ES:SI -> GDT for protected mode (see #0376)
  1611. Return: CF set on error
  1612.        AH = FFh  error enabling address line 20
  1613.     CF clear if successful
  1614.        AH = 00h
  1615.        in protected mode at specified address
  1616. Notes:    BL and BH must be multiples of 8
  1617.     the protected-mode CS must reference the same memory as the CS this
  1618.       function is called from because execution continues with the address
  1619.       following the interrupt call
  1620. SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
  1621.  
  1622. Format of BIOS switch-to-protected-mode Global Descriptor Table:
  1623. Offset    Size    Description    (Table 0376)
  1624.  00h  8 BYTEs    null descriptor (initialize to zeros)
  1625.  08h  8 BYTEs    GDT descriptor (see #0377)
  1626.  10h  8 BYTEs    IDT descriptor
  1627.  18h  8 BYTEs    DS descriptor
  1628.  20h  8 BYTEs    ES
  1629.  28h  8 BYTEs    SS
  1630.  30h  8 BYTEs    CS
  1631.  38h  8 BYTEs    uninitialized, used to build descriptor for BIOS CS
  1632.  
  1633. Format of segment descriptor table entry:
  1634. Offset    Size    Description    (Table 0377)
  1635.  00h    WORD    segment limit, low word
  1636.  02h  3 BYTEs    segment base address, low 24 bits
  1637.  05h    BYTE    access mode (see #0378)
  1638.  06h    BYTE    386+ extended access mode (see #0379)
  1639.  07h    BYTE    386+ segment base address, high 8 bits
  1640. SeeAlso: #0376,INT 2C/AX=0002h,INT 31/AX=0009h
  1641.  
  1642. Bitfields for segment descriptor table access mode field:
  1643. Bit(s)    Description    (Table 0378)
  1644.  3-0    segment type
  1645.  4    descriptor type (1 = application, 0 = system)
  1646.  6-5    descriptor privilege level
  1647.  7    segment is present in RAM
  1648. SeeAlso: #0377,#0379
  1649.  
  1650. Bitfields for 386+ segment descriptor table extended access mode field:
  1651. Bit(s)    Description    (Table 0379)
  1652.  3-0    high 4 bits of segment limit
  1653.  4    available
  1654.  5    reserved (0)
  1655.  6    default operation size (1 = 32 bits, 0 = 16 bits)
  1656.  7    granularity (1 = 4K, 0 = byte)
  1657. SeeAlso: #0377,#0378,#1346
  1658. --------b-158900----------------------------------
  1659. INT 15 - HUNTER 16 - GET POWER MODE
  1660.     AX = 8900h
  1661. Return: AH = 00h
  1662.     BL = current power mode
  1663.         00h Standard Power Mode (SPM)
  1664.         01h Advanced Power Mode (APM)
  1665. SeeAlso: AX=8901h
  1666. --------b-158901----------------------------------
  1667. INT 15 - HUNTER 16 - SET POWER MODE
  1668.     AX = 8901h
  1669.     BL = new mode
  1670.         00h Standard Power Mode (SPM)
  1671.         01h Advanced Power Mode (APM)
  1672. Return: AH = 00h
  1673. SeeAlso: AX=8900h
  1674. --------b-158A------------------------------------
  1675. INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
  1676.     AH = 8Ah
  1677.     AL = new state of Power Input (00h disabled, nonzero enabled)
  1678.     SI = 1234h
  1679.     DI = 5678h
  1680. Return: AH = status
  1681.         00h success
  1682.         FFh failure
  1683. Desc:    Enable or disable Power Input. When Power Input is disabled the AC
  1684.       adaptor will neither charge the batteries nor supply power to the
  1685.       Hunter 16. Disable Power Input if using Alkaline batteries.
  1686. --------b-158B------------------------------------
  1687. INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
  1688.     AH = 8Bh
  1689.     AL = function
  1690.         00h get
  1691.         Return:    BH = Maximum charging temperature
  1692.                 Temp = -20 + (n * 0.63) degrees Centigrade
  1693.             BL = Minimum charging temperature
  1694.         else set
  1695.         BH = maximum charging temperature (as above)
  1696.         BL = minimum charging temperature (as above)
  1697. Return: AH = status
  1698.         00h success
  1699.         FFh failure
  1700. Desc:    get/set the temperature interval within which the charger should
  1701.       operate
  1702. --------b-158C------------------------------------
  1703. INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
  1704.     AH = 8Ch
  1705.     AL = function
  1706.         00h get
  1707.         Return: BX = which operations disable power save (see #0380)
  1708.         else set
  1709.         BX = which operations should disable power save (see #0380)
  1710. SeeAlso: AH=8Dh
  1711.  
  1712. Bitfields for HUNTER 16 operations disabling power save:
  1713. Bit(s)    Description    (Table 0380)
  1714.  0    INT 10h prevents power save
  1715.  1    INT 13h prevents power save
  1716.  2    INT 14h prevents power save
  1717.  3    INT 15h prevents power save
  1718.  4    INT 1Ah prevents power save
  1719.  5    INT 21h prevents power save
  1720.  6    direct write to video RAM prevents power save
  1721.  7    access to 8250 UART prevents power save
  1722.  8    access to 8253 (Sound) prevents power save
  1723. --------b-158D------------------------------------
  1724. INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
  1725.     AH = 8Dh
  1726.     AL = function
  1727.         00h get
  1728.         Return: AL = Fast Charge state (00h prevented, else allowed)
  1729.         nonzero set
  1730.         BH = Fast Charge state (00h prevent, nonzero allow)
  1731. Return: AH = status
  1732.         00h success
  1733.         FFh failure
  1734. Desc:    control whether Fast Charging (200ma rather than 70ma) is allowed
  1735. SeeAlso: AH=8Ch
  1736. --------B-1590-------------------------------
  1737. INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
  1738.     AH = 90h
  1739.     AL = device type (see #0381)
  1740.     ES:BX -> request block for type codes 80h through BFh
  1741.     CF clear
  1742. Return: CF set if wait time satisfied
  1743.     CF clear if driver must perform wait
  1744.         AH = 00h
  1745. Notes:    type codes are allocated as follows:
  1746.       00-7F non-reentrant devices; OS must arbitrate access
  1747.       80-BF reentrant devices; ES:BX points to a unique control block
  1748.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  1749.     floppy and hard disk BIOS code uses this call to implement a timeout;
  1750.       for device types 00h and 01h, a return of CF set means that the
  1751.       timeout expired before the disk responded.
  1752.     this function should be hooked by a multitasker to allow other tasks
  1753.       to execute while the BIOS is waiting for I/O completion; the default
  1754.       handler merely returns with AH=00h and CF clear
  1755. SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
  1756.  
  1757. (Table 0381)
  1758. Values for device type:
  1759.  00h    disk
  1760.  01h    diskette
  1761.  02h    keyboard
  1762.  03h    PS/2 pointing device
  1763.  21h    waiting for keyboard input (Phoenix BIOS)
  1764.  80h    network
  1765.  FBh    digital sound (Tandy)
  1766.  FCh    disk reset (PS)
  1767.  FDh    diskette motor start
  1768.  FEh    printer
  1769. --------B-1591-------------------------------
  1770. INT 15 - OS HOOK - DEVICE POST (AT,PS)
  1771.     AH = 91h
  1772.     AL = device type (see #0381)
  1773.     ES:BX -> request block for type codes 80h through BFh
  1774.     CF clear
  1775. Return: AH = 00h
  1776. Note:    this function should be hooked by a multitasker to allow other tasks
  1777.       to execute while the BIOS is waiting for I/O completion; the default
  1778.       handler merely returns with AH=00h and CF clear
  1779. SeeAlso: AH=90h
  1780. ----------15A100-----------------------------
  1781. INT 15 U - AMI PCI BIOS - SET ??? FLAG
  1782.     AX = A100h
  1783. Return: AX = 0000h
  1784.     CF clear
  1785.     BX,CX,DI may be destroyed
  1786. Desc:    sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in
  1787.       locations 3Eh and 3Fh
  1788. Notes:    in the examined version of the BIOS, nonzero values in AL cause it to
  1789.       drop through to checking the next possible value of AH, i.e. only
  1790.       subfunction 00h is supported
  1791.     also supported by Dell XPS P90 and IBM PS/PV 6384, which also use
  1792.       AMI BIOSes
  1793. --------n-15BA10-----------------------------
  1794. INT 15 - HP OmniShare - Pen Driver - REPORT PEN CONTROL AREA EVENT
  1795.     AX = BA10h
  1796.     BL = event
  1797.        00h the pen left control areas
  1798.        01h the pen entered the Brightness- area
  1799.        02h the pen entered the Brightness+ area
  1800.        03h the pen entered the Contrast- area
  1801.        04h the pen entered the Contrast+ area
  1802. Return:    CF clear if successfully processed
  1803.     CF set on error (function not supported, ie. not an OmniShare BIOS)
  1804. Note:    The pen driver is responsible for detecting when the pen enters and
  1805.       leaves control areas of the OmniShare tablet, and notifying the BIOS.
  1806.     The BIOS manages the events, including the autorepetition, and sets
  1807.       the status LEDs.
  1808. SeeAlso: AX=BA20h,AX=BA13h
  1809. --------n-15BA11-----------------------------
  1810. INT 15 - HP OmniShare - Pen Driver - SET THE COMMUNICATION LED STATE
  1811.     AX = BA11h
  1812.     BL = new LED state (00h steady, 01h flashing)
  1813. Return:    CF clear if successful
  1814.     CF set on error
  1815. Note:    this function is for use by communication software to give visual
  1816.       feedback of active communications even if the display is in standby
  1817.       mode.
  1818. SeeAlso: AX=BA10h,AX=BA24h
  1819. --------n-15BA12-----------------------------
  1820. INT 15 - HP OmniShare - Pen Driver - STORE PEN BATTERY CHARGE
  1821.     AX = BA12h
  1822.     BL = new battery state (00h good, 01h low charge)
  1823. Return: CF set on error
  1824.     CF clear if successfully stored in CMOS
  1825. Note:    The last report will be displayed by the Power-On Self Test the next
  1826.       time the OmniShare boots.  This allows something meaningful to be
  1827.       reported even if the pen is not detected during the POST.
  1828. SeeAlso: AX=BA13h
  1829. --------n-15BA13-----------------------------
  1830. INT 15 - HP OmniShare - Pen Driver - GET PEN BATTERY CHARGE
  1831.     AX = BA13h
  1832. Return: CF clear if successful
  1833.         BL = pen battery state (00h good, 01h low charge)
  1834.     CF set on error
  1835. Note:    returns the last value set by AX=BA12h.
  1836. SeeAlso: AX=BA12h
  1837. --------p-15BA20-----------------------------
  1838. INT 15 - HP OmniShare - STANDBY.COM - INSTALLATION CHECK
  1839.     AX = BA20h
  1840. Return: CF clear if successful (installed)
  1841.     CF set on error (not installed)
  1842. Notes:    The display controller can enter a standby mode after a given timeout,
  1843.       to conserve power or (for the OmniShare) to increase the life of
  1844.       the backlight.
  1845.     A side effect of standby mode is that the communications LED turns on
  1846.       automatically when the display is in standby mode.  This is done in
  1847.       hardware, and is intended to show that the unit is still on.
  1848. SeeAlso: AX=BA10h,AX=BA20h,AX=BA22h,AX=BA24h,AX=BA26h
  1849. --------p-15BA21-----------------------------
  1850. INT 15 - HP OmniShare - STANDBY.COM - SET STANDBY DURATION
  1851.     AX = BA21h
  1852.     BL = new timeout before standby mode in minutes (01h-0Fh)
  1853.         00h to disable automatic switch to standby mode
  1854. Return:    CF clear if successful
  1855.     CF set on error (function not supported)
  1856. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  1857.       instead of (N*60) seconds as documented.
  1858. SeeAlso: AX=BA20h,AX=BA22h
  1859. --------p-15BA22-----------------------------
  1860. INT 15 - HP OmniShare - STANDBY.COM - GET STANDBY DURATION
  1861.     AX = BA22h
  1862. Return:    CF clear if successful
  1863.        BL = standy duration in minutes (01h-0Fh), or 00h if disabled
  1864.     CF set on error (function not supported)
  1865. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  1866.       instead of (N*60) seconds as documented.
  1867. SeeAlso: AX=BA20h,AX=BA21h
  1868. --------p-15BA23-----------------------------
  1869. INT 15 - HP OmniShare - STANDBY.COM - TURN ON THE SCREEN IMMEDIATELY
  1870.     AX = BA23h
  1871. Return: CF clear if successful
  1872.     CF set on error
  1873. SeeAlso: AX=BA11h,AX=BA20h,AX=BA24h
  1874. --------p-15BA24-----------------------------
  1875. INT 15 - HP OmniShare - STANDBY.COM - TURN OFF THE SCREEN IMMEDIATELY
  1876.     AX = BA24h
  1877. Return: CF clear if successful
  1878.     CF set on error
  1879. Note:    This function is not implemented yet. Reserved for future versions
  1880.       of the OmniShare.
  1881. SeeAlso: AX=BA11h,AX=BA20h,AX=BA23h
  1882. --------p-15BA25-----------------------------
  1883. INT 15 - HP OmniShare - STANDBY.COM - PREPARE FOR UNINSTALL
  1884.     AX = BA25h
  1885. Return: CF clear if successful
  1886.         AX = 25BAh
  1887.         BX = PSP of STANDBY.COM resident portion
  1888.         DX:CX -> previous INT 15 handler
  1889.     CF set on error
  1890. Note:    This function is used internally by the STANDBY.COM /u option, and
  1891.       should not be used by application programs.
  1892. SeeAlso: AX=BA20h
  1893. --------p-15BA26-----------------------------
  1894. INT 15 - HP OmniShare - STANDBY.COM - IS THE DISPLAY IN STANDBY MODE?
  1895.     AX = BA26h
  1896. Return: CF clear if successful
  1897.         AL    = display state (00h active, 01h in standby mode)
  1898.     CF set on error (function not supported)
  1899. SeeAlso: AX=BA20h,AX=BA23h
  1900. --------p-15BA27-----------------------------
  1901. INT 15 - HP OmniShare - STANDBY.COM - RESERVED FUNCTIONS
  1902.     AX = BA27h to BA2Fh
  1903. Desc:    reserved for future use
  1904. --------b-15BC-------------------------------
  1905. INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
  1906.     AH = BCh
  1907. Return: CF clear
  1908.     (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
  1909.     (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
  1910. Note:    this function reads system timer channel 0 twice, then does
  1911.       calculations on the returned values to determine the delay loop
  1912.       counter needed by the BIOS for beeps and floppy timeouts
  1913. SeeAlso: AX=2305h
  1914. --------E-15BF00-----------------------------
  1915. INT 15 - Rational Systems DOS/16M - ???
  1916.     AX = BF00h
  1917.     ???
  1918. Return: ???
  1919. Note:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  1920. SeeAlso: AX=BF02h
  1921. --------E-15BF01-----------------------------
  1922. INT 15 - Rational Systems DOS/16M - ???
  1923.     AX = BF01h
  1924.     ???
  1925. Return: ???
  1926. Notes:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  1927.     called by DOS/4GW
  1928. SeeAlso: AX=BF00h,AX=BF02h
  1929. --------E-15BF02DX0000-----------------------
  1930. INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
  1931.     AX = BF02h
  1932.     DX = 0000h
  1933. Return: DX = nonzero if installed
  1934.         DX:SI -> XBRK structure (see #0382)
  1935. Note:    this function is also supported by DOS/4G
  1936. SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
  1937. SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
  1938.  
  1939. Format of DOS/16M XBRK structure:
  1940. Offset    Size    Description    (Table 0382)
  1941.  00h    DWORD    linear address of first available byte
  1942.  04h    DWORD    linear address of last available byte + 1 ???
  1943.  08h    DWORD    real-mode address of XBRK structure???
  1944.  0Ch    DWORD    ???
  1945.  10h  2 BYTEs    ???
  1946.  12h    WORD    segment of ???
  1947.  14h  8 BYTEs    ???
  1948.  1Ch 512 BYTEs    protected-mode IDT
  1949. 21Ch  N BYTEs    protected-mode GDT
  1950. --------E-15BF03-----------------------------
  1951. INT 15 - Rational Systems DOS/4GW - UNINSTALL???
  1952.     AX = BF03h
  1953.     BX = PSP segment of extender
  1954.     ???
  1955. Return: ???
  1956. Note:    if BX is not the PSP segment of the extender, it passes the call down
  1957.       the INT 15 chain; this allows nested instances of the extender
  1958. SeeAlso: AX=BF06h
  1959. --------E-15BF04-----------------------------
  1960. INT 15 - Rational Systems DOS/4GW - ???
  1961.     AX = BF04h
  1962.     BX = PSP segment of extender
  1963. Return: nothing???
  1964. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  1965.       the INT 15 chain; this allows nested instances of the extender
  1966.     grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
  1967. SeeAlso: INT 2F/AX=1607h/BX=22C0h
  1968. --------E-15BF05-----------------------------
  1969. INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
  1970.     AX = BF05h
  1971.     BX = PSP segment of extender
  1972. Return: nothing???
  1973. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  1974.       the INT 15 chain; this allows nested instances of the extender
  1975.     calls INT 67/AX=DE01h if ???
  1976. --------E-15BF06-----------------------------
  1977. INT 15 - Rational Systems DOS/4GW - ???
  1978.     AX = BF06h
  1979.     BX = PSP segment of extender
  1980.     ???
  1981. Return: ???
  1982. Note:    if BX is not the PSP segment of the extender, it passes the call down
  1983.       the INT 15 chain; this allows nested instances of the extender
  1984. SeeAlso: AX=BF03h
  1985. --------E-15BFDCDX0000-----------------------
  1986. INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
  1987.     AX = BFDCh
  1988.     DX = 0000h
  1989.     SI = 0000h
  1990. Return: DX = nonzero if installed
  1991.         DX:SI -> XBRK structure (see #0382)
  1992. SeeAlso: AX=BF02h
  1993. --------E-15BFDEBX0000-----------------------
  1994. INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
  1995.     AX = BFDEh
  1996.     BX = 0000h
  1997. Return: AX = ??? (0003h)
  1998.     BX = FFFFh
  1999. SeeAlso: AX=BF02h
  2000. --------E-15BFDEBX0001-----------------------
  2001. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
  2002.     AX = BFDEh
  2003.     BX = 0001h
  2004. Return: BX = 0000h (success)
  2005.     CX:DX -> name of process manager executable
  2006. SeeAlso: AX=BFDEh/BX=0000h
  2007. --------E-15BFDEBX0002-----------------------
  2008. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  2009.     AX = BFDEh
  2010.     BX = 0002h
  2011.     CX:DX -> ???
  2012. Return: BX = 0000h (success)
  2013. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
  2014. --------E-15BFDEBX0003-----------------------
  2015. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  2016.     AX = BFDEh
  2017.     BX = 0003h
  2018. Return: BX = 0000h (success)
  2019.     CX:DX -> ???
  2020. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
  2021. --------E-15BFDEBX0004-----------------------
  2022. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  2023.     AX = BFDEh
  2024.     BX = 0004h
  2025.     CL = ???
  2026. Return: BX = 0000h (success)
  2027.     CX:DX -> XBRK structure (see #0382)
  2028. SeeAlso: AX=BFDEh/BX=0000h
  2029. --------E-15BFDEBX0005-----------------------
  2030. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  2031.     AX = BFDEh
  2032.     BX = 0005h
  2033.     CX = new value for ???
  2034. Return: BX = 0000h (success)
  2035.     AX = old value of ???
  2036.     DS:SI -> ??? (if AX nonzero on return)
  2037.     ES:DI -> ??? (if AX zero on return)
  2038. Note:    called by DOS4GW.EXE
  2039. SeeAlso: AX=BFDEh/BX=0000h
  2040. --------E-15BFDEBX0006-----------------------
  2041. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  2042.     AX = BFDEh
  2043.     BX = 0006h
  2044. Return: BX = 0000h (success)
  2045.     AH = interrupt number??? (BEh)
  2046.     CX:DX = ???
  2047. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
  2048. --------E-15BFDEBX0007-----------------------
  2049. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  2050.     AX = BFDEh
  2051.     BX = 0007h
  2052.     CX:DX = ???
  2053. Return: BX = 0000h (success)
  2054. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
  2055. --------E-15BFDEBX0008-----------------------
  2056. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  2057.     AX = BFDEh
  2058.     BX = 0008h
  2059.     CX = segment of ???
  2060.     DS = ???
  2061. Return: BX = status
  2062.         0000h successful
  2063.         AL = ??? (80h or C0h)
  2064.         DX = ??? (0603h) if AL=C0h
  2065.         0001h failed
  2066.         AX = 0000h
  2067. Note:    called by DOS4GW.EXE
  2068. SeeAlso: AX=BFDEh/BX=0000h
  2069. --------E-15BFDEBX0009-----------------------
  2070. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
  2071.     AX = BFDEh
  2072.     BX = 0009h
  2073. Return: BX = 0000h (success)
  2074.     CX:DX -> full pathname to LOAD32.EXP
  2075. SeeAlso: AX=BFDEh/BX=0000h
  2076. --------E-15BFDEBX000A-----------------------
  2077. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
  2078.     AX = BFDEh
  2079.     BX = 000Ah
  2080. Return: BX = 0000h (success)
  2081.     AX = new value of ??? counter
  2082. Notes:    also resets a variety of values if the counter goes negative
  2083.     called by DOS4GW.EXE
  2084. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
  2085. --------E-15BFDEBX000B-----------------------
  2086. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
  2087.     AX = BFDEh
  2088.     BX = 000Bh
  2089. Return: AX = new value of ??? counter
  2090. Note:    called by DOS4GW.EXE
  2091. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
  2092. --------E-15BFDEBX000C-----------------------
  2093. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  2094.     AX = BFDEh
  2095.     BX = 000Ch
  2096.     CL = ???
  2097.         00h
  2098.         nonzero
  2099. Return: ???
  2100. SeeAlso: AX=BFDEh/BX=0000h
  2101. --------E-15BFDEBX000D-----------------------
  2102. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  2103.     AX = BFDEh
  2104.     BX = 000Dh
  2105.     ???
  2106. Return: ???
  2107. SeeAlso: AX=BFDEh/BX=0000h
  2108. --------E-15BFDEBX000E-----------------------
  2109. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  2110.     AX = BFDEh
  2111.     BX = 000Eh
  2112.     DX:CX -> ???
  2113. Return: AX = segment of handle for calling task
  2114.     BX = ??? (probably destroyed)
  2115.     DX:CX -> ???
  2116. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
  2117. --------E-15BFDEBX000F-----------------------
  2118. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  2119.     AX = BFDEh
  2120.     BX = 000Fh
  2121. Return: AX = segment of handle for calling task
  2122.     BX = ??? (probably destroyed)
  2123.     DX:CX -> ???
  2124. Note:    identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
  2125. SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
  2126. --------E-15BFDEBX0010-----------------------
  2127. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
  2128.     AX = BFDEh
  2129.     BX = 0010h
  2130. Return: AX = segment of caller's task handle
  2131.     BX destroyed
  2132. SeeAlso: AX=BFDEh/BX=000Fh
  2133. --------E-15BFDEBX0011-----------------------
  2134. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  2135.     AX = BFDEh
  2136.     BX = 0011h
  2137. Return: CX = code segment of DVDOS4GX.DVR
  2138.     BX = ??? (0004h)
  2139. SeeAlso: AX=BFDEh/BX=0000h
  2140. --------E-15BFDEBX0012-----------------------
  2141. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  2142.     AX = BFDEh
  2143.     BX = 0012h
  2144. Return: DX = code segment of DVDOS4GX.DVR
  2145.     BX = ??? (012Ch)
  2146.     CX = ??? (0006h)
  2147. SeeAlso: AX=BFDEh/BX=0000h
  2148. --------E-15BFDEBX0013-----------------------
  2149. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  2150.     AX = BFDEh
  2151.     BX = 0013h
  2152. Return: DX:CX -> ???
  2153. SeeAlso: AX=BFDEh/BX=000Eh
  2154. --------E-15BFDEBX0014-----------------------
  2155. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
  2156.     AX = BFDEh
  2157.     BX = 0014h
  2158.     CX = index of ??? mailbox
  2159.         (0000h-0004h valid, but no range checking done)
  2160. Return: AX,BX destroyed
  2161. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  2162. --------E-15BFDEBX0015-----------------------
  2163. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
  2164.     AX = BFDEh
  2165.     BX = 0015h
  2166.     CX = index of ??? mailbox
  2167.         (0000h-0004h valid, but no range checking done)
  2168. Return: AX,BX destroyed
  2169. SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
  2170. --------E-15BFDEBX0016-----------------------
  2171. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
  2172.     AX = BFDEh
  2173.     BX = 0016h
  2174.     CX = index of ??? mailbox
  2175.         (0000h-0004h valid, but no range checking done)
  2176. Return: AX = status
  2177.         0000h no one owns mailbox
  2178.         0001h mailbox has an owner
  2179.     BX destroyed
  2180. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  2181. --------E-15BFDEBX0017-----------------------
  2182. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
  2183.     AX = BFDEh
  2184.     BX = 0017h
  2185.     CX = index of ??? mailbox
  2186.         (0000h-0004h valid, but no range checking done)
  2187. Return: AX = segment of mailbox owner's handle
  2188.     BX = segment of caller's task handle
  2189. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
  2190. --------E-15BFDEBXFFFD-----------------------
  2191. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  2192.     AX = BFDEh
  2193.     BX = FFFDh
  2194. Return: CX:DX = ???
  2195. SeeAlso: AX=BFDEh/BX=FFFEh
  2196. --------E-15BFDEBXFFFE-----------------------
  2197. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  2198.     AX = BFDEh
  2199.     BX = FFFEh
  2200.     CX:DX = ???
  2201. SeeAlso: AX=BFDEh/BX=FFFDh
  2202. --------E-15BFDEBXFFFF-----------------------
  2203. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
  2204.     AX = BFDEh
  2205.     BX = FFFFh
  2206. SeeAlso: AX=BFDEh/BX=0000h
  2207. --------B-15C0-------------------------------
  2208. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  2209.     AH = C0h
  2210. Return: CF set if BIOS doesn't support call
  2211.     CF clear on success
  2212.         ES:BX -> ROM table (see #0383)
  2213.     AH = status
  2214.         00h successful
  2215.         86h unsupported function
  2216. Notes:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  2217.     the configuration table is at F000h:E6F5h in 100% compatible BIOSes
  2218.     Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
  2219.       and a model byte at absolute address FE845h (see #0389)
  2220.     Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
  2221.       a product identifier at F000h:00FAh (see #0392)
  2222.     Compaq machines can be identified by the signature string "COMPAQ" at
  2223.       F000h:FFEAh, and is preceded by additional information (see #0390)
  2224.     Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
  2225.       the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
  2226.       first three data bytes (model/submodel/revision) in the returned
  2227.       table
  2228.     Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
  2229.       a laptop information record at F000h:E000h (see #0393)
  2230.     some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
  2231.       past the end of the configuration table
  2232.     the Phoenix 386 BIOS contains a second version and date string
  2233.       (presumably the last modification for that OEM version) beginning at
  2234.       F000h:FFD8h, with each byte doubled (so that both ROM chips contain
  2235.       the complete information)
  2236. SeeAlso: AH=C7h,AH=C9h,AH=D1h
  2237.  
  2238. Format of ROM configuration table:
  2239. Offset    Size    Description    (Table 0383)
  2240.  00h    WORD    number of bytes following
  2241.  02h    BYTE    model (see #0388)
  2242.  03h    BYTE    submodel (see #0388)
  2243.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  2244.  05h    BYTE    feature byte 1 (see #0384)
  2245.  06h    BYTE    feature byte 2 (see #0385)
  2246.  07h    BYTE    feature byte 3 (see #0386)
  2247.  08h    BYTE    feature byte 4 (see #0387)
  2248.  09h    BYTE    feature byte 5:
  2249.         reserved (0) (IBM)
  2250.         ??? (08h) (Phoenix 386 v1.10)
  2251. ---AWARD BIOS---
  2252.  0Ah  N BYTEs    AWARD copyright notice
  2253. ---Phoenix BIOS---
  2254.  0Ah    BYTE    ??? (00h)
  2255.  0Bh    BYTE    major version
  2256.  0Ch    BYTE    minor version (BCD)
  2257.  0Dh  4 BYTEs    ASCIZ string "PTL" (Phoenix Technologies Ltd)
  2258. ---Quadram Quad386---
  2259.  0Ah 17 BYTEs    ASCII signature string "Quadram Quad386XT"
  2260.  
  2261. Bitfields for feature byte 1:
  2262. Bit(s)    Description    (Table 0384)
  2263.  7    DMA channel 3 used by hard disk BIOS
  2264.  6    2nd 8259 installed
  2265.  5    Real-Time Clock installed
  2266.  4    INT 15/AH=4Fh called upon INT 09h
  2267.  3    wait for external event (INT 15/AH=41h) supported
  2268.  2    extended BIOS area allocated (usually at top of RAM)
  2269.  1    bus is Micro Channel instead of ISA
  2270.  0    system has dual bus (Micro Channel + ISA)
  2271. SeeAlso: #0383,#0385
  2272.  
  2273. Bitfields for feature byte 2:
  2274. Bit(s)    Description    (Table 0385)
  2275.  7    reserved
  2276.  6    INT 16/AH=09h (keyboard functionality) supported (see #0445)
  2277.  5    INT 15/AH=C6h (get POS data) supported
  2278.  4    INT 15/AH=C7h (return memory map info) supported
  2279.  3    INT 15/AH=C8h (en/disable CPU functions) supported
  2280.  2    non-8042 keyboard controller
  2281.  1    data streaming supported
  2282.  0    reserved
  2283. SeeAlso: #0383,#0386,AH=C6h,AH=C7h,AH=C8h,INT 16/AH=09h
  2284.  
  2285. Bitfields for feature byte 3:
  2286. Bit(s)    Description    (Table 0386)
  2287.  7-5    reserved
  2288.  4    ??? (set on 1992 PS/1's, N51SX, CL57SX, 35SX?, 40SX?)
  2289.  3    SCSI subsystem supported on system board
  2290.  2    information panel installed
  2291.  1    IML (Initial Machine Load) system
  2292.  0    SCSI supported in IML
  2293. SeeAlso: #0383,#0385,#0386
  2294.  
  2295. Bitfields for feature byte 4:
  2296. Bit(s)    Description    (Table 0387)
  2297.  7    ??? (set on N51SX, CL57SX)
  2298.  6-4    reserved
  2299.  3    ??? (set on some 1992 PS/1's, 35SX, 40SX)
  2300.  2-1    reserved
  2301.  0    ??? (set on N51SX, CL57SX, 57SX)
  2302. SeeAlso: #0383,#0386
  2303.  
  2304. (Table 0388)
  2305. Values for model/submodel/revision:
  2306. Model  Submdl  Rev    BIOS date    System
  2307.  FFh    *    *    04/24/81    PC (original)
  2308.  FFh    *    *    10/19/81    PC (some bugfixes)
  2309.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  2310.  FFh    00h    rev      ???        Tandy 1000SL
  2311.  FFh    01h    rev      ???        Tandy 1000TL
  2312.  FFh    46h    ***      ???        Olivetti M15
  2313.  FEh    *    *    08/16/82    PC XT
  2314.  FEh    *    *    11/08/82    PC XT and Portable
  2315.  FEh    *    *    ../..x..    Toshiba laptops up to ~1987
  2316.                     ("x"=product ID) (see #0394)
  2317.  FEh    43h    ***      ???        Olivetti M240
  2318.  FEh    A6h    ???      ???        Quadram Quad386
  2319.  FDh    *    *    06/01/83    PCjr
  2320.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  2321.  FCh    00h    00h      ???        PC3270/AT
  2322.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  2323.  FCh    00h    > 01h      ???        7531/2 Industrial AT
  2324.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  2325.  FCh    01h    00h    09/17/87    Tandy 3000
  2326.  FCh    01h    00h    ../..x..    Toshiba laptops since ~1988
  2327.                     ("x"=product ID) (see #0394)
  2328.  FCh    01h    00h    03/08/93    Compaq DESKPRO/i
  2329.  FCh    01h    00h     various    Compaq DESKPRO, SystemPro, ProSignia
  2330.  FCh    01h    00h    07/20/93    Zenith Z-Lite 425L
  2331.  FCh    01h    00h    04/09/90    AMI BIOS
  2332.  FCh    01h    20h    06/10/92    AST
  2333.  FCh    01h    30h      ???        Tandy 3000NL
  2334.  FCh    01h    ???      ???        Compaq 286/386
  2335.  FCh    02h    00h    04/21/86    PC XT-286
  2336.  FCh    02h    00h     various    Compaq LTE Lite
  2337.  FCh    02h    00h    08/05/93    Compaq Contura 486/486c/486cx
  2338.  FCh    02h    00h    08/11/88    SoftWindows 1.0.1 (Power Macintosh)
  2339.  FCh    04h    00h    02/13/87     ** PS/2 Model 50 (10 MHz/1 ws 286)
  2340.  FCh    04h    01h    05/09/87    PS/2 Model 50 (10 Mhz 286, LW-type 32)
  2341.  FCh    04h    02h      ???        PS/2 Model 50
  2342.  FCh    04h    02h    01/28/88    PS/2 Model 50Z (10 Mhz 286, LW-type 33)
  2343.  FCh    04h    03h    04/18/88    PS/2 Model 50Z (10 MHz/0 ws 286)
  2344.  FCh    04h    04h      ???        PS/2 Model 50Z
  2345.  FCh    05h    00h    02/13/87     ** PS/2 Model 60 (10 MHz 286)
  2346.  FCh    06h    00h      ???        IBM 7552-140 "Gearbox"
  2347.  FCh    06h    01h      ???        IBM 7552-540 "Gearbox"
  2348.  FCh    08h    ***      ???        Epson, unknown model
  2349.  FCh    08h    00h      ???        PS/2 Model 25/286
  2350.  FCh    09h    00h      ???        PS/2 Model 25 (10 MHz 286)
  2351.  FCh    09h    00h    08/25/88    PS/2 Model 30 286 (10 Mhz, LW-type 37)
  2352.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  2353.  FCh    09h    02h    06/28/89    PS/2 Model 25 286 (10 Mhz, LW-type 37)
  2354.  FCh    0Bh    00h    12/01/89    PS/1 (LW-Type 44)
  2355.  FCh    0Bh    00h    02/16/90    PS/1 Model 2011 (10 MHz 286)
  2356.  FCh    20h    00h    02/18/93    Compaq ProLinea
  2357.  FCh    30h    ***      ???        Epson, unknown model
  2358.  FCh    31h    ***      ???        Epson, unknown model
  2359.  FCh    33h    ***      ???        Epson, unknown model
  2360.  FCh    42h    ***      ???        Olivetti M280
  2361.  FCh    45h    ***      ???        Olivetti M380 (XP 1, XP3, XP 5)
  2362.  FCh    48h    ***      ???        Olivetti M290
  2363.  FCh    4Fh    ***      ???        Olivetti M250
  2364.  FCh    50h    ***      ???        Olivetti M380 (XP 7)
  2365.  FCh    51h    ***      ???        Olivetti PCS286
  2366.  FCh    52h    ***      ???        Olivetti M300
  2367.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  2368.  FCh    81h    01h      ???        "OEM machine"
  2369.  FCh    82h    01h      ???        "OEM machine"
  2370.  FCh    94h    00h      ???        Zenith 386
  2371.  FBh    00h    01h    01/10/86    PC XT-089, Enh Keyb, 3.5" support
  2372.  FBh    00h    01h    05/13/94    HP 200LX 2MB BIOS 1.01 A D german
  2373.  FBh    00h    02h    05/09/86    PC XT
  2374.  FBh    00h    04h    08/19/93    HP 100LX 1MB BIOS 1.04 A
  2375.  FBh    4Ch    ***      ???        Olivetti M200
  2376.  FAh    00h    00h    09/02/86    PS/2 Model 30 (8 MHz 8086)
  2377.  FAh    00h    01h    12/12/86    PS/2 Model 30
  2378.  FAh    00h    02h    02/05/87    PS/2 Model 30
  2379.  FAh    01h    00h    06/26/87    PS/2 Model 25/25L (8 MHz 8086)
  2380.  FAh    30h    00h      ???        IBM Restaurant Terminal
  2381.  FAh    4Eh    ***      ???        Olivetti M111
  2382.  FAh    FEh    00h      ???        IBM PCradio 9075
  2383.  F9h    00h    00h    09/13/85    PC Convertible
  2384.  F9h    FFh    00h      ???        PC Convertible
  2385.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 (16MHz 386)
  2386.  F8h    00h    00h      ???        PS/2 Model 75 486 (33Mhz 486)
  2387.  F8h    01h    00h    10/07/87    PS/2 Model 80 (20MHz 386)
  2388.  F8h    02h    00h      ???        PS/2 Model 55-5571
  2389.  F8h    04h    00h    01/29/88    PS/2 Model 70 (20 Mhz 386DX,LW-type 33)
  2390.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  2391.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  2392.  F8h    05h    00h      ???        IBM PC 7568
  2393.  F8h    06h    00h      ???        PS/2 Model 55-5571
  2394.  F8h    07h    00h      ???        IBM PC 7561/2
  2395.  F8h    07h    01h      ???        PS/2 Model 55-5551
  2396.  F8h    07h    02h      ???        IBM PC 7561/2
  2397.  F8h    07h    03h      ???        PS/2 Model 55-5551
  2398.  F8h    09h    00h    01/29/88    PS/2 Model 70 16MHz 386DX, type 1 sysbd
  2399.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  2400.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  2401.  F8h    09h    04h    12/15/89    PS/2 Model 70 (16 Mhz 386, LW-type 33)
  2402.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121) typ 2 sys brd
  2403.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  2404.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX (16 MHz 386SX)
  2405.  F8h    0Dh    00h      ???        PS/2 Model 70 25MHz, type 3 system brd
  2406.  F8h    0Dh    00h    06/08/88    PS/2 Model 70 386 25MHz, type 3 sys brd
  2407.  F8h    0Dh    01h    02/20/89    PS/2 Model 70 386 25MHz, type 3 sys brd
  2408.  F8h    0Dh    ???    12/01/89    PS/2 Model 70 486 25Mhz, type 3 sys brd
  2409.  F8h    0Eh    00h      ???        PS/1 486SX
  2410.  F8h    0Fh    00h      ???        PS/1 486DX
  2411.  F8h    10h    00h      ???        PS/2 Model 55-5551
  2412.  F8h    11h    00h    10/01/90    PS/2 Model 90 XP (25 MHz 486)
  2413.  F8h    12h    00h      ???        PS/2 Model 95 XP
  2414.  F8h    13h    00h    10/01/90    PS/2 Model 90 XP (33 MHz 486)
  2415.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9 (25 MHz 486), 95 XP
  2416.  F8h    15h    00h      ???        PS/2 Model 90 XP
  2417.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD / 95XP486 (33MHz 486)
  2418.  F8h    17h    00h      ???        PS/2 Model 90 XP
  2419.  F8h    19h    05h      ???        PS/2 Model 35/35LS or 40 (20 MHz 386SX)
  2420.  F8h    19h    05h    03/15/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  2421.  F8h    19h    06h    04/04/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  2422.  F8h    1Ah    00h      ???        PS/2 Model 95 XP
  2423.  F8h    1Bh    00h    09/29/89    PS/2 Model 70 486 (25 Mhz 386DX)
  2424.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486 (25 MHz 486)
  2425.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121 / 65 SX (16MHz 386SX)
  2426.  F8h    1Eh    00h    02/08/90    PS/2 Model 55LS (16 MHz 386SX)
  2427.  F8h    23h    00h      ???        PS/2 Model L40 SX
  2428.  F8h    23h    01h      ???        PS/2 Model L40 SX (20 MHz 386SX)
  2429.  F8h    23h    02h    02/27/91    PS/2 Model L40 SX (20Mhz386SX,LW-typ37)
  2430.  F8h    25h    00h      ???        PS/2 Model 57 SLC
  2431.  F8h    25h    06h      ???        PS/2 Model M57 (20 MHz 386SLC)
  2432.  F8h    26h    00h      ???        PS/2 Model 57 SX
  2433.  F8h    26h    01h      ???        PS/2 Model 57 (20 MHz 386SX)
  2434.  F8h    26h    02h    07/03/91    PS/2 Model 57 SX (20Mhz 386SX, SCSI)
  2435.  F8h    28h    00h      ???        PS/2 Model 95 XP
  2436.  F8h    29h    00h      ???        PS/2 Model 90 XP
  2437.  F8h    2Ah    00h      ???        PS/2 Model 95 XP (50 MHz 486)
  2438.  F8h    2Bh    00h      ???        PS/2 Model 90 / 90XP486 (50 MHz 486)
  2439.  F8h    2Ch    00h      ???        PS/2 Model 95 XP
  2440.  F8h    2Ch    01h      ???        PS/2 Model 95 (20 MHz 486SX)
  2441.  F8h    2Dh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX)
  2442.  F8h    2Eh    00h      ???        PS/2 Model 95 XP
  2443.  F8h    2Eh    00h      ???        PS/2 Model 95 XP486 (20 Mhz 486SX)
  2444.  F8h    2Eh    01h      ???        PS/2 Model 95 (20 MHz 486SX + 487SX)
  2445.  F8h    2Fh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX + 487SX)
  2446.  F8h    30h    00h      ???        PS/1 Model 2121 (16 MHz 386SX)
  2447.  F8h    33h    00h      ???        PS/2 Model 30-386
  2448.  F8h    34h    00h      ???        PS/2 Model 25-386
  2449.  F8h    36h    00h      ???        PS/2 Model 95 XP
  2450.  F8h    37h    00h      ???        PS/2 Model 90 XP
  2451.  F8h    38h    00h      ???        PS/2 Model 57
  2452.  F8h    39h    00h      ???        PS/2 Model 95 XP
  2453.  F8h    3Fh    00h      ???        PS/2 Model 90 XP
  2454.  F8h    40h    00h      ???        PS/2 Model 95 XP
  2455.  F8h    41h    00h      ???        PS/2 Model 77
  2456.  F8h    45h    00h      ???        PS/2 Model 90 XP (Pentium)
  2457.  F8h    46h    00h      ???        PS/2 Model 95 XP (Pentium)
  2458.  F8h    47h    00h      ???        PS/2 Model 90/95 E (Pentium)
  2459.  F8h    48h    00h      ???        PS/2 Model 85
  2460.  F8h    49h    00h      ???        PS/ValuePoint 325T
  2461.  F8h    4Ah    00h      ???        PS/ValuePoint 425SX
  2462.  F8h    4Bh    00h      ???        PS/ValuePoint 433DX
  2463.  F8h    4Eh    00h      ???        PS/2 Model 295
  2464.  F8h    50h    00h      ???        PS/2 Model P70 (8573) (16 MHz 386)
  2465.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  2466.  F8h    52h    00h      ???        PS/2 Model P75 (33 MHz 486)
  2467.  F8h    56h    00h      ???        PS/2 Model CL57 SX
  2468.  F8h    57h    00h      ???        PS/2 Model 90 XP
  2469.  F8h    58h    00h      ???        PS/2 Model 95 XP
  2470.  F8h    59h    00h      ???        PS/2 Model 90 XP
  2471.  F8h    5Ah    00h      ???        PS/2 Model 95 XP
  2472.  F8h    5Bh    00h      ???        PS/2 Model 90 XP
  2473.  F8h    5Ch    00h      ???        PS/2 Model 95 XP
  2474.  F8h    5Dh    00h      ???        PS/2 Model N51 SLC
  2475.  F8h    5Eh    00h      ???        IBM ThinkPad 700
  2476.  F8h    61h    ***      ???        Olivetti P500
  2477.  F8h    62h    ***      ???        Olivetti P800
  2478.  F8h    80h    00h      ???        PS/2 Model 80 (25 MHz 386)
  2479.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21 (25 Mhz 386)
  2480.  F8h    81h    00h      ???        PS/2 Model 55-5502
  2481.  F8h    87h    00h      ???        PS/2 Model N33SX
  2482.  F8h    88h    00h      ???        PS/2 Model 55-5530T
  2483.  F8h    97h    00h      ???        PS/2 Model 55 Note N23SX
  2484.  F8h    99h    00h      ???        PS/2 Model N51 SX
  2485.  F8h    F2h    30h      ???        Reply Model 32
  2486.  F8h    F6h    30h      ???        Memorex Telex
  2487.  F8h    FDh    00h      ???        IBM Processor Complex (with VPD)
  2488.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX)
  2489.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX)
  2490.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX + 487SX)
  2491.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX + 487SX)
  2492.  E4h    ???    ???      ???        Triumph Adler PC/XT
  2493.  E1h    ???    ???      ???        ??? (checked for by DOS4GW.EXE)
  2494.  E1h    00h    00h      ???        PS/2 Model 55-5530 Laptop
  2495.  D9h    ???    ???      ???        Peacock XT
  2496.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  2497.  30h    ???    ???      ???        Sperry PC
  2498.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  2499.  ???    56h    ???      ???        Olivetti, unknown model
  2500.  ???    74h    ???      ???        Olivetti, unknown model
  2501. Notes:    BIOS dates may vary without changes to the revision code, especially
  2502.       for non-IBM machines
  2503.     * This BIOS call is not implemented in these early versions.
  2504.       Read Model byte at F000h:FFFEh and BIOS date at F000h:FFF5h.
  2505.    ** These BIOS versions require the DASDDRVR.SYS patches.
  2506.   *** These Olivetti and Epson machines store the submodel in the byte at
  2507.     F000h:FFFDh.
  2508. SeeAlso: #0383,#0389
  2509.  
  2510. (Table 0389)
  2511. Values for Dell model byte:
  2512.  02h    Dell 200
  2513.  03h    Dell 300
  2514.  05h    Dell 220
  2515.  06h    Dell 310
  2516.  07h    Dell 325
  2517.  09h    Dell 310A
  2518.  0Ah    Dell 316
  2519.  0Bh    Dell 220E
  2520.  0Ch    Dell 210
  2521.  0Dh    Dell 316SX
  2522.  0Eh    Dell 316LT
  2523.  0Fh    Dell 320LX
  2524.  11h    Dell 425E
  2525. SeeAlso: #0383,#0388
  2526.  
  2527. Format of Compaq product information:
  2528. Address        Size    Description    (Table 0390)
  2529.  F000h:FFE4h    BYTE    product family code (first byte)
  2530.  F000h:FFE4h    BYTE    Point release number
  2531.  F000h:FFE4h    BYTE    ROM version code
  2532.  F000h:FFE4h    BYTE    product family code (second byte)
  2533.  F000h:FFE8h    WORD    BIOS type code
  2534. SeeAlso: #0391,#0393
  2535.  
  2536. Format of Hewlett-Packard ROM ID at F000h:00F8h:
  2537. Offset    Size    Description    (Table 0391)
  2538.  00h  2 BYTEs    signature "HP" (48h 50h)
  2539.  02h  2 BYTEs    00h 00h
  2540.  04h    BYTE    secondary code revision
  2541.  05h    BYTE    primary code revision
  2542.  06h    BYTE    date code, year-1960 (BCD)
  2543.  07h    BYTE    date code, week of year (BCD)
  2544. SeeAlso: #0390,#0392
  2545.  
  2546. Bitfields for Hewlett-Packard product identifier:
  2547. Bit(s)    Description    (Table 0392)
  2548.  4-0    machine code
  2549.     0 original Vectra
  2550.     1 ES/12
  2551.     2 RS/20
  2552.     3 Portable/CS
  2553.     4 ES
  2554.     5 CS
  2555.     6 RS/16
  2556.     other reserved
  2557.  7-5    CPU type
  2558.     0 = 80286
  2559.     1 = 8088
  2560.     2 = 8086
  2561.     3 = 80386
  2562.     other reserved
  2563. SeeAlso: #0391
  2564.  
  2565. Format of Toshiba laptop information:
  2566. Offset    Size    Description    (Table 0393)
  2567.  00h  8 BYTEs    ASCII product number (e.g. "T2200SX ")
  2568.  08h  8 BYTEs    ASCII version number (e.g. "V1.20   ")
  2569.  10h  8 BYTEs    ASCII signature string "TOSHIBA "
  2570.  18h  8 BYTEs    always zero???
  2571.  20h    DWORD    -> built-in BIOS setup program entry point or 0000h:0000h
  2572. Note:    this record is located at F000h:E000h
  2573. SeeAlso: #0390,#0391
  2574.  
  2575. (Table 0394)
  2576. Values for Toshiba product ID:
  2577. model prodID   version      date        product number      /hdd
  2578.  FEh    29h        ../..)..   Toshiba T1000LE
  2579.  FEh    2Ah        ../..*..   Toshiba T1000XE
  2580.  FEh    2Bh        ../..+..   Toshiba T1000SE
  2581.  FEh    2Ch        ../..,..   Toshiba T1000      -
  2582.  FEh    2Dh        ../..-..   Toshiba T1200F     -
  2583.  FEh    2Dh    V4.00    12/26-87   Toshiba T1200H    /20
  2584.  FEh    2Eh        ../.....   Toshiba T1100+
  2585.  FCh    22h        ../.."..   Toshiba T8500
  2586.  FCh    26h        01/15&88   Toshiba T5200     /100
  2587.  FCh    27h        ../..'..   Toshiba T5100
  2588.  FCh    28h        ../..(..   Toshiba T2000
  2589.  FCh    2Ah        12/26*89   Toshiba T1200XE
  2590.  FCh    2Bh        ../..+..   Toshiba T1600
  2591.  FCh    2Ch        ../..,..   Toshiba T3100e
  2592.  FCh    2Dh        ../..-..   Toshiba T3200
  2593.  FCh    2Fh        ../../..   Toshiba T3100
  2594.  FCh    34h        ../..4..   Toshiba T100X
  2595.  FCh    38h        ../..8..   Toshiba T2000SXe
  2596.  FCh    39h    V1.20    09/16991   Toshiba T2200SX   /60
  2597.  FCh    39h    V1.40    10/01992   Toshiba T2200SX   /120 (upgraded)
  2598.  FCh    3Ch    V1.50    01/28<91   Toshiba T2000SX   /40
  2599.  FCh    3Dh        ../..=..   Toshiba T3200SXC
  2600.  FCh    3Eh        ../..>..   Toshiba T3100SX
  2601.  FCh    3Fh        ../..?..   Toshiba T3200SX
  2602.  FCh    40h        ../..@..   Toshiba T4500C
  2603.  FCh    41h        04/05A92   Toshiba T4500     ("T4500SXC" ?)
  2604.  FCh    45h    V3.20    04/14E92   Toshiba T4400SX   ("C" or "SXC" on cover)
  2605.  FCh    45h        01/13E93   Toshiba T4400SXC
  2606.  FCh    46h *        ../..F..   Toshiba T6400
  2607.  FCh    46h *        ../..F..   Toshiba T6400C
  2608.  FCh    5Fh        ../.._..   Toshiba T3300SL
  2609.  FCh    69h        ../..i..   Toshiba T1900C
  2610.  FCh    6Ah        ../..j..   Toshiba T1900
  2611.  FCh    6Dh        ../..m..   Toshiba T1850C
  2612.  FCh    6Eh    V1.00    08/19n92   Toshiba T1850
  2613.  FCh    6Eh        12/25n92   Toshiba T1850
  2614.  FCh    6Fh        07/17o92   Toshiba T1800
  2615.  FCh    7Eh    V1.30    06/17~93   Toshiba T4600C
  2616.  FCh    7Fh        ../..x..   Toshiba T4600
  2617.  FCh    8Ah        ../..x..   Toshiba T6600C
  2618.  FCh    91h        ../..x..   Toshiba T2400CS
  2619.  FCh    91h    V1.20    07/15x94   Toshiba T2400CT
  2620.  FCh    92h        ../..x..   Toshiba T3600CT
  2621.  FCh    96h *        ../..x..   Toshiba T200
  2622.  FCh    96h *        ../..x..   Toshiba T200CS
  2623.  FCh    97h        ../..x..   Toshiba T4800CT
  2624.  FCh    98h *    V1.10    12/22x93   Toshiba T1910     /120 /320
  2625.  FCh    98h *        ../..x..   Toshiba T1910CS
  2626.  FCh    99h        ../..x..   Toshiba T4700CS
  2627.  FCh    9Bh    V2.30    01/31x94   Toshiba T4700CT
  2628.  FCh    9Bh    V2.50    03/22x94   Toshiba T4700CT   /320
  2629.  FCh    9Ch    V1.30    01/11x94   Toshiba T1950CT   /320
  2630.  FCh    9Dh *        ../..x..   Toshiba T1950
  2631.  FCh    9Dh *        ../..x..   Toshiba T1950CS
  2632.  FCh    9Eh *    V1.20    12/25x93   Toshiba T3400     /120
  2633.  FCh    9Eh *    V1.30    03/22x94   Toshiba T3400     /250
  2634.  FCh    9Eh *        ../..x..   Toshiba T3400CT
  2635.  FCh    BAh    V1.30    02/16x95   Toshiba T2150CDS/CDT
  2636.  FCh    BBh    V1.30    01/25x95   Toshiba T2100/CS/CT
  2637.  FCh    BCh ???        ../..x..   Toshiba T2450CT
  2638.  FCh    BEh        ../..x..   Toshiba T4850CT
  2639.  FCh    ???        ../.. ..   Toshiba T1900S
  2640.  FCh    ???        ../.. ..   Toshiba T1900CT
  2641.  FCh    ???        ../.. ..   Toshiba T4900CT
  2642. Note:    BIOS version numbers and dates may vary, esp. due to harddisk and
  2643.       flash BIOS upgrades
  2644.     the 8-bit ASCII graphics character in the "date" column above
  2645.       has been substituted by "x" because it depends on code page
  2646.     [*] These models have monochrome and color versions which can be
  2647.       distinguished with INT 42/AX=7503h; as that call is no longer
  2648.       supported on the T21xx series, use the product number at F000h:E000h
  2649.       instead (see #0393)
  2650. SeeAlso: #0388
  2651. --------B-15C1-------------------------------
  2652. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  2653.     AH = C1h
  2654. Return: CF set on error
  2655.     CF clear if successful
  2656.         ES = segment of data area
  2657. SeeAlso: AH=04h"ABIOS"
  2658. --------M-15C200-----------------------------
  2659. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  2660.     AX = C200h
  2661.     BH = new state
  2662.         00h disabled
  2663.         01h enabled
  2664. Return: CF set on error
  2665.     AH = status (see #0395)
  2666.  
  2667. (Table 0395)
  2668. Values for pointing device function status:
  2669.  00h    successful
  2670.  01h    invalid function
  2671.  02h    invalid input
  2672.  03h    interface error
  2673.  04h    need to resend
  2674.  05h    no device handler installed
  2675. --------M-15C201-----------------------------
  2676. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  2677.     AX = C201h
  2678. Return: CF set on error
  2679.         AH = status (see #0395)
  2680.     CF clear if successful
  2681.         BH = device ID
  2682.         BL = value returned by attached device after reset
  2683.         AAh if device is a mouse
  2684. Note:    after successful completion of this call, the pointing device is set
  2685.       as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
  2686.       scaling 1:1, unchanged data package size
  2687. SeeAlso: INT 33/AX=0000h
  2688. --------M-15C202-----------------------------
  2689. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  2690.     AX = C202h
  2691.     BH = sampling rate
  2692.         00h 10/second
  2693.         01h 20/second
  2694.         02h 40/second
  2695.         03h 60/second
  2696.         04h 80/second
  2697.         05h 100/second
  2698.         06h 200/second
  2699. Return: CF set on error
  2700.         AH = status (see #0395)
  2701. SeeAlso: INT 33/AX=001Ch
  2702. --------M-15C203-----------------------------
  2703. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  2704.     AX = C203h
  2705.     BH = resolution (see #0396)
  2706. Return: CF set on error
  2707.         AH = status (see #0395)
  2708.  
  2709. (Table 0396)
  2710. Values for pointing device resolution:
  2711.  00h    one count per mm
  2712.  01h    two counts per mm
  2713.  02h    four counts per mm
  2714.  03h    eight counts per mm
  2715. --------M-15C204-----------------------------
  2716. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  2717.     AX = C204h
  2718. Return: CF set on error
  2719.         AH = status (see #0395)
  2720.     CF clear if successful
  2721.         BH = device ID
  2722. --------M-15C205-----------------------------
  2723. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  2724.     AX = C205h
  2725.     BH = data package size (1 - 8 bytes)
  2726. Return: CF set on error
  2727.         AH = status (see #0395)
  2728. Note:    the pointing device is set as follows: disabled, 100 Hz sample rate,
  2729.       resolution 4 counts/mm, scaling 1:1
  2730. SeeAlso: AX=C201h
  2731. --------M-15C206-----------------------------
  2732. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
  2733.     AX = C206h
  2734.     BH = subfunction
  2735.         00h return device status
  2736.         Return: BL = pointing device status (see #0397)
  2737.             CL = resolution (see #0396)
  2738.             DL = sample rate, reports per second
  2739.         01h set scaling at 1:1
  2740.         02h set scaling at 2:1
  2741. Return: CF set on error
  2742.         AH = status (see #0395)
  2743.  
  2744. Bitfields for pointing device status:
  2745. Bit(s)    Description    (Table 0397)
  2746.  0    right button pressed
  2747.  1    reserved
  2748.  2    left button pressed
  2749.  3    reserved
  2750.  4    0 if 1:1 scaling, 1 if 2:1 scaling
  2751.  5    device enabled
  2752.  6    0 if stream mode, 1 if remote mode
  2753.  7    reserved
  2754. --------M-15C207-----------------------------
  2755. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  2756.     AX = C207h
  2757.     ES:BX -> FAR user device handler or 0000h:0000h to cancel
  2758. Return: CF set on error
  2759.         AH = status (see #0395)
  2760. Note:    when the subroutine is called, it is passed the following values on
  2761.       the stack; the handler should return with a FAR return without
  2762.       popping the stack:
  2763.         WORD 1: status (see #0398)
  2764.         WORD 2: X data (high byte = 00h)
  2765.         WORD 3: Y data (high byte = 00h)
  2766.         WORD 4: 0000h
  2767. SeeAlso: INT 33/AX=000Ch
  2768.  
  2769. Bitfields for pointing device status:
  2770. Bit(s)    Description    (Table 0398)
  2771.  15-8    reserved (0)
  2772.  7    Y data overflowed
  2773.  6    X data overflowed
  2774.  5    Y data is negative
  2775.  4    X data is negative
  2776.  3    reserved (1)
  2777.  2    reserved (0)
  2778.  1    right button pressed
  2779.  0    left button pressed
  2780. --------B-15C3------------------------------
  2781. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  2782.     AH = C3h
  2783.     AL = function
  2784.         00h disable PS/2 watchdog timer
  2785.         01h enable PS/2 watchdog timer
  2786.         BX = timer counter (0001h-00FFh)
  2787.         02h disable Gearbox system
  2788.         03h enable Gearbox system
  2789. Return: CF set on error
  2790.     CF clear if successful
  2791. Note:    the watchdog timer generates an NMI
  2792. SeeAlso: INT 21/AH=2Bh/CX=6269h/DX=742Dh
  2793. --------B-15C4-------------------------------
  2794. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  2795.     AH = C4h
  2796.     AL = subfunction
  2797.         00h return base POS register address
  2798.         01h enable selected slot for setup
  2799.         BL = slot number (1 to 8)
  2800.         02h disable setup for all slots (enable adapter)
  2801. Return: CF set on error
  2802.     DX = base POS register address (if subfunction 00h)
  2803. SeeAlso: AH=C6h
  2804. --------B-15C5-------------------------------
  2805. INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
  2806.     AH = C5h
  2807.     AL = interrupt being invoked
  2808.         01h INT 19
  2809.         02h INT 14
  2810.         03h INT 16
  2811.         04h INT 40 (floppy INT 13)
  2812.         05h INT 17
  2813.         06h INT 10
  2814.         07h INT 12
  2815.         08h INT 11
  2816.         09h INT 1A
  2817. Return: all registers except AX must be preserved
  2818. Notes:    called as the very first action of the indicated ROM BIOS interrupt
  2819.       handlers on the PS/2 Models 30/286, 50Z, and 95
  2820.     default handler does nothing and returns CF clear for the above
  2821.       subfunctions, CF set and AH=86h for all other subfunctions
  2822.     value of AX passed to the original interrupt handler is pushed on
  2823.       stack immediately prior to call
  2824. --------B-15C6-------------------------------
  2825. INT 15 U - later PS/2 models - GET POS DATA
  2826.     AH = C6h
  2827.     ???
  2828. Return: ???
  2829. Notes:    this function is referenced by name and number in some IBM BIOS manuals
  2830.     IBM reports that "there are a number of problems with this call" and
  2831.       does not recommend its use.
  2832. SeeAlso: AH=C4h
  2833. --------B-15C7-------------------------------
  2834. INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
  2835.     AH = C7h
  2836.     DS:SI -> user supplied memory map table (see #0399)
  2837. Note:    call AH=C0h and examine bit 4 of feature byte 2 to check if this
  2838.       function is supported
  2839. Return: CF set on error, clear if successful
  2840. SeeAlso: AH=C0h,AH=C9h,AH=D1h
  2841.  
  2842. Format of memory-map table structure:
  2843. Offset    Size    Description    (Table 0399)
  2844.  00h    WORD    length of table (excluding this word)
  2845.  02h    DWORD    local memory between 1M and 16M, in 1K blocks
  2846.  06h    DWORD    local memory between 16M and 4G, in 1K blocks
  2847.  0Ah    DWORD    system memory between 1M and 16M, in 1K blocks
  2848.  0Eh    DWORD    system memory between 16M and 4G, in 1K blocks
  2849.  12h    DWORD    cacheable memory between 1M and 16M, in 1K blocks
  2850.  16h    DWORD    cacheable memory between 16M and 4G, in 1K blocks
  2851.  1Ah    DWORD    1K blocks before start of non-system memory between 1M and 16M
  2852.  1Eh    DWORD    1K blocks before start of non-system memory between 16M and 4G
  2853.  22h  2 DWORDs    reserved
  2854. --------B-15C8-------------------------------
  2855. INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
  2856.     AH = C8h
  2857.     AL = function
  2858.         00h disable cache or (90 and 95) disable cache L1
  2859.         01h enable cache or (90 and 95) enable cache L1
  2860.         ---models 90 and 95 only---
  2861.         02h disable cache L2
  2862.         03h enable cache L2
  2863.         04h disable both caches
  2864.         05h enable both caches
  2865.         06h return status of both caches
  2866.         07h-FFh Reserved
  2867. Return: CF set on error
  2868.     CF clear if successful
  2869.         AH = status (see #0400)
  2870.     For subfunction 06h only:
  2871.         BH = status of cache L2
  2872.         00h enabled
  2873.         01h disabled or not installed
  2874.         BL = status of cache L1 (same codes as BH)
  2875. Notes:     supported by at least PS/2 70, 70/486, 80-A21, 90, 95
  2876.     call AH=C0h and examine bit 3 of feature byte 2 to check if this
  2877.       function is supported.
  2878.     on a 486 system, any external caches must be disabled when the
  2879.       on-chip cache (L1) is disabled.
  2880. SeeAlso: AH=C0h
  2881.  
  2882. (Table 0400)
  2883. Values for status:
  2884.  00h    operation successful
  2885.  01h    function choice (in AL) is invalid
  2886.  02h    NVRAM data is invalid
  2887.  03h    cache test error
  2888.  04h    (90 and 95 only) cannot perform operation requested due to state of
  2889.       other cache (see note above)
  2890.  05h    no L2 cache is present
  2891.  09h    CPU in protected mode
  2892. --------B-15C9-------------------------------
  2893. INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
  2894.     AH = C9h
  2895.     AL = 10h (may be required on some non-PS BIOSes)
  2896. Return: CF clear if successful
  2897.         AH = 00h
  2898.         CH = CPU type (see #0401)
  2899.         CL = mask revision (stepping level) (see #0402)
  2900.     CF set on error
  2901.         AH = status (80h,86h = function not supported)
  2902. Notes:    the BIOS must save DX at startup in order to be able to support this
  2903.       call; PS/2 Models 56, 57, 90, and 95 are known to support it
  2904.     the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
  2905. SeeAlso: AX=DA92h
  2906.  
  2907. (Table 0401)
  2908. Values for CPU type:
  2909.  03h    80386DX or clone
  2910.  04h    80486
  2911.  05h    Pentium
  2912.  23h    80386SX or clone
  2913.  33h    Intel i376
  2914.  43h    80386SL or clone
  2915.  A3h    IBM 386SLC
  2916.  A4h    IBM 486SLC
  2917.  
  2918. (Table 0402)
  2919. Values for stepping level:
  2920. ---i376 (type code 33h)---
  2921.  05h    A0
  2922.  08h    B
  2923. ---80386/80386DX (type code 03h)---
  2924.  03h    Intel B1 to B10, Am386DX/DXL step A
  2925.  05h    Intel D0
  2926.  08h    Intel D1/D2/E1, Am386DX/DXL step B
  2927. ---80386SL (type code 43h)---
  2928.  05h    A
  2929.  1xh    B
  2930. ---80386SX (type code 23h)---
  2931.  04h    Intel A0
  2932.  05h    Intel B, Am386SX/SXL step A1
  2933.  08h    Intel C/D1, Am386SX/SXL step B
  2934.  09h    Intel 386CX/386EX/386SXstatic step A
  2935. ---80486DX (type code 04h)---
  2936.  00h    Intel A0/A1
  2937.  01h    Intel B2 to B6
  2938.  02h    Intel C0
  2939.  03h    Intel C1
  2940.  04h    Intel D0
  2941.  10h    Intel cA2/cA3, Cx486SLC step A
  2942.  11h    Intel cB0/cB1
  2943. ---486DX2 (type code 04h)---
  2944.  02h    Am486DX2 (unknown stepping)
  2945.  32h    Intel DX2/Overdrive steps A0 to A2
  2946.  33h    Intel DX2/Overdrive step B1
  2947. ---486SX (type code 04h)---
  2948.  20h    Intel A0
  2949.  22h    Intel B0
  2950.  27h    Intel cA0
  2951.  28h    Intel cB0
  2952. ---486SL (type code 04h)---
  2953.  40h    Intel A
  2954. ---IntelSX2 (type code 04h)---
  2955.  5xh    Intel A
  2956. ---IntelDX4 (type code 04h)---
  2957.  8xh    Intel A
  2958. ---487SX (type code 04h)---
  2959.  20h    Intel A0
  2960.  21h    Intel B0
  2961. ---Pentium (type code 05h)---
  2962.  0xh    Intel P5 steps Ax (1993)
  2963.  1xh    Intel P5 steps Bx (1994)
  2964.  2xh    Intel P54C step A
  2965. ---RapidCAD (type code 03h)---
  2966.  40h    A
  2967. --------B-15CA-------------------------------
  2968. INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
  2969.     AH = CAh
  2970.     AL = function
  2971.         00h read CMOS
  2972.         Return: CL = value of CMOS location
  2973.         01h write CMOS
  2974.         CL = new value for CMOS location
  2975.     BL = CMOS location (0Eh-3Fh)
  2976. Return: CF clear if successful
  2977.         AH = 00h
  2978.     CF set on error
  2979.         AH = error code (see #0403)
  2980. Note:    writes do not update the CMOS checksum
  2981.  
  2982. (Table 0403)
  2983. Values for CMOS read/write error code:
  2984.  01h    CMOS lost power or has invalid checksum
  2985.  03h    specified location out of range (too high)
  2986.  04h    specified location out of range (too low)
  2987.  80h    unsupported function (PC)
  2988.  86h    unsupported function (XT)
  2989. --------B-15CB-------------------------------
  2990. INT 15 U - PS/2 Model 95 - RESERVED
  2991.     AH = CBh
  2992.     ???
  2993. Return: ???
  2994. --------B-15CC-------------------------------
  2995. INT 15 U - PS/2 Model 95 - RESERVED
  2996.     AH = CCh
  2997.     ???
  2998. Return: ???
  2999. --------V-15CCCC-----------------------------
  3000. INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
  3001.     AX = CCCCh
  3002. Return: AX = ABCDh if installed
  3003. Note:    supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
  3004.       older versions have the string "VCHAD" 2 bytes after the address of
  3005.       the INT 15 handler which is hooked by all versions for the SysReq key
  3006. SeeAlso: AH=85h
  3007. --------B-15CD-------------------------------
  3008. INT 15 U - PS/2 Model 95 - RESERVED
  3009.     AH = CDh
  3010.     ???
  3011. Return: ???
  3012. --------B-15CE--BL00-------------------------
  3013. INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
  3014.     AH = CEh
  3015.     BL = 00h-0Eh arbitration level to be allocated
  3016.          0Fh-FFh reserved
  3017.     AL = option byte
  3018.         bit 7-1: reserved (0)
  3019.         bit 0: 0 = need DMA channel for arbitration level requested
  3020.            1 = no channel required for arbitration level
  3021. Return: CF set on error
  3022.         AH = status (80h,86h = function not supported)
  3023.     CF clear on success
  3024.         AL = channel number
  3025.         00h-07h channel number allocated for the arbiration level
  3026.         08h-FEh reserved
  3027.         FFh    no channel requested for arbitration level
  3028.         AH = status (see #0404)
  3029. Notes:     arbitration level 00h has the highest priority, 0Eh the lowest
  3030.      to perform a DMA transfer operation, be sure to call this function
  3031.        first, and call AH=CFh afterward.  Failure to use this function
  3032.        can cause unpredictable results.
  3033. SeeAlso: AH=CFh
  3034.  
  3035. (Table 0404)
  3036. Values for DMA arbitration status:
  3037.  00h    success
  3038.  01h    arbitration level not available
  3039.  02h    channel not available
  3040.  03h    invalid arbitration level passed
  3041. --------B-15CF-------------------------------
  3042. INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
  3043.     AH = CFh
  3044.     BL = arbitration level to be deallocated (see AH=CEh)
  3045. Return: CF set on error
  3046.         AH = status (80h,86h = function not supported)
  3047.     CF clear on success
  3048.         AH = status
  3049.         00h success
  3050.         04h arbitration level not allocated
  3051. SeeAlso: AH=CEh
  3052. --------B-15D0-------------------------------
  3053. INT 15 - later PS/2s - RESERVED
  3054.     AH = D0h
  3055.     ???
  3056. Return: ???
  3057. --------B-15D100DX0000-----------------------
  3058. INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
  3059.     AX = D100h
  3060.     DX = 0000h (reserved, must set to 0)
  3061. Return: BL = size of one DDT entry, in bytes
  3062.     CX = number of DDT entries
  3063.     AH = return code (see #0405)
  3064.     CF set on error
  3065.     CF clear on success
  3066. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
  3067.  
  3068. (Table 0405)
  3069. Values for return code:
  3070.  00h    success
  3071.  01h    requested DDT entry not found
  3072.  02h    DDT data not valid
  3073.  86h    function not supported
  3074. --------B-15D101-----------------------------
  3075. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
  3076.     AX = D101h
  3077.     BX = number of requested entry (starting with 1)
  3078.     DX = 0000h (reserved, must be set to 0)
  3079.     ES:DI -> buffer to contain DDT entry (see #0406)
  3080. Return:    AH = return code (see #0405)
  3081.     CF set on error
  3082.     CF clear on success
  3083.         ES:DI buffer filled with DDT entry
  3084. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
  3085.  
  3086. Format of Device Descriptor Table (DDT):
  3087. Offset    Size    Description    (Table 0406)
  3088.  00h    BYTE    bits 7-4: reserved (set to 0)
  3089.         bits 3-0: slot of device (0 = system board)
  3090.  01h    BYTE    bits 7-4: second interrupt for this device (0 = none)
  3091.         bits 3-0: first interrupt for this device (0 = none)
  3092.  02h    BYTE    bits 7-4: second arbitration level for this device
  3093.         bits 3-0: first arbitration level for this device
  3094.  03h    WORD    DDT indicators (see #0407)
  3095.  05h    BYTE    reserved (0)
  3096.  06h    WORD    device ID (0 = none)
  3097.  08h    WORD    starting address of first  I/O block (0 = none)
  3098.  0Ah    WORD    starting address of second I/O block (0 = none)
  3099.  OCh    WORD    starting address of third  I/O block (0 = none)
  3100.  OEh    DWORD    start of first non-system memory block (0 = none)
  3101.  12h    WORD    size of first non-system memory block (in kilobytes)
  3102.  14h    DWORD    start of second non-system memory block (0 = none)
  3103.  18h    WORD    size of second non-system memory block (in kilobytes)
  3104.  1Ah    BYTE    implementation identifier of the device
  3105.  1Bh    BYTE    implementation revision level of the device
  3106. Note:    I/O block addresses and non-system memory addresses are listed in
  3107.       ascending order in each DDT entry.
  3108.  
  3109. Bitfields for DDT indicators:
  3110. Bit(s)    Description    (Table 0407)
  3111.  15    reserved (0)
  3112.  14    second arbitration level exists
  3113.  13    first arbitration level exists
  3114.  12    serial interface is RS-422
  3115.  11    not address limited
  3116.  10    DMA channel used
  3117.  9    second arbitration level can be shared
  3118.  8    first arbitration level can be shared
  3119.  7-0    reserved (0)
  3120. --------B-15D102-----------------------------
  3121. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
  3122.     AX = D102h
  3123.     BX = entry number at which to start searching
  3124.     CX = requested I/O port address
  3125.     DX = 0000h (reserved, must be set to 0)
  3126.     ES:DI -> buffer to contain DDT entry (see #0406)
  3127. Return:    AH = return code (see #0405)
  3128.     BX = DDT entry number where I/O port was found, or total entries
  3129.          plus 1 if port was not found.
  3130.     CF set on error
  3131.     CF clear on success
  3132.         ES:DI buffer filled with DDT entry
  3133. Desc:    the DDT is searched from the specified entry for the I/O port in CX,
  3134.       and the first entry in which it is found is returned
  3135. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
  3136. --------B-15D103DX0000-----------------------
  3137. INT 15 - later PS/2s - RETURN ENTIRE DDT
  3138.     AX = D103h
  3139.     DX = 0000h (reserved, must be set to 0)
  3140.     ES:DI -> buffer to contain DDT entry (see #0406)
  3141. Return:    AH = return code (see #0405)
  3142.     CF set on error
  3143.     CF clear on success
  3144.         ES:DI buffer filled with DDT entry
  3145. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
  3146. --------B-15D104-----------------------------
  3147. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
  3148.     AX = D104h
  3149.     BX = entry number at which to start searching
  3150.     CX = requested device ID
  3151.     DX = 0000h (reserved, must be set to 0)
  3152.     ES:DI -> buffer to contain DDT entry (see #0406)
  3153. Return:    AH = return code (see #0405)
  3154.     BX = DDT entry number where device ID was found, or total entries
  3155.           plus 1 if port was not found.
  3156.     CF set on error
  3157.     CF clear on success
  3158.         ES:DI buffer filled with DDT entry
  3159. Desc:    the DDT is searched from the specified entry for the device ID in CX,
  3160.       and the first entry in which it is found is returned.
  3161. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
  3162. --------B-15D2-------------------------------
  3163. INT 15 - later PS/2s - RESERVED
  3164.     AH = D2h
  3165.     ???
  3166. Return: ???
  3167. --------B-15D3-------------------------------
  3168. INT 15 - later PS/2s - RESERVED
  3169.     AH = D3h
  3170.     ???
  3171. Return: ???
  3172. --------B-15D4-------------------------------
  3173. INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
  3174.     AH = D4h
  3175.     DL = logical fixed disk drive number
  3176. Return:    AH = return code (see #0408)
  3177.     CF set on error
  3178.     CF clear on success
  3179.         AL = physical fixed disk drive number
  3180.  
  3181. (Table 0408)
  3182. Values for return code:
  3183.  00h    success
  3184.  01h    specified logical drive number is invalid
  3185.  80h    function not supported (on PCjr and PC)
  3186.  86h    function not supported
  3187. --------B-15D5-------------------------------
  3188. INT 15 - later PS/2s - RESERVED
  3189.     AH = D5h
  3190.     ???
  3191. Return: ???
  3192. --------B-15D600BL00-------------------------
  3193. INT 15 - later PS/2s - READ BOOT DEVICE ID
  3194.     AX = D600h
  3195.     BL = 00h
  3196.     DX = device ID
  3197. Return: CF clear if successful
  3198.         AH = 00h
  3199.     CF set on error
  3200.         AH = status (86h for function not supported)
  3201. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
  3202. --------B-15D600BL01-------------------------
  3203. INT 15 - later PS/2s - WRITE BOOT DEVICE ID
  3204.     AX = D600h
  3205.     BL = 01h
  3206.     DX = device ID
  3207. Return: CF clear on success
  3208.         AH = 00h
  3209.     CF set on error
  3210.         AH = status (86h for function not supported)
  3211. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
  3212. --------B-15D601BL00-------------------------
  3213. INT 15 - later PS/2s - READ BOOT DEVICE KEY
  3214.     AX = D601h
  3215.     BL = 00h
  3216.     DX = device ID
  3217. Return: CF clear on success
  3218.         AH = 00h
  3219.     CF set on error
  3220.         AH = status (86h for function not supported)
  3221. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
  3222. --------B-15D601BL01-------------------------
  3223. INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
  3224.     AX = D601h
  3225.     BL = 01h
  3226.     DX = device ID
  3227. Return: CF clear on success
  3228.         AH = 00h
  3229.     CF set on error
  3230.         AH = status (86h for function not supported)
  3231. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
  3232. --------B-15D602-----------------------------
  3233. INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
  3234.     AX = D602h
  3235. Return: CF clear on success
  3236.         AH = 00h
  3237.         AL = status of reference-partition boot request
  3238.         00h boot not requested
  3239.         01h boot requested
  3240.     CF set on error
  3241.         AH = status (86h for function not supported)
  3242. SeeAlso: AX=D601h/BL=00h
  3243. --------X-15D800-----------------------------
  3244. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  3245.     AX = D800h
  3246.     CL = slot number (including embedded and virtual)
  3247. Return: CF clear if successful
  3248.         AH = 00h
  3249.     CF set on error
  3250.         AH = error code (80h,82h,83h,86h,87h)(see #0410)
  3251.     AL = bit flags (see #0409)
  3252.     BH = major revision level of configuration utility
  3253.     BL = minor revision level of configuration utility
  3254.     CX = checksum of configuration file
  3255.     DH = number of device functions
  3256.     DL = combined function information byte
  3257.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  3258. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  3259. SeeAlso: AX=D801h,AX=D804h
  3260.  
  3261. Bitfields for EISA AL bit flags:
  3262. Bit(s)    Description    (Table 0409)
  3263.  7    set if duplicate IDs
  3264.  6    set if product ID readable
  3265.  4,5    slot type (00=expansion, 01=embedded, 10=virtual device)
  3266.  0-3    duplicate ID number if bit 7 set
  3267.  
  3268. (Table 0410)
  3269. Values for EISA error code:
  3270.  80h    invalid slot number
  3271.  81h    invalid function number
  3272.  82h    EISA CMOS corrupt
  3273.  83h    empty slot
  3274.  84h    error clearing CMOS
  3275.  85h    EISA CMOS is full
  3276.  86h    invalid BIOS-FW function call
  3277.  87h    invalid system configuration
  3278.  88h    config utility version not supported
  3279. --------X-15D801-----------------------------
  3280. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  3281.     AX = D801h
  3282.     CH = function number to read
  3283.     CL = slot number (including embedded and virtual)
  3284.     DS:SI -> 320-byte buffer for standard configuration data block
  3285. Return: CF clear if successful
  3286.         AH = 00h
  3287.         DS:SI buffer filled
  3288.     CF set on error
  3289.         AH = error code (80h-83h,86h,87h) (see #0410)
  3290.     BX destroyed
  3291. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  3292. --------X-15D802-----------------------------
  3293. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  3294.     AX = D802h
  3295.     BH = EISA config utility major revision level
  3296.     BL = EISA config utility minor revision level
  3297. Return: CF clear if successful
  3298.         AH = 00h
  3299.     CF set on error
  3300.         AH = error code (84h,86h,88h) (see #0410)
  3301. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  3302. SeeAlso: AX=D803h
  3303. --------X-15D803-----------------------------
  3304. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  3305.     AX = D803h
  3306.     CX = length of data structure (0000h = empty slot)
  3307.         includes two bytes for config file checksum
  3308.     DS:SI -> configuration data
  3309. Return: CF clear if successful
  3310.         AH = 00h
  3311.     CF set on error
  3312.         AH = error code (84h-86h) (see #0410)
  3313. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  3314. SeeAlso: AX=D802h
  3315. --------X-15D804-----------------------------
  3316. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  3317.     AX = D804h
  3318.     CL = slot number (including embedded and virtual)
  3319. Return: CF clear if successful
  3320.         AH = 00h
  3321.     CF set on error
  3322.         AH = error code (80h,83h,86h) (see #0410)
  3323.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  3324. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  3325. SeeAlso: AX=D800h
  3326. --------b-15D820-----------------------------
  3327. INT 15 - Compaq LTE Lite - GET ???
  3328.     AX = D820h
  3329.     DS:SI -> 17-byte buffer for ???
  3330. Return: DS:SI buffer filled (first byte is length of remaining data, unless
  3331.       it is greater than 10h, in which case the second byte is 00h and no
  3332.       other data is returned)
  3333. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  3334.       486/486c/486cx and recent DESKPRO/i ROMs
  3335. SeeAlso: AX=D821h
  3336. --------b-15D821-----------------------------
  3337. INT 15 - Compaq LTE Lite - SET ???
  3338.     AX = D821h
  3339.     DS:SI -> counted string (should not be more than 16 bytes)
  3340. Return: AH = 00h
  3341. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  3342.       486/486c/486cx and recent DESKPRO/i ROMs
  3343. SeeAlso: AX=D820h
  3344. --------b-15D822BL00-------------------------
  3345. INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
  3346.     AX = D822h
  3347.     BL = 00h
  3348.     CX = size of buffer or 0000h to retrieve required buffer size
  3349.     DS:SI -> buffer for ??? (if CX nonzero)
  3350. Return: CF clear if successful
  3351.         AH = 00h
  3352.         DH = 08h
  3353.         CX = required buffer size to retrieve all data (if CX=0 on entry)
  3354.         DS:SI buffer filled (if CX nonzero on entry)
  3355.     CF set on error (BL nonzero)
  3356.         AH = 86h
  3357. --------b-15D823-----------------------------
  3358. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  3359.     AX = D823h
  3360.     BL = subfunction??? (00h or 80h)
  3361.     BH = ???
  3362.     DS:SI -> buffer for ??? (see #0411)
  3363. Return: CF clear if successful
  3364.         AH = 00h
  3365.         DH = 08h
  3366.         DL = ???
  3367.     CF set on error
  3368.         AH = error code
  3369.         86h BL neither 00h nor 80h
  3370.         87h ???
  3371.  
  3372. Format of Compaq EISA buffer:
  3373. Offset    Size    Description    (Table 0411)
  3374.  00h    BYTE    ???
  3375.  01h    WORD    ???
  3376.  03h    BYTE    ???
  3377.  04h    WORD    ???
  3378.  06h    WORD    ???
  3379.     ???
  3380. ----------15D824-----------------------------
  3381. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  3382.     AX = D824h
  3383.     CX = ???
  3384.     DS:SI -> ASCIZ string containing ???
  3385. Return: CF clear if successful
  3386.         AH = 00h
  3387.         CX = ???
  3388.     CF set on error
  3389.         AH = error code
  3390.         87h ??? failed
  3391.         88h ???
  3392. Note:    these functions are only available if ??? from keyboard controller
  3393.       command C0h
  3394. ----------15D825-----------------------------
  3395. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  3396.     AX = D825h
  3397.     CX = ???
  3398.     SI = ???
  3399.     DI = ???
  3400.     ???
  3401. Return: CF clear if successful
  3402.         AH = 00h
  3403.         CX = ???
  3404.     CF set on error
  3405.         AH = error code
  3406.         87h ??? failed
  3407.         88h ???
  3408.             CX = ???
  3409. Note:    these functions are only available if ??? from keyboard controller
  3410.       command C0h
  3411. ----------15D826-----------------------------
  3412. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  3413.     AX = D826h
  3414.     BX = ???
  3415.     CX = size of buffer in bytes
  3416.     DS:SI -> buffer for ???
  3417.     ???
  3418. Return: CF clear if successful
  3419.         AH = 00h
  3420.         CX = ???
  3421.     CF set on error
  3422.         AH = error code
  3423.         87h ??? failed
  3424.         88h ???
  3425. Note:    these functions are only available if ??? from keyboard controller
  3426.       command C0h
  3427. --------X-15D8-------------------------------
  3428. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  3429.     AH = D8h
  3430.     AL = 80h to 84h
  3431.     other registers as appropriate for AL=00h to 04h
  3432. Return: as appropriate for AL=00h to 04h
  3433. Note:    these functions are identical to AX=D800h to D804h, except that they
  3434.       should be called when using 32-bit CS addressing mode (pointers use
  3435.       ESI rather than SI as offset) instead of 16-bit addressing mode
  3436. SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
  3437. --------b-15D8-------------------------------
  3438. INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
  3439.     AH = D8h
  3440.     AL = A0h to A6h
  3441.     other registers as appropriate for AL=20h to 26h
  3442. Return: as appropriate for AL=20h to 26h
  3443. Note:    these functions are identical to AX=D820h to D826h, except that they
  3444.       should be called when using 32-bit CS addressing mode
  3445. ----------15DA-------------------------------
  3446. INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
  3447.     AH = DAh
  3448.     AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h)
  3449.     other registers vary by function
  3450. Return: CF clear if successful
  3451.         varies by function
  3452.     CF set on error
  3453.         AH = error code (86h unsupported [sub]function)
  3454. Note:    functions not listed above always return CF set and AH=86h; in the
  3455.       examined BIOS, functions 02h-04h,06h-07h,89h-8Bh, and 8Dh also
  3456.       always return CF set and AH=86h
  3457. SeeAlso: AX=DA00h,AX=DA01h,AX=DA88h,AX=DA99h,AX=DB00h
  3458. --------b-15DA00-----------------------------
  3459. INT 15 U - AMI PCI BIOS - ???
  3460.     AX = DA00h
  3461.     CL = subfunction
  3462.         00h ???
  3463.         01h ???
  3464.         02h get ???
  3465.     ???
  3466. Return: CF clear if successful
  3467.         ???
  3468.     CF set on error
  3469.         AH = error code (86h unsupported subfunction)
  3470. Note:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h always return
  3471.       failure
  3472. SeeAlso: AX=DA01h
  3473. --------b-15DA01-----------------------------
  3474. INT 15 U - AMI PCI BIOS - CPU SPEED CONTROL
  3475.     AX = DA01h
  3476.     CL = subfunction (00h-02h)
  3477.         00h set low CPU speed
  3478.         01h set high CPU speed
  3479.         02h get current CPU speed
  3480. Return: CF clear if successful
  3481.         AH = current/new CPU speed (00h low, 01h high)
  3482.         AL = ??? (00h)
  3483.     CF set on error
  3484.         AH = error code (86h unsupported subfunction)
  3485. Notes:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h are NOPs in both
  3486.       protected and V86 modes due to a test of MSW bit 0
  3487.     setting the CPU speed also generates the same audible signals generated
  3488.       when manually switching speeds with Ctrl-Alt-Gray- and Ctrl-Alt-Gray+
  3489. BUG:    the BIOS apparently intends to return CF set if ???, but fails to use
  3490.       a different exit path in that case, resulting in CF clear
  3491. ----------15DA05-----------------------------
  3492. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  3493.     AX = DA05h
  3494.     ES:SI -> 8-byte buffer for ??? and BIOS revision strings
  3495. Return: CF clear
  3496.     ES:SI buffer filled
  3497.     AL = 00h
  3498.     CX = ??? (0000h)
  3499. Notes:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  3500.       string is "AX1 "
  3501. SeeAlso: AX=DA15h,AX=DB04h
  3502. ----------15DA08-----------------------------
  3503. INT 15 U - AMI PCI BIOS - ???
  3504.     AX = DA08h
  3505.     ???
  3506. Return: CF clear if successful
  3507.         ???
  3508.     CF set on error
  3509.         AH = error code (86h unsupported subfunction)
  3510. Note:    in the examined v1.00.05.AX1 BIOS, this call always returns failure
  3511. ----------15DA12-----------------------------
  3512. INT 15 U - AMI PCI BIOS - v1.00.05.AX1 - ???
  3513.     AX = DA12h
  3514.     CL = subfunction
  3515.         00h ???
  3516.         01h    ???
  3517.         02h get ???
  3518.         03h ???
  3519.         04h ???
  3520.     ???
  3521. Return: CF clear if successful
  3522.         ???
  3523.     CF set on error
  3524.         AH = error code (86h unsupported subfunction)
  3525. Desc:    ??? performs various manipulations on system chipset registers
  3526. Notes:    subfunctions 00h and 01h are NOPs in protected and V86 modes due to
  3527.       a test of MSW bit 0
  3528.     subfunctions 00h-02h always return success
  3529. ----------15DA14-----------------------------
  3530. INT 15 U - AMI PCI BIOS - GET/SET ???
  3531.     AX = DA14h
  3532.     CL = subfunction
  3533.         00h read
  3534.         01h write
  3535.         DH = new value for ??? (00h-02h)
  3536.     DL = index of ??? (00h-03h, but not range-checked)
  3537.     ???
  3538. Return: CF clear if successful
  3539.         DH = current value of ??? if reading
  3540.     CF set on error
  3541.         AH = error code (86h unsupported subfunction)
  3542. Note:    the values for indexes 00h and 01h are stored in CMOS RAM location 19h,
  3543.       and the values for 02h and 03h are stored in location 36h
  3544. BUG:    the v1.00.05.AX1 BIOS range-checks DH on subfunction 00h instead of
  3545.       subfunction 01h, even though DH is never used by subfunction 00h
  3546. ----------15DA15-----------------------------
  3547. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  3548.     AX = DA15h
  3549.     ES:DI -> 8-byte buffer for ??? and BIOS revision strings
  3550. Return: CF clear
  3551.     ES:DI buffer filled
  3552.     AL = 00h
  3553. Note:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  3554.       string is "AX1 "
  3555. SeeAlso: AX=DA05h,AX=DB04h
  3556. ----------15DA19-----------------------------
  3557. INT 15 U - AMI PCI BIOS - GET/SET ???
  3558.     AX = DA19h
  3559.     CL = subfunction
  3560.         00h get first ???
  3561.         01h get second ???
  3562.         02h set first ???
  3563.         BX = ???
  3564.         DX = ???
  3565.         03h set second ???
  3566.         BX = ???
  3567.         DX = ???
  3568. Return: CF clear if successful
  3569.         AX = 0000h
  3570.         BX,DX = ??? (subfunctions 00h and 01h only)
  3571.     CF set on error
  3572.         AH = error code (86h unsupported subfunction)
  3573. Note:    the first ??? is stored in CMOS RAM locations 1Bh-1Eh, the second in
  3574.       locations 1Fh-22h in the v1.00.05.AX1 BIOS
  3575. ----------15DA88-----------------------------
  3576. INT 15 U - AMI PCI BIOS - GET EXTENDED MEMORY SIZE
  3577.     AX = DA88h
  3578. Return: CF clear (successful)
  3579.     AX = 0000h
  3580.     CL:BX = extended memory size in KBytes
  3581. SeeAlso: AH=88h
  3582. ----------15DA8C-----------------------------
  3583. INT 15 U - AMI PCI BIOS - GET BIOS AND CHIPSET??? VERSION
  3584.     AX = DA8Ch
  3585.     CL = subfunction
  3586.         00h get BIOS version string
  3587.         ES:DI -> 12-byte buffer for version string
  3588.         01h get chipset ???
  3589.         BL = what to retrieve (00h,01h)
  3590.         ES:DI -> 12-byte buffer for chipset info???
  3591. Return: CF clear if successful
  3592.         ES:DI buffer filled
  3593.     CF set on error
  3594.         AH = error code (86h unsupported subfunction)
  3595. Notes:    the v1.00.05.AX1 BIOS returns "1.00.05.AX1 " as its version string
  3596.     subfunction 01h returns five bytes read from the chipset registers
  3597.       at C000h-C004h (BL=00h) or C200h-C204h (BL=01h), padded to 12 bytes
  3598.       with NULs.  On my machine, the results were 86h 80h A3h 04h 46h and
  3599.       86h 80h 84h 04h 0Fh, respectively; on another machine, the results
  3600.       were identical except that the last byte was 07h instead of 0Fh
  3601. SeeAlso: AX=DB04h
  3602. ----------15DA8E-----------------------------
  3603. INT 15 U - AMI PCI BIOS - ???
  3604.     AX = DA8Eh
  3605.     ???
  3606. Return: CF clear if successful
  3607.         ???
  3608.     CF set on error
  3609.         AH = error code (86h unsupported subfunction)
  3610. Note:    in the    v1.00.05.AX1 BIOS, this call always returns failure
  3611. ----------15DA92-----------------------------
  3612. INT 15 U - AMI PCI BIOS - GET CPU TYPE AND SPEED
  3613.     AX = DA92h
  3614. Return: CF clear (successful)
  3615.     AL = CPU stepping (see also #0402 at INT 15/AH=C9h)
  3616.     AH = CPU model
  3617.     BL = CPU family (05h = Pentium, etc.)
  3618.     CX = external clock speed??? in BCD
  3619.         (0040h,0050h,0060h,0066h are possible return values on my
  3620.           Pentium with the Intel "Neptune" chipset)
  3621.     EAX high word destroyed
  3622. Note:    90 MHz and faster Pentium CPUs can be configured to run at 1.0, 1.5,
  3623.       or 2.0 times the external clock speed, i.e. a typical 90 MHz Pentium
  3624.       system will run the motherboard at 60 MHz (my 90 MHz Pentium returns
  3625.       0060h in CX)
  3626. SeeAlso: AH=C9h
  3627. ----------15DA99-----------------------------
  3628. INT 15 U - AMI PCI BIOS - GET/SET ??? FLAG
  3629.     AX = DA99h
  3630.     CL = subfunction
  3631.         00h check if ???
  3632.         01h set ??? flag
  3633.         02h clear ??? flag
  3634. Return: CF clear if successful
  3635.         AH = ??? (00h,01h)
  3636.         AL = 00h
  3637.     CF set on error
  3638.         AH = error code (86h unsupported subfunction)
  3639. Note:    the flag is stored in bit 0 of CMOS RAM location 2Ch for BIOS
  3640.       v1.00.05.AX1
  3641. --------b-15DB00-----------------------------
  3642. INT 15 U - AMI BIOS - Flash ROM - ???
  3643.     AX = DB00h
  3644.     DS:SI -> ???
  3645.     ES:DI -> ???
  3646. Return: CF clear if successful
  3647.     CF set on error
  3648.         AH = status (86h if not implemented)
  3649. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  3650. SeeAlso: AH=DAh,AX=DB01h,AX=DB04h
  3651. --------b-15DB01-----------------------------
  3652. INT 15 U - AMI BIOS - Flash ROM - GET BIOS SUBSYSTEM INFORMATION
  3653.     AX = DB01h
  3654.     CL = BIOS subsystem information identifier (see #2618)
  3655. Return: CF clear if successful
  3656.         AX = 0000h
  3657.         ES:DI -> 56-byte record describing subsystem (see #2619)
  3658.     CF set on error
  3659.         AH = status (01h,86h)
  3660.         AL = 00h
  3661. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  3662. SeeAlso: AX=DB00h,AX=DB02h
  3663.  
  3664. (Table 2618)
  3665. Values for AMI BIOS v1.00.05.AX1 subsystem identifier:
  3666.  00h    recovery code
  3667.  01h    system BIOS
  3668.  02h    PCI configuration data
  3669.  03h    logo data area
  3670.  04h    system BIOS/Language (one system)
  3671.     configuration utility (another system)
  3672. SeeAlso: #2619
  3673.  
  3674. Format of AMI BIOS v1.00.05.AX1 subsystem information:
  3675. Offset    Size    Description    (Table 2619)
  3676.  00h    BYTE    subsystem identifier (see #2618)
  3677.  01h    WORD    subsystem size in bytes
  3678.  03h    WORD    ???
  3679.  05h    BYTE    flag??? (zero/nonzero)
  3680.  06h    BYTE    ???
  3681.  07h    BYTE    ???
  3682.  08h 24 BYTEs    subsystem name
  3683.  20h    BYTE    subsystem identifier???
  3684.  21h    BYTE    flag??? (00h or FFh)
  3685.  22h    BYTE    ??? (01h,03h seen)
  3686.  23h  5 BYTEs    ??? (apparently always 00h)
  3687.  28h 16 BYTEs    version string???
  3688. --------b-15DB02-----------------------------
  3689. INT 15 U - AMI BIOS - Flash ROM - GET SIZE OF ??? CODE
  3690.     AX = DB02h
  3691. Return: CF clear
  3692.     AX = 0000h
  3693.     BX = size of ??? in bytes
  3694. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  3695. SeeAlso: AX=DB00h,AX=DB03h
  3696. --------b-15DB03-----------------------------
  3697. INT 15 U - AMI BIOS - Flash ROM - GET ??? CODE
  3698.     AX = DB03h
  3699.     DS:SI -> ???
  3700.     ES:DI -> buffer for ??? code
  3701.     BX = ???
  3702.     DX = ???
  3703. Return: CF clear if successful
  3704.         AH = ???
  3705.         BX = ???
  3706.         DX = ???
  3707.     CF set on error
  3708.         AH = error code
  3709. Notes:    the entry point for the copied code (which is fully relocatable) is
  3710.       the very first byte (see #2620)
  3711.     used by FMUP.EXE, Intel's Flash Memory Update utility
  3712. SeeAlso: AX=DB00h,AX=DB02h
  3713.  
  3714. (Table 2620)
  3715. Call AMI BIOS ??? code with:
  3716.     AL = function
  3717.         00h
  3718.         01h
  3719.         02h perform cold reboot
  3720.     DS:SI -> ???
  3721.     ES:DI -> ???
  3722. Return: AH = status
  3723.         00h successful
  3724.         01h invalid function
  3725.         02h ???
  3726.         03h ???
  3727.         04h ???
  3728. Note:    DS:SI and ES:DI are ignored for function 02h
  3729. --------b-15DB04-----------------------------
  3730. INT 15 U - AMI BIOS - Flash ROM - GET BIOS REVISION
  3731.     AX = DB04h
  3732. Return: CF clear
  3733.     BL:BH:DL:DH = BIOS revision string
  3734.         ('AX1 ' for v1.00.05.AX1, 'AV0M' for v1.00.03.AV0M)
  3735.     CL = BIOS major version??? (01h)
  3736.     CH = BIOS minor version??? (00h)
  3737.     AL = ??? (02h)
  3738. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  3739. SeeAlso: AX=DA05h,AX=DA15h,AX=DA8Ch,AX=DB00h,AX=DB03h
  3740. --------Q-15DE00-----------------------------
  3741. INT 15 - DESQview - GET PROGRAM NAME
  3742.     AX = DE00h
  3743. Return: AX = offset into DESQVIEW.DVO of program most recently selected from
  3744.         the "Switch Windows" menu (see #0412)
  3745. Note:    always returns AX=0000h under DESQview/X
  3746. SeeAlso: AX=DE07h
  3747.  
  3748. Format of program entry in DESQVIEW.DVO:
  3749. Offset    Size    Description    (Table 0412)
  3750.  00h    BYTE    length of name (FFh if end of file)
  3751.  01h  N BYTEs    name
  3752.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  3753.     BYTE    program type
  3754.         00h normal program
  3755.         04h divider
  3756.         80h Delete a Program
  3757.         81h Change a Program
  3758.     WORD    ??? apparently always 0000h
  3759. --------Q-15DE01-----------------------------
  3760. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  3761.     AX = DE01h
  3762. Return: nothing
  3763. Notes:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  3764.     NOP for DESQview/X
  3765. --------Q-15DE02-----------------------------
  3766. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  3767.     AX = DE02h
  3768. Return: nothing
  3769. Note:    this call is a NOP in DV 2.x
  3770. SeeAlso: AX=DE03h
  3771. --------Q-15DE03-----------------------------
  3772. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  3773.     AX = DE03h
  3774. Return: AX = ??? for current window
  3775.     BX = ??? for current window
  3776. Note:    this call is a NOP in DV 2.x
  3777. SeeAlso: AX=DE02h
  3778. --------Q-15DE04-----------------------------
  3779. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  3780.     AX = DE04h
  3781. Return: BX = bytes of common memory available
  3782.     CX = largest block available
  3783.     DX = total common memory in bytes
  3784. SeeAlso: AX=DE05h,AX=DE06h
  3785. --------Q-15DE05-----------------------------
  3786. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  3787.     AX = DE05h
  3788. Return: BX = KB of memory available
  3789.     CX = largest block available
  3790.     DX = total conventional memory in KB
  3791. SeeAlso: AX=DE04h,AX=DE06h
  3792. --------Q-15DE06-----------------------------
  3793. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  3794.     AX = DE06h
  3795. Return: BX = KB of expanded memory available
  3796.     CX = largest block available
  3797.     DX = total expanded memory in KB
  3798. SeeAlso: AX=DE04h,AX=DE05h
  3799. --------Q-15DE07-----------------------------
  3800. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  3801.     AX = DE07h
  3802. Return: AX = number of program as it appears on the "Switch Windows" menu
  3803. Note:    this API call may be made from a hardware interrupt handler
  3804. SeeAlso: AX=DE00h
  3805. --------Q-15DE08-----------------------------
  3806. INT 15 - DESQview - GET ???
  3807.     AX = DE08h
  3808. Return: AX = 0000h if ??? is not set to the current task
  3809.          0001h if ??? is set to the current task
  3810. --------Q-15DE09-----------------------------
  3811. INT 15 - DESQview - UNIMPLEMENTED
  3812.     AX = DE09h
  3813. Return: nothing (NOP in DV 1.x and 2.x)
  3814. --------Q-15DE0A-----------------------------
  3815. INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  3816.     AX = DE0Ah
  3817.     BL = character
  3818. Return: character displayed, next call will display in next position (which
  3819.     wraps back to the start of the line if off the right edge of screen)
  3820. Notes:    displays character on bottom line of *physical* screen, regardless
  3821.       of current size of window (even entirely hidden)
  3822.     does not know about graphics display modes, just pokes the characters
  3823.       into display memory
  3824.     this API call may be made from a hardware interrupt handler
  3825. SeeAlso: AX=1003h
  3826. --------Q-15DE0B-----------------------------
  3827. INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  3828.     AX = DE0Bh
  3829.     BL = API level minor version number
  3830.     BH = API level major version number
  3831. Return: AX = maximum API level (AH = major, AL = minor)
  3832. Notes:    if the requested API level is greater than the version of DESQview, a
  3833.       "You need a newer version" error window is popped up
  3834.     the API level defaults to 1.00, and is inherited by child tasks
  3835. --------Q-15DE0C-----------------------------
  3836. INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  3837.     AX = DE0Ch
  3838.     BX = number of bytes
  3839. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  3840. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  3841.       system memory
  3842. SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
  3843. --------Q-15DE0D-----------------------------
  3844. INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  3845.     AX = DE0Dh
  3846.     ES:DI -> previously allocated block
  3847. Return: nothing
  3848. SeeAlso: AX=1002h,AX=DE0Ch
  3849. --------Q-15DE0E-----------------------------
  3850. INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
  3851.     AX = DE0Eh
  3852.     ES:DI -> name to find (see #0413)
  3853.     CX = length of name
  3854. Return: BX = 0000h not found
  3855.          0001h found
  3856.         DS:SI = object handle
  3857. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1200h"GETNAME"
  3858.  
  3859. (Table 0413)
  3860. Values for special DESQview mailbox names:
  3861.  "COM1" ... "COM4"    RBcomm using COM1 ... COM4
  3862.  "DESQview/X Help Engine"
  3863.  "DESQview/X Network Server"  Network Manager
  3864.  "DESQview X Server0"    X-Windows server
  3865.  "DESQview X Server7"    X-Windows printing service
  3866.  "INBOX"        DESQview/X LPD requests
  3867.  "OUTBOX"        DESQview/X LPD responses
  3868.  "WAITBOX"        semaphore to synchronize DESQview/X LPD communications
  3869.  "_DVNM_"        DV/X v1.10 network manager
  3870. --------Q-15DE0F-----------------------------
  3871. INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
  3872.     AX = DE0Fh
  3873. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  3874. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  3875.     enables an additional mouse mode
  3876. --------Q-15DE10-----------------------------
  3877. INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  3878.     AX = DE10h
  3879.     BH = scan code
  3880.     BL = character
  3881. Return: nothing
  3882. Notes:    a later read will get the keystroke as if it had been typed by the user
  3883.     multiple pushes are read last-in first-out
  3884.     if a script exists for the pushed key in the current application, the
  3885.       script will be executed
  3886.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  3887. SeeAlso: INT 16/AH=05h
  3888. --------Q-15DE11BL00-------------------------
  3889. INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
  3890.     AX = DE11h
  3891.     BL = 00h      viewport will not move automatically
  3892.          nonzero  viewport will move to keep cursor visible (default)
  3893. Return: nothing
  3894. --------Q-15DE12BX0000-----------------------
  3895. INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  3896.     AX = DE12h
  3897.     BX = 0000h    select normal style (linefeed only moves down)
  3898.          nonzero  select C style (linefeed moves to start of next line)
  3899. Return: nothing
  3900. Note:    set on a per-task basis, and inherited from the parent task
  3901. --------Q-15DE13-----------------------------
  3902. INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
  3903.     AX = DE13h
  3904. Return: BX = number of calls to BEGINC or ENTERC
  3905.           (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
  3906.           (see INT 15/AX=101Ch)
  3907. Note:    this API call may be made from within a hardware interrupt handler
  3908. SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
  3909. --------Q-15DE14-----------------------------
  3910. INT 15 - DESQview v2.20+ - GET OBJECT TYPE
  3911.     AX = DE14h
  3912.     ES:DI -> object
  3913. Return: BL = 00h not an object
  3914.          08h window or task
  3915.          09h mailbox
  3916.          0Ah keyboard
  3917.          0Bh timer
  3918.          0Ch objectq
  3919.          0Fh pointer
  3920.          10h panel
  3921. SeeAlso: AX=1016h
  3922. --------Q-15DE15-----------------------------
  3923. INT 15 - DESQview v2.20+ - SET ERROR HANDLING
  3924.     AX = DE15h
  3925.     BL = error handling mode
  3926.         00h post system error on all error conditions
  3927.         01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  3928.         messages sent to mailboxes which fail due to lack of system
  3929.         or common memory
  3930.         02h (v2.26+) same as 01h, but also return null pointer for GETMEM
  3931.         calls which fail due to lack of system memory
  3932. Return: nothing
  3933. SeeAlso: AX=DE0Ch,AX=DE16h
  3934. --------Q-15DE16-----------------------------
  3935. INT 15 - DESQview v2.20+ - GET ERROR HANDLING
  3936.     AX = DE16h
  3937. Return: BL = current mode
  3938.         00h always post system error
  3939.         01h return carry flag set on failed mailbox writes
  3940.         02h return CF set on failed mailbox writes and NULL on failed
  3941.         GETMEM calls
  3942. SeeAlso: AX=DE15h
  3943. --------Q-15DE17-----------------------------
  3944. INT 15 - DESQview v2.20-2.25 - reserved
  3945.     AX = DE17h
  3946. Return: pops up "Programming error" window
  3947. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  3948. SeeAlso: AX=1117h
  3949. --------Q-15DE17-----------------------------
  3950. INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  3951.     AX = DE17h
  3952.     BX = function
  3953.         0000h   get current mapping context without setting
  3954.         nonzero set new mapping context to BX
  3955. Return: BX = mapping context in effect before call
  3956. Notes:    mapping contexts determine conventional-memory addressability; setting
  3957.       a mapping context ensures that the associated program and data areas
  3958.       are in memory for access.  Usable by drivers, TSRs and shared
  3959.       programs.
  3960.     caller need not be running under DESQview
  3961.     this API call may be made from a hardware interrupt handler
  3962. SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
  3963. --------Q-15DE18-----------------------------
  3964. INT 15 - DESQview v2.20+ - internal - ???
  3965.     AX = DE18h
  3966.     BP = function number
  3967.         high byte must be 10h
  3968.         low byte is function
  3969.         00h set ???
  3970.             BL = ???  (00h-10h, video mode???)
  3971.             BH = value to store
  3972.         03h set ???
  3973.             BL = ??? (stored in driver)
  3974.         0Ah get ???
  3975.             ES:DI -> 18-byte buffer to hold ???
  3976. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  3977. --------Q-15DE19-----------------------------
  3978. INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  3979.     AX = DE19h
  3980.     BX = number of bytes to allocate
  3981. Return: AX = 0000h successful
  3982.         ES:DI -> allocated block
  3983.          nonzero insufficient memory
  3984. Note:    this API call may be made from within a hardware interrupt handler
  3985. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  3986. --------Q-15DE1A-----------------------------
  3987. INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  3988.     AX = DE1Ah
  3989.     ES:DI -> previously allocated block
  3990. Return:    AX = 0000h (successful)
  3991. Note:    this function may be called from within a hardware interrupt handler
  3992. SeeAlso: AX=DE0Dh,AX=DE19h
  3993. --------Q-15DE1B-----------------------------
  3994. INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  3995.     AX = DE1Bh
  3996. Return: nothing
  3997. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  3998. --------Q-15DE1C-----------------------------
  3999. INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  4000.     AX = DE1Ch
  4001. Return: nothing
  4002. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  4003.       that DOS is free
  4004.     the official documentation states that this call should be paired with
  4005.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  4006.     this API call may be made from within a hardware interrupt handler
  4007. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  4008. --------Q-15DE1D-----------------------------
  4009. INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  4010.     AX = DE1Dh
  4011.     DX = segment of handle for task to receive keystroke
  4012.     BL = character
  4013.     BH = scan code
  4014. Return: AX = 0000h if successful
  4015.        nonzero if receiver's keyboard buffer was full
  4016. Notes:    the key is treated as though the user had pressed it, ignoring any
  4017.       script which may be bound to the key, and using the current field
  4018.       table if the keyboard object is in field processing mode
  4019.     multiple PUTKEYs are seen in the order in which they are executed
  4020. SeeAlso: AX=DE10h
  4021. --------Q-15DE1E-----------------------------
  4022. INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  4023.     AX = DE1Eh
  4024. Return: CL = actual number of rows on screen
  4025.     CH = actual number of columns on screen
  4026.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  4027. Note:    this API call may be made from a hardware interrupt handler
  4028. SeeAlso: INT 10/AH=0Fh
  4029. --------Q-15DE1F-----------------------------
  4030. INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  4031.     AX = DE1Fh
  4032. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  4033. Note:    this API call may be made from within a hardware interrupt handler
  4034. SeeAlso: AX=DE13h,INT 21/AH=34h
  4035. --------Q-15DE20-----------------------------
  4036. INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  4037.     AX = DE20h
  4038.     BX = segment of handle of task to interupt
  4039.     DX:CX -> FAR interrupt routine
  4040.     BP,SI,DI,DS,ES as required by interrupt routine
  4041. Return: nothing
  4042. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  4043.       making the DISPATCHINT call
  4044.     multiple "DISPATCHINT" calls are processed in the order in which they
  4045.       were executed
  4046.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  4047.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  4048.       needs to be preserved
  4049.     this API call may be made from within a hardware interrupt handler
  4050. SeeAlso: AX=1021h,AX=DE2Ah
  4051. --------Q-15DE21-----------------------------
  4052. INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  4053.     AX = DE21h
  4054.     BX = new state
  4055.         0000h turn off
  4056.         nonzero turn on
  4057. Return: BX = old state of virtualization
  4058. Notes:    this API call may be made from within a hardware interrupt handler
  4059.     under DV 2.40 and 2.42, this call appears to have no effect and always
  4060.       returns a nonzero value in BX which appears to be the offset within
  4061.       the DV common memory segment of the caller's task object; it may
  4062.       only have an effect within a hardware interrupt handler
  4063. SeeAlso: AX=1117h,AX=DE17h
  4064. --------Q-15DE22-----------------------------
  4065. INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  4066.     AX = DE22h
  4067.     DX = segment of task handle
  4068. Return: DX = total amount of memory in paragraphs
  4069.     BX = amount of system memory in paragraphs
  4070.     CX = largest block of system memory available in paragraphs
  4071.     AX = memory flags (see #0414)
  4072. Notes:    if the task handle is a child task, the returned values will be for the
  4073.       process containing the task, rather than the task itself
  4074.     if the process's system memory is swapped out, BX,CX,DX remain
  4075.       unchanged, because the memory usage cannot be determined
  4076. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  4077.  
  4078. Bitfields for DESQview process memory flags:
  4079. Bit(s)    Description    (Table 0414)
  4080.  0    system memory resides in shared memory
  4081.  1    process's memory is swapped out
  4082.  2    process's system memory is swapped out
  4083. --------Q-15DE23-----------------------------
  4084. INT 15 U - DESQview v2.31+ - ???
  4085.     AX = DE23h
  4086.     BX = ??? IRQ number on first PIC?
  4087.     CX = ??? IRQ number on second PIC?
  4088. Return: ???
  4089. Note:    called by QEMM 6.00+
  4090. --------Q-15DE24-----------------------------
  4091. INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
  4092.     AX = DE24h
  4093.     BX = length of .DVP data
  4094.     CX = length of ??? string
  4095.     DS:SI -> ??? string
  4096.     ES:DI -> .DVP data (see #0317 at AX=102Ch)
  4097. Return: BX = segment of task handle??? or 0000h on error
  4098. Note:    this call is similar to AX=102Ch except that it can interpret the
  4099.       extended DVP data
  4100. SeeAlso: AX=102Ch
  4101. --------Q-15DE25-----------------------------
  4102. INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
  4103.     AX = DE25h
  4104.     ES:DI -> 67-byte buffer for ASCIZ directory name
  4105. Return: ES:DI buffer filled with directory from which DESQview was started
  4106. BUG:    DV 2.42 does not place a terminating NUL at the end of the directory
  4107.       name, so if the buffer is not cleared to zeros before the call,
  4108.       there is no way to tell where the directory name ends.  This bug
  4109.       has been fixed in DV 2.52 (DV/X 1.02)
  4110. SeeAlso: AX=DE2Eh,INT 21/AH=47h
  4111. --------Q-15DE26-----------------------------
  4112. INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
  4113.     AX = DE26h
  4114. Return: BX = segment of handle for task with keyboard focus
  4115. Note:    under DESQview/X, the X server always has the keyboard focus unless a
  4116.       "direct" window is active
  4117. SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
  4118. --------Q-15DE27-----------------------------
  4119. INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
  4120.     AX = DE27h
  4121.     BX = type
  4122.         0000h process
  4123.         0001h task
  4124.     ES:DI -> list of Instance Item Structures (see #0415)
  4125. Return: CF clear if successful
  4126.         AX = ???
  4127.         BX = ???
  4128.     CF set on error
  4129.         AX = error code???
  4130.         0004h invalid BX value
  4131. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4132. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
  4133.  
  4134. Format of DESQview Instance Item Structure [one element of list]:
  4135. Offset    Size    Description    (Table 0415)
  4136.  00h    WORD    length of data area DESQview should save and restore on context
  4137.           switches (0000h = end of list)
  4138.  02h    DWORD    pointer to area to be saved/restored
  4139. --------Q-15DE28-----------------------------
  4140. INT 15 U - DESQview v2.50+ - ???
  4141.     AX = DE28h
  4142.     BX = segment of ??? or 0000h for default
  4143.     ???
  4144. Return: ???
  4145. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4146. SeeAlso: AX=DE2Ah
  4147. --------Q-15DE29BX0000-----------------------
  4148. INT 15 U - DESQview/X - ???
  4149.     AX = DE29h
  4150.     BX = 0000h
  4151.     ???
  4152. Return: CF clear if successful
  4153.         ???
  4154.     CF set on error
  4155. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4156.     under DESQview 2.60, this function and all other subfunctions of
  4157.       AX=DE29h always return CF set, as they are unique to DESQview/X
  4158. --------Q-15DE29BX0001-----------------------
  4159. INT 15 U - DESQview/X - ???
  4160.     AX = DE29h
  4161.     BX = 0001h
  4162.     DX = segment of window handle
  4163. Return: CF clear if successful
  4164.         AX = ???
  4165.         DX = ???
  4166.     CF set on error
  4167. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4168. --------Q-15DE29BX0002-----------------------
  4169. INT 15 U - DESQview/X - ???
  4170.     AX = DE29h
  4171.     BX = 0002h
  4172.     DX = segment of window handle
  4173. Return: CF clear if successful
  4174.         AX = ???
  4175.         DX = ???
  4176.     CF set on error
  4177. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4178. --------Q-15DE29BX0003-----------------------
  4179. INT 15 U - DESQview/X - ???
  4180.     AX = DE29h
  4181.     BX = 0003h
  4182.     DX = segment of window handle
  4183. Return: CF clear if successful
  4184.         ???
  4185.     CF set on error
  4186. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4187. --------Q-15DE29BX0004-----------------------
  4188. INT 15 U - DESQview/X - GET DISPLAY NAME
  4189.     AX = DE29h
  4190.     BX = 0004h
  4191.     CX = size of buffer in bytes
  4192.     DX = segment of window handle
  4193.     ES:DI -> buffer for display name
  4194. Return: CF clear if successful
  4195.         buffer filled with ASCIZ display name (truncated if necessary) or
  4196.           null string if no display
  4197.     CF set on error
  4198. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4199.     the name ":0" refers to the local display
  4200. --------Q-15DE29BX0005-----------------------
  4201. INT 15 U - DESQview/X - ???
  4202.     AX = DE29h
  4203.     BX = 0005h
  4204.     ???
  4205. Return: CF clear if successful
  4206.         ???
  4207.     CF set on error
  4208. Note:    under DESQview 2.60, this function and all other subfunctions of
  4209.       AX=DE29h always return CF set, as they are unique to DESQview/X
  4210. --------Q-15DE2A-----------------------------
  4211. INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
  4212.     AX = DE2Ah
  4213.     BX = segment of handle for task to interrupt or 0000h for caller
  4214.     DX:CX -> interrupt routine
  4215.     BP,SI,DI,DS,ES as required by interrupt routine
  4216. Return: nothing
  4217. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4218.     this call is the same as AX=DE20h except that it will delay
  4219.       interrupting the specified task until after it has exited DOS
  4220. SeeAlso: AX=1021h,AX=DE20h
  4221. --------Q-15DE2B-----------------------------
  4222. INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
  4223.     AX = DE2Bh
  4224.     ES:DI -> starting object
  4225.         0000h:0000h for first object in list???
  4226. Return: AX = status
  4227.         0000h successful
  4228.         ES:DI -> next object of same type (window/non-window)
  4229.         0001h failed (ES:DI was not a valid handle)
  4230. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4231.     there are two separate lists, one for window/task objects and one
  4232.       for all other objects
  4233. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
  4234. --------Q-15DE2C-----------------------------
  4235. INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
  4236.     AX = DE2Ch
  4237.     DX = window information format version (0100h for DESQview 2.5x)
  4238.     BX = segment of window handle or 0000h for default
  4239.     ES:DI -> buffer for window information (see #0416)
  4240. Return: AX = status
  4241.         0000h successful
  4242. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4243. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
  4244.  
  4245. Format of DESQview window information:
  4246. Offset    Size    Description    (Table 0416)
  4247.  00h    BYTE    task flag: 00h window, 01h task
  4248.  01h    BYTE    process number if owner task
  4249.         00h if non-owner task
  4250.  02h    WORD    segment of owner's handle, 0000h if orphaned
  4251.  04h    WORD    mapping context (see #0306 at AX=1016h)
  4252.  06h    BYTE    task status (see #0417)
  4253.  07h    BYTE    unused
  4254.  08h    WORD    status bits (see #0418)
  4255.  0Ah    BYTE    01h if foreground-only window
  4256.  
  4257. (Table 0417)
  4258. Values for DESQview task status:
  4259.  00h    "Waiting" waiting for input
  4260.  01h    "Idle" keyboard poll limit reached
  4261.  03h    same as 01h
  4262.  04h    "Pausing" INT 15/AX=1000h pause called
  4263.  04h    DV/X direct: user did something to allow task switch
  4264.  05h    "ModeChg" video mode about to be changed
  4265.  06h    "ModeNtf" notify that video mode changed
  4266.  07h    "MoniCh" requested change to other monitor
  4267.  08h    "StartPgm" control relinquished to start new process
  4268.  09h    "MgrCan" made window manager CANCEL command
  4269.  0Ah    "Slicing" time slice expired
  4270.  0Bh    "Exit DOS" notify on DOS calls
  4271.  0Ch    "Enter DOS" process is re-entering DOS
  4272.  0Dh    "Terminate" INT 21/AH=4Ch or task freed
  4273.  0Eh    "BrkNxt" Control-Break pressed
  4274.  0Fh    "MgrCol" keyboard focus taken away
  4275.  10h    "PgmInt" interrupted by API call from another task
  4276.  11h    "BldOpen" call to INT 15/AX=DE01h
  4277.  
  4278. Bitfields for DESQview task status bits:
  4279. Bit(s)    Description    (Table 0418)
  4280.  6    task is freeing another task
  4281.  5    process is being created
  4282.  4    user suspended process
  4283.  3    process suspended itself
  4284.  2    process is resized direct window (suspended)
  4285.  1    process swapped out
  4286.  0    DESQview process
  4287. --------Q-15DE2D-----------------------------
  4288. INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
  4289.     AX = DE2Dh
  4290.     CX = direction
  4291.         FFFFh set socket handler
  4292.         DX:BX -> FAR function for socket interface
  4293.             must be of the format described under INT 63"DESQview"
  4294.               at #2121
  4295.         other get socket handler
  4296.         Return: DX:BX -> socket handler (see #2121)
  4297. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4298.     the "set" subfunction is normally called only by SOCKET.DVR
  4299. SeeAlso: AX=DE2Eh,INT 63"DESQview",#2121
  4300. --------Q-15DE2E-----------------------------
  4301. INT 15 U - DESQview v2.50+ - SOCKET API
  4302.     AX = DE2Eh
  4303.     DX:BX -> socket record (see #0420)
  4304.         0000h:0000h to create a new socket record
  4305. Return: CX = size of socket record in bytes
  4306.     DX:BX -> socket record which was used
  4307. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  4308.     socket records are allocated from common memory
  4309.     for Unix compatibility, each socket and connection on a socket is
  4310.       allocated a DOS file handle (referencing an SFT for NUL) which is
  4311.       used on various calls to specify which of possibly multiple
  4312.       connections is to be operated upon
  4313. SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
  4314.  
  4315. (Table 0419)
  4316. Values for DESQview/X socket API function number:
  4317.  0000h    initialize socket???
  4318.  0001h    "gethostname"
  4319.  0002h    "ioctl" check for input
  4320.  0003h    "sleep" delay for specified period
  4321.  0004h    "htons" convert word to network (big-endian) byte order
  4322.  0005h    "select"
  4323.  0006h    "bsd_close"/"so_close" close socket
  4324.  0007h    NOP
  4325.  0008h    "connect" initiate connection on socket
  4326.  0009h    "recv"/"recvfrom" read from socket
  4327.  000Ah    "socket"
  4328.  000Bh    ???
  4329.  000Ch    "gethostbyname"
  4330.  000Dh    "send"/"sendto" write to socket
  4331.  000Eh    ??? (does something to all connections for process)
  4332.  000Fh    "getpid" get process identifier
  4333.  0010h    "gettimeofday"
  4334.  0011h    "bind" assign name to socket
  4335.  0012h    "listen" listen for connections on socket
  4336.  0013h    "accept" accept connection on socket
  4337.  0014h    connect to X server
  4338.  0015h    "gethostbyaddr" get host information for an address
  4339.  0016h    "getprotobyname"
  4340.  0017h    "getprotobynumber"
  4341.  0018h    "getservbyname"
  4342.  0019h    "getservbyport"
  4343.  001Ah    "getsockname" determine name bound to socket
  4344.  001Bh    "getpeername" get name of connected peer
  4345.  001Ch    "getsockopt"/"setsockopt"
  4346.  001Dh    "so_exit"     close all sockets for calling process
  4347.  001Eh    "issock" determine whether file handle references socket
  4348.  001Fh    "so_attach" reattach previously detached socket
  4349.  0020h    "so_detach" temporarily detach socket
  4350.  0021h    "dvpath" get DESQview directory (see also AX=DE24h)
  4351.  0022h    "NewProc" start new application (see also AX=102Ch)
  4352.  0023h    "so_linkup"
  4353.  0024h    "CanonicalPath" canonicalize filename (see also INT 21/AH=60h)
  4354.  0025h    indirect INT 15h call
  4355.  0026h    Network Manager interface
  4356.  0027h    "so_unlink"    close connection from "so_linkup"
  4357.  0028h    "raisepriority"
  4358.  0029h    "lowerpriority"
  4359.  002Ah    "so_private" ???
  4360.  FFFFh    "NetExit" (appears to be a NOP)
  4361.  
  4362. Format of DESQview/X socket record:
  4363. Offset    Size    Description    (Table 0420)
  4364.  00h    WORD    signature F0ADh
  4365.  02h    WORD    function number (see #0419)
  4366.  04h    WORD    returned error code (see #0440)
  4367.  06h    WORD    maximum message size??? (usually 0400h)
  4368.  08h    WORD    PSP segment to use or 0000h if socket not valid
  4369.  0Ah    WORD    scratch space (JFT size)
  4370.  0Ch    DWORD    scratch space (JFT address)
  4371.  10h    DWORD    mailbox handle (initialized by function 0000h)
  4372.  14h    DWORD    timer object handle (initialized by function 0000h)
  4373. ---function 0000h---
  4374.  18h    WORD    (ret) ???
  4375. ---function 0001h---
  4376.  18h    WORD    (ret) status???
  4377.  1Ah 128 BYTEs    (ret) ASCIZ hostname (empty string if not on network)
  4378.  9Ah    WORD    maximum length of hostname to return
  4379. ---function 0002h---
  4380.  18h    WORD    (ret) status
  4381.  1Ah    WORD    socket's file handle
  4382.  1Ch    WORD    IOCTL function
  4383.         05h "FIONREAD" determine available input
  4384.         06h "FIONBIO" set blocking state of socket
  4385.  1Eh    WORD    (return, subfn 05h) number of bytes available for reading
  4386.         (call, subfn 06h) 0000h blocking, nonzero nonblocking
  4387. ---function 0003h---
  4388.  18h  2 BYTEs    unused
  4389.  1Ah    WORD    delay time in seconds
  4390. ---function 0004h---
  4391.  18h    WORD    (ret) result in network (big-endian) byte order
  4392.  1Ah    WORD    value to convert to network byte order
  4393. ---function 0005h---
  4394.  18h    WORD    (ret) number of handles meeting the specified conditions???
  4395.  1Ah    WORD    number of file handles in each bitset
  4396.  1Ch    DWORD    bitset of socket handles to check for readability
  4397.  20h    DWORD    bitset of socket handles to check for writability
  4398.  24h    DWORD    bitset of socket handles to check for errors
  4399.  28h    WORD    timeout in ??? or 0000h to block until some socket ready
  4400.  2Ah    DWORD    ???
  4401.  2Eh    DWORD    ???
  4402. ---function 0006h---
  4403.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  4404.  1Ah    WORD    socket's file handle
  4405. ---function 0008h---
  4406.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  4407.  1Ah    WORD    socket's file handle
  4408.  1Ch    WORD    0001h if socket name specified, 0000h if not
  4409.  1Eh    WORD    length of socket name
  4410.  20h  N BYTEs    name of socket to which to connect
  4411. ---function 0009h---
  4412.  18h    WORD    (ret) number of bytes actually read, 0000h if connection
  4413.             closed, or FFFFh on error
  4414.  1Ah    WORD    socket's file handle
  4415.  1Ch    WORD    number of bytes to read
  4416.  1Eh    WORD    flags
  4417.  20h    WORD    0000h if no source address desired
  4418.         0001h if source address is to be stored (datagram sockets)
  4419.  22h    WORD    length of source address
  4420.  24h 110 BYTEs    source address
  4421.  92h 1K BYTEs    buffer for data to be read
  4422. ---function 000Ah---
  4423.  18h    WORD    (ret) socket's file handle or FFFFh on error
  4424.  1Ah    WORD    address family (0001h,0002h)
  4425.  1Ch    WORD    socket type
  4426.  1Eh    WORD    protocol
  4427. ---function 000Bh---
  4428.  18h    WORD    (ret) 0001h if ??? or FFFFh on error
  4429.  1Ah    WORD    socket's file handle
  4430.  1Eh    WORD    (call) ???
  4431. ---function 000Ch---
  4432.  18h 128 BYTEs    ASCIZ hostname (special case if empty string or "unix")
  4433.  98h    ???    (ret) packed 'hostent' structure
  4434.  A2h    ???    (ret) ???
  4435. ---function 000Dh---
  4436.  18h    WORD    (ret) number of bytes actually written or FFFFh on error
  4437.  1Ah    WORD    socket's file handle
  4438.  1Ch    WORD    number of bytes to write
  4439.  1Eh    WORD    number of bytes to follow in subsequent writes???
  4440.  20h    WORD    flags
  4441.  22h    WORD    0000h if no destination specified, 0001h if destination present
  4442.  24h    WORD    0001h if broadcast message???, 0000h if not
  4443.         (ignored if no destination specified)
  4444.  26h    WORD    length of destination address
  4445.  28h 110 BYTEs    destination address
  4446.  96h 1K BYTEs    buffer containing data to be written
  4447. ---function 000Eh---
  4448.  no additional fields
  4449. ---function 000Fh---
  4450.  18h    DWORD    (ret) DESQview task handle of calling process
  4451. ---function 0010h---
  4452.  18h    DWORD    (ret) current time
  4453.  1Ch    DWORD    (ret) ???
  4454. ---function 0011h---
  4455.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  4456.  1Ah    WORD    socket's file handle
  4457.  1Ch    WORD    length of name
  4458.  1Eh  N BYTEs    buffer for socket name
  4459. ---function 0012h---
  4460.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  4461.  1Ah    WORD    socket's file handle
  4462.  1Ch    WORD    maximum backlog of pending connections allowed on socket
  4463. ---function 0013h---
  4464.  18h    WORD    (ret) file handle for new connection or FFFFh on error
  4465.  1Ah    WORD    listen()ing socket's file handle
  4466.  1Ch    WORD    (call) length of buffer for connecting entity's address
  4467.         (ret) actual length of address
  4468.  1Eh  N BYTEs    buffer for connecting entity's address (110 bytes???)
  4469. ---function 0014h---
  4470.  18h    WORD    (ret) socket's file handle or FFFFh on error
  4471.  1Ah  4 BYTEs    (ret) ???
  4472.  1Eh    WORD    (ret) ???
  4473.  20h    WORD    (ret) ???
  4474.  22h 256 BYTEs    ASCIZ X display name
  4475. 122h    ???
  4476. ---function 0015h---
  4477.  18h    WORD    (call) type of address??? (test for 0001h seen)
  4478.  1Ah    WORD    (call) length of buffer for host address
  4479.  1Ch 110 BYTEs    buffer containing ASCIZ host address
  4480.  8Ah    WORD    (ret) offset of official host name
  4481.  8Ch    WORD    (ret) offset of alias list???
  4482.  8Eh    WORD    (ret) address type???
  4483.  90h    WORD    (ret) length of an address in bytes???
  4484.  92h    WORD    (ret) offset of address???
  4485.  9Ah  N BYTEs    (ret) buffer for hostname, alias list, and host address
  4486. ---function 0016h---
  4487.  18h    ???    buffer for ASCIZ protocol name
  4488.  98h    ???
  4489. ---function 0017h---
  4490.  18h    WORD    (call) protocol number
  4491.  1Ah    WORD    (ret) ??? or 0001h
  4492. ---function 0018h---
  4493.  18h 128 BYTEs    buffer containing ASCIZ ???
  4494.  98h 128 BYTEs    buffer containing ASCIZ ???
  4495. 118h    WORD    (ret) ???
  4496. ---function 0019h---
  4497.  18h    WORD    port number
  4498.  1Ah 128 BYTEs    (call) ASCIZ host name
  4499.         (ret) packed servent strctures???
  4500.  9Ah    WORD    (ret) ???
  4501. ---function 001Ah---
  4502.  18h    WORD    (ret) 0000h if successful, FFFFh on error
  4503.  1Ah    WORD    socket's file handle
  4504.  1Ch    WORD    (call) length of buffer for socket name
  4505.         (ret) actual length of socket name
  4506.  1Eh  N BYTEs    buffer for socket name
  4507. ---function 001Bh---
  4508.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  4509.  1Ah    WORD    socket's file handle
  4510.  1Ch    WORD    (call) size of buffer for name
  4511.         (ret) actual size of name
  4512.  1Eh  N BYTEs    buffer for peer's name
  4513. ---function 001Ch---
  4514.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  4515.  1Ah    WORD    direction: 0000h to get, 0001h to set
  4516.  1Ch    WORD    socket's file handle
  4517.  1Eh    WORD    option level
  4518.  20h    WORD    option name
  4519.  22h    WORD    (call) length of buffer for option value
  4520.         (ret) actual length of option value
  4521.  24h  N BYTEs    buffer for option value
  4522. ---function 001Dh---
  4523.  no additional fields
  4524. ---function 001Eh---
  4525.  18h    WORD    (ret) status: 0000h ??? or 0001h ???
  4526.  1Ah    WORD    file handle which may or may not be a socket
  4527. ---function 001Fh---
  4528.  18h    WORD    (ret) file handle or FFFFh on error
  4529.  1Ah    DWORD    (call) pointer to Socket Context Record (see #0441) of a
  4530.             previously detached socket
  4531. ---function 0020h---
  4532.  18h    WORD    (ret) status: 0000h if successful or FFFFh on error
  4533.  1Ah    WORD    socket's file handle
  4534.  1Ch    DWORD    (ret) pointer to Socket Context Record (see #0441) for
  4535.             the file handle
  4536. ---function 0021h---
  4537.  18h 64 BYTEs    buffer for DESQview startup directory (see AX=DE25h)
  4538. ---function 0022h---
  4539.  18h    DWORD    (ret) task handle of new application
  4540.  1Ch    WORD    size of .DVP data
  4541.  1Eh 129 BYTEs    ASCIZ ???
  4542.  9Fh  N BYTEs    .DVP data (see #0317 at AX=102Ch)
  4543. ---function 0023h---
  4544.  18h    WORD    (ret) ??? or FFFFh on error
  4545.  1Ah    WORD    socket's file handle???
  4546. ---function 0024h---
  4547.  18h    WORD    (ret) DOS error code (see #0885 at INT 21/AH=59h)
  4548.             0000h if successful
  4549.  1Ah 129 BYTEs    ASCIZ filename/pathname
  4550. 11Bh 129 BYTEs    ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
  4551. ---function 0025h---
  4552.  18h    WORD    value of AX
  4553.  1Ah    WORD    value of BX
  4554.  1Ch    WORD    (call) value of CX for call if AH value other than 12h
  4555.         (call) number of stack parameters if AH value is 12h
  4556.         (ret) returned CX for calls other than INT 15/AH=12h
  4557.  1Eh    WORD    value of DX
  4558.  20h    WORD    value of DI
  4559.  22h    WORD    value of SI
  4560.  24h    WORD    value of DS
  4561.  26h    WORD    value of ES
  4562.  28h    WORD    (ret) value of FLAGS after call
  4563.  2Ah  N DWORDs    (call) stack parameters for INT 15/AH=12h call
  4564.         (ret) stack results from INT 15/AH=12h call
  4565. ---function 0026h---
  4566.  18h    WORD    (call) Network Manager subfunction (see #0421)
  4567.         (ret) status??? (0000h on error)
  4568.  1Ah    WORD    (call) size of parameter data
  4569.         (ret) size of returned data
  4570.  1Ch  N BYTEs    (call) parameter data required by call (see #0422,#0423,#0439)
  4571.         (ret) result data (see #0432,#0433,#0438)
  4572. ---function 0027h---
  4573.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  4574.  1Ah    WORD    socket's file handle
  4575. ---functions 0028h,0029h---
  4576.  18h    WORD    (call) file handle for which to set priority low/high
  4577.             FFFFh to change calling task's priority
  4578. ---function 002Ah---
  4579.  no additional fields
  4580.  
  4581. (Table 0421)
  4582. Values for DESQview/X Network Manager subfunction:
  4583.  0004h    "so_exit"???
  4584.  0005h    "gethostbyname"
  4585.  0006h    "gethostname"
  4586.  0009h    "socket"
  4587.  000Dh    "gethostbyaddr"
  4588.  000Fh    "getprotobyname"
  4589.  0010h    get protocol name for protocol number
  4590.  0011h    "getservbyname"
  4591.  0012h    "getservbyport" (see #0425)
  4592.  0013h    "getsockname"??? (see #0426)
  4593.  0016h    "shutdown" (see #0427)
  4594.  0017h    kill Network Manager
  4595.  0018h    "getpeername"??? (see #0428)
  4596.  0019h    ??? (called by socket function 0000h) (see #0429)
  4597.  001Ah    ??? (see #0430)
  4598.  001Bh    "so_linkup" (see #0431)
  4599.  001Dh    "getnetstatus" get network services (see #0432)
  4600.  001Fh    "getpwuid"
  4601.  0020h    "getpwnam"
  4602.  0021h    "getpwvar"
  4603.  0022h    "crypt"
  4604.  0023h    "so_unlink"
  4605.  0024h    "getlogin" (see #0433)
  4606.  0028h    "sethostent"
  4607.  0029h    "gethostent"
  4608.  002Ah    "soaddhost"
  4609.  002Bh    "soupdatehost"
  4610.  002Ch    "sodeletehost"
  4611.  002Dh    "setservent"
  4612.  002Eh    "getservent"
  4613.  002Fh    "setpwent"
  4614.  0030h    "getpwent" (see #0434)
  4615.  0031h    "sethostpath" (see #0435)
  4616.  0032h    "endservent"
  4617.  0033h    "endhostent"
  4618.  0034h    "getnettype" get IP network number (see #0436)
  4619.  0035h    ??? (pops up Network Manager window)
  4620.  0037h    "getnettimeout" (see #0437)
  4621.  0038h    get machine name and IP address (see #0438)
  4622.  0039h    "getuid" (see #0439)
  4623. ---DV/X v2.0+ ---
  4624.  0041h    "deletepwnam"
  4625.  0045h    "renamepw"
  4626.  
  4627. Format of Function 0026h/Subfunction 000Fh data:
  4628. Offset    Size    Description    (Table 0422)
  4629.  00h  8 BYTEs    (ret) ???
  4630.  
  4631. Format of Function 0026h/Subfunction 0010h data:
  4632. Offset    Size    Description    (Table 0423)
  4633.  00h  2 BYTEs    (ret) ???
  4634.  02h    WORD    (ret) protocol number
  4635.  04h    WORD    (call) protocol number for which to get name
  4636.  06h    WORD    (ret) ???
  4637.  08h    var    (ret) ASCIZ protocol name
  4638.  N    var    (ret) ASCIZ protocol name
  4639.  
  4640. Format of Function 0026h/Subfunction 0011h data:
  4641. Offset    Size    Description    (Table 0424)
  4642.  00h  8 BYTEs    ???
  4643.  08h    var    (ret) ASCIZ protocol name
  4644.     var    (ret) ASCIZ ??? name
  4645.     var    (ret) ASCIZ ??? name
  4646.  
  4647. Format of Function 0026h/Subfunction 0012h data:
  4648. Offset    Size    Description    (Table 0425)
  4649.  00h  8 BYTEs    (ret) ???
  4650.  
  4651. Format of Function 0026h/Subfunction 0013h data:
  4652. Offset    Size    Description    (Table 0426)
  4653.  00h 116 BYTEs    (ret) ???
  4654.  
  4655. Format of Function 0026h/Subfunction 0016h ("shutdown") data:
  4656. Offset    Size    Description    (Table 0427)
  4657.  00h    WORD    (ret) shutdown status (0000h successful, FFFFh error)
  4658.  02h  4 BYTEs    (ret) ???
  4659.  04h    WORD    (call) socket handle
  4660.  06*h    WORD    (call) what (0 = receives, 1 = sends, 2 = both)
  4661.  
  4662. Format of Function 0026h/Subfunction 0018h data:
  4663. Offset    Size    Description    (Table 0428)
  4664.  00h 116 BYTEs    (ret) ???
  4665.  
  4666. Format of Function 0026h/Subfunction 0019h data:
  4667. Offset    Size    Description    (Table 0429)
  4668.  00h  4 BYTEs    (ret) ???
  4669.  04h    DWORD    (ret) task handle of ???
  4670.  
  4671. Format of Function 0026h/Subfunction 001Ah data:
  4672. Offset    Size    Description    (Table 0430)
  4673.  00h 38 BYTEs    (ret) ???
  4674.  
  4675. Format of Function 0026h/Subfunction 001Bh data:
  4676. Offset    Size    Description    (Table 0431)
  4677.  00h 10 BYTEs    (ret) ???
  4678.  
  4679. Format of Function 0026h/Subfunction 001Dh return data [array]:
  4680. Offset    Size    Description    (Table 0432)
  4681.  00h    WORD    ??? or FFFFh if end of array
  4682.  02h  7 BYTEs    ???
  4683.  09h 27 BYTEs    ASCIZ name of service
  4684.  
  4685. Format of Function 0026h/Subfunction 0024h return data:
  4686. Offset    Size    Description    (Table 0433)
  4687.  00h    var    ASCIZ username
  4688.  
  4689. Format of Function 0026h/Subfunction 0030h data:
  4690. Offset    Size    Description    (Table 0434)
  4691.  00h    WORD    (call) UID or 0000h for current user
  4692.         (ret) ???
  4693.  02h    WORD    (ret) UID
  4694.  04h  6 BYTEs    (ret) ???
  4695.  0Ah    var    (ret) ASCIZ username
  4696.     var    (ret) ASCIZ encrypted password
  4697.     var    (ret) ASCIZ initial ("home") directory
  4698.  
  4699. Format of Function 0026h/Subfunction 0031h ("sethostpath") data:
  4700. Offset    Size    Description    (Table 0435)
  4701.  00h   4 BYTEs    ???
  4702.  04h 144 BYTEs    ASCIZ ???
  4703.  
  4704. Format of Function 0026h/Subfunction 0034h data:
  4705. Offset    Size    Description    (Table 0436)
  4706.  00h  1-3 BYTEs IP network number of caller's machine (low byte first)
  4707.  
  4708. Format of Function 0026h/Subfunction 0037h ("getnettimeout") return data:
  4709. Offset    Size    Description    (Table 0437)
  4710.  00h    WORD    (ret) timeout
  4711.  02h  2 BYTEs    (ret) ???
  4712.  
  4713. Format of Function 0026h/Subfunction 0038h return data:
  4714. Offset    Size    Description    (Table 0438)
  4715.  00h    BYTE    ???
  4716.  01h  4 BYTEs    IP address
  4717.  05h    var    ASCIZ machine name
  4718.     ???
  4719.  
  4720. Format of Function 0026h/Subfunction 0039h ("getuid") return data:
  4721. Offset    Size    Description    (Table 0439)
  4722.  00h    WORD    user ID
  4723.  02h  2 BYTEs    ???
  4724. SeeAlso: #0435,#0438
  4725.  
  4726. (Table 0440)
  4727. Values for DESQview/X socket error code:
  4728.  0000h    successful
  4729.  0009h    "BADF" bad file handle
  4730.  000Ch    "ENOMEM" out of memory
  4731.  000Eh    "EFAULT" bad address
  4732.  0016h    "EINVAL" invalid argument
  4733.  0018h    "EMFILE" too many open files
  4734.  0020h    "EPIPE" ??? broken pipe
  4735.  0023h    "EWOULDBLOCK" operation cannot be completed at this time
  4736.  0024h    "EINPROGRESS" operation now in progress
  4737.  0026h    "ENOTSOCK" socket invalid
  4738.  0028h    "EMSGSIZE" message too long to send atomically
  4739.  002Ch    "ESOCKTNOSUPPORT" socket type not supported
  4740.  002Fh    "EAFNOSUPPORT" address family not supp. by protocol fam.
  4741.  0031h    "EDOM" argument too large
  4742.  0038h    "EISCONN" socket is already connected
  4743.  0039h    "ENOTCONN" socket is not connected
  4744.  
  4745. Format of DESQview/X Socket Context Record:
  4746. Offset    Size    Description    (Table 0441)
  4747.  00h    DWORD    pointer to next Socket Context Record, 0000h:0000h if last
  4748.  04h    WORD    SFT index for socket, 00FFh if not connected, FFFFh if detached
  4749.  06h    WORD    PSP segment of owner or 0000h
  4750.  08h    WORD    mapping context of owning window (see #0306 at AX=1016h)
  4751.  0Ah  2 BYTEs    ???
  4752.  0Ch    WORD    address family
  4753.  0Eh    WORD    socket type
  4754.  10h    WORD    protocol
  4755.  12h    WORD    socket state
  4756.         0001h created
  4757.         0002h bound
  4758.         0003h listening???
  4759.         0005h connected
  4760.  14h    DWORD    timer object handle
  4761.  18h    DWORD    object handle (mailbox???)
  4762.  1Ch    DWORD    object handle of parent of above object or 0000h:0000h
  4763.  20h    DWORD    pointer to ??? or 0000h
  4764.  24h  6 BYTEs    ???
  4765.  2Ah    WORD    file handle for socket or FFFFh
  4766.  2Ch  2 BYTEs    ???
  4767.  2Eh    WORD    nonzero if socket nonblocking
  4768. ---network connections only---
  4769.  30h  2 BYTEs    ???
  4770.  32h    WORD    ???
  4771.  34h  4 BYTEs    (big-endian) IP address of remote
  4772.  38h  6 BYTEs    ???
  4773. --------Q-15DE2F-----------------------------
  4774. INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
  4775.     AX = DE2Fh
  4776. Return: BX = status
  4777.         0001h keyboard focus has been given to a direct window since the
  4778.         last call
  4779.         0000h if not
  4780. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  4781.     Quarterdeck stated that this call would not be available under future
  4782.       versions of DESQview Classic, but it is still present in v2.60
  4783. --------Q-15DE30-----------------------------
  4784. INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
  4785.     AX = DE30h
  4786. Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
  4787. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  4788.     you must first check the DESQview version to verify that it is 2.50 or
  4789.       greater
  4790. SeeAlso: INT 21/AH=2Bh/CX=4445h
  4791. --------Q-15DE31-----------------------------
  4792. INT 15 - DESQview/X v1.10 - ???
  4793.     AX = DE31h
  4794.     CX = ???
  4795.         0000h ???
  4796.         nonzero ???
  4797.     ???
  4798. Return: ???
  4799. --------b-15DF-------------------------------
  4800. INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
  4801.     AH = DFh
  4802.     AL = function
  4803.         00h turn on Turbo mode
  4804.         01h turn off Turbo mode
  4805.         02h set Turbo mode according to hardware switch
  4806. SeeAlso: INT 13/AX=FFFFh
  4807. --------b-15E00F-----------------------------
  4808. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  4809.     AX = E00Fh
  4810.     ES:BX -> start of 2nd processor's execution
  4811. Return: AL = status
  4812.         0Fh successful
  4813.         00h failure
  4814. SeeAlso: AX=E10Eh,AX=E200h
  4815. --------b-15E10E-----------------------------
  4816. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  4817.     AX = E10Eh
  4818.     ES:BX -> start of 2nd processor's execution
  4819. Return: AL = status
  4820.         0Fh successful (halted)
  4821.         00h failure (not halted)
  4822. SeeAlso: AX=E00Fh,AX=E200h
  4823. --------b-15E200-----------------------------
  4824. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  4825.     AX = E200h
  4826. Return: AX bit 15 set if 2nd processor available
  4827. SeeAlso: AX=E00Fh,AX=E10Eh
  4828. --------b-15E4-------------------------------
  4829. INT 15 - Tandy??? - ???
  4830.     AH = E4h
  4831.     AL = subfunction
  4832.         21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
  4833.     DL = ???
  4834. Return: DL = 00h if successful???
  4835. Note:    the section of code in 386MAX which calls these functions also checks
  4836.       whether the ROM BIOS has both Tandy and Phoenix Technologies
  4837.       signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
  4838.       support this function, however, returning the usual CF set/AH=86h for
  4839.       "unsupported function".
  4840. --------b-15E4-------------------------------
  4841. INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
  4842.     AH = E4h
  4843.     AL = subfunction
  4844.         00h get ???
  4845.         Return: CF clear
  4846.             AH = 00h
  4847.             CX = 0000h
  4848.             BX = ??? (read from [XBDA:0094h])
  4849.         01h,02h unsupported by this ROM version
  4850.         Return: CF set, AH = 86h
  4851.         80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
  4852.         Return: CF clear
  4853.             AH = 00h
  4854.             CX = 0000h
  4855.             BX = ???
  4856.         81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
  4857.         Return: CF set, AH = 86h
  4858. Notes:    functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
  4859.     these functions are not supported by the 7/26/93 LTE Lite 386 ROM
  4860. --------b-15E800-----------------------------
  4861. INT 15 - Compaq Contura - GET ???
  4862.     AX = E800h
  4863. Return: AX = 0000h
  4864.     BH = 00h
  4865.     BL = ??? (read from port 0C7Ch)
  4866.     CH = ???
  4867.     CL = ???
  4868.     DX = 0000h
  4869. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  4870. --------b-15E800-----------------------------
  4871. INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE???
  4872.     AX = E800h
  4873.     BX = ??? (0000h)
  4874. Return: CF clear if successful
  4875.         BH = 02h
  4876.         BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h)
  4877.     CF set on error
  4878.     others???
  4879. Notes:    used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether
  4880.       the Enhanced Parallel Port expected by that driver is available
  4881.     used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether
  4882.       volume control hardware expected by that driver is available
  4883. --------b-15E800-----------------------------
  4884. INT 15 - Compaq Prolinea - GET ???
  4885.     AX = E800h
  4886.     BX = ??? (1369h)
  4887. Return: BH = 01h
  4888.     BL = ???
  4889.     others???
  4890. Note:    used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether
  4891.       the fix that driver applies is required (will not install if BX on
  4892.       return is other than 010Eh or 010Fh)
  4893. --------b-15E801-----------------------------
  4894. INT 15 - Compaq Contura - GET ???
  4895.     AX = E801h
  4896. Return: CF clear
  4897.     AX = extended memory in K (read from CMOS locations 30h and 31h)
  4898.     BH = ???
  4899.     BL = ???
  4900.     CX = extended memory in K (read from CMOS locations 17h and 18h)
  4901.     DX = ???
  4902. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  4903. SeeAlso: AX=E802h"Compaq"
  4904. --------b-15E801-----------------------------
  4905. INT 15 - Dell XPS P90 - DISPLAY MEMORY FOR >64M CONFIGURATIONS
  4906.     AX = E801h
  4907. Return: AX = extended memory size in K??? (max 3C00h = 15MB)
  4908.     BX = extended memory size in 64K blocks???
  4909. Note:    supported by the A03 level (6/14/94) and later XPS P90 BIOSes
  4910. SeeAlso: AX=E820h"Dell"
  4911. --------b-15E802-----------------------------
  4912. INT 15 - Compaq Contura - GET ???
  4913.     AX = E802h
  4914. Return: CF clear
  4915.     AX = 0000h
  4916.     BX = ???
  4917.     CX = 0000h
  4918. Note:    this function is also supported by the LTE Lite 25c, 25E, and 486; not
  4919.       supported by LTE Lite 20 and 25.
  4920. SeeAlso: AX=E801h"Compaq"
  4921. --------b-15E820-----------------------------
  4922. INT 15 - Dell XPS P90 - GET MEMORY MAP
  4923.     AX = E820h
  4924.     EDX = 534D4150h ('SMAP')
  4925.     EBX = ??? or 00000000h for default
  4926.     ECX = number of bytes to copy
  4927.     ES:DI -> buffer for result
  4928. Return: CF clear if successful
  4929.         ES:DI buffer filled
  4930.         EBX = next offset from which to copy or 00000000h if all done
  4931.         high word of ECX may be cleared
  4932.     CF set on error
  4933.         AH = error code (86h) (see #0372 at INT 15/AH=80h)
  4934. Notes:    supported by the A03 level (6/14/94) and later XPS P90 BIOSes
  4935.     a maximum of 20 bytes will be transferred at one time, even if ECX is
  4936.       higher
  4937. SeeAlso: AX=E801h"Dell"
  4938. --------m-15F200CX454D-----------------------
  4939. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALISATION CHECK ???
  4940.     AX = F200h
  4941.     CX = 454Dh
  4942. Return: CF clear if hardware already initialised
  4943.         BX = upper RAM areas in use
  4944.         bit 0: C000-C3FF
  4945.         bit 1: C400-C7FF
  4946.         ...
  4947.         bit 11: EC00-EFFF
  4948.     CF set if hardware not initialised yet
  4949. --------B-1600-------------------------------
  4950. INT 16 - KEYBOARD - GET KEYSTROKE
  4951.     AH = 00h
  4952. Return: AH = BIOS scan code
  4953.     AL = ASCII character
  4954. Notes:    on extended keyboards, this function discards any extended keystrokes,
  4955.       returning only when a non-extended keystroke is available
  4956.     the BIOS scan code is usually, but not always, the same as the hardware
  4957.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  4958.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  4959.       differs for shifted special keys.
  4960. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,INT 18/AH=00h
  4961. --------B-1601-------------------------------
  4962. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  4963.     AH = 01h
  4964. Return: ZF set if no keystroke available
  4965.     ZF clear if keystroke available
  4966.         AH = BIOS scan code
  4967.         AL = ASCII character
  4968. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  4969.       however, any extended keystrokes which are not compatible with 83/84-
  4970.       key keyboards are removed in the process of checking whether a
  4971.       non-extended keystroke is available
  4972. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  4973. --------B-1602-------------------------------
  4974. INT 16 - KEYBOARD - GET SHIFT FLAGS
  4975.     AH = 02h
  4976. Return: AL = shift flags (see #0442)
  4977. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h
  4978.  
  4979. Bitfields for keyboard shift flags:
  4980. Bit(s)    Description    (Table 0442)
  4981.  7    Insert active
  4982.  6    CapsLock active
  4983.  5    NumLock active
  4984.  4    ScrollLock active
  4985.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  4986.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  4987.  1    left shift key pressed
  4988.  0    right shift key pressed
  4989. SeeAlso: #0447,#2345
  4990. --------B-1603-------------------------------
  4991. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  4992.     AH = 03h
  4993.     AL = subfunction
  4994.         00h set default delay and rate (PCjr and some PS/2)
  4995.         01h increase delay before repeat (PCjr)
  4996.         02h decrease repeat rate by factor of 2 (PCjr)
  4997.         03h increase delay and decrease repeat rate (PCjr)
  4998.         04h turn off typematic repeat (PCjr and some PS/2)
  4999.         05h set repeat rate and delay (AT,PS)
  5000.         BH = delay value (00h = 250ms to 03h = 1000ms)
  5001.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  5002.         06h get current typematic rate and delay (newer PS/2s)
  5003.         Return: BL = repeat rate (see above)
  5004.             BH = delay (see above)
  5005. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  5006.       supported
  5007. SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
  5008. --------B-1604-------------------------------
  5009. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  5010.     AH = 04h
  5011.     AL = keyclick state
  5012.         00h off
  5013.         01h on
  5014. SeeAlso: AH=03h,AH=04h"K3PLUS"
  5015. --------K-1604-------------------------------
  5016. INT 16 - K3PLUS v6.22+ - SET KEYCLICK
  5017.     AH = 04h
  5018.     AL = keyclick state
  5019.         00h keyclick off, leave loudness setting unchanged
  5020.         01h keyclick on, leave loudness setting unchanged
  5021.         else
  5022.            bit 0: keyclick enabled if set
  5023.            bits 7-1: new keyclick loudness (non-zero)
  5024. Note:    Applications which try to set a new loudness, but are unsure of the
  5025.       results of other INT 16/AH=04h implementations, should set the new
  5026.       loudness first, and then call this function again with AL=01h or
  5027.       AL=00h
  5028. SeeAlso: AH=03h,AH=04h"KEYBOARD"
  5029. --------B-1605-------------------------------
  5030. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  5031.     AH = 05h
  5032.     CH = scan code
  5033.     CL = ASCII character
  5034. Return: AL = status
  5035.         00h if successful
  5036.         01h if keyboard buffer full
  5037. Notes:    under DESQview, a number of "keystrokes" invoke specific
  5038.       DESQview-related actions when they are read from the keyboard
  5039.       buffer (see #0443)
  5040.     similarly, some "keystrokes" invoke special functions on the HP 100LX
  5041.       and HP 200LX (see #0444)
  5042. SeeAlso: AH=00h,AH=25h"K3",AH=71h,AH=FFh,INT 15/AX=DE10h
  5043.  
  5044. (Table 0443)
  5045. Values for pseudo-keystrokes for DESQview:
  5046.  38FBh or FB00h    switch to next window (only if main menu already popped up)
  5047.  38FCh or FC00h    pop up DESQview main menu
  5048.  38FEh or FE00h    close the current window
  5049.  38FFh or FF00h    pop up DESQview learn menu
  5050.  
  5051. (Table 0444)
  5052. Values for pseudo-keystrokes for HP 100LX/200LX:
  5053.  EE00h    pop up topcard display and set other system manager applications
  5054.       into sleep mode
  5055. --------B-1605-------------------------------
  5056. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  5057.     AH = 05h
  5058.     AL = function
  5059.         01h set keyboard layout to French
  5060.         02h set keyboard layout to German
  5061.         03h set keyboard layout to Italian
  5062.         04h set keyboard layout to Spanish
  5063.         05h set keyboard layout to UK
  5064.         80h check if function supported
  5065.         Return: AL <> 80h if supported
  5066. Return: ???
  5067. Note:    this function is called by the DOS 3.2 KEYBxx.COM
  5068. SeeAlso: AH=92h,AH=A2h
  5069. --------B-1609-------------------------------
  5070. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  5071.     AH = 09h
  5072. Return: AL = supported keyboard functions (see #0445)
  5073. Notes:    this function is only available if bit 6 of the second feature byte
  5074.       returned by INT 15/AH=C0h is set (see #0383)
  5075.     reportedly, the Award Modular BIOS v4.50G returns the keyboard function
  5076.       flags in AH instead of AL, and provides this function even though
  5077.       its availability is not indicated by INT 15/AH=C0h
  5078. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  5079.  
  5080. Bitfields for supported keyboard functions:
  5081. Bit(s)    Description    (Table 0445)
  5082.  7    reserved
  5083.  6    INT 16/AH=20h-22h supported (122-key keyboard support)
  5084.  5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  5085.  4    INT 16/AH=0Ah supported
  5086.  3    INT 16/AX=0306h supported
  5087.  2    INT 16/AX=0305h supported
  5088.  1    INT 16/AX=0304h supported
  5089.  0    INT 16/AX=0300h supported
  5090. SeeAlso: #0385
  5091. --------B-160A-------------------------------
  5092. INT 16 - KEYBOARD - GET KEYBOARD ID
  5093.     AH = 0Ah
  5094. Return: BX = keyboard ID (see #0446)
  5095. Note:    check return value from AH=09h to determine whether this function is
  5096.       supported
  5097. SeeAlso: AH=09h
  5098.  
  5099. (Table 0446)
  5100. Values for keyboard ID:
  5101.  0000h    no keyboard attached
  5102.  41ABh    Japanese "G" keyboard (translate mode)
  5103.     MF2 Keyboard (usually in translate mode)
  5104.  54ABh    Japanese "P" keyboard (translate mode)
  5105.  83ABh    Japanese "G" keyboard (pass-through mode)
  5106.     MF2 Keyboard (pass-through mode)
  5107.  84ABh    Japanese "P" keyboard (pass-through mode)
  5108.  90ABh    old Japanese "G" keyboard
  5109.  91ABh    old Japanese "P" keyboard
  5110.  92ABh    old Japanese "A" keyboard
  5111. --------B-1610-------------------------------
  5112. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  5113.     AH = 10h
  5114. Return: AH = BIOS scan code
  5115.     AL = ASCII character
  5116. Notes:    if no keystroke is available, this function waits until one is placed
  5117.       in the keyboard buffer
  5118.     the BIOS scan code is usually, but not always, the same as the hardware
  5119.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  5120.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  5121.       differs for shifted special keys.
  5122.     unlike AH=00h, this function does not discard extended keystrokes
  5123.     INT 16/AH=09h can be used to determine whether this function is
  5124.       supported, but only on later model PS/2s
  5125. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h
  5126. --------B-1611-------------------------------
  5127. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  5128.     AH = 11h
  5129. Return: ZF set if no keystroke available
  5130.     ZF clear if keystroke available
  5131.         AH = BIOS scan code
  5132.         AL = ASCII character
  5133. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  5134.     unlike AH=01h, this function does not discard extended keystrokes
  5135.     some versions of the IBM BIOS Technical Reference erroneously report
  5136.       that CF is returned instead of ZF
  5137.     INT 16/AH=09h can be used to determine whether this function is
  5138.       supported, but only on later model PS/2s
  5139. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
  5140. --------B-1612-------------------------------
  5141. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  5142.     AH = 12h
  5143. Return: AL = shift flags 1 (same as returned by AH=02h) (see #0447)
  5144.     AH = shift flags 2 (see #0448)
  5145. Notes:    AL bit 3 set only for left Alt key on many machines
  5146.     AH bits 7 through 4 always clear on a Compaq SLT/286
  5147.     INT 16/AH=09h can be used to determine whether this function is
  5148.       supported, but only on later model PS/2s
  5149.     many BIOSes (including at least some versions of Phoenix and AMI) will
  5150.       destroy AH on return from functions higher than AH=12h, returning
  5151.       12h less than was in AH on entry (due to a chain of DEC/JZ
  5152.       instructions)
  5153. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh
  5154.  
  5155. Bitfields for keyboard shift flags 1:
  5156. Bit(s)    Description    (Table 0447)
  5157.  7    Insert active
  5158.  6    CapsLock active
  5159.  5    NumLock active
  5160.  4    ScrollLock active
  5161.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  5162.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  5163.  1    left shift key pressed
  5164.  0    right shift key pressed
  5165. SeeAlso: #0442,#0448
  5166.  
  5167. Bitfields for keyboard shift flags 2:
  5168. Bit(s)    Description    (Table 0448)
  5169.  7    SysReq key pressed (SysReq is often labeled SysRq)
  5170.  6    CapsLock pressed
  5171.  5    NumLock pressed
  5172.  4    ScrollLock pressed
  5173.  3    right Alt key pressed
  5174.  2    right Ctrl key pressed
  5175.  1    left Alt key pressed
  5176.  0    left Ctrl key pressed
  5177. SeeAlso: #0447
  5178. --------J-1613-------------------------------
  5179. INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
  5180.     AH = 13h
  5181.     AL = function
  5182.         00h set shift status
  5183.         DX = shift status (see #0449), must preserve internal status
  5184.               bits
  5185.         01h get shift status
  5186.         Return: DX = current shift status (see #0449)
  5187. Note:    these functions are supplied by the Japanese Front-End Processor
  5188. SeeAlso: AH=14h,INT 21/AX=6301h
  5189.  
  5190. Bitfields for DOS/V shift status:
  5191. Bit(s)    Description    (Table 0449)
  5192.  0    full-size rather than half-size
  5193.  2-1    character input mode
  5194.     00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
  5195.  5-3    internal status
  5196.  6    Romaji enabled
  5197.  7    Katakana to Kanji conversion enabled
  5198.  15-8    internal status
  5199. --------J-1614-------------------------------
  5200. INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
  5201.     AH = 14h
  5202.     AL = function
  5203.         00h enable display
  5204.         01h disable display
  5205.         02h get display state
  5206.         Return: AL = current state (00h enabled, 01h disabled)
  5207. Desc:    control the screen-bottom shift status row(s) for the Japanese
  5208.       Front-End Processor
  5209. SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
  5210. --------B-1620-------------------------------
  5211. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  5212.     AH = 20h
  5213. Return: AH = BIOS scan code (see AH=10h for details)
  5214.     AL = ASCII character
  5215. Note:    use AH=09h to determine whether this function is supported
  5216. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  5217. --------b-1620------------------------------------
  5218. INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
  5219.     AH = 20h
  5220.     AL = shift status (see #0450)
  5221. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  5222.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  5223.     the user can override the specified settings by pressing the keys
  5224.  
  5225. Bitfields for HUNTER 16 shift status:
  5226. Bit(s)    Description    (Table 0450)
  5227.  4    Scroll Lock on
  5228.  5    Num Lock on
  5229.  6    Caps Lock on
  5230. --------K-1620-------------------------------
  5231. INT 16 O - K3 v1.5+, K3PLUS v5.0+ - GET EXTENDED BUFFER STATE
  5232.     AH = 20h
  5233. Return: AX = K3 version
  5234.     ES:BX -> extended keyboard buffer start
  5235.     ES:DX -> extended keyboard buffer end
  5236.     ES:SI -> next keystroke
  5237.     ES:DI -> last keystroke in buffer
  5238.     CX = number of keystrokes in buffer
  5239. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  5240.       K3 extended German keyboard driver by Martin Gerdes published in c't
  5241.       magazine in 1988
  5242. Note:    this function is normally unsupported under K3PLUS v6.0+; use AX=AF20h
  5243.       instead
  5244. SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h
  5245. --------B-1621-------------------------------
  5246. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  5247.     AH = 21h
  5248. Return: ZF set if no keystroke available
  5249.     ZF clear if keystroke available
  5250.         AH = BIOS scan code
  5251.         AL = ASCII character
  5252. Notes:    use AH=09h to determine whether this function is supported
  5253.     some versions of the IBM BIOS Technical Reference erroneously report
  5254.       that CF is returned instead of ZF
  5255. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  5256. --------b-1621------------------------------------
  5257. INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
  5258.     AH = 21h
  5259.     AL = shift keys to control (see #0442)
  5260.     BL = shift state for disabled keys
  5261. Note:    If a bit in AL is set the key is disabled and set to the state of the
  5262.       corresponding bit in BL
  5263. SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
  5264. --------B-1622-------------------------------
  5265. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  5266.     AH = 22h
  5267. Return: AL = shift flags 1 (see #0447)
  5268.     AH = shift flags 2 (see #0448)
  5269. Note:    use AH=09h to determine whether this function is supported
  5270. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  5271. --------b-1622------------------------------------
  5272. INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
  5273.     AH = 22h
  5274.     AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
  5275.     BX = 0708h
  5276.     CX = 0910h
  5277.     DX = 1112h
  5278. Return: AL = 00h if successful
  5279. SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
  5280. --------b-1623------------------------------------
  5281. INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
  5282.     AH = 23h
  5283.     AL = new state of breakout (00h enabled, nonzero disabled)
  5284.     BX = 0708h
  5285.     CX = 0910h
  5286.     DX = 1112h
  5287. Return: AL = 00h if successful
  5288. Desc:    Enables or disables the emergency breakout feature, where the
  5289.       Hunter 16 at power on checks whether the X and P keys are pressed.
  5290.       If so the machine will boot rather than continue the running program
  5291. SeeAlso: AH=22h"HUNTER"
  5292. --------b-1624------------------------------------
  5293. INT 16 - HUNTER 16 - REDEFINE KEY CODES
  5294.     AH = 24h
  5295.     AL = Matrix Code (see #0451)
  5296.     BL = new Key code
  5297. Return: AL = status (00h successful, nonzero failed)
  5298. SeeAlso: AH=2Bh,AH=2Ch
  5299.  
  5300. (Table 0451)
  5301. Values for HUNTER 16 Matrix Code:
  5302.  Code  Key        Code    Key        Code    Key
  5303.  00h   Esc key        1Eh    Space        3Bh    L
  5304.  01h   1        21h    0        3Ch    ,
  5305.  02h   Q        22h    -        3Eh    Right shift
  5306.  03h   Tab        23h    '        42h    8
  5307.  04h   Num Lock        24h    Keypad 4    43h    7
  5308.  05h   \        25h    Enter        44h    U
  5309.  08h   LShift        26h    Keypad 7    45h    I
  5310.  09h   Ctrl        27h    .        46h    J
  5311.  0Ah   "Paw" key    28h    Keypad 1    47h    K
  5312.  0Bh   2        29h    Keypad 0    48h    M
  5313.  0Ch   W        2Ch    =        49h    N
  5314.  0Dh   A        2Dh    Backspace    4Ah    /
  5315.  0Eh   S        2Eh    Keypad 8    4Dh    6
  5316.  0Fh   Z        2Fh    Keypad 9    4Eh    5
  5317.  11h   Alt        30h    Keypad 5    4Fh    T
  5318.  16h   4        31h    Keypad 6    50h    Y
  5319.  17h   3        32h    Keypad 2    51h    G
  5320.  18h   E        33h    Keypad 3    52h    H
  5321.  19h   R        34h    Keypad .    53h    B
  5322.  1Ah   D        37h    9        54h    V
  5323.  1Bh   F        38h    O        55h    #
  5324.  1Ch   X        39h    P        58h    Pwr
  5325.  1Dh   C        3Ah    ;        59h    Shift Pwr
  5326. --------b-1625------------------------------------
  5327. INT 16 - HUNTER 16 - RESET KEYBOARD
  5328.     AH = 25h
  5329. Return: AL = 00h
  5330. Desc:    restores the standard keyboard layout after any remapping
  5331. SeeAlso: AH=24h,AH=2Bh,AH=2Ch
  5332. --------K-1625-------------------------------
  5333. INT 16 O - K3 v1.5+, K3PLUS v5.0+ - COPY INTO EXTENDED BUFFER
  5334.     AH = 25h
  5335.     CX = number of keystrokes to copy
  5336.     ES:SI -> buffer containing keystrokes
  5337. Return: CF clear if successful
  5338.     CF set on error (i.e. buffer full)
  5339.         CX = number of keystrokes NOT transferred
  5340.         ES:SI -> first keystroke not transferred
  5341. Note:    this function is normally unsupported under K3PLUS v6.0+; use AX=AF20h
  5342.       instead
  5343. SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h
  5344. --------b-1626------------------------------------
  5345. INT 16 - HUNTER 16 - CONTROL KEYCLICK
  5346.     AH = 26h
  5347.     AL = new state of keyclicks (00h disabled, 01h enabled)
  5348. Return: AL = 00h
  5349. SeeAlso: AH=2Ah
  5350. --------b-1627------------------------------------
  5351. INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
  5352.     AH = 27h
  5353.     AL = what to dump
  5354.         00h whole (virtual) window
  5355.         01h LCD window only
  5356. Return: AL = 00h
  5357. Desc:    control whether printscren dumps the whole 80x25 screen or only the
  5358.       part displayed in the LCD window
  5359. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  5360.       a 640x200 virtual screen
  5361. --------b-1629------------------------------------
  5362. INT 16 - HUNTER 16 - GET KEY REPEAT
  5363.     AH = 29h
  5364. Return: BL = Typematic rate (characters per second) (see #0452)
  5365.     BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
  5366. SeeAlso: AH=03h,AH=2Ah
  5367.  
  5368. (Table 0452)
  5369. Values for HUNTER 16 Typematic rate:
  5370.  00h    30.0     08h    15.0     10h    7.5     18h    3.7
  5371.  01h    26.7     09h    13.3     11h    6.7     19h    3.3
  5372.  02h    24.0     0Ah    12.0     12h    6.0     1Ah    3.0
  5373.  03h    21.8     0Bh    10.9     13h    5.5     1Bh    2.7
  5374.  04h    20.0     0Ch    10.0     14h    5.0     1Ch    2.5
  5375.  05h    18.5     0Dh     9.2     15h    4.6     1Dh    2.3
  5376.  06h    17.1     0Eh     8.6     16h    4.3     1Eh    2.1
  5377.  07h    16.0     0Fh     8.0     17h    4.0     1Fh    2.0
  5378. SeeAlso: AH=2Ah
  5379. --------b-162A------------------------------------
  5380. INT 16 - HUNTER 16 - CONTROL KEY REPEAT
  5381.     AH = 2Ah
  5382.     AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
  5383. SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
  5384. --------b-162B------------------------------------
  5385. INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
  5386.     AH = 2Bh
  5387.     AL = which key table to redefine
  5388.         00h unshifted
  5389.         01h shifted
  5390.         02h Numlock
  5391.     BH = standard scan code of key (00h-80h)
  5392.     BL = new scan code
  5393. Desc:    redefine the generated scan code from BH to BL
  5394. SeeAlso: AH=24h,AH=2Ah,AH=2Ch
  5395. --------b-162C------------------------------------
  5396. INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
  5397.     AH = 2Ch
  5398.     AL = Matrix code of key (see AH=29h)
  5399.     BL = new key code
  5400. Return: AL = status (00h success, nonzero failed)
  5401. Desc:    redefine the key code generated by holding the PAW key down and
  5402.       pressing the key in AL
  5403. SeeAlso: AH=24h,AH=2Bh
  5404. --------b-162D------------------------------------
  5405. INT 16 - HUNTER 16 - CONTROL BREAK KEYS
  5406.     AH = 2Dh
  5407.     AL = enabled break keys
  5408.         bit 0 Ctrl-C
  5409.         bit 1 Ctrl-Break
  5410.     BX = 0708h
  5411.     CX = 0910h
  5412.     DX = 1112h
  5413. Return: AL = status (00h success, FFh failed)
  5414. SeeAlso: AH=21h"HUNTER"
  5415. --------U-163577-----------------------------
  5416. INT 16 U - TextWare TWTSR - API
  5417.     AX = 3577h
  5418.     CX = function
  5419.         00CBh ???
  5420.         Return: AX = 0000h
  5421.             BX = 0000h
  5422.             DX:CX -> ???
  5423.         00CCh uninstall
  5424.         Return: AX = status
  5425.                 0000h successful
  5426.                 FFFDh unable to unload because vectors taken
  5427.         00CDh ???
  5428.         Return: AX = 0000h
  5429.             BX = 0000h
  5430.             DX:CX -> ???
  5431.         other
  5432.         Return: AX = 5345h ('SE')
  5433. Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
  5434.       popped up via hotkey
  5435. SeeAlso: AX=D724h
  5436. --------U-164252-----------------------------
  5437. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  5438.     AX = 4252h
  5439. Return: AX = 5242h if installed
  5440. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of the
  5441.       PC Magazine utility CAPTURE written by Tom Kihlken
  5442. SeeAlso: AX=4253h,AX=4254h
  5443. --------U-164253-----------------------------
  5444. INT 16 - TEXTCAP 2.0 - UNINSTALL
  5445.     AX = 4253h
  5446. Return: AX = segment of resident code
  5447. Notes:    the uninstall code does not check whether interrupt vectors have been
  5448.       chained by other programs
  5449.     the caller must free the main memory block (using the returned segment)
  5450. SeeAlso: AX=4252h,AX=4254h
  5451. --------U-164254-----------------------------
  5452. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  5453.     AX = 4254h
  5454. Return: AX = status
  5455.         4254h if screen dump will be written as soon as disk becomes idle
  5456.         5442h if screen dump written
  5457. SeeAlso: AX=4252h,AX=4253h
  5458. --------e-164500-----------------------------
  5459. INT 16 - Shamrock Software EMAIL - GET STATUS
  5460.     AX = 4500h
  5461.     DL = port number (01h = COM1)
  5462.     ES:BX -> 13-byte buffer for ASCIZ name
  5463. Return: AX = 4D00h if EMAIL installed on specified port
  5464.         ES:BX -> "" if no connection
  5465.           -> "*" if connection but caller has not identified name
  5466.           -> name otherwise
  5467.         CX = version (CH = major, CL = minor)
  5468.         DL = privilege level of user (00h = guest)
  5469.         DH = chosen language (00h German, 01h English)
  5470. SeeAlso: AX=4501h,AX=4502h
  5471. --------e-164501-----------------------------
  5472. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  5473.     AX = 4501h
  5474.     DL = port number (01h = COM1)
  5475. Return: AX = 4D00h if EMAIL installed on specified port
  5476.         BX = maximum connect time in clock ticks
  5477.         CX = maximum connect time for guests (without name) in clock ticks
  5478.         DX = elapsed connect time of current user in clock ticks
  5479. SeeAlso: AX=4500h
  5480. --------e-164502-----------------------------
  5481. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  5482.     AX = 4502h
  5483.     DL = port number (01h = COM1)
  5484. Return: AX = 4D00h if EMAIL installed on specified port
  5485.         BL = current value of serial port's Line Control Register
  5486.         BH = flags (see #0453)
  5487.         CX = selected country code (33 = France, 49 = Germany, etc)
  5488.         DX = baudrate divisor (115200/DX = baudrate)
  5489. SeeAlso: AX=4500h
  5490.  
  5491. Bitfields for Shamrock Software EMAIL flags:
  5492. Bit(s)    Description    (Table 0453)
  5493.  0    ISO code
  5494.  1    pause
  5495.  2    linefeed
  5496.  3    ANSI sequences
  5497. --------e-164503-----------------------------
  5498. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  5499.     AX = 4503h
  5500.     DL = port number (01h = COM1)
  5501.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  5502.     ES:BX -> ASCIZ string with new user command-word
  5503. Return: AX = 4D00h if EMAIL installed on specified port
  5504. Notes:    a single user command (consisting of only uppercase letters and digits)
  5505.       may be defined, and remains valid until it is overwritten or the
  5506.       EMAIL program terminates; the user command must be activated by
  5507.       calling AX=4504h at least once.
  5508.     an existing command word may be redefined with this function
  5509. SeeAlso: AX=4504h,AX=4505h
  5510. --------e-164504-----------------------------
  5511. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  5512.     AX = 4504h
  5513.     DL = port number (01h = COM1)
  5514.     ES:BX -> 80-byte buffer for ASCIZ user input line
  5515. Return: AX = 4D00h if EMAIL installed on specified port
  5516.         DL = flags
  5517.         bit 0: user function supported (always set)
  5518.         bit 1: user entered user-function command word
  5519.         if DL bit 1 set,
  5520.         ES:BX buffer contains line entered by user which begins with
  5521.             the defined command word and has been converted to all
  5522.             caps
  5523. Note:    caller must process the returned commandline and invoke AX=4505h
  5524.       within five seconds with the result of that processing
  5525. SeeAlso: AX=4503h,AX=4505h
  5526. --------e-164505-----------------------------
  5527. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  5528.     AX = 4505h
  5529.     DL = port number (01h = COM1)
  5530.     DH = error flag
  5531.         bit 3: set on error
  5532.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  5533. Return: AH = 4Dh if EMAIL installed on specified port
  5534.     AL = status
  5535.         00h successful
  5536.         02h unable to perform function (timeout, prev call not complete)
  5537.         other error
  5538. Notes:    if the error flag in DH is set, the string is not sent and an error
  5539.       message is generated instead; if this function is not called within
  5540.       five seconds of AX=4504h, EMAIL automatically generates an error
  5541.       message
  5542.     the string is copied into an internal buffer, allowing this function's
  5543.       caller to continue immediately
  5544. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  5545. --------e-164506-----------------------------
  5546. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  5547.     AX = 4506h
  5548.     DL = port number (01h = COM1)
  5549.     ES:BX -> 13-byte buffer for ASCIZ filename
  5550. Return: AX = 4D00h if EMAIL installed on specified port
  5551.         DH = Xmodem status
  5552.         00h no XGET command given
  5553.         01h XGET in progress
  5554.         02h XGET completed successfully
  5555.         ES:BX buffer filled with last filename given to XGET command
  5556.         (without path)
  5557. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  5558.       return DH=00h
  5559. SeeAlso: AX=4500h,INT 17/AX=2408h
  5560. --------K-164D4F-----------------------------
  5561. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  5562.     AX = 4D4Fh
  5563. Return: AX = 6F6Dh if installed
  5564.         ES = segment of resident code
  5565. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  5566. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  5567. --------J-165000-----------------------------
  5568. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  5569.     AX = 5000h
  5570.     BX = country code
  5571.         0001h USA (English), 0051h Japan
  5572. Return: AL = status
  5573.         00h successful
  5574.         01h bad country code
  5575.         02h other error
  5576. SeeAlso: AX=5001h,INT 10/AX=5000h,INT 17/AX=5000h
  5577. --------J-165001-----------------------------
  5578. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  5579.     AX = 5001h
  5580. Return: AL = status
  5581.         00h successful
  5582.         BX = country code
  5583.         02h error
  5584. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  5585. --------J-1651-------------------------------
  5586. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  5587.     AH = 51h
  5588. Return: AL = standard shift key states (see #0442,#0447)
  5589.     AH = Kana lock (00h off, 01h on)
  5590. SeeAlso: AH=02h,AH=12h,AH=22h
  5591. --------t-165453BX5242-----------------------
  5592. INT 16 - TSRBONES - INSTALLATION CHECK
  5593.     AX = 5453h ('TS')
  5594.     BX = 5242h ('RB')
  5595.     CX = 4F4Eh ('ON')
  5596.     DX = 4553h ('ES')
  5597. Return: AX = 4553h if installed
  5598.     BX = 4F4Eh if installed
  5599.     CX = 5242h if installed
  5600.     DX = 5453h if installed
  5601. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  5602. Note:    these values are the default as the TSRBONES package is distributed,
  5603.       but will normally be changed when implementing an actual TSR with
  5604.       the TSRBONES skeleton
  5605. SeeAlso: INT 2D"AMIS"
  5606. --------A-165500-----------------------------
  5607. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  5608.     AX = 5500h
  5609. Return: AX = 4D53h ('MS') if keyboard TSR present
  5610. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  5611.       that are present through this call.
  5612.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  5613.       handlers; otherwise it assumes that the TSR will handle the keyboard
  5614. SeeAlso: AX=55FFh,INT 1A/AX=3601h
  5615. --------A-1655FE-----------------------------
  5616. INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR
  5617.     AX = 55FEh
  5618.     DX = function
  5619.         0000h initialize
  5620.         ES:BX -> ??? function
  5621.         ES:CX -> ??? structure
  5622.         FFFFh shutdown/reset
  5623. Return: AX = result
  5624.         4D4Bh only the INT 1B handler will be installed.
  5625.         other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C
  5626.           are installed
  5627. Notes:    The pointer in ES:CX seems to point at a structure defining a callback
  5628.       function when new keyboard keys are pressed. If a TSR returns
  5629.       AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
  5630.     these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit,
  5631.       and before/after shelling out
  5632.     since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs
  5633.       will also cause this interface to be invoked
  5634. SeeAlso: INT 16/AX=5500h,INT 1A/AX=3601h
  5635. --------U-1655FF-----------------------------
  5636. INT 16 C - Microsoft Word - TSR COOPERATION???
  5637.     AX = 55FFh
  5638.     BX >= 0004h (version of Microsoft Word [BL = major] ???)
  5639.     CX = function
  5640.         0000h set ??? flag
  5641.         other clear ??? flag
  5642. Notes:    hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j,
  5643.       distributed with PC Tools v7, as well as the Trusted Access
  5644.       SCRNBLNK.COM; this may be part of the standard TesSeRact library
  5645.     known to be called by the German edition of Microsoft Word 5.0
  5646. SeeAlso: AX=5500h,INT 2F/AX=5453h
  5647. --------c-165758BX4858-----------------------
  5648. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  5649.     AX = 5758h
  5650.     BX = 4858h ('HX')
  5651.     DX = 4443h ('DC')
  5652.     CX <> 5758h
  5653. Return: BX = 6878h if installed
  5654.     CX = 6463h if installed
  5655.         AX = code segment of TSR
  5656.         CX = internal version??? (v3.00 returns 0100h)
  5657. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  5658. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  5659.     the cache statistics are located early in the segment pointed at by
  5660.       AX on return
  5661. SeeAlso: INT 2F/AX=5758h
  5662. ----------165758BX5754-----------------------
  5663. INT 16 U - Netroom ??? - ???
  5664.     AX = 5758h
  5665.     BX = 5754h
  5666.     ???
  5667. Return: ???
  5668. ----------165758BX5755-----------------------
  5669. INT 16 U - Netroom ??? - ???
  5670.     AX = 5758h
  5671.     BX = 5755h
  5672.     DS:SI -> ???
  5673. Return: ???
  5674. ----------165758BX5756-----------------------
  5675. INT 16 U - Netroom ??? - INSTALLATION CHECK
  5676.     AX = 5758h
  5677.     BX = 5756h
  5678. Return: BX <> 5756h if installed
  5679. --------m-165758BX5858-----------------------
  5680. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  5681.     AX = 5758h
  5682.     BX = 5858h
  5683. Return: CF clear
  5684.     DX:BX -> saved copy of interrupt vector table
  5685. Note:    the installation check consists of calling this function and comparing
  5686.       BX against 5858h on return; if it has changed, PRENET is installed
  5687. SeeAlso: AX=5758h/BX=5859h
  5688. Index:    installation check;Netroom PRENET
  5689. --------m-165758BX5859-----------------------
  5690. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  5691.     AX = 5758h
  5692.     BX = 5859h
  5693. Return: CF clear
  5694.     DX:BX -> saved copy of interrupt vector table
  5695. Note:    the installation check consists of calling this function and comparing
  5696.       BX against 5859h on return; if it has changed, POSTNET is installed
  5697. SeeAlso: AX=5758h/BX=5858h
  5698. Index:    installation check;Netroom POSTNET
  5699. --------U-166969BX6968-----------------------
  5700. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  5701.     AX = 6969h
  5702.     BX = 6968h
  5703. Return: resident code unhooked, but not removed from memory
  5704. Index:    uninstall;BACKTALK
  5705. --------U-166969BX6969-----------------------
  5706. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  5707.     AX = 6969h
  5708.     BX = 6969h
  5709.     DX = 0000h
  5710. Return: DX nonzero if installed
  5711.         BX = CS of resident code
  5712.         DX = PSP segment of resident code
  5713.         DS:SI -> ASCIZ identification string "CPoint Talk"
  5714. --------i-166A6B-----------------------------
  5715. INT 16 U - FastJuice - DISABLE/UNLOAD???
  5716.     AX = 6A6Bh
  5717. Return: ???
  5718. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  5719. SeeAlso: AX=7463h
  5720. Index:    uninstall;FastJuice
  5721. --------G-166C63-----------------------------
  5722. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  5723.     AX = 6C63h ('lc')
  5724. Return: AX = 4C43h ('LC') if installed
  5725. Program: TMED is a freeware resident memory editor by Liang Chen
  5726. --------b-166F00-----------------------------
  5727. INT 16 - HP Vectra EX-BIOS - "F16_INQUIRE" - Extended BIOS INSTALLATION CHECK
  5728.     AX = 6F00h
  5729.     BX <> 4850h (usually set to 0000h for simplicity)
  5730. Return: BX = 4850h ("HP") if present
  5731. Notes:    called by recent MS Mouse drivers looking for an HP-HIL mouse
  5732.     supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  5733. SeeAlso: AX=6F01h,AX=6F04h,AX=6F07h,AX=6F09h,AX=6F0Dh,AX=6F11h,AX=6F12h
  5734. SeeAlso: INT 14/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h
  5735. SeeAlso: INT 6F/AH=00h"HP Vectra"
  5736. --------b-166F01-----------------------------
  5737. INT 16 - HP Vectra EX-BIOS - "F16_DEF_ATTR" - GET DEFAULT TYPEMATIC VALUES
  5738.     AX = 6F01h
  5739. Return: AH = 00h (successful)
  5740.     CX = 0004h (size of returned buffer)
  5741.     ES:SI -> buffer for typematic info (see #0454)
  5742. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  5743. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  5744.  
  5745. Format of HP Vectra EX-BIOS typematic info:
  5746. Offset    Size    Description    (Table 0454)
  5747.  00h    BYTE    delay before repeat for all non-Cursor Control Pad keys
  5748.         (see #0455)
  5749.  01h    BYTE    typematic rate for all non-Cursor Control Pad keys (see #0456)
  5750.  02h    BYTE    delay before repeat for Cursor Control Pad keys    (see #0457)
  5751.  03h    BYTE    typematic rate for Cursor Control Pad keys (see #0456)
  5752.  
  5753. (Table 0455)
  5754. Values for HP Vectra EX-BIOS non-CCP delay time:
  5755.  00h    17 ms
  5756.  01h    150 ms
  5757.  02h    283 ms
  5758.  03h    417 ms
  5759.  04h    550 ms
  5760.  05h    683 ms
  5761.  06h    817 ms
  5762.  07h    950 ms
  5763.  08h    1083 ms
  5764.  09h    1217 ms
  5765.  0Ah    1350 ms
  5766.  0Bh    1483 ms
  5767.  0Ch    1617 ms
  5768.  0Dh    1750 ms
  5769.  0Eh    1883 ms
  5770.  0Fh    2017 ms
  5771. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  5772.       double the times if set to 30 Hz
  5773. SeeAlso: #0454,#0456,#0457
  5774.  
  5775. (Table 0456)
  5776. Values for HP Vectra EX-BIOS typematic rate:
  5777.  00h    60 / sec
  5778.  01h    30 / sec
  5779.  02h    20
  5780.  03h    15
  5781.  04h    12
  5782.  05h    10
  5783.  06h    8.57
  5784.  07h    7.5
  5785.  08h    6.66
  5786.  09h    6 / sec
  5787.  0Ah    5.45
  5788.  0Bh    5
  5789.  0Ch    4.62
  5790.  0Dh    4.28
  5791.  0Eh    4 / sec
  5792.  0Fh    typematic disabled
  5793. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  5794.       halve the rates if set to 30 Hz
  5795. SeeAlso: #0455,#0457
  5796.  
  5797. (Table 0457)
  5798. Values for HP Vectra EX-BIOS CCP delay time:
  5799.  00h    17 ms
  5800.  01h    83 ms
  5801.  02h    150 ms
  5802.  03h    217 ms
  5803.  04h    283 ms
  5804.  05h    350 ms
  5805.  06h    417 ms
  5806.  07h    483 ms
  5807.  08h    550 ms
  5808.  09h    617 ms
  5809.  0Ah    683 ms
  5810.  0Bh    750 ms
  5811.  0Ch    817 ms
  5812.  0Dh    883 ms
  5813.  0Eh    950 ms
  5814.  0Fh    1017 ms
  5815. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  5816.       double the times if set to 30 Hz
  5817. SeeAlso: #0455,#0456
  5818. --------b-166F02-----------------------------
  5819. INT 16 - HP Vectra EX-BIOS - "F16_GET_ATTR" - GET CURRENT TYPEMATIC VALUES
  5820.     AX = 6F02h
  5821. Return: AH = 00h (successful)
  5822.     CX = 0004h (size of returned buffer)
  5823.     ES:SI -> buffer for typematic info (see #0454)
  5824. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  5825. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  5826. SeeAlso: AX=6F00h,AX=6F01h,AX=6F03h
  5827. --------b-166F03-----------------------------
  5828. INT 16 - HP Vectra EX-BIOS - "F16_SET_ATTR" - SET TYPEMATIC VALUES
  5829.     AX = 6F03h
  5830.     ES:SI -> buffer containing typematic info (see #0454)
  5831. Return: AH = 00h (successful)
  5832. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  5833. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  5834. SeeAlso: AX=6F00h,AX=6F01h,AX=6F02h
  5835. --------b-166F04-----------------------------
  5836. INT 16 - HP Vectra EX-BIOS - "F16_DEF_MAPPING" - GET DEFAULT KEY MAPPINGS
  5837.     AX = 6F04h
  5838.     ES:SI -> mapping buffer (see #0458)
  5839. Return: AH = 00h (successful)
  5840.     CX = 001Eh (number of bytes in buffer)
  5841.     ES:SI buffer filled
  5842. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  5843.     the HIL input system translates the HIL keyboard events to simulate
  5844.       an IBM-compatible keyboard; the translation can be altered
  5845.       dynamically by applications
  5846. SeeAlso: AX=6F00h,AX=6F05h,AX=6F06h
  5847.  
  5848. Format of HP Vectra EX-BIOS keyboard mapping info:
  5849. Offset    Size    Description    (Table 0458)
  5850.  00h  3 WORDs    entry for V_QWERTY driver (IP, CS, DS)
  5851.  06h  3 WORDs    entry for V_SOFTKEY driver (IP, CS, DS)
  5852.  0Ch  3 WORDs    entry for V_FUNCTION driver
  5853.  12h  3 WORDs    entry for V_NUMPAD driver
  5854.  18h  3 WORDs    entry for V_CCP driver
  5855. --------b-166F05-----------------------------
  5856. INT 16 - HP Vectra EX-BIOS - "F16_GET_MAPPING" - GET CURRENT KEY MAPPINGS
  5857.     AX = 6F05h
  5858.     ES:SI -> mapping buffer (see #0458)
  5859. Return: AH = 00h (successful)
  5860.     CX = 001Eh (number of bytes in buffer)
  5861.     ES:SI buffer filled
  5862. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  5863. SeeAlso: AX=6F04h,AX=6F06h
  5864. --------b-166F06-----------------------------
  5865. INT 16 - HP Vectra EX-BIOS - "F16_SET_MAPPING" - SET KEY MAPPINGS
  5866.     AX = 6F06h
  5867.     CX = number of bytes in buffer (001Eh)
  5868.     ES:SI -> mapping buffer (see #0458)
  5869. Return: AH = 00h (successful)
  5870. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  5871.     any application which modifies the key mappings should restore them
  5872.       before terminating
  5873.     drivers installed with this function are assured of 32 bytes of stack
  5874.       space when they are invoked
  5875. SeeAlso: AX=6F04h,AX=6F05h,AX=6F07h
  5876. --------b-166F07-----------------------------
  5877. INT 16 - HP Vectra EX-BIOS - "F16_SET_XLATORS" - SET CCP AND SOFTKEY PADS
  5878.     AX = 6F07h
  5879.     BL = translation to set (see #0459)
  5880. Return: AH = 00h (successful)
  5881. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  5882.     this function may no longer work properly if the application has
  5883.       modified the key mappings with AX=6F06h
  5884. SeeAlso: AX=6F06h,AX=6F09h
  5885.  
  5886. (Table 0459)
  5887. Values for HP Vectra keyboard translation specifier:
  5888.  00h    map V_CCP to V_CCPCUR, forcing the cursor pad to return cursor keys
  5889.  01h    map V_CCP to V_CCPNUM, forcing the cursor pad to always return numbers
  5890.  02h    map V_CCP to V_OFF, disabling the cursor pad
  5891.  03h    map V_CCP to V_CCPGID, converting cursor pad keys to GID data
  5892.  04h    map V_CCP to V_RAW, passing cursor pad data untranslated to INT 09
  5893.  05h    map V_SOFTKEY to V_SKEY2KFEY, translating into standard function keys
  5894.  06h    map V_SOFTKEY to V_RAW, passing Softkey scancodes direct to INT 09
  5895.  07h    map V_SOFTKEY to V_OFF, disabling HP Softkeys
  5896. SeeAlso: #0460
  5897.  
  5898. (Table 0460)
  5899. Values for HP Vectra scancodes and BIOS keycodes for V_RAW translator:
  5900.           INT 09         INT 16 keycode
  5901.     Key         scan code    Default     Shifted   Ctrl         Alt
  5902.  * (NumPd)    37h    2Ah     (Prt Sc)  00/72h    00/37H
  5903.  Sysreq        54h      --     --       --         --
  5904.  CCP-Up        60h    00/D9h     00/BFh       00/A5h    00/8BH
  5905.  CCP-Left    61h    00/DAh     00/C0h       00/A6h    00/8CH
  5906.  CCP-Down    62h    00/DBh     00/C1h       00/A7h    00/8DH
  5907.  CCP-Right    63h    00/DCh     00/C2h       00/A8h    00/8EH
  5908.  CCP-Home    64h    00/DDh     00/C3h       00/A9h    00/8FH
  5909.  CCP-PgUp    65h    00/DEh     00/C4h       00/AAh    00/90H
  5910.  CCP-End    66h    00/DFh     00/C5h       00/ABh    00/91H
  5911.  CCP-PgDn    67h    00/E0h     00/C6h       00/ACh    00/92H
  5912.  CCP-Ins    68h    00/E1h     00/C7h       00/ADh    00/93H
  5913.  CCP-Del    69h    00/E2h     00/C8h       00/AEh    00/94H
  5914.  CCP-CNTR    6Ah    00/E3h     00/C9h       00/AFh    00/95H
  5915.  F1        70h    00/E9h     00/CFh       00/B5h    00/9BH
  5916.  F2        71h    00/EAh     00/D0h       00/B6h    00/9CH
  5917.  F3        72h    00/EBh     00/D1h       00/B7h    00/9DH
  5918.  F4        73h    00/ECh     00/D2h       00/B8h    00/9EH
  5919.  F5        74h    00/EDh     00/D3h       00/B9h    00/9FH
  5920.  F6        75h    00/EEh     00/D4h       00/BAh    00/A0H
  5921.  F7        76h    00/EFh     00/D5h       00/BBh    00/A1H
  5922.  F8        77h    00/F0h     00/D6h       00/BCh    00/A2H
  5923. SeeAlso: #0005,#0459
  5924. --------b-166F08-----------------------------
  5925. INT 16 - HP Vectra EX-BIOS - "F16_KBD" - GET KEYBOARD INFORMATION
  5926.     AX = 6F08h
  5927. Return: AH = status
  5928.        00h successful
  5929.        02h unsupported (non-HIL, i.e. standard, keyboard)
  5930.     BH = HP-HIL address (HP Vectra AT only???)
  5931.     BL = HP-HIL ID (HP Vectra AT only???)
  5932.     BL = keyboard language (ES/QS/RS only???) (see #0461)
  5933. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  5934.     the driver's address in the HP_VECTOR_TABLE (see INT 6F/AH=00h) may
  5935.       be computed as (BH-1)*6 + N, where N is the address of the first
  5936.       HP-HIL device driver (see INT 6F/AH=0Ah"SF_INQUIRE_FIRST")
  5937. SeeAlso: AX=6F05h,AX=6F09h,INT 6F/AH=0Ah"SF_INQUIRE_FIRST"
  5938.  
  5939. (Table 0461)
  5940. Values for HP HIL keyboard language code:
  5941.  00h    reserved
  5942.  01h    Arabic-French
  5943.  02h    Kanji
  5944.  03h    Swiss-French
  5945.  04h    Portugese
  5946.  05h    Arabic
  5947.  06h    Hebrew
  5948.  07h    Canadian-English
  5949.  08h    Turkish
  5950.  09h    Greek
  5951.  0Ah    Thai
  5952.  0Bh    Italian
  5953.  0Ch    Hangul (Korean)
  5954.  0Dh    Dutch
  5955.  0Eh    Swedish
  5956.  0Fh    German
  5957.  10h    Chinese (PRC)
  5958.  11h    Chinese (Taiwan)
  5959.  12h    Swiss (French ii)
  5960.  13h    Spanish
  5961.  14h    Swiss (German ii)
  5962.  15h    Belgian (Flemish)
  5963.  16h    Finish
  5964.  17h    United Kingdom
  5965.  18h    French-Canadian
  5966.  19h    French-German
  5967.  1Ah    Norwegian
  5968.  1Bh    French
  5969.  1Ch    Danish
  5970.  1Dh    Katakana
  5971.  1Eh    Latin American Spanish
  5972.  1Fh    United States-American
  5973.  20h-FEh reserved
  5974.  FFh    non-HP keyboard (IBM AT keyboard and IBM Enhanced keyboard)
  5975. --------b-166F09-----------------------------
  5976. INT 16 - HP Vectra EX-BIOS - "F16_KBD_RESET" - RESET KEYBOARD TO DEFAULTS
  5977.     AX = 6F09h
  5978. Return: AH = 00h (successful)
  5979. Desc:    reset all keyboard mappings to their default translators, and reset
  5980.       typematic values to their defaults
  5981. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  5982. SeeAlso: AX=6F04h,AX=6F07h,AX=6F08h
  5983. --------b-166F0A-----------------------------
  5984. INT 16 - HP Vectra ES/QS/RS EX-BIOS - READ PROCESSOR SPEED
  5985.     AX = 6F0Ah
  5986. Return: AH = 00h (successful)
  5987.     BX = speed code
  5988.         0Bh for low speed (see #0462)
  5989.         12h for medium speed (see #0462)
  5990.         0Ch for high speed (see #0462)
  5991. Note:    supported by ES, QS, and RS series of HP Vectras
  5992. SeeAlso: AX=6F00h
  5993.  
  5994. (Table 0462)
  5995. Values for HP Vetra CPU speed:
  5996.     Vectra        Low        Medium    High
  5997.     ES        8 MHz         -         8 MHz
  5998.     ES/12        8 MHz         -        12 MHz
  5999.     QS/16, RS/16    8 MHz         -        16 MHz
  6000.     QS/16S        8 MHz         -        16 MHz
  6001.     QS/20, RS/20    8 MHz         -        20 MHz
  6002.     RS/20C        5 MHz        10 MHz    20 MHz
  6003.     RS/25C        5 MHz        12.5 MHz    25 MHz
  6004. --------b-166F0B-----------------------------
  6005. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO LOW
  6006.     AX = 6F0Bh
  6007. Return: AH = 00h (successful)
  6008. Notes:    see AX=6F0Ah for speed definitions
  6009.     supported by ES, QS, and RS series of HP Vectras
  6010. SeeAlso: AX=6F00h,AX=6F0Ah
  6011. --------b-166F0C-----------------------------
  6012. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO HIGH
  6013.     AX = 6F0Ch
  6014. Return: AH = 00h (successful)
  6015. Notes:    see AX=6F0Ah for speed definitions
  6016.     supported by ES, QS, and RS series of HP Vectras
  6017. SeeAlso: AX=6F00h,AX=6F0A
  6018. --------b-166F0D-----------------------------
  6019. INT 16 - HP Vectra ES/QS/RS EX-BIOS - GET HIL Extended BIOS INTERRUPT NUMBER
  6020.     AX = 6F0Dh
  6021. Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
  6022. Notes:    supported by ES, QS, and RS series of HP Vectras
  6023.     called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  6024.       input system
  6025. SeeAlso: AX=6F00h,AX=6F0Eh,INT 6F"HP Vectra"
  6026. --------b-166F0E-----------------------------
  6027. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET HIL Extended BIOS INTERRUPT NUMBER
  6028.     AX = 6F0Eh
  6029.     BL = new interrupt number (60h-6Fh,78h-7Fh)
  6030. Return: AH = status (00h = successful)
  6031. Desc:    allows the HIL Extended BIOS software to use a non-default interrupt
  6032.       number in case of an interrupt conflict with another application
  6033. Notes:    supported by ES, QS, and RS series of HP Vectras
  6034.     called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  6035.       input system
  6036. SeeAlso: AX=6F00h,AX=6F0Dh,INT 6F"HP"
  6037. --------b-166F0F-----------------------------
  6038. INT 16 - HP Vectras RS/20C and RS/25C - ENABLE MEMORY CACHING
  6039.     AX = 6F0Fh
  6040. Return: AH = status
  6041.         00h successful
  6042.         FEh cache subsystem is bad
  6043. SeeAlso: AX=6F00h,AX=6F10h,AX=6F11h
  6044. --------b-166F10-----------------------------
  6045. INT 16 - HP Vectras RS/20C and RS/25C - DISABLE MEMORY CACHING
  6046.     AX = 6F10h
  6047. Return: AH = 00h (successful)
  6048. SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F11h
  6049. --------b-166F11-----------------------------
  6050. INT 16 - HP Vectras RS/20C and RS/25C - GET MEMORY CACHING STATE
  6051.     AX = 6F11h
  6052. Return: AH = 00h (successful)
  6053.     AL bit 0 = cache state
  6054.         0 cache disabled
  6055.         1 cache enabled
  6056. SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F10h
  6057. --------b-166F12-----------------------------
  6058. INT 16 - HP Vectras RS/20C and RS/25C - SET PROCESSOR SPEED TO MEDIUM
  6059.     AX = 6F12h
  6060. Return: AH = 00h (successful)
  6061. Note:    see AX=6F0Ah for speed definitions
  6062. SeeAlso: AX=6F00h,AX=6F0Ah
  6063. --------K-1670-------------------------------
  6064. INT 16 - FAKEY.COM - INSTALLATION CHECK
  6065.     AH = 70h
  6066. Return: AX = 1954h if installed
  6067. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  6068. --------K-1671-------------------------------
  6069. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  6070.     AH = 71h
  6071.     CX = number of keystrokes
  6072.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  6073. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  6074. SeeAlso: AH=05h,AH=72h
  6075. --------K-1672-------------------------------
  6076. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  6077.     AH = 72h
  6078. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  6079. SeeAlso: AH=71h
  6080. --------K-1673-------------------------------
  6081. INT 16 - FAKEY.COM - PLAY TONES
  6082.     AH = 73h
  6083.     CX = number of tones to play
  6084.     DS:SI -> array of tones (see #0463)
  6085. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  6086. SeeAlso: INT 15/AX=1019h
  6087.  
  6088. Format of FAKEY.COM tone array entries:
  6089. Offset    Size    Description    (Table 0463)
  6090.  00h    WORD    divisor for timer channel 2
  6091.  02h    WORD    duration in clock ticks
  6092. --------i-167463-----------------------------
  6093. INT 16 U - FastJuice - INSTALLATION CHECK
  6094.     AX = 7463h ("tc")
  6095. Return: AX = 5443h ("TC") if installed
  6096. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  6097. SeeAlso: AX=6A6Bh
  6098. --------R-1675-------------------------------
  6099. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  6100.     AH = 75h
  6101.     AL = number of ticks between checks for new screen changes
  6102. --------R-1676-------------------------------
  6103. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  6104.     AH = 76h
  6105.     AL = error checking type
  6106.         00h none
  6107.         01h fast
  6108.         02h slow
  6109. --------R-1677-------------------------------
  6110. INT 16 - pcANYWHERE III - LOG OFF
  6111.     AH = 77h
  6112.     AL = mode
  6113.         00h wait for another call
  6114.         01h leave in Memory Resident Mode
  6115.         02h leave in Automatic Mode
  6116.         FFh leave in current operating mode
  6117. --------U-167761-----------------------------
  6118. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  6119.     AX = 7761h ('wa')
  6120. Return: AX = 5741h ('WA') if installed
  6121. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  6122. SeeAlso: INT 21/AX=7761h
  6123. --------U-167788BX7789-----------------------
  6124. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  6125.     AX = 7788h
  6126.     BX = 7789h
  6127.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  6128. Return: AX = 7789h if installed and signature correct
  6129.     BX = 7788h
  6130.     SI destroyed
  6131. --------R-1679-------------------------------
  6132. INT 16 - pcANYWHERE III - CHECK STATUS
  6133.     AH = 79h
  6134. Return: AX = status
  6135.         FFFFh if resident and active
  6136.         FFFEh if resident but not active
  6137.         FFFDh if in Memory Resident mode
  6138.         FFFCh if in Automatic mode
  6139.         other value if not resident
  6140. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  6141. --------R-167A-------------------------------
  6142. INT 16 - pcANYWHERE III - CANCEL SESSION
  6143.     AH = 7Ah
  6144. --------R-167B00-----------------------------
  6145. INT 16 - pcANYWHERE III - SUSPEND
  6146.     AX = 7B00h
  6147. SeeAlso: AH=79h,AX=7B01h
  6148. --------R-167B01-----------------------------
  6149. INT 16 - pcANYWHERE III - RESUME
  6150.     AX = 7B01h
  6151. SeeAlso: AH=79h,AX=7B00h
  6152. --------R-167C-------------------------------
  6153. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  6154.     AH = 7Ch
  6155. Return: AH = port number
  6156.     AL = baud rate (see #0464)
  6157. SeeAlso: AX=7B00h,AH=7Eh
  6158.  
  6159. (Table 0464)
  6160. Values for pcANYWHERE III baud rate:
  6161.  00h    50 baud
  6162.  01h    75 baud
  6163.  02h    110 baud
  6164.  03h    134.5 baud
  6165.  04h    150 baud
  6166.  05h    300 baud
  6167.  06h    600 baud
  6168.  07h    1200 baud
  6169.  08h    1800 baud
  6170.  09h    2000 baud
  6171.  0Ah    2400 baud
  6172.  0Bh    4800 baud
  6173.  0Ch    7200 baud
  6174.  0Dh    9600 baud
  6175.  0Eh    19200 baud
  6176. SeeAlso: #0206
  6177. --------R-167D-------------------------------
  6178. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  6179.     AH = 7Dh
  6180.     AL = subfunction
  6181.         00h set terminal parameters
  6182.         01h get terminal parameters
  6183.         02h get configuration header and terminal parameters
  6184.     DS:CX -> terminal parameter block
  6185. SeeAlso: AH=7Ch,AH=7Eh
  6186. --------R-167E-------------------------------
  6187. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  6188.     AH = 7Eh
  6189.     AL = subfunction
  6190.         01h port input status
  6191.         Return AX = 0 if no characer ready,
  6192.                AX = 1 if character ready
  6193.         02h port input character
  6194.         Return AL = received character
  6195.         03h port output character in CX
  6196.         11h hang up phone
  6197. SeeAlso: AH=7Ch
  6198. --------R-167F-------------------------------
  6199. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  6200.     AH = 7Fh
  6201.     AL = subfunction
  6202.         00h enable remote keyboard only
  6203.         01h enable host keyboard only
  6204.         02h enable both keyboards
  6205.         08h display top 24 lines
  6206.         09h display bottom 24 lines
  6207.         10h Hayes modem
  6208.         11h other modem
  6209.         12h direct connect
  6210. --------U-1680-------------------------------
  6211. INT 16 - MAKEY.COM - INSTALLATION CHECK
  6212.     AH = 80h
  6213. Return: AX = 1954h if installed
  6214. Program: MAKEY is a utility by System Enhancement Associates
  6215. --------U-168765BX4321-----------------------
  6216. INT 16 - AT.COM version 8/26/87 - API
  6217.     AX = 8765h
  6218.     BX = 4321h
  6219.     CX = ??? or FFFFh
  6220.     if CX = FFFFh
  6221.         DX = number of event to remove or FFFFh
  6222. Return: ES:BX -> event record array (see #0465)
  6223. Program: AT.COM is a resident scheduler by Bill Frolik
  6224.  
  6225. Format of AT.COM event record:
  6226. Offset    Size    Description    (Table 0465)
  6227.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  6228.  01h    BYTE    day of date on which to trigger
  6229.  02h    BYTE    month of date on which to trigger
  6230.  03h    BYTE    trigger time, minute
  6231.  04h    BYTE    trigger time, hour
  6232.  05h    WORD    offset of command to be executed
  6233. --------K-1692-------------------------------
  6234. INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
  6235.     AH = 92h
  6236. Return: AH <= 80h if enhanced keyboard functions (AH=10h-12h) supported
  6237. Desc:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  6238.       to determine the highest supported keyboard function
  6239. Note:    many BIOSes (including at least some versions of Phoenix and AMI) will
  6240.       destroy AH on return from functions higher than AH=12h, returning
  6241.       12h less than was in AH on entry (due to a chain of DEC/JZ
  6242.       instructions)
  6243. SeeAlso: AH=05h"PCjr",AH=A2h
  6244. --------U-1699-------------------------------
  6245. INT 16 - SCOUT v5.4 - GET ???
  6246.     AH = 99h
  6247. Return: AX = ABCDh
  6248.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  6249. Program: Scout is a memory-resident file manager by New-Ware
  6250. SeeAlso: AH=9Eh
  6251. --------U-169E-------------------------------
  6252. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  6253.     AH = 9Eh
  6254. Return: AX = ABCDh if installed
  6255. Program: Scout is a memory-resident file manager by New-Ware
  6256. SeeAlso: AH=99h
  6257. --------K-16A2-------------------------------
  6258. INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
  6259.     AH = A2h
  6260. Return: AH <= 80h if 122-key keyboard functions (AH=20h-22h) supported
  6261. Desc:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  6262.       to determine the highest supported keyboard function
  6263. Note:    many BIOSes (including at least some versions of Phoenix and AMI) will
  6264.       destroy AH on return from functions higher than AH=12h, returning
  6265.       12h less than was in AH on entry (due to a chain of DEC/JZ
  6266.       instructions)
  6267. SeeAlso: AH=05h"PCjr",AH=92h
  6268. --------V-16AA-------------------------------
  6269. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  6270.     AH = AAh
  6271.     Various registers set up by high level language.
  6272. Return: Graphics performed
  6273. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  6274.       Modula 2 and others from DataBiten in Sweden. The library is
  6275.       installed as a memory resident driver.
  6276. --------U-16AABBBXEEFF-----------------------
  6277. INT 16 U - JORJ v4.3 - INSTALLATION CHECK
  6278.     AX = AABBh
  6279.     BX = EEFFh
  6280. Return: AX = EEFFh if installed
  6281.     BX = AABBh if installed
  6282.         CL = hotkey name (default 6Ah 'j' for Alt-J)
  6283. Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
  6284.       Co.
  6285. Index:    hotkeys;JORJ
  6286. --------K-16AF20BX4B33-----------------------
  6287. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET EXTENDED BUFFER STATE
  6288.     AX = AF20h
  6289.     BX = 4B33h ('K3')
  6290. Return: AX = K3 version (same as returned in BX by AX=AF4Dh)
  6291.     ES:BX -> extended keyboard buffer start
  6292.     ES:DX -> extended keyboard buffer end
  6293.     ES:SI -> next keystroke
  6294.     ES:DI -> last keystroke in buffer
  6295.     CX = number of keystrokes in buffer
  6296. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  6297.       K3 extended German keyboard driver by Martin Gerdes published in c't
  6298.       magazine in 1988
  6299. Note:    this function replaces the identical function AH=20h"K3"
  6300. SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h,INT 2F/AX=ED58h
  6301. --------K-16AF25BX4B33-----------------------
  6302. INT 16 - K3PLUS v6.00+ (API v2.0+) - COPY INTO EXTENDED BUFFER
  6303.     AX = AF25h
  6304.     BX = 4B33h ('K3')
  6305.     CX = number of keystrokes to copy
  6306.     ES:SI -> buffer containing keystrokes
  6307. Return: CF clear if successful
  6308.     CF set on error (i.e. buffer full)
  6309.         CX = number of keystrokes NOT transferred
  6310.         ES:SI -> first keystroke not transferred
  6311. Note:    this function replaces the identical function AH=25h"K3"
  6312. SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h,INT 2F/AX=D44Fh/BX=0001h
  6313. --------K-16AF4DBX4B33-----------------------
  6314. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET VERSION INFORMATION
  6315.     AX = AF4Dh
  6316.     BX = 4B33h ('K3')
  6317. Return: AL = 50h if installed
  6318.         BX = K3 version
  6319.         DX = API version
  6320.         ES:CX -> K3 structure (version-dependent) (see #0466)
  6321. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  6322.       K3 extended German keyboard driver by Martin Gerdes published in c't
  6323.       magazine in 1988
  6324. SeeAlso: AX=AF20h,AX=AF50h,AX=AF80h,AX=AF83h,INT 2F/AX=D44Fh/BX=0000h
  6325. SeeAlso: INT 2F/AX=ED58h
  6326. Index:    installation check;K3PLUS
  6327.  
  6328. Format of internal K3 structure:
  6329. Offset    Size    Description    (Table 0466)
  6330.  00h  3 BYTEs    signature "K3$"
  6331.  03h    BYTE    length of structure, including this byte and signature
  6332.  04h    WORD    compiler switch option flags A (see #0467)
  6333.  06h    WORD    compiler switch option flags B (see #0468)
  6334.  08h    BYTE    internal flags A (see #0469)
  6335.  09h    BYTE    internal flags B (see #0470)
  6336.  0Ah    WORD    DOS version recorded at startup
  6337.  0Ch    WORD    "ActTypeSpeed"
  6338.  0Eh    WORD    last Keyboard-ID sent
  6339.         41ABh translated, 83ABh native (pass-through)
  6340.  10h    WORD    offset of K3TAB Special
  6341.  12h    WORD    offset of K3TAB German
  6342.  14h    WORD    offset of K3TAB Alt
  6343.  16h    WORD    offset of K3TAB AltGr
  6344.  18h    WORD    offset of K3TAB Ctrl
  6345.  1Ah    WORD    offset of K3TAB NPad
  6346.  1Ch    WORD    offset of K3TAB CtrlNPad
  6347.  1Eh    WORD    offset of K3TAB AltNPad
  6348.  20h    WORD    offset of K3TAB ApoTbl or 0000h
  6349.  22h    WORD    offset of K3TAB UmlautTbl or 0000h
  6350.  24h    WORD    offset of K3TAB UmlautTblExp or 0000h
  6351.  26h    WORD    length of video mode table
  6352.  28h    WORD    offset of VidMdTbl or 0000h
  6353.  2Ah    BYTE    '$' end marker
  6354.  
  6355. Bitfields for K3PLUS compiler switch option flags A:
  6356. Bit(s)    Description    (Table 0467)
  6357.  15    GuINT16Fct2 (general use of INT 16 function 2)
  6358.  14    Int15df (INT 15 has to be predefined)
  6359.  13    GuAltNP (general use of Alt Numpad)
  6360.  12    SupAT (ATs+ supported)
  6361.  11    GuINT16Fct3 (general use of INT 16 function 3)
  6362.  10    GuINT16Ret (general use of INT16 bad function return)
  6363.  9-8    Layout (0-2, 3 reserved; 0=PC, 1=AT, 2=MF)
  6364.  7    ForceMF (force MF decode without read-ID)
  6365.  6    KXlate (translate keys for special keyboard)
  6366.  5    UmlautX (umlaut translation capability included)
  6367.  4    ApoX (translate apostrophe)
  6368.  3    DoINT16 (INT 16 handler included)
  6369.  2    UseCC (CopyCursor included)
  6370.  1-0    UseEB
  6371.     0=no extended keystroke buffer, 1=reserve mem, 2=use PSP, 3=reserved
  6372.  
  6373. Bitfields for K3 compiler switch option flags B:
  6374. Bit(s)    Description    (Table 0468)
  6375.  15-11    reserved (0)
  6376.  10    CtrlSeq (Ctrl macro capability included)
  6377.  9-8    SupINT16fct55FE
  6378.  6    DoInstallCheck (check for double installation)
  6379.  5    SupINT16fct5PcJr (INT 16/AH=05h"PCjr" supported)
  6380.  4    SendOut (sound and message output supported)
  6381.  3    SupInt16fct5500 (INT 16/AX=5500h supported)
  6382.  2    GuINT15Fct4F (calls to INT 15/AH=4Fh supported)
  6383.  1-0    UseBufferStart (0=use standard area, 1=set standard area,
  6384.     2=use internal indexes, 3=reserved)
  6385.  
  6386. Bitfields for K3 internal flags A:
  6387. Bit(s)    Description    (Table 0469)
  6388.  7    DoingUmlautExp
  6389.  6    CallINT15fct4F
  6390.  5    Beep1 (requires SendOut set in option flags B)
  6391.  4    ATflag (set for AT, 386, PS/2 Models 50-80)
  6392.  3    XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30)
  6393.  2    KeyClick
  6394.  1    UmlautExp
  6395.  0    UmlautTrans
  6396.  
  6397. Bitfields for K3 internal flags B:
  6398. Bit(s)    Description    (Table 0470)
  6399.  7-5    reserved
  6400.  4    TranslateE0 enabled
  6401.  3    Boot enabled
  6402.  2    PrintScreen enabled
  6403.  1    Break enabled
  6404.  0    ApoPendingBeep
  6405. --------K-16AF50BX4B33-----------------------
  6406. INT 16 - K3PLUS v6.00+ (API v2.0+) - CHECK IF FUNCTION SUPPORTED
  6407.     AX = AF50h
  6408.     BX = 4B33h ('K3')
  6409.     CH = function
  6410.         00h get function flags
  6411.         CL = 00h
  6412.         Return: CX = supported function flags (see #0471)
  6413.         nonzero reserved for extensions
  6414. SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h
  6415.  
  6416. Bitfields for K3PLUS supported function list:
  6417. Bit(s)    Description    (Table 0471)
  6418.  0    function 4Dh supported
  6419.  1    function 50h supported
  6420.  2-3    reserved (0)
  6421.  4    function 20h supported
  6422.  5    function 25h supported
  6423.  6    function 51h supported
  6424.  7    reserved (0)
  6425.  8    function 80h supported
  6426.  9    function 81h supported
  6427.  10    function 82h supported
  6428.  11-15    reserved (0)
  6429. --------K-16AF51BX4B33-----------------------
  6430. INT 16 - K3PLUS v6.00+ (API v2.00+) - SET OPTIONS
  6431.     AX = AF51h
  6432.     BX = 4B33h ('K3')
  6433.     CX = switches
  6434. Return: AL = status
  6435.         00h done
  6436.         CX = previous switch settings
  6437.         01h switch not supported
  6438.         FFh other error
  6439. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h
  6440. --------K-16AF80BX4B33-----------------------
  6441. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 09h VECTOR
  6442.     AX = AF80h
  6443.     BX = 4B33h ('K3')
  6444. Return: AL = status
  6445.         00h not supported
  6446.         81h if successful
  6447.         ES:CX -> original INT 09 handler
  6448. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h
  6449. --------K-16AF81BX4B33-----------------------
  6450. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 16h HANDLER
  6451.     AX = AF81h
  6452.     BX = 4B33h ('K3')
  6453. Return: AL = status
  6454.         00h not supported
  6455.         82h if successful
  6456.         ES:CX -> original INT 16 handler
  6457. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h
  6458. --------K-16AF82BX4B33-----------------------
  6459. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 10h HANDLER
  6460.     AX = AF82h
  6461.     BX = 4B33h ('K3')
  6462. Return: AL = status
  6463.         00h not supported
  6464.         83h if successful
  6465.         ES:CX -> original INT 10 handler
  6466. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  6467.       K3 extended German keyboard driver by Martin Gerdes published in c't
  6468.       magazine in 1988
  6469. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h,INT 2F/AX=ED58h
  6470. --------m-16B0B1-----------------------------
  6471. INT 16 - VGARAM v1.00 - INSTALLATION CHECK
  6472.     AX = B0B1h
  6473.     ES:DI -> 6 byte signature "VGARAM"
  6474. Return: AX = B1B0h if installed,
  6475.     DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON
  6476. Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is
  6477.       not used in text modes available for DOS
  6478. --------K-16CA--BX736B-----------------------
  6479. INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
  6480.     AH = CAh
  6481.     BX = 736Bh ("sk")
  6482.     CX = 736Bh
  6483.     AL = function
  6484.         00h installation check
  6485.         Return: DX = words available in keyboard buffer
  6486.         01h place keystroke in buffer
  6487.         DX = keystroke (DH = scan code, DL = ASCII character)
  6488.         Return: DX = words available in keyboard buffer
  6489.                 FFFFh on error
  6490.         02h flush STACKEY and BIOS keyboard buffers
  6491. Return: AX = CAFFh if installed
  6492.         BX = segment of resident code
  6493.         CX = STACKEY version (CH = major, CL = minor)
  6494. Program: STACKEY is a shareware keyboard-input faking TSR
  6495. Index:    installation check;STACKEY
  6496. --------V-16CA00BX6570-----------------------
  6497. INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
  6498.     AX = CA00h
  6499.     BX = 6570h ("ep")
  6500.     CX = 6570h
  6501. Return: AX = CAFFh if installed
  6502.         BX = segment of resident code
  6503.         CX = ??? (0090h)
  6504. Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette settings
  6505.       permanent across mode switches
  6506. SeeAlso: AX=CA00h/BX=7670h
  6507. --------V-16CA00BX7670-----------------------
  6508. INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
  6509.     AX = CA00h
  6510.     BX = 7670h ("vp")
  6511.     CX = 7670h
  6512. Return: AX = CAFFh if installed
  6513.         BX = segment of resident code
  6514.         CX = ??? (0090h)
  6515. Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette settings
  6516.       permanent across mode switches
  6517. SeeAlso: AX=CA00h/BX=6570h
  6518. --------U-16CB00-----------------------------
  6519. INT 16 - PUPClip v1.12+ - INSTALLATION CHECK
  6520.     AX = CB00h
  6521. Return: BX = 4342h if installed
  6522.         AX = version (AH = major version, AL = BCD minor version)
  6523. Program: PUPClip is the freeware PopUP Clipboard for DOS and Windows DOS
  6524.      sessions by SkullC0DEr
  6525. SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB04h,AX=CB05h,AX=CB06h,AX=CB08h
  6526. SeeAlso: INT 2F/AX=1701h
  6527. --------U-16CB01-----------------------------
  6528. INT 16 - PUPClip v1.12+ - GET CLIPBOARD CURSOR POSITION
  6529.     AX = CB01h
  6530. Return: BL = column (0-79)
  6531.     BH = row (0-49)
  6532. SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h
  6533. --------U-16CB02-----------------------------
  6534. INT 16 - PUPClip v1.12+ - SET CLIPBOARD CURSOR POSITION
  6535.     AX = CB02h
  6536.     BL = column (0-79)
  6537.     BH = row (0-49)
  6538. Return: CF clear if successful
  6539.     CF set on error (invalid position)
  6540. SeeAlso: AX=CB00h,AX=CB01h,AX=CB04h
  6541. --------U-16CB03-----------------------------
  6542. INT 16 - PUPClip v1.12+ - GET CHARACTER FROM CURRENT CLIPBOARD CURSOR POSITION
  6543.     AX = CB03h
  6544. Return: BL = ASCII character at current position
  6545. SeeAlso: AX=CB00h,AX=CB02h,AX=CB04h,INT 2F/AX=1705h
  6546. --------U-16CB04-----------------------------
  6547. INT 16 - PUPClip v1.12+ - WRITE CHARACTER TO CURRENT CLIPBOARD CURSOR POSITION
  6548.     AX = CB04h
  6549.     BL = ASCII character to store
  6550. SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h,AX=CB05h,INT 2F/AX=1703h
  6551. --------U-16CB05-----------------------------
  6552. INT 16 - PUPClip v1.12+ - CLEAR CLIPBOARD CONTENTS
  6553.     AX = CB05h
  6554. Return: nothing
  6555. SeeAlso: AX=CB00h,AX=CB04h,AX=CB06h,AX=CB07h,INT 2F/AX=1702h
  6556. --------U-16CB06-----------------------------
  6557. INT 16 - PUPClip v1.12+ - SCROLL UP CLIPBOARD CONTENTS
  6558.     AX = CB06h
  6559. Return: nothing
  6560. SeeAlso: AX=CB00h,AX=CB05h,AX=CB07h
  6561. --------U-16CB07-----------------------------
  6562. INT 16 - PUPClip v1.12+ - SCROLL DOWN CLIPBOARD CONTENTS
  6563.     AX = CB07h
  6564. Return: nothing
  6565. SeeAlso: AX=CB00h,AX=CB05h,AX=CB06h
  6566. --------U-16CB08-----------------------------
  6567. INT 16 - PUPClip v1.12+ - POP UP
  6568.     AX = CB08h
  6569. Return: CF clear if successful
  6570.     CF set on error (unsupported video mode)
  6571. SeeAlso: AX=CB00h
  6572. --------U-16D724CX00CB-----------------------
  6573. INT 16 U - APCAL v3.20 - GET ???
  6574.     AX = D724h
  6575.     CX = 00CBh
  6576. Return: AX = 0000h
  6577.     BX = 0000h
  6578.     DX:CX -> ??? or 0000h:0000h
  6579. Program: APCAL is an optionally-resident shareware appointment calendar by
  6580.       Gamma Software
  6581. SeeAlso: AX=3577h,AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
  6582. --------U-16D724CX00CC-----------------------
  6583. INT 16 U - APCAL v3.20 - GET ???
  6584.     AX = D724h
  6585.     CX = 00CCh
  6586. Return: AX = 0000h
  6587.     BX = 0000h
  6588.     DX:CX -> ??? (apparently an internal data area)
  6589. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
  6590. --------U-16D724CX00CD-----------------------
  6591. INT 16 U - APCAL v3.20 - GET ???
  6592.     AX = D724h
  6593.     CX = 00CDh
  6594. Return: AX = ??? (5345h seen)
  6595. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
  6596. --------v-16DD--------------------------
  6597. INT 16 - VIRUS - "Frumble" - INSTALLATION CHECK
  6598.     AH = DDh
  6599. Return: AL = DDh if resident
  6600. SeeAlso: INT 13/AX=FD50h,INT 21/AX=0B56h
  6601. ----------16DFDF-----------------------------
  6602. INT 16 U - Corel PowerSCSI - FDAUDIO.COM - INSTALLATION CHECK
  6603.     AX = DFDFh
  6604. Return: ES:DI -> ASCII signature "FDAUDIO/CD" followed by ASCII date, i.e.
  6605.       "06/18/93" if installed
  6606. --------b-16E000-----------------------------
  6607. INT 16 - AMI BIOS - BIOS-FLASH Interface - GET VERSION NUMBER
  6608.     AX = E000h
  6609. Return: CF clear if successful
  6610.         AL = FAh
  6611.         BX = version number (BCD) (0200h = v2.00)
  6612.     CF set on error (not implemented)
  6613. Notes:    this interface is available on AMI BIOSes built from AMI core version
  6614.       8/8/93 (HiFlex BIOS) or 11/15/93 (WinBIOS) or later
  6615.     the "Meningitis" virus uses this API when attacking a system equipped
  6616.       with an AMI BIOS; it is supposedly able to write itself into the
  6617.       Flash ROM and thus make itself part of the BIOS
  6618. SeeAlso: AX=E001h,AX=E004h,AX=E006h,AX=E008h,AX=E00Ah,AX=E00Bh,AX=E0FFh
  6619. --------b-16E001-----------------------------
  6620. INT 16 - AMI BIOS - BIOS-FLASH Interface - GET CHIPSET SAVE/RESTORE SIZE
  6621.     AX = E001h
  6622. Return: CF clear if successful
  6623.         AL = FAh
  6624.         BX = number of bytes required to save chipset configuration
  6625.     CF set on error
  6626. SeeAlso: AX=E000h,AX=E002h,AX=E003h
  6627. --------b-16E002-----------------------------
  6628. INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE CHIPSET STATUS & PREPARE CHPSET
  6629.     AX = E002h
  6630.     ES:DI -> buffer for storing chipset status
  6631. Return: CF clear if successful
  6632.         AL = FAh
  6633.     CF set on error
  6634. SeeAlso: AX=E000h,AX=E001h,AX=E003h
  6635. --------b-16E003-----------------------------
  6636. INT 16 - AMI BIOS - BIOS-FLASH Interface -  RESTORE CHIPSET STATUS
  6637.     AX = E003h
  6638.     ES:DI -> buffer in which chipset status was previously stored
  6639. Return: CF clear if successful
  6640.         AL = FAh
  6641.     CF set on error
  6642. SeeAlso: AX=E000h,AX=E001h,AX=E002h
  6643. --------b-16E004-----------------------------
  6644. INT 16 - AMI BIOS - BIOS-FLASH Interface - LOWER PROGRAMMING VOLTAGE Vpp
  6645.     AX = E004h
  6646. Return: CF clear if successful
  6647.         AL = FAh
  6648.     CF set on error
  6649. Note:    this function does not return until the voltage level stabilizes
  6650. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  6651. --------b-16E005-----------------------------
  6652. INT 16 - AMI BIOS - BIOS-FLASH Interface - RAISE PROGRAMMING VOLTAGE Vpp
  6653.     AX = E005h
  6654. Return: CF clear if successful
  6655.         AL = FAh
  6656.     CF set on error
  6657. Note:    this function does not return until the voltage level stabilizes
  6658. SeeAlso: AX=E000h,AX=E004h,AX=E007h
  6659. --------b-16E006-----------------------------
  6660. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE PROTECT
  6661.     AX = E006h
  6662. Return: CF clear if successful
  6663.         AL = FAh
  6664.     CF set on error
  6665. Note:    this function performs any delay required to allow the Flash ROM to
  6666.       stabilize in the write-protected state
  6667. SeeAlso: AX=E000h,AX=E004h,AX=E007h
  6668. --------b-16E007-----------------------------
  6669. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE ENABLE
  6670.     AX = E007h
  6671. Return: CF clear if successful
  6672.         AL = FAh
  6673.     CF set on error
  6674. Note:    this function performs any delay required to allow the Flash ROM to
  6675.       stabilize in the write-enabled state
  6676. SeeAlso: AX=E000h,AX=E005h,AX=E006h,AX=E008h
  6677. --------b-16E008-----------------------------
  6678. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH SELECT
  6679.     AX = E008h
  6680. Return: CF clear if successful
  6681.         AL = FAh
  6682.     CF set on error
  6683. Desc:    select the Flash ROM if the system contains both EPROM and Flash ROM
  6684. Note:    this function performs any delay required to allow the Flash ROM to
  6685.       stabilize in the selected state; if no EPROM is present, this
  6686.       function always returns successfully
  6687. SeeAlso: AX=E000h,AX=E007h,AX=E009h
  6688. --------b-16E009-----------------------------
  6689. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH DE-SELECT
  6690.     AX = E009h
  6691. Return: CF clear if successful
  6692.         AL = FAh
  6693.     CF set on error
  6694. Desc:    select the EPROM if the system contains both EPROM and Flash ROM
  6695. Note:    this function performs any delay required to allow the Flash ROM to
  6696.       stabilize in the de-selected state; if no EPROM is present, this
  6697.       function always returns successfully
  6698. SeeAlso: AX=E000h,AX=E006h,AX=E008h
  6699. --------b-16E00A-----------------------------
  6700. INT 16 - AMI BIOS - BIOS-FLASH Interface - VERIFY ALLOCATED MEMORY
  6701.     AX = E00Ah
  6702.     BX = number of paragraphs
  6703.     ES = starting segment of memory
  6704. Return: CF clear if successful
  6705.         AL = FAh
  6706.     CF set on error
  6707. Desc:    determine whether the specified memory may be used for flash
  6708.       programming
  6709. Note:    always returns error if BX is zero on entry
  6710. SeeAlso: AX=E000h,AX=E00Bh
  6711. --------b-16E00B-----------------------------
  6712. INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE INTERNAL CACHE STATUS
  6713.     AX = E00Bh
  6714.     ES:DI -> buffer for internal cache status (minimum 4Kbytes)
  6715. Return: CF clear if successful
  6716.         AL = FAh
  6717.     CF set on error
  6718. Note:    always returns error if the hardware does not contain internal
  6719.       cache or this call is made in protected mode
  6720. SeeAlso: AX=E000h,AX=E00Ah,AX=E00Ch
  6721. --------b-16E00C-----------------------------
  6722. INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE INTERNAL CACHE STATUS
  6723.     AX = E00Ch
  6724.     ES:DI -> buffer containing internal cache status (minimum 4Kbytes)
  6725. Return: CF clear if successful
  6726.         AL = FAh
  6727.     CF set on error
  6728. Note:    always returns error if the hardware does not contain internal
  6729.       cache or this call is made in protected mode
  6730. SeeAlso: AX=E000h,AX=E00Bh
  6731. --------t-16E0E0-----------------------------
  6732. INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
  6733.     AX = E0E0h
  6734. Return: AX = 1F1Fh if installed
  6735.         DWORD 0040h:00F0h -> last data block in TSR list (see #0473)
  6736. Note:    the returned TSR list provides support for communication among TSRs
  6737.       built with TurboPower's Turbo Professional and Object Professional
  6738.       libraries for Turbo Pascal
  6739. SeeAlso: AX=F0F0h
  6740. --------b-16E0FF-----------------------------
  6741. INT 16 - AMI BIOS - BIOS-FLASH Interface - GENERATE CPU RESET
  6742.     AX = E0FFh
  6743. Return: never
  6744. SeeAlso: AX=E000h,INT 14/AH=17h"FOSSIL"
  6745. --------U-16ED--BHED-------------------------
  6746. INT 16 - BORLAND TURBO LIGHTNING - API
  6747.     AH = EDh
  6748.     BH = EDh
  6749.     BL = function
  6750.         00h installation check
  6751.         Return: AX = 5205h
  6752.             CH = major version
  6753.             CL = minor version
  6754.         01h identical to function 00h???
  6755.         02h get resident data segment
  6756.         Return: AX = data segment of resident portion
  6757.         03h get resident ???
  6758.         Return: AX = offset of some buffer in resident code seg
  6759.         04h redefine auxiliary dictionary
  6760.         DS:SI -> counted filename string
  6761.         Return: AL = result code
  6762.         05h select active environment
  6763.         AL = environment (00h to 0Ch)
  6764.         Return: AX = status
  6765.                 0000h if OK
  6766.                 0001h if out of range
  6767.         06h toggle AutoProof???
  6768.         AL = state (00h off, 01h on)
  6769.         07h ???
  6770.         08h ???
  6771.         AL = char???
  6772.         CX = ???
  6773.         DX = ???
  6774.         Return: AX = 0, 1 or 2
  6775.         09h ???
  6776.         0Ah ???
  6777.         CX = ???
  6778.         DX = ???
  6779.         Return: AX = ???
  6780.         0Bh check dictionary integrity???
  6781.         DS:SI -> counted dictionary filename string
  6782.         Return: AX = 0, 40h, 80h
  6783.         0Ch spellcheck string (disk dictionary, possibly RAM dict as well)
  6784.         DS:SI -> counted string to check
  6785.         Return: AH = 0
  6786.             AL = result code
  6787.                00h string found in dictionary
  6788.                20h string begins more than one word
  6789.                40h string not found
  6790.         0Dh set ???
  6791.         (sets an internal flag)
  6792.         0Eh spellcheck string (RAM dictionary only)
  6793.         DS:SI -> counted string to check
  6794.         Return: AH = 00h
  6795.             AL = result code
  6796.                 00h string found in dictionary
  6797.                 01h string not found
  6798.                 02h ???
  6799.         0Fh ???
  6800.         10h ???
  6801. Notes:    AX in general returns an error code from most functions.
  6802. Index:    installation check;Turbo Lightning
  6803. --------U-16EF-------------------------------
  6804. INT 16 - CALCULATOR - INSTALLATION CHECK
  6805.     AH = EFh
  6806. Return: AX = 0088h if installed
  6807. Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
  6808.       Marek Kosznik
  6809. --------b-16F0-------------------------------
  6810. INT 16 - Compaq 386 and newer - SET CPU SPEED
  6811.     AH = F0h
  6812.     AL = speed code (see #0472)
  6813.     if AL=09h,
  6814.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  6815. Note:    also supported by some versions of AMI BIOS dated June 1992 or later;
  6816.       speed codes 0 or 1 are used for Low Speed, 2 for High Speed
  6817. SeeAlso: AH=F1h,AH=F3h
  6818.  
  6819. (Table 0472)
  6820. Values for speed code:
  6821.  00h    equivalent to 6 MHz 80286 (COMMON)
  6822.  01h    equivalent to 8 MHz 80286 (FAST)
  6823.  02h    full 16 MHz (HIGH)
  6824.  03h    toggles between 8 MHz-equivalent and speed set by system board switch
  6825.       (AUTO or HIGH)
  6826.  08h    full 16 MHz except 8 MHz-equivalent during floppy disk access
  6827.  09h    specify speed directly
  6828. --------t-16F0F0-----------------------------
  6829. INT 16 - TurboPower TSRs - INSTALLATION CHECK
  6830.     AX = F0F0h
  6831. Return: AX = 0F0Fh if installed
  6832.         ES:DI -> last data block in TSR list (see #0473)
  6833. Note:    the returned TSR list provides support for communication among TSRs
  6834.       built with TurboPower's Turbo Professional and Object Professional
  6835.       libraries for Turbo Pascal
  6836. SeeAlso: AX=E0E0h
  6837.  
  6838. Format of TurboPower TSR data block:
  6839. Offset    Size    Description    (Table 0473)
  6840.  00h    DWORD    pointer to program tag (counted ASCII string)
  6841.  04h    WORD    interface version number (0400h)
  6842.  06h    DWORD    pointer to command entry point
  6843.  0Ah    DWORD    pointer to previous data block (0000h:0000h if none)
  6844.  0Eh    DWORD    pointer to next data block (0000h:0000h if none)
  6845. ---swappable TSRs only---
  6846.  12h    DWORD    pointer to swapping data
  6847.  16h    DWORD    pointer to user data
  6848.     more???
  6849. --------b-16F1-------------------------------
  6850. INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED
  6851.     AH = F1h
  6852. Return: AL = speed code (see #0472)
  6853.     if AL = 09h, CX = speed code
  6854. Note:    also supported by some versions of AMI BIOS dated June 1992 or later
  6855. SeeAlso: AH=F0h,AH=F3h
  6856. --------b-16F2-------------------------------
  6857. INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE
  6858.     AH = F2h
  6859. Return: AL = type
  6860.         00h if 11-bit AT keyboard is in use
  6861.         01h if 9-bit PC keyboard is in use
  6862.     AH = 00h (04/08/93 system ROM)
  6863. --------b-16F3-------------------------------
  6864. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  6865.     AH = F3h
  6866.     AL = new limit
  6867.         00h limit is 6 Mhz
  6868.         01h limit is 8 Mhz/6 Mhz
  6869. SeeAlso: AH=F0h,AH=F1h
  6870. --------U-16F398-----------------------------
  6871. INT 16 U - NORTON GUIDES - INSTALLATION CHECK
  6872.     AX = F398h
  6873. Return: AX = 6A73h ("js")
  6874.     BH = scan code of current hot key
  6875.     BL = ASCII code of current hot key
  6876. Note:    NG.EXE was written by John Socha
  6877. --------b-16F400-----------------------------
  6878. INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS
  6879.     AX = F400h
  6880. Return: AH = E2h (*)
  6881.     AL = status
  6882.         00h not present
  6883.         01h enabled
  6884.         02h disabled
  6885.     CX = cache memory size
  6886.         bit 15:    cache size information is NOT valid
  6887.         bits 14-0:    cache memory size in kilobytes
  6888.     DH = cache write technology
  6889.         bit 7:    cache write information is NOT valid
  6890.         bits 6-1:    reserved (0)
  6891.         bit 0:    0 = Write-through caching
  6892.             1 = Write-back caching
  6893.     DL = cache type
  6894.         bit 7:    cache type information is NOT valid
  6895.         bits 6-1:    reserved (0)
  6896.         bit 0:    0 = Direct mapped
  6897.             1 = Two-way set-associative
  6898. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  6899.     many (most) BIOSes return a modified AH when called for an unsupported
  6900.       or non-keyboard function (typically, the highest supported keyboard
  6901.       function [normally 12h] is subtracted from the original AH)
  6902. SeeAlso: AX=F401h,AX=F402h
  6903. --------b-16F401-----------------------------
  6904. INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER
  6905.     AX = F401h
  6906. Return: AX = E201h
  6907. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  6908.     many (most) BIOSes return a modified AH when called for an unsupported
  6909.       or non-keyboard function (typically, the highest supported keyboard
  6910.       function [normally 12h] is subtracted from the original AH)
  6911. SeeAlso: AX=F400h,AX=F402h
  6912. --------b-16F402-----------------------------
  6913. INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER
  6914.     AX = F402h
  6915. Return: AX = E202h
  6916. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  6917.     many (most) BIOSes return a modified AH when called for an unsupported
  6918.       or non-keyboard function (typically, the highest supported keyboard
  6919.       function [normally 12h] is subtracted from the original AH)
  6920. SeeAlso: AX=F400h,AX=F401h
  6921. --------v-16FA00DX5945-----------------------
  6922. INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK
  6923.     AX = FA00h
  6924.     DX = 5945h
  6925. Return: CF clear
  6926.     DI = 4559h
  6927.     BX = BIOS hotkey scancode (default 2F00h) (VSAFE only)
  6928.         FFFFh if disabled
  6929. Note:    MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection
  6930. SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
  6931. --------v-16FA01DX5945-----------------------
  6932. INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
  6933.     AX = FA01h
  6934.     DX = 5945h
  6935. Return: CF clear if successful
  6936.     DI = 4559h
  6937. SeeAlso: AX=FA00h
  6938. --------v-16FA02DX5945-----------------------
  6939. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS
  6940.     AX = FA02h
  6941.     DX = 5945h
  6942.     BL = new parameter flags (see #0474)
  6943. Return: CF clear
  6944.     DI = 4559h
  6945.     CL = old value of parameter flags
  6946.  
  6947. Bitfields for VSAFE/VWATCH parameter flags:
  6948. Bit(s)    Description    (Table 0474)
  6949.  7    Protect executable files
  6950.  6    Protect FD boot sector
  6951.  5    Protect HD boot sector
  6952.  4    Boot sector viruses
  6953.  3    Check executable files
  6954.  2    General write protect
  6955.  1    Resident
  6956.  0    HD Low level format
  6957. --------v-16FA03DX5945-----------------------
  6958. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
  6959.     AX = FA03h
  6960.     DX = 5945h
  6961. Return: CF clear
  6962.     DI = 4559h
  6963.     AX = 0002h
  6964. --------v-16FA04DX5945-----------------------
  6965. INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG
  6966.     AX = FA04h
  6967.     DX = 5945h
  6968. Return: CF clear
  6969.     DI = 4559h
  6970.     BL = hotkey disable flag (nonzero if hotkey disabled)
  6971. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  6972. SeeAlso: AX=FA00h,AX=FA05h
  6973. --------v-16FA05DX5945-----------------------
  6974. INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG
  6975.     AX = FA05h
  6976.     DX = 5945h
  6977.     BL = new value of hotkey disable flag (nonzero to disable hotkey)
  6978. Return: CF clear
  6979.     DI = 4559h
  6980. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  6981. SeeAlso: AX=FA00h,AX=FA04h
  6982. --------v-16FA06DX5945-----------------------
  6983. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG
  6984.     AX = FA06h
  6985.     DX = 5945h
  6986. Return: CF clear
  6987.     DI = 4559h
  6988.     BL = test status
  6989.         00h don't monitor network drives (default for VWATCH v2.1)
  6990.         FFh monitor network drives (default for VSAFE v2.0)
  6991.     CL = ??? (only VSAFE 2.0)
  6992. SeeAlso: AX=FA07h
  6993. --------v-16FA07DX5945-----------------------
  6994. INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG
  6995.     AX = FA07h
  6996.     DX = 5945h
  6997.     BL = new state
  6998.         00h don't monitor
  6999.         01h monitor network drives
  7000. Return: CF clear
  7001.     DI = 4559h
  7002. Note:    VWATCH v2.1 (from PC Tools 9.0) returns CF set instead
  7003. SeeAlso: AX=FA00h,AX=FA06h
  7004. --------v-16FA08DX5945-----------------------
  7005. INT 16 U - PC Tools v9+ VWATCH v2.1 - ???
  7006.     AX = FA08h
  7007.     DX = 5945h
  7008. Return: CF clear
  7009.     DI = 4559h
  7010.     AX = ??? (0002h)
  7011.     BX = version (BH=major, BL=two-digit minor)
  7012. Note:    this function is not supported by the PC Tools 9.0 VSAFE v2.0
  7013. SeeAlso: AX=FA00h,AX=FA06h
  7014. --------U-16FE55-----------------------------
  7015. INT 16 U - PC Tools v8+ programs - GET ???
  7016.     AX = FE55h
  7017.     CX = segment of resident program or 0000h for last loaded
  7018.     DX = 0000h
  7019. Return: DX = resident code segment (unchanged if CX=0000h on entry)
  7020.     AX = ??? or 0000h
  7021. Note:    this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP,
  7022.       and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK
  7023.       seem to hook it merely to return the same AX as the CPTASK loaded
  7024.       prior to them returned
  7025. --------U-16FEA4-----------------------------
  7026. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ???
  7027.     AX = FEA4h
  7028. Return: nothing
  7029. Note:    this function is identical to AX=FFA4h, and is implemented by the same
  7030.       code in DESKTOP
  7031. SeeAlso: AX=FFA4h
  7032. --------U-16FEC6-----------------------------
  7033. INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API
  7034.     AX = FEC6h
  7035.     BL = new state (00h enabled, nonzero disabled)
  7036. Return: nothing
  7037. Desc:    specify whether CPSCHED API calls other than this one and AX=FE55h will
  7038.       be honored
  7039. --------U-16FED3-----------------------------
  7040. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  7041.     AX = FED3h
  7042.     DS:SI -> 92-byte data record for ???
  7043. Return: ???
  7044. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  7045.       code in DESKTOP
  7046. SeeAlso: AX=FFD3h
  7047. --------U-16FEDC-----------------------------
  7048. INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS
  7049.     AX = FEDCh
  7050. Return: AX,DX destroyed
  7051. Index:    uninstall;CPSCHED
  7052. --------U-16FEEFCX0000-----------------------
  7053. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
  7054.     AX = FEEFh
  7055.     CX = 0000h
  7056. Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
  7057.         BX = segment of resident portion
  7058.         DX = (CPSCHED v8.0) resident CS
  7059. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  7060.       code in DESKTOP
  7061. SeeAlso: AX=FFEFh
  7062. --------U-16FEF1-----------------------------
  7063. INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
  7064.     AX = FEF1h
  7065.     BX = ???
  7066. Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
  7067.     DX = 5555h
  7068. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  7069.       code in DESKTOP
  7070. SeeAlso: AX=FFF1h
  7071. --------K-16FF-------------------------------
  7072. INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
  7073.     AH = FFh
  7074.     DX = scan code
  7075. Return: AL = status
  7076.         00h success
  7077.         01h failure
  7078. Program: KBUF is a keyboard buffer expander by Mark Adler
  7079. SeeAlso: AH=05h
  7080. --------V-16FF-------------------------------
  7081. INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT
  7082.     AH = FFh
  7083. Return: AL = interrupt number to which BIOS keyboard handler has been relocated
  7084.     AL+1 = Zoom interrupt number
  7085.     BX = hotkey
  7086. Notes:    the default interrupts are 60h for keyboard and 61h for Zoom interrupt;
  7087.       the default hot key is F10
  7088.     not all vendors include the Tseng TSR which supports these functions
  7089. SeeAlso: INT 61"OPTIMA"
  7090. Index:    hotkeys;OPTIMA 1024 VGA
  7091. ----------16FF--BH00-------------------------
  7092. INT 16 - FREEZE.COM - INSTALLATION CHECK
  7093.     AH = FFh
  7094.     BH = 00h
  7095. Return: BH = FFh if installed
  7096. Program: FREEZE is a PC Magazine utility
  7097. --------d-16FF70BX0000-----------------------
  7098. INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
  7099.     AX = FF70h
  7100.     BX = 0000h
  7101.     CX = 4C69h ('Li')
  7102.     DX = 6E6Bh ('nk')
  7103. Return: AX = 0000h
  7104.     CX = 4350h ('CP')
  7105.     DH = major version
  7106.     DL = minor version
  7107. Program: DRIVEMAP is a redirector which allows drives on computers connected
  7108.       over the parallel or serial ports to appear as local drives
  7109. SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h
  7110. --------d-16FF70BX0001-----------------------
  7111. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  7112.     AX = FF70h
  7113.     BX = 0001h
  7114.     DL = ???
  7115. Return: AX = ???
  7116.     DH = ???
  7117. SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h
  7118. --------d-16FF70BX0002-----------------------
  7119. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  7120.     AX = FF70h
  7121.     BX = 0002h
  7122.     CX = ???
  7123.     DX = ???
  7124. Return: AX = ??? or FFFEh/FFFFh on error
  7125.     DL = ???
  7126. BUG:    DRIVEMAP will branch to random locations for BX values other than
  7127.       those listed above for v8.0-9.0 because a) the incorrect register is
  7128.       range-tested, resulting in BX=0003h-5CD6h being accepted as valid
  7129.       function numbers, and b) the conditional which branches on invalid
  7130.       function numbers jumps to the following instruction, becoming a NOP
  7131. SeeAlso: INT 2F/AX=9203h"DRIVEMAP"
  7132. Index:    installation check;DRIVEMAP
  7133. --------T-16FF80BX0000-----------------------
  7134. INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
  7135.     AX = FF80h
  7136.     BX = 0000h
  7137.     CX = 0000h
  7138.     DX = 0000h
  7139. Return: CX = 5555h if installed
  7140. Program: CPTASK is a task switcher by Central Point Software
  7141. --------T-16FF80BX0001-----------------------
  7142. INT 16 U - PC Tools v8+ CPTASK - GET ???
  7143.     AX = FF80h
  7144.     BX = 0001h
  7145.     ???
  7146. Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0)
  7147.     BX = ??? (PSP segment of resident code???)
  7148. --------T-16FF80BX0002-----------------------
  7149. INT 16 U - PC Tools v8+ CPTASK - GET ???
  7150.     AX = FF80h
  7151.     BX = 0002h
  7152. Return: DX:SI -> ???
  7153. --------T-16FF80BX0003-----------------------
  7154. INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
  7155.     AX = FF80h
  7156.     BX = 0003h
  7157. Return: AX = flags (see #0475)
  7158. SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h
  7159.  
  7160. Bitfields for CPTASK flags:
  7161. Bit(s)    Description    (Table 0475)
  7162.  10    ???
  7163.  13    ???
  7164.  14    ???
  7165.  15    ???
  7166. --------T-16FF80BX0004-----------------------
  7167. INT 16 U - PC Tools v8+ CPTASK - SET ???
  7168.     AX = FF80h
  7169.     BX = 0004h
  7170.     CX = new value of ???
  7171. Return: ???
  7172. Note:    this function also sets bit 14 of the flags word returned by
  7173.       AX=FF80h/BX=0003h
  7174. --------T-16FF80BX0005-----------------------
  7175. INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
  7176.     AX = FF80h
  7177.     BX = 0005h
  7178. Return: AX = number of active tasks???
  7179. --------T-16FF80BX0006-----------------------
  7180. INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
  7181.     AX = FF80h
  7182.     BX = 0006h
  7183. Return: AX = old state (0000h clear, 0001h set)
  7184. Note:    the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h
  7185. --------T-16FF80BX0007-----------------------
  7186. INT 16 U - PC Tools v8+ CPTASK - ???
  7187.     AX = FF80h
  7188.     BX = 0007h
  7189.     ES:DI -> ???
  7190.     ???
  7191. Return: ???
  7192. --------T-16FF80BX0008-----------------------
  7193. INT 16 U - PC Tools v8+ CPTASK - ???
  7194.     AX = FF80h
  7195.     BX = 0008h
  7196.     ???
  7197. Return: ???
  7198. --------T-16FF80BX0009-----------------------
  7199. INT 16 U - PC Tools v8+ CPTASK - GET ???
  7200.     AX = FF80h
  7201.     BX = 0009h
  7202. Return: CL = ???
  7203.     CH = ??? (01h or 02h)
  7204. --------T-16FF80BX000A-----------------------
  7205. INT 16 U - PC Tools v9+ CPTASK - SET ???
  7206.     AX = FF80h
  7207.     BX = 000Ah
  7208.     DS:SI -> 128-byte buffer containing ???
  7209. --------T-16FF80BX000B-----------------------
  7210. INT 16 U - PC Tools v9+ CPTASK - SET ???
  7211.     AX = FF80h
  7212.     BX = 000Bh
  7213.     DX = index of ??? task (1-10)
  7214. --------T-16FF80BX000C-----------------------
  7215. INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
  7216.     AX = FF80h
  7217.     BX = 000Ch
  7218.     CX = new delay time in minutes
  7219. --------T-16FF80BX4350-----------------------
  7220. INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
  7221.     AX = FF80h
  7222.     BX = 4350h ('CP')
  7223.     CX = 5354h ('ST')
  7224. Return: never returns; terminates all tasks and exits to program originally
  7225.       calling CPTASK
  7226. --------U-16FF90-----------------------------
  7227. INT 16 U - PC Tools v8+ DESKTOP - ???
  7228.     AX = FF90h
  7229.     ???
  7230. Return: ???
  7231. Note:    available only when popped up
  7232. --------U-16FF91-----------------------------
  7233. INT 16 U - PC Tools v7+ DESKTOP - ???
  7234.     AX = FF91h
  7235.     ???
  7236. Return: AX = 0000h
  7237. Note:    calls AX=FFFDh after ???
  7238. SeeAlso: AX=FF92h,AX=FFFDh
  7239. --------U-16FF92-----------------------------
  7240. INT 16 U - PC Tools v7+ DESKTOP - ???
  7241.     AX = FF92h
  7242.     ???
  7243. Return: AX = 0000h
  7244. Note:    like AX=FF91h, but temporarily sets ??? to 3
  7245. SeeAlso: AX=FF91h,AX=FFFDh
  7246. --------U-16FF93-----------------------------
  7247. INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
  7248.     AX = FF93h
  7249. --------U-16FF94-----------------------------
  7250. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  7251.     AX = FF94h
  7252.     CX = ??? (default 0017h)
  7253. --------U-16FF95-----------------------------
  7254. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  7255.     AX = FF95h
  7256.     BX = ???
  7257. --------U-16FF96-----------------------------
  7258. INT 16 U - PC Tools v7+ DESKTOP - ???
  7259.     AX = FF96h
  7260.     CL = ???
  7261. Return: AX = ???
  7262. --------U-16FF97-----------------------------
  7263. INT 16 U - PC Tools v7+ DESKTOP - ???
  7264.     AX = FF97h
  7265.     DS:DX -> buffer for ??? (see #0476)
  7266. Return: ???
  7267.  
  7268. Format of PC Tools DESKTOP buffer:
  7269. Offset    Size    Description    (Table 0476)
  7270.  00h 48 BYTEs    ???
  7271.  30h 128 BYTEs    ???
  7272. --------U-16FF98-----------------------------
  7273. INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
  7274.     AX = FF98h
  7275.     DX = byte offset in file of overlay header (see #0477)
  7276. Return: BX = file handle for DESK.OVL file
  7277. Desc:    open the DESK.OVL file, seek to the specified offset, read in the
  7278.       overlay header, and seek to the offset specified by the header
  7279.  
  7280. Format of PC Tools DESKTOP overlay header:
  7281. Offset    Size    Description    (Table 0477)
  7282.  00h 12 BYTEs    NUL-padded ASCII overlay filename
  7283.  0Ch    DWORD    offset within DESK.OVL file of actual overlay
  7284. --------U-16FF99-----------------------------
  7285. INT 16 U - PC Tools v7+ DESKTOP - ???
  7286.     AX = FF99h
  7287.     ???
  7288. Return: ???
  7289. --------U-16FF9A-----------------------------
  7290. INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
  7291.     AX = FF9Ah
  7292. Return: ES:BX -> name of current color scheme
  7293. Note:    available even if not popped up
  7294. --------U-16FF9B-----------------------------
  7295. INT 16 U - PC Tools v7+ DESKTOP - UNUSED
  7296.     AX = FF9Bh
  7297. Return: ???
  7298. Note:    sounds triple-length beep
  7299. --------T-16FF9C-----------------------------
  7300. INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
  7301.     AX = FF9Ch
  7302.     BL = function
  7303.         00h set ??? pointer
  7304.         DS:SI -> ???
  7305.         01h clear pointer to 0000h:0000h
  7306. ----------16FF9D-----------------------------
  7307. INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
  7308.     AX = FF9Dh
  7309.     ES:BX -> ??? word
  7310. Return: ???
  7311. Note:    if ES is non-zero, the word pointed at by ES:BX determines whether the
  7312.       ??? flag is cleared (word = 0000h) or set (word is nonzero).    The
  7313.       flag is always cleared if ES=0000h.
  7314. --------U-16FF9E-----------------------------
  7315. INT 16 U - PC Tools v7+ DESKTOP - ???
  7316.     AX = FF9Eh
  7317.     DL = ???
  7318.         bit 7: ???
  7319.         bits 6-0: function number??? (00h,01h,other)
  7320.     ???
  7321. Return: ???
  7322. --------U-16FFA1-----------------------------
  7323. INT 16 U - PC Tools v7+ DESKTOP - ???
  7324.     AX = FFA1h
  7325.     ???
  7326. Return: ???
  7327. Note:    same as AX=FFA2h, except ??? set to FFh
  7328. SeeAlso: AX=FFA2h
  7329. --------U-16FFA2-----------------------------
  7330. INT 16 U - PC Tools v7+ DESKTOP - ???
  7331.     AX = FFA2h
  7332.     ???
  7333. Return: ???
  7334. Note:    calls AX=FFC7h (remove window) and AX=FFFDh
  7335. SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
  7336. --------y-16FFA3BX0000-----------------------
  7337. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
  7338.     AX = FFA3h
  7339.     BX = 0000h
  7340.     CX = 0000h
  7341. Return: AX = segment of resident code
  7342.     BX = 5555h
  7343.     CX = 5555h
  7344. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  7345. SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h,INT 2F/AX=6284h
  7346. --------y-16FFA3BX0001-----------------------
  7347. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  7348.     AX = FFA3h
  7349.     BX = 0001h
  7350.     CX = 0001h
  7351. Return: AX:BX -> ???
  7352.     CX = BX
  7353. --------y-16FFA3BX0002-----------------------
  7354. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  7355.     AX = FFA3h
  7356.     BX = 0002h
  7357.     CX = 0002h
  7358. Return: AX = ??? (0 or 1)
  7359.     CX = BX = AX
  7360. --------y-16FFA3BX0003-----------------------
  7361. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  7362.     AX = FFA3h
  7363.     BX = 0003h
  7364.     CX = 0003h
  7365. Return: AX = ??? (0 or 1)
  7366.     CX = BX = AX
  7367. --------y-16FFA3BX0004-----------------------
  7368. INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
  7369.     AX = FFA3h
  7370.     BX = 0004h
  7371.     CX = 0004h
  7372. SeeAlso: AX=FFA3h/BX=0005h
  7373. --------y-16FFA3BX0005-----------------------
  7374. INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
  7375.     AX = FFA3h
  7376.     BX = 0005h
  7377.     CX = 0005h
  7378. SeeAlso: AX=FFA3h/BX=0004h
  7379. --------y-16FFA3BX0006-----------------------
  7380. INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
  7381.     AX = FFA3h
  7382.     BX = 0006h
  7383.     CX = 0006h
  7384.     DX = current PSP segment as known to DOS??? or 0000h
  7385. ----------16FFA3BXFFA3-----------------------
  7386. INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
  7387.     AX = FFA3h
  7388.     BX = FFA3h
  7389.     CX = FFA3h
  7390. Return: BX = CX = 5555h if installed
  7391.         AX = resident code segment
  7392. Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk-
  7393.       access indicator on the screen; in v7 and v8, this function was
  7394.       provided by DATAMON
  7395. Note:    DSKLIGHT chains to the previous handler if BX or CX is not FFA3h
  7396. --------U-16FFA4-----------------------------
  7397. INT 16 U - PC Tools v7-8 DESKTOP - ???
  7398.     AX = FFA4h
  7399. Return: ???
  7400. Notes:    available even when not popped up
  7401.     sets unknown flag if ??? conditions met
  7402. SeeAlso: AX=FEA4h
  7403. --------c-16FFA5CX1111-----------------------
  7404. INT 16 - PC-Cache v6+ - INSTALLATION CHECK
  7405.     AX = FFA5h
  7406.     CX = 1111h
  7407. Return: CH = 00h if installed
  7408.         ES:DI -> internal data (see #0478)
  7409.         CL = cache state
  7410.         01h enabled
  7411.         02h disabled
  7412. SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
  7413.  
  7414. Format of PC-Cache internal data:
  7415. Offset    Size    Description    (Table 0478)
  7416. -1Ch 20 BYTEs    cached drive list, one byte per drive A: to T:
  7417.         each byte is either blank (20h) or drive letter (41h-54h)
  7418.  -8    BYTE    ???
  7419.  -7    WORD    number of physical transfers (scaled down to 0000h-7FFFh)
  7420.  -5    WORD    number of saved transfers (scaled down to 0000h-7FFFh)
  7421.  -3   3 BYTEs    ???
  7422. --------c-16FFA5CXAAAA-----------------------
  7423. INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
  7424.     AX = FFA5h
  7425.     CX = AAAAh
  7426. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  7427. SeeAlso: AX=FFA5h/CX=CCCCh
  7428. --------c-16FFA5CXCCCC-----------------------
  7429. INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
  7430.     AX = FFA5h
  7431.     CX = CCCCh
  7432. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  7433. Note:    delayed writes are automatically disabled on EXECing
  7434.       (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
  7435.       however, delayed writes are not automatically reenabled upon the
  7436.       program's termination in v6.
  7437. SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
  7438. --------c-16FFA5CXDDDD-----------------------
  7439. INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
  7440.     AX = FFA5h
  7441.     CX = DDDDh
  7442. SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
  7443. --------c-16FFA5CXEEEE-----------------------
  7444. INT 16 - PC-Cache v6+ - ENABLE CACHE
  7445.     AX = FFA5h
  7446.     CX = EEEEh
  7447. SeeAlso: AX=FFA5h/CX=DDDDh
  7448. --------c-16FFA5CXFFFF-----------------------
  7449. INT 16 - PC-Cache v6+ - FLUSH CACHE
  7450.     AX = FFA5h
  7451.     CX = FFFFh
  7452. SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
  7453. --------U-16FFA6-----------------------------
  7454. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  7455.     AX = FFA6h
  7456. Return: DS:SI -> ???
  7457. Note:    available only when popped up
  7458. --------U-16FFA7-----------------------------
  7459. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? PATH
  7460.     AX = FFA7h
  7461. Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
  7462. --------U-16FFA8-----------------------------
  7463. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  7464.     AX = FFA8h
  7465.     DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
  7466.     ???
  7467. Return: ???
  7468. Notes:    available only when popped up
  7469.     strings copied into internal buffer, among other actions
  7470. --------U-16FFA9-----------------------------
  7471. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET VERSION STRING
  7472.     AX = FFA9h
  7473. Return: DS:SI -> version string
  7474. --------U-16FFAA-----------------------------
  7475. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  7476.     AX = FFAAh
  7477.     ???
  7478. Return: ???
  7479. Note:    available only when popped up
  7480. --------U-16FFAB-----------------------------
  7481. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET EDITOR SETTINGS???
  7482.     AX = FFABh
  7483. Return: DS:SI -> editor setting strings???
  7484. --------U-16FFAC-----------------------------
  7485. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  7486.     AX = FFACh
  7487.     DL = ???
  7488. Note:    available only when popped up
  7489. --------U-16FFAD-----------------------------
  7490. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  7491.     AX = FFADh
  7492.     DL = ???
  7493. --------U-16FFAE-----------------------------
  7494. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  7495.     AX = FFAEh
  7496. Return: AL = ???
  7497. --------U-16FFAF-----------------------------
  7498. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  7499.     AX = FFAFh
  7500.     DL = ???
  7501. --------U-16FFB0-----------------------------
  7502. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  7503.     AX = FFB0h
  7504.     BL = ???
  7505. --------U-16FFB1-----------------------------
  7506. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  7507.     AX = FFB1h
  7508.     ???
  7509. Return: ???
  7510. --------U-16FFB2-----------------------------
  7511. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  7512.     AX = FFB2h
  7513. Return: DS:SI -> ???
  7514. --------U-16FFB3-----------------------------
  7515. INT 16 U - PC Tools v5.5-8.0 DESKTOP - ???
  7516.     AX = FFB3h
  7517.     ???
  7518. Return: ???
  7519. Note:    available only when popped up
  7520. --------U-16FFB4-----------------------------
  7521. INT 16 U - PC Tools v5.5-8.0 DESKTOP - SET ??? FLAG
  7522.     AX = FFB4h
  7523. Note:    available only when popped up
  7524. SeeAlso: AX=FFBBh
  7525. --------U-16FFB5-----------------------------
  7526. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET WINDOW PARAMETERS
  7527.     AX = FFB5h
  7528.     BX = window specifier (000Fh to 0019h) (see #0479)
  7529.     DX = 0000h get, nonzero = set
  7530.     ES:DI -> window parameter buffer (see #0480)
  7531. SeeAlso: AX=FFCBh
  7532.  
  7533. (Table 0479)
  7534. Values for PC Tools DESKTOP window specifier:
  7535.  000Fh    comm/FAX
  7536.  0014h    hotkey selection
  7537.  0015h    ASCII table
  7538.  0016h    system colors menu
  7539.  
  7540. Format of PC Tools DESKTOP window parameters:
  7541. Offset    Size    Description    (Table 0480)
  7542.  00h    BYTE    rows in window, not counting frame
  7543.  01h    BYTE    columns in window, not counting frame
  7544.  02h    BYTE    row number of top of window
  7545.  03h    BYTE    2*column number of left of window
  7546.  04h    BYTE    character attribute for ???
  7547.  05h    BYTE    character attribute for background/border
  7548.  06h    BYTE    character attribute for ???
  7549.  07h    DWORD    pointer to ??? on screen
  7550.  0Bh  4 BYTEs    ???
  7551.  0Fh    BYTE    nonzero if window may be resized
  7552. Note:    if running in monochrome mode, character attributes at offsets 04h to
  7553.       06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
  7554.       are changed to 07h on reading
  7555. --------U-16FFB6-----------------------------
  7556. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  7557.     AX = FFB6h
  7558. Return: AH = ???
  7559.     AL = ???
  7560. --------U-16FFB7-----------------------------
  7561. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET ???
  7562.     AX = FFB7h
  7563.     BX = direction
  7564.         0000h copy to buffer
  7565.         else  copy from buffer
  7566.     DS:SI -> 70-byte buffer with ???
  7567. Return: data copied
  7568. Note:    available only when popped up under v6.0+
  7569. --------U-16FFB8-----------------------------
  7570. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET/SET???
  7571.     AX = FFB8h
  7572.     BH = subfunction
  7573.         00h get
  7574.         Return: BL = old value of ???
  7575.             CL = old value of ??? (v6.0+)
  7576.             CH = old value of ??? (v6.0+)
  7577.         nonzero set
  7578.         BL = new value for ???
  7579.         CL = new value for ??? (v6.0+)
  7580.         CH = new value for ??? (v6.0+)
  7581.         DH = ???
  7582.         Return: AL = old value replaced by CL (v6.0+)
  7583.             AH = old value replaced by CH (v6.0+)
  7584. --------U-16FFB9-----------------------------
  7585. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7586.     AX = FFB9h
  7587.     ???
  7588. Return: AX = ???
  7589.     CX = ???
  7590.     DS:SI -> ???
  7591.     ES:DI -> ???
  7592. --------U-16FFBA-----------------------------
  7593. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7594.     AX = FFBAh
  7595.     ???
  7596. Return: AX = ???
  7597. Note:    available only when popped up
  7598. --------U-16FFBB-----------------------------
  7599. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLEAR ??? FLAG
  7600.     AX = FFBBh
  7601. Note:    available only when popped up
  7602. SeeAlso: AX=FFB4h
  7603. --------U-16FFBC-----------------------------
  7604. INT 16 U - PC Tools v5.1-8.0 DESKTOP - RESTORE ORIGINAL SCREEN???
  7605.     AX = FFBCh
  7606. --------U-16FFBD-----------------------------
  7607. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? DATABASE INDEXING MESSAGES
  7608.     AX = FFBDh
  7609.     ???
  7610. Return: ???
  7611. --------U-16FFBE-----------------------------
  7612. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7613.     AX = FFBEh
  7614.     ???
  7615. Return: ???
  7616. Note:    available only when popped up
  7617. --------U-16FFBF-----------------------------
  7618. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7619.     AX = FFBFh
  7620.     BX = DOS file handle to write on
  7621.     ???
  7622. Return: ???
  7623. Note:    available only when popped up
  7624. --------U-16FFC0-----------------------------
  7625. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7626.     AX = FFC0h
  7627.     ???
  7628. Return: AX = 0000h if successful
  7629.     AX = FFFFh on error
  7630. Note:    available only when popped up
  7631. --------U-16FFC1-----------------------------
  7632. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7633.     AX = FFC1h
  7634.     BL = ???
  7635.     ES:DI -> data structure (see #0481)
  7636.     ???
  7637. Return: AX = ???
  7638. Note:    available only when popped up
  7639. SeeAlso: AX=FFC2h,AX=FFC3h
  7640.  
  7641. Format of PC Tools DESKTOP data structure:
  7642. Offset    Size    Description    (Table 0481)
  7643.  00h    WORD    ???
  7644.  02h    WORD    ???
  7645.  04h    WORD    ???
  7646.  06h    WORD    ???
  7647.  08h    WORD    ???
  7648.  0Ah    BYTE    ???
  7649.  0Bh    BYTE    ??? (zero/nonzero)
  7650. ---v7.1---
  7651.  0Ch    WORD    ???
  7652.  0Eh    BYTE    ???
  7653.  0Fh    WORD    ???
  7654.  11h    WORD    ???
  7655.     ???
  7656. --------U-16FFC2-----------------------------
  7657. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7658.     AX = FFC2h
  7659.     BL = ???
  7660.     ES:DI -> data structure (see #0481)
  7661.     ???
  7662. Return: AH = ???
  7663.     CX = ???
  7664.     DH = ???
  7665.     DL = ???
  7666. Note:    available only when popped up
  7667. SeeAlso: AX=FFC1h,AX=FFC3h
  7668. --------U-16FFC3-----------------------------
  7669. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7670.     AX = FFC3h
  7671.     BL = ???
  7672.     ES:DI -> data structure (see #0481)
  7673.     ???
  7674. Return: AH = ???
  7675.     CX = ???
  7676.     DH = ???
  7677.     DL = ???
  7678. Note:    available only when popped up
  7679. SeeAlso: AX=FFC1h,AX=FFC2h
  7680. --------U-16FFC4-----------------------------
  7681. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  7682.     AX = FFC4h
  7683. Return: AL = ???
  7684.     BX = segment of scratch space???
  7685.     CX = segment of stored screen data (section covered by window???)
  7686.     DX = segment of window parameters for ???
  7687.     ES:BP -> ???
  7688. Note:    available only when popped up in versions prior to 6.0
  7689. --------U-16FFC5-----------------------------
  7690. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK WHETHER DESKTOP LOADED RESIDENT
  7691.     AX = FFC5h
  7692. Return: BL = Desktop state
  7693.         00h if nonresident
  7694.         nonzero if loaded resident
  7695. Note:    available only when popped up; should call AX=FFEFh first to ensure
  7696.       that DESKTOP is active
  7697. SeeAlso: AX=FFEFh,AX=FFF3h
  7698. --------U-16FFC6-----------------------------
  7699. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  7700.     AX = FFC6h
  7701.     BL = new value for ???
  7702. --------U-16FFC7-----------------------------
  7703. INT 16 U - PC Tools v5.1-8.0 DESKTOP - REMOVE WINDOW
  7704.     AX = FFC7h
  7705.     ???
  7706. Return: ???
  7707. --------U-16FFC8-----------------------------
  7708. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  7709.     AX = FFC8h
  7710. Return: DS:SI -> ???
  7711. Note:    valid only while popped up
  7712. --------U-16FFC9-----------------------------
  7713. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY DATA TO CLIPBOARD
  7714.     AX = FFC9h
  7715.     DS:SI -> characters to store in clipboard
  7716.     CX = size in bytes
  7717. Return: CF set on error
  7718. Notes:    available only when popped up
  7719.     while copying, bytes of 00h and 0Ah are skipped
  7720. --------U-16FFCA-----------------------------
  7721. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  7722.     AX = FFCAh
  7723.     DX = ???
  7724. Return: AX destroyed
  7725. Note:    available only when popped up
  7726. --------U-16FFCB-----------------------------
  7727. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SELECT WINDOW PARAMETERS???
  7728.     AX = FFCBh
  7729.     DX = window specifier???
  7730. Return: AX destroyed
  7731. Note:    available only when popped up
  7732. SeeAlso: AX=FFB5h
  7733. --------U-16FFCC-----------------------------
  7734. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY ASCIZ STRING CENTERED IN WINDOW
  7735.     AX = FFCCh
  7736.     DS:SI -> ASCIZ string
  7737. Return: AX = ???
  7738.     CX = ???
  7739.     ES:DI -> address past last character displayed (v5.1/5.5)
  7740.           -> ??? on menu bar (v6.0)
  7741. --------U-16FFCD-----------------------------
  7742. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7743.     AX = FFCDh
  7744.     DS:DX -> ???
  7745. Return: ???
  7746. Note:    available only when popped up
  7747. --------U-16FFCE-----------------------------
  7748. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? DELAYS
  7749.     AX = FFCEh
  7750.     CX = ???
  7751. Return: nothing???
  7752. --------U-16FFCF-----------------------------
  7753. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLOSE PRINTER/PRINT FILE
  7754.     AX = FFCFh
  7755. Note:    available only when popped up
  7756. --------U-16FFD0-----------------------------
  7757. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO PRINT???
  7758.     AX = FFD0h
  7759.     ???
  7760. Return: ???
  7761. Note:    available only when popped up
  7762. --------U-16FFD1-----------------------------
  7763. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY PRINT OPTIONS MENU
  7764.     AX = FFD1h
  7765. Return: BX = number of copies
  7766.     DX = destination
  7767.         00h cancel
  7768.         01h LPT1
  7769.         02h LPT2
  7770.         03h LPT3
  7771.         04h COM1
  7772.         05h COM2
  7773.         06h disk file
  7774. Note:    available only when popped up
  7775. --------U-16FFD2-----------------------------
  7776. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7777.     AX = FFD2h
  7778.     BX = ???
  7779. Return: BL = ???
  7780. Note:    available only when popped up
  7781. --------U-16FFD3-----------------------------
  7782. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7783.     AX = FFD3h
  7784.     DS:SI -> 92-byte data record for ???
  7785. Return: ???
  7786. SeeAlso: AX=FED3h
  7787. --------U-16FFD4BH3C-------------------------
  7788. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CREATE/OPEN/DELETE FILE
  7789.     AX = FFD4h
  7790.     BH = 3Ch create file (with no attributes)
  7791.          3Dh open file
  7792.          41h delete file
  7793.     BL = access mode
  7794.          00h read only
  7795.          01h write only
  7796.          02h read/write
  7797.     DS:SI -> ASCIZ filename
  7798. Return: BX = file handle
  7799.         0000h on error
  7800. Note:    operation is attempted in (in order) the directory from which the
  7801.       desktop was started/run???, the directory specified with the
  7802.       filename, X:\PCTOOLS\, and X:\
  7803. --------U-16FFD5-----------------------------
  7804. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7805.     AX = FFD5h
  7806.     ???
  7807. Return: ???
  7808. Note:    available only when popped up
  7809. --------U-16FFD6-----------------------------
  7810. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7811.     AX = FFD6h
  7812.     BX = ???
  7813.     CX = ???
  7814.     DX = offset in ???
  7815.     ???
  7816. Return: ???
  7817. Note:    available only when popped up
  7818. --------U-16FFD7-----------------------------
  7819. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7820.     AX = FFD7h
  7821.     ???
  7822. Return: BL = ???
  7823. Note:    available only when popped up
  7824. --------U-16FFD8-----------------------------
  7825. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SAFE CREATE FILE
  7826.     AX = FFD8h
  7827.     DS:BX -> ASCIZ filename
  7828. Return: BX = file handle
  7829.         0000h on error
  7830. Note:    pops up confirmation menu if file already exists
  7831.     only available when popped up???
  7832. --------U-16FFD9-----------------------------
  7833. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  7834.     AX = FFD9h
  7835. Return: AX = ???
  7836. Note:    available only when popped up
  7837. --------U-16FFDA-----------------------------
  7838. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET NAME OF LAST FILE OPENED
  7839.     AX = FFDAh
  7840.     DS:SI -> ??? (v5.1/5.5 only)
  7841. Return: DS:SI -> filename
  7842. --------U-16FFDB-----------------------------
  7843. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  7844.     AX = FFDBh
  7845.     BL = ???
  7846. Note:    available only when popped up
  7847. --------U-16FFDC-----------------------------
  7848. INT 16 U - PC Tools v5.1-8.0 DESKTOP - UNHOOK
  7849.     AX = FFDCh
  7850. Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
  7851.       original values
  7852. Index:    uninstall;PC Tools DESKTOP
  7853. --------U-16FFDDBX0000-----------------------
  7854. INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
  7855.     AX = FFDDh
  7856.     BX = 0000h
  7857. Return: CX = 5555h
  7858.     DX = 5555h if PCShell installed in resident mode
  7859. --------U-16FFDDBX0001-----------------------
  7860. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  7861.     AX = FFDDh
  7862.     BX = 0001h
  7863. Return: CF clear if request successful (PCShell will pop up)
  7864.     CF set on error
  7865. SeeAlso: AX=FFDDh/BX=0003h
  7866. --------U-16FFDDBX0002-----------------------
  7867. INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
  7868.     AX = FFDDh
  7869.     BX = 0002h
  7870. Return: AL =
  7871.         00h ???
  7872.         01h ???
  7873. Note:    PCShell v6.0+ displays the error message "Incorrect PCRUN version",
  7874.       awaits a keystroke, and aborts the current process
  7875. --------U-16FFDDBX0003-----------------------
  7876. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  7877.     AX = FFDDh
  7878.     BX = 0003h
  7879. SeeAlso: AX=FFDDh/BX=0001h
  7880. --------U-16FFDDBX0004-----------------------
  7881. INT 16 U - PC Tools v5.1+ PCShell API - GET ???
  7882.     AX = FFDDh
  7883.     BX = 0004h
  7884. Return: CF clear if successful
  7885.         DS:SI -> ???
  7886. --------U-16FFDDBX0005-----------------------
  7887. INT 16 U - PC Tools v5.1+ PCShell API - ???
  7888.     AX = FFDDh
  7889.     BX = 0005h
  7890.     ???
  7891. Return: ???
  7892. Note:    resets various variables if certain conditions are met
  7893. --------U-16FFDDBX0006-----------------------
  7894. INT 16 U - PC Tools v5.1+ PCShell API - ???
  7895.     AX = FFDDh
  7896.     BX = 0006h
  7897.     ???
  7898. Return: ???
  7899. Note:    resets various variables if certain conditions are met
  7900. --------U-16FFDDBX0007-----------------------
  7901. INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
  7902.     AX = FFDDh
  7903.     BX = 0007h
  7904. Return: CF clear if successful
  7905. SeeAlso: AX=FFDDh/BX=0008h
  7906. --------U-16FFDDBX0008-----------------------
  7907. INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
  7908.     AX = FFDDh
  7909.     BX = 0008h
  7910. Return: CF undefined
  7911. SeeAlso: AX=FFDDh/BX=0007h
  7912. --------U-16FFDDBX0009-----------------------
  7913. INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
  7914.     AX = FFDDh
  7915.     BX = 0009h
  7916. Return: CF clear if successful
  7917.         DS:SI -> list of pointers (see #0482)
  7918.  
  7919. Format of PC Tools PCShell returned pointer list:
  7920. Offset    Size    Description    (Table 0482)
  7921.  00h    WORD    offset of WORD containing ???
  7922.  02h    WORD    offset of name of program to execute
  7923.  04h    WORD    offset of 80-byte buffer for ???
  7924.  06h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  7925.  08h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  7926. --------U-16FFDDBX000A-----------------------
  7927. INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
  7928.     AX = FFDDh
  7929.     BX = 000Ah
  7930. Return: CX = 5555h if running
  7931.     DX = 5555h
  7932. Note:    also sets a flag
  7933. --------U-16FFDDBX000B-----------------------
  7934. INT 16 U - PC Tools v6.0+ PCRUN API - ???
  7935.     AX = FFDDh
  7936.     BX = 000Bh
  7937.     ???
  7938. Return: CX = 5555h if PCRUN active
  7939.     DX = 5555h
  7940. Note:    also clears flag set by AX=FFDDh/BX=000Ah
  7941. --------U-16FFDE-----------------------------
  7942. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY POPUP MENU
  7943.     AX = FFDEh
  7944.     DS:DX -> menu description (must be on a paragraph boundary)
  7945. Return: AX = ???
  7946.         AL seems to be the number of the selected button
  7947. Note:    available only when popped up
  7948. SeeAlso: AX=FFEEh
  7949. --------U-16FFDF-----------------------------
  7950. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7951.     AX = FFDFh
  7952.     ???
  7953. Return: ???
  7954. --------U-16FFE0-----------------------------
  7955. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7956.     AX = FFE0h
  7957.     CX = ???
  7958.     DX = ???
  7959. Note:    available only when popped up
  7960. --------U-16FFE1-----------------------------
  7961. INT 16 U - PC Tools v5.1-8.0 DESKTOP - BEEP
  7962.     AX = FFE1h
  7963. --------U-16FFE2-----------------------------
  7964. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7965.     AX = FFE2h
  7966.     DX = ???
  7967. Return: ???
  7968. Note:    available only when popped up
  7969. --------U-16FFE3-----------------------------
  7970. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PRINT CHARACTER
  7971.     AX = FFE3h
  7972.     BL = character to print to currently open printer or print file
  7973. Return: CF set on error
  7974. Note:    available only when popped up
  7975. SeeAlso: INT 17/AH=00h
  7976. --------U-16FFE4-----------------------------
  7977. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  7978.     AX = FFE4h
  7979.     DX = segment of ???
  7980. Return: ???
  7981. Note:    available only when popped up
  7982. --------U-16FFE5-----------------------------
  7983. INT 16 U - PC Tools v5.1-8.0 DESKTOP - POP UP FILE SELECTION MENU
  7984.     AX = FFE5h
  7985.     DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
  7986.     DX = segment of window parameters???
  7987. Return: AX = DOS file handle for file
  7988.         DS:DX -> filename???
  7989.         FFFFh if function cancelled by user
  7990. Note:    available only when popped up
  7991. SeeAlso: AX=FFDAh
  7992. --------U-16FFE6-----------------------------
  7993. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK FOR AND GET KEYSTROKE
  7994.     AX = FFE6h
  7995. Return: AX = 0000h if no key available
  7996.          else  BIOS keycode
  7997. Notes:    available only when popped up
  7998.     invokes INT 28 idle interrupt before checking for key
  7999. --------U-16FFE7-----------------------------
  8000. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  8001.     AX = FFE7h
  8002.     BX = segment of ???
  8003. Return: ???
  8004. Note:    available only when popped up
  8005. --------U-16FFE8-----------------------------
  8006. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY NUMBER
  8007.     AX = FFE8h
  8008.     CX = number
  8009.     DH = attribute
  8010.     DS:SI -> destination for ASCII number
  8011. Return: DS:SI buffer filled in with alternating characters and attributes
  8012. --------U-16FFE9-----------------------------
  8013. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET FILE LIST???
  8014.     AX = FFE9h
  8015. Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
  8016. Note:    available only when popped up
  8017. --------U-16FFEA-----------------------------
  8018. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY COUNTED STRING
  8019.     AX = FFEAh
  8020.     DS:SI -> counted string (count byte followed by string)
  8021. Return: ???
  8022. Note:    available only when popped up
  8023. --------U-16FFEB-----------------------------
  8024. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  8025.     AX = FFEBh
  8026.     ???
  8027. Return: ???
  8028. --------U-16FFEC-----------------------------
  8029. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET KEY
  8030.     AX = FFECh
  8031.     DS:SI -> FAR routine to ???
  8032.     BX = ???
  8033.     ???
  8034. Return: AX = keystroke
  8035.         FFFFh if F10 pressed to go to menu
  8036. Notes:    available only when popped up
  8037.     invokes INT 28 while waiting for keystroke
  8038.     F10 is hotkey to Desktop menu
  8039. Index:    hotkeys;PC Tools DESKTOP
  8040. --------U-16FFED-----------------------------
  8041. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  8042.     AX = FFEDh
  8043. Return: AX = ???
  8044. Note:    available only when popped up
  8045. --------U-16FFEE-----------------------------
  8046. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE PULLDOWN MENUS
  8047.     AX = FFEEh
  8048.     DS:SI -> pulldown menu system description (see #0483)
  8049. Return: AX destroyed
  8050. Notes:    available only when popped up
  8051.     if the accessory does not need any menu items of its own, it should
  8052.       call AX=FFFAh instead
  8053. SeeAlso: AX=FFF7h,AX=FFFAh
  8054.  
  8055. Format of PC Tools DESKTOP pulldown menu system description:
  8056. Offset    Size    Description    (Table 0483)
  8057.  00h    WORD    offset of menu bar contents (counted string)
  8058.  02h    WORD    number of items on menu bar
  8059.  04h 10 BYTEs    scan codes for hotkeying to each of up to ten menu items
  8060.  0Eh 10 BYTEs    which character to highlight in each menu item (01h=first)
  8061.  18h    WORD    offset of first menu definition (see #0484)
  8062.  1Ah    WORD    offset of second menu definition
  8063.     ...
  8064.  
  8065. Format of PC Tools DESKTOP menu definition:
  8066. Offset    Size    Description    (Table 0484)
  8067.  00h    WORD    offset of menu contents (see #0485)
  8068.  02h    WORD    number of entries in menu
  8069.  04h    for each entry:
  8070.         Offset    Size    Description
  8071.          00h    BYTE    scancode of Alt-key to invoke entry
  8072.          01h    BYTE    character to highlight (01h=first, etc)
  8073.          02h    WORD    offset of FAR routine to handle selection
  8074.  
  8075. Format of PC Tools DESKTOP menu contents:
  8076. Offset    Size    Description    (Table 0485)
  8077.  00h    BYTE    number of lines in menu
  8078.  01h    BYTE    width of menu
  8079.  02h  N BYTEs    counted strings, one for each line in menu
  8080. --------U-16FFEFCX0000-----------------------
  8081. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INSTALLATION CHECK
  8082.     AX = FFEFh
  8083.     CX = 0000h
  8084. Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
  8085.         BX = segment of resident portion
  8086.         AX = ??? (v5.1/5.5 only)
  8087. SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
  8088. --------U-16FFF0-----------------------------
  8089. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  8090.     AX = FFF0h
  8091.     DX = ???
  8092. Return: AX destroyed
  8093. Note:    available only when popped up
  8094. --------U-16FFF1BX0000-----------------------
  8095. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ALTERNATE INSTALLATION CHECK
  8096.     AX = FFF1h
  8097.     BX = 0000h  leave ??? flag as is
  8098.         nonzero set ??? flag
  8099. Return: CX = 5555h if installed
  8100.     DX = 5555h
  8101. --------U-16FFF2-----------------------------
  8102. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY HELP LINE
  8103.     AX = FFF2h
  8104.     DS:SI -> ASCIZ function key label string (each label preceded by '[')
  8105.         or help text
  8106. Return: AX destroyed
  8107. Notes:    available only when popped up
  8108.     if the specified string does not start with '[', it is displayed
  8109.       centered on the bottom line, else the function key labels are shown
  8110. --------U-16FFF3-----------------------------
  8111. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO UNLOAD RESIDENT DESKTOP
  8112.     AX = FFF3h
  8113. Note:    releases any EMS being used; restores video mode, page, and cursor
  8114.       shape; and restores interrupt vectors
  8115. SeeAlso: AX=FFC5h,AX=FFEFh
  8116. Index:    uninstall;PC Tools DESKTOP
  8117. --------U-16FFF4-----------------------------
  8118. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  8119.     AX = FFF4h
  8120.     ???
  8121. Return: ???
  8122. Note:    available only when popped up
  8123. SeeAlso: AX=FFF6h
  8124. --------U-16FFF5-----------------------------
  8125. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET SCREEN ATTRIBUTE ARRAY
  8126.     AX = FFF5h
  8127. Return: ES:BX -> screen attributes data structure (see #0486)
  8128.     AL = ??? (v6.0+)
  8129.  
  8130. Format of PC Tools DESKTOP attribute data structure:
  8131. Offset    Size    Description    (Table 0486)
  8132.  -1    BYTE    attribute for desktop background
  8133.  00h    BYTE    attribute for normal characters on desktop menu
  8134.  01h    BYTE    attribute for highlighted characters on desktop menu
  8135.  02h  5 BYTEs    ???
  8136.  07h    BYTE    attribute for dialog boxes
  8137.  08h 15 BYTEs    ???
  8138.  17h    BYTE    attribute for message boxes
  8139. --------U-16FFF6-----------------------------
  8140. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INVOKE NOTEPAD EDITOR
  8141.     AX = FFF6h
  8142.     DS = segment of editor buffer structure (see #0487)
  8143.     BX = ???
  8144.     DX = segment of window parameters structure (see #0480)
  8145. Return: ???
  8146. Note:    available only when popped up
  8147. SeeAlso: AX=FFF4h
  8148.  
  8149. Format of PC Tools DESKTOP editor buffer structure:
  8150. Offset    Size    Description    (Table 0487)
  8151.  00h    WORD    offset of current cursor position in buffer segment
  8152.  02h  2 BYTEs    ???
  8153.  04h    WORD    offset of beginning of file data in buffer segment
  8154.  06h 10 BYTEs    ???
  8155.  10h  N BYTEs    ASCIZ name of file being edited
  8156. --------U-16FFF7-----------------------------
  8157. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS MENU BAR ENTRY???
  8158.     AX = FFF7h
  8159.     DS:SI -> ???
  8160.     ???
  8161. Return: ???
  8162. Notes:    available only when popped up
  8163.     performs input processing on the menu bar set up with AX=FFEEh
  8164. SeeAlso: AX=FFEEh,AX=FFFBh
  8165. --------U-16FFF8-----------------------------
  8166. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DRAW EMPTY WINDOW
  8167.     AX = FFF8h
  8168.     DS:0000h -> window parameters structure (see #0480)
  8169.     DS:BX -> DWORD to store address of ??? on screen
  8170. Return: ???
  8171. --------U-16FFF9-----------------------------
  8172. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE SCREEN REFRESH ROUTINE
  8173.     AX = FFF9h
  8174.     ES:BX -> FAR routine to redisplay the utility's window
  8175. Note:    available only when popped up
  8176. --------U-16FFFA-----------------------------
  8177. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE STANDARD PULLDOWN MENUS
  8178.     AX = FFFAh
  8179. Notes:    available only when popped up
  8180.     adds the "Window" option to the "Desktop" option which is the only one
  8181.       available when no accessories are active.  Unlike AX=FFEEh, no
  8182.       additional menu items are added between "Desktop" and "Window"
  8183. SeeAlso: AX=FFEEh,AX=FFFBh
  8184. --------U-16FFFB-----------------------------
  8185. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS STANDARD MENU BAR
  8186.     AX = FFFBh
  8187. Return: ???
  8188. Notes:    available only when popped up
  8189.     performs input processing on the standard menu bar set up with AX=FFFAh
  8190. SeeAlso: AX=FFF7h
  8191. --------U-16FFFC-----------------------------
  8192. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET HOTKEYS AND KEYBOARD VECTOR
  8193.     AX = FFFCh
  8194. Return: ES:BX -> hotkey table (see #0488)
  8195.     DS:DX = original INT 09 vector
  8196.  
  8197. Format of PC Tools DESKTOP hotkey table:
  8198. Offset    Size    Description    (Table 0488)
  8199.  00h  2 BYTEs    scancode/shift state for desktop hotkey
  8200.  02h  2 BYTEs    scancode/shift state for clipboard paste key
  8201.  04h  2 BYTEs    scancode/shift state for clipboard copy key
  8202.  06h  2 BYTEs    scancode/shift state for screen autodial key
  8203. --------U-16FFFD-----------------------------
  8204. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY ???
  8205.     AX = FFFDh
  8206. Return: AX destroyed
  8207. Note:    copies 4000 bytes from ??? to ??? under certain circumstances
  8208. SeeAlso: AX=FF91h,AX=FF92h
  8209. --------M-16FFFE-----------------------------
  8210. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SHOW MOUSE CURSOR
  8211.     AX = FFFEh
  8212. SeeAlso: AX=FFFFh,INT 33/AX=0001h
  8213. --------M-16FFFF-----------------------------
  8214. INT 16 U - PC Tools v5.1-8.0 DESKTOP - HIDE MOUSE CURSOR
  8215.     AX = FFFFh
  8216. SeeAlso: AX=FFFEh,INT 33/AX=0002h
  8217. --------P-17----DX0ABC-----------------------
  8218. INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
  8219.     DX = 0ABCh
  8220. Return: AX = AAAAh
  8221.     DX = BAAAh
  8222.     ES = code segment of resident portion
  8223. --------P-17----DX0B90-----------------------
  8224. INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
  8225.     DX = 0B90h
  8226. Return: DX = ABBBh
  8227.     ES = code segment of resident portion
  8228. --------P-17----DX0B91-----------------------
  8229. INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
  8230.     DX = 0B91h
  8231. Return: DX = ABCBh
  8232.     ES = code segment of resident portion
  8233. --------P-17----DX0F5F-----------------------
  8234. INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
  8235.     DX = 0F5Fh
  8236. Return: AX = AAAAh
  8237.     DX = F555h
  8238.     ES = code segment of resident portion
  8239. --------B-1700-------------------------------
  8240. INT 17 - PRINTER - WRITE CHARACTER
  8241.     AH = 00h
  8242.     AL = character to write
  8243.     DX = printer number (00h-02h)
  8244. Return: AH = printer status (see #0489)
  8245. SeeAlso: AH=02h,AH=84h"AX",AX=6F02h,AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
  8246.  
  8247. Bitfields for printer status:
  8248. Bit(s)    Description    (Table 0489)
  8249.  7    not busy
  8250.  6    acknowledge
  8251.  5    out of paper
  8252.  4    selected
  8253.  3    I/O error
  8254.  2-1    unused
  8255.  0    timeout
  8256. --------B-1701-------------------------------
  8257. INT 17 - PRINTER - INITIALIZE PORT
  8258.     AH = 01h
  8259.     DX = printer number (00h-02h)
  8260. Return: AH = printer status (see #0489)
  8261. Note:    some printers report that they are ready immediately after
  8262.       initialization when they actually are not; a more reliable result may
  8263.       be obtained by calling AH=02h after a brief delay
  8264. SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC"
  8265. --------B-1702-------------------------------
  8266. INT 17 - PRINTER - GET STATUS
  8267.     AH = 02h
  8268.     DX = printer number (00h-02h)
  8269. Return: AH = printer status (see #0489)
  8270. Note:    PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h
  8271. SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC"
  8272. --------P-1702--DX0000-----------------------
  8273. INT 17 - INSET - INSTALLATION CHECK
  8274.     AH = 02h
  8275.     DX = 0000h
  8276.     CX = 07C3h (1987d)
  8277. Return: CX = 07C2h (1986d) if installed
  8278. Program: INSET is a text/graphics integration program
  8279. --------b-170200BX5050-----------------------
  8280. INT 17 - Advanced Parallel Port (EPP) BIOS - INSTALLATION CHECK
  8281.     AX = 0200h
  8282.     BX = 5050h ('PP')
  8283.     CH = 45h   ('E')
  8284.     DX = printer port number (00h-02h)
  8285. Return: AH = status
  8286.         00h if installed and port is an enhanced parallel port
  8287.         CX:AL = installed BIOS type
  8288.             5050h:45h ('PPE') if EPP v3.0 BIOS Installed
  8289.             4550h:50h ('EPP') if EPP v1.0 BIOS installed
  8290.         DX:BX -> far entry point to Advanced BIOS (see #0490)
  8291.         03h if installed but specified port not supported
  8292.         CF set
  8293. Program: The Advanced Parallel Port BIOS provides support for parallel
  8294.       port peripherals using the enhanced modes of the IEEE 1284.
  8295. SeeAlso: AH=E0h
  8296.  
  8297. (Table 0490)
  8298. Call EPP BIOS entry point with:
  8299.     DL = port number
  8300.     AH = function
  8301.         00h get ???
  8302.         Return: AH = 00h if successful
  8303.                 BH = ??? (10h)
  8304.                 BL = ??? (00h)
  8305.                 ES:DI -> driver copyright string???
  8306.                 CX = I/O port base address for parallel port
  8307.                 AL = IRQ number used by port
  8308.         01h set port mode???
  8309.         AL = ???
  8310.             bit 0: ???
  8311.             bit 1: ???
  8312.             bit 2: ???
  8313.             bits 3-7 reserved (0)
  8314.         Return: AH = 00h if successful
  8315.             CF clear if successful
  8316.             AL = ??? (destroyed?)
  8317.         02h get port mode???
  8318.         Return: AL = ??? (01h,02h,04h,FFh)
  8319.             AH = 00h
  8320.             CF clear
  8321.         03h interrupt control
  8322.         AL = subfunction
  8323.             00h enable parallel port interrupts
  8324.             01h disable parallel port interrupts
  8325.         Return: AH = status (00h,05h,06h) (see also #0491)
  8326.         04h set ???
  8327.         Return: AH = 00h if successful
  8328.             AL destroyed
  8329.         05h ???
  8330.         Return: AL destroyed
  8331.         06h get ???
  8332.         Return: AL = ??? (read from port 037Bh after setting bit 5 of
  8333.                   port 037Ah)
  8334.         07h get ???
  8335.         Return: AL = ??? (read from port 037Ch after clearing bit 5 of
  8336.                   port 037Ah)
  8337.         08h output block of data
  8338.         ES:SI -> block of data to be sent to parallel port
  8339.         CX = number of bytes to output
  8340.         Return: AH = status (see #0491)
  8341.         Note:    clears bit 5 of port 037Ah, then does OUTSB to 037Ch
  8342.         09h read byte of data
  8343.         Return: AH = status (see #0491)
  8344.             AL = byte read from parallel port
  8345.         Note:    sets bit 5 of port 037Ah, then does IN from 037Ch
  8346.         0Ah read block of data
  8347.         ES:DI -> buffer for received data
  8348.         CX = number of bytes to read from paralle port
  8349.         Return: AH = status (see #0491)
  8350.             ES:DI buffer filled if successful
  8351.         Note:    sets bit 5 of port 037Ah, then does INSB from 037Ch
  8352.         0Bh read ???
  8353.         AL = ???
  8354.         Return: AH = status (see #0491)
  8355.             AL = byte read if successful
  8356.         Note:    clears bit 5 of port 037Ah, does OUT to 037Bh, then
  8357.               sets bit 5 of 037Ah and does IN from 037Ch
  8358.         0Ch send ???
  8359.         AL = ??? (byte to send to port 037Bh)
  8360.         DH = ??? (byte to send to port 037Ch)
  8361.         Return: AH = status (see #0491)
  8362.         Note:    clears bit 5 of port 037Ah, does OUT to 037Bh, then
  8363.               sets bit 5 of 037Ah and does OUT to 037Ch
  8364.         0Dh read block ???
  8365.         AL = ??? (byte to send to port 037Bh)
  8366.         ES:DI -> buffer for received data
  8367.         CX = number of bytes to read
  8368.         Return: AH = status (see #0491)
  8369.         Note:    clears bit 5 of port 037Ah, does OUT to 037Bh, then
  8370.               sets bit 5 of 037Ah and does INSB from 037Ch
  8371.         0Eh write block ???
  8372.         AL = ??? (byte to send to port 037Bh)
  8373.         ES:DI -> data to be sent
  8374.         CX = number of bytes to write
  8375.         Return: AH = status (see #0491)
  8376.         Note:    clears bit 5 of port 037Ah, does OUT to 037Bh, then
  8377.               sets bit 5 of 037Ah and does OUTSB to 037Ch
  8378.         0Fh NOP???
  8379.         Return: AH = status (00h,03h,05h) (see #0491)
  8380.         Notes:    this function does nothing beyond checking whether
  8381.               the desired port is supported and in the proper mode
  8382.             must call function 01h with AL=04h first to get a
  8383.               successful return code
  8384.         10h NOP???
  8385.         Return: AH = status (00h,03h,05h) (see #0491)
  8386.         Notes:    this function does nothing beyond checking whether
  8387.               the desired port is supported and in the proper mode
  8388.             must call function 01h with AL=04h first to get a
  8389.               successful return code
  8390.         11h ???
  8391.         AL = subfunction
  8392.             00h ???
  8393.             01h ???
  8394.             ES:DI -> ???
  8395.         Return: AH = status (00h,03h,05h,06h) (see #0491)
  8396.         12h ???
  8397.         AL = subfunction
  8398.             00h get ???
  8399.             01h increment ???
  8400.             02h decrement ???
  8401.         Return: AH = status (00h,05h,06h,07h) (see #0491)
  8402.             AL = current state of ??? (00h,01h)
  8403.         Note:    unlike all other functions, this one does not use DL
  8404. Return: AH = status (see #0491)
  8405.     CF clear if successful
  8406.     CF set on error
  8407. Notes:    functions 03h-12h all require that function 01h have been called
  8408.       with AL=04h first
  8409.     the above description is derived from Compaq's EPPBIOS.SYS, supplied
  8410.       in SOFTPAQ number 0937
  8411.  
  8412. (Table 0491)
  8413. Values for EPP BIOS function status:
  8414.  00h    successful
  8415.  02h    invalid parameter???
  8416.  03h    unsupported parallel port
  8417.  05h    unsupported in current mode
  8418.  06h    invalid subfunction
  8419.  07h    already ???
  8420.  FFh    invalid/unsupported function
  8421. --------P-1703-------------------------------
  8422. INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS
  8423.     AH = 03h
  8424. Return: BX = ???
  8425.     CX = ???
  8426. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  8427.       Vertisoft Systems, Inc.
  8428. SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h
  8429. --------c-1703-------------------------------
  8430. INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING
  8431.     AH = 03h
  8432.     DX = printer port number
  8433.     CX = number of characters to print
  8434.     DS:SI -> string
  8435. Return: AH = printer status (see #0489)
  8436.     CX = number of characters actually printed
  8437. Desc:    send an entire string of chars to the print spooler with a single call
  8438. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  8439.       operating system by The Software Link, Inc.
  8440. SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS"
  8441. --------c-1703--BX5A00-----------------------
  8442. INT 17 - DMP Print Spooler v2.03 - INSTALLATION CHECK
  8443.     AH = 03h
  8444.     BX = 5A00h
  8445. Return: AX = 5ACBh
  8446.     DI = 0000h
  8447.     ES = DMP code segment (also data segment)
  8448. Program: DMP is a Printer driver/spooler, by DMP (USA), available on the
  8449.       PCTODAY disk, volume 10, March 1991
  8450. --------N-170300-----------------------------
  8451. INT 17 - DOSISODE to WATTCP TSR Interface - "socket"
  8452.     AX = 0300h
  8453.     CX = type of socket from  socket( domain, type, protocol )
  8454.     DX = local identifier of socket (0 - 31)
  8455. Return: AX = 0000h success
  8456.         CX = segment of 4500 byte transfer buffer
  8457.         DX = offset of 4500 byte transfer buffer
  8458.        = FFFFH failure
  8459.         CX = error code
  8460.         ENFILE        23
  8461. Program: DOSISODE is the ISO developers environment which has been ported to
  8462.       DOS and will run with the Waterloo TCP turned into a resident TSR.
  8463.       Currently it allows a maximum of 6 open sockets.
  8464. Note:    this function will initialize the interface the first time it is
  8465.       called
  8466. SeeAlso: AX=0400h"DOSISODE",AX=0600h"DOSISODE",AX=0800h"DOSISODE"
  8467. SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
  8468. --------P-1704-------------------------------
  8469. INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT
  8470.     AH = 04h
  8471. Note:    has no effect unless ELTSR is deactivated (see AX=0503h)
  8472. SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h
  8473. --------N-170400-----------------------------
  8474. INT 17 - DOSISODE to WATTCP TSR Interface - "bind"
  8475.     AX = 0400h
  8476. Note:    this function just returns
  8477. SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0C00h"DOSISODE"
  8478. --------P-170500-----------------------------
  8479. INT 17 U - Emulaser ELTSR - ???
  8480.     AX = 0500h
  8481.     ???
  8482. Return: AX = unload status (0001h safe to unload, 0002h not safe)
  8483.     BX = ???
  8484.     CX = PSP segment of ELTSR
  8485.     DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing)
  8486.     SI = ???
  8487.     DI = ???
  8488. SeeAlso: AH=04h,INT 1A/AH=E5h
  8489. --------N-170500-----------------------------
  8490. INT 17 - DOSISODE to WATTCP TSR Interface - "connect"
  8491.     AX = 0500h
  8492. SeeAlso: AX=0400h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE"
  8493. --------P-170501-----------------------------
  8494. INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS
  8495.     AX = 0501h
  8496. Return: (see AX=0500h)
  8497. Note:    restores interrupt vectors without checking whether they have been
  8498.       hooked by later programs; should only be called if ELTSR reports
  8499.       that it is safe to unload
  8500. SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h
  8501. Index:    uninstall;Emulaser ELTSR
  8502. --------P-170502-----------------------------
  8503. INT 17 U - Emulaser ELTSR - SET ???
  8504.     AX = 0502h
  8505.     BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3)
  8506.     CL = ???
  8507.     DL = ???
  8508. Return: (see AX=0500h)
  8509. SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h
  8510. --------P-170503-----------------------------
  8511. INT 17 U - Emulaser ELTSR - DEACTIVATE???
  8512.     AX = 0503h
  8513. Return: (see AX=0500h)
  8514. SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h
  8515. --------P-1706-------------------------------
  8516. INT 17 U - Emulaser ELTSR - ???
  8517.     AH = 06h
  8518.     ???
  8519. Return: ???
  8520. SeeAlso: AH=05h,INT 1A/AH=E5h
  8521. --------N-170600-----------------------------
  8522. INT 17 - DOSISODE to WATTCP TSR Interface - "listen"
  8523.     AX = 0600h
  8524. Note:    this function just returns
  8525. SeeAlso: AX=0300h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE"
  8526. SeeAlso: AX=0E00h"DOSISODE"
  8527. --------P-1707-------------------------------
  8528. INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE
  8529.     AH = 07h
  8530.     ES:DX -> ASCIZ filename to be opened
  8531. Return: ???
  8532. Note:    new output will be appended to the specified file
  8533. SeeAlso: AH=08h,INT 1A/AH=E5h
  8534. --------N-170700-----------------------------
  8535. INT 17 - DOSISODE to WATTCP TSR Interface - "accept"
  8536.     AX = 0700h
  8537. Note:    this function just returns
  8538. SeeAlso: AX=0600h"DOSISODE",AX=0800h"DOSISODE",AX=0C00h"DOSISODE"
  8539. --------P-1708-------------------------------
  8540. INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE
  8541.     AH = 08h
  8542.     ???
  8543. Return: ???
  8544. Desc:    close the file previously opened by function 07h
  8545. SeeAlso: AH=07h,INT 1A/AH=E5h
  8546. --------N-170800-----------------------------
  8547. INT 17 - DOSISODE to WATTCP TSR Interface - "recvfrom"
  8548.     AX = 0800h
  8549. SeeAlso: AX=0500h"DOSISODE",AX=0900h"DOSISODE",AX=0A00h"DOSISODE"
  8550. --------P-1709-------------------------------
  8551. INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE???
  8552.     AH = 09h
  8553.     BX = ???
  8554.     CX = ???
  8555.     DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  8556. Return: AX = status
  8557.         00h successful
  8558.         FFh failed
  8559. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  8560.       Vertisoft Systems, Inc.
  8561. Note:    this function calls through to INT 1A/AX=E401h, and thus requires
  8562.       that either ELSPL or Disk Spool II be installed
  8563. SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h
  8564. --------N-170900-----------------------------
  8565. INT 17 - DOSISODE to WATTCP TSR Interface - "sendto"
  8566.     AX = 0900h
  8567. SeeAlso: AX=0700h"DOSISODE",AX=0800h"DOSISODE",AX=0A00h"DOSISODE"
  8568. --------P-170A-------------------------------
  8569. INT 17 U - Emulaser ELTSR - SET ??? FILENAME
  8570.     AH = 0Ah
  8571.     ES:BX -> ??? buffer
  8572.     CX = length of ??? buffer
  8573. Return: ???
  8574. Note:    copies the specified name into the buffer passed to ELSPL as the
  8575.       filename by AH=09h
  8576. SeeAlso: AH=09h,INT 1A/AH=E5h
  8577. --------N-170A00-----------------------------
  8578. INT 17 - DOSISODE to WATTCP TSR Interface - "select"
  8579.     AX = 0A00h
  8580. SeeAlso: AX=0800h"DOSISODE",AX=0B00h"DOSISODE",AX=0E00h"DOSISODE"
  8581. --------P-170B-------------------------------
  8582. INT 17 U - Emulaser ELTSR - GET ???
  8583.     AH = 0Bh
  8584. Return: AX:BX -> ???
  8585. SeeAlso: AH=0Ah,INT 1A/AH=E5h
  8586. --------N-170B00-----------------------------
  8587. INT 17 - DOSISODE to WATTCP TSR Interface - "ioctl"
  8588.     AX = 0B00h
  8589.     DX = local identifier of socket (0 - 31)
  8590. Note:    this function sets the socket into non_block mode
  8591. SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
  8592. --------P-170C-------------------------------
  8593. INT 17 U - Emulaser ELTSR - SET ??? FLAG
  8594.     AH = 0Ch
  8595.     ???
  8596. Return: ???
  8597. SeeAlso: AH=0Bh,INT 1A/AH=E5h
  8598. --------N-170C00-----------------------------
  8599. INT 17 - DOSISODE to WATTCP TSR Interface - "close"
  8600.     AX = 0C00h
  8601. SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0D00h"DOSISODE"
  8602. --------P-170D-------------------------------
  8603. INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE
  8604.     AH = 0Dh
  8605. Return: AX = state (0000h off, 0010h on)
  8606. Desc:    determine the actual state of ScrlLk even when Emulaser is controlling
  8607.       the ScrlLk light as its activity indicator
  8608. SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h
  8609. --------N-170D00-----------------------------
  8610. INT 17 - DOSISODE to WATTCP TSR Interface - "shutdown" - SHUTDOWN INTERFACE
  8611.     AX = 0D00h
  8612. Note:    this function is used to shutdown the interface
  8613. SeeAlso: AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
  8614. --------P-170E-------------------------------
  8615. INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING
  8616.     AH = 0Eh
  8617. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  8618.       Vertisoft Systems, Inc.
  8619. Note:    this function is called by ELTSR on every INT 08 to allow data to be
  8620.       processed in the background, but may also be called by applications
  8621.       to give Emulaser additional CPU time
  8622. SeeAlso: AH=0Dh,INT 1A/AH=E5h
  8623. --------N-170E00-----------------------------
  8624. INT 17 - DOSISODE to WATTCP TSR Interface - INSTALLATION CHECK
  8625.     AX = 0E00h
  8626. Return: CX = 1234h if installed
  8627. Program: DOSISODE is the ISO developers environment which has been ported to
  8628.       DOS and will run with the Waterloo TCP turned into a resident TSR.
  8629.       Currently it allows a maximum of 6 open sockets.
  8630. Note:    this function is used to check if the interface is loaded
  8631. SeeAlso: AX=0300h"DOSISODE",AX=0A00h"DOSISODE"
  8632. --------P-172000-----------------------------
  8633. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK
  8634.     AX = 2000h
  8635.     BL = printer number???
  8636. Return:    AX = status (see #0492)
  8637.     BX = driver version number (BH=major,BL=minor)
  8638.     CH = ??? (00h)
  8639.     CL = ???
  8640.     DX = ??? (0100h)
  8641. Note:    also enables the remaining printer driver functions (2001h-2007h)
  8642. SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h
  8643.  
  8644. (Table 0492)
  8645. Values for PC Paint function status:
  8646.  0000h    successful
  8647.  0001h    invalid printer???
  8648.  0002h    ???
  8649.  0003h    invalid subfunction
  8650.  0005h    driver disabled, must call function 00h first
  8651.  0009h    unknown printer error
  8652.  000Bh    printer not selected
  8653.  000Ch    printer out of paper
  8654.  000Eh    error while writing to serial printer
  8655.  000Fh    ???
  8656.  0010h    invalid function number
  8657.  0011h    value out of range
  8658. --------P-172001-----------------------------
  8659. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG
  8660.     AX = 2001h
  8661.     BL = printer number???
  8662. Return: AX = status (see #0492)
  8663. --------P-172002-----------------------------
  8664. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION
  8665.     AX = 2002h
  8666.     BL = printer number???
  8667.     CL = desired information
  8668.         00h printer type
  8669.         Return: ES:DI -> ASCIZ printer name
  8670.         01h paper size
  8671.         DX = size index
  8672.         Return: ES:DI -> ASCIZ paper size description
  8673.         02h ???
  8674.         Return: BX = ???
  8675.         03h printer information???
  8676.         DX = ???
  8677.         ES:BX -> buffer for ??? (min 134 bytes)
  8678. Return: AX = status (see #0492)
  8679. SeeAlso: AX=2000h,AX=2004h
  8680. --------P-172003-----------------------------
  8681. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ???
  8682.     AX = 2003h
  8683.     ES:BX -> ???
  8684. Return: AX = status (see #0492)
  8685. SeeAlso: AX=2000h,AX=2004h
  8686. --------P-172004-----------------------------
  8687. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ???
  8688.     AX = 2004h
  8689.     BL = printer number???
  8690. Return: AX = status (see #0492)
  8691.     ES:DI -> ???
  8692. SeeAlso: AX=2000h,AX=2003h
  8693. --------P-172005-----------------------------
  8694. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE
  8695.     AX = 2005h
  8696.     BL = printer number???
  8697. Return: AX = status (see #0492)
  8698. Note:    this function also clears the flag set by AX=2001h
  8699. SeeAlso: AX=2000h,AX=2001h,AX=2006h
  8700. --------P-172006-----------------------------
  8701. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN
  8702.     AX = 2006h
  8703.     BL = printer number???
  8704. Return: AX = status (see #0492)
  8705. Note:    this function also clears the flag set by AX=2001h and disables
  8706.       functions other than AX=2000h
  8707. SeeAlso: AX=2000h,AX=2001h,AX=2005h
  8708. --------P-172007-----------------------------
  8709. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED
  8710.     AX = 2007h
  8711. Return: AX unchanged
  8712. SeeAlso: AX=2000h
  8713. --------N-172400-----------------------------
  8714. INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
  8715.     AX = 2400h
  8716.     DL = new state
  8717.         00h disabled
  8718.         01h enabled
  8719. Return: DL = 24h if installed
  8720.     DH = minor version number
  8721.     CX = network address of this machine
  8722.     AL = status (see #0493)
  8723. SeeAlso: AX=2403h,INT 16/AX=4500h
  8724.  
  8725. (Table 0493)
  8726. Values for NET.24 function status:
  8727.  00h    successful
  8728.  01h    timeout
  8729.  02h    header error
  8730.  03h    data error
  8731.  04h    busy
  8732.  05h    invalid parameters
  8733. --------N-172401-----------------------------
  8734. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
  8735.     AX = 2401h
  8736.     BL = timeout in clock ticks
  8737. Return: AL = status (see #0493)
  8738.     DX:BX -> receive buffer
  8739. SeeAlso: AX=2402h,AX=2404h,AX=2408h
  8740. --------N-172402-----------------------------
  8741. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
  8742.     AX = 2402h
  8743.     transmit buffer filled (see AX=2403h)
  8744. Return: AL = status (see #0493)
  8745. SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
  8746. --------N-172403-----------------------------
  8747. INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
  8748.     AX = 2403h
  8749. Return: AL = status (see #0493)
  8750.     CX = number of characters in receive ring buffer
  8751.     DX:BX -> transmit buffer
  8752. SeeAlso: AX=2400h,AX=2402h
  8753. --------N-172404-----------------------------
  8754. INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
  8755.     AX = 2404h
  8756.     BX = target address
  8757. Return: AL = status (see #0493)
  8758. SeeAlso: AX=2402h,AX=2405h
  8759. --------N-172405-----------------------------
  8760. INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
  8761.     AX = 2405h
  8762.     BX = target address
  8763. Return: AL = status (see #0493)
  8764. SeeAlso: AX=2402h,AX=2404h
  8765. --------N-172406-----------------------------
  8766. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
  8767.     AX = 2406h
  8768. Return: AL = status (see #0493)
  8769. SeeAlso: AX=2407h,AX=240Ah
  8770. --------N-172407-----------------------------
  8771. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
  8772.     AX = 2407h
  8773. Return: AL = status (see also #0493)
  8774.         06h end of data
  8775.     DL = received character
  8776. SeeAlso: AX=2406h
  8777. --------N-172408-----------------------------
  8778. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
  8779.     AX = 2408h
  8780. Return: AL = status (see also #0493)
  8781.         06h end of data
  8782.     CX = number of bytes in receive buffer
  8783.     DX:SI -> receive buffer
  8784. SeeAlso: AX=2401h,AX=2405h,AX=2409h
  8785. --------N-172409-----------------------------
  8786. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
  8787.     AX = 2409h
  8788.     BX = target address
  8789.     CX = number of data bytes
  8790.     DL = command code to send
  8791.     DS:SI -> data bytes for command
  8792. Return: AL = status (see also #0493)
  8793.         03h no response
  8794.         06h remote currently unable to perform command
  8795. SeeAlso: AX=2405h,AX=2408h
  8796. --------N-17240A-----------------------------
  8797. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
  8798.     AX = 240Ah
  8799. Return: AL = status (see #0493)
  8800. SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
  8801. --------N-17240B-----------------------------
  8802. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
  8803.     AX = 240Bh
  8804.     DL = character to send
  8805. Return: AL = status (see also AX=2400h)
  8806.         03h transmission error
  8807.         06h write error
  8808. SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
  8809. --------N-17240C-----------------------------
  8810. INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
  8811.     AX = 240Ch
  8812. Return: AL = status (see also AX=2400h)
  8813.         03h transmission error
  8814.         06h remote breaks connection
  8815. SeeAlso: AX=240Ah,AX=240Bh
  8816. --------J-175000-----------------------------
  8817. INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
  8818.     AX = 5000h
  8819.     BX = country code
  8820.         0001h USA (English), 0051h Japan
  8821. Return: AL = status
  8822.         00h successful
  8823.         01h bad country code
  8824.         02h other error
  8825. SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
  8826. --------J-175001-----------------------------
  8827. INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
  8828.     AX = 5001h
  8829. Return: AL = status
  8830.         00h successful
  8831.         BX = country code
  8832.         02h error
  8833. SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
  8834. --------J-1751-------------------------------
  8835. INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
  8836.     AH = 51h
  8837.     DX = 2-byte JIS code
  8838. Return: DX = shift-JIS value or 0000h on error
  8839. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  8840.       characters to Shift-JIS characters, and the other performs the
  8841.       opposite conversion
  8842. SeeAlso: AX=5000h,AH=52h
  8843. --------J-1752-------------------------------
  8844. INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
  8845.     AH = 52h
  8846.     DX = 2-byte shift-JIS code
  8847. Return: DX = JIS code or 0000h on error
  8848. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  8849.       characters to Shift-JIS characters, and the other performs the
  8850.       opposite conversion
  8851. SeeAlso: AH=51h
  8852. --------V-1760-------------------------------
  8853. INT 17 - FLASHUP.COM - INSTALLATION CHECK
  8854.     AH = 60h
  8855. Return: AL = 60h
  8856.     DX = CS of resident code
  8857. Notes:    FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
  8858.     FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
  8859.       consisting of an 80h followed by the actual command
  8860. SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
  8861. --------V-1761-------------------------------
  8862. INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
  8863.     AH = 61h
  8864. Return: AL = 61h
  8865.     DX = CS of resident code
  8866. Note:    SPEEDSCR.COM is by The Software Bottling Co.
  8867. --------P-1762-------------------------------
  8868. INT 17 U - T2PS v1.0 - UNINSTALL
  8869.     AH = 62h
  8870. Return: nothing
  8871. SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh
  8872. --------P-1763-------------------------------
  8873. INT 17 U - T2PS v1.0 - SET PARAMETERS
  8874.     AH = 63h
  8875.     ES:SI -> settings (see #0494)
  8876. Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D.
  8877.       Technologies
  8878. SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h
  8879.  
  8880. Format of T2PS settings:
  8881. Offset    Size    Description    (Table 0494)
  8882.  00h    WORD    LPT port number (0=LPT1, etc.)
  8883.  02h    WORD    page heigh in points
  8884.  04h    WORD    page width in points
  8885.  06h    WORD    top margin in points
  8886.  08h    WORD    bottom margin in points
  8887.  0Ah    WORD    left margin in points
  8888.  0Ch    WORD    right margin in points
  8889.  0Eh    WORD    font size in points
  8890.  10h    WORD    tab size
  8891.  12h    WORD    timeout in clock ticks
  8892. --------P-1764-------------------------------
  8893. INT 17 U - T2PS v1.0 - GET PARAMETERS
  8894.     AH = 64h
  8895.     ES:SI -> buffer for settings (see #0494)
  8896. Return: ES:SI buffer filled
  8897. SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
  8898. --------b-176F00BX0000-----------------------
  8899. INT 17 - HP Vectra - EXTENDED BIOS - "F17_INQUIRE" - INSTALLATION CHECK
  8900.     AX = 6F00h
  8901.     BX = 0000h
  8902. Return: BX = 4850h ("HP") if HP Extended BIOS printer extensions available
  8903. SeeAlso: AX=6F02h,INT 14/AX=6F00h,INT 10/AX=6F00h,INT 14/AX=6F00h
  8904. SeeAlso: INT 33/AX=6F00h,INT 6F/AH=00h"HP Vectra"
  8905. --------b-176F02-----------------------------
  8906. INT 17 - HP Vectra - EXTENDED BIOS - "F17_PUT_BUFFER" - PRINT BUFFER
  8907.     AX = 6F02h
  8908.     CX = size of buffer in bytes
  8909.     DX = port number (0-3)
  8910.     ES:DI -> buffer containing characters to be printed
  8911. Return: AH = printer status (see #0489)
  8912.     CX = number of bytes successfully printed
  8913.     ---on error (AH bit 0 set)---
  8914.         ES:DI -> next byte to be sent
  8915.     ---if successful---
  8916.         ES:DI unchanged
  8917. SeeAlso: AH=00h,AX=6F00h,INT 14/AX=6F02h
  8918. --------N-1781-------------------------------
  8919. INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
  8920.     AH = 81h
  8921.     AL = 00h (NTNX compatibility mode)
  8922.     CL = number of jobs to cancel
  8923. Return: AL = status (see #0495)
  8924. Note:    this function cancels the last CL printouts for the current task
  8925. SeeAlso: AH=82h
  8926.  
  8927. (Table 0495)
  8928. Values for Alloy status:
  8929.  00h    success
  8930.  01h-7Fh warning
  8931.  80h    general failure
  8932.  81h    host overloaded (NTNX only)
  8933.  82h    module busy (NTNX only)
  8934.  83h    host busy (NTNX only)
  8935.  84h    re-entry flag set
  8936.  85h    invalid request
  8937.  86h    invalid printer
  8938.  87h    invalid process ID
  8939.  89h    access denied
  8940.  8Ah    option not available for given port type
  8941.  8Bh    option not available for given task type
  8942.  91h    printer busy
  8943.  C2h    file not found
  8944.  C3h    path not found
  8945.  C4h    file access failure
  8946. --------N-1782-------------------------------
  8947. INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
  8948.     AH = 82h
  8949.     AL = 00h (NTNX compatibility mode)
  8950. Return: AL = status (see #0495)
  8951. SeeAlso: AH=81h
  8952. --------N-1783-------------------------------
  8953. INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
  8954.     AH = 83h
  8955.     AL = mode
  8956.         00h NTNX compatibility
  8957.         CL = number of copies (max 99, default 1)
  8958.         02h MW386 v2+
  8959.         BX = logical device number
  8960.             00h-03h = LPT1-LPT4
  8961.             04h-07h = COM1-COM4
  8962.         CX = number of copies
  8963. Return: AL = status (see #0495)
  8964. Note:    in NTNX compatibility mode, this function only affects LPT1
  8965. --------N-1784-------------------------------
  8966. INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
  8967.     AH = 84h
  8968.     AL = mode
  8969.         00h NTNX compatibility
  8970.         02h MW386 v2+
  8971.         BX = logical device number
  8972.             00h-03h = LPT1-LPT4
  8973.             04h-07h = COM1-COM4
  8974. Note:    closes spool file and tells spooler to queue the print job (LPT1 only
  8975.       under MW386 in NTNX compatibility mode)
  8976. --------J-1784-------------------------------
  8977. INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
  8978.     AH = 84h
  8979.     AL = character
  8980.     DX = printer number
  8981. Return: AH = printer status (see #0489)
  8982. SeeAlso: AH=00h,AH=85h
  8983. --------J-1785-------------------------------
  8984. INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
  8985.     AH = 85h
  8986.     AL = new state (00h enabled, 01h disabled)
  8987. SeeAlso: AH=84h"AX"
  8988. --------N-1787-------------------------------
  8989. INT 17 - Alloy NTNX - SET INDOS POINTER
  8990.     AH = 87h
  8991.     AL = 00h
  8992.     CX:BX -> buffer for user-written printer drivers
  8993. Return: BX,CX destroyed
  8994. Note:    must be executed before the printer is enabled
  8995. SeeAlso: AH=8Ah
  8996. --------N-1788-------------------------------
  8997. INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
  8998.     AH = 88h
  8999.     AL = mode
  9000.         00h NTNX compatibility
  9001.         DX = NTNX printer number (see #0496)
  9002.         01h MW386
  9003.         DX = MW386 printer number
  9004. Return: AH = status (see #0495)
  9005. Note:    removes specified printer from the spooler's list of printers
  9006. SeeAlso: AH=89h,AH=8Bh
  9007.  
  9008. (Table 0496)
  9009. Values for Alloy NTNX printer number:
  9010.  00h    host LPT1
  9011.  01h    host LPT2
  9012.  02h    host LPT3
  9013.  03h    host LPT4
  9014.  04h    host COM1
  9015.  05h    host COM2
  9016.  06h    user's logical COM2
  9017.  07h    user's terminal AUX port
  9018.  08h    user's logical COM1 (MW386 only)
  9019. --------N-1789-------------------------------
  9020. INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
  9021.     AH = 89h
  9022.     AL = mode
  9023.         00h NTNX compatibility
  9024.         DX = NTNX printer number (see #0496)
  9025.         01h MW386
  9026.         DX = MW386 printer number
  9027. Return: AL = status (see #0495)
  9028. Note:    the specified printer is added to the spooler's list of available
  9029.       printers
  9030. SeeAlso: AH=88h,AH=8Bh
  9031. --------N-178A-------------------------------
  9032. INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
  9033.     AH = 8Ah
  9034.     ???
  9035. SeeAlso: AH=92h
  9036. --------N-178B-------------------------------
  9037. INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
  9038.     AH = 8Bh
  9039.     DS:DX -> ASCIZ printer name
  9040. Return: AL = status (see also AH=81h)
  9041.         00h successful
  9042.         DX = physical device number
  9043. SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
  9044. --------N-178C-------------------------------
  9045. INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
  9046.     AH = 8Ch
  9047.     DX = physical device number
  9048.     ES:DI -> 17-byte buffer for ASCIZ device name
  9049. Return: AL = status (see also AH=81h)
  9050.         00h successful
  9051.         ES:DI buffer filled
  9052. SeeAlso: AH=88h,AH=8Bh
  9053. --------N-178D-------------------------------
  9054. INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
  9055.     AH = 8Dh
  9056.     AL = 00h
  9057. Return: AL = status (see #0495)
  9058. Notes:    clears all buffers and resets spooler to boot-up values
  9059.     MW386 supports this function for compatibility only; it is a NOP
  9060. --------N-178E-------------------------------
  9061. INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
  9062.     AH = 8Eh
  9063.     AL = 00h
  9064. Return: CX:BX -> INT 28 entry point
  9065. SeeAlso: AH=8Fh
  9066. --------N-178F-------------------------------
  9067. INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
  9068.     AH = 8Fh
  9069.     AL = 00h
  9070. Return: CX:BX -> DOS intercept routine
  9071. SeeAlso: AH=8Eh
  9072. --------N-1790-------------------------------
  9073. INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
  9074.     AH = 90h
  9075.     AL = mode
  9076.         00h NTNX compatibility
  9077.         DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
  9078.         DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
  9079.         02h MW386 v2+
  9080.         BX = logical device number
  9081.             00h-03h = LPT1-LPT4
  9082.             04h-07h = COM1-COM4
  9083.     CX:SI -> ASCIZ pathname
  9084. Return: AL = status (see #0495)
  9085. Note:    in mode 00h, the file is always sent to logical LPT1
  9086. SeeAlso: AH=A0h
  9087. --------N-1791-------------------------------
  9088. INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
  9089.     AH = 91h
  9090.     AL = mode
  9091.         00h NTNX compatibility
  9092.         Return: CX = user number (00h = host)
  9093.             DX = currently selected printer number (00h-08h)
  9094.         01h MW386
  9095.         Return: CX = user number
  9096.             DX = physical dev number of currently selected printer
  9097.         02h MW386 v2+
  9098.         BX = logical device number
  9099.             00h-03h = LPT1-LPT4
  9100.             04h-07h = COM1-COM4
  9101.         Return: CX = user number
  9102.             DX = physical device number
  9103. Return: AL = status (see #0495)
  9104. SeeAlso: AH=8Ch
  9105. --------N-1792-------------------------------
  9106. INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
  9107.     AH = 92h
  9108.     AL = 00h
  9109.     CL = 00h
  9110. Return: CL = driver state
  9111.         01h initialized
  9112.         80h not initialized
  9113.     AX = status (see #0495)
  9114. SeeAlso: AH=8Ah
  9115. --------N-1794-------------------------------
  9116. INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
  9117.     AH = 94h
  9118.     AL = mode
  9119.         00h NTNX compatibility
  9120.         DX = NTNX printer number (see #0496)
  9121.         01h MW386
  9122.         DX = MW386 printer number
  9123.         02h MW386 v2+
  9124.         BX = logical printer number
  9125.         DX = MW386 printer number
  9126. Return: AL = status (see #0495)
  9127. Note:    modes 00h and 01h affect only logical LPT1
  9128. SeeAlso: AH=8Bh,AH=95h
  9129. --------N-1795-------------------------------
  9130. INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
  9131.     AH = 95h
  9132.     AL = mode
  9133.         00h NTNX compatibility
  9134.         Return: DX = NTNX printer number (see #0496)
  9135.                 (FFFFh if current printer not compatible with NTNX)
  9136.         01h MW386
  9137.         Return: DX = MW386 printer number
  9138.         02h MW386 v2+
  9139.         BX = logical device number
  9140.             00h-03h = LPT1-LPT4
  9141.             04h-07h = COM1-COM4
  9142.         Return: DX = MW386 printer number (FFFFh = none)
  9143. Return: AL = status (see #0495)
  9144. Note:    modes 00h and 01h return the printer number of logical LPT1 only
  9145. SeeAlso: AH=94h
  9146. --------N-1796-------------------------------
  9147. INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
  9148.     AH = 96h
  9149.     AL = 00h
  9150. Note:    documentation states that this is a NOP, doing only XOR AX,AX before
  9151.       returning
  9152. SeeAlso: INT 14/AH=24h
  9153. --------N-1797-------------------------------
  9154. INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
  9155.     AH = 97h
  9156.     AL = mode
  9157.         00h NTNX compatibility
  9158.         02h MW386 v2+
  9159.         BX = logical device number
  9160.             00h-03h = LPT1-LPT4
  9161.             04h-07h = COM1-COM4
  9162.     CH,CL,DH = three character break sequence
  9163.     DL = subfunction
  9164.         00h set break string
  9165.         else reset break
  9166. Return: AL = status (see #0495)
  9167. Notes:    mode 00h affects only logical LPT1
  9168.     when the break string is encountered, the spool file will be closed and
  9169.       queued for printing automatically
  9170.     the break string is not permanently saved, and will be reset each time
  9171.       MW386 or the user is rebooted
  9172. SeeAlso: AH=9Bh
  9173. --------N-1798-------------------------------
  9174. INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
  9175.     AH = 98h
  9176.     AL = 00h
  9177.     DL = printer number (FFh=current)
  9178. Return: AL = status
  9179.         00h successful
  9180.         01h incorrect printer
  9181.         02h task not found
  9182. Note:    MW386 supports this function for compatibility only; it is a NOP
  9183. --------N-1799-------------------------------
  9184. INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
  9185.     AH = 99h
  9186.     AL = mode
  9187.         00h NTNX compatibility
  9188.         DL = NTNX printer number (see #0496)
  9189.             (FFh = task's current logical LPT1)
  9190.         DH = mode (see #0497)
  9191.         01h MW386
  9192.         DX = MW386 printer number
  9193.         CL = mode (as for DH above)
  9194. Return: AL = status (see #0495)
  9195.     DH = mode (bits 1 and 2 set as above)
  9196.     DL = printer owner's user number if not spooled
  9197.  
  9198. Bitfields for Alloy printer mode:
  9199.  0    get mode if 1, set mode if 0    (Table 0497)
  9200.  1    private ("attached")
  9201.  2    direct instead of spooled
  9202.  3-7    reserved (0)
  9203. --------N-179A-------------------------------
  9204. INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
  9205.     AH = 9Ah
  9206.     AL = mode
  9207.         00h NTNX compatibility
  9208.         DX = NTNX printer number (see #0496)
  9209.             (FFFFh = current logical LPT1)
  9210.         01h MW386
  9211.         DX = MW386 printer number
  9212.     CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
  9213. Return: AL = status (see #0495)
  9214. Note:    beginning with MW386 v2.0, tab expansion is set on a per-printer basis
  9215.       rather than a per-user basis; NTNX and MW386 v1.x ignore DX
  9216. SeeAlso: AH=A4h
  9217. --------N-179B-------------------------------
  9218. INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
  9219.     AH = 9Bh
  9220.     AL = mode
  9221.         00h NTNX compatibility
  9222.         CX = timeout value in clock ticks (1/18 sec) (00h = never)
  9223.         01h MW386
  9224.         CX = timeout value in seconds (00h = never)
  9225.         02h MW386 v2+
  9226.         BX = logical device number
  9227.             00h-03h = LPT1-LPT4
  9228.             04h-07h = COM1-COM4
  9229.         CX = timeout value in seconds (00h = never)
  9230. Return: AL = status (see #0495)
  9231. Notes:    modes 00h and 01h affect only the current logical LPT1
  9232.     if no data is sent to a printer for the specified amount of time, the
  9233.       spool file will be closed and queued for printing automatically
  9234. SeeAlso: AH=97h
  9235. --------N-17A0-------------------------------
  9236. INT 17 - Alloy MW386 - SPOOL COPY OF FILE
  9237.     AH = A0h
  9238.     AL = mode
  9239.         00h NTNX compatibility
  9240.         DX = ??? (NTNX, MW386 v1.x only)
  9241.         02h MW386 v2+
  9242.         BX = logical device number
  9243.             00h-03h = LPT1-LPT4
  9244.             04h-07h = COM1-COM4
  9245.     CX:SI -> ASCIZ pathname
  9246. Return: AL = status (see #0495)
  9247. Notes:    makes a copy of the specified file in the spooler's directory, allowing
  9248.       the original file to be modified or deleted while the copy is printed
  9249.     in mode 00h, the file is printed on logical LPT1
  9250. SeeAlso: AH=90h
  9251. --------N-17A4-------------------------------
  9252. INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
  9253.     AH = A4h
  9254.     AL = new state
  9255.         00h form feed after end of print job disabled
  9256.         01h form feed enabled
  9257. Return: AL = status (see #0495)
  9258. Note:    only affects the current logical LPT1
  9259. SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
  9260. --------N-17A6-------------------------------
  9261. INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
  9262.     AH = A6h
  9263.     AL = new state
  9264.         00h banner page before print job disabled
  9265.         01h banner page enabled
  9266. Return: AL = status (see #0495)
  9267. Note:    only affects the current logical LPT1
  9268. SeeAlso: AH=A4h
  9269. --------N-17A7-------------------------------
  9270. INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
  9271.     AH = A7h
  9272.     AL = spool flags (see #0498)
  9273.     BX = logical device number
  9274.         00h-03h = LPT1-LPT4
  9275.         04h-07h = COM1-COM4
  9276. Return: AL = status (see #0495)
  9277. Note:    the documentation does not state which register contains the result of
  9278.       a GET
  9279. SeeAlso: AH=A4h,AH=A6h
  9280.  
  9281. Bitfields for Alloy spool flags:
  9282. Bit(s)    Description    (Table 0498)
  9283.  0    banner page enabled (see AH=A6h)
  9284.  1    form feed enabled (see AH=A4h)
  9285.  2-6    reserved (0)
  9286.  7    set flags if 1, get flags if 0
  9287. --------N-17A8-------------------------------
  9288. INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
  9289.     AH = A8h
  9290.     CX:SI -> ASCIZ filename without extension (max 8 chars)
  9291. Return: AL = status (see #0495)
  9292. Note:    allows application to specify banner page filename for spool files
  9293.       collected from the application's printer output
  9294. SeeAlso: AH=A9h
  9295. --------N-17A9-------------------------------
  9296. INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
  9297.     AH = A9h
  9298.     AL = new spool drive (2=C:,3=D:,etc)
  9299. Return: AL = status (see #0495)
  9300. Note:    does not remove previous spooling directory since jobs may be pending
  9301. SeeAlso: AH=A8h
  9302. --------N-17AA-------------------------------
  9303. INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
  9304.     AH = AAh
  9305.     AL = mode
  9306.         00h NTNX
  9307.         DX = NTNX printer number (see #0496)
  9308.         01h MW386
  9309.         DX = MW386 printer number
  9310. Return: AH = instantaneous printer status
  9311.         00h printer ready
  9312.         01h not ready
  9313.         12h off line
  9314.         13h out of paper
  9315.         14h general device failure
  9316.         15h device timeout
  9317.         16h bad device number
  9318. --------N-17AF-------------------------------
  9319. INT 17 - Alloy MW386 - CHECK SPOOLER
  9320.     AH = AFh
  9321. Return: AX = 55AAh if spooler available
  9322. --------c-17C0-------------------------------
  9323. INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
  9324.     AH = C0h
  9325.     DX = printer port (0-3)
  9326. Return: ES:BX -> control block (see #0499)
  9327. SeeAlso: AH=C1h
  9328.  
  9329. Format of PCSpool control block:
  9330. Offset    Size    Description    (Table 0499)
  9331.  00h    WORD    printer number
  9332.  02h    WORD    address of printer status port
  9333.  04h    WORD    number of first record in queue
  9334.  06h    WORD    number of last record in queue
  9335.  08h    DWORD    characters already printed
  9336.  0Ch    DWORD    number of characters remaining
  9337.  10h    DWORD    pointer to dequeue buffer
  9338.  14h    DWORD    previous count of characters printed
  9339.  18h    DWORD    number of clock ticks taken to print them
  9340.  1Ch    WORD    offset of next character to output
  9341.  1Eh    WORD    offset of next character to print
  9342.  20h    WORD    pointer to spooling queue record
  9343.  22h    BYTE    current spooling status
  9344.  23h    BYTE    current printer status:
  9345.         00h OK
  9346.         01h not ready
  9347.         02h paused with message
  9348.         03h paused
  9349.         04h initializing
  9350.         FEh non-existent port
  9351.         FFh not spooled
  9352.  24h    BYTE    current control record type
  9353.  25h    WORD    observed printer speed
  9354.  27h    WORD    characters to print per service
  9355.  29h    BYTE    01h if disk write needed
  9356.  2Ah    BYTE    01h if queued data should be flushed
  9357.  2Bh    BYTE    01h to update cps status
  9358. --------c-17C1--------------------------------
  9359. INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
  9360.     AH = C1h
  9361.     DX = printer port (0-3)
  9362.     DS:SI -> ASCIZ string to save for display
  9363. Note:    flushes pending writes
  9364. SeeAlso: AH=C0h,AH=C2h
  9365. --------c-17C2-------------------------------
  9366. INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
  9367.     AH = C2h
  9368.     DX = printer port (0-3)
  9369. SeeAlso: AH=C3h
  9370. --------c-17C3-------------------------------
  9371. INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
  9372.     AH = C3h
  9373.     DX = printer port (0-3)
  9374. SeeAlso: AH=C2h,AH=C7h
  9375. --------c-17C4-------------------------------
  9376. INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
  9377.     AH = C4h
  9378. Return: DI = B0BFh
  9379.     SI = segment
  9380. --------c-17C5-------------------------------
  9381. INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
  9382.     AH = C5h
  9383.     DX = printer port (0-3)
  9384. Note:    cancels up to the pause record
  9385. --------c-17C6-------------------------------
  9386. INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
  9387.     AH = C6h
  9388.     DX = printer port (0-3)
  9389. Return: AX = queue status
  9390.        0000h printer not active or at pause
  9391.        0001h printer busy
  9392. --------c-17C7-------------------------------
  9393. INT 17 - PC Magazine PCSpool - CLOSE QUEUE
  9394.     AH = C7h
  9395.     DX = printer port (0-3)
  9396. SeeAlso: AH=C3h
  9397. --------P-17CD00-----------------------------
  9398. INT 17 - INSET - EXECUTE COMMAND STRING
  9399.     AX = CD00h
  9400.     DS:DX -> ASCIZ command string (max 80 bytes)
  9401. Return: CX = 07C2h (1986d)
  9402. Note:    user interface menus pop up after last command, unless that command
  9403.     exits INSET
  9404. --------P-17CD01-----------------------------
  9405. INT 17 - INSET - GET IMAGE SIZE
  9406.     AX = CD01h
  9407.     DS:DX -> ASCIZ name of image file
  9408. Return: AX = height in 1/720th inch
  9409.     BX = width in 1/720th inch
  9410.     CX = 07C2h (1986d)
  9411. --------P-17CD02-----------------------------
  9412. INT 17 - INSET - INITIALIZE
  9413.     AX = CD02h
  9414. Return: CX = 07C2h (1986d)
  9415. Note:    all open files are closed and the printer is reset
  9416. SeeAlso: AX=CD04h
  9417. --------P-17CD03-----------------------------
  9418. INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
  9419.     AX = CD03h
  9420. Return: CX = 07C2h (1986d)
  9421. --------P-17CD04-----------------------------
  9422. INT 17 - INSET - INITIALIZE LINKED MODE
  9423.     AX = CD04h
  9424.     ES:SI -> FAR routine for linked mode (see #0500)
  9425. Return: CX = 07C2h
  9426. SeeAlso: AX=CD02h,AX=CD08h
  9427.  
  9428. (Table 0500)
  9429. Values INSET linked-mode routine is called with:
  9430.     AL = function
  9431.         00h send character to printer
  9432.         BL = character to send
  9433.         01h send string to printer
  9434.         CX = number of bytes to send
  9435.         DS:DX -> buffer containing data
  9436.         02h move print head to horizontal starting position of image
  9437. Return:    AX = status
  9438.         0000h success
  9439.         0001h failure
  9440. --------P-17CD05-----------------------------
  9441. INT 17 - INSET - START MERGING IMAGE INTO TEXT
  9442.     AX = CD05h
  9443.     DS:DX -> ASCIZ name of PIX file
  9444.     CX = left margin of text in 1/720th inch
  9445. Return: AH = printer type
  9446.         00h page-oriented (multiple images may be placed side-by-side)
  9447.         01h line-oriented (use AX=CD06h for vertical paper movement)
  9448.     CX = 07C2h (1986d)
  9449. SeeAlso: AX=CD07h
  9450. --------P-17CD06-----------------------------
  9451. INT 17 - INSET - GRAPHICS LINE FEED
  9452.     AX = CD06h
  9453. Return: AH = completion status
  9454.         00h image complete
  9455.         01h image incomplete
  9456.     CX = 07C2h (1986d)
  9457. SeeAlso: AX=CD09h
  9458. --------P-17CD07-----------------------------
  9459. INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
  9460.     AX = CD07h
  9461. Return: CX = 07C2h
  9462. SeeAlso: AX=CD05h
  9463. --------P-17CD08-----------------------------
  9464. INT 17 - INSET - CANCEL LINK MODE
  9465.     AX = CD08h
  9466. Return: CX = 07C2h
  9467. SeeAlso: AX=CD04h
  9468. --------P-17CD09-----------------------------
  9469. INT 17 - INSET - ALTER TEXT LINE SPACING
  9470.     AX = CD09h
  9471.     CX = line spacing in 1/720th inch
  9472. Return: CX = 07C2h
  9473. Note:    not yet implemented, line spacing is currently fixed at 1/6 inch
  9474. SeeAlso: AX=CD06h
  9475. --------P-17CD0A-----------------------------
  9476. INT 17 - INSET - GET SETUP
  9477.     AX = CD0Ah
  9478.     DS:DX -> buffer for IN.SET data
  9479. Return: CX = 07C2h
  9480. --------P-17CD0B-----------------------------
  9481. INT 17 - INSET - START GETTING SCALED IMAGE
  9482.     AX = CD0Bh
  9483.     DS:SI -> ASCIZ pathname of .PIX file
  9484.     BX = number of bitplanes
  9485.     CX = number of rows in output bitmap
  9486.     DX = number of columns in output bitmap
  9487. Return: AX = status
  9488.         0000h OK
  9489.         FFFFh error
  9490. Note:    image is returned in strips by repeated calls to AX=CD0Ch
  9491. --------P-17CD0C-----------------------------
  9492. INT 17 - INSET - GET NEXT IMAGE STRIP
  9493.     AX = CD0Ch
  9494. Return: AX = status
  9495.         0000h OK but not complete
  9496.         0001h OK and image complete
  9497.         FFFFh error
  9498.     DS:SI -> buffer (max 4K) for bit map strip
  9499.     CX = start row
  9500.     DX = number of rows
  9501.     BX = offset in bytes between bit planes
  9502. Note:    buffer may be overwritten by subsequent calls
  9503. SeeAlso: AX=CD0Bh
  9504. --------P-17E0-------------------------------
  9505. INT 17 - EPP BIOS - INSTALLATION CHECK
  9506.     AH = E0h
  9507. Return: ??? (AH <> E0h if installed ???)
  9508. SeeAlso: AX=0200h"EPP",AH=E1h,AH=E2h
  9509. --------P-17E1-------------------------------
  9510. INT 17 - EPP BIOS - DISABLE EPP
  9511.     AH = E1h
  9512.     ???
  9513. Return: ???
  9514. SeeAlso: AX=0200h"EPP",AH=E0h,AH=E2h
  9515. --------P-17E2-------------------------------
  9516. INT 17 - EPP BIOS - ENABLE EPP
  9517.     AH = E2h
  9518.     ???
  9519. Return: ???
  9520. SeeAlso: AX=0200h"EPP",AH=E0h,AH=E1h
  9521. --------P-17F0-------------------------------
  9522. INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
  9523.     AH = F0h
  9524.     DX = printer port (0-3)
  9525. Return: AX = 0001h Jetstream present
  9526.          else  non-Jetstream port
  9527. Note:    NorthNet Jetstream is a high-performance DMA-driven parallel card able
  9528.       to drive printers at up to 80000 characters per second
  9529. --------P-17F1-------------------------------
  9530. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
  9531.     AH = F1h
  9532.     CX = data buffer length
  9533.     DX = printer port (0-3)
  9534.     DS:SI -> data buffer
  9535. Return: AX = status
  9536.         0000h printer not ready (see also AH=02h)
  9537.         other printing started
  9538. SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
  9539. --------P-17F2-------------------------------
  9540. INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
  9541.     AH = F2h
  9542.     DX = printer port (0-3)
  9543. Return: AX = status
  9544.         0000h prior print request finished
  9545.         other number of characters left to print
  9546. SeeAlso: AH=02h,AH=F1h,AH=F3h
  9547. --------P-17F3-------------------------------
  9548. INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
  9549.     AH = F3h
  9550.     DX = printer port (0-3)
  9551. Return: AX = number of unprinted characters due to abort
  9552. SeeAlso: AH=F1h,AH=F4h
  9553. --------P-17F4-------------------------------
  9554. INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
  9555.     AH = F4h
  9556.     DX = printer port (0-3)
  9557.     DS:DS -> FAR post address (called with interrupts on)
  9558. SeeAlso: AH=F1h,AH=F3h
  9559. --------P-17F5-------------------------------
  9560. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
  9561.     AH = F5h
  9562.     CX = data buffer length
  9563.     DX = printer port (0-3)
  9564.     DS:SI -> data buffer (32-bit physical address)
  9565. Return: AX = status
  9566.         0000h printer not ready (see also AH=02h)
  9567.         other printing started
  9568. SeeAlso: AH=F1h
  9569. --------c-17FF--BX0000-----------------------
  9570. INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE
  9571.     AH = FFh
  9572.     BX = 0000h
  9573.     CX = 0000h
  9574.     DX = printer port number
  9575. Return: AH = printer status (see #0489 at AH=00h)
  9576. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  9577.       operating system by The Software Link, Inc.
  9578. Desc:    close the spool file immediately instead of waiting for the close time
  9579.       to elapse
  9580. SeeAlso: AH=01h,AH=03h"PC-MOS"
  9581. --------B-18---------------------------------
  9582. INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC)
  9583. Desc:    called when there is no bootable disk available to the system
  9584. Notes:    only PCs produced by IBM contain BASIC in ROM, so the action is
  9585.       unpredictable on compatibles; this interrupt often reboots the
  9586.       system, and often has no effect at all
  9587.     network cards with their own BIOS can hook this interrupt to allow
  9588.       a diskless boot off the network (even when a hard disk is present
  9589.       if none of the partitions is marked as the boot partition)
  9590. SeeAlso: INT 2F/AX=4A06h,INT 86"NetBIOS"
  9591. --------J-1800-------------------------------
  9592. INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
  9593.     AH = 00h
  9594. Return: AX = keystroke
  9595. SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
  9596. --------J-1801-------------------------------
  9597. INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
  9598.     AH = 01h
  9599. Return: BH = status
  9600.         00h no keystrokes available
  9601.         01h keystroke available
  9602.         AX = keystroke
  9603. SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
  9604. --------J-1802-------------------------------
  9605. INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
  9606.     AH = 02h
  9607. Return: AL = shift flags
  9608. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
  9609. --------J-1803-------------------------------
  9610. INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
  9611.     AH = 03h
  9612.     ???
  9613. Return: ???
  9614. SeeAlso: AH=00h,AH=04h
  9615. --------J-1804-------------------------------
  9616. INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
  9617.     AH = 04h
  9618.     ???
  9619. Return: ???
  9620. Note:    details are not available at this time
  9621. SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
  9622. --------J-18---------------------------------
  9623. INT 18 - NEC PC-9800 series - VIDEO
  9624.     AH = function
  9625.         0Ah set video mode
  9626.         0Bh get video mode
  9627.         0Ch start text screen display
  9628.         0Dh end text screen display
  9629.         0Eh set single display area
  9630.         0Fh set multiple display area
  9631.         10h set cursor shape
  9632.         11h display cursor
  9633.         12h terminate cursor
  9634.         13h set cursor position
  9635.         14h read font patter
  9636.         16h initialize text video RAM
  9637.         1Ah define user character
  9638.     ???
  9639. Return: ???
  9640. Notes:    details are not available at this time
  9641.     text video RAM is located at segments A000h (characters) and A200h
  9642.       (attributes)
  9643. ----------185350BX4849-----------------------
  9644. INT 18 - SPHINX C-- - WB.COM - API
  9645.     AX = 5350h ('SP')
  9646.     BX = 4849h ('HI')
  9647.     CX = 4E58h ('NX')
  9648.     DH = function
  9649.         01h set ???
  9650.         DL = ???
  9651.         02h get ???
  9652.         Return: DL = ???
  9653.         03h get ???
  9654.         Return: ES:DI -> ??? data buffer
  9655.         06h ???
  9656. Return: AX = 7370h ('sp') if installed
  9657.     BX = 6869h ('hi') if installed
  9658.     CX = 6E78h ('nx') if installed
  9659. Program: SPHINX C-- is a shareware compiler by Peter Cellik for a language
  9660.       which is a cross between C and assembler; WB.COM is the driver which
  9661.       launches the WorkBench
  9662. --------s-186900-----------------------------
  9663. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET STATUS
  9664.     AX = 6900h
  9665. Return: AX = amount of DRAM on card or 0000h if GUS not available
  9666. Program: YEA_GUS is a driver for the Graphics Ultra Sound which hooks INT 18h
  9667.       and then shells out the the program requiring its services
  9668. SeeAlso: AX=6901h,AX=690Ah,AX=690Bh
  9669. --------s-186901-----------------------------
  9670. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESET
  9671.     AX = 6901h
  9672.     BX = number of active voices (14-32)
  9673. Return: nothing
  9674. SeeAlso: AX=6900h
  9675. --------s-186902-----------------------------
  9676. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOLUME FOR SPECIFIC VOICE
  9677.     AX = 6902h
  9678.     BX = voice number (00h-1Fh)
  9679.     CX = linear volume (0000h-01FFh)
  9680. Return: nothing
  9681. SeeAlso: AX=6900h,AX=6903h,AX=6904h,AX=6909h,AX=690Ah
  9682. --------s-186903-----------------------------
  9683. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET FREQUENCY FOR VOICE
  9684.     AX = 6903h
  9685.     BX = voice number (00h-1Fh)
  9686.     CX = frequency in Hz (0-44100)
  9687. Return: nothing
  9688. SeeAlso: AX=6902h,AX=6904h
  9689. --------s-186904-----------------------------
  9690. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET LEFT/RIGHT BALANCE
  9691.     AX = 6904h
  9692.     BX = voice number (00h-1Fh)
  9693.     CX = balance (0 = left, 7 = even, 15 = right)
  9694. Return: nothing
  9695. SeeAlso: AX=6902h,AX=6903h
  9696. --------s-186905-----------------------------
  9697. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - PLAY MUSIC
  9698.     AX = 6905h
  9699.     BL = voice number
  9700.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  9701.     CL = looping type (0 = none, 1 = forward, 2 = back and forth)
  9702.     CH:DI = 20-bit starting address for voice data
  9703.     DL:SI = 20-bit address for loop start
  9704.     DH:BP = 20-bit address for loop end
  9705. SeeAlso: AX=6903h,AX=6906h,AX=690Bh
  9706. --------s-186906-----------------------------
  9707. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - LOAD SOUND DATA
  9708.     AX = 6906h
  9709.     BL = data format (1 = twos-complement, 0 = not)
  9710.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  9711.     CX = number of bytes to send
  9712.     ES:SI -> buffer containing data
  9713.     DL:DI = 20-bit address of GUS DRAM at which to load sound data
  9714. SeeAlso: AX=6900h,AX=6905h,AX=690Ch
  9715. --------s-186907-----------------------------
  9716. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - STOP VOICE
  9717.     AX = 6907h
  9718.     BX = voice number (00h-1Fh)
  9719. Return: nothing
  9720. SeeAlso: AX=6908h,AX=690Dh
  9721. --------s-186908-----------------------------
  9722. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOICE END
  9723.     AX = 6908h
  9724.     BX = voice number (00h-1Fh)
  9725.     CL:DX = 20-bit ending address
  9726. Return: nothing
  9727. SeeAlso: AX=690Bh
  9728. --------s-186909-----------------------------
  9729. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RAMP VOLUME
  9730.     AX = 6909h
  9731.     BL = voice number (00h-1Fh)
  9732.     BH = looping type (0 = none, 1 = forward, 2 = back and forth)
  9733.     CX = starting volume
  9734.     DX = ending volume
  9735.     DI:SI = time
  9736. Return: nothing
  9737. SeeAlso: AX=6902h,AX=690Ah
  9738. --------s-18690A-----------------------------
  9739. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET VOLUME
  9740.     AX = 690Ah
  9741.     BX = voice number (00h-1Fh)
  9742. Return: AX = current non-linear volume for voice
  9743. SeeAlso: AX=6902h,AX=6909h
  9744. --------s-18690B-----------------------------
  9745. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET POSITION
  9746.     AX = 690Bh
  9747.     BX = voice number
  9748. Return: BX:AX = 20-bit address at which voice is playing
  9749. SeeAlso: AX=6900h,AX=6905h,AX=6908h
  9750. --------s-18690C-----------------------------
  9751. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SAVE SOUND DATA
  9752.     AX = 690Ch
  9753.     BL = data format (1 = twos-complement, 0 = not)
  9754.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  9755.     CX = number of bytes to get
  9756.     ES:SI -> buffer for retrieved data
  9757.     DL:DI = 20-bit address in GUS DRAM from which to read voice data
  9758. Return: nothing
  9759. SeeAlso: AX=6906h
  9760. --------s-18690D-----------------------------
  9761. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESTART VOICE
  9762.     AX = 690Dh
  9763.     BX = voice
  9764.     CX = sample type (0 = 8-bit, 1 = 16-bit)
  9765.     DX = looping type (0 = none, 1 = forward, 2 = back and forth)
  9766. Return: CX = balance value
  9767. SeeAlso: AX=6907h,AX=6908h
  9768. --------s-188000-----------------------------
  9769. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - INITIALIZE
  9770.     AX = 8000h
  9771. Program: EURO_MOD is a .MOD file player for the Gravis Ultra Sound which hooks
  9772.       INT 18h and then shells out to the program requiring its services
  9773. SeeAlso: AX=8001h,AX=8004h
  9774. --------s-188001-----------------------------
  9775. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - LOAD .MOD FILE
  9776.     AX = 8001h
  9777.     BX:CX -> ASCIZ filename
  9778. SeeAlso: AX=8000h,AX=8002h
  9779. --------s-188002-----------------------------
  9780. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - PLAY .MOD FILE
  9781.     AX = 8002h
  9782. SeeAlso: AX=8002h,AX=8003h
  9783. --------s-188003-----------------------------
  9784. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - STOP PLAYING
  9785.     AX = 8003h
  9786. --------s-188004-----------------------------
  9787. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - SHUTDOWN
  9788.     AX = 8004h
  9789. SeeAlso: AX=8000h,AX=8003h
  9790. --------B-19---------------------------------
  9791. INT 19 - SYSTEM - BOOTSTRAP LOADER
  9792. Desc:    This interrupt reboots the system without clearing memory or restoring
  9793.       interrupt vectors.  Because interrupt vectors are preserved, this
  9794.       interrupt usually causes a system hang if any TSRs have hooked
  9795.       vectors from 00h through 1Ch, particularly INT 08.
  9796. Notes:    Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
  9797.       A: to 0000h:7C00h.  If this fails, and a hard disk is installed, the
  9798.       BIOS will read sector 1, head 0, track 0 of the first hard disk.
  9799.       This sector should contain a master bootstrap loader and a partition
  9800.       table (see #0502).  After loading the master boot sector at
  9801.       0000h:7C00h, the master bootstrap loader is given control.  It will
  9802.       scan the partition table for an active partition, and will then load
  9803.       the operating system's bootstrap loader (contained in the first
  9804.       sector of the active partition) and give it control.
  9805.     true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
  9806.       disk have a valid boot sector
  9807.     to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
  9808.       0040h:0072h and jump to FFFFh:0000h.    For a cold boot equivalent to
  9809.       a reset, store 0000h at 0040h:0072h before jumping.
  9810.     VDISK.SYS hooks this interrupt to allow applications to find out how
  9811.       much extended memory has been used by VDISKs (see #0501).  DOS 3.3+
  9812.       PRINT hooks INT 19 but does not set up a correct VDISK header block
  9813.       at the beginning of its INT 19 handler segment, thus causing some
  9814.       programs to overwrite extended memory which is already in use.
  9815.     the default handler is at F000h:E6F2h for 100% compatible BIOSes
  9816.     MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
  9817.       contains extended partitions which point at each other in a loop,
  9818.       since it will never find the end of the linked list of extended
  9819.       partitions
  9820.     under Windows Real and Enhanced modes, calling INT 19 will hang the
  9821.       system in the same was as under bare DOS; under Windows Standard
  9822.       mode, INT 19 will successfully perform a cold reboot as it appears
  9823.       to have been redirected to a MOV AL,0FEh/OUT 64h,AL sequence
  9824. SeeAlso: INT 14/AH=17h,INT 18,INT 5B"PC Cluster"
  9825.  
  9826. Format of VDISK header block (at beginning of INT 19 handler's segment):
  9827. Offset    Size    Description    (Table 0501)
  9828.  00h 18 BYTEs    n/a (for VDISK.SYS, the device driver header)
  9829.  12h 11 BYTEs    signature string "VDISK     Vn.m" for VDISK.SYS version n.m
  9830.  1Dh 15 BYTEs    n/a
  9831.  2Ch  3 BYTEs    linear address of first byte of available extended memory
  9832.  
  9833. Format of hard disk master boot sector:
  9834. Offset    Size    Description    (Table 0502)
  9835.  00h 446 BYTEs    Master bootstrap loader code
  9836. 1BEh 16 BYTEs    partition record for partition 1 (see #0503)
  9837. 1CEh 16 BYTEs    partition record for partition 2
  9838. 1DEh 16 BYTEs    partition record for partition 3
  9839. 1EEh 16 BYTEs    partition record for partition 4
  9840. 1FEh    WORD    signature, AA55h indicates valid boot block
  9841.  
  9842. Format of partition record:
  9843. Offset    Size    Description    (Table 0503)
  9844.  00h    BYTE    boot indicator (80h = active partition)
  9845.  01h    BYTE    partition start head
  9846.  02h    BYTE    partition start sector (bits 0-5)
  9847.  03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
  9848.  04h    BYTE    operating system indicator (see #0504)
  9849.  05h    BYTE    partition end head
  9850.  06h    BYTE    partition end sector (bits 0-5)
  9851.  07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
  9852.  08h    DWORD    sectors preceding partition
  9853.  0Ch    DWORD    length of partition in sectors
  9854. SeeAlso: #0502
  9855.  
  9856. (Table 0504)
  9857. Values for operating system indicator:
  9858.  00h    empty
  9859.  01h    DOS 12-bit FAT
  9860.  02h    XENIX root file system
  9861.  03h    XENIX /usr file system (obsolete)
  9862.  04h    DOS 16-bit FAT (up to 32M)
  9863.  05h    DOS 3.3+ extended partition
  9864.  06h    DOS 3.31+ Large File System (16-bit FAT, over 32M)
  9865.  07h    QNX
  9866.  07h    OS/2 HPFS
  9867.  07h    Windows NT NTFS
  9868.  07h    Advanced Unix
  9869.  08h    AIX bootable partition, SplitDrive
  9870.  09h    AIX data partition
  9871.  09h    Coherent filesystem
  9872.  0Ah    OS/2 Boot Manager
  9873.  0Ah    OPUS
  9874.  0Ah    Coherent swap partition
  9875.  10h    OPUS
  9876.  11h    OS/2 Boot Manager hidden 12-bit FAT partition
  9877.  12h    Compaq Diagnostics partition
  9878.  14h    (resulted from using Novell DOS 7.0 FDISK to delete Linux Native part)
  9879.  14h    OS/2 Boot Manager hidden sub-32M 16-bit FAT partition
  9880.  16h    OS/2 Boot Manager hidden over-32M 16-bit FAT partition
  9881.  17h    OS/2 Boot Manager hidden HPFS partition
  9882.  18h    AST special Windows swap file
  9883.  24h    NEC MS-DOS 3.x
  9884.  3Ch    PowerQuest PartitionMagic recovery partition
  9885.  40h    VENIX 80286
  9886.  42h    SFS (Secure File System) by Peter Gutmann
  9887.  50h    Disk Manager, read-only partition
  9888.  51h    Disk Manager, read/write partition
  9889.  51h    Novell???
  9890.  52h    CP/M
  9891.  52h    Microport System V/386
  9892.  56h    GoldenBow VFeature
  9893.  61h    SpeedStor
  9894.  63h    Unix SysV/386, 386/ix
  9895.  63h    Mach, MtXinu BSD 4.3 on Mach
  9896.  63h    GNU HURD
  9897.  64h    Novell NetWare
  9898.  65h    Novell NetWare (3.11)
  9899.  70h    DiskSecure Multi-Boot
  9900.  75h    PC/IX
  9901.  80h    Minix v1.1 - 1.4a
  9902.  81h    Minix v1.4b+
  9903.  81h    Linux
  9904.  81h    Mitac Advanced Disk Manager
  9905.  82h    Linux Swap partition
  9906.  83h    Linux native file system (ext2fs/xiafs)
  9907.  84h    OS/2-renumbered type 04h partition (related to hiding DOS C: drive)
  9908.  93h    Amoeba file system
  9909.  94h    Amoeba bad block table
  9910.  A5h    FreeBSD
  9911.  B7h    BSDI file system (secondarily swap)
  9912.  B8h    BSDI swap partition (secondarily file system)
  9913.  C1h    DR-DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition
  9914.  C4h    DR-DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition
  9915.  C6h    DR-DOS 6.0 LOGIN.EXE-secured Huge partition
  9916.  C7h    Cyrnix Boot
  9917.  DBh    CP/M, Concurrent CP/M, Concurrent DOS
  9918.  DBh    CTOS (Convergent Technologies OS)
  9919.  E1h    SpeedStor 12-bit FAT extended partition
  9920.  E4h    SpeedStor 16-bit FAT extended partition
  9921.  F2h    DOS 3.3+ secondary
  9922.  F4h    SpeedStor
  9923.  FEh    LANstep
  9924.  FFh    Xenix bad block table
  9925. SeeAlso: #0503
  9926. --------!---Section--------------------------
  9927.