home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / maj / 4266 / interrup.c < prev    next >
Text File  |  1994-06-05  |  244KB  |  6,867 lines

  1. Interrupt List, part 3 of 11
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3. --------B-1580-------------------------------
  4. INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
  5.     AH = 80h
  6.     BX = device ID
  7.     CX = process ID
  8.     CF clear
  9. Return: CF clear if successful
  10.         AH = 00h
  11.     CF set on error
  12.         AH = status (see #0316)
  13. Note:    this function should be hooked by a multitasker which wishes to keep
  14.       track of device ownership; the default BIOS handler merely returns
  15.       successfully
  16. SeeAlso: AH=81h,AH=82h
  17.  
  18. (Table 0316)
  19. Values for status:
  20.  80h    invalid command (PC,PCjr)
  21.  86h    function not supported (XT)
  22. --------b-1580------------------------------------
  23. INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
  24.     AH = 80h
  25.     AL = function
  26.         00h get
  27.         Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
  28.         else set
  29.         BL = battery capacity (same as AL above)
  30. SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
  31. --------B-1581-------------------------------
  32. INT 15 C - OS HOOK - DEVICE CLOSE
  33.     AH = 81h
  34.     BX = device ID
  35.     CX = process ID
  36.     CF clear
  37. Return: CF clear if successful
  38.         AH = 00h
  39.     CF set on error
  40.         AH = status (see #0316)
  41. Note:    this function should be hooked by a multitasker which wishes to keep
  42.       track of device ownership; the default BIOS handler merely returns
  43.       successfully
  44. SeeAlso: AH=80h,AH=82h
  45. --------b-1581------------------------------------
  46. INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
  47.     AH = 81h
  48.     AL = new state of power output (00h off, nonzero on)
  49. Desc:    turn the +5V low power output on or off
  50. SeeAlso: AH=80h"HUNTER"
  51. --------B-1582-------------------------------
  52. INT 15 C - OS HOOK - PROGRAM TERMINATION
  53.     AH = 82h
  54.     BX = process ID
  55.     CF clear
  56. Return: CF clear if successful
  57.         AH = 00h
  58.     CF set on error
  59.         AH = status (see #0316)
  60. Notes:    closes all devices opened by the given process ID with function 80h
  61.     this function should be hooked by a multitasker which wishes to keep
  62.       track of device ownership; the default BIOS handler merely returns
  63.       successfully
  64. SeeAlso: AH=80h,AH=81h
  65. --------b-1582------------------------------------
  66. INT 15 - HUNTER 16 - SOUND OUTPUT
  67.     AH = 82h
  68.     DX = length (duration in seconds = DX * 666670 / frequency)
  69.     BX = pitch (see #0317)
  70. Desc:    Sound the tone specified in BX for the duration in DX
  71. SeeAlso: AX=1019h
  72.  
  73. (Table 0317)
  74. Values for HUNTER 16 sound pitch:
  75. BX(dec)     Note    Frequency    BX(dec)     Note    Frequency
  76.   425    G    1568.000     1515    A     440.000
  77.   451    F#    1479.503     1605    G#     415.307
  78.   477    F    1396.900     1701    G     392.000
  79.   506    E    1318.500     1802    F#     369.998
  80.   536    D#    1244.523     1909    F     349.230
  81.   568    D    1174.700     2022    E     329.630
  82.   601    C#    1108.749     2143    D#     311.127
  83.   637    C    1046.500     2270    D     293.660
  84.   675    B     958.770     2405    C#     277.183
  85.   715    A#     932.329     2548    MID C     261.630
  86.   758    A     880.000     2700    B     246.940
  87.   803    G#     830.609     2860    A#     233.081
  88.   850    G     783.990     3030    A     220.000
  89.   901    F#     739.990     3210    G#     207.654
  90.   954    F     698.460     3401    G     196.000
  91.  1011    E     659.260     3604    F#     184.996
  92.  1071    D#     622.257     3818    F     174.610
  93.  1135    D     587.330     4045    E     164.810
  94.  1203    C#     554.365     4286    D#     155.560
  95.  1274    C     523.250     4540    D     146.830
  96.  1350    B     493.880     4668    C#     142.827
  97.  1430    A#     466.162     4803    C     138.810
  98. --------B-1583-------------------------------
  99. INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
  100.     AH = 83h
  101.     AL = subfunction
  102.         00h set interval
  103.         CX:DX = microseconds to delay
  104.         ES:BX -> byte whose high bit is to be set at end of interval
  105.         01h cancel wait interval
  106. Return: CF set on error or function already busy
  107.         AH = status
  108.         80h invalid command (PC,PCjr)
  109.         86h function not supported (XT and later)
  110.     CF clear if successful
  111. Notes:    the resolution of the wait period is 977 microseconds on most systems
  112.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  113.       real-time clock chip which is available on INT 70
  114.     IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
  115. SeeAlso: AH=41h,AH=86h,INT 70
  116. --------b-1583------------------------------------
  117. INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
  118.     AH = 83h
  119.     AL = state of LCD window (00h disabled, nonzero enabled)
  120. Desc:    Enable/disable the facility where the displayed window tracks the
  121.       cursor output to keep the focus visible
  122. --------B-1584-------------------------------
  123. INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
  124.     AH = 84h
  125.     DX = subfunction
  126.         0000h read joystick switches
  127.         Return: AL bits 7-4 = switch settings
  128.         0001h read positions of joysticks
  129.         Return: AX = X position of joystick A
  130.             BX = Y position of joystick A
  131.             CX = X position of joystick B
  132.             DX = Y position of joystick B
  133. Return: CF set on error
  134.         AH = status (see #0316)
  135.     CF clear if successful
  136. Notes:    if no game port is installed, subfunction 0000h returns AL=00h (all
  137.       switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
  138.     a 250kOhm joystick typically returns 0000h-01A0h
  139. --------b-158400----------------------------------
  140. INT 15 - HUNTER 16 - GET DISKETTE PORT
  141.     AX = 8400h
  142.     BH = Drive (0: A:, 1: B:)
  143. Return: AL = Port (0: COM1, >0: COM2)
  144. Desc:    return the COM port used for the floppy drive
  145. SeeAlso: AX=8401h
  146. --------b-158401----------------------------------
  147. INT 15 - HUNTER 16 - SET DISKETTE PORT
  148.     AX = 8401h
  149.     BH = Drive (0: A:, 1: B:)
  150.     BL = Port (0: COM1, >0: COM2)
  151. Desc:    set the COM port used for the floppy drive
  152. SeeAlso: AX=8400h
  153. --------B-1585-------------------------------
  154. INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
  155.     AH = 85h
  156.     AL = SysReq key action (00h pressed, 01h released)
  157.     CF clear
  158. Return: CF clear if successful
  159.         AH = 00h
  160.     CF set on error
  161.         AH = status (see #0316)
  162. Notes:    called by keyboard decode routine
  163.     the default handler simply returns successfully; programs which wish
  164.       to monitor the SysReq key must hook this call
  165.     the SysReq key is often labeled SysRq
  166. SeeAlso: INT 09
  167. --------b-158500----------------------------------
  168. INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
  169.     AX = 8500h
  170. Desc:    restore the standard power menu
  171. SeeAlso: AX=8501h"HUNTER"
  172. --------b-158501----------------------------------
  173. INT 15 - HUNTER 16 - SET POWER MENU (APM)
  174.     AX = 8501h
  175.     BL = user software interrupt number
  176. Desc:    install an alternate power menu routine
  177. SeeAlso: AX=8500h"HUNTER"
  178. --------B-1586-------------------------------
  179. INT 15 - BIOS - WAIT (AT,PS)
  180.     AH = 86h
  181.     CX:DX = interval in microseconds
  182. Return: CF clear if successful (wait interval elapsed)
  183.     CF set on error or AH=83h wait already in progress
  184.         AH = status (see #0316)
  185. Note:    the resolution of the wait period is 977 microseconds on most systems
  186.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  187.       real-time clock chip which is available on INT 70
  188. SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
  189. --------b-1586------------------------------------
  190. INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
  191.     AH = 86h
  192.     AL = function (00h get, nonzero set)
  193.     BX = 1234h
  194.     DS:SI -> 256-byte Attribute buffer
  195. Note:    In text modes each character has its attribute byte XOR'd with the
  196.       corresponding byte in the attribute table.  If the attribute is 15,
  197.       15 is XOR'd with Table[15]
  198. --------B-1587-------------------------------
  199. INT 15 - SYSTEM - COPY EXTENDED MEMORY
  200.     AH = 87h
  201.     CX = number of words to copy (max 8000h)
  202.     ES:SI -> global descriptor table (see #0319)
  203. Return: CF set on error
  204.     CF clear if successful
  205.     AH = status (see #0318)
  206. Notes:    copy is done in protected mode with interrupts disabled by the default
  207.       BIOS handler; many 386 memory managers perform the copy with
  208.       interrupts enabled
  209.     this function is incompatible with the OS/2 compatibility box
  210. SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
  211.  
  212. (Table 0318)
  213. Values for extended-memory copy status:
  214.  00h    source copied into destination
  215.  01h    parity error
  216.  02h    interrupt error
  217.  03h    address line 20 gating failed
  218.  80h    invalid command (PC,PCjr)
  219.  86h    unsupported function (XT,PS30)
  220.  
  221. Format of global descriptor table:
  222. Offset    Size    Description    (Table 0319)
  223.  00h 16 BYTEs    zeros (used by BIOS)
  224.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  225.  12h  3 BYTEs    24-bit linear source address, low byte first
  226.  15h    BYTE    source segment access rights (93h)
  227.  16h    WORD    zero
  228.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  229.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  230.  1Dh    BYTE    destination segment access rights (93h)
  231.  1Eh 18 BYTEs    zeros (used by BIOS)
  232. --------b-1587------------------------------------
  233. INT 15 - HUNTER 16 - SET INT 72h VECTOR
  234.     AH = 87h
  235.     DS:DX = new service routine
  236. Desc:    set the INT 72h vector which is called in 2 cases:
  237.       - when the machine is about to turn off or reboot, INT 72h is called
  238.         with AH=0
  239.       - when the machine is powering up INT 72h is called with AH=01h
  240. Note:    the actual INT 72h vector must also be changed with INT 21/AH=25h
  241. --------B-1588-------------------------------
  242. INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
  243.     AH = 88h
  244. Return: CF clear if successful
  245.         AX = number of contiguous KB starting at absolute address 100000h
  246.     CF set on error
  247.         AH = status
  248.         80h invalid command (PC,PCjr)
  249.         86h unsupported function (XT,PS30)
  250. Notes:    TSRs which wish to allocate extended memory to themselves often hook
  251.       this call, and return a reduced memory size.    They are then free to
  252.       use the memory between the new and old sizes at will.
  253.     the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
  254.       for memory beyond 16MB
  255.     not all BIOSes correctly return the carry flag, making this call
  256.       unreliable unless one first checks whether it is supported through
  257.       a mechanism other than calling the function and testing CF
  258. SeeAlso: AH=87h,AH=C7h
  259. --------b-1588------------------------------------
  260. INT 15 - HUNTER 16 - GET POWER UP KEYS
  261.     AH = 88h
  262. Return: AH = 00h
  263.     BX = column
  264.     CL = row
  265. SeeAlso: AH=71h
  266. --------B-1589-------------------------------
  267. INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
  268.     AH = 89h
  269.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  270.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  271.     ES:SI -> GDT for protected mode
  272.            offset 0h  null descriptor (initialize to zeros)
  273.               8h  GDT descriptor
  274.              10h  IDT descriptor
  275.              18h  DS
  276.              20h  ES
  277.              28h  SS
  278.              30h  CS
  279.              38h  uninitialized, used to build descriptor for BIOS CS
  280. Return: CF set on error
  281.        AH = FFh  error enabling address line 20
  282.     CF clear if successful
  283.        AH = 00h
  284.        in protected mode at specified address
  285. Notes:    BL and BH must be multiples of 8
  286.     the protected-mode CS must reference the same memory as the CS this
  287.       function is called from because execution continues with the address
  288.       following the interrupt call
  289. SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
  290. --------b-158900----------------------------------
  291. INT 15 - HUNTER 16 - GET POWER MODE
  292.     AX = 8900h
  293. Return: AH = 00h
  294.     BL = current power mode
  295.         00h Standard Power Mode (SPM)
  296.         01h Advanced Power Mode (APM)
  297. SeeAlso: AX=8901h
  298. --------b-158901----------------------------------
  299. INT 15 - HUNTER 16 - SET POWER MODE
  300.     AX = 8901h
  301.     BL = new mode
  302.         00h Standard Power Mode (SPM)
  303.         01h Advanced Power Mode (APM)
  304. Return: AH = 00h
  305. SeeAlso: AX=8900h
  306. --------b-158A------------------------------------
  307. INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
  308.     AH = 8Ah
  309.     AL = new state of Power Input (00h disabled, nonzero enabled)
  310.     SI = 1234h
  311.     DI = 5678h
  312. Return: AH = status
  313.         00h success
  314.         FFh failure
  315. Desc:    Enable or disable Power Input. When Power Input is disabled the AC
  316.       adaptor will neither charge the batteries nor supply power to the
  317.       Hunter 16. Disable Power Input if using Alkaline batteries.
  318. --------b-158B------------------------------------
  319. INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
  320.     AH = 8Bh
  321.     AL = function
  322.         00h get
  323.         Return:    BH = Maximum charging temperature
  324.                 Temp = -20 + (n * 0.63) degrees Centigrade
  325.             BL = Minimum charging temperature
  326.         else set
  327.         BH = maximum charging temperature (as above)
  328.         BL = minimum charging temperature (as above)
  329. Return: AH = status
  330.         00h success
  331.         FFh failure 
  332. Desc:    get/set the temperature interval within which the charger should 
  333.       operate
  334. --------b-158C------------------------------------
  335. INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
  336.     AH = 8Ch
  337.     AL = function
  338.         00h get
  339.         Return: BX = which operations disable power save (see #0320)
  340.         else set
  341.         BX = which operations should disable power save (see #0320)
  342. SeeAlso: AH=8Dh
  343.  
  344. Bitfields for HUNTER 16 operations disabling power save:
  345. Bit(s)    Description    (Table 0320)
  346.  0    INT 10h prevents power save
  347.  1    INT 13h prevents power save
  348.  2    INT 14h prevents power save
  349.  3    INT 15h prevents power save
  350.  4    INT 1Ah prevents power save
  351.  5    INT 21h prevents power save
  352.  6    direct write to video RAM prevents power save
  353.  7    access to 8250 UART prevents power save
  354.  8    access to 8253 (Sound) prevents power save
  355. --------b-158D------------------------------------
  356. INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
  357.     AH = 8Dh
  358.     AL = function
  359.         00h get
  360.         Return: AL = Fast Charge state (00h prevented, else allowed)
  361.         nonzero set
  362.         BH = Fast Charge state (00h prevent, nonzero allow)
  363. Return: AH = status
  364.         00h success
  365.         FFh failure
  366. Desc:    control whether Fast Charging (200ma rather than 70ma) is allowed
  367. SeeAlso: AH=8Ch
  368. --------B-1590-------------------------------
  369. INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
  370.     AH = 90h
  371.     AL = device type (see #0321)
  372.     ES:BX -> request block for type codes 80h through BFh
  373.     CF clear
  374. Return: CF set if wait time satisfied
  375.     CF clear if driver must perform wait
  376.         AH = 00h
  377. Notes:    type codes are allocated as follows:
  378.       00-7F non-reentrant devices; OS must arbitrate access
  379.       80-BF reentrant devices; ES:BX points to a unique control block
  380.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  381.     floppy and hard disk BIOS code uses this call to implement a timeout;
  382.       for device types 00h and 01h, a return of CF set means that the
  383.       timeout expired before the disk responded.
  384.     this function should be hooked by a multitasker to allow other tasks
  385.       to execute while the BIOS is waiting for I/O completion; the default
  386.       handler merely returns with AH=00h and CF clear
  387. SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
  388.  
  389. (Table 0321)
  390. Values for device type:
  391.  00h    disk
  392.  01h    diskette
  393.  02h    keyboard
  394.  03h    PS/2 pointing device
  395.  21h    waiting for keyboard input (Phoenix BIOS)
  396.  80h    network
  397.  FBh    digital sound (Tandy)
  398.  FCh    disk reset (PS)
  399.  FDh    diskette motor start
  400.  FEh    printer
  401. --------B-1591-------------------------------
  402. INT 15 - OS HOOK - DEVICE POST (AT,PS)
  403.     AH = 91h
  404.     AL = device type (see #0321)
  405.     ES:BX -> request block for type codes 80h through BFh
  406.     CF clear
  407. Return: AH = 00h
  408. Note:    this function should be hooked by a multitasker to allow other tasks
  409.       to execute while the BIOS is waiting for I/O completion; the default
  410.       handler merely returns with AH=00h and CF clear
  411. SeeAlso: AH=90h
  412. --------b-15BC-------------------------------
  413. INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
  414.     AH = BCh
  415. Return: CF clear
  416.     (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
  417.     (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
  418. Note:    this function reads system timer channel 0 twice, then does
  419.       calculations on the returned values to determine the delay loop
  420.       counter needed by the BIOS for beeps and floppy timeouts
  421. SeeAlso: AX=2305h
  422. --------E-15BF00-----------------------------
  423. INT 15 - Rational Systems DOS/16M - ???
  424.     AX = BF00h
  425.     ???
  426. Return: ???
  427. Note:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  428. SeeAlso: AX=BF02h
  429. --------E-15BF01-----------------------------
  430. INT 15 - Rational Systems DOS/16M - ???
  431.     AX = BF01h
  432.     ???
  433. Return: ???
  434. Notes:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  435.     called by DOS/4GW
  436. SeeAlso: AX=BF00h,AX=BF02h
  437. --------E-15BF02DX0000-----------------------
  438. INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
  439.     AX = BF02h
  440.     DX = 0000h
  441. Return: DX = nonzero if installed
  442.         DX:SI -> XBRK structure (see #0322)
  443. Note:    this function is also supported by DOS/4G
  444. SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
  445. SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
  446.  
  447. Format of DOS/16M XBRK structure:
  448. Offset    Size    Description    (Table 0322)
  449.  00h    DWORD    linear address of first available byte
  450.  04h    DWORD    linear address of last available byte + 1 ???
  451.  08h    DWORD    real-mode address of XBRK structure???
  452.  0Ch    DWORD    ???
  453.  10h  2 BYTEs    ???
  454.  12h    WORD    segment of ???
  455.  14h  8 BYTEs    ???
  456.  1Ch 512 BYTEs    protected-mode IDT
  457. 21Ch  N BYTEs    protected-mode GDT
  458. --------E-15BF03-----------------------------
  459. INT 15 - Rational Systems DOS/4GW - UNINSTALL???
  460.     AX = BF03h
  461.     BX = PSP segment of extender
  462.     ???
  463. Return: ???
  464. Note:    if BX is not the PSP segment of the extender, it passes the call down
  465.       the INT 15 chain; this allows nested instances of the extender
  466. SeeAlso: AX=BF06h
  467. --------E-15BF04-----------------------------
  468. INT 15 - Rational Systems DOS/4GW - ???
  469.     AX = BF04h
  470.     BX = PSP segment of extender
  471. Return: nothing???
  472. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  473.       the INT 15 chain; this allows nested instances of the extender
  474.     grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
  475. SeeAlso: INT 2F/AX=1607h/BX=22C0h
  476. --------E-15BF05-----------------------------
  477. INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
  478.     AX = BF05h
  479.     BX = PSP segment of extender
  480. Return: nothing???
  481. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  482.       the INT 15 chain; this allows nested instances of the extender
  483.     calls INT 67/AX=DE01h if ???
  484. --------E-15BF06-----------------------------
  485. INT 15 - Rational Systems DOS/4GW - ???
  486.     AX = BF06h
  487.     BX = PSP segment of extender
  488.     ???
  489. Return: ???
  490. Note:    if BX is not the PSP segment of the extender, it passes the call down
  491.       the INT 15 chain; this allows nested instances of the extender
  492. SeeAlso: AX=BF03h
  493. --------E-15BFDCDX0000-----------------------
  494. INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
  495.     AX = BFDCh
  496.     DX = 0000h
  497.     SI = 0000h
  498. Return: DX = nonzero if installed
  499.         DX:SI -> XBRK structure (see #0322)
  500. SeeAlso: AX=BF02h
  501. --------E-15BFDEBX0000-----------------------
  502. INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
  503.     AX = BFDEh
  504.     BX = 0000h
  505. Return: AX = ??? (0003h)
  506.     BX = FFFFh
  507. SeeAlso: AX=BF02h
  508. --------E-15BFDEBX0001-----------------------
  509. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
  510.     AX = BFDEh
  511.     BX = 0001h
  512. Return: BX = 0000h (success)
  513.     CX:DX -> name of process manager executable
  514. SeeAlso: AX=BFDEh/BX=0000h
  515. --------E-15BFDEBX0002-----------------------
  516. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  517.     AX = BFDEh
  518.     BX = 0002h
  519.     CX:DX -> ???
  520. Return: BX = 0000h (success)
  521. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
  522. --------E-15BFDEBX0003-----------------------
  523. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  524.     AX = BFDEh
  525.     BX = 0003h
  526. Return: BX = 0000h (success)
  527.     CX:DX -> ???
  528. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
  529. --------E-15BFDEBX0004-----------------------
  530. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  531.     AX = BFDEh
  532.     BX = 0004h
  533.     CL = ???
  534. Return: BX = 0000h (success)
  535.     CX:DX -> XBRK structure (see #0322)
  536. SeeAlso: AX=BFDEh/BX=0000h
  537. --------E-15BFDEBX0005-----------------------
  538. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  539.     AX = BFDEh
  540.     BX = 0005h
  541.     CX = new value for ???
  542. Return: BX = 0000h (success)
  543.     AX = old value of ???
  544.     DS:SI -> ??? (if AX nonzero on return)
  545.     ES:DI -> ??? (if AX zero on return)
  546. Note:    called by DOS4GW.EXE
  547. SeeAlso: AX=BFDEh/BX=0000h
  548. --------E-15BFDEBX0006-----------------------
  549. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  550.     AX = BFDEh
  551.     BX = 0006h
  552. Return: BX = 0000h (success)
  553.     AH = interrupt number??? (BEh)
  554.     CX:DX = ???
  555. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
  556. --------E-15BFDEBX0007-----------------------
  557. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  558.     AX = BFDEh
  559.     BX = 0007h
  560.     CX:DX = ???
  561. Return: BX = 0000h (success)
  562. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
  563. --------E-15BFDEBX0008-----------------------
  564. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  565.     AX = BFDEh
  566.     BX = 0008h
  567.     CX = segment of ???
  568.     DS = ???
  569. Return: BX = status
  570.         0000h successful
  571.         AL = ??? (80h or C0h)
  572.         DX = ??? (0603h) if AL=C0h
  573.         0001h failed
  574.         AX = 0000h
  575. Note:    called by DOS4GW.EXE
  576. SeeAlso: AX=BFDEh/BX=0000h
  577. --------E-15BFDEBX0009-----------------------
  578. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
  579.     AX = BFDEh
  580.     BX = 0009h
  581. Return: BX = 0000h (success)
  582.     CX:DX -> full pathname to LOAD32.EXP
  583. SeeAlso: AX=BFDEh/BX=0000h
  584. --------E-15BFDEBX000A-----------------------
  585. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
  586.     AX = BFDEh
  587.     BX = 000Ah
  588. Return: BX = 0000h (success)
  589.     AX = new value of ??? counter
  590. Notes:    also resets a variety of values if the counter goes negative
  591.     called by DOS4GW.EXE
  592. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
  593. --------E-15BFDEBX000B-----------------------
  594. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
  595.     AX = BFDEh
  596.     BX = 000Bh
  597. Return: AX = new value of ??? counter
  598. Note:    called by DOS4GW.EXE
  599. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
  600. --------E-15BFDEBX000C-----------------------
  601. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  602.     AX = BFDEh
  603.     BX = 000Ch
  604.     CL = ???
  605.         00h
  606.         nonzero
  607. Return: ???
  608. SeeAlso: AX=BFDEh/BX=0000h
  609. --------E-15BFDEBX000D-----------------------
  610. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  611.     AX = BFDEh
  612.     BX = 000Dh
  613.     ???
  614. Return: ???
  615. SeeAlso: AX=BFDEh/BX=0000h
  616. --------E-15BFDEBX000E-----------------------
  617. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  618.     AX = BFDEh
  619.     BX = 000Eh
  620.     DX:CX -> ???
  621. Return: AX = segment of handle for calling task
  622.     BX = ??? (probably destroyed)
  623.     DX:CX -> ???
  624. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
  625. --------E-15BFDEBX000F-----------------------
  626. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  627.     AX = BFDEh
  628.     BX = 000Fh
  629. Return: AX = segment of handle for calling task
  630.     BX = ??? (probably destroyed)
  631.     DX:CX -> ???
  632. Note:    identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
  633. SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
  634. --------E-15BFDEBX0010-----------------------
  635. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
  636.     AX = BFDEh
  637.     BX = 0010h
  638. Return: AX = segment of caller's task handle
  639.     BX destroyed
  640. SeeAlso: AX=BFDEh/BX=000Fh
  641. --------E-15BFDEBX0011-----------------------
  642. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  643.     AX = BFDEh
  644.     BX = 0011h
  645. Return: CX = code segment of DVDOS4GX.DVR
  646.     BX = ??? (0004h)
  647. SeeAlso: AX=BFDEh/BX=0000h
  648. --------E-15BFDEBX0012-----------------------
  649. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  650.     AX = BFDEh
  651.     BX = 0012h
  652. Return: DX = code segment of DVDOS4GX.DVR
  653.     BX = ??? (012Ch)
  654.     CX = ??? (0006h)
  655. SeeAlso: AX=BFDEh/BX=0000h
  656. --------E-15BFDEBX0013-----------------------
  657. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  658.     AX = BFDEh
  659.     BX = 0013h
  660. Return: DX:CX -> ???
  661. SeeAlso: AX=BFDEh/BX=000Eh
  662. --------E-15BFDEBX0014-----------------------
  663. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
  664.     AX = BFDEh
  665.     BX = 0014h
  666.     CX = index of ??? mailbox
  667.         (0000h-0004h valid, but no range checking done)
  668. Return: AX,BX destroyed
  669. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  670. --------E-15BFDEBX0015-----------------------
  671. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
  672.     AX = BFDEh
  673.     BX = 0015h
  674.     CX = index of ??? mailbox
  675.         (0000h-0004h valid, but no range checking done)
  676. Return: AX,BX destroyed
  677. SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
  678. --------E-15BFDEBX0016-----------------------
  679. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
  680.     AX = BFDEh
  681.     BX = 0016h
  682.     CX = index of ??? mailbox
  683.         (0000h-0004h valid, but no range checking done)
  684. Return: AX = status
  685.         0000h no one owns mailbox
  686.         0001h mailbox has an owner
  687.     BX destroyed
  688. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  689. --------E-15BFDEBX0017-----------------------
  690. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
  691.     AX = BFDEh
  692.     BX = 0017h
  693.     CX = index of ??? mailbox
  694.         (0000h-0004h valid, but no range checking done)
  695. Return: AX = segment of mailbox owner's handle
  696.     BX = segment of caller's task handle
  697. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
  698. --------E-15BFDEBXFFFD-----------------------
  699. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  700.     AX = BFDEh
  701.     BX = FFFDh
  702. Return: CX:DX = ???
  703. SeeAlso: AX=BFDEh/BX=FFFEh
  704. --------E-15BFDEBXFFFE-----------------------
  705. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  706.     AX = BFDEh
  707.     BX = FFFEh
  708.     CX:DX = ???
  709. SeeAlso: AX=BFDEh/BX=FFFDh
  710. --------E-15BFDEBXFFFF-----------------------
  711. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
  712.     AX = BFDEh
  713.     BX = FFFFh
  714. SeeAlso: AX=BFDEh/BX=0000h
  715. --------B-15C0-------------------------------
  716. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  717.     AH = C0h
  718. Return: CF set if BIOS doesn't support call
  719.     CF clear on success
  720.         ES:BX -> ROM table (see #0323)
  721.     AH = status
  722.         00h successful
  723.         86h unsupported function
  724. Notes:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  725.     the configuration table is at F000h:E6F5h in 100% compatible BIOSes
  726.     Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
  727.       and a model byte at absolute address FE845h (see #0329)
  728.     Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
  729.       a product identifier at F000h:00FAh (see #0331)
  730.     Compaq machines can be identified by the signature string "COMPAQ" at
  731.       F000h:FFEAh, and is preceded by additional information (see #0330)
  732.     Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
  733.       the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
  734.       first three data bytes (model/submodel/revision) in the returned
  735.       table
  736.     Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
  737.       a laptop information record at F000h:E000h (see #0332)
  738.     some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
  739.       past the end of the configuration table
  740.     the Phoenix 386 BIOS contains a second version and date string
  741.       (presumably the last modification for that OEM version) beginning at
  742.       F000h:FFD8h, with each byte doubled (so that both ROM chips contain
  743.       the complete information)
  744. SeeAlso: AH=C7h,AH=C9h,AH=D1h
  745.  
  746. Format of ROM configuration table:
  747. Offset    Size    Description    (Table 0323)
  748.  00h    WORD    number of bytes following
  749.  02h    BYTE    model (see #0328)
  750.  03h    BYTE    submodel (see #0328)
  751.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  752.  05h    BYTE    feature byte 1 (see #0324)
  753.  06h    BYTE    feature byte 2 (see #0325)
  754.  07h    BYTE    feature byte 3 (see #0326)
  755.  08h    BYTE    feature byte 4 (see #0327)
  756.  09h    BYTE    feature byte 5:
  757.         reserved (0) (IBM)
  758.         ??? (08h) (Phoenix 386 v1.10)
  759. ---AWARD BIOS---
  760.  0Ah  N BYTEs    AWARD copyright notice
  761. ---Phoenix BIOS---
  762.  0Ah    BYTE    ??? (00h)
  763.  0Bh    BYTE    major version
  764.  0Ch    BYTE    minor version (BCD)
  765.  0Dh  4 BYTEs    ASCIZ string "PTL" (Phoenix Technologies Ltd)
  766. ---Quadram Quad386---
  767.  0Ah 17 BYTEs    ASCII signature string "Quadram Quad386XT"
  768.  
  769. Bitfields for feature byte 1:
  770. Bit(s)    Description    (Table 0324)
  771.  7    DMA channel 3 used by hard disk BIOS
  772.  6    2nd 8259 installed
  773.  5    Real-Time Clock installed
  774.  4    INT 15/AH=4Fh called upon INT 09h
  775.  3    wait for external event (INT 15/AH=41h) supported
  776.  2    extended BIOS area allocated (usually at top of RAM)
  777.  1    bus is Micro Channel instead of ISA
  778.  0    system has dual bus (Micro Channel + ISA)
  779.  
  780. Bitfields for feature byte 2:
  781. Bit(s)    Description    (Table 0325)
  782.  7    reserved
  783.  6    INT 16/AH=09h (keyboard functionality) supported
  784.  5    INT 15/AH=C6h (get POS data) supported
  785.  4    INT 15/AH=C7h (return memory map info) supported
  786.  3    INT 15/AH=C8h (en/disable CPU functions) supported
  787.  2    non-8042 keyboard controller
  788.  1    data streaming supported
  789.  0    reserved
  790.  
  791. Bitfields for feature byte 3:
  792. Bit(s)    Description    (Table 0326)
  793.  7-5    reserved
  794.  4    ??? (set on 1992 PS/1's, N51SX, CL57SX, 35SX?, 40SX?)
  795.  3    SCSI subsystem supported on system board
  796.  2    information panel installed
  797.  1    IML (Initial Machine Load) system
  798.  0    SCSI supported in IML
  799.  
  800. Bitfields for feature byte 4:
  801. Bit(s)    Description    (Table 0327)
  802.  7    ??? (set on N51SX, CL57SX)
  803.  6-4    reserved
  804.  3    ??? (set on some 1992 PS/1's, 35SX, 40SX)
  805.  2-1    reserved
  806.  0    ??? (set on N51SX, CL57SX, 57SX)
  807.  
  808. (Table 0328)
  809. Values for model/submodel/revision:
  810. Model  Submdl  Rev    BIOS date    System
  811.  FFh    *    *    04/24/81    PC (original)
  812.  FFh    *    *    10/19/81    PC (some bugfixes)
  813.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  814.  FFh    00h    rev      ???        Tandy 1000SL
  815.  FFh    01h    rev      ???        Tandy 1000TL
  816.  FFh    46h    ***      ???        Olivetti M15
  817.  FEh    *    *    08/16/82    PC XT
  818.  FEh    *    *    11/08/82    PC XT and Portable
  819.  FEh    *    *    ../..x..    Toshiba laptops up to ~1987
  820.                     ("x"=product ID) (see #0333)
  821.  FEh    43h    ***      ???        Olivetti M240
  822.  FEh    A6h    ???      ???        Quadram Quad386
  823.  FDh    *    *    06/01/83    PCjr
  824.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  825.  FCh    00h    00h      ???        PC3270/AT
  826.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  827.  FCh    00h    > 01h      ???        7531/2 Industrial AT
  828.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  829.  FCh    01h    00h    09/17/87    Tandy 3000
  830.  FCh    01h    00h    ../..x..    Toshiba laptops since ~1988
  831.                     ("x"=product ID) (see #0333)
  832.  FCh    01h    00h    03/08/93    Compaq DESKPRO/i
  833.  FCh    01h    00h     various    Compaq DESKPRO, SystemPro, ProSignia
  834.  FCh    01h    00h    07/20/93    Zenith Z-Lite 425L
  835.  FCh    01h    20h    06/10/92    AST
  836.  FCh    01h    30h      ???        Tandy 3000NL
  837.  FCh    01h    ???      ???        Compaq 286/386
  838.  FCh    02h    00h    04/21/86    PC XT-286
  839.  FCh    02h    00h     various    Compaq LTE Lite
  840.  FCh    02h    00h    08/05/93    Compaq Contura 486/486c/486cx
  841.  FCh    04h    00h    02/13/87     ** PS/2 Model 50 (10 MHz/1 ws 286)
  842.  FCh    04h    02h      ???        PS/2 Model 50
  843.  FCh    04h    03h    04/18/88    PS/2 Model 50Z (10 MHz/0 ws 286)
  844.  FCh    04h    04h      ???        PS/2 Model 50Z
  845.  FCh    05h    00h    02/13/87     ** PS/2 Model 60 (10 MHz 286)
  846.  FCh    06h    00h      ???        IBM 7552-140 "Gearbox"
  847.  FCh    06h    01h      ???        IBM 7552-540 "Gearbox"
  848.  FCh    08h    ***      ???        Epson, unknown model
  849.  FCh    08h    00h      ???        PS/2 Model 25/286
  850.  FCh    09h    00h      ???        PS/2 Model 25 (10 MHz 286)
  851.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  852.  FCh    0Bh    00h    02/16/90    PS/1 Model 2011 (10 MHz 286)
  853.  FCh    20h    00h    02/18/93    Compaq ProLinea
  854.  FCh    30h    ***      ???        Epson, unknown model
  855.  FCh    31h    ***      ???        Epson, unknown model
  856.  FCh    33h    ***      ???        Epson, unknown model
  857.  FCh    3Fh    ???    09/16991    Toshiba T2200SX/60 (see also #0333)
  858.  FCh    42h    ***      ???        Olivetti M280
  859.  FCh    45h    ***      ???        Olivetti M380 (XP 1, XP3, XP 5)
  860.  FCh    48h    ***      ???        Olivetti M290
  861.  FCh    4Fh    ***      ???        Olivetti M250
  862.  FCh    50h    ***      ???        Olivetti M380 (XP 7)
  863.  FCh    51h    ***      ???        Olivetti PCS286
  864.  FCh    52h    ***      ???        Olivetti M300
  865.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  866.  FCh    81h    01h      ???        "OEM machine"
  867.  FCh    82h    01h      ???        "OEM machine"
  868.  FCh    94h    00h      ???        Zenith 386
  869.  FCh    FFh    ???    01/28<91    Toshiba T2000SX/40 (see also #0333)
  870.  FBh    00h    01h    01/10/86    PC XT-089, Enh Keyb, 3.5" support
  871.  FBh    00h    02h    05/09/86    PC XT
  872.  FBh    4Ch    ***      ???        Olivetti M200
  873.  FAh    00h    00h    09/02/86    PS/2 Model 30 (8 MHz 8086)
  874.  FAh    00h    01h    12/12/86    PS/2 Model 30
  875.  FAh    01h    00h      ???        PS/2 Model 25/25L (8 MHz 8086)
  876.  FAh    30h    00h      ???        IBM Restaurant Terminal
  877.  FAh    4Eh    ***      ???        Olivetti M111
  878.  FAh    FEh    00h      ???        IBM PCradio 9075
  879.  F9h    00h    00h    09/13/85    PC Convertible
  880.  F9h    FFh    00h      ???        PC Convertible
  881.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 (16MHz 386)
  882.  F8h    01h    00h    10/07/87    PS/2 Model 80 (20MHz 386)
  883.  F8h    02h    00h      ???        PS/2 Model 55-5571
  884.  F8h    04h    00h      ???        PS/2 Model 70
  885.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  886.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  887.  F8h    05h    00h      ???        IBM PC 7568
  888.  F8h    06h    00h      ???        PS/2 Model 55-5571
  889.  F8h    07h    00h      ???        IBM PC 7561/2
  890.  F8h    07h    01h      ???        PS/2 Model 55-5551
  891.  F8h    07h    02h      ???        IBM PC 7561/2
  892.  F8h    07h    03h      ???        PS/2 Model 55-5551
  893.  F8h    09h    00h      ???        PS/2 Model 70 16MHz, type 1 system brd
  894.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  895.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  896.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121) typ 2 sys brd
  897.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  898.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX (16 MHz 386SX)
  899.  F8h    0Dh    00h      ???        PS/2 Model 70 25MHz, type 3 system brd
  900.  F8h    0Eh    00h      ???        PS/1 486SX
  901.  F8h    0Fh    00h      ???        PS/1 486DX
  902.  F8h    10h    00h      ???        PS/2 Model 55-5551
  903.  F8h    11h    00h    10/01/90    PS/2 Model 90 XP (25 MHz 486)
  904.  F8h    12h    00h      ???        PS/2 Model 95 XP
  905.  F8h    13h    00h    10/01/90    PS/2 Model 90 XP (33 MHz 486)
  906.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9 (25 MHz 486), 95 XP
  907.  F8h    15h    00h      ???        PS/2 Model 90 XP
  908.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD (33 MHz 486)
  909.  F8h    17h    00h      ???        PS/2 Model 90 XP
  910.  F8h    19h    05h      ???        PS/2 Model 35/35LS or 40 (20 MHz 386SX)
  911.  F8h    1Ah    00h      ???        PS/2 Model 95 XP
  912.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486 (25 MHz 486)
  913.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121 (16 MHz 386SX)
  914.  F8h    1Eh    00h    02/08/90    PS/2 Model 55LS (16 MHz 386SX)
  915.  F8h    23h    00h      ???        PS/2 Model L40 SX
  916.  F8h    23h    01h      ???        PS/2 Model L40 SX (20 MHz 386SX)
  917.  F8h    25h    00h      ???        PS/2 Model 57 SLC
  918.  F8h    25h    06h      ???        PS/2 Model M57 (20 MHz 386SLC)
  919.  F8h    26h    00h      ???        PS/2 Model 57 SX
  920.  F8h    26h    01h      ???        PS/2 Model 57 (20 MHz 386SX)
  921.  F8h    28h    00h      ???        PS/2 Model 95 XP
  922.  F8h    29h    00h      ???        PS/2 Model 90 XP
  923.  F8h    2Ah    00h      ???        PS/2 Model 95 XP (50 MHz 486)
  924.  F8h    2Bh    00h      ???        PS/2 Model 90 (50 MHz 486)
  925.  F8h    2Ch    00h      ???        PS/2 Model 95 XP
  926.  F8h    2Ch    01h      ???        PS/2 Model 95 (20 MHz 486SX)
  927.  F8h    2Dh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX)
  928.  F8h    2Eh    00h      ???        PS/2 Model 95 XP
  929.  F8h    2Eh    01h      ???        PS/2 Model 95 (20 MHz 486SX + 487SX)
  930.  F8h    2Fh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX + 487SX)
  931.  F8h    30h    00h      ???        PS/1 Model 2121 (16 MHz 386SX)
  932.  F8h    33h    00h      ???        PS/2 Model 30-386
  933.  F8h    34h    00h      ???        PS/2 Model 25-386
  934.  F8h    36h    00h      ???        PS/2 Model 95 XP
  935.  F8h    37h    00h      ???        PS/2 Model 90 XP
  936.  F8h    38h    00h      ???        PS/2 Model 57
  937.  F8h    39h    00h      ???        PS/2 Model 95 XP
  938.  F8h    3Fh    00h      ???        PS/2 Model 90 XP
  939.  F8h    40h    00h      ???        PS/2 Model 95 XP
  940.  F8h    41h    00h      ???        PS/2 Model 77
  941.  F8h    45h    00h      ???        PS/2 Model 90 XP (Pentium)
  942.  F8h    46h    00h      ???        PS/2 Model 95 XP (Pentium)
  943.  F8h    47h    00h      ???        PS/2 Model 90/95 E (Pentium)
  944.  F8h    48h    00h      ???        PS/2 Model 85
  945.  F8h    49h    00h      ???        PS/ValuePoint 325T
  946.  F8h    4Ah    00h      ???        PS/ValuePoint 425SX
  947.  F8h    4Bh    00h      ???        PS/ValuePoint 433DX
  948.  F8h    4Eh    00h      ???        PS/2 Model 295
  949.  F8h    50h    00h      ???        PS/2 Model P70 (8573) (16 MHz 386)
  950.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  951.  F8h    52h    00h      ???        PS/2 Model P75 (33 MHz 486)
  952.  F8h    56h    00h      ???        PS/2 Model CL57 SX
  953.  F8h    57h    00h      ???        PS/2 Model 90 XP
  954.  F8h    58h    00h      ???        PS/2 Model 95 XP
  955.  F8h    59h    00h      ???        PS/2 Model 90 XP
  956.  F8h    5Ah    00h      ???        PS/2 Model 95 XP
  957.  F8h    5Bh    00h      ???        PS/2 Model 90 XP
  958.  F8h    5Ch    00h      ???        PS/2 Model 95 XP
  959.  F8h    5Dh    00h      ???        PS/2 Model N51 SLC
  960.  F8h    5Eh    00h      ???        IBM ThinkPad 700
  961.  F8h    61h    ***      ???        Olivetti P500
  962.  F8h    62h    ***      ???        Olivetti P800
  963.  F8h    80h    00h      ???        PS/2 Model 80 (25 MHz 386)
  964.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21
  965.  F8h    81h    00h      ???        PS/2 Model 55-5502
  966.  F8h    87h    00h      ???        PS/2 Model N33SX
  967.  F8h    88h    00h      ???        PS/2 Model 55-5530T
  968.  F8h    97h    00h      ???        PS/2 Model 55 Note N23SX
  969.  F8h    99h    00h      ???        PS/2 Model N51 SX
  970.  F8h    F2h    30h      ???        Reply Model 32
  971.  F8h    F6h    30h      ???        Memorex Telex
  972.  F8h    FDh    00h      ???        IBM Processor Complex (with VPD)
  973.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX)
  974.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX)
  975.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX + 487SX)
  976.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX + 487SX)
  977.  E1h    ???    ???      ???        ??? (checked for by DOS4GW.EXE)
  978.  E1h    00h    00h      ???        PS/2 Model 55-5530 Laptop
  979.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  980.  30h    ???    ???      ???        Sperry PC
  981.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  982.  ???    56h    ???      ???        Olivetti, unknown model
  983.  ???    74h    ???      ???        Olivetti, unknown model
  984.     * This BIOS call is not implemented in these early versions.
  985.       Read Model byte at F000h:FFFEh and BIOS date at F000h:FFF5h.
  986.    ** These BIOS versions require the DASDDRVR.SYS patches.
  987.   *** These Olivetti and Epson machines store the submodel in the byte at
  988.     F000h:FFFDh.
  989.  
  990. (Table 0329)
  991. Values for Dell model byte:
  992.  02h    Dell 200
  993.  03h    Dell 300
  994.  05h    Dell 220
  995.  06h    Dell 310
  996.  07h    Dell 325
  997.  09h    Dell 310A
  998.  0Ah    Dell 316
  999.  0Bh    Dell 220E
  1000.  0Ch    Dell 210
  1001.  0Dh    Dell 316SX
  1002.  0Eh    Dell 316LT
  1003.  0Fh    Dell 320LX
  1004.  11h    Dell 425E
  1005.  
  1006. Format of Compaq product information:
  1007. Address        Size    Description    (Table 0330)
  1008.  F000h:FFE4h    BYTE    product family code (first byte)
  1009.  F000h:FFE4h    BYTE    Point release number
  1010.  F000h:FFE4h    BYTE    ROM version code
  1011.  F000h:FFE4h    BYTE    product family code (second byte)
  1012.  F000h:FFE8h    WORD    BIOS type code
  1013.  
  1014. Bitfields for Hewlett-Packard product identifier:
  1015. Bit(s)    Description    (Table 0331)
  1016.  4-0    machine code
  1017.     0 original Vectra
  1018.     1 ES/12
  1019.     2 RS/20
  1020.     3 Portable/CS
  1021.     4 ES
  1022.     5 CS
  1023.     6 RS/16
  1024.     other reserved
  1025.  7-5    CPU type
  1026.     0 = 80286
  1027.     1 = 8088
  1028.     2 = 8086
  1029.     3 = 80386
  1030.     other reserved
  1031.  
  1032. Format of Toshiba laptop information:
  1033. Offset    Size    Description    (Table 0332)
  1034.  00h  8 BYTEs    ASCII product number (e.g. "T2200SX ")
  1035.  08h  8 BYTEs    ASCII version number (e.g. "V1.20   ")
  1036.  10h  8 BYTEs    ASCII signature string "TOSHIBA "
  1037.  18h  8 BYTEs    ???
  1038.  20h    DWORD    -> built-in BIOS setup program entry point or 0000h:0000h
  1039. Note:    this record is located at F000h:E000h
  1040.  
  1041. (Table 0333)
  1042. Values for Toshiba product ID:
  1043. model prodID   version      date       product number    /hdd
  1044.  FEh    29h        ../..)..   Toshiba T1000LE
  1045.  FEh    2Ah        ../..*..   Toshiba T1000XE
  1046.  FEh    2Bh        ../..+..   Toshiba T1000SE
  1047.  FEh    2Ch        ../..,..   Toshiba T1000      -
  1048.  FEh    2Dh        ../..-..   Toshiba T1200F     -
  1049.  FEh    2Dh    V4.00    12/26-87   Toshiba T1200H    /20
  1050.  FEh    2Eh        ../.....   Toshiba T1100+
  1051.  FCh    22h        ../.."..   Toshiba T8500
  1052.  FCh    26h        01/15&88   Toshiba T5200     /100
  1053.  FCh    27h        ../..'..   Toshiba T5100
  1054.  FCh    28h        ../..(..   Toshiba T2000
  1055.  FCh    2Ah        12/26*89   Toshiba T1200XE
  1056.  FCh    2Bh        ../..+..   Toshiba T1600
  1057.  FCh    2Ch        ../..,..   Toshiba T3100e
  1058.  FCh    2Dh        ../..-..   Toshiba T3200
  1059.  FCh    2Fh        ../../..   Toshiba T3100
  1060.  FCh    34h        ../..4..   Toshiba T100X
  1061.  FCh    ???        ../.. ..   Toshiba T200
  1062.  FCh    ???        ../.. ..   Toshiba T200CS
  1063.  FCh    38h        ../..8..   Toshiba T2000SXe
  1064.  FCh    39h    V1.20    09/16991   Toshiba T2200SX   /60
  1065.  FCh    39h    V1.40    10/01992   Toshiba T2200SX   /120 (upgraded)
  1066.  FCh    3Ch    V1.50    01/28<91   Toshiba T2000SX   /40
  1067.  FCh    3Dh        ../..=..   Toshiba T3200SXC
  1068.  FCh    3Eh        ../..>..   Toshiba T3100SX
  1069.  FCh    3Fh        ../..?..   Toshiba T3200SX
  1070.  FCh    40h        ../..@..   Toshiba T4500C
  1071.  FCh    41h        04/05A92   Toshiba T4500     ("T4500SXC" ?)
  1072.  FCh    45h    V3.20    04/14E92   Toshiba T4400SX   ("C" or "SXC" on cover)
  1073.  FCh    45h        01/13E93   Toshiba T4400SXC
  1074.  FCh    46h *        ../..F..   Toshiba T6400
  1075.  FCh    46h *        ../..F..   Toshiba T6400C
  1076.  FCh    5Fh        ../.._..   Toshiba T3300SL
  1077.  FCh    69h        ../..i..   Toshiba T1900C
  1078.  FCh    6Ah        ../..j..   Toshiba T1900
  1079.  FCh    6Dh        ../..m..   Toshiba T1850C
  1080.  FCh    6Eh        12/25n92   Toshiba T1850
  1081.  FCh    6Fh        07/17o92   Toshiba T1800
  1082.  FCh    7Eh    V1.30    06/17~93   Toshiba T4600C
  1083.  FCh    7Fh        ../..x..   Toshiba T4600
  1084.  FCh    97h        ../..x..   Toshiba T4800CT
  1085.  FCh    98h *    V1.10    12/22x93   Toshiba T1910     /120 /320
  1086.  FCh    98h *        ../..x..   Toshiba T1910CS
  1087.  FCh    99h        ../..x..   Toshiba T4700CS
  1088.  FCh    9Bh    V2.30    01/31x94   Toshiba T4700CT
  1089.  FCh    9Bh    V2.50    03/22x94   Toshiba T4700CT   /320
  1090.  FCh    9Ch    V1.30    01/11x94   Toshiba T1950CT   /320
  1091.  FCh    9Dh *        ../..x..   Toshiba T1950
  1092.  FCh    9Dh *        ../..x..   Toshiba T1950CS
  1093.  FCh    9Eh *    V1.20    12/25x93   Toshiba T3400     /120
  1094.  FCh    9Eh *                   Toshiba T3400CT
  1095. Note:    BIOS version numbers and dates may vary, esp. due to harddisk upgrades
  1096.     [*] These models have monochrome and color versions which can only be
  1097.       distinguished with INT 42/AX=7503h
  1098. --------B-15C1-------------------------------
  1099. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  1100.     AH = C1h
  1101. Return: CF set on error
  1102.     CF clear if successful
  1103.         ES = segment of data area
  1104. SeeAlso: AH=04h"ABIOS"
  1105. --------M-15C200-----------------------------
  1106. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  1107.     AX = C200h
  1108.     BH = new state
  1109.         00h disabled
  1110.         01h enabled
  1111. Return: CF set on error
  1112.     AH = status (see #0334)
  1113.  
  1114. (Table 0334)
  1115. Values for pointing device function status:
  1116.  00h    successful
  1117.  01h    invalid function
  1118.  02h    invalid input
  1119.  03h    interface error
  1120.  04h    need to resend
  1121.  05h    no device handler installed
  1122. --------M-15C201-----------------------------
  1123. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  1124.     AX = C201h
  1125. Return: CF set on error
  1126.         AH = status (see #0334)
  1127.     CF clear if successful
  1128.         BH = device ID
  1129.         BL = value returned by attached device after reset
  1130.         AAh if device is a mouse
  1131. Note:    after successful completion of this call, the pointing device is set
  1132.       as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
  1133.       scaling 1:1, unchanged data package size
  1134. SeeAlso: INT 33/AX=0000h
  1135. --------M-15C202-----------------------------
  1136. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  1137.     AX = C202h
  1138.     BH = sampling rate
  1139.         00h 10/second
  1140.         01h 20/second
  1141.         02h 40/second
  1142.         03h 60/second
  1143.         04h 80/second
  1144.         05h 100/second
  1145.         06h 200/second
  1146. Return: CF set on error
  1147.         AH = status (see #0334)
  1148. SeeAlso: INT 33/AX=001Ch
  1149. --------M-15C203-----------------------------
  1150. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  1151.     AX = C203h
  1152.     BH = resolution (see #0335)
  1153. Return: CF set on error
  1154.         AH = status (see #0334)
  1155.  
  1156. (Table 0335)
  1157. Values for pointing device resolution:
  1158.  00h    one count per mm
  1159.  01h    two counts per mm
  1160.  02h    four counts per mm
  1161.  03h    eight counts per mm
  1162. --------M-15C204-----------------------------
  1163. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  1164.     AX = C204h
  1165. Return: CF set on error
  1166.         AH = status (see #0334)
  1167.     CF clear if successful
  1168.         BH = device ID
  1169. --------M-15C205-----------------------------
  1170. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  1171.     AX = C205h
  1172.     BH = data package size (1 - 8 bytes)
  1173. Return: CF set on error
  1174.         AH = status (see #0334)
  1175. Note:    the pointing device is set as follows: disabled, 100 Hz sample rate,
  1176.       resolution 4 counts/mm, scaling 1:1
  1177. SeeAlso: AX=C201h
  1178. --------M-15C206-----------------------------
  1179. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
  1180.     AX = C206h
  1181.     BH = subfunction
  1182.         00h return device status
  1183.         Return: BL = pointing device status (see #0336)
  1184.             CL = resolution (see #0335)
  1185.             DL = sample rate, reports per second
  1186.         01h set scaling at 1:1
  1187.         02h set scaling at 2:1
  1188. Return: CF set on error
  1189.         AH = status (see #0334)
  1190.  
  1191. Bitfields for pointing device status:
  1192. Bit(s)    Description    (Table 0336)
  1193.  0    right button pressed
  1194.  1    reserved
  1195.  2    left button pressed
  1196.  3    reserved
  1197.  4    0 if 1:1 scaling, 1 if 2:1 scaling
  1198.  5    device enabled
  1199.  6    0 if stream mode, 1 if remote mode
  1200.  7    reserved
  1201. --------M-15C207-----------------------------
  1202. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  1203.     AX = C207h
  1204.     ES:BX -> FAR user device handler
  1205. Return: CF set on error
  1206.         AH = status (see #0334)
  1207. Note:    when the subroutine is called, it is passed the following values on
  1208.       the stack; the handler should return with a FAR return without
  1209.       popping the stack:
  1210.         WORD 1: status (see #0337)
  1211.         WORD 2: X data (high byte = 00h)
  1212.         WORD 3: Y data (high byte = 00h)
  1213.         WORD 4: 0000h
  1214. SeeAlso: INT 33/AX=000Ch
  1215.  
  1216. Bitfields for pointing device status:
  1217. Bit(s)    Description    (Table 0337)
  1218.  15-8    reserved (0)
  1219.  7    Y data overflowed
  1220.  6    X data overflowed
  1221.  5    Y data is negative
  1222.  4    X data is negative
  1223.  3    reserved (1)
  1224.  2    reserved (0)
  1225.  1    right button pressed
  1226.  0    left button pressed
  1227. --------B-15C3------------------------------
  1228. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  1229.     AH = C3h
  1230.     AL = function
  1231.         00h disable PS/2 watchdog timer
  1232.         01h enable PS/2 watchdog timer
  1233.         BX = timer counter (0001h-00FFh)
  1234.         02h disable Gearbox system
  1235.         03h enable Gearbox system
  1236. Return: CF set on error
  1237.     CF clear if successful
  1238. Note:    the watchdog timer generates an NMI
  1239. SeeAlso: INT 21/AH=2Bh/CX=6269h/DX=742Dh
  1240. --------B-15C4-------------------------------
  1241. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  1242.     AH = C4h
  1243.     AL = subfunction
  1244.         00h return base POS register address
  1245.         01h enable selected slot for setup
  1246.         BL = slot number (1 to 8)
  1247.         02h disable setup for all slots (enable adapter)
  1248. Return: CF set on error
  1249.     DX = base POS register address (if subfunction 00h)
  1250. SeeAlso: AH=C6h
  1251. --------B-15C5-------------------------------
  1252. INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
  1253.     AH = C5h
  1254.     AL = interrupt being invoked
  1255.         01h INT 19
  1256.         02h INT 14
  1257.         03h INT 16
  1258.         04h INT 40 (floppy INT 13)
  1259.         05h INT 17
  1260.         06h INT 10
  1261.         07h INT 12
  1262.         08h INT 11
  1263.         09h INT 1A
  1264. Return: all registers except AX must be preserved
  1265. Notes:    called as the very first action of the indicated ROM BIOS interrupt
  1266.       handlers on the PS/2 Models 30/286, 50Z, and 95
  1267.     default handler does nothing and returns CF clear for the above
  1268.       subfunctions, CF set and AH=86h for all other subfunctions
  1269.     value of AX passed to the original interrupt handler is pushed on
  1270.       stack immediately prior to call
  1271. --------B-15C6-------------------------------
  1272. INT 15 U - later PS/2 models - GET POS DATA
  1273.     AH = C6h
  1274.     ???
  1275. Return: ???
  1276. Notes:    this function is referenced by name and number in some IBM BIOS manuals
  1277.     IBM reports that "there are a number of problems with this call" and
  1278.       does not recommend its use.
  1279. SeeAlso: AH=C4h
  1280. --------B-15C7-------------------------------
  1281. INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
  1282.     AH = C7h
  1283.     DS:SI -> user supplied memory map table (see #0338)
  1284. Note:    call AH=C0h and examine bit 4 of feature byte 2 to check if this
  1285.       function is supported
  1286. Return: CF set on error, clear if successful
  1287. SeeAlso: AH=C0h,AH=C9h,AH=D1h
  1288.  
  1289. Format of memory-map table structure:
  1290. Offset    Size    Description    (Table 0338)
  1291.  00h    WORD    length of table (excluding this word)
  1292.  02h    DWORD    local memory between 1M and 16M, in 1K blocks
  1293.  06h    DWORD    local memory between 16M and 4G, in 1K blocks
  1294.  0Ah    DWORD    system memory between 1M and 16M, in 1K blocks
  1295.  0Eh    DWORD    system memory between 16M and 4G, in 1K blocks
  1296.  12h    DWORD    cacheable memory between 1M and 16M, in 1K blocks
  1297.  16h    DWORD    cacheable memory between 16M and 4G, in 1K blocks
  1298.  1Ah    DWORD    1K blocks before start of non-system memory between 1M and 16M
  1299.  1Eh    DWORD    1K blocks before start of non-system memory between 16M and 4G
  1300.  22h  2 DWORDs    reserved
  1301. --------B-15C8-------------------------------
  1302. INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
  1303.     AH = C8h
  1304.     AL = function
  1305.         00h disable cache or (90 and 95) disable cache L1
  1306.         01h enable cache or (90 and 95) enable cache L1
  1307.         ---models 90 and 95 only---
  1308.         02h disable cache L2
  1309.         03h enable cache L2
  1310.         04h disable both caches
  1311.         05h enable both caches
  1312.         06h return status of both caches
  1313.         07h-FFh Reserved
  1314. Return: CF set on error
  1315.     CF clear if successful
  1316.         AH = status (see #0339)
  1317.     For subfunction 06h only:
  1318.         BH = status of cache L2
  1319.         00h enabled
  1320.         01h disabled or not installed
  1321.         BL = status of cache L1 (same codes as BH)
  1322. Notes:     supported by at least PS/2 70, 70/486, 80-A21, 90, 95
  1323.     call AH=C0h and examine bit 3 of feature byte 2 to check if this
  1324.       function is supported.
  1325.     on a 486 system, any external caches must be disabled when the
  1326.       on-chip cache (L1) is disabled.
  1327. SeeAlso: AH=C0h
  1328.  
  1329. (Table 0339)
  1330. Values for status:
  1331.  00h    operation successful
  1332.  01h    function choice (in AL) is invalid
  1333.  02h    NVRAM data is invalid
  1334.  03h    cache test error
  1335.  04h    (90 and 95 only) cannot perform operation requested due to state of
  1336.       other cache (see note above)
  1337.  05h    no L2 cache is present
  1338.  09h    CPU in protected mode
  1339. --------B-15C9-------------------------------
  1340. INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
  1341.     AH = C9h
  1342.     AL = 10h (may be required on some non-PS BIOSes)
  1343. Return: CF clear if successful
  1344.         AH = 00h
  1345.         CH = CPU type (see #0340)
  1346.         CL = mask revision (stepping level) (see #0341)
  1347.     CF set on error
  1348.         AH = status (80h,86h = function not supported)
  1349. Notes:    the BIOS must save DX at startup in order to be able to support this
  1350.       call; PS/2 Models 56, 57, 90, and 95 are known to support it
  1351.     the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
  1352.  
  1353. (Table 0340)
  1354. Values for CPU type:
  1355.  03h    80386DX or clone
  1356.  04h    80486
  1357.  23h    80386SX or clone
  1358.  A3h    IBM 386SLC
  1359.  A4h    IBM 486SLC
  1360.  
  1361. (Table 0341)
  1362. Values for stepping level:
  1363. ---80386---
  1364.  03h    B1
  1365.  05h    D0
  1366.  08h    D1/D2/E1
  1367. ---80386SX---
  1368.  04h    A0
  1369.  05h    B
  1370.  08h    C/D1
  1371. ---80486---
  1372.  00h    A0
  1373.  01h    B2
  1374.  03h    B3
  1375.  04h    B4
  1376.  05h    B5
  1377.  06h    B6
  1378.  07h    C1
  1379. --------B-15CA-------------------------------
  1380. INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
  1381.     AH = CAh
  1382.     AL = function
  1383.         00h read CMOS
  1384.         Return: CL = value of CMOS location
  1385.         01h write CMOS
  1386.         CL = new value for CMOS location
  1387.     BL = CMOS location (0Eh-3Fh)
  1388. Return: CF clear if successful
  1389.         AH = 00h
  1390.     CF set on error
  1391.         AH = error code (see #0342)
  1392. Note:    writes do not update the CMOS checksum
  1393.  
  1394. (Table 0342)
  1395. Values for CMOS read/write error code:
  1396.  01h    CMOS lost power or has invalid checksum
  1397.  03h    specified location out of range (too high)
  1398.  04h    specified location out of range (too low)
  1399.  80h    unsupported function (PC)
  1400.  86h    unsupported function (XT)
  1401. --------B-15CB-------------------------------
  1402. INT 15 U - PS/2 Model 95 - RESERVED
  1403.     AH = CBh
  1404.     ???
  1405. Return: ???
  1406. --------B-15CC-------------------------------
  1407. INT 15 U - PS/2 Model 95 - RESERVED
  1408.     AH = CCh
  1409.     ???
  1410. Return: ???
  1411. --------V-15CCCC-----------------------------
  1412. INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
  1413.     AX = CCCCh
  1414. Return: AX = ABCDh if installed
  1415. Note:    supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
  1416.       older versions have the string "VCHAD" 2 bytes after the address of
  1417.       the INT 15 handler which is hooked by all versions for the SysReq key
  1418. SeeAlso: AH=85h
  1419. --------B-15CD-------------------------------
  1420. INT 15 U - PS/2 Model 95 - RESERVED
  1421.     AH = CDh
  1422.     ???
  1423. Return: ???
  1424. --------B-15CE--BL00-------------------------
  1425. INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
  1426.     AH = CEh
  1427.     BL = 00h-0Eh arbitration level to be allocated
  1428.          0Fh-FFh reserved
  1429.     AL = option byte
  1430.         bit 7-1: reserved (0)
  1431.         bit 0: 0 = need DMA channel for arbitration level requested
  1432.            1 = no channel required for arbitration level
  1433. Return: CF set on error
  1434.         AH = status (80h,86h = function not supported)
  1435.     CF clear on success
  1436.         AL = channel number
  1437.         00h-07h channel number allocated for the arbiration level
  1438.         08h-FEh reserved
  1439.         FFh    no channel requested for arbitration level
  1440.         AH = status (see #0343)
  1441. Notes:     arbitration level 00h has the highest priority, 0Eh the lowest
  1442.      to perform a DMA transfer operation, be sure to call this function
  1443.        first, and call AH=CFh afterward.  Failure to use this function
  1444.        can cause unpredictable results.
  1445. SeeAlso: AH=CFh
  1446.  
  1447. (Table 0343)
  1448. Values for DMA arbitration status:
  1449.  00h    success
  1450.  01h    arbitration level not available
  1451.  02h    channel not available
  1452.  03h    invalid arbitration level passed
  1453. --------B-15CF-------------------------------
  1454. INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
  1455.     AH = CFh
  1456.     BL = arbitration level to be deallocated (see AH=CEh)
  1457. Return: CF set on error
  1458.         AH = status (80h,86h = function not supported)
  1459.     CF clear on success
  1460.         AH = status
  1461.         00h success
  1462.         04h arbitration level not allocated
  1463. SeeAlso: AH=CEh
  1464. --------B-15D0-------------------------------
  1465. INT 15 - later PS/2s - RESERVED
  1466.     AH = D0h
  1467.     ???
  1468. Return: ???
  1469. --------B-15D100DX0000-----------------------
  1470. INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
  1471.     AX = D100h
  1472.     DX = 0000h (reserved, must set to 0)
  1473. Return: BL = size of one DDT entry, in bytes
  1474.     CX = number of DDT entries
  1475.     AH = return code (see #0344)
  1476.     CF set on error
  1477.     CF clear on success
  1478. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
  1479.  
  1480. (Table 0344)
  1481. Values for return code:
  1482.  00h    success
  1483.  01h    requested DDT entry not found
  1484.  02h    DDT data not valid
  1485.  86h    function not supported
  1486. --------B-15D101-----------------------------
  1487. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
  1488.     AX = D101h
  1489.     BX = number of requested entry (starting with 1)
  1490.     DX = 0000h (reserved, must be set to 0)
  1491.     ES:DI -> buffer to contain DDT entry (see #0345)
  1492. Return:    AH = return code (see #0344)
  1493.     CF set on error
  1494.     CF clear on success
  1495.         ES:DI buffer filled with DDT entry
  1496. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
  1497.  
  1498. Format of Device Descriptor Table (DDT):
  1499. Offset    Size    Description    (Table 0345)
  1500.  00h    BYTE    bits 7-4: reserved (set to 0)
  1501.         bits 3-0: slot of device (0 = system board)
  1502.  01h    BYTE    bits 7-4: second interrupt for this device (0 = none)
  1503.         bits 3-0: first interrupt for this device (0 = none)
  1504.  02h    BYTE    bits 7-4: second arbitration level for this device
  1505.         bits 3-0: first arbitration level for this device
  1506.  03h    WORD    DDT indicators (see #0346)
  1507.  05h    BYTE    reserved (0)
  1508.  06h    WORD    device ID (0 = none)
  1509.  08h    WORD    starting address of first  I/O block (0 = none)
  1510.  0Ah    WORD    starting address of second I/O block (0 = none)
  1511.  OCh    WORD    starting address of third  I/O block (0 = none)
  1512.  OEh    DWORD    start of first non-system memory block (0 = none)
  1513.  12h    WORD    size of first non-system memory block (in kilobytes)
  1514.  14h    DWORD    start of second non-system memory block (0 = none)
  1515.  18h    WORD    size of second non-system memory block (in kilobytes)
  1516.  1Ah    BYTE    implementation identifier of the device
  1517.  1Bh    BYTE    implementation revision level of the device
  1518. Note:    I/O block addresses and non-system memory addresses are listed in
  1519.       ascending order in each DDT entry.
  1520.  
  1521. Bitfields for DDT indicators:
  1522. Bit(s)    Description    (Table 0346)
  1523.  15    reserved (0)
  1524.  14    second arbitration level exists
  1525.  13    first arbitration level exists
  1526.  12    serial interface is RS-422
  1527.  11    not address limited
  1528.  10    DMA channel used
  1529.  9    second arbitration level can be shared
  1530.  8    first arbitration level can be shared
  1531.  7-0    reserved (0)
  1532. --------B-15D102-----------------------------
  1533. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
  1534.     AX = D102h
  1535.     BX = entry number at which to start searching
  1536.     CX = requested I/O port address
  1537.     DX = 0000h (reserved, must be set to 0)
  1538.     ES:DI -> buffer to contain DDT entry (see #0345)
  1539. Return:    AH = return code (see #0344)
  1540.     BX = DDT entry number where I/O port was found, or total entries
  1541.          plus 1 if port was not found.
  1542.     CF set on error
  1543.     CF clear on success
  1544.         ES:DI buffer filled with DDT entry
  1545. Desc:    the DDT is searched from the specified entry for the I/O port in CX,
  1546.       and the first entry in which it is found is returned
  1547. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
  1548. --------B-15D103DX0000-----------------------
  1549. INT 15 - later PS/2s - RETURN ENTIRE DDT
  1550.     AX = D103h
  1551.     DX = 0000h (reserved, must be set to 0)
  1552.     ES:DI -> buffer to contain DDT entry (see #0345)
  1553. Return:    AH = return code (see #0344)
  1554.     CF set on error
  1555.     CF clear on success
  1556.         ES:DI buffer filled with DDT entry
  1557. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
  1558. --------B-15D104-----------------------------
  1559. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
  1560.     AX = D104h
  1561.     BX = entry number at which to start searching
  1562.     CX = requested device ID
  1563.     DX = 0000h (reserved, must be set to 0)
  1564.     ES:DI -> buffer to contain DDT entry (see #0345)
  1565. Return:    AH = return code (see #0344)
  1566.     BX = DDT entry number where device ID was found, or total entries
  1567.           plus 1 if port was not found.
  1568.     CF set on error
  1569.     CF clear on success
  1570.         ES:DI buffer filled with DDT entry
  1571. Desc:    the DDT is searched from the specified entry for the device ID in CX,
  1572.       and the first entry in which it is found is returned.
  1573. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
  1574. --------B-15D2-------------------------------
  1575. INT 15 - later PS/2s - RESERVED
  1576.     AH = D2h
  1577.     ???
  1578. Return: ???
  1579. --------B-15D3-------------------------------
  1580. INT 15 - later PS/2s - RESERVED
  1581.     AH = D3h
  1582.     ???
  1583. Return: ???
  1584. --------B-15D4-------------------------------
  1585. INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
  1586.     AH = D4h
  1587.     DL = logical fixed disk drive number
  1588. Return:    AH = return code (see #0347)
  1589.     CF set on error
  1590.     CF clear on success
  1591.         AL = physical fixed disk drive number
  1592.  
  1593. (Table 0347)
  1594. Values for return code:
  1595.  00h    success
  1596.  01h    specified logical drive number is invalid
  1597.  80h    function not supported (on PCjr and PC)
  1598.  86h    function not supported
  1599. --------B-15D5-------------------------------
  1600. INT 15 - later PS/2s - RESERVED
  1601.     AH = D5h
  1602.     ???
  1603. Return: ???
  1604. --------B-15D600BL00-------------------------
  1605. INT 15 - later PS/2s - READ BOOT DEVICE ID
  1606.     AX = D600h
  1607.     BL = 00h
  1608.     DX = device ID
  1609. Return: CF clear if successful
  1610.         AH = 00h
  1611.     CF set on error
  1612.         AH = status (86h for function not supported)
  1613. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
  1614. --------B-15D600BL01-------------------------
  1615. INT 15 - later PS/2s - WRITE BOOT DEVICE ID
  1616.     AX = D600h
  1617.     BL = 01h
  1618.     DX = device ID
  1619. Return: CF clear on success
  1620.         AH = 00h
  1621.     CF set on error
  1622.         AH = status (86h for function not supported)
  1623. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
  1624. --------B-15D601BL00-------------------------
  1625. INT 15 - later PS/2s - READ BOOT DEVICE KEY
  1626.     AX = D601h
  1627.     BL = 00h
  1628.     DX = device ID
  1629. Return: CF clear on success
  1630.         AH = 00h
  1631.     CF set on error
  1632.         AH = status (86h for function not supported)
  1633. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
  1634. --------B-15D601BL01-------------------------
  1635. INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
  1636.     AX = D601h
  1637.     BL = 01h
  1638.     DX = device ID
  1639. Return: CF clear on success
  1640.         AH = 00h
  1641.     CF set on error
  1642.         AH = status (86h for function not supported)
  1643. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
  1644. --------B-15D602-----------------------------
  1645. INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
  1646.     AX = D602h
  1647. Return: CF clear on success
  1648.         AH = 00h
  1649.         AL = status of reference-partition boot request
  1650.         00h boot not requested
  1651.         01h boot requested
  1652.     CF set on error
  1653.         AH = status (86h for function not supported)
  1654. SeeAlso: AX=D601h/BL=00h
  1655. --------X-15D800-----------------------------
  1656. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  1657.     AX = D800h
  1658.     CL = slot number (including embedded and virtual)
  1659. Return: CF clear if successful
  1660.         AH = 00h
  1661.     CF set on error
  1662.         AH = error code (80h,82h,83h,86h,87h)(see #0349)
  1663.     AL = bit flags (see #0348)
  1664.     BH = major revision level of configuration utility
  1665.     BL = minor revision level of configuration utility
  1666.     CX = checksum of configuration file
  1667.     DH = number of device functions
  1668.     DL = combined function information byte
  1669.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  1670. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  1671. SeeAlso: AX=D801h,AX=D804h
  1672.  
  1673. Bitfields for EISA AL bit flags:
  1674. Bit(s)    Description    (Table 0348)
  1675.  7    set if duplicate IDs
  1676.  6    set if product ID readable
  1677.  4,5    slot type (00=expansion, 01=embedded, 10=virtual device)
  1678.  0-3    duplicate ID number if bit 7 set
  1679.  
  1680. (Table 0349)
  1681. Values for EISA error code:
  1682.  80h    invalid slot number
  1683.  81h    invalid function number
  1684.  82h    EISA CMOS corrupt
  1685.  83h    empty slot
  1686.  84h    error clearing CMOS
  1687.  85h    EISA CMOS is full
  1688.  86h    invalid BIOS-FW function call
  1689.  87h    invalid system configuration
  1690.  88h    config utility version not supported
  1691. --------X-15D801-----------------------------
  1692. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  1693.     AX = D801h
  1694.     CH = function number to read
  1695.     CL = slot number (including embedded and virtual)
  1696.     DS:SI -> 320-byte buffer for standard configuration data block
  1697. Return: CF clear if successful
  1698.         AH = 00h
  1699.         DS:SI buffer filled
  1700.     CF set on error
  1701.         AH = error code (80h-83h,86h,87h) (see #0349)
  1702.     BX destroyed
  1703. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  1704. --------X-15D802-----------------------------
  1705. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  1706.     AX = D802h
  1707.     BH = EISA config utility major revision level
  1708.     BL = EISA config utility minor revision level
  1709. Return: CF clear if successful
  1710.         AH = 00h
  1711.     CF set on error
  1712.         AH = error code (84h,86h,88h) (see #0349)
  1713. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  1714. SeeAlso: AX=D803h
  1715. --------X-15D803-----------------------------
  1716. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  1717.     AX = D803h
  1718.     CX = length of data structure (0000h = empty slot)
  1719.         includes two bytes for config file checksum
  1720.     DS:SI -> configuration data
  1721. Return: CF clear if successful
  1722.         AH = 00h
  1723.     CF set on error
  1724.         AH = error code (84h-86h) (see #0349)
  1725. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  1726. SeeAlso: AX=D802h
  1727. --------X-15D804-----------------------------
  1728. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  1729.     AX = D804h
  1730.     CL = slot number (including embedded and virtual)
  1731. Return: CF clear if successful
  1732.         AH = 00h
  1733.     CF set on error
  1734.         AH = error code (80h,83h,86h) (see #0349)
  1735.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  1736. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  1737. SeeAlso: AX=D800h
  1738. --------b-15D820-----------------------------
  1739. INT 15 - Compaq LTE Lite - GET ???
  1740.     AX = D820h
  1741.     DS:SI -> 17-byte buffer for ???
  1742. Return: DS:SI buffer filled (first byte is length of remaining data, unless
  1743.       it is greater than 10h, in which case the second byte is 00h and no
  1744.       other data is returned)
  1745. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  1746.       486/486c/486cx and recent DESKPRO/i ROMs
  1747. SeeAlso: AX=D821h
  1748. --------b-15D821-----------------------------
  1749. INT 15 - Compaq LTE Lite - SET ???
  1750.     AX = D821h
  1751.     DS:SI -> counted string (should not be more than 16 bytes)
  1752. Return: AH = 00h
  1753. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  1754.       486/486c/486cx and recent DESKPRO/i ROMs
  1755. SeeAlso: AX=D820h
  1756. --------b-15D822BL00-------------------------
  1757. INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
  1758.     AX = D822h
  1759.     BL = 00h
  1760.     CX = size of buffer or 0000h to retrieve required buffer size
  1761.     DS:SI -> buffer for ??? (if CX nonzero)
  1762. Return: CF clear if successful
  1763.         AH = 00h
  1764.         DH = 08h
  1765.         CX = required buffer size to retrieve all data (if CX=0 on entry)
  1766.         DS:SI buffer filled (if CX nonzero on entry)
  1767.     CF set on error (BL nonzero)
  1768.         AH = 86h
  1769. --------b-15D823-----------------------------
  1770. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  1771.     AX = D823h
  1772.     BL = subfunction??? (00h or 80h)
  1773.     BH = ???
  1774.     DS:SI -> buffer for ??? (see #0350)
  1775. Return: CF clear if successful
  1776.         AH = 00h
  1777.         DH = 08h
  1778.         DL = ???
  1779.     CF set on error
  1780.         AH = error code
  1781.         86h BL neither 00h nor 80h
  1782.         87h ???
  1783.  
  1784. Format of Compaq EISA buffer:
  1785. Offset    Size    Description    (Table 0350)
  1786.  00h    BYTE    ???
  1787.  01h    WORD    ???
  1788.  03h    BYTE    ???
  1789.  04h    WORD    ???
  1790.  06h    WORD    ???
  1791.     ???
  1792. ----------15D824-----------------------------
  1793. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  1794.     AX = D824h
  1795.     CX = ???
  1796.     DS:SI -> ASCIZ string containing ???
  1797. Return: CF clear if successful
  1798.         AH = 00h
  1799.         CX = ???
  1800.     CF set on error
  1801.         AH = error code
  1802.         87h ??? failed
  1803.         88h ???
  1804. Note:    these functions are only available if ??? from keyboard controller
  1805.       command C0h
  1806. ----------15D825-----------------------------
  1807. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  1808.     AX = D825h
  1809.     CX = ???
  1810.     SI = ???
  1811.     DI = ???
  1812.     ???
  1813. Return: CF clear if successful
  1814.         AH = 00h
  1815.         CX = ???
  1816.     CF set on error
  1817.         AH = error code
  1818.         87h ??? failed
  1819.         88h ???
  1820.             CX = ???
  1821. Note:    these functions are only available if ??? from keyboard controller
  1822.       command C0h
  1823. ----------15D826-----------------------------
  1824. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  1825.     AX = D826h
  1826.     BX = ???
  1827.     CX = size of buffer in bytes
  1828.     DS:SI -> buffer for ???
  1829.     ???
  1830. Return: CF clear if successful
  1831.         AH = 00h
  1832.         CX = ???
  1833.     CF set on error
  1834.         AH = error code
  1835.         87h ??? failed
  1836.         88h ???
  1837. Note:    these functions are only available if ??? from keyboard controller
  1838.       command C0h
  1839. --------X-15D8-------------------------------
  1840. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  1841.     AH = D8h
  1842.     AL = 80h to 84h
  1843.     other registers as appropriate for AL=00h to 04h
  1844. Return: as appropriate for AL=00h to 04h
  1845. Note:    these functions are identical to AX=D800h to D804h, except that they
  1846.       should be called when using 32-bit CS addressing mode (pointers use
  1847.       ESI rather than SI as offset) instead of 16-bit addressing mode
  1848. SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
  1849. --------b-15D8-------------------------------
  1850. INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
  1851.     AH = D8h
  1852.     AL = A0h to A6h
  1853.     other registers as appropriate for AL=20h to 26h
  1854. Return: as appropriate for AL=20h to 26h
  1855. Note:    these functions are identical to AX=D820h to D826h, except that they
  1856.       should be called when using 32-bit CS addressing mode
  1857. --------Q-15DE00-----------------------------
  1858. INT 15 - DESQview - GET PROGRAM NAME
  1859.     AX = DE00h
  1860. Return: AX = offset into DESQVIEW.DVO of program most recently selected from
  1861.         the "Switch Windows" menu (see #0351)
  1862. Note:    always returns AX=0000h under DESQview/X
  1863. SeeAlso: AX=DE07h
  1864.  
  1865. Format of program entry in DESQVIEW.DVO:
  1866. Offset    Size    Description    (Table 0351)
  1867.  00h    BYTE    length of name (FFh if end of file)
  1868.  01h  N BYTEs    name
  1869.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  1870.     BYTE    program type
  1871.         00h normal program
  1872.         04h divider
  1873.         80h Delete a Program
  1874.         81h Change a Program
  1875.     WORD    ??? apparently always 0000h
  1876. --------Q-15DE01-----------------------------
  1877. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  1878.     AX = DE01h
  1879. Return: nothing
  1880. Notes:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  1881.     NOP for DESQview/X
  1882. --------Q-15DE02-----------------------------
  1883. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  1884.     AX = DE02h
  1885. Return: nothing
  1886. Note:    this call is a NOP in DV 2.x
  1887. SeeAlso: AX=DE03h
  1888. --------Q-15DE03-----------------------------
  1889. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  1890.     AX = DE03h
  1891. Return: AX = ??? for current window
  1892.     BX = ??? for current window
  1893. Note:    this call is a NOP in DV 2.x
  1894. SeeAlso: AX=DE02h
  1895. --------Q-15DE04-----------------------------
  1896. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  1897.     AX = DE04h
  1898. Return: BX = bytes of common memory available
  1899.     CX = largest block available
  1900.     DX = total common memory in bytes
  1901. SeeAlso: AX=DE05h,AX=DE06h
  1902. --------Q-15DE05-----------------------------
  1903. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  1904.     AX = DE05h
  1905. Return: BX = KB of memory available
  1906.     CX = largest block available
  1907.     DX = total conventional memory in KB
  1908. SeeAlso: AX=DE04h,AX=DE06h
  1909. --------Q-15DE06-----------------------------
  1910. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  1911.     AX = DE06h
  1912. Return: BX = KB of expanded memory available
  1913.     CX = largest block available
  1914.     DX = total expanded memory in KB
  1915. SeeAlso: AX=DE04h,AX=DE05h
  1916. --------Q-15DE07-----------------------------
  1917. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  1918.     AX = DE07h
  1919. Return: AX = number of program as it appears on the "Switch Windows" menu
  1920. Note:    this API call may be made from a hardware interrupt handler
  1921. SeeAlso: AX=DE00h
  1922. --------Q-15DE08-----------------------------
  1923. INT 15 - DESQview - GET ???
  1924.     AX = DE08h
  1925. Return: AX = 0000h if ??? is not set to the current task
  1926.          0001h if ??? is set to the current task
  1927. --------Q-15DE09-----------------------------
  1928. INT 15 - DESQview - UNIMPLEMENTED
  1929.     AX = DE09h
  1930. Return: nothing (NOP in DV 1.x and 2.x)
  1931. --------Q-15DE0A-----------------------------
  1932. INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  1933.     AX = DE0Ah
  1934.     BL = character
  1935. Return: character displayed, next call will display in next position (which
  1936.     wraps back to the start of the line if off the right edge of screen)
  1937. Notes:    displays character on bottom line of *physical* screen, regardless
  1938.       of current size of window (even entirely hidden)
  1939.     does not know about graphics display modes, just pokes the characters
  1940.       into display memory
  1941.     this API call may be made from a hardware interrupt handler
  1942. SeeAlso: AX=1003h
  1943. --------Q-15DE0B-----------------------------
  1944. INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  1945.     AX = DE0Bh
  1946.     BL = API level minor version number
  1947.     BH = API level major version number
  1948. Return: AX = maximum API level (AH = major, AL = minor)
  1949. Notes:    if the requested API level is greater than the version of DESQview, a
  1950.       "You need a newer version" error window is popped up
  1951.     the API level defaults to 1.00, and is inherited by child tasks
  1952. --------Q-15DE0C-----------------------------
  1953. INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  1954.     AX = DE0Ch
  1955.     BX = number of bytes
  1956. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  1957. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  1958.       system memory
  1959. SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
  1960. --------Q-15DE0D-----------------------------
  1961. INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  1962.     AX = DE0Dh
  1963.     ES:DI -> previously allocated block
  1964. Return: nothing
  1965. SeeAlso: AX=1002h,AX=DE0Ch
  1966. --------Q-15DE0E-----------------------------
  1967. INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
  1968.     AX = DE0Eh
  1969.     ES:DI -> name to find (see #0352)
  1970.     CX = length of name
  1971. Return: BX = 0000h not found
  1972.          0001h found
  1973.         DS:SI = object handle
  1974. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1200h"GETNAME"
  1975.  
  1976. (Table 0352)
  1977. Values for special DESQview mailbox names:
  1978.  "COM1" ... "COM4"    RBcomm using COM1 ... COM4
  1979.  "DESQview/X Help Engine"
  1980.  "DESQview/X Network Server"  Network Manager
  1981.  "DESQview X Server0"    X-Windows server
  1982.  "DESQview X Server7"    X-Windows printing service
  1983.  "INBOX"        DESQview/X LPD requests
  1984.  "OUTBOX"        DESQview/X LPD responses
  1985.  "WAITBOX"        semaphore to synchronize DESQview/X LPD communications
  1986.  "_DVNM_"        DV/X v1.10 network manager
  1987. --------Q-15DE0F-----------------------------
  1988. INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
  1989.     AX = DE0Fh
  1990. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  1991. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  1992.     enables an additional mouse mode
  1993. --------Q-15DE10-----------------------------
  1994. INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  1995.     AX = DE10h
  1996.     BH = scan code
  1997.     BL = character
  1998. Return: nothing
  1999. Notes:    a later read will get the keystroke as if it had been typed by the user
  2000.     multiple pushes are read last-in first-out
  2001.     if a script exists for the pushed key in the current application, the
  2002.       script will be executed
  2003.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  2004. SeeAlso: INT 16/AH=05h
  2005. --------Q-15DE11BL00-------------------------
  2006. INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
  2007.     AX = DE11h
  2008.     BL = 00h      viewport will not move automatically
  2009.          nonzero  viewport will move to keep cursor visible (default)
  2010. Return: nothing
  2011. --------Q-15DE12BX0000-----------------------
  2012. INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  2013.     AX = DE12h
  2014.     BX = 0000h    select normal style (linefeed only moves down)
  2015.          nonzero  select C style (linefeed moves to start of next line)
  2016. Return: nothing
  2017. Note:    set on a per-task basis, and inherited from the parent task
  2018. --------Q-15DE13-----------------------------
  2019. INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
  2020.     AX = DE13h
  2021. Return: BX = number of calls to BEGINC or ENTERC
  2022.           (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
  2023.           (see INT 15/AX=101Ch)
  2024. Note:    this API call may be made from within a hardware interrupt handler
  2025. SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
  2026. --------Q-15DE14-----------------------------
  2027. INT 15 - DESQview v2.20+ - GET OBJECT TYPE
  2028.     AX = DE14h
  2029.     ES:DI -> object
  2030. Return: BL = 00h not an object
  2031.          08h window or task
  2032.          09h mailbox
  2033.          0Ah keyboard
  2034.          0Bh timer
  2035.          0Ch objectq
  2036.          0Fh pointer
  2037.          10h panel
  2038. SeeAlso: AX=1016h
  2039. --------Q-15DE15-----------------------------
  2040. INT 15 - DESQview v2.20+ - SET ERROR HANDLING
  2041.     AX = DE15h
  2042.     BL = error handling mode
  2043.         00h post system error on all error conditions
  2044.         01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  2045.         messages sent to mailboxes which fail due to lack of system
  2046.         or common memory
  2047.         02h (v2.26+) same as 01h, but also return null pointer for GETMEM
  2048.         calls which fail due to lack of system memory
  2049. Return: nothing
  2050. SeeAlso: AX=DE0Ch,AX=DE16h
  2051. --------Q-15DE16-----------------------------
  2052. INT 15 - DESQview v2.20+ - GET ERROR HANDLING
  2053.     AX = DE16h
  2054. Return: BL = current mode
  2055.         00h always post system error
  2056.         01h return carry flag set on failed mailbox writes
  2057.         02h return CF set on failed mailbox writes and NULL on failed
  2058.         GETMEM calls
  2059. SeeAlso: AX=DE15h
  2060. --------Q-15DE17-----------------------------
  2061. INT 15 - DESQview v2.20-2.25 - reserved
  2062.     AX = DE17h
  2063. Return: pops up "Programming error" window
  2064. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  2065. SeeAlso: AX=1117h
  2066. --------Q-15DE17-----------------------------
  2067. INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  2068.     AX = DE17h
  2069.     BX = function
  2070.         0000h   get current mapping context without setting
  2071.         nonzero set new mapping context to BX
  2072. Return: BX = mapping context in effect before call
  2073. Notes:    mapping contexts determine conventional-memory addressability; setting
  2074.       a mapping context ensures that the associated program and data areas
  2075.       are in memory for access.  Usable by drivers, TSRs and shared
  2076.       programs.
  2077.     caller need not be running under DESQview
  2078.     this API call may be made from a hardware interrupt handler
  2079. SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
  2080. --------Q-15DE18-----------------------------
  2081. INT 15 - DESQview v2.20+ - internal - ???
  2082.     AX = DE18h
  2083.     BP = function number
  2084.         high byte must be 10h
  2085.         low byte is function
  2086.         00h set ???
  2087.             BL = ???  (00h-10h, video mode???)
  2088.             BH = value to store
  2089.         03h set ???
  2090.             BL = ??? (stored in driver)
  2091.         0Ah get ???
  2092.             ES:DI -> 18-byte buffer to hold ???
  2093. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  2094. --------Q-15DE19-----------------------------
  2095. INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  2096.     AX = DE19h
  2097.     BX = number of bytes to allocate
  2098. Return: AX = 0000h successful
  2099.         ES:DI -> allocated block
  2100.          nonzero insufficient memory
  2101. Note:    this API call may be made from within a hardware interrupt handler
  2102. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  2103. --------Q-15DE1A-----------------------------
  2104. INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  2105.     AX = DE1Ah
  2106.     ES:DI -> previously allocated block
  2107. Return:    AX = 0000h (successful)
  2108. Note:    this function may be called from within a hardware interrupt handler
  2109. SeeAlso: AX=DE0Dh,AX=DE19h
  2110. --------Q-15DE1B-----------------------------
  2111. INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  2112.     AX = DE1Bh
  2113. Return: nothing
  2114. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  2115. --------Q-15DE1C-----------------------------
  2116. INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  2117.     AX = DE1Ch
  2118. Return: nothing
  2119. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  2120.       that DOS is free
  2121.     the official documentation states that this call should be paired with
  2122.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  2123.     this API call may be made from within a hardware interrupt handler
  2124. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  2125. --------Q-15DE1D-----------------------------
  2126. INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  2127.     AX = DE1Dh
  2128.     DX = segment of handle for task to receive keystroke
  2129.     BL = character
  2130.     BH = scan code
  2131. Return: AX = 0000h if successful
  2132.        nonzero if receiver's keyboard buffer was full
  2133. Notes:    the key is treated as though the user had pressed it, ignoring any
  2134.       script which may be bound to the key, and using the current field
  2135.       table if the keyboard object is in field processing mode
  2136.     multiple PUTKEYs are seen in the order in which they are executed
  2137. SeeAlso: AX=DE10h
  2138. --------Q-15DE1E-----------------------------
  2139. INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  2140.     AX = DE1Eh
  2141. Return: CL = actual number of rows on screen
  2142.     CH = actual number of columns on screen
  2143.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  2144. Note:    this API call may be made from a hardware interrupt handler
  2145. SeeAlso: INT 10/AH=0Fh
  2146. --------Q-15DE1F-----------------------------
  2147. INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  2148.     AX = DE1Fh
  2149. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  2150. Note:    this API call may be made from within a hardware interrupt handler
  2151. SeeAlso: AX=DE13h,INT 21/AH=34h
  2152. --------Q-15DE20-----------------------------
  2153. INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  2154.     AX = DE20h
  2155.     BX = segment of handle of task to interupt
  2156.     DX:CX -> FAR interrupt routine
  2157.     BP,SI,DI,DS,ES as required by interrupt routine
  2158. Return: nothing
  2159. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  2160.       making the DISPATCHINT call
  2161.     multiple "DISPATCHINT" calls are processed in the order in which they
  2162.       were executed
  2163.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  2164.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  2165.       needs to be preserved
  2166.     this API call may be made from within a hardware interrupt handler
  2167. SeeAlso: AX=1021h,AX=DE2Ah
  2168. --------Q-15DE21-----------------------------
  2169. INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  2170.     AX = DE21h
  2171.     BX = new state
  2172.         0000h turn off
  2173.         nonzero turn on
  2174. Return: BX = old state of virtualization
  2175. Notes:    this API call may be made from within a hardware interrupt handler
  2176.     under DV 2.40 and 2.42, this call appears to have no effect and always
  2177.       returns a nonzero value in BX which appears to be the offset within
  2178.       the DV common memory segment of the caller's task object; it may
  2179.       only have an effect within a hardware interrupt handler
  2180. SeeAlso: AX=1117h,AX=DE17h
  2181. --------Q-15DE22-----------------------------
  2182. INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  2183.     AX = DE22h
  2184.     DX = segment of task handle
  2185. Return: DX = total amount of memory in paragraphs
  2186.     BX = amount of system memory in paragraphs
  2187.     CX = largest block of system memory available in paragraphs
  2188.     AX = memory flags (see #0353)
  2189. Notes:    if the task handle is a child task, the returned values will be for the
  2190.       process containing the task, rather than the task itself
  2191.     if the process's system memory is swapped out, BX,CX,DX remain
  2192.       unchanged, because the memory usage cannot be determined
  2193. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  2194.  
  2195. Bitfields for DESQview process memory flags:
  2196. Bit(s)    Description    (Table 0353)
  2197.  0    system memory resides in shared memory
  2198.  1    process's memory is swapped out
  2199.  2    process's system memory is swapped out
  2200. --------Q-15DE23-----------------------------
  2201. INT 15 U - DESQview v2.31+ - ???
  2202.     AX = DE23h
  2203.     BX = ??? IRQ number on first PIC?
  2204.     CX = ??? IRQ number on second PIC?
  2205. Return: ???
  2206. Note:    called by QEMM 6.00+
  2207. --------Q-15DE24-----------------------------
  2208. INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
  2209.     AX = DE24h
  2210.     BX = length of .DVP data
  2211.     CX = length of ??? string
  2212.     DS:SI -> ??? string
  2213.     ES:DI -> .DVP data (see #0268 at AX=102Ch)
  2214. Return: BX = segment of task handle??? or 0000h on error
  2215. Note:    this call is similar to AX=102Ch except that it can interpret the
  2216.       extended DVP data
  2217. SeeAlso: AX=102Ch
  2218. --------Q-15DE25-----------------------------
  2219. INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
  2220.     AX = DE25h
  2221.     ES:DI -> 67-byte buffer for ASCIZ directory name
  2222. Return: ES:DI buffer filled with directory from which DESQview was started
  2223. BUG:    DV 2.42 does not place a terminating NUL at the end of the directory
  2224.       name, so if the buffer is not cleared to zeros before the call,
  2225.       there is no way to tell where the directory name ends.  This bug
  2226.       has been fixed in DV 2.52 (DV/X 1.02)
  2227. SeeAlso: AX=DE2Eh,INT 21/AH=47h
  2228. --------Q-15DE26-----------------------------
  2229. INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
  2230.     AX = DE26h
  2231. Return: BX = segment of handle for task with keyboard focus
  2232. Note:    under DESQview/X, the X server always has the keyboard focus unless a
  2233.       "direct" window is active
  2234. SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
  2235. --------Q-15DE27-----------------------------
  2236. INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
  2237.     AX = DE27h
  2238.     BX = type
  2239.         0000h process
  2240.         0001h task
  2241.     ES:DI -> list of Instance Item Structures (see #0354)
  2242. Return: CF clear if successful
  2243.         AX = ???
  2244.         BX = ???
  2245.     CF set on error
  2246.         AX = error code???
  2247.         0004h invalid BX value
  2248. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2249. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
  2250.  
  2251. Format of DESQview Instance Item Structure [one element of list]:
  2252. Offset    Size    Description    (Table 0354)
  2253.  00h    WORD    length of data area DESQview should save and restore on context
  2254.           switches (0000h = end of list)
  2255.  02h    DWORD    pointer to area to be saved/restored
  2256. --------Q-15DE28-----------------------------
  2257. INT 15 U - DESQview v2.50+ - ???
  2258.     AX = DE28h
  2259.     BX = segment of ??? or 0000h for default
  2260.     ???
  2261. Return: ???
  2262. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2263. SeeAlso: AX=DE2Ah
  2264. --------Q-15DE29BX0000-----------------------
  2265. INT 15 U - DESQview/X - ???
  2266.     AX = DE29h
  2267.     BX = 0000h
  2268.     ???
  2269. Return: CF clear if successful
  2270.         ???
  2271.     CF set on error
  2272. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2273.     under DESQview 2.60, this function and all other subfunctions of
  2274.       AX=DE29h always return CF set, as they are unique to DESQview/X
  2275. --------Q-15DE29BX0001-----------------------
  2276. INT 15 U - DESQview/X - ???
  2277.     AX = DE29h
  2278.     BX = 0001h
  2279.     DX = segment of window handle
  2280. Return: CF clear if successful
  2281.         AX = ???
  2282.         DX = ???
  2283.     CF set on error
  2284. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2285. --------Q-15DE29BX0002-----------------------
  2286. INT 15 U - DESQview/X - ???
  2287.     AX = DE29h
  2288.     BX = 0002h
  2289.     DX = segment of window handle
  2290. Return: CF clear if successful
  2291.         AX = ???
  2292.         DX = ???
  2293.     CF set on error
  2294. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2295. --------Q-15DE29BX0003-----------------------
  2296. INT 15 U - DESQview/X - ???
  2297.     AX = DE29h
  2298.     BX = 0003h
  2299.     DX = segment of window handle
  2300. Return: CF clear if successful
  2301.         ???
  2302.     CF set on error
  2303. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2304. --------Q-15DE29BX0004-----------------------
  2305. INT 15 U - DESQview/X - GET DISPLAY NAME
  2306.     AX = DE29h
  2307.     BX = 0004h
  2308.     CX = size of buffer in bytes
  2309.     DX = segment of window handle
  2310.     ES:DI -> buffer for display name
  2311. Return: CF clear if successful
  2312.         buffer filled with ASCIZ display name (truncated if necessary) or
  2313.           null string if no display
  2314.     CF set on error
  2315. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2316.     the name ":0" refers to the local display
  2317. --------Q-15DE29BX0005-----------------------
  2318. INT 15 U - DESQview/X - ???
  2319.     AX = DE29h
  2320.     BX = 0005h
  2321.     ???
  2322. Return: CF clear if successful
  2323.         ???
  2324.     CF set on error
  2325. Note:    under DESQview 2.60, this function and all other subfunctions of
  2326.       AX=DE29h always return CF set, as they are unique to DESQview/X
  2327. --------Q-15DE2A-----------------------------
  2328. INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
  2329.     AX = DE2Ah
  2330.     BX = segment of handle for task to interrupt or 0000h for caller
  2331.     DX:CX -> interrupt routine
  2332.     BP,SI,DI,DS,ES as required by interrupt routine
  2333. Return: nothing
  2334. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2335.     this call is the same as AX=DE20h except that it will delay
  2336.       interrupting the specified task until after it has exited DOS
  2337. SeeAlso: AX=1021h,AX=DE20h
  2338. --------Q-15DE2B-----------------------------
  2339. INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
  2340.     AX = DE2Bh
  2341.     ES:DI -> starting object
  2342.         0000h:0000h for first object in list???
  2343. Return: AX = status
  2344.         0000h successful
  2345.         ES:DI -> next object of same type (window/non-window)
  2346.         0001h failed (ES:DI was not a valid handle)
  2347. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2348.     there are two separate lists, one for window/task objects and one
  2349.       for all other objects
  2350. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
  2351. --------Q-15DE2C-----------------------------
  2352. INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
  2353.     AX = DE2Ch
  2354.     DX = window information format version (0100h for DESQview 2.5x)
  2355.     BX = segment of window handle or 0000h for default
  2356.     ES:DI -> buffer for window information (see #0355)
  2357. Return: AX = status
  2358.         0000h successful
  2359. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2360. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
  2361.  
  2362. Format of DESQview window information:
  2363. Offset    Size    Description    (Table 0355)
  2364.  00h    BYTE    task flag: 00h window, 01h task
  2365.  01h    BYTE    process number if owner task
  2366.         00h if non-owner task
  2367.  02h    WORD    segment of owner's handle, 0000h if orphaned
  2368.  04h    WORD    mapping context (see #0257 at AX=1016h)
  2369.  06h    BYTE    task status (see #0356)
  2370.  07h    BYTE    unused
  2371.  08h    WORD    status bits (see #0357)
  2372.  0Ah    BYTE    01h if foreground-only window
  2373.  
  2374. (Table 0356)
  2375. Values for DESQview task status:
  2376.  00h    "Waiting" waiting for input
  2377.  01h    "Idle" keyboard poll limit reached
  2378.  03h    same as 01h
  2379.  04h    "Pausing" INT 15/AX=1000h pause called
  2380.  04h    DV/X direct: user did something to allow task switch
  2381.  05h    "ModeChg" video mode about to be changed
  2382.  06h    "ModeNtf" notify that video mode changed
  2383.  07h    "MoniCh" requested change to other monitor
  2384.  08h    "StartPgm" control relinquished to start new process
  2385.  09h    "MgrCan" made window manager CANCEL command
  2386.  0Ah    "Slicing" time slice expired
  2387.  0Bh    "Exit DOS" notify on DOS calls
  2388.  0Ch    "Enter DOS" process is re-entering DOS
  2389.  0Dh    "Terminate" INT 21/AH=4Ch or task freed
  2390.  0Eh    "BrkNxt" Control-Break pressed
  2391.  0Fh    "MgrCol" keyboard focus taken away
  2392.  10h    "PgmInt" interrupted by API call from another task
  2393.  11h    "BldOpen" call to INT 15/AX=DE01h
  2394.  
  2395. Bitfields for DESQview task status bits:
  2396. Bit(s)    Description    (Table 0357)
  2397.  6    task is freeing another task
  2398.  5    process is being created
  2399.  4    user suspended process
  2400.  3    process suspended itself
  2401.  2    process is resized direct window (suspended)
  2402.  1    process swapped out
  2403.  0    DESQview process
  2404. --------Q-15DE2D-----------------------------
  2405. INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
  2406.     AX = DE2Dh
  2407.     CX = direction
  2408.         FFFFh set socket handler
  2409.         DX:BX -> FAR function for socket interface
  2410.             must be of the format described under INT 63"DESQview"
  2411.         other get socket handler
  2412.         Return: DX:BX -> socket handler
  2413. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2414.     the "set" subfunction is normally called only by SOCKET.DVR
  2415. SeeAlso: AX=DE2Eh,INT 63"DESQview"
  2416. --------Q-15DE2E-----------------------------
  2417. INT 15 U - DESQview v2.50+ - SOCKET API
  2418.     AX = DE2Eh
  2419.     DX:BX -> socket record (see #0359)
  2420.         0000h:0000h to create a new socket record
  2421. Return: CX = size of socket record in bytes
  2422.     DX:BX -> socket record which was used
  2423. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2424.     socket records are allocated from common memory
  2425.     for Unix compatibility, each socket and connection on a socket is
  2426.       allocated a DOS file handle (referencing an SFT for NUL) which is
  2427.       used on various calls to specify which of possibly multiple
  2428.       connections is to be operated upon
  2429. SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
  2430.  
  2431. (Table 0358)
  2432. Values for DESQview/X socket API function number:
  2433.  0000h    initialize socket???
  2434.  0001h    "gethostname"
  2435.  0002h    "ioctl" check for input
  2436.  0003h    "sleep" delay for specified period
  2437.  0004h    "htons" convert word to network (big-endian) byte order
  2438.  0005h    "select"
  2439.  0006h    "bsd_close"/"so_close" close socket
  2440.  0007h    NOP
  2441.  0008h    "connect" initiate connection on socket
  2442.  0009h    "recv"/"recvfrom" read from socket
  2443.  000Ah    "socket"
  2444.  000Bh    ???
  2445.  000Ch    "gethostbyname"
  2446.  000Dh    "send"/"sendto" write to socket
  2447.  000Eh    ??? (does something to all connections for process)
  2448.  000Fh    "getpid" get process identifier
  2449.  0010h    "gettimeofday"
  2450.  0011h    "bind" assign name to socket
  2451.  0012h    "listen" listen for connections on socket
  2452.  0013h    "accept" accept connection on socket
  2453.  0014h    connect to X server
  2454.  0015h    "gethostbyaddr" get host information for an address
  2455.  0016h    "getprotobyname"
  2456.  0017h    "getprotobynumber"
  2457.  0018h    "getservbyname"
  2458.  0019h    "getservbyport"
  2459.  001Ah    "getsockname" determine name bound to socket
  2460.  001Bh    "getpeername" get name of connected peer
  2461.  001Ch    "getsockopt"/"setsockopt"
  2462.  001Dh    "so_exit"     close all sockets for calling process
  2463.  001Eh    "issock" determine whether file handle references socket
  2464.  001Fh    "so_attach" reattach previously detached socket
  2465.  0020h    "so_detach" temporarily detach socket
  2466.  0021h    get DESQview directory
  2467.  0022h    "NewProc" start new application (see AX=102Ch)
  2468.  0023h    "so_linkup"
  2469.  0024h    canonicalize filename
  2470.  0025h    indirect INT 15h call
  2471.  0026h    Network Manager interface
  2472.  0027h    "so_unlink"    close connection from "so_linkup"
  2473.  0028h    "raisepriority"
  2474.  0029h    "lowerpriority"
  2475.  002Ah    ???
  2476.  FFFFh    "NetExit" (appears to be a NOP)
  2477.  
  2478. Format of DESQview/X socket record:
  2479. Offset    Size    Description    (Table 0359)
  2480.  00h    WORD    signature F0ADh
  2481.  02h    WORD    function number (see #0358)
  2482.  04h    WORD    returned error code (see #0376)
  2483.  06h    WORD    maximum message size??? (usually 0400h)
  2484.  08h    WORD    PSP segment to use or 0000h if socket not valid
  2485.  0Ah    WORD    scratch space (JFT size)
  2486.  0Ch    DWORD    scratch space (JFT address)
  2487.  10h    DWORD    mailbox handle (initialized by function 0000h)
  2488.  14h    DWORD    timer object handle (initialized by function 0000h)
  2489. ---function 0000h---
  2490.  18h    WORD    (return) ???
  2491. ---function 0001h---
  2492.  18h    WORD    (return) status???
  2493.  1Ah 128 BYTEs    (return) ASCIZ hostname (empty string if not on network)
  2494.  9Ah    WORD    maximum length of hostname to return
  2495. ---function 0002h---
  2496.  18h    WORD    (return) status
  2497.  1Ah    WORD    socket's file handle
  2498.  1Ch    WORD    IOCTL function
  2499.         05h "FIONREAD" determine available input
  2500.         06h "FIONBIO" set blocking state of socket
  2501.  1Eh    WORD    (return, subfn 05h) number of bytes available for reading
  2502.         (call, subfn 06h) 0000h blocking, nonzero nonblocking
  2503. ---function 0003h---
  2504.  18h  2 BYTEs    unused
  2505.  1Ah    WORD    delay time in seconds
  2506. ---function 0004h---
  2507.  18h    WORD    (return) result in network (big-endian) byte order
  2508.  1Ah    WORD    value to convert to network byte order
  2509. ---function 0005h---
  2510.  18h    WORD    (return) number of handles meeting the specified conditions???
  2511.  1Ah    WORD    number of file handles in each bitset???
  2512.  1Ch    DWORD    bitset of socket handles to check for readability???
  2513.  20h    DWORD    bitset of socket handles to check for writability???
  2514.  24h    DWORD    bitset of socket handles to check for errors???
  2515.  28h    WORD    timeout in ??? or 0000h to block until some socket ready
  2516.  2Ah    DWORD    ???
  2517.  2Eh    DWORD    ???
  2518. ---function 0006h---
  2519.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2520.  1Ah    WORD    socket's file handle
  2521. ---function 0008h---
  2522.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2523.  1Ah    WORD    socket's file handle
  2524.  1Ch    WORD    0001h if socket name specified, 0000h if not
  2525.  1Eh    WORD    length of socket name
  2526.  20h  N BYTEs    name of socket to which to connect
  2527. ---function 0009h---
  2528.  18h    WORD    (return) number of bytes actually read, 0000h if connection
  2529.             closed, or FFFFh on error
  2530.  1Ah    WORD    socket's file handle
  2531.  1Ch    WORD    number of bytes to read
  2532.  1Eh    WORD    flags
  2533.  20h    WORD    0000h if no source address desired
  2534.         0001h if source address is to be stored (datagram sockets)
  2535.  22h    WORD    length of source address
  2536.  24h 110 BYTEs    source address
  2537.  92h 1K BYTEs    buffer for data to be read
  2538. ---function 000Ah---
  2539.  18h    WORD    (return) socket's file handle or FFFFh on error
  2540.  1Ah    WORD    address family (0001h,0002h)
  2541.  1Ch    WORD    socket type
  2542.  1Eh    WORD    protocol
  2543. ---function 000Bh---
  2544.  18h    WORD    (return) 0001h if ??? or FFFFh on error
  2545.  1Ah    WORD    socket's file handle
  2546.  1Eh    WORD    (call) ???
  2547. ---function 000Ch---
  2548.  18h 128 BYTEs    buffer containing ASCIZ hostname
  2549.         special case if empty string or "unix"
  2550.  98h    ???    'struct hostent' ???
  2551.  A2h    ???    (return) ???
  2552. ---function 000Dh---
  2553.  18h    WORD    (return) number of bytes actually written or FFFFh on error
  2554.  1Ah    WORD    socket's file handle
  2555.  1Ch    WORD    number of bytes to write
  2556.  1Eh    WORD    number of bytes to follow in subsequent writes???
  2557.  20h    WORD    flags
  2558.  22h    WORD    0000h if no destination specified, 0001h if destination present
  2559.  24h    WORD    ???
  2560.  26h    WORD    length of destination address
  2561.  28h 110 BYTEs    destination address
  2562.  96h 1K BYTEs    buffer containing data to be written
  2563. ---function 000Eh---
  2564.  no additional fields
  2565. ---function 000Fh---
  2566.  18h    DWORD    (return) DESQview task handle of calling process
  2567. ---function 0010h---
  2568.  18h    DWORD    (return) current time
  2569.  1Ch    DWORD    (return) ???
  2570. ---function 0011h---
  2571.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2572.  1Ah    WORD    socket's file handle
  2573.  1Ch    WORD    length of name
  2574.  1Eh  N BYTEs    buffer for socket name
  2575. ---function 0012h---
  2576.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2577.  1Ah    WORD    socket's file handle
  2578.  1Ch    WORD    maximum backlog of pending connections allowed on socket
  2579. ---function 0013h---
  2580.  18h    WORD    (return) file handle for new connection or FFFFh on error
  2581.  1Ah    WORD    listen()ing socket's file handle
  2582.  1Ch    WORD    (call) length of buffer for connecting entity's address
  2583.         (return) actual length of address
  2584.  1Eh  N BYTEs    buffer for connecting entity's address
  2585. ---function 0014h---
  2586.  18h    WORD    (return) socket's file handle or FFFFh on error
  2587.  1Ah  4 BYTEs    (return) ???
  2588.  1Eh    WORD    (return) ???
  2589.  20h    WORD    (return) ???
  2590.  22h 256 BYTEs    ASCIZ X display name
  2591. 122h    ???
  2592. ---function 0015h---
  2593.  18h    WORD    (call) type of address??? (test for 0001h seen)
  2594.  1Ah    WORD    (call) length of buffer for host address
  2595.  1Ch 110 BYTEs    buffer containing host address
  2596.  8Ah    WORD    (return) offset of official host name???
  2597.  8Ch    WORD    (return) offset of alias list???
  2598.  8Eh    WORD    (return) address type???
  2599.  90h    WORD    (return) length of an address in bytes???
  2600.  92h    WORD    (return) offset of address???
  2601.  9Ah  N BYTEs    (return) ??? buffer for hostname, alias list, and host address
  2602. ---function 0016h---
  2603.  18h    ???    buffer for protocol name???
  2604.  98h    ???
  2605. ---function 0017h---
  2606.  18h    WORD    (call) protocol number???
  2607.  1Ah    WORD    (return) ??? or 0001h
  2608. ---function 0018h---
  2609.  18h 128 BYTEs    buffer containing ???
  2610.  98h 128 BYTEs    buffer containing ???
  2611. 118h    WORD    (return) ???
  2612. ---function 0019h---
  2613.  18h    WORD    length of name???
  2614.  1Ah 128 BYTEs    buffer for name???
  2615.  9Ah    WORD    (return) ???
  2616. ---function 001Ah---
  2617.  18h    WORD    (return) 0000h if successful, FFFFh on error
  2618.  1Ah    WORD    socket's file handle
  2619.  1Ch    WORD    (call) length of buffer for socket name
  2620.         (return) actual length of socket name
  2621.  1Eh  N BYTEs    buffer for socket name
  2622. ---function 001Bh---
  2623.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2624.  1Ah    WORD    socket's file handle
  2625.  1Ch    WORD    (call) size of buffer for name
  2626.         (return) actual size of name
  2627.  1Eh  N BYTEs    buffer for peer's name
  2628. ---function 001Ch---
  2629.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2630.  1Ah    WORD    direction: 0000h to get, 0001h to set
  2631.  1Ch    WORD    socket's file handle
  2632.  1Eh    WORD    option level
  2633.  20h    WORD    option name
  2634.  22h    WORD    (call) length of buffer for option value
  2635.         (return) actual length of option value
  2636.  24h  N BYTEs    buffer for option value
  2637. ---function 001Dh---
  2638.  no additional fields
  2639. ---function 001Eh---
  2640.  18h    WORD    (return) status: 0000h ??? or 0001h ???
  2641.  1Ah    WORD    file handle which may or may not be a socket
  2642. ---function 001Fh---
  2643.  18h    WORD    (return) file handle or FFFFh on error
  2644.  1Ah    DWORD    (call) pointer to Socket Context Record (see #0377) of a
  2645.             previously detached socket
  2646. ---function 0020h---
  2647.  18h    WORD    (return) status: 0000h if successful or FFFFh on error
  2648.  1Ah    WORD    socket's file handle
  2649.  1Ch    DWORD    (return) pointer to Socket Context Record (see #0377) for
  2650.             the file handle
  2651. ---function 0021h---
  2652.  18h 64 BYTEs    buffer for DESQview startup directory (see AX=DE25h)
  2653. ---function 0022h---
  2654.  18h    DWORD    (return) task handle of new application
  2655.  1Ch    WORD    size of .DVP data
  2656.  1Eh 129 BYTEs    ASCIZ ???
  2657.  9Fh  N BYTEs    .DVP data (see #0268 at AX=102Ch)
  2658. ---function 0023h---
  2659.  18h    WORD    (return) ??? or FFFFh on error
  2660.  1Ah    WORD    socket's file handle???
  2661. ---function 0024h---
  2662.  18h    WORD    (return) DOS error code (see #0770 at INT 21/AH=59h)
  2663.             0000h if successful
  2664.  1Ah 129 BYTEs    ASCIZ filename/pathname
  2665. 11Bh 129 BYTEs    ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
  2666. ---function 0025h---
  2667.  18h    WORD    value of AX
  2668.  1Ah    WORD    value of BX
  2669.  1Ch    WORD    (call) value of CX for call if AH value other than 12h
  2670.         (call) number of stack parameters if AH value is 12h
  2671.         (return) returned CX for calls other than INT 15/AH=12h
  2672.  1Eh    WORD    value of DX
  2673.  20h    WORD    value of DI
  2674.  22h    WORD    value of SI
  2675.  24h    WORD    value of DS
  2676.  26h    WORD    value of ES
  2677.  28h    WORD    (return) value of FLAGS after call
  2678.  2Ah  N DWORDs    (call) stack parameters for INT 15/AH=12h call
  2679.         (return) stack results from INT 15/AH=12h call
  2680. ---function 0026h---
  2681.  18h    WORD    (call) Network Manager subfunction (see #0360)
  2682.         (return) status???
  2683.  1Ah    WORD    (call) size of parameter data
  2684.         (return) size of returned data
  2685.  1Ch  N BYTEs    (call) parameter data required by call (see #0361,#0362,#0363)
  2686.         (return) result data (see #0371,#0372,#0375)
  2687. ---function 0027h---
  2688.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2689.  1Ah    WORD    socket's file handle
  2690. ---functions 0028h,0029h---
  2691.  18h    WORD    (call) file handle for which to set priority low/high
  2692.             FFFFh to change calling task's priority
  2693. ---function 002Ah---
  2694.  no additional fields
  2695.  
  2696. (Table 0360)
  2697. Values for DESQview/X Network Manager subfunction:
  2698.  0004h    "so_exit"???
  2699.  0005h    "gethostbyname"
  2700.  0006h    "gethostname"
  2701.  0009h    "socket"
  2702.  000Dh    "gethostbyaddr"
  2703.  000Fh    "getprotobyname"
  2704.  0010h    get protocol name for protocol number
  2705.  0011h    "getservbyname"
  2706.  0012h    "getservbyport" (see #0364)
  2707.  0013h    "getsockname"??? (see #0365)
  2708.  0016h    ??? (see #0366)
  2709.  0017h    kill Network Manager
  2710.  0018h    "getpeername"??? (see #0367)
  2711.  0019h    ??? (called by socket function 0000h) (see #0368)
  2712.  001Ah    ??? (see #0369)
  2713.  001Bh    "so_linkup" (see #0370)
  2714.  001Dh    get network services (see #0371)
  2715.  001Fh    "getpwuid"
  2716.  0020h    "getpwnam"
  2717.  0021h    "getpwvar"
  2718.  0022h    "crypt"
  2719.  0023h    "so_unlink"
  2720.  0024h    "getlogin" (see #0372)
  2721.  0028h    "sethostent"
  2722.  0029h    "gethostent"
  2723.  002Ah    "soaddhost"
  2724.  002Bh    "soupdatehost"
  2725.  002Ch    "sodeletehost"
  2726.  002Dh    "setservent"
  2727.  002Eh    "getservent"
  2728.  002Fh    "setpwent"
  2729.  0030h    "getpwent" (see #0373)
  2730.  0031h    ???
  2731.  0032h    ???
  2732.  0033h    ???
  2733.  0034h    get IP network number (see #0374)
  2734.  0035h    ??? (pops up Network Manager window)
  2735.  0037h    ???
  2736.  0038h    get machine name and IP address (see #0375)
  2737.  0039h    ???
  2738.  
  2739. Format of Function 0026h/Subfunction 000Fh data:
  2740. Offset    Size    Description    (Table 0361)
  2741.  00h  8 BYTEs    (return) ???
  2742.  
  2743. Format of Function 0026h/Subfunction 0010h data:
  2744. Offset    Size    Description    (Table 0362)
  2745.  00h  2 BYTEs    (return) ???
  2746.  02h    WORD    (return) protocol number
  2747.  04h    WORD    (call) protocol number for which to get name
  2748.  06h    WORD    (return) ???
  2749.  08h    var    (return) ASCIZ protocol name
  2750.  N    var    (return) ASCIZ protocol name
  2751.  
  2752. Format of Function 0026h/Subfunction 0011h data:
  2753. Offset    Size    Description    (Table 0363)
  2754.  00h  8 BYTEs    ???
  2755.  08h    var    (return) ASCIZ protocol name
  2756.     var    (return) ASCIZ ??? name
  2757.     var    (return) ASCIZ ??? name
  2758.  
  2759. Format of Function 0026h/Subfunction 0012h data:
  2760. Offset    Size    Description    (Table 0364)
  2761.  00h  8 BYTEs    (return) ???
  2762.  
  2763. Format of Function 0026h/Subfunction 0013h data:
  2764. Offset    Size    Description    (Table 0365)
  2765.  00h 116 BYTEs    (return) ???
  2766.  
  2767. Format of Function 0026h/Subfunction 0016h data:
  2768. Offset    Size    Description    (Table 0366)
  2769.  00h  4 BYTEs    (return) ???
  2770.  
  2771. Format of Function 0026h/Subfunction 0018h data:
  2772. Offset    Size    Description    (Table 0367)
  2773.  00h 116 BYTEs    (return) ???
  2774.  
  2775. Format of Function 0026h/Subfunction 0019h data:
  2776. Offset    Size    Description    (Table 0368)
  2777.  00h  4 BYTEs    (return) ???
  2778.  04h    DWORD    (return) task handle of ???
  2779.  
  2780. Format of Function 0026h/Subfunction 001Ah data:
  2781. Offset    Size    Description    (Table 0369)
  2782.  00h 38 BYTEs    (return) ???
  2783.  
  2784. Format of Function 0026h/Subfunction 001Bh data:
  2785. Offset    Size    Description    (Table 0370)
  2786.  00h 10 BYTEs    (return) ???
  2787.  
  2788. Format of Function 0026h/Subfunction 001Dh return data [array]:
  2789. Offset    Size    Description    (Table 0371)
  2790.  00h    WORD    ??? or FFFFh if end of array
  2791.  02h  7 BYTEs    ???
  2792.  09h 27 BYTEs    ASCIZ name of service
  2793.  
  2794. Format of Function 0026h/Subfunction 0024h return data:
  2795. Offset    Size    Description    (Table 0372)
  2796.  00h    var    ASCIZ username
  2797.  
  2798. Format of Function 0026h/Subfunction 0030h data:
  2799. Offset    Size    Description    (Table 0373)
  2800.  00h    WORD    (call) UID or 0000h for current user
  2801.         (return) ???
  2802.  02h    WORD    (return) UID
  2803.  04h  6 BYTEs    (return) ???
  2804.  0Ah    var    (return) ASCIZ username
  2805.     var    (return) ASCIZ encrypted password
  2806.     var    (return) ASCIZ initial ("home") directory
  2807.  
  2808. Format of Function 0026h/Subfunction 0034h data:
  2809. Offset    Size    Description    (Table 0374)
  2810.  00h  1-3 BYTEs IP network number of caller's machine (low byte first)
  2811.  
  2812. Format of Function 0026h/Subfunction 0038h return data:
  2813. Offset    Size    Description    (Table 0375)
  2814.  00h    BYTE    ???
  2815.  01h  4 BYTEs    IP address
  2816.  05h    var    ASCIZ machine name
  2817.     ???
  2818.  
  2819. (Table 0376)
  2820. Values for DESQview/X socket error code:
  2821.  0000h    successful
  2822.  0009h    "BADF" bad file handle
  2823.  000Ch    "ENOMEM" out of memory
  2824.  000Eh    "EFAULT" bad address
  2825.  0016h    "EINVAL" invalid argument
  2826.  0018h    "EMFILE" too many open files
  2827.  0020h    "EPIPE" ??? broken pipe
  2828.  0023h    "EWOULDBLOCK" operation cannot be completed at this time
  2829.  0024h    "EINPROGRESS" operation now in progress
  2830.  0026h    "ENOTSOCK" socket invalid
  2831.  0028h    "EMSGSIZE" message too long to send atomically
  2832.  002Ch    "ESOCKTNOSUPPORT" socket type not supported
  2833.  002Fh    "EAFNOSUPPORT" address family not supp. by protocol fam.
  2834.  0031h    "EDOM" argument too large
  2835.  0038h    "EISCONN" socket is already connected
  2836.  0039h    "ENOTCONN" socket is not connected
  2837.  
  2838. Format of DESQview/X Socket Context Record:
  2839. Offset    Size    Description    (Table 0377)
  2840.  00h    DWORD    pointer to next Socket Context Record, 0000h:0000h if last
  2841.  04h    WORD    SFT index for socket, 00FFh if not connected, FFFFh if detached
  2842.  06h    WORD    PSP segment of owner or 0000h
  2843.  08h    WORD    mapping context of owning window (see #0257 at AX=1016h)
  2844.  0Ah  2 BYTEs    ???
  2845.  0Ch    WORD    address family
  2846.  0Eh    WORD    socket type
  2847.  10h    WORD    protocol
  2848.  12h    WORD    socket state
  2849.         0001h created
  2850.         0002h bound
  2851.         0003h listening???
  2852.         0005h connected
  2853.  14h    DWORD    timer object handle
  2854.  18h    DWORD    object handle (mailbox???)
  2855.  1Ch    DWORD    object handle of parent of above object or 0000h:0000h
  2856.  20h    DWORD    pointer to ??? or 0000h
  2857.  24h  6 BYTEs    ???
  2858.  2Ah    WORD    file handle for socket or FFFFh
  2859.  2Ch  2 BYTEs    ???
  2860.  2Eh    WORD    nonzero if socket nonblocking
  2861. ---network connections only---
  2862.  30h  2 BYTEs    ???
  2863.  32h    WORD    ???
  2864.  34h  4 BYTEs    (big-endian) IP address of remote
  2865.  38h  6 BYTEs    ???
  2866. --------Q-15DE2F-----------------------------
  2867. INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
  2868.     AX = DE2Fh
  2869. Return: BX = status
  2870.         0001h keyboard focus has been given to a direct window since the
  2871.         last call
  2872.         0000h if not
  2873. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  2874.     Quarterdeck stated that this call would not be available under future
  2875.       versions of DESQview Classic, but it is still present in v2.60
  2876. --------Q-15DE30-----------------------------
  2877. INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
  2878.     AX = DE30h
  2879. Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
  2880. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  2881.     you must first check the DESQview version to verify that it is 2.50 or
  2882.       greater
  2883. SeeAlso: INT 21/AH=2Bh/CX=4445h
  2884. --------Q-15DE31-----------------------------
  2885. INT 15 - DESQview/X v1.10 - ???
  2886.     AX = DE31h
  2887.     CX = ???
  2888.         0000h ???
  2889.         nonzero ???
  2890.     ???
  2891. Return: ???
  2892. --------b-15DF-------------------------------
  2893. INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
  2894.     AH = DFh
  2895.     AL = function
  2896.         00h turn on Turbo mode
  2897.         01h turn off Turbo mode
  2898.         02h set Turbo mode according to hardware switch
  2899. SeeAlso: INT 13/AX=FFFFh
  2900. --------b-15E00F-----------------------------
  2901. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  2902.     AX = E00Fh
  2903.     ES:BX -> start of 2nd processor's execution
  2904. Return: AL = status
  2905.         0Fh successful
  2906.         00h failure
  2907. SeeAlso: AX=E10Eh,AX=E200h
  2908. --------b-15E10E-----------------------------
  2909. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  2910.     AX = E10Eh
  2911.     ES:BX -> start of 2nd processor's execution
  2912. Return: AL = status
  2913.         0Fh successful (halted)
  2914.         00h failure (not halted)
  2915. SeeAlso: AX=E00Fh,AX=E200h
  2916. --------b-15E200-----------------------------
  2917. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  2918.     AX = E200h
  2919. Return: AX bit 15 set if 2nd processor available
  2920. SeeAlso: AX=E00Fh,AX=E10Eh
  2921. --------b-15E4-------------------------------
  2922. INT 15 - Tandy??? - ???
  2923.     AH = E4h
  2924.     AL = subfunction
  2925.         21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
  2926.     DL = ???
  2927. Return: DL = 00h if successful???
  2928. Note:    the section of code in 386MAX which calls these functions also checks
  2929.       whether the ROM BIOS has both Tandy and Phoenix Technologies
  2930.       signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
  2931.       support this function, however, returning the usual CF set/AH=86h for
  2932.       "unsupported function".
  2933. --------b-15E4-------------------------------
  2934. INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
  2935.     AH = E4h
  2936.     AL = subfunction
  2937.         00h get ???
  2938.         Return: CF clear
  2939.             AH = 00h
  2940.             CX = 0000h
  2941.             BX = ??? (read from [XBDA:0094h])
  2942.         01h,02h unsupported by this ROM version
  2943.         Return: CF set, AH = 86h
  2944.         80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
  2945.         Return: CF clear
  2946.             AH = 00h
  2947.             CX = 0000h
  2948.             BX = ???
  2949.         81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
  2950.         Return: CF set, AH = 86h
  2951. Notes:    functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
  2952.     these functions are not supported by the 7/26/93 LTE Lite 386 ROM
  2953. --------b-15E800-----------------------------
  2954. INT 15 - Compaq Contura - GET ???
  2955.     AX = E800h
  2956. Return: AX = 0000h
  2957.     BH = 00h
  2958.     BL = ??? (read from port 0C7Ch)
  2959.     CH = ???
  2960.     CL = ???
  2961.     DX = 0000h
  2962. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  2963. --------b-15E801-----------------------------
  2964. INT 15 - Compaq Contura - GET ???
  2965.     AX = E801h
  2966. Return: CF clear
  2967.     AX = extended memory in K (read from CMOS locations 30h and 31h)
  2968.     BH = ???
  2969.     BL = ???
  2970.     CX = extended memory in K (read from CMOS locations 17h and 18h)
  2971.     DX = ???
  2972. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  2973. --------b-15E802-----------------------------
  2974. INT 15 - Compaq Contura - GET ???
  2975.     AX = E802h
  2976. Return: CF clear
  2977.     AX = 0000h
  2978.     BX = ???
  2979.     CX = 0000h
  2980. Note:    this function is also supported by the LTE Lite 25c, 25E, and 486; not
  2981.       supported by LTE Lite 20 and 25.
  2982. --------m-15F200CX454D-----------------------
  2983. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALISATION CHECK ???
  2984.     AX = F200h
  2985.     CX = 454Dh
  2986. Return: CF clear if hardware already initialised
  2987.         BX = upper RAM areas in use
  2988.         bit 0: C000-C3FF
  2989.         bit 1: C400-C7FF
  2990.         ...
  2991.         bit 11: EC00-EFFF
  2992.     CF set if hardware not initialised yet
  2993. --------B-1600-------------------------------
  2994. INT 16 - KEYBOARD - GET KEYSTROKE
  2995.     AH = 00h
  2996. Return: AH = BIOS scan code
  2997.     AL = ASCII character
  2998. Notes:    on extended keyboards, this function discards any extended keystrokes,
  2999.       returning only when a non-extended keystroke is available
  3000.     the BIOS scan code is usually, but not always, the same as the hardware
  3001.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  3002.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  3003.       differs for shifted special keys.
  3004. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,INT 18/AH=00h
  3005. --------B-1601-------------------------------
  3006. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  3007.     AH = 01h
  3008. Return: ZF set if no keystroke available
  3009.     ZF clear if keystroke available
  3010.         AH = BIOS scan code
  3011.         AL = ASCII character
  3012. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  3013.       however, any extended keystrokes which are not compatible with 83/84-
  3014.       key keyboards are removed in the process of checking whether a
  3015.       non-extended keystroke is available
  3016. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  3017. --------B-1602-------------------------------
  3018. INT 16 - KEYBOARD - GET SHIFT FLAGS
  3019.     AH = 02h
  3020. Return: AL = shift flags (see #0378)
  3021. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h
  3022.  
  3023. Bitfields for keyboard shift flags:
  3024. Bit(s)    Description    (Table 0378)
  3025.  7    Insert active
  3026.  6    CapsLock active
  3027.  5    NumLock active
  3028.  4    ScrollLock active
  3029.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  3030.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  3031.  1    left shift key pressed
  3032.  0    right shift key pressed
  3033. --------B-1603-------------------------------
  3034. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  3035.     AH = 03h
  3036.     AL = subfunction
  3037.         00h set default delay and rate (PCjr and some PS/2)
  3038.         01h increase delay before repeat (PCjr)
  3039.         02h decrease repeat rate by factor of 2 (PCjr)
  3040.         03h increase delay and decrease repeat rate (PCjr)
  3041.         04h turn off typematic repeat (PCjr and some PS/2)
  3042.         05h set repeat rate and delay (AT,PS)
  3043.         BH = delay value (00h = 250ms to 03h = 1000ms)
  3044.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  3045.         06h get current typematic rate and delay (newer PS/2s)
  3046.         Return: BL = repeat rate (see above)
  3047.             BH = delay (see above)
  3048. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  3049.       supported
  3050. SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
  3051. --------B-1604-------------------------------
  3052. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  3053.     AH = 04h
  3054.     AL = keyclick state
  3055.         00h off
  3056.         01h on
  3057. SeeAlso: AH=03h
  3058. --------B-1605-------------------------------
  3059. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  3060.     AH = 05h
  3061.     CH = scan code
  3062.     CL = ASCII character
  3063. Return: AL = 00h if successful
  3064.          01h if keyboard buffer full
  3065. Note:    under DESQview, the following "keystrokes" invoke the following
  3066.       actions when they are read from the keyboard buffer:
  3067.         38FBh or FB00h    switch to next window (only if main menu
  3068.                 popped up)
  3069.         38FCh or FC00h    pop up DESQview main menu
  3070.         38FEh or FE00h    close the current window
  3071.         38FFh or FF00h    pop up DESQview learn menu
  3072. SeeAlso: AH=00h,AH=71h,AH=FFh,INT 15/AX=DE10h
  3073. --------B-1605-------------------------------
  3074. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  3075.     AH = 05h
  3076.     AL = function
  3077.         01h set keyboard layout to French
  3078.         02h set keyboard layout to German
  3079.         03h set keyboard layout to Italian
  3080.         04h set keyboard layout to Spanish
  3081.         05h set keyboard layout to UK
  3082.         80h check if function supported
  3083.         Return: AL <> 80h if supported
  3084. Return: ???
  3085. Note:    this function is called by the DOS 3.2 KEYBxx.COM
  3086. SeeAlso: AH=92h,AH=A2h
  3087. --------B-1609-------------------------------
  3088. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  3089.     AH = 09h
  3090. Return: AL = supported keyboard functions (see #0379)
  3091. Note:    this function is only available if bit 6 of the second feature byte
  3092.       returned by INT 15/AH=C0h is set
  3093. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  3094.  
  3095. Bitfields for supported keyboard functions:
  3096. Bit(s)    Description    (Table 0379)
  3097.  7    reserved
  3098.  6    INT 16/AH=20h-22h supported (122-key keyboard support)
  3099.  5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  3100.  4    INT 16/AH=0Ah supported
  3101.  3    INT 16/AX=0306h supported
  3102.  2    INT 16/AX=0305h supported
  3103.  1    INT 16/AX=0304h supported
  3104.  0    INT 16/AX=0300h supported
  3105. --------B-160A-------------------------------
  3106. INT 16 - KEYBOARD - GET KEYBOARD ID
  3107.     AH = 0Ah
  3108. Return: BX = keyboard ID (see #0380)
  3109. Note:    check return value from AH=09h to determine whether this function is
  3110.       supported
  3111. SeeAlso: AH=09h
  3112.  
  3113. (Table 0380)
  3114. Values for keyboard ID:
  3115.  0000h    no keyboard attached
  3116.  41ABh    Japanese "G" keyboard (translate mode)
  3117.  54ABh    Japanese "P" keyboard (translate mode)
  3118.  83ABh    Japanese "G" keyboard (pass-through mode)
  3119.  84ABh    Japanese "P" keyboard (pass-through mode)
  3120.  90ABh    old Japanese "G" keyboard
  3121.  91ABh    old Japanese "P" keyboard
  3122.  92ABh    old Japanese "A" keyboard
  3123. --------B-1610-------------------------------
  3124. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  3125.     AH = 10h
  3126. Return: AH = BIOS scan code
  3127.     AL = ASCII character
  3128. Notes:    if no keystroke is available, this function waits until one is placed
  3129.       in the keyboard buffer
  3130.     the BIOS scan code is usually, but not always, the same as the hardware
  3131.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  3132.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  3133.       differs for shifted special keys.
  3134.     unlike AH=00h, this function does not discard extended keystrokes
  3135.     INT 16/AH=09h can be used to determine whether this function is
  3136.       supported, but only on later model PS/2s
  3137. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h
  3138. --------B-1611-------------------------------
  3139. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  3140.     AH = 11h
  3141. Return: ZF set if no keystroke available
  3142.     ZF clear if keystroke available
  3143.         AH = BIOS scan code
  3144.         AL = ASCII character
  3145. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  3146.     unlike AH=01h, this function does not discard extended keystrokes
  3147.     some versions of the IBM BIOS Technical Reference erroneously report
  3148.       that CF is returned instead of ZF
  3149.     INT 16/AH=09h can be used to determine whether this function is
  3150.       supported, but only on later model PS/2s
  3151. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
  3152. --------B-1612-------------------------------
  3153. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  3154.     AH = 12h
  3155. Return: AL = shift flags 1 (same as returned by AH=02h) (see #0381)
  3156.     AH = shift flags 2 (see #0382)
  3157. Notes:    AL bit 3 set only for left Alt key on many machines
  3158.     AH bits 7 through 4 always clear on a Compaq SLT/286
  3159.     INT 16/AH=09h can be used to determine whether this function is
  3160.       supported, but only on later model PS/2s
  3161. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh
  3162.  
  3163. Bitfields for keyboard shift flags 1:
  3164. Bit(s)    Description    (Table 0381)
  3165.  7    Insert active
  3166.  6    CapsLock active
  3167.  5    NumLock active
  3168.  4    ScrollLock active
  3169.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  3170.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  3171.  1    left shift key pressed
  3172.  0    right shift key pressed
  3173.  
  3174. Bitfields for keyboard shift flags 2:
  3175. Bit(s)    Description    (Table 0382)
  3176.  7    SysReq key pressed (SysReq is often labeled SysRq)
  3177.  6    CapsLock pressed
  3178.  5    NumLock pressed
  3179.  4    ScrollLock pressed
  3180.  3    right Alt key pressed
  3181.  2    right Ctrl key pressed
  3182.  1    left Alt key pressed
  3183.  0    left Ctrl key pressed
  3184. --------J-1613-------------------------------
  3185. INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
  3186.     AH = 13h
  3187.     AL = function
  3188.         00h set shift status
  3189.             DX = shift status (see #0383), must preserve internal status
  3190.               bits
  3191.         01h get shift status
  3192.         Return: DX = current shift status (see #0383)
  3193. Note:    these functions are supplied by the Japanese Front-End Processor
  3194. SeeAlso: AH=14h,INT 21/AX=6301h
  3195.  
  3196. Bitfields for DOS/V shift status:
  3197. Bit(s)    Description    (Table 0383)
  3198.  0    full-size rather than half-size
  3199.  2-1    character input mode
  3200.     00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
  3201.  5-3    internal status
  3202.  6    Romaji enabled
  3203.  7    Katakana to Kanji conversion enabled
  3204.  15-8    internal status
  3205. --------J-1614-------------------------------
  3206. INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
  3207.     AH = 14h
  3208.     AL = function
  3209.         00h enable display
  3210.         01h disable display
  3211.         02h get display state
  3212.             Return: AL = current state (00h enabled, 01h disabled)
  3213. Desc:    control the screen-bottom shift status row(s) for the Japanese
  3214.       Front-End Processor
  3215. SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
  3216. --------B-1620-------------------------------
  3217. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  3218.     AH = 20h
  3219. Return: AH = BIOS scan code (see AH=10h for details)
  3220.     AL = ASCII character
  3221. Note:    use AH=09h to determine whether this function is supported
  3222. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  3223. --------b-1620------------------------------------
  3224. INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
  3225.     AH = 20h
  3226.     AL = shift status (see #0384)
  3227. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  3228.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  3229.     the user can override the specified settings by pressing the keys
  3230.  
  3231. Bitfields for HUNTER 16 shift status:
  3232. Bit(s)    Description    (Table 0384)
  3233.  4    Scroll Lock on
  3234.  5    Num Lock on
  3235.  6    Caps Lock on
  3236. --------B-1621-------------------------------
  3237. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  3238.     AH = 21h
  3239. Return: ZF set if no keystroke available
  3240.     ZF clear if keystroke available
  3241.         AH = BIOS scan code
  3242.         AL = ASCII character
  3243. Notes:    use AH=09h to determine whether this function is supported
  3244.     some versions of the IBM BIOS Technical Reference erroneously report
  3245.       that CF is returned instead of ZF
  3246. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  3247. --------b-1621------------------------------------
  3248. INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
  3249.     AH = 21h
  3250.     AL = shift keys to control (see #0378)
  3251.     BL = shift state for disabled keys
  3252. Note:    If a bit in AL is set the key is disabled and set to the state of the
  3253.       corresponding bit in BL
  3254. SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
  3255. --------B-1622-------------------------------
  3256. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  3257.     AH = 22h
  3258. Return: AL = shift flags 1 (see #0381)
  3259.     AH = shift flags 2 (see #0382)
  3260. Note:    use AH=09h to determine whether this function is supported
  3261. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  3262. --------b-1622------------------------------------
  3263. INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
  3264.     AH = 22h
  3265.     AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
  3266.     BX = 0708h
  3267.     CX = 0910h
  3268.     DX = 1112h
  3269. Return: AL = 00h if successful
  3270. SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
  3271. --------b-1623------------------------------------
  3272. INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
  3273.     AH = 23h
  3274.     AL = new state of breakout (00h enabled, nonzero disabled)
  3275.     BX = 0708h   
  3276.     CX = 0910h
  3277.     DX = 1112h
  3278. Return: AL = 00h if successful
  3279. Desc:    Enables or disables the emergency breakout feature, where the
  3280.       Hunter 16 at power on checks whether the X and P keys are pressed.
  3281.       If so the machine will boot rather than continue the running program
  3282. SeeAlso: AH=22h"HUNTER"
  3283. --------b-1624------------------------------------
  3284. INT 16 - HUNTER 16 - REDEFINE KEY CODES
  3285.     AH = 24h
  3286.     AL = Matrix Code (see #0385)
  3287.     BL = new Key code
  3288. Return: AL = status (00h successful, nonzero failed)
  3289. SeeAlso: AH=2Bh,AH=2Ch
  3290.  
  3291. (Table 0385)
  3292. Values for HUNTER 16 Matrix Code:
  3293.  Code  Key        Code    Key        Code    Key
  3294.  00h   Esc key        1Eh    Space        3Bh    L
  3295.  01h   1        21h    0        3Ch    ,
  3296.  02h   Q        22h    -        3Eh    Right shift
  3297.  03h   Tab        23h    '        42h    8
  3298.  04h   Num Lock        24h    Keypad 4    43h    7
  3299.  05h   \        25h    Enter        44h    U
  3300.  08h   LShift        26h    Keypad 7    45h    I
  3301.  09h   Ctrl        27h    .        46h    J
  3302.  0Ah   "Paw" key    28h    Keypad 1    47h    K
  3303.  0Bh   2        29h    Keypad 0    48h    M
  3304.  0Ch   W        2Ch    =        49h    N 
  3305.  0Dh   A        2Dh    Backspace    4Ah    /
  3306.  0Eh   S        2Eh    Keypad 8    4Dh    6
  3307.  0Fh   Z        2Fh    Keypad 9    4Eh    5
  3308.  11h   Alt        30h    Keypad 5    4Fh    T
  3309.  16h   4        31h    Keypad 6    50h    Y
  3310.  17h   3        32h    Keypad 2    51h    G
  3311.  18h   E        33h    Keypad 3    52h    H
  3312.  19h   R        34h    Keypad .    53h    B
  3313.  1Ah   D        37h    9        54h    V
  3314.  1Bh   F        38h    O        55h    #
  3315.  1Ch   X        39h    P        58h    Pwr
  3316.  1Dh   C        3Ah    ;        59h    Shift Pwr
  3317. --------b-1625------------------------------------
  3318. INT 16 - HUNTER 16 - RESET KEYBOARD
  3319.     AH = 25h
  3320. Return: AL = 00h
  3321. Desc:    restores the standard keyboard layout after any remapping
  3322. SeeAlso: AH=24h,AH=2Bh,AH=2Ch
  3323. --------b-1626------------------------------------
  3324. INT 16 - HUNTER 16 - CONTROL KEYCLICK
  3325.     AH = 26h
  3326.     AL = new state of keyclicks (00h disabled, 01h enabled)
  3327. Return: AL = 00h
  3328. SeeAlso: AH=2Ah
  3329. --------b-1627------------------------------------
  3330. INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
  3331.     AH = 27h
  3332.     AL = what to dump
  3333.         00h whole (virtual) window
  3334.         01h LCD window only
  3335. Return: AL = 00h
  3336. Desc:    control whether printscren dumps the whole 80x25 screen or only the
  3337.       part displayed in the LCD window
  3338. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  3339.       a 640x200 virtual screen
  3340. --------b-1629------------------------------------
  3341. INT 16 - HUNTER 16 - GET KEY REPEAT
  3342.     AH = 29h
  3343. Return: BL = Typematic rate (characters per second) (see #0386)
  3344.     BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
  3345. SeeAlso: AH=03h,AH=2Ah
  3346.  
  3347. (Table 0386)
  3348. Values for HUNTER 16 Typematic rate:
  3349.  00h    30.0     08h    15.0     10h    7.5     18h    3.7
  3350.  01h    26.7     09h    13.3     11h    6.7     19h    3.3
  3351.  02h    24.0     0Ah    12.0     12h    6.0     1Ah    3.0
  3352.  03h    21.8     0Bh    10.9     13h    5.5     1Bh    2.7
  3353.  04h    20.0     0Ch    10.0     14h    5.0     1Ch    2.5
  3354.  05h    18.5     0Dh     9.2     15h    4.6     1Dh    2.3
  3355.  06h    17.1     0Eh     8.6     16h    4.3     1Eh    2.1
  3356.  07h    16.0     0Fh     8.0     17h    4.0     1Fh    2.0
  3357. SeeAlso: AH=2Ah
  3358. --------b-162A------------------------------------
  3359. INT 16 - HUNTER 16 - CONTROL KEY REPEAT
  3360.     AH = 2Ah
  3361.     AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
  3362. SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
  3363. --------b-162B------------------------------------
  3364. INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
  3365.     AH = 2Bh
  3366.     AL = which key table to redefine
  3367.         00h unshifted
  3368.         01h shifted
  3369.         02h Numlock
  3370.     BH = standard scan code of key (00h-80h)
  3371.     BL = new scan code
  3372. Desc:    redefine the generated scan code from BH to BL
  3373. SeeAlso: AH=24h,AH=2Ah,AH=2Ch
  3374. --------b-162C------------------------------------
  3375. INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
  3376.     AH = 2Ch
  3377.     AL = Matrix code of key (see AH=29h)
  3378.     BL = new key code
  3379. Return: AL = status (00h success, nonzero failed)
  3380. Desc:    redefine the key code generated by holding the PAW key down and
  3381.       pressing the key in AL
  3382. SeeAlso: AH=24h,AH=2Bh
  3383. --------b-162D------------------------------------
  3384. INT 16 - HUNTER 16 - CONTROL BREAK KEYS
  3385.     AH = 2Dh
  3386.     AL = enabled break keys
  3387.         bit 0 Ctrl-C
  3388.         bit 1 Ctrl-Break
  3389.     BX = 0708h
  3390.     CX = 0910h
  3391.     DX = 1112h
  3392. Return: AL = status (00h success, FFh failed)
  3393. SeeAlso: AH=21h"HUNTER"
  3394. --------U-164252-----------------------------
  3395. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  3396.     AX = 4252h
  3397. Return: AX = 5242h if installed
  3398. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of the
  3399.       PC Magazine utility CAPTURE written by Tom Kihlken
  3400. SeeAlso: AX=4253h,AX=4254h
  3401. --------U-164253-----------------------------
  3402. INT 16 - TEXTCAP 2.0 - UNINSTALL
  3403.     AX = 4253h
  3404. Return: AX = segment of resident code
  3405. Notes:    the uninstall code does not check whether interrupt vectors have been
  3406.       chained by other programs
  3407.     the caller must free the main memory block (using the returned segment)
  3408. SeeAlso: AX=4252h,AX=4254h
  3409. --------U-164254-----------------------------
  3410. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  3411.     AX = 4254h
  3412. Return: AX = status
  3413.         4254h if screen dump will be written as soon as disk becomes idle
  3414.         5442h if screen dump written
  3415. SeeAlso: AX=4252h,AX=4253h
  3416. --------e-164500-----------------------------
  3417. INT 16 - Shamrock Software EMAIL - GET STATUS
  3418.     AX = 4500h
  3419.     DL = port number (01h = COM1)
  3420.     ES:BX -> 13-byte buffer for ASCIZ name
  3421. Return: AX = 4D00h if EMAIL installed on specified port
  3422.         ES:BX -> "" if no connection
  3423.           -> "*" if connection but caller has not identified name
  3424.           -> name otherwise
  3425.         CX = version (CH = major, CL = minor)
  3426.         DL = privilege level of user (00h = guest)
  3427.         DH = chosen language (00h German, 01h English)
  3428. SeeAlso: AX=4501h,AX=4502h
  3429. --------e-164501-----------------------------
  3430. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  3431.     AX = 4501h
  3432.     DL = port number (01h = COM1)
  3433. Return: AX = 4D00h if EMAIL installed on specified port
  3434.         BX = maximum connect time in clock ticks
  3435.         CX = maximum connect time for guests (without name) in clock ticks
  3436.         DX = elapsed connect time of current user in clock ticks
  3437. SeeAlso: AX=4500h
  3438. --------e-164502-----------------------------
  3439. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  3440.     AX = 4502h
  3441.     DL = port number (01h = COM1)
  3442. Return: AX = 4D00h if EMAIL installed on specified port
  3443.         BL = current value of serial port's Line Control Register
  3444.         BH = flags (see #0387)
  3445.         CX = selected country code (33 = France, 49 = Germany, etc)
  3446.         DX = baudrate divisor (115200/DX = baudrate)
  3447. SeeAlso: AX=4500h
  3448.  
  3449. Bitfields for Shamrock Software EMAIL flags:
  3450. Bit(s)    Description    (Table 0387)
  3451.  0    ISO code
  3452.  1    pause
  3453.  2    linefeed
  3454.  3    ANSI sequences
  3455. --------e-164503-----------------------------
  3456. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  3457.     AX = 4503h
  3458.     DL = port number (01h = COM1)
  3459.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  3460.     ES:BX -> ASCIZ string with new user command-word
  3461. Return: AX = 4D00h if EMAIL installed on specified port
  3462. Notes:    a single user command (consisting of only uppercase letters and digits)
  3463.       may be defined, and remains valid until it is overwritten or the
  3464.       EMAIL program terminates; the user command must be activated by
  3465.       calling AX=4504h at least once.
  3466.     an existing command word may be redefined with this function
  3467. SeeAlso: AX=4504h,AX=4505h
  3468. --------e-164504-----------------------------
  3469. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  3470.     AX = 4504h
  3471.     DL = port number (01h = COM1)
  3472.     ES:BX -> 80-byte buffer for ASCIZ user input line
  3473. Return: AX = 4D00h if EMAIL installed on specified port
  3474.         DL = flags
  3475.         bit 0: user function supported (always set)
  3476.         bit 1: user entered user-function command word
  3477.         if DL bit 1 set,
  3478.         ES:BX buffer contains line entered by user which begins with
  3479.             the defined command word and has been converted to all
  3480.             caps
  3481. Note:    caller must process the returned commandline and invoke AX=4505h
  3482.       within five seconds with the result of that processing
  3483. SeeAlso: AX=4503h,AX=4505h
  3484. --------e-164505-----------------------------
  3485. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  3486.     AX = 4505h
  3487.     DL = port number (01h = COM1)
  3488.     DH = error flag
  3489.         bit 3: set on error
  3490.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  3491. Return: AH = 4Dh if EMAIL installed on specified port
  3492.     AL = status
  3493.         00h successful
  3494.         02h unable to perform function (timeout, prev call not complete)
  3495.         other error
  3496. Notes:    if the error flag in DH is set, the string is not sent and an error
  3497.       message is generated instead; if this function is not called within
  3498.       five seconds of AX=4504h, EMAIL automatically generates an error
  3499.       message
  3500.     the string is copied into an internal buffer, allowing this function's
  3501.       caller to continue immediately
  3502. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  3503. --------e-164506-----------------------------
  3504. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  3505.     AX = 4506h
  3506.     DL = port number (01h = COM1)
  3507.     ES:BX -> 13-byte buffer for ASCIZ filename
  3508. Return: AX = 4D00h if EMAIL installed on specified port
  3509.         DH = Xmodem status
  3510.         00h no XGET command given
  3511.         01h XGET in progress
  3512.         02h XGET completed successfully
  3513.         ES:BX buffer filled with last filename given to XGET command
  3514.         (without path)
  3515. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  3516.       return DH=00h
  3517. SeeAlso: AX=4500h,INT 17/AX=2408h
  3518. --------K-164D4F-----------------------------
  3519. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  3520.     AX = 4D4Fh
  3521. Return: AX = 6F6Dh if installed
  3522.         ES = segment of resident code
  3523. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  3524. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  3525. --------J-165000-----------------------------
  3526. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  3527.     AX = 5000h
  3528.     BX = country code
  3529.         0001h USA (English), 0051h Japan
  3530. Return: AL = status
  3531.         00h successful
  3532.         01h bad country code
  3533.         02h other error
  3534. SeeAlso: AX=5001h,INT 10/AX=5000h,INT 17/AX=5000h
  3535. --------J-165001-----------------------------
  3536. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  3537.     AX = 5001h
  3538. Return: AL = status
  3539.         00h successful
  3540.         BX = country code
  3541.         02h error
  3542. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  3543. --------J-1651-------------------------------
  3544. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  3545.     AH = 51h
  3546. Return: AL = standard shift key states (see #0378,#0381)
  3547.     AH = Kana lock (00h off, 01h on)
  3548. SeeAlso: AH=02h,AH=12h,AH=22h
  3549. --------t-165453BX5242-----------------------
  3550. INT 16 - TSRBONES - INSTALLATION CHECK
  3551.     AX = 5453h ('TS')
  3552.     BX = 5242h ('RB')
  3553.     CX = 4F4Eh ('ON')
  3554.     DX = 4553h ('ES')
  3555. Return: AX = 4553h if installed
  3556.     BX = 4F4Eh if installed
  3557.     CX = 5242h if installed
  3558.     DX = 5453h if installed
  3559. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  3560. Note:    these values are the default as the TSRBONES package is distributed,
  3561.       but will normally be changed when implementing an actual TSR with
  3562.       the TSRBONES skeleton
  3563. SeeAlso: INT 2D"AMIS"
  3564. --------A-165500-----------------------------
  3565. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  3566.     AX = 5500h
  3567. Return: AX = 4D53h ('MS') if keyboard TSR present
  3568. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  3569.       that are present through this call.
  3570.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  3571.       handlers; otherwise it assumes that the TSR will handle the keyboard
  3572. SeeAlso: INT 1A/AX=3601h
  3573. --------A-1655FEDX0000-----------------------
  3574. INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR???
  3575.     AX = 55FEh
  3576.     DX = 0000h
  3577.     ES:BX -> ??? function
  3578.     ES:CX -> ??? structure
  3579. Return: AX = result
  3580.         4D4Bh only the INT 1B handler will be installed.
  3581.         <> 4D4Bh handlers for INT 08, INT 09, INT 16, INT 1B, and
  3582.           INT 1C are installed
  3583. Notes:    The pointer in ES:CX seems to point at a structure defining a callback
  3584.       function when new keyboard keys are pressed. If a TSR returns
  3585.       AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
  3586. SeeAlso: INT 16/AX=5500h,INT 1A/AX=3601h
  3587. --------U-1655FF-----------------------------
  3588. INT 16 - Swap Utilities - ???
  3589.     AX = 55FFh
  3590.     BX >= 0004h
  3591.     CX = function
  3592.         0000h set ??? flag
  3593.         other clear ??? flag
  3594. Note:    present in SWAPSH and SWAPDT v1.77j, distributed with PC Tools v7, as
  3595.       well as the Trusted Access SCRNBLNK.COM; this may be part of the
  3596.       standard TesSeRact library
  3597. SeeAlso: INT 2F/AX=5453h
  3598. --------c-165758BX4858-----------------------
  3599. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  3600.     AX = 5758h
  3601.     BX = 4858h ('HX')
  3602.     DX = 4443h ('DC')
  3603.     CX <> 5758h
  3604. Return: BX = 6878h if installed
  3605.     CX = 6463h if installed
  3606.         AX = code segment of TSR
  3607.         CX = internal version??? (v3.00 returns 0100h)
  3608. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  3609. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  3610.     the cache statistics are located early in the segment pointed at by
  3611.       AX on return
  3612. SeeAlso: INT 2F/AX=5758h
  3613. ----------165758BX5754-----------------------
  3614. INT 16 U - Netroom ??? - ???
  3615.     AX = 5758h
  3616.     BX = 5754h
  3617.     ???
  3618. Return: ???
  3619. ----------165758BX5755-----------------------
  3620. INT 16 U - Netroom ??? - ???
  3621.     AX = 5758h
  3622.     BX = 5755h
  3623.     DS:SI -> ???
  3624. Return: ???
  3625. ----------165758BX5756-----------------------
  3626. INT 16 U - Netroom ??? - INSTALLATION CHECK
  3627.     AX = 5758h
  3628.     BX = 5756h
  3629. Return: BX <> 5756h if installed
  3630. --------m-165758BX5858-----------------------
  3631. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  3632.     AX = 5758h
  3633.     BX = 5858h
  3634. Return: CF clear
  3635.     DX:BX -> saved copy of interrupt vector table
  3636. Note:    the installation check consists of calling this function and comparing
  3637.       BX against 5858h on return; if it has changed, PRENET is installed
  3638. SeeAlso: AX=5758h/BX=5859h
  3639. Index:    installation check;Netroom PRENET
  3640. --------m-165758BX5859-----------------------
  3641. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  3642.     AX = 5758h
  3643.     BX = 5859h
  3644. Return: CF clear
  3645.     DX:BX -> saved copy of interrupt vector table
  3646. Note:    the installation check consists of calling this function and comparing
  3647.       BX against 5859h on return; if it has changed, POSTNET is installed
  3648. SeeAlso: AX=5758h/BX=5858h
  3649. Index:    installation check;Netroom POSTNET
  3650. --------U-166969BX6968-----------------------
  3651. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  3652.     AX = 6969h
  3653.     BX = 6968h
  3654. Return: resident code unhooked, but not removed from memory
  3655. Index:    uninstall;BACKTALK
  3656. --------U-166969BX6969-----------------------
  3657. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  3658.     AX = 6969h
  3659.     BX = 6969h
  3660.     DX = 0000h
  3661. Return: DX nonzero if installed
  3662.         BX = CS of resident code
  3663.         DX = PSP segment of resident code
  3664.         DS:SI -> ASCIZ identification string "CPoint Talk"
  3665. --------i-166A6B-----------------------------
  3666. INT 16 U - FastJuice - DISABLE/UNLOAD???
  3667.     AX = 6A6Bh
  3668. Return: ???
  3669. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  3670. SeeAlso: AX=7463h
  3671. Index:    uninstall;FastJuice
  3672. --------G-166C63-----------------------------
  3673. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  3674.     AX = 6C63h ('lc')
  3675. Return: AX = 4C43h ('LC') if installed
  3676. Program: TMED is a freeware resident memory editor by Liang Chen
  3677. --------b-166F00BX0000-----------------------
  3678. INT 16 - HP HIL Vectras - HP HIL Extended BIOS INSTALLATION CHECK
  3679.     AX = 6F00h
  3680.     BX = 0000h
  3681. Return: BX = 4850h if present
  3682. Notes:    called by recent MS Mouse drivers looking for an HP-HIL mouse
  3683.     supported by ES, QS, and RS series HP Vectras
  3684. SeeAlso: AX=6F0Dh
  3685. --------b-166F0D-----------------------------
  3686. INT 16 - HP HIL Vectras - GET HIL Extended BIOS INTERRUPT NUMBER
  3687.     AX = 6F0Dh
  3688. Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
  3689. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  3690.       input system
  3691. SeeAlso: AX=6F0Eh,INT 6F"HP"
  3692. --------b-166F0E-----------------------------
  3693. INT 16 - HP HIL Vectras - SET HIL Extended BIOS INTERRUPT NUMBER
  3694.     AX = 6F0Eh
  3695.     BL = new interrupt number (60h-6Fh,78h-7Fh)
  3696. Return: AH = status (00h = successful)
  3697. Desc:    allows the HIL Extended BIOS software to use a non-default interrupt
  3698.       number in case of an interrupt conflict with another application
  3699. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  3700.       input system
  3701. SeeAlso: AX=6F0Dh,INT 6F"HP"
  3702. --------K-1670-------------------------------
  3703. INT 16 - FAKEY.COM - INSTALLATION CHECK
  3704.     AH = 70h
  3705. Return: AX = 1954h if installed
  3706. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  3707. --------K-1671-------------------------------
  3708. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  3709.     AH = 71h
  3710.     CX = number of keystrokes
  3711.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  3712. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  3713. SeeAlso: AH=05h,AH=72h
  3714. --------K-1672-------------------------------
  3715. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  3716.     AH = 72h
  3717. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  3718. SeeAlso: AH=71h
  3719. --------K-1673-------------------------------
  3720. INT 16 - FAKEY.COM - PLAY TONES
  3721.     AH = 73h
  3722.     CX = number of tones to play
  3723.     DS:SI -> array of tones (see #0388)
  3724. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  3725. SeeAlso: INT 15/AX=1019h
  3726.  
  3727. Format of FAKEY.COM tone array entries:
  3728. Offset    Size    Description    (Table 0388)
  3729.  00h    WORD    divisor for timer channel 2
  3730.  02h    WORD    duration in clock ticks
  3731. --------i-167463-----------------------------
  3732. INT 16 U - FastJuice - INSTALLATION CHECK
  3733.     AX = 7463h ("tc")
  3734. Return: AX = 5443h ("TC") if installed
  3735. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  3736. SeeAlso: AX=6A6Bh
  3737. --------R-1675-------------------------------
  3738. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  3739.     AH = 75h
  3740.     AL = number of ticks between checks for new screen changes
  3741. --------R-1676-------------------------------
  3742. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  3743.     AH = 76h
  3744.     AL = error checking type
  3745.         00h none
  3746.         01h fast
  3747.         02h slow
  3748. --------R-1677-------------------------------
  3749. INT 16 - pcANYWHERE III - LOG OFF
  3750.     AH = 77h
  3751.     AL = mode
  3752.         00h wait for another call
  3753.         01h leave in Memory Resident Mode
  3754.         02h leave in Automatic Mode
  3755.         FFh leave in current operating mode
  3756. --------U-167761-----------------------------
  3757. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  3758.     AX = 7761h ('wa')
  3759. Return: AX = 5741h ('WA') if installed
  3760. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  3761. SeeAlso: INT 21/AX=7761h
  3762. --------U-167788BX7789-----------------------
  3763. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  3764.     AX = 7788h
  3765.     BX = 7789h
  3766.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  3767. Return: AX = 7789h if installed and signature correct
  3768.     BX = 7788h
  3769.     SI destroyed
  3770. --------R-1679-------------------------------
  3771. INT 16 - pcANYWHERE III - CHECK STATUS
  3772.     AH = 79h
  3773. Return: AX = status
  3774.         FFFFh if resident and active
  3775.         FFFEh if resident but not active
  3776.         FFFDh if in Memory Resident mode
  3777.         FFFCh if in Automatic mode
  3778.         other value if not resident
  3779. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  3780. --------R-167A-------------------------------
  3781. INT 16 - pcANYWHERE III - CANCEL SESSION
  3782.     AH = 7Ah
  3783. --------R-167B00-----------------------------
  3784. INT 16 - pcANYWHERE III - SUSPEND
  3785.     AX = 7B00h
  3786. SeeAlso: AH=79h,AX=7B01h
  3787. --------R-167B01-----------------------------
  3788. INT 16 - pcANYWHERE III - RESUME
  3789.     AX = 7B01h
  3790. SeeAlso: AH=79h,AX=7B00h
  3791. --------R-167C-------------------------------
  3792. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  3793.     AH = 7Ch
  3794. Return: AH = port number
  3795.     AL = baud rate
  3796.         00h = 50 baud
  3797.         01h = 75 baud
  3798.         02h = 110 baud
  3799.         03h = 134.5 baud
  3800.         04h = 150 baud
  3801.         05h = 300 baud
  3802.         06h = 600 baud
  3803.         07h = 1200 baud
  3804.         08h = 1800 baud
  3805.         09h = 2000 baud
  3806.         0Ah = 2400 baud
  3807.         0Bh = 4800 baud
  3808.         0Ch = 7200 baud
  3809.         0Dh = 9600 baud
  3810.         0Eh = 19200 baud
  3811. --------R-167D-------------------------------
  3812. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  3813.     AH = 7Dh
  3814.     AL = subfunction
  3815.         00h set terminal parameters
  3816.         01h get terminal parameters
  3817.         02h get configuration header and terminal parameters
  3818.     DS:CX -> terminal parameter block
  3819. --------R-167E-------------------------------
  3820. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  3821.     AH = 7Eh
  3822.     AL = subfunction
  3823.         01h port input status
  3824.         Return AX = 0 if no characer ready,
  3825.                AX = 1 if character ready
  3826.         02h port input character
  3827.         Return AL = received character
  3828.         03h port output character in CX
  3829.         11h hang up phone
  3830. --------R-167F-------------------------------
  3831. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  3832.     AH = 7Fh
  3833.     AL = subfunction
  3834.         00h enable remote keyboard only
  3835.         01h enable host keyboard only
  3836.         02h enable both keyboards
  3837.         08h display top 24 lines
  3838.         09h display bottom 24 lines
  3839.         10h Hayes modem
  3840.         11h other modem
  3841.         12h direct connect
  3842. --------U-1680-------------------------------
  3843. INT 16 - MAKEY.COM - INSTALLATION CHECK
  3844.     AH = 80h
  3845. Return: AX = 1954h if installed
  3846. Program: MAKEY is a utility by System Enhancement Associates
  3847. --------U-168765BX4321-----------------------
  3848. INT 16 - AT.COM version 8/26/87 - API
  3849.     AX = 8765h
  3850.     BX = 4321h
  3851.     CX = ??? or FFFFh
  3852.     if CX = FFFFh
  3853.         DX = number of event to remove or FFFFh
  3854. Return: ES:BX -> event record array (see #0389)
  3855. Program: AT.COM is a resident scheduler by Bill Frolik
  3856.  
  3857. Format of AT.COM event record:
  3858. Offset    Size    Description    (Table 0389)
  3859.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  3860.  01h    BYTE    day of date on which to trigger
  3861.  02h    BYTE    month of date on which to trigger
  3862.  03h    BYTE    trigger time, minute
  3863.  04h    BYTE    trigger time, hour
  3864.  05h    WORD    offset of command to be executed
  3865. ----------1692-------------------------------
  3866. INT 16 - ???
  3867.     AH = 92h
  3868. Return: AH <= 80h if ???
  3869. Note:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  3870. SeeAlso: AH=05h"PCjr",AH=A2h
  3871. --------U-1699-------------------------------
  3872. INT 16 - SCOUT v5.4 - GET ???
  3873.     AH = 99h
  3874. Return: AX = ABCDh
  3875.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  3876. Program: Scout is a memory-resident file manager by New-Ware
  3877. SeeAlso: AH=9Eh
  3878. --------U-169E-------------------------------
  3879. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  3880.     AH = 9Eh
  3881. Return: AX = ABCDh if installed
  3882. Program: Scout is a memory-resident file manager by New-Ware
  3883. SeeAlso: AH=99h
  3884. ----------16A2-------------------------------
  3885. INT 16 - ???
  3886.     AH = A2h
  3887. Return: AH <= 80h if ???
  3888. Note:    this function is this function is called by the DOS 5+ KEYB.COM
  3889. SeeAlso: AH=92h
  3890. --------V-16AA-------------------------------
  3891. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  3892.     AH = AAh
  3893.     Various registers set up by high level language.
  3894. Return: Graphics performed
  3895. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  3896.       Modula 2 and others from DataBiten in Sweden. The library is
  3897.       installed as a memory resident driver.
  3898. --------U-16AABBBXEEFF-----------------------
  3899. INT 16 U - JORJ v4.3 - INSTALLATION CHECK
  3900.     AX = AABBh
  3901.     BX = EEFFh
  3902. Return: AX = EEFFh if installed
  3903.     BX = AABBh if installed
  3904.         CL = hotkey name (default 6Ah 'j' for Alt-J)
  3905. Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
  3906.       Co.
  3907. Index:    hotkeys;JORJ
  3908. --------m-16B0B1-----------------------------
  3909. INT 16 - VGARAM v1.00 - INSTALLATION CHECK
  3910.     AX = B0B1h
  3911.     ES:DI -> 6 byte signature "VGARAM"
  3912. Return: AX = B1B0h if installed,
  3913.     DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON
  3914. Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is
  3915.       not used in text modes available for DOS
  3916. --------K-16CA--BX736B-----------------------
  3917. INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
  3918.     AH = CAh
  3919.     BX = 736Bh ("sk")
  3920.     CX = 736Bh
  3921.     AL = function
  3922.         00h installation check
  3923.         Return: DX = words available in keyboard buffer
  3924.         01h place keystroke in buffer
  3925.         DX = keystroke (DH = scan code, DL = ASCII character)
  3926.         Return: DX = words available in keyboard buffer
  3927.                 FFFFh on error
  3928.         02h flush STACKEY and BIOS keyboard buffers
  3929. Return: AX = CAFFh if installed
  3930.         BX = segment of resident code
  3931.         CX = STACKEY version (CH = major, CL = minor)
  3932. Program: STACKEY is a shareware keyboard-input faking TSR
  3933. Index:    installation check;STACKEY
  3934. --------V-16CA00BX6570-----------------------
  3935. INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
  3936.     AX = CA00h
  3937.     BX = 6570h ("ep")
  3938.     CX = 6570h
  3939. Return: AX = CAFFh if installed
  3940.         BX = segment of resident code
  3941.         CX = ??? (0090h)
  3942. Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette settings
  3943.       permanent across mode switches
  3944. SeeAlso: AX=CA00h/BX=7670h
  3945. --------V-16CA00BX7670-----------------------
  3946. INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
  3947.     AX = CA00h
  3948.     BX = 7670h ("vp")
  3949.     CX = 7670h
  3950. Return: AX = CAFFh if installed
  3951.         BX = segment of resident code
  3952.         CX = ??? (0090h)
  3953. Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette settings
  3954.       permanent across mode switches
  3955. SeeAlso: AX=CA00h/BX=6570h
  3956. --------U-16D724CX00CB-----------------------
  3957. INT 16 U - APCAL v3.20 - GET ???
  3958.     AX = D724h
  3959.     CX = 00CBh
  3960. Return: AX = 0000h
  3961.     BX = 0000h
  3962.     DX:CX -> ??? or 0000h:0000h
  3963. Program: APCAL is an optionally-resident shareware appointment calendar by
  3964.       Gamma Software
  3965. SeeAlso: AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
  3966. --------U-16D724CX00CC-----------------------
  3967. INT 16 U - APCAL v3.20 - GET ???
  3968.     AX = D724h
  3969.     CX = 00CCh
  3970. Return: AX = 0000h
  3971.     BX = 0000h
  3972.     DX:CX -> ??? (apparently an internal data area)
  3973. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
  3974. --------U-16D724CX00CD-----------------------
  3975. INT 16 U - APCAL v3.20 - GET ???
  3976.     AX = D724h
  3977.     CX = 00CDh
  3978. Return: AX = ??? (5345h seen)
  3979. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
  3980. --------t-16E0E0-----------------------------
  3981. INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
  3982.     AX = E0E0h
  3983. Return: AX = 1F1Fh if installed
  3984.         DWORD 0040h:00F0h -> last data block in TSR list (see #0391)
  3985. Note:    the returned TSR list provides support for communication among TSRs
  3986.       built with TurboPower's Turbo Professional and Object Professional
  3987.       libraries for Turbo Pascal
  3988. SeeAlso: AX=F0F0h
  3989. --------U-16ED--BHED-------------------------
  3990. INT 16 - BORLAND TURBO LIGHTNING - API
  3991.     AH = EDh
  3992.     BH = EDh
  3993.     BL = function
  3994.         00h installation check
  3995.         Return: AX = 5205h
  3996.             CH = major version
  3997.             CL = minor version
  3998.         01h identical to function 00h???
  3999.         02h get resident data segment
  4000.         Return: AX = data segment of resident portion
  4001.         03h get resident ???
  4002.         Return: AX = offset of some buffer in resident code seg
  4003.         04h redefine auxiliary dictionary
  4004.         DS:SI -> counted filename string
  4005.         Return: AL = result code
  4006.         05h select active environment
  4007.         AL = environment (00h to 0Ch)
  4008.         Return: AX = status
  4009.                 0000h if OK
  4010.                 0001h if out of range
  4011.         06h toggle AutoProof???
  4012.         AL = state (00h off, 01h on)
  4013.         07h ???
  4014.         08h ???
  4015.         AL = char???
  4016.         CX = ???
  4017.         DX = ???
  4018.         Return: AX = 0, 1 or 2
  4019.         09h ???
  4020.         0Ah ???
  4021.         CX = ???
  4022.         DX = ???
  4023.         Return: AX = ???
  4024.         0Bh check dictionary integrity???
  4025.         DS:SI -> counted dictionary filename string
  4026.         Return: AX = 0, 40h, 80h
  4027.         0Ch spellcheck string (disk dictionary, possibly RAM dict as well)
  4028.         DS:SI -> counted string to check
  4029.         Return: AH = 0
  4030.             AL = result code
  4031.                00h string found in dictionary
  4032.                20h string begins more than one word
  4033.                40h string not found
  4034.         0Dh set ???
  4035.         (sets an internal flag)
  4036.         0Eh spellcheck string (RAM dictionary only)
  4037.         DS:SI -> counted string to check
  4038.         Return: AH = 00h
  4039.             AL = result code
  4040.                 00h string found in dictionary
  4041.                 01h string not found
  4042.                 02h ???
  4043.         0Fh ???
  4044.         10h ???
  4045. Notes:    AX in general returns an error code from most functions.
  4046. Index:    installation check;Turbo Lightning
  4047. --------U-16EF-------------------------------
  4048. INT 16 - CALCULATOR - INSTALLATION CHECK
  4049.     AH = EFh
  4050. Return: AX = 0088h if installed
  4051. Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
  4052.       Marek Kosznik
  4053. --------b-16F0-------------------------------
  4054. INT 16 - Compaq 386 and newer - SET CPU SPEED
  4055.     AH = F0h
  4056.     AL = speed code (see #0390)
  4057.     if AL=09h,
  4058.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  4059. SeeAlso: AH=F1h,AH=F3h
  4060.  
  4061. (Table 0390)
  4062. Values for speed code:
  4063.  00h    equivalent to 6 MHz 80286 (COMMON)
  4064.  01h    equivalent to 8 MHz 80286 (FAST)
  4065.  02h    full 16 MHz (HIGH)
  4066.  03h    toggles between 8 MHz-equivalent and speed set by system board switch
  4067.       (AUTO or HIGH)
  4068.  08h    full 16 MHz except 8 MHz-equivalent during floppy disk access
  4069.  09h    specify speed directly
  4070. --------t-16F0F0-----------------------------
  4071. INT 16 - TurboPower TSRs - INSTALLATION CHECK
  4072.     AX = F0F0h
  4073. Return: AX = 0F0Fh if installed
  4074.         ES:DI -> last data block in TSR list
  4075. Note:    the returned TSR list provides support for communication among TSRs
  4076.       built with TurboPower's Turbo Professional and Object Professional
  4077.       libraries for Turbo Pascal
  4078. SeeAlso: AX=E0E0h
  4079.  
  4080. Format of TurboPower TSR data block:
  4081. Offset    Size    Description    (Table 0391)
  4082.  00h    DWORD    pointer to program tag (counted ASCII string)
  4083.  04h    WORD    interface version number (0400h)
  4084.  06h    DWORD    pointer to command entry point
  4085.  0Ah    DWORD    pointer to previous data block (0000h:0000h if none)
  4086.  0Eh    DWORD    pointer to next data block (0000h:0000h if none)
  4087. ---swappable TSRs only---
  4088.  12h    DWORD    pointer to swapping data
  4089.  16h    DWORD    pointer to user data
  4090.     more???
  4091. --------b-16F1-------------------------------
  4092. INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED
  4093.     AH = F1h
  4094. Return: AL = speed code (see #0390)
  4095.     if AL = 09h, CX = speed code
  4096. SeeAlso: AH=F0h,AH=F3h
  4097. --------b-16F2-------------------------------
  4098. INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE
  4099.     AH = F2h
  4100. Return: AL = type
  4101.         00h if 11-bit AT keyboard is in use
  4102.         01h if 9-bit PC keyboard is in use
  4103.     AH = 00h (04/08/93 system ROM)
  4104. --------b-16F3-------------------------------
  4105. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  4106.     AH = F3h
  4107.     AL = new limit
  4108.         00h limit is 6 Mhz
  4109.         01h limit is 8 Mhz/6 Mhz
  4110. SeeAlso: AH=F0h,AH=F1h
  4111. --------U-16F398-----------------------------
  4112. INT 16 U - NORTON GUIDES - INSTALLATION CHECK
  4113.     AX = F398h
  4114. Return: AX = 6A73h ("js")
  4115.     BH = scan code of current hot key
  4116.     BL = ASCII code of current hot key
  4117. Note:    NG.EXE was written by John Socha
  4118. --------b-16F400-----------------------------
  4119. INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS
  4120.     AX = F400h
  4121. Return: AH = E2h
  4122.     AL = status
  4123.         00h not present
  4124.         01h enabled
  4125.         02h disabled
  4126. SeeAlso: AX=F401h,AX=F402h
  4127. --------b-16F401-----------------------------
  4128. INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER
  4129.     AX = F401h
  4130. Return: AX = E201h
  4131. SeeAlso: AX=F400h,AX=F402h
  4132. --------b-16F402-----------------------------
  4133. INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER
  4134.     AX = F402h
  4135. Return: AX = E202h
  4136. SeeAlso: AX=F400h,AX=F401h
  4137. --------v-16FA00DX5945-----------------------
  4138. INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK
  4139.     AX = FA00h
  4140.     DX = 5945h
  4141. Return: CF clear
  4142.     DI = 4559h
  4143.     BX = BIOS hotkey scancode (default 2F00h) (VSAFE only)
  4144.         FFFFh if disabled
  4145. Note:    MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection
  4146. SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
  4147. --------v-16FA01DX5945-----------------------
  4148. INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
  4149.     AX = FA01h
  4150.     DX = 5945h
  4151. Return: CF clear if successful
  4152.     DI = 4559h
  4153. SeeAlso: AX=FA00h
  4154. --------v-16FA02DX5945-----------------------
  4155. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS
  4156.     AX = FA02h
  4157.     DX = 5945h
  4158.     BL = new parameter flags (see #0392)
  4159. Return: CF clear
  4160.     DI = 4559h
  4161.     CL = old value of parameter flags
  4162.  
  4163. Bitfields for VSAFE/VWATCH parameter flags:
  4164. Bit(s)    Description    (Table 0392)
  4165.  7    Protect executable files
  4166.  6    Protect FD boot sector
  4167.  5    Protect HD boot sector
  4168.  4    Boot sector viruses
  4169.  3    Check executable files
  4170.  2    General write protect
  4171.  1    Resident
  4172.  0    HD Low level format
  4173. --------v-16FA03DX5945-----------------------
  4174. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
  4175.     AX = FA03h
  4176.     DX = 5945h
  4177. Return: CF clear
  4178.     DI = 4559h
  4179.     AX = 0002h
  4180. --------v-16FA04DX5945-----------------------
  4181. INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG
  4182.     AX = FA04h
  4183.     DX = 5945h
  4184. Return: CF clear
  4185.     DI = 4559h
  4186.     BL = hotkey disable flag (nonzero if hotkey disabled)
  4187. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  4188. SeeAlso: AX=FA00h,AX=FA05h
  4189. --------v-16FA05DX5945-----------------------
  4190. INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG
  4191.     AX = FA05h
  4192.     DX = 5945h
  4193.     BL = new value of hotkey disable flag (nonzero to disable hotkey)
  4194. Return: CF clear
  4195.     DI = 4559h
  4196. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  4197. SeeAlso: AX=FA00h,AX=FA04h
  4198. --------v-16FA06DX5945-----------------------
  4199. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG
  4200.     AX = FA06h
  4201.     DX = 5945h
  4202. Return: CF clear
  4203.     DI = 4559h
  4204.     BL = test status
  4205.         00h don't monitor network drives (default for VWATCH v2.1)
  4206.         FFh monitor network drives (default for VSAFE v2.0)
  4207.     CL = ??? (only VSAFE 2.0)
  4208. SeeAlso: AX=FA07h
  4209. --------v-16FA07DX5945-----------------------
  4210. INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG
  4211.     AX = FA07h
  4212.     DX = 5945h
  4213.     BL = new state
  4214.         00h don't monitor
  4215.         01h monitor network drives
  4216. Return: CF clear
  4217.     DI = 4559h
  4218. Note:    VWATCH v2.1 (from PC Tools 9.0) returns CF set instead
  4219. SeeAlso: AX=FA00h,AX=FA06h
  4220. --------v-16FA08DX5945-----------------------
  4221. INT 16 U - PC Tools v9+ VWATCH v2.1 - ???
  4222.     AX = FA08h
  4223.     DX = 5945h
  4224. Return: CF clear
  4225.     DI = 4559h
  4226.     AX = ??? (0002h)
  4227.     BX = version (BH=major, BL=two-digit minor)
  4228. Note:    this function is not supported by the PC Tools 9.0 VSAFE v2.0
  4229. SeeAlso: AX=FA00h,AX=FA06h
  4230. --------U-16FE55-----------------------------
  4231. INT 16 U - PC Tools v8+ programs - GET ???
  4232.     AX = FE55h
  4233.     CX = segment of resident program or 0000h for last loaded
  4234.     DX = 0000h
  4235. Return: DX = resident code segment (unchanged if CX=0000h on entry)
  4236.     AX = ??? or 0000h
  4237. Note:    this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP,
  4238.       and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK
  4239.       seem to hook it merely to return the same AX as the CPTASK loaded
  4240.       prior to them returned
  4241. --------U-16FEA4-----------------------------
  4242. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ???
  4243.     AX = FEA4h
  4244. Return: nothing
  4245. Note:    this function is identical to AX=FFA4h, and is implemented by the same
  4246.       code in DESKTOP
  4247. SeeAlso: AX=FFA4h
  4248. --------U-16FEC6-----------------------------
  4249. INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API
  4250.     AX = FEC6h
  4251.     BL = new state (00h enabled, nonzero disabled)
  4252. Return: nothing
  4253. Desc:    specify whether CPSCHED API calls other than this one and AX=FE55h will
  4254.       be honored
  4255. --------U-16FED3-----------------------------
  4256. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  4257.     AX = FED3h
  4258.     DS:SI -> 92-byte data record for ???
  4259. Return: ???
  4260. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  4261.       code in DESKTOP
  4262. SeeAlso: AX=FFD3h
  4263. --------U-16FEDC-----------------------------
  4264. INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS
  4265.     AX = FEDCh
  4266. Return: AX,DX destroyed
  4267. Index:    uninstall;CPSCHED
  4268. --------U-16FEEFCX0000-----------------------
  4269. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
  4270.     AX = FEEFh
  4271.     CX = 0000h
  4272. Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
  4273.         BX = segment of resident portion
  4274.         DX = (CPSCHED v8.0) resident CS
  4275. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  4276.       code in DESKTOP
  4277. SeeAlso: AX=FFEFh
  4278. --------U-16FEF1-----------------------------
  4279. INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
  4280.     AX = FEF1h
  4281.     BX = ???
  4282. Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
  4283.     DX = 5555h
  4284. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  4285.       code in DESKTOP
  4286. SeeAlso: AX=FFF1h
  4287. --------K-16FF-------------------------------
  4288. INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
  4289.     AH = FFh
  4290.     DX = scan code
  4291. Return: AL = status
  4292.         00h success
  4293.         01h failure
  4294. Program: KBUF is a keyboard buffer expander by Mark Adler
  4295. SeeAlso: AH=05h
  4296. --------V-16FF-------------------------------
  4297. INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT
  4298.     AH = FFh
  4299. Return: AL = interrupt number to which BIOS keyboard handler has been relocated
  4300.     AL+1 = Zoom interrupt number
  4301.     BX = hotkey
  4302. Notes:    the default interrupts are 60h for keyboard and 61h for Zoom interrupt;
  4303.       the default hot key is F10
  4304.     not all vendors include the Tseng TSR which supports these functions
  4305. SeeAlso: INT 60"OPTIMA"
  4306. Index:    hotkeys;OPTIMA 1024 VGA
  4307. --------d-16FF70BX0000-----------------------
  4308. INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
  4309.     AX = FF70h
  4310.     BX = 0000h
  4311.     CX = 4C69h ('Li')
  4312.     DX = 6E6Bh ('nk')
  4313. Return: AX = 0000h
  4314.     CX = 4350h ('CP')
  4315.     DH = major version
  4316.     DL = minor version
  4317. Program: DRIVEMAP is a redirector which allows drives on computers connected
  4318.       over the parallel or serial ports to appear as local drives
  4319. SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h
  4320. --------d-16FF70BX0001-----------------------
  4321. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  4322.     AX = FF70h
  4323.     BX = 0001h
  4324.     DL = ???
  4325. Return: AX = ???
  4326.     DH = ???
  4327. SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h
  4328. --------d-16FF70BX0002-----------------------
  4329. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  4330.     AX = FF70h
  4331.     BX = 0002h
  4332.     CX = ???
  4333.     DX = ???
  4334. Return: AX = ??? or FFFEh/FFFFh on error
  4335.     DL = ???
  4336. BUG:    DRIVEMAP will branch to random locations for BX values other than
  4337.       those listed above for v8.0-9.0 because a) the incorrect register is
  4338.       range-tested, resulting in BX=0003h-5CD6h being accepted as valid
  4339.       function numbers, and b) the conditional which branches on invalid
  4340.       function numbers jumps to the following instruction, becoming a NOP
  4341. SeeAlso: INT 2F/AX=9203h"DRIVEMAP"
  4342. Index:    installation check;DRIVEMAP
  4343. --------T-16FF80BX0000-----------------------
  4344. INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
  4345.     AX = FF80h
  4346.     BX = 0000h
  4347.     CX = 0000h
  4348.     DX = 0000h
  4349. Return: CX = 5555h if installed
  4350. Program: CPTASK is a task switcher by Central Point Software
  4351. --------T-16FF80BX0001-----------------------
  4352. INT 16 U - PC Tools v8+ CPTASK - GET ???
  4353.     AX = FF80h
  4354.     BX = 0001h
  4355.     ???
  4356. Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0)
  4357.     BX = ??? (PSP segment of resident code???)
  4358. --------T-16FF80BX0002-----------------------
  4359. INT 16 U - PC Tools v8+ CPTASK - GET ???
  4360.     AX = FF80h
  4361.     BX = 0002h
  4362. Return: DX:SI -> ???
  4363. --------T-16FF80BX0003-----------------------
  4364. INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
  4365.     AX = FF80h
  4366.     BX = 0003h
  4367. Return: AX = flags (see #0393)
  4368. SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h
  4369.  
  4370. Bitfields for CPTASK flags:
  4371. Bit(s)    Description    (Table 0393)
  4372.  10    ???
  4373.  13    ???
  4374.  14    ???
  4375.  15    ???
  4376. --------T-16FF80BX0004-----------------------
  4377. INT 16 U - PC Tools v8+ CPTASK - SET ???
  4378.     AX = FF80h
  4379.     BX = 0004h
  4380.     CX = new value of ???
  4381. Return: ???
  4382. Note:    this function also sets bit 14 of the flags word returned by
  4383.       AX=FF80h/BX=0003h
  4384. --------T-16FF80BX0005-----------------------
  4385. INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
  4386.     AX = FF80h
  4387.     BX = 0005h
  4388. Return: AX = number of active tasks???
  4389. --------T-16FF80BX0006-----------------------
  4390. INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
  4391.     AX = FF80h
  4392.     BX = 0006h
  4393. Return: AX = old state (0000h clear, 0001h set)
  4394. Note:    the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h
  4395. --------T-16FF80BX0007-----------------------
  4396. INT 16 U - PC Tools v8+ CPTASK - ???
  4397.     AX = FF80h
  4398.     BX = 0007h
  4399.     ES:DI -> ???
  4400.     ???
  4401. Return: ???
  4402. --------T-16FF80BX0008-----------------------
  4403. INT 16 U - PC Tools v8+ CPTASK - ???
  4404.     AX = FF80h
  4405.     BX = 0008h
  4406.     ???
  4407. Return: ???
  4408. --------T-16FF80BX0009-----------------------
  4409. INT 16 U - PC Tools v8+ CPTASK - GET ???
  4410.     AX = FF80h
  4411.     BX = 0009h
  4412. Return: CL = ???
  4413.     CH = ??? (01h or 02h)
  4414. --------T-16FF80BX000A-----------------------
  4415. INT 16 U - PC Tools v9+ CPTASK - SET ???
  4416.     AX = FF80h
  4417.     BX = 000Ah
  4418.     DS:SI -> 128-byte buffer containing ???
  4419. --------T-16FF80BX000B-----------------------
  4420. INT 16 U - PC Tools v9+ CPTASK - SET ???
  4421.     AX = FF80h
  4422.     BX = 000Bh
  4423.     DX = index of ??? task (1-10)
  4424. --------T-16FF80BX000C-----------------------
  4425. INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
  4426.     AX = FF80h
  4427.     BX = 000Ch
  4428.     CX = new delay time in minutes
  4429. --------T-16FF80BX4350-----------------------
  4430. INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
  4431.     AX = FF80h
  4432.     BX = 4350h ('CP')
  4433.     CX = 5354h ('ST')
  4434. Return: never returns; terminates all tasks and exits to program originally
  4435.       calling CPTASK
  4436. --------U-16FF90-----------------------------
  4437. INT 16 U - PC Tools v8+ DESKTOP - ???
  4438.     AX = FF90h
  4439.     ???
  4440. Return: ???
  4441. Note:    available only when popped up
  4442. --------U-16FF91-----------------------------
  4443. INT 16 U - PC Tools v7+ DESKTOP - ???
  4444.     AX = FF91h
  4445.     ???
  4446. Return: AX = 0000h
  4447. Note:    calls AX=FFFDh after ???
  4448. SeeAlso: AX=FF92h,AX=FFFDh
  4449. --------U-16FF92-----------------------------
  4450. INT 16 U - PC Tools v7+ DESKTOP - ???
  4451.     AX = FF92h
  4452.     ???
  4453. Return: AX = 0000h
  4454. Note:    like AX=FF91h, but temporarily sets ??? to 3
  4455. SeeAlso: AX=FF91h,AX=FFFDh
  4456. --------U-16FF93-----------------------------
  4457. INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
  4458.     AX = FF93h
  4459. --------U-16FF94-----------------------------
  4460. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  4461.     AX = FF94h
  4462.     CX = ??? (default 0017h)
  4463. --------U-16FF95-----------------------------
  4464. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  4465.     AX = FF95h
  4466.     BX = ???
  4467. --------U-16FF96-----------------------------
  4468. INT 16 U - PC Tools v7+ DESKTOP - ???
  4469.     AX = FF96h
  4470.     CL = ???
  4471. Return: AX = ???
  4472. --------U-16FF97-----------------------------
  4473. INT 16 U - PC Tools v7+ DESKTOP - ???
  4474.     AX = FF97h
  4475.     DS:DX -> buffer for ??? (see #0394)
  4476. Return: ???
  4477.  
  4478. Format of PC Tools DESKTOP buffer:
  4479. Offset    Size    Description    (Table 0394)
  4480.  00h 48 BYTEs    ???
  4481.  30h 128 BYTEs    ???
  4482. --------U-16FF98-----------------------------
  4483. INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
  4484.     AX = FF98h
  4485.     DX = byte offset in file of overlay header (see #0395)
  4486. Return: BX = file handle for DESK.OVL file
  4487. Desc:    open the DESK.OVL file, seek to the specified offset, read in the
  4488.       overlay header, and seek to the offset specified by the header
  4489.  
  4490. Format of PC Tools DESKTOP overlay header:
  4491. Offset    Size    Description    (Table 0395)
  4492.  00h 12 BYTEs    NUL-padded ASCII overlay filename
  4493.  0Ch    DWORD    offset within DESK.OVL file of actual overlay
  4494. --------U-16FF99-----------------------------
  4495. INT 16 U - PC Tools v7+ DESKTOP - ???
  4496.     AX = FF99h
  4497.     ???
  4498. Return: ???
  4499. --------U-16FF9A-----------------------------
  4500. INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
  4501.     AX = FF9Ah
  4502. Return: ES:BX -> name of current color scheme
  4503. Note:    available even if not popped up
  4504. --------U-16FF9B-----------------------------
  4505. INT 16 U - PC Tools v7+ DESKTOP - UNUSED
  4506.     AX = FF9Bh
  4507. Return: ???
  4508. Note:    sounds triple-length beep
  4509. --------T-16FF9C-----------------------------
  4510. INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
  4511.     AX = FF9Ch
  4512.     BL = function
  4513.         00h set ??? pointer
  4514.         DS:SI -> ???
  4515.         01h clear pointer to 0000h:0000h
  4516. ----------16FF9D-----------------------------
  4517. INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
  4518.     AX = FF9Dh
  4519.     ES:BX -> ??? word
  4520. Return: ???
  4521. Note:    if ES is non-zero, the word pointed at by ES:BX determines whether the
  4522.       ??? flag is cleared (word = 0000h) or set (word is nonzero).    The
  4523.       flag is always cleared if ES=0000h.
  4524. --------U-16FF9E-----------------------------
  4525. INT 16 U - PC Tools v7+ DESKTOP - ???
  4526.     AX = FF9Eh
  4527.     DL = ???
  4528.         bit 7: ???
  4529.         bits 6-0: function number??? (00h,01h,other)
  4530.     ???
  4531. Return: ???
  4532. --------U-16FFA1-----------------------------
  4533. INT 16 U - PC Tools v7+ DESKTOP - ???
  4534.     AX = FFA1h
  4535.     ???
  4536. Return: ???
  4537. Note:    same as AX=FFA2h, except ??? set to FFh
  4538. SeeAlso: AX=FFA2h
  4539. --------U-16FFA2-----------------------------
  4540. INT 16 U - PC Tools v7+ DESKTOP - ???
  4541.     AX = FFA2h
  4542.     ???
  4543. Return: ???
  4544. Note:    calls AX=FFC7h (remove window) and AX=FFFDh
  4545. SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
  4546. --------y-16FFA3BX0000-----------------------
  4547. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
  4548.     AX = FFA3h
  4549.     BX = 0000h
  4550.     CX = 0000h
  4551. Return: AX = segment of resident code
  4552.     BX = 5555h
  4553.     CX = 5555h
  4554. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  4555. SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h,INT 2F/AX=6284h
  4556. --------y-16FFA3BX0001-----------------------
  4557. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  4558.     AX = FFA3h
  4559.     BX = 0001h
  4560.     CX = 0001h
  4561. Return: AX:BX -> ???
  4562.     CX = BX
  4563. --------y-16FFA3BX0002-----------------------
  4564. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  4565.     AX = FFA3h
  4566.     BX = 0002h
  4567.     CX = 0002h
  4568. Return: AX = ??? (0 or 1)
  4569.     CX = BX = AX
  4570. --------y-16FFA3BX0003-----------------------
  4571. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  4572.     AX = FFA3h
  4573.     BX = 0003h
  4574.     CX = 0003h
  4575. Return: AX = ??? (0 or 1)
  4576.     CX = BX = AX
  4577. --------y-16FFA3BX0004-----------------------
  4578. INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
  4579.     AX = FFA3h
  4580.     BX = 0004h
  4581.     CX = 0004h
  4582. SeeAlso: AX=FFA3h/BX=0005h
  4583. --------y-16FFA3BX0005-----------------------
  4584. INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
  4585.     AX = FFA3h
  4586.     BX = 0005h
  4587.     CX = 0005h
  4588. SeeAlso: AX=FFA3h/BX=0004h
  4589. --------y-16FFA3BX0006-----------------------
  4590. INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
  4591.     AX = FFA3h
  4592.     BX = 0006h
  4593.     CX = 0006h
  4594.     DX = current PSP segment as known to DOS??? or 0000h
  4595. ----------16FFA3BXFFA3-----------------------
  4596. INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
  4597.     AX = FFA3h
  4598.     BX = FFA3h
  4599.     CX = FFA3h
  4600. Return: BX = CX = 5555h if installed
  4601.         AX = resident code segment
  4602. Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk-
  4603.       access indicator on the screen; in v7 and v8, this function was
  4604.       provided by DATAMON
  4605. Note:    DSKLIGHT chains to the previous handler if BX or CX is not FFA3h
  4606. --------U-16FFA4-----------------------------
  4607. INT 16 U - PC Tools v7-8 DESKTOP - ???
  4608.     AX = FFA4h
  4609. Return: ???
  4610. Notes:    available even when not popped up
  4611.     sets unknown flag if ??? conditions met
  4612. SeeAlso: AX=FEA4h
  4613. --------c-16FFA5CX1111-----------------------
  4614. INT 16 - PC-Cache v6+ - INSTALLATION CHECK
  4615.     AX = FFA5h
  4616.     CX = 1111h
  4617. Return: CH = 00h if installed
  4618.         ES:DI -> internal data (see #0396)
  4619.         CL = cache state
  4620.         01h enabled
  4621.         02h disabled
  4622. SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
  4623.  
  4624. Format of PC-Cache internal data:
  4625. Offset    Size    Description    (Table 0396)
  4626. -1Ch 20 BYTEs    cached drive list, one byte per drive A: to T:
  4627.         each byte is either blank (20h) or drive letter (41h-54h)
  4628.  -8    BYTE    ???
  4629.  -7    WORD    number of physical transfers (scaled down to 0000h-7FFFh)
  4630.  -5    WORD    number of saved transfers (scaled down to 0000h-7FFFh)
  4631.  -3   3 BYTEs    ???
  4632. --------c-16FFA5CXAAAA-----------------------
  4633. INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
  4634.     AX = FFA5h
  4635.     CX = AAAAh
  4636. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  4637. SeeAlso: AX=FFA5h/CX=CCCCh
  4638. --------c-16FFA5CXCCCC-----------------------
  4639. INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
  4640.     AX = FFA5h
  4641.     CX = CCCCh
  4642. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  4643. Note:    delayed writes are automatically disabled on EXECing
  4644.       (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
  4645.       however, delayed writes are not automatically reenabled upon the
  4646.       program's termination in v6.
  4647. SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
  4648. --------c-16FFA5CXDDDD-----------------------
  4649. INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
  4650.     AX = FFA5h
  4651.     CX = DDDDh
  4652. SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
  4653. --------c-16FFA5CXEEEE-----------------------
  4654. INT 16 - PC-Cache v6+ - ENABLE CACHE
  4655.     AX = FFA5h
  4656.     CX = EEEEh
  4657. SeeAlso: AX=FFA5h/CX=DDDDh
  4658. --------c-16FFA5CXFFFF-----------------------
  4659. INT 16 - PC-Cache v6+ - FLUSH CACHE
  4660.     AX = FFA5h
  4661.     CX = FFFFh
  4662. SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
  4663. --------U-16FFA6-----------------------------
  4664. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  4665.     AX = FFA6h
  4666. Return: DS:SI -> ???
  4667. Note:    available only when popped up
  4668. --------U-16FFA7-----------------------------
  4669. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? PATH
  4670.     AX = FFA7h
  4671. Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
  4672. --------U-16FFA8-----------------------------
  4673. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  4674.     AX = FFA8h
  4675.     DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
  4676.     ???
  4677. Return: ???
  4678. Notes:    available only when popped up
  4679.     strings copied into internal buffer, among other actions
  4680. --------U-16FFA9-----------------------------
  4681. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET VERSION STRING
  4682.     AX = FFA9h
  4683. Return: DS:SI -> version string
  4684. --------U-16FFAA-----------------------------
  4685. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  4686.     AX = FFAAh
  4687.     ???
  4688. Return: ???
  4689. Note:    available only when popped up
  4690. --------U-16FFAB-----------------------------
  4691. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET EDITOR SETTINGS???
  4692.     AX = FFABh
  4693. Return: DS:SI -> editor setting strings???
  4694. --------U-16FFAC-----------------------------
  4695. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  4696.     AX = FFACh
  4697.     DL = ???
  4698. Note:    available only when popped up
  4699. --------U-16FFAD-----------------------------
  4700. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  4701.     AX = FFADh
  4702.     DL = ???
  4703. --------U-16FFAE-----------------------------
  4704. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  4705.     AX = FFAEh
  4706. Return: AL = ???
  4707. --------U-16FFAF-----------------------------
  4708. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  4709.     AX = FFAFh
  4710.     DL = ???
  4711. --------U-16FFB0-----------------------------
  4712. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  4713.     AX = FFB0h
  4714.     BL = ???
  4715. --------U-16FFB1-----------------------------
  4716. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  4717.     AX = FFB1h
  4718.     ???
  4719. Return: ???
  4720. --------U-16FFB2-----------------------------
  4721. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  4722.     AX = FFB2h
  4723. Return: DS:SI -> ???
  4724. --------U-16FFB3-----------------------------
  4725. INT 16 U - PC Tools v5.5-8.0 DESKTOP - ???
  4726.     AX = FFB3h
  4727.     ???
  4728. Return: ???
  4729. Note:    available only when popped up
  4730. --------U-16FFB4-----------------------------
  4731. INT 16 U - PC Tools v5.5-8.0 DESKTOP - SET ??? FLAG
  4732.     AX = FFB4h
  4733. Note:    available only when popped up
  4734. SeeAlso: AX=FFBBh
  4735. --------U-16FFB5-----------------------------
  4736. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET WINDOW PARAMETERS
  4737.     AX = FFB5h
  4738.     BX = window specifier (000Fh to 0019h) (see #0397)
  4739.     DX = 0000h get, nonzero = set
  4740.     ES:DI -> window parameter buffer (see #0398)
  4741. SeeAlso: AX=FFCBh
  4742.  
  4743. (Table 0397)
  4744. Values for PC Tools DESKTOP window specifier:
  4745.  000Fh    comm/FAX
  4746.  0014h    hotkey selection
  4747.  0015h    ASCII table
  4748.  0016h    system colors menu
  4749.  
  4750. Format of PC Tools DESKTOP window parameters:
  4751. Offset    Size    Description    (Table 0398)
  4752.  00h    BYTE    rows in window, not counting frame
  4753.  01h    BYTE    columns in window, not counting frame
  4754.  02h    BYTE    row number of top of window
  4755.  03h    BYTE    2*column number of left of window
  4756.  04h    BYTE    character attribute for ???
  4757.  05h    BYTE    character attribute for background/border
  4758.  06h    BYTE    character attribute for ???
  4759.  07h    DWORD    pointer to ??? on screen
  4760.  0Bh  4 BYTEs    ???
  4761.  0Fh    BYTE    nonzero if window may be resized
  4762. Note:    if running in monochrome mode, character attributes at offsets 04h to
  4763.       06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
  4764.       are changed to 07h on reading
  4765. --------U-16FFB6-----------------------------
  4766. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  4767.     AX = FFB6h
  4768. Return: AH = ???
  4769.     AL = ???
  4770. --------U-16FFB7-----------------------------
  4771. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET ???
  4772.     AX = FFB7h
  4773.     BX = direction
  4774.         0000h copy to buffer
  4775.         else  copy from buffer
  4776.     DS:SI -> 70-byte buffer with ???
  4777. Return: data copied
  4778. Note:    available only when popped up under v6.0+
  4779. --------U-16FFB8-----------------------------
  4780. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET/SET???
  4781.     AX = FFB8h
  4782.     BH = subfunction
  4783.         00h get
  4784.         Return: BL = old value of ???
  4785.             CL = old value of ??? (v6.0+)
  4786.             CH = old value of ??? (v6.0+)
  4787.         nonzero set
  4788.         BL = new value for ???
  4789.         CL = new value for ??? (v6.0+)
  4790.         CH = new value for ??? (v6.0+)
  4791.         DH = ???
  4792.         Return: AL = old value replaced by CL (v6.0+)
  4793.             AH = old value replaced by CH (v6.0+)
  4794. --------U-16FFB9-----------------------------
  4795. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4796.     AX = FFB9h
  4797.     ???
  4798. Return: AX = ???
  4799.     CX = ???
  4800.     DS:SI -> ???
  4801.     ES:DI -> ???
  4802. --------U-16FFBA-----------------------------
  4803. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4804.     AX = FFBAh
  4805.     ???
  4806. Return: AX = ???
  4807. Note:    available only when popped up
  4808. --------U-16FFBB-----------------------------
  4809. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLEAR ??? FLAG
  4810.     AX = FFBBh
  4811. Note:    available only when popped up
  4812. SeeAlso: AX=FFB4h
  4813. --------U-16FFBC-----------------------------
  4814. INT 16 U - PC Tools v5.1-8.0 DESKTOP - RESTORE ORIGINAL SCREEN???
  4815.     AX = FFBCh
  4816. --------U-16FFBD-----------------------------
  4817. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? DATABASE INDEXING MESSAGES
  4818.     AX = FFBDh
  4819.     ???
  4820. Return: ???
  4821. --------U-16FFBE-----------------------------
  4822. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4823.     AX = FFBEh
  4824.     ???
  4825. Return: ???
  4826. Note:    available only when popped up
  4827. --------U-16FFBF-----------------------------
  4828. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4829.     AX = FFBFh
  4830.     BX = DOS file handle to write on
  4831.     ???
  4832. Return: ???
  4833. Note:    available only when popped up
  4834. --------U-16FFC0-----------------------------
  4835. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4836.     AX = FFC0h
  4837.     ???
  4838. Return: AX = 0000h if successful
  4839.     AX = FFFFh on error
  4840. Note:    available only when popped up
  4841. --------U-16FFC1-----------------------------
  4842. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4843.     AX = FFC1h
  4844.     BL = ???
  4845.     ES:DI -> data structure (see #0399)
  4846.     ???
  4847. Return: AX = ???
  4848. Note:    available only when popped up
  4849. SeeAlso: AX=FFC2h,AX=FFC3h
  4850.  
  4851. Format of PC Tools DESKTOP data structure:
  4852. Offset    Size    Description    (Table 0399)
  4853.  00h    WORD    ???
  4854.  02h    WORD    ???
  4855.  04h    WORD    ???
  4856.  06h    WORD    ???
  4857.  08h    WORD    ???
  4858.  0Ah    BYTE    ???
  4859.  0Bh    BYTE    ??? (zero/nonzero)
  4860. ---v7.1---
  4861.  0Ch    WORD    ???
  4862.  0Eh    BYTE    ???
  4863.  0Fh    WORD    ???
  4864.  11h    WORD    ???
  4865.     ???
  4866. --------U-16FFC2-----------------------------
  4867. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4868.     AX = FFC2h
  4869.     BL = ???
  4870.     ES:DI -> data structure (see #0399)
  4871.     ???
  4872. Return: AH = ???
  4873.     CX = ???
  4874.     DH = ???
  4875.     DL = ???
  4876. Note:    available only when popped up
  4877. SeeAlso: AX=FFC1h,AX=FFC3h
  4878. --------U-16FFC3-----------------------------
  4879. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4880.     AX = FFC3h
  4881.     BL = ???
  4882.     ES:DI -> data structure (see #0399)
  4883.     ???
  4884. Return: AH = ???
  4885.     CX = ???
  4886.     DH = ???
  4887.     DL = ???
  4888. Note:    available only when popped up
  4889. SeeAlso: AX=FFC1h,AX=FFC2h
  4890. --------U-16FFC4-----------------------------
  4891. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  4892.     AX = FFC4h
  4893. Return: AL = ???
  4894.     BX = segment of scratch space???
  4895.     CX = segment of stored screen data (section covered by window???)
  4896.     DX = segment of window parameters for ???
  4897.     ES:BP -> ???
  4898. Note:    available only when popped up in versions prior to 6.0
  4899. --------U-16FFC5-----------------------------
  4900. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK WHETHER DESKTOP LOADED RESIDENT
  4901.     AX = FFC5h
  4902. Return: BL = Desktop state
  4903.         00h if nonresident
  4904.         nonzero if loaded resident
  4905. Note:    available only when popped up; should call AX=FFEFh first to ensure
  4906.       that DESKTOP is active
  4907. SeeAlso: AX=FFEFh,AX=FFF3h
  4908. --------U-16FFC6-----------------------------
  4909. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  4910.     AX = FFC6h
  4911.     BL = new value for ???
  4912. --------U-16FFC7-----------------------------
  4913. INT 16 U - PC Tools v5.1-8.0 DESKTOP - REMOVE WINDOW
  4914.     AX = FFC7h
  4915.     ???
  4916. Return: ???
  4917. --------U-16FFC8-----------------------------
  4918. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  4919.     AX = FFC8h
  4920. Return: DS:SI -> ???
  4921. Note:    valid only while popped up
  4922. --------U-16FFC9-----------------------------
  4923. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY DATA TO CLIPBOARD
  4924.     AX = FFC9h
  4925.     DS:SI -> characters to store in clipboard
  4926.     CX = size in bytes
  4927. Return: CF set on error
  4928. Notes:    available only when popped up
  4929.     while copying, bytes of 00h and 0Ah are skipped
  4930. --------U-16FFCA-----------------------------
  4931. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  4932.     AX = FFCAh
  4933.     DX = ???
  4934. Return: AX destroyed
  4935. Note:    available only when popped up
  4936. --------U-16FFCB-----------------------------
  4937. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SELECT WINDOW PARAMETERS???
  4938.     AX = FFCBh
  4939.     DX = window specifier???
  4940. Return: AX destroyed
  4941. Note:    available only when popped up
  4942. SeeAlso: AX=FFB5h
  4943. --------U-16FFCC-----------------------------
  4944. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY ASCIZ STRING CENTERED IN WINDOW
  4945.     AX = FFCCh
  4946.     DS:SI -> ASCIZ string
  4947. Return: AX = ???
  4948.     CX = ???
  4949.     ES:DI -> address past last character displayed (v5.1/5.5)
  4950.           -> ??? on menu bar (v6.0)
  4951. --------U-16FFCD-----------------------------
  4952. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4953.     AX = FFCDh
  4954.     DS:DX -> ???
  4955. Return: ???
  4956. Note:    available only when popped up
  4957. --------U-16FFCE-----------------------------
  4958. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? DELAYS
  4959.     AX = FFCEh
  4960.     CX = ???
  4961. Return: nothing???
  4962. --------U-16FFCF-----------------------------
  4963. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLOSE PRINTER/PRINT FILE
  4964.     AX = FFCFh
  4965. Note:    available only when popped up
  4966. --------U-16FFD0-----------------------------
  4967. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO PRINT???
  4968.     AX = FFD0h
  4969.     ???
  4970. Return: ???
  4971. Note:    available only when popped up
  4972. --------U-16FFD1-----------------------------
  4973. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY PRINT OPTIONS MENU
  4974.     AX = FFD1h
  4975. Return: BX = number of copies
  4976.     DX = destination
  4977.         00h cancel
  4978.         01h LPT1
  4979.         02h LPT2
  4980.         03h LPT3
  4981.         04h COM1
  4982.         05h COM2
  4983.         06h disk file
  4984. Note:    available only when popped up
  4985. --------U-16FFD2-----------------------------
  4986. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4987.     AX = FFD2h
  4988.     BX = ???
  4989. Return: BL = ???
  4990. Note:    available only when popped up
  4991. --------U-16FFD3-----------------------------
  4992. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  4993.     AX = FFD3h
  4994.     DS:SI -> 92-byte data record for ???
  4995. Return: ???
  4996. SeeAlso: AX=FED3h
  4997. --------U-16FFD4BH3C-------------------------
  4998. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CREATE/OPEN/DELETE FILE
  4999.     AX = FFD4h
  5000.     BH = 3Ch create file (with no attributes)
  5001.          3Dh open file
  5002.          41h delete file
  5003.     BL = access mode
  5004.          00h read only
  5005.          01h write only
  5006.          02h read/write
  5007.     DS:SI -> ASCIZ filename
  5008. Return: BX = file handle
  5009.         0000h on error
  5010. Note:    operation is attempted in (in order) the directory from which the
  5011.       desktop was started/run???, the directory specified with the
  5012.       filename, X:\PCTOOLS\, and X:\
  5013. --------U-16FFD5-----------------------------
  5014. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5015.     AX = FFD5h
  5016.     ???
  5017. Return: ???
  5018. Note:    available only when popped up
  5019. --------U-16FFD6-----------------------------
  5020. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5021.     AX = FFD6h
  5022.     BX = ???
  5023.     CX = ???
  5024.     DX = offset in ???
  5025.     ???
  5026. Return: ???
  5027. Note:    available only when popped up
  5028. --------U-16FFD7-----------------------------
  5029. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5030.     AX = FFD7h
  5031.     ???
  5032. Return: BL = ???
  5033. Note:    available only when popped up
  5034. --------U-16FFD8-----------------------------
  5035. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SAFE CREATE FILE
  5036.     AX = FFD8h
  5037.     DS:BX -> ASCIZ filename
  5038. Return: BX = file handle
  5039.         0000h on error
  5040. Note:    pops up confirmation menu if file already exists
  5041.     only available when popped up???
  5042. --------U-16FFD9-----------------------------
  5043. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  5044.     AX = FFD9h
  5045. Return: AX = ???
  5046. Note:    available only when popped up
  5047. --------U-16FFDA-----------------------------
  5048. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET NAME OF LAST FILE OPENED
  5049.     AX = FFDAh
  5050.     DS:SI -> ??? (v5.1/5.5 only)
  5051. Return: DS:SI -> filename
  5052. --------U-16FFDB-----------------------------
  5053. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  5054.     AX = FFDBh
  5055.     BL = ???
  5056. Note:    available only when popped up
  5057. --------U-16FFDC-----------------------------
  5058. INT 16 U - PC Tools v5.1-8.0 DESKTOP - UNHOOK
  5059.     AX = FFDCh
  5060. Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
  5061.       original values
  5062. Index:    uninstall;PC Tools DESKTOP
  5063. --------U-16FFDDBX0000-----------------------
  5064. INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
  5065.     AX = FFDDh
  5066.     BX = 0000h
  5067. Return: CX = 5555h
  5068.     DX = 5555h if PCShell installed in resident mode
  5069. --------U-16FFDDBX0001-----------------------
  5070. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  5071.     AX = FFDDh
  5072.     BX = 0001h
  5073. Return: CF clear if request successful (PCShell will pop up)
  5074.     CF set on error
  5075. SeeAlso: AX=FFDDh/BX=0003h
  5076. --------U-16FFDDBX0002-----------------------
  5077. INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
  5078.     AX = FFDDh
  5079.     BX = 0002h
  5080. Return: AL =
  5081.         00h ???
  5082.         01h ???
  5083. Note:    PCShell v6.0+ displays the error message "Incorrect PCRUN version",
  5084.       awaits a keystroke, and aborts the current process
  5085. --------U-16FFDDBX0003-----------------------
  5086. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  5087.     AX = FFDDh
  5088.     BX = 0003h
  5089. SeeAlso: AX=FFDDh/BX=0001h
  5090. --------U-16FFDDBX0004-----------------------
  5091. INT 16 U - PC Tools v5.1+ PCShell API - GET ???
  5092.     AX = FFDDh
  5093.     BX = 0004h
  5094. Return: CF clear if successful
  5095.         DS:SI -> ???
  5096. --------U-16FFDDBX0005-----------------------
  5097. INT 16 U - PC Tools v5.1+ PCShell API - ???
  5098.     AX = FFDDh
  5099.     BX = 0005h
  5100.     ???
  5101. Return: ???
  5102. Note:    resets various variables if certain conditions are met
  5103. --------U-16FFDDBX0006-----------------------
  5104. INT 16 U - PC Tools v5.1+ PCShell API - ???
  5105.     AX = FFDDh
  5106.     BX = 0006h
  5107.     ???
  5108. Return: ???
  5109. Note:    resets various variables if certain conditions are met
  5110. --------U-16FFDDBX0007-----------------------
  5111. INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
  5112.     AX = FFDDh
  5113.     BX = 0007h
  5114. Return: CF clear if successful
  5115. SeeAlso: AX=FFDDh/BX=0008h
  5116. --------U-16FFDDBX0008-----------------------
  5117. INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
  5118.     AX = FFDDh
  5119.     BX = 0008h
  5120. Return: CF undefined
  5121. SeeAlso: AX=FFDDh/BX=0007h
  5122. --------U-16FFDDBX0009-----------------------
  5123. INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
  5124.     AX = FFDDh
  5125.     BX = 0009h
  5126. Return: CF clear if successful
  5127.         DS:SI -> list of pointers (see #0400)
  5128.  
  5129. Format of PC Tools PCShell returned pointer list:
  5130. Offset    Size    Description    (Table 0400)
  5131.  00h    WORD    offset of WORD containing ???
  5132.  02h    WORD    offset of name of program to execute
  5133.  04h    WORD    offset of 80-byte buffer for ???
  5134.  06h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  5135.  08h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  5136. --------U-16FFDDBX000A-----------------------
  5137. INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
  5138.     AX = FFDDh
  5139.     BX = 000Ah
  5140. Return: CX = 5555h if running
  5141.     DX = 5555h
  5142. Note:    also sets a flag
  5143. --------U-16FFDDBX000B-----------------------
  5144. INT 16 U - PC Tools v6.0+ PCRUN API - ???
  5145.     AX = FFDDh
  5146.     BX = 000Bh
  5147.     ???
  5148. Return: CX = 5555h if PCRUN active
  5149.     DX = 5555h
  5150. Note:    also clears flag set by AX=FFDDh/BX=000Ah
  5151. --------U-16FFDE-----------------------------
  5152. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY POPUP MENU
  5153.     AX = FFDEh
  5154.     DS:DX -> menu description (must be on a paragraph boundary)
  5155. Return: AX = ???
  5156.         AL seems to be the number of the selected button
  5157. Note:    available only when popped up
  5158. SeeAlso: AX=FFEEh
  5159. --------U-16FFDF-----------------------------
  5160. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5161.     AX = FFDFh
  5162.     ???
  5163. Return: ???
  5164. --------U-16FFE0-----------------------------
  5165. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5166.     AX = FFE0h
  5167.     CX = ???
  5168.     DX = ???
  5169. Note:    available only when popped up
  5170. --------U-16FFE1-----------------------------
  5171. INT 16 U - PC Tools v5.1-8.0 DESKTOP - BEEP
  5172.     AX = FFE1h
  5173. --------U-16FFE2-----------------------------
  5174. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5175.     AX = FFE2h
  5176.     DX = ???
  5177. Return: ???
  5178. Note:    available only when popped up
  5179. --------U-16FFE3-----------------------------
  5180. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PRINT CHARACTER
  5181.     AX = FFE3h
  5182.     BL = character to print to currently open printer or print file
  5183. Return: CF set on error
  5184. Note:    available only when popped up
  5185. SeeAlso: INT 17/AH=00h
  5186. --------U-16FFE4-----------------------------
  5187. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5188.     AX = FFE4h
  5189.     DX = segment of ???
  5190. Return: ???
  5191. Note:    available only when popped up
  5192. --------U-16FFE5-----------------------------
  5193. INT 16 U - PC Tools v5.1-8.0 DESKTOP - POP UP FILE SELECTION MENU
  5194.     AX = FFE5h
  5195.     DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
  5196.     DX = segment of window parameters???
  5197. Return: AX = DOS file handle for file
  5198.         DS:DX -> filename???
  5199.         FFFFh if function cancelled by user
  5200. Note:    available only when popped up
  5201. SeeAlso: AX=FFDAh
  5202. --------U-16FFE6-----------------------------
  5203. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK FOR AND GET KEYSTROKE
  5204.     AX = FFE6h
  5205. Return: AX = 0000h if no key available
  5206.          else  BIOS keycode
  5207. Notes:    available only when popped up
  5208.     invokes INT 28 idle interrupt before checking for key
  5209. --------U-16FFE7-----------------------------
  5210. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5211.     AX = FFE7h
  5212.     BX = segment of ???
  5213. Return: ???
  5214. Note:    available only when popped up
  5215. --------U-16FFE8-----------------------------
  5216. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY NUMBER
  5217.     AX = FFE8h
  5218.     CX = number
  5219.     DH = attribute
  5220.     DS:SI -> destination for ASCII number
  5221. Return: DS:SI buffer filled in with alternating characters and attributes
  5222. --------U-16FFE9-----------------------------
  5223. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET FILE LIST???
  5224.     AX = FFE9h
  5225. Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
  5226. Note:    available only when popped up
  5227. --------U-16FFEA-----------------------------
  5228. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY COUNTED STRING
  5229.     AX = FFEAh
  5230.     DS:SI -> counted string (count byte followed by string)
  5231. Return: ???
  5232. Note:    available only when popped up
  5233. --------U-16FFEB-----------------------------
  5234. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5235.     AX = FFEBh
  5236.     ???
  5237. Return: ???
  5238. --------U-16FFEC-----------------------------
  5239. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET KEY
  5240.     AX = FFECh
  5241.     DS:SI -> FAR routine to ???
  5242.     BX = ???
  5243.     ???
  5244. Return: AX = keystroke
  5245.         FFFFh if F10 pressed to go to menu
  5246. Notes:    available only when popped up
  5247.     invokes INT 28 while waiting for keystroke
  5248.     F10 is hotkey to Desktop menu
  5249. Index:    hotkeys;PC Tools DESKTOP
  5250. --------U-16FFED-----------------------------
  5251. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  5252.     AX = FFEDh
  5253. Return: AX = ???
  5254. Note:    available only when popped up
  5255. --------U-16FFEE-----------------------------
  5256. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE PULLDOWN MENUS
  5257.     AX = FFEEh
  5258.     DS:SI -> pulldown menu system description (see #0401)
  5259. Return: AX destroyed
  5260. Notes:    available only when popped up
  5261.     if the accessory does not need any menu items of its own, it should
  5262.       call AX=FFFAh instead
  5263. SeeAlso: AX=FFF7h,AX=FFFAh
  5264.  
  5265. Format of PC Tools DESKTOP pulldown menu system description:
  5266. Offset    Size    Description    (Table 0401)
  5267.  00h    WORD    offset of menu bar contents (counted string)
  5268.  02h    WORD    number of items on menu bar
  5269.  04h 10 BYTEs    scan codes for hotkeying to each of up to ten menu items
  5270.  0Eh 10 BYTEs    which character to highlight in each menu item (01h=first)
  5271.  18h    WORD    offset of first menu definition (see #0402)
  5272.  1Ah    WORD    offset of second menu definition
  5273.     ...
  5274.  
  5275. Format of PC Tools DESKTOP menu definition:
  5276. Offset    Size    Description    (Table 0402)
  5277.  00h    WORD    offset of menu contents (see #0403)
  5278.  02h    WORD    number of entries in menu
  5279.  04h    for each entry:
  5280.         Offset    Size    Description
  5281.          00h    BYTE    scancode of Alt-key to invoke entry
  5282.          01h    BYTE    character to highlight (01h=first, etc)
  5283.          02h    WORD    offset of FAR routine to handle selection
  5284.  
  5285. Format of PC Tools DESKTOP menu contents:
  5286. Offset    Size    Description    (Table 0403)
  5287.  00h    BYTE    number of lines in menu
  5288.  01h    BYTE    width of menu
  5289.  02h  N BYTEs    counted strings, one for each line in menu
  5290. --------U-16FFEFCX0000-----------------------
  5291. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INSTALLATION CHECK
  5292.     AX = FFEFh
  5293.     CX = 0000h
  5294. Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
  5295.         BX = segment of resident portion
  5296.         AX = ??? (v5.1/5.5 only)
  5297. SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
  5298. --------U-16FFF0-----------------------------
  5299. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  5300.     AX = FFF0h
  5301.     DX = ???
  5302. Return: AX destroyed
  5303. Note:    available only when popped up
  5304. --------U-16FFF1BX0000-----------------------
  5305. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ALTERNATE INSTALLATION CHECK
  5306.     AX = FFF1h
  5307.     BX = 0000h  leave ??? flag as is
  5308.         nonzero set ??? flag
  5309. Return: CX = 5555h if installed
  5310.     DX = 5555h
  5311. --------U-16FFF2-----------------------------
  5312. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY HELP LINE
  5313.     AX = FFF2h
  5314.     DS:SI -> ASCIZ function key label string (each label preceded by '[')
  5315.         or help text
  5316. Return: AX destroyed
  5317. Notes:    available only when popped up
  5318.     if the specified string does not start with '[', it is displayed
  5319.       centered on the bottom line, else the function key labels are shown
  5320. --------U-16FFF3-----------------------------
  5321. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO UNLOAD RESIDENT DESKTOP
  5322.     AX = FFF3h
  5323. Note:    releases any EMS being used; restores video mode, page, and cursor
  5324.       shape; and restores interrupt vectors
  5325. SeeAlso: AX=FFC5h,AX=FFEFh
  5326. Index:    uninstall;PC Tools DESKTOP
  5327. --------U-16FFF4-----------------------------
  5328. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5329.     AX = FFF4h
  5330.     ???
  5331. Return: ???
  5332. Note:    available only when popped up
  5333. SeeAlso: AX=FFF6h
  5334. --------U-16FFF5-----------------------------
  5335. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET SCREEN ATTRIBUTE ARRAY
  5336.     AX = FFF5h
  5337. Return: ES:BX -> screen attributes data structure (see #0404)
  5338.     AL = ??? (v6.0+)
  5339.  
  5340. Format of PC Tools DESKTOP attribute data structure:
  5341. Offset    Size    Description    (Table 0404)
  5342.  -1    BYTE    attribute for desktop background
  5343.  00h    BYTE    attribute for normal characters on desktop menu
  5344.  01h    BYTE    attribute for highlighted characters on desktop menu
  5345.  02h  5 BYTEs    ???
  5346.  07h    BYTE    attribute for dialog boxes
  5347.  08h 15 BYTEs    ???
  5348.  17h    BYTE    attribute for message boxes
  5349. --------U-16FFF6-----------------------------
  5350. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INVOKE NOTEPAD EDITOR
  5351.     AX = FFF6h
  5352.     DS = segment of editor buffer structure (see #0405)
  5353.     BX = ???
  5354.     DX = segment of window parameters structure (see #0398)
  5355. Return: ???
  5356. Note:    available only when popped up
  5357. SeeAlso: AX=FFF4h
  5358.  
  5359. Format of PC Tools DESKTOP editor buffer structure:
  5360. Offset    Size    Description    (Table 0405)
  5361.  00h    WORD    offset of current cursor position in buffer segment
  5362.  02h  2 BYTEs    ???
  5363.  04h    WORD    offset of beginning of file data in buffer segment
  5364.  06h 10 BYTEs    ???
  5365.  10h  N BYTEs    ASCIZ name of file being edited
  5366. --------U-16FFF7-----------------------------
  5367. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS MENU BAR ENTRY???
  5368.     AX = FFF7h
  5369.     DS:SI -> ???
  5370.     ???
  5371. Return: ???
  5372. Notes:    available only when popped up
  5373.     performs input processing on the menu bar set up with AX=FFEEh
  5374. SeeAlso: AX=FFEEh,AX=FFFBh
  5375. --------U-16FFF8-----------------------------
  5376. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DRAW EMPTY WINDOW
  5377.     AX = FFF8h
  5378.     DS:0000h -> window parameters structure (see #0398)
  5379.     DS:BX -> DWORD to store address of ??? on screen
  5380. Return: ???
  5381. --------U-16FFF9-----------------------------
  5382. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE SCREEN REFRESH ROUTINE
  5383.     AX = FFF9h
  5384.     ES:BX -> FAR routine to redisplay the utility's window
  5385. Note:    available only when popped up
  5386. --------U-16FFFA-----------------------------
  5387. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE STANDARD PULLDOWN MENUS
  5388.     AX = FFFAh
  5389. Notes:    available only when popped up
  5390.     adds the "Window" option to the "Desktop" option which is the only one
  5391.       available when no accessories are active.  Unlike AX=FFEEh, no
  5392.       additional menu items are added between "Desktop" and "Window"
  5393. SeeAlso: AX=FFEEh,AX=FFFBh
  5394. --------U-16FFFB-----------------------------
  5395. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS STANDARD MENU BAR
  5396.     AX = FFFBh
  5397. Return: ???
  5398. Notes:    available only when popped up
  5399.     performs input processing on the standard menu bar set up with AX=FFFAh
  5400. SeeAlso: AX=FFF7h
  5401. --------U-16FFFC-----------------------------
  5402. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET HOTKEYS AND KEYBOARD VECTOR
  5403.     AX = FFFCh
  5404. Return: ES:BX -> hotkey table (see #0406)
  5405.     DS:DX = original INT 09 vector
  5406.  
  5407. Format of PC Tools DESKTOP hotkey table:
  5408. Offset    Size    Description    (Table 0406)
  5409.  00h  2 BYTEs    scancode/shift state for desktop hotkey
  5410.  02h  2 BYTEs    scancode/shift state for clipboard paste key
  5411.  04h  2 BYTEs    scancode/shift state for clipboard copy key
  5412.  06h  2 BYTEs    scancode/shift state for screen autodial key
  5413. --------U-16FFFD-----------------------------
  5414. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY ???
  5415.     AX = FFFDh
  5416. Return: AX destroyed
  5417. Note:    copies 4000 bytes from ??? to ??? under certain circumstances
  5418. SeeAlso: AX=FF91h,AX=FF92h
  5419. --------M-16FFFE-----------------------------
  5420. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SHOW MOUSE CURSOR
  5421.     AX = FFFEh
  5422. SeeAlso: AX=FFFFh,INT 33/AX=0001h
  5423. --------M-16FFFF-----------------------------
  5424. INT 16 U - PC Tools v5.1-8.0 DESKTOP - HIDE MOUSE CURSOR
  5425.     AX = FFFFh
  5426. SeeAlso: AX=FFFEh,INT 33/AX=0002h
  5427. --------P-17----DX0ABC-----------------------
  5428. INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
  5429.     DX = 0ABCh
  5430. Return: AX = AAAAh
  5431.     DX = BAAAh
  5432.     ES = code segment of resident portion
  5433. --------P-17----DX0B90-----------------------
  5434. INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
  5435.     DX = 0B90h
  5436. Return: DX = ABBBh
  5437.     ES = code segment of resident portion
  5438. --------P-17----DX0B91-----------------------
  5439. INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
  5440.     DX = 0B91h
  5441. Return: DX = ABCBh
  5442.     ES = code segment of resident portion
  5443. --------P-17----DX0F5F-----------------------
  5444. INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
  5445.     DX = 0F5Fh
  5446. Return: AX = AAAAh
  5447.     DX = F555h
  5448.     ES = code segment of resident portion
  5449. --------B-1700-------------------------------
  5450. INT 17 - PRINTER - WRITE CHARACTER
  5451.     AH = 00h
  5452.     AL = character to write
  5453.     DX = printer number (00h-02h)
  5454. Return: AH = printer status (see #0407)
  5455. SeeAlso: AH=02h,AH=84h"AX",AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
  5456.  
  5457. Bitfields for printer status:
  5458. Bit(s)    Description    (Table 0407)
  5459.  7    not busy
  5460.  6    acknowledge
  5461.  5    out of paper
  5462.  4    selected
  5463.  3    I/O error
  5464.  2-1    unused
  5465.  0    timeout
  5466. --------B-1701-------------------------------
  5467. INT 17 - PRINTER - INITIALIZE PORT
  5468.     AH = 01h
  5469.     DX = printer number (00h-02h)
  5470. Return: AH = printer status (see #0407)
  5471. Note:    some printers report that they are ready immediately after
  5472.       initialization when they actually are not; a more reliable result may
  5473.       be obtained by calling AH=02h after a brief delay
  5474. SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC"
  5475. --------B-1702-------------------------------
  5476. INT 17 - PRINTER - GET STATUS
  5477.     AH = 02h
  5478.     DX = printer number (00h-02h)
  5479. Return: AH = printer status (see #0407)
  5480. Note:    PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h
  5481. SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC"
  5482. --------P-1702--DX0000-----------------------
  5483. INT 17 - INSET - INSTALLATION CHECK
  5484.     AH = 02h
  5485.     DX = 0000h
  5486.     CX = 07C3h (1987d)
  5487. Return: CX = 07C2h (1986d) if installed
  5488. Program: INSET is a text/graphics integration program
  5489. --------b-170200BX5050-----------------------
  5490. INT 17 - Advanced Parallel Port BIOS - INSTALLATION CHECK
  5491.     AX = 0200h
  5492.     BX = 5050h ('PP')
  5493.     CH = 45h   ('E')
  5494.     DX = printer port number (00h-02h)
  5495. Return: AH = 00h      \
  5496.     AL = 45h       If Advanced BIOS Installed
  5497.     CX = 5050h    /
  5498.     DX:BX -> far entry point to Advanced BIOS
  5499. Program: The Advanced Parallel Port BIOS provides support for parallel
  5500.       port peripherals using the enhanced modes of the IEEE 1284.
  5501. --------P-1703-------------------------------
  5502. INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS
  5503.     AH = 03h
  5504. Return: BX = ???
  5505.     CX = ???
  5506. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  5507.       Vertisoft Systems, Inc.
  5508. SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h
  5509. --------c-1703-------------------------------
  5510. INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING
  5511.     AH = 03h
  5512.     DX = printer port number
  5513.     CX = number of characters to print
  5514.     DS:SI -> string
  5515. Return: AH = printer status (see #0407)
  5516.     CX = number of characters actually printed
  5517. Desc:    send an entire string of chars to the print spooler with a single call
  5518. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  5519.       operating system by The Software Link, Inc.
  5520. SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS"
  5521. --------P-1704-------------------------------
  5522. INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT
  5523.     AH = 04h
  5524. Note:    has no effect unless ELTSR is deactivated (see AX=0503h)
  5525. SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h
  5526. --------P-170500-----------------------------
  5527. INT 17 U - Emulaser ELTSR - ???
  5528.     AX = 0500h
  5529.     ???
  5530. Return: AX = unload status (0001h safe to unload, 0002h not safe)
  5531.     BX = ???
  5532.     CX = PSP segment of ELTSR
  5533.     DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing)
  5534.     SI = ???
  5535.     DI = ???
  5536. SeeAlso: AH=04h,INT 1A/AH=E5h
  5537. --------P-170501-----------------------------
  5538. INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS
  5539.     AX = 0501h
  5540. Return: (see AX=0500h)
  5541. Note:    restores interrupt vectors without checking whether they have been
  5542.       hooked by later programs; should only be called if ELTSR reports
  5543.       that it is safe to unload
  5544. SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h
  5545. Index:    uninstall;Emulaser ELTSR
  5546. --------P-170502-----------------------------
  5547. INT 17 U - Emulaser ELTSR - SET ???
  5548.     AX = 0502h
  5549.     BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3)
  5550.     CL = ???
  5551.     DL = ???
  5552. Return: (see AX=0500h)
  5553. SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h
  5554. --------P-170503-----------------------------
  5555. INT 17 U - Emulaser ELTSR - DEACTIVATE???
  5556.     AX = 0503h
  5557. Return: (see AX=0500h)
  5558. SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h
  5559. --------P-1706-------------------------------
  5560. INT 17 U - Emulaser ELTSR - ???
  5561.     AH = 06h
  5562.     ???
  5563. Return: ???
  5564. SeeAlso: AH=05h,INT 1A/AH=E5h
  5565. --------P-1707-------------------------------
  5566. INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE
  5567.     AH = 07h
  5568.     ES:DX -> ASCIZ filename to be opened
  5569. Return: ???
  5570. Note:    new output will be appended to the specified file
  5571. SeeAlso: AH=08h,INT 1A/AH=E5h
  5572. --------P-1708-------------------------------
  5573. INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE
  5574.     AH = 08h
  5575.     ???
  5576. Return: ???
  5577. Desc:    close the file previously opened by function 07h
  5578. SeeAlso: AH=07h,INT 1A/AH=E5h
  5579. --------P-1709-------------------------------
  5580. INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE???
  5581.     AH = 09h
  5582.     BX = ???
  5583.     CX = ???
  5584.     DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  5585. Return: AX = status
  5586.         00h successful
  5587.         FFh failed
  5588. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  5589.       Vertisoft Systems, Inc.
  5590. Note:    this function calls through to INT 1A/AX=E401h, and thus requires
  5591.       that either ELSPL or Disk Spool II be installed
  5592. SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h
  5593. --------P-170A-------------------------------
  5594. INT 17 U - Emulaser ELTSR - SET ??? FILENAME
  5595.     AH = 0Ah
  5596.     ES:BX -> ??? buffer
  5597.     CX = length of ??? buffer
  5598. Return: ???
  5599. Note:    copies the specified name into the buffer passed to ELSPL as the
  5600.       filename by AH=09h
  5601. SeeAlso: AH=09h,INT 1A/AH=E5h
  5602. --------P-170B-------------------------------
  5603. INT 17 U - Emulaser ELTSR - GET ???
  5604.     AH = 0Bh
  5605. Return: AX:BX -> ???
  5606. SeeAlso: AH=0Ah,INT 1A/AH=E5h
  5607. --------P-170C-------------------------------
  5608. INT 17 U - Emulaser ELTSR - SET ??? FLAG
  5609.     AH = 0Ch
  5610.     ???
  5611. Return: ???
  5612. SeeAlso: AH=0Bh,INT 1A/AH=E5h
  5613. --------P-170D-------------------------------
  5614. INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE
  5615.     AH = 0Dh
  5616. Return: AX = state (0000h off, 0010h on)
  5617. Desc:    determine the actual state of ScrlLk even when Emulaser is controlling
  5618.       the ScrlLk light as its activity indicator
  5619. SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h
  5620. --------P-170E-------------------------------
  5621. INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING
  5622.     AH = 0Eh
  5623. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  5624.       Vertisoft Systems, Inc.
  5625. Note:    this function is called by ELTSR on every INT 08 to allow data to be
  5626.       processed in the background, but may also be called by applications
  5627.       to give Emulaser additional CPU time
  5628. SeeAlso: AH=0Dh,INT 1A/AH=E5h
  5629. --------P-172000-----------------------------
  5630. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK
  5631.     AX = 2000h
  5632.     BL = printer number???
  5633. Return:    AX = status (see #0408)
  5634.     BX = driver version number (BH=major,BL=minor)
  5635.     CH = ??? (00h)
  5636.     CL = ???
  5637.     DX = ??? (0100h)
  5638. Note:    also enables the remaining printer driver functions (2001h-2007h)
  5639. SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h
  5640.  
  5641. (Table 0408)
  5642. Values for PC Paint function status:
  5643.  0000h    successful
  5644.  0001h    invalid printer???
  5645.  0002h    ???
  5646.  0003h    invalid subfunction
  5647.  0005h    driver disabled, must call function 00h first
  5648.  0009h    unknown printer error
  5649.  000Bh    printer not selected
  5650.  000Ch    printer out of paper
  5651.  000Eh    error while writing to serial printer
  5652.  000Fh    ???
  5653.  0010h    invalid function number
  5654.  0011h    value out of range
  5655. --------P-172001-----------------------------
  5656. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG
  5657.     AX = 2001h
  5658.     BL = printer number???
  5659. Return: AX = status (see #0408)
  5660. --------P-172002-----------------------------
  5661. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION
  5662.     AX = 2002h
  5663.     BL = printer number???
  5664.     CL = desired information
  5665.         00h printer type
  5666.         Return: ES:DI -> ASCIZ printer name
  5667.         01h paper size
  5668.         DX = size index
  5669.         Return: ES:DI -> ASCIZ paper size description
  5670.         02h ???
  5671.         Return: BX = ???
  5672.         03h printer information???
  5673.         DX = ???
  5674.         ES:BX -> buffer for ??? (min 134 bytes)
  5675. Return: AX = status (see #0408)
  5676. SeeAlso: AX=2000h,AX=2004h
  5677. --------P-172003-----------------------------
  5678. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ???
  5679.     AX = 2003h
  5680.     ES:BX -> ???
  5681. Return: AX = status (see #0408)
  5682. SeeAlso: AX=2000h,AX=2004h
  5683. --------P-172004-----------------------------
  5684. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ???
  5685.     AX = 2004h
  5686.     BL = printer number???
  5687. Return: AX = status (see #0408)
  5688.     ES:DI -> ???
  5689. SeeAlso: AX=2000h,AX=2003h
  5690. --------P-172005-----------------------------
  5691. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE
  5692.     AX = 2005h
  5693.     BL = printer number???
  5694. Return: AX = status (see #0408)
  5695. Note:    this function also clears the flag set by AX=2001h
  5696. SeeAlso: AX=2000h,AX=2001h,AX=2006h
  5697. --------P-172006-----------------------------
  5698. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN
  5699.     AX = 2006h
  5700.     BL = printer number???
  5701. Return: AX = status (see #0408)
  5702. Note:    this function also clears the flag set by AX=2001h and disables
  5703.       functions other than AX=2000h
  5704. SeeAlso: AX=2000h,AX=2001h,AX=2005h
  5705. --------P-172007-----------------------------
  5706. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED
  5707.     AX = 2007h
  5708. Return: AX unchanged
  5709. SeeAlso: AX=2000h
  5710. --------N-172400-----------------------------
  5711. INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
  5712.     AX = 2400h
  5713.     DL = new state
  5714.         00h disabled
  5715.         01h enabled
  5716. Return: DL = 24h if installed
  5717.     DH = minor version number
  5718.     CX = network address of this machine
  5719.     AL = status (see #0409)
  5720. SeeAlso: AX=2403h,INT 16/AX=4500h
  5721.  
  5722. (Table 0409)
  5723. Values for NET.24 function status:
  5724.  00h    successful
  5725.  01h    timeout
  5726.  02h    header error
  5727.  03h    data error
  5728.  04h    busy
  5729.  05h    invalid parameters
  5730. --------N-172401-----------------------------
  5731. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
  5732.     AX = 2401h
  5733.     BL = timeout in clock ticks
  5734. Return: AL = status (see #0409)
  5735.     DX:BX -> receive buffer
  5736. SeeAlso: AX=2402h,AX=2404h,AX=2408h
  5737. --------N-172402-----------------------------
  5738. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
  5739.     AX = 2402h
  5740.     transmit buffer filled (see AX=2403h)
  5741. Return: AL = status (see #0409)
  5742. SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
  5743. --------N-172403-----------------------------
  5744. INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
  5745.     AX = 2403h
  5746. Return: AL = status (see #0409)
  5747.     CX = number of characters in receive ring buffer
  5748.     DX:BX -> transmit buffer
  5749. SeeAlso: AX=2400h,AX=2402h
  5750. --------N-172404-----------------------------
  5751. INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
  5752.     AX = 2404h
  5753.     BX = target address
  5754. Return: AL = status (see #0409)
  5755. SeeAlso: AX=2402h,AX=2405h
  5756. --------N-172405-----------------------------
  5757. INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
  5758.     AX = 2405h
  5759.     BX = target address
  5760. Return: AL = status (see #0409)
  5761. SeeAlso: AX=2402h,AX=2404h
  5762. --------N-172406-----------------------------
  5763. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
  5764.     AX = 2406h
  5765. Return: AL = status (see #0409)
  5766. SeeAlso: AX=2407h,AX=240Ah
  5767. --------N-172407-----------------------------
  5768. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
  5769.     AX = 2407h
  5770. Return: AL = status (see also #0409)
  5771.         06h end of data
  5772.     DL = received character
  5773. SeeAlso: AX=2406h
  5774. --------N-172408-----------------------------
  5775. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
  5776.     AX = 2408h
  5777. Return: AL = status (see also #0409)
  5778.         06h end of data
  5779.     CX = number of bytes in receive buffer
  5780.     DX:SI -> receive buffer
  5781. SeeAlso: AX=2401h,AX=2405h,AX=2409h
  5782. --------N-172409-----------------------------
  5783. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
  5784.     AX = 2409h
  5785.     BX = target address
  5786.     CX = number of data bytes
  5787.     DL = command code to send
  5788.     DS:SI -> data bytes for command
  5789. Return: AL = status (see also #0409)
  5790.         03h no response
  5791.         06h remote currently unable to perform command
  5792. SeeAlso: AX=2405h,AX=2408h
  5793. --------N-17240A-----------------------------
  5794. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
  5795.     AX = 240Ah
  5796. Return: AL = status (see #0409)
  5797. SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
  5798. --------N-17240B-----------------------------
  5799. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
  5800.     AX = 240Bh
  5801.     DL = character to send
  5802. Return: AL = status (see also AX=2400h)
  5803.         03h transmission error
  5804.         06h write error
  5805. SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
  5806. --------N-17240C-----------------------------
  5807. INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
  5808.     AX = 240Ch
  5809. Return: AL = status (see also AX=2400h)
  5810.         03h transmission error
  5811.         06h remote breaks connection
  5812. SeeAlso: AX=240Ah,AX=240Bh
  5813. --------J-175000-----------------------------
  5814. INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
  5815.     AX = 5000h
  5816.     BX = country code
  5817.         0001h USA (English), 0051h Japan
  5818. Return: AL = status
  5819.         00h successful
  5820.         01h bad country code
  5821.         02h other error
  5822. SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
  5823. --------J-175001-----------------------------
  5824. INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
  5825.     AX = 5001h
  5826. Return: AL = status
  5827.         00h successful
  5828.         BX = country code
  5829.         02h error
  5830. SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
  5831. --------J-1751-------------------------------
  5832. INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
  5833.     AH = 51h
  5834.     DX = 2-byte JIS code
  5835. Return: DX = shift-JIS value or 0000h on error
  5836. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  5837.       characters to Shift-JIS characters, and the other performs the
  5838.       opposite conversion
  5839. SeeAlso: AX=5000h,AH=52h
  5840. --------J-1752-------------------------------
  5841. INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
  5842.     AH = 52h
  5843.     DX = 2-byte shift-JIS code
  5844. Return: DX = JIS code or 0000h on error
  5845. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  5846.       characters to Shift-JIS characters, and the other performs the
  5847.       opposite conversion
  5848. SeeAlso: AH=51h
  5849. --------V-1760-------------------------------
  5850. INT 17 - FLASHUP.COM - INSTALLATION CHECK
  5851.     AH = 60h
  5852. Return: AL = 60h
  5853.     DX = CS of resident code
  5854. Notes:    FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
  5855.     FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
  5856.       consisting of an 80h followed by the actual command
  5857. SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
  5858. --------V-1761-------------------------------
  5859. INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
  5860.     AH = 61h
  5861. Return: AL = 61h
  5862.     DX = CS of resident code
  5863. Note:    SPEEDSCR.COM is by The Software Bottling Co.
  5864. --------P-1762-------------------------------
  5865. INT 17 U - T2PS v1.0 - UNINSTALL
  5866.     AH = 62h
  5867. Return: nothing
  5868. SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh
  5869. --------P-1763-------------------------------
  5870. INT 17 U - T2PS v1.0 - SET PARAMETERS
  5871.     AH = 63h
  5872.     ES:SI -> settings (see #0410)
  5873. Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D.
  5874.       Technologies
  5875. SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h
  5876.  
  5877. Format of T2PS settings:
  5878. Offset    Size    Description    (Table 0410)
  5879.  00h    WORD    LPT port number (0=LPT1, etc.)
  5880.  02h    WORD    page heigh in points
  5881.  04h    WORD    page width in points
  5882.  06h    WORD    top margin in points
  5883.  08h    WORD    bottom margin in points
  5884.  0Ah    WORD    left margin in points
  5885.  0Ch    WORD    right margin in points
  5886.  0Eh    WORD    font size in points
  5887.  10h    WORD    tab size
  5888.  12h    WORD    timeout in clock ticks
  5889. --------P-1764-------------------------------
  5890. INT 17 U - T2PS v1.0 - GET PARAMETERS
  5891.     AH = 64h
  5892.     ES:SI -> buffer for settings (see #0410)
  5893. Return: ES:SI buffer filled
  5894. SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
  5895. --------N-1781-------------------------------
  5896. INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
  5897.     AH = 81h
  5898.     AL = 00h (NTNX compatibility mode)
  5899.     CL = number of jobs to cancel
  5900. Return: AL = status (see #0411)
  5901. Note:    this function cancels the last CL printouts for the current task
  5902. SeeAlso: AH=82h
  5903.  
  5904. (Table 0411)
  5905. Values for Alloy status:
  5906.  00h    success
  5907.  01h-7Fh warning
  5908.  80h    general failure
  5909.  81h    host overloaded (NTNX only)
  5910.  82h    module busy (NTNX only)
  5911.  83h    host busy (NTNX only)
  5912.  84h    re-entry flag set
  5913.  85h    invalid request
  5914.  86h    invalid printer
  5915.  87h    invalid process ID
  5916.  89h    access denied
  5917.  8Ah    option not available for given port type
  5918.  8Bh    option not available for given task type
  5919.  91h    printer busy
  5920.  C2h    file not found
  5921.  C3h    path not found
  5922.  C4h    file access failure
  5923. --------N-1782-------------------------------
  5924. INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
  5925.     AH = 82h
  5926.     AL = 00h (NTNX compatibility mode)
  5927. Return: AL = status (see #0411)
  5928. SeeAlso: AH=81h
  5929. --------N-1783-------------------------------
  5930. INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
  5931.     AH = 83h
  5932.     AL = mode
  5933.         00h NTNX compatibility
  5934.         CL = number of copies (max 99, default 1)
  5935.         02h MW386 v2+
  5936.         BX = logical device number
  5937.             00h-03h = LPT1-LPT4
  5938.             04h-07h = COM1-COM4
  5939.         CX = number of copies
  5940. Return: AL = status (see #0411)
  5941. Note:    in NTNX compatibility mode, this function only affects LPT1
  5942. --------N-1784-------------------------------
  5943. INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
  5944.     AH = 84h
  5945.     AL = mode
  5946.         00h NTNX compatibility
  5947.         02h MW386 v2+
  5948.         BX = logical device number
  5949.             00h-03h = LPT1-LPT4
  5950.             04h-07h = COM1-COM4
  5951. Note:    closes spool file and tells spooler to queue the print job (LPT1 only
  5952.       under MW386 in NTNX compatibility mode)
  5953. --------J-1784-------------------------------
  5954. INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
  5955.     AH = 84h
  5956.     AL = character
  5957.     DX = printer number
  5958. Return: AH = printer status (see #0407)
  5959. SeeAlso: AH=00h,AH=85h
  5960. --------J-1785-------------------------------
  5961. INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
  5962.     AH = 85h
  5963.     AL = new state (00h enabled, 01h disabled)
  5964. SeeAlso: AH=84h"AX"
  5965. --------N-1787-------------------------------
  5966. INT 17 - Alloy NTNX - SET INDOS POINTER
  5967.     AH = 87h
  5968.     AL = 00h
  5969.     CX:BX -> buffer for user-written printer drivers
  5970. Return: BX,CX destroyed
  5971. Note:    must be executed before the printer is enabled
  5972. SeeAlso: AH=8Ah
  5973. --------N-1788-------------------------------
  5974. INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
  5975.     AH = 88h
  5976.     AL = mode
  5977.         00h NTNX compatibility
  5978.         DX = NTNX printer number (see #0412)
  5979.         01h MW386
  5980.         DX = MW386 printer number
  5981. Return: AH = status (see #0411)
  5982. Note:    removes specified printer from the spooler's list of printers
  5983. SeeAlso: AH=89h,AH=8Bh
  5984.  
  5985. (Table 0412)
  5986. Values for Alloy NTNX printer number:
  5987.  00h    host LPT1
  5988.  01h    host LPT2
  5989.  02h    host LPT3
  5990.  03h    host LPT4
  5991.  04h    host COM1
  5992.  05h    host COM2
  5993.  06h    user's logical COM2
  5994.  07h    user's terminal AUX port
  5995.  08h    user's logical COM1 (MW386 only)
  5996. --------N-1789-------------------------------
  5997. INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
  5998.     AH = 89h
  5999.     AL = mode
  6000.         00h NTNX compatibility
  6001.         DX = NTNX printer number (see #0412)
  6002.         01h MW386
  6003.         DX = MW386 printer number
  6004. Return: AL = status (see #0411)
  6005. Note:    the specified printer is added to the spooler's list of available
  6006.       printers
  6007. SeeAlso: AH=88h,AH=8Bh
  6008. --------N-178A-------------------------------
  6009. INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
  6010.     AH = 8Ah
  6011.     ???
  6012. SeeAlso: AH=92h
  6013. --------N-178B-------------------------------
  6014. INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
  6015.     AH = 8Bh
  6016.     DS:DX -> ASCIZ printer name
  6017. Return: AL = status (see also AH=81h)
  6018.         00h successful
  6019.         DX = physical device number
  6020. SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
  6021. --------N-178C-------------------------------
  6022. INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
  6023.     AH = 8Ch
  6024.     DX = physical device number
  6025.     ES:DI -> 17-byte buffer for ASCIZ device name
  6026. Return: AL = status (see also AH=81h)
  6027.         00h successful
  6028.         ES:DI buffer filled
  6029. SeeAlso: AH=88h,AH=8Bh
  6030. --------N-178D-------------------------------
  6031. INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
  6032.     AH = 8Dh
  6033.     AL = 00h
  6034. Return: AL = status (see #0411)
  6035. Notes:    clears all buffers and resets spooler to boot-up values
  6036.     MW386 supports this function for compatibility only; it is a NOP
  6037. --------N-178E-------------------------------
  6038. INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
  6039.     AH = 8Eh
  6040.     AL = 00h
  6041. Return: CX:BX -> INT 28 entry point
  6042. SeeAlso: AH=8Fh
  6043. --------N-178F-------------------------------
  6044. INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
  6045.     AH = 8Fh
  6046.     AL = 00h
  6047. Return: CX:BX -> DOS intercept routine
  6048. SeeAlso: AH=8Eh
  6049. --------N-1790-------------------------------
  6050. INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
  6051.     AH = 90h
  6052.     AL = mode
  6053.         00h NTNX compatibility
  6054.         DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
  6055.         DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
  6056.         02h MW386 v2+
  6057.         BX = logical device number
  6058.             00h-03h = LPT1-LPT4
  6059.             04h-07h = COM1-COM4
  6060.     CX:SI -> ASCIZ pathname
  6061. Return: AL = status (see #0411)
  6062. Note:    in mode 00h, the file is always sent to logical LPT1
  6063. SeeAlso: AH=A0h
  6064. --------N-1791-------------------------------
  6065. INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
  6066.     AH = 91h
  6067.     AL = mode
  6068.         00h NTNX compatibility
  6069.         Return: CX = user number (00h = host)
  6070.             DX = currently selected printer number (00h-08h)
  6071.         01h MW386
  6072.         Return: CX = user number
  6073.             DX = physical dev number of currently selected printer
  6074.         02h MW386 v2+
  6075.         BX = logical device number
  6076.             00h-03h = LPT1-LPT4
  6077.             04h-07h = COM1-COM4
  6078.         Return: CX = user number
  6079.             DX = physical device number
  6080. Return: AL = status (see #0411)
  6081. SeeAlso: AH=8Ch
  6082. --------N-1792-------------------------------
  6083. INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
  6084.     AH = 92h
  6085.     AL = 00h
  6086.     CL = 00h
  6087. Return: CL = driver state
  6088.         01h initialized
  6089.         80h not initialized
  6090.     AX = status (see #0411)
  6091. SeeAlso: AH=8Ah
  6092. --------N-1794-------------------------------
  6093. INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
  6094.     AH = 94h
  6095.     AL = mode
  6096.         00h NTNX compatibility
  6097.         DX = NTNX printer number (see #0412)
  6098.         01h MW386
  6099.         DX = MW386 printer number
  6100.         02h MW386 v2+
  6101.         BX = logical printer number
  6102.         DX = MW386 printer number
  6103. Return: AL = status (see #0411)
  6104. Note:    modes 00h and 01h affect only logical LPT1
  6105. SeeAlso: AH=8Bh,AH=95h
  6106. --------N-1795-------------------------------
  6107. INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
  6108.     AH = 95h
  6109.     AL = mode
  6110.         00h NTNX compatibility
  6111.         Return: DX = NTNX printer number (see #0412)
  6112.                 (FFFFh if current printer not compatible with NTNX)
  6113.         01h MW386
  6114.         Return: DX = MW386 printer number
  6115.         02h MW386 v2+
  6116.         BX = logical device number
  6117.             00h-03h = LPT1-LPT4
  6118.             04h-07h = COM1-COM4
  6119.         Return: DX = MW386 printer number (FFFFh = none)
  6120. Return: AL = status (see #0411)
  6121. Note:    modes 00h and 01h return the printer number of logical LPT1 only
  6122. SeeAlso: AH=94h
  6123. --------N-1796-------------------------------
  6124. INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
  6125.     AH = 96h
  6126.     AL = 00h
  6127. Note:    documentation states that this is a NOP, doing only XOR AX,AX before
  6128.       returning
  6129. SeeAlso: INT 14/AH=24h
  6130. --------N-1797-------------------------------
  6131. INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
  6132.     AH = 97h
  6133.     AL = mode
  6134.         00h NTNX compatibility
  6135.         02h MW386 v2+
  6136.         BX = logical device number
  6137.             00h-03h = LPT1-LPT4
  6138.             04h-07h = COM1-COM4
  6139.     CH,CL,DH = three character break sequence
  6140.     DL = subfunction
  6141.         00h set break string
  6142.         else reset break
  6143. Return: AL = status (see #0411)
  6144. Notes:    mode 00h affects only logical LPT1
  6145.     when the break string is encountered, the spool file will be closed and
  6146.       queued for printing automatically
  6147.     the break string is not permanently saved, and will be reset each time
  6148.       MW386 or the user is rebooted
  6149. SeeAlso: AH=9Bh
  6150. --------N-1798-------------------------------
  6151. INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
  6152.     AH = 98h
  6153.     AL = 00h
  6154.     DL = printer number (FFh=current)
  6155. Return: AL = status
  6156.         00h successful
  6157.         01h incorrect printer
  6158.         02h task not found
  6159. Note:    MW386 supports this function for compatibility only; it is a NOP
  6160. --------N-1799-------------------------------
  6161. INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
  6162.     AH = 99h
  6163.     AL = mode
  6164.         00h NTNX compatibility
  6165.         DL = NTNX printer number (see #0412)
  6166.             (FFh = task's current logical LPT1)
  6167.         DH = mode (see #0413)
  6168.         01h MW386
  6169.         DX = MW386 printer number
  6170.         CL = mode (as for DH above)
  6171. Return: AL = status (see #0411)
  6172.     DH = mode (bits 1 and 2 set as above)
  6173.     DL = printer owner's user number if not spooled
  6174.  
  6175. Bitfields for Alloy printer mode:
  6176.  0    get mode if 1, set mode if 0    (Table 0413)
  6177.  1    private ("attached")
  6178.  2    direct instead of spooled
  6179.  3-7    reserved (0)
  6180. --------N-179A-------------------------------
  6181. INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
  6182.     AH = 9Ah
  6183.     AL = mode
  6184.         00h NTNX compatibility
  6185.         DX = NTNX printer number (see #0412)
  6186.             (FFFFh = current logical LPT1)
  6187.         01h MW386
  6188.         DX = MW386 printer number
  6189.     CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
  6190. Return: AL = status (see #0411)
  6191. Note:    beginning with MW386 v2.0, tab expansion is set on a per-printer basis
  6192.       rather than a per-user basis; NTNX and MW386 v1.x ignore DX
  6193. SeeAlso: AH=A4h
  6194. --------N-179B-------------------------------
  6195. INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
  6196.     AH = 9Bh
  6197.     AL = mode
  6198.         00h NTNX compatibility
  6199.         CX = timeout value in clock ticks (1/18 sec) (00h = never)
  6200.         01h MW386
  6201.         CX = timeout value in seconds (00h = never)
  6202.         02h MW386 v2+
  6203.         BX = logical device number
  6204.             00h-03h = LPT1-LPT4
  6205.             04h-07h = COM1-COM4
  6206.         CX = timeout value in seconds (00h = never)
  6207. Return: AL = status (see #0411)
  6208. Notes:    modes 00h and 01h affect only the current logical LPT1
  6209.     if no data is sent to a printer for the specified amount of time, the
  6210.       spool file will be closed and queued for printing automatically
  6211. SeeAlso: AH=97h
  6212. --------N-17A0-------------------------------
  6213. INT 17 - Alloy MW386 - SPOOL COPY OF FILE
  6214.     AH = A0h
  6215.     AL = mode
  6216.         00h NTNX compatibility
  6217.         DX = ??? (NTNX, MW386 v1.x only)
  6218.         02h MW386 v2+
  6219.         BX = logical device number
  6220.             00h-03h = LPT1-LPT4
  6221.             04h-07h = COM1-COM4
  6222.     CX:SI -> ASCIZ pathname
  6223. Return: AL = status (see #0411)
  6224. Notes:    makes a copy of the specified file in the spooler's directory, allowing
  6225.       the original file to be modified or deleted while the copy is printed
  6226.     in mode 00h, the file is printed on logical LPT1
  6227. SeeAlso: AH=90h
  6228. --------N-17A4-------------------------------
  6229. INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
  6230.     AH = A4h
  6231.     AL = new state
  6232.         00h form feed after end of print job disabled
  6233.         01h form feed enabled
  6234. Return: AL = status (see #0411)
  6235. Note:    only affects the current logical LPT1
  6236. SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
  6237. --------N-17A6-------------------------------
  6238. INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
  6239.     AH = A6h
  6240.     AL = new state
  6241.         00h banner page before print job disabled
  6242.         01h banner page enabled
  6243. Return: AL = status (see #0411)
  6244. Note:    only affects the current logical LPT1
  6245. SeeAlso: AH=A4h
  6246. --------N-17A7-------------------------------
  6247. INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
  6248.     AH = A7h
  6249.     AL = spool flags (see #0414)
  6250.     BX = logical device number
  6251.         00h-03h = LPT1-LPT4
  6252.         04h-07h = COM1-COM4
  6253. Return: AL = status (see #0411)
  6254. Note:    the documentation does not state which register contains the result of
  6255.       a GET
  6256. SeeAlso: AH=A4h,AH=A6h
  6257.  
  6258. Bitfields for Alloy spool flags:
  6259. Bit(s)    Description    (Table 0414)
  6260.  0    banner page enabled (see AH=A6h)
  6261.  1    form feed enabled (see AH=A4h)
  6262.  2-6    reserved (0)
  6263.  7    set flags if 1, get flags if 0
  6264. --------N-17A8-------------------------------
  6265. INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
  6266.     AH = A8h
  6267.     CX:SI -> ASCIZ filename without extension (max 8 chars)
  6268. Return: AL = status (see #0411)
  6269. Note:    allows application to specify banner page filename for spool files
  6270.       collected from the application's printer output
  6271. SeeAlso: AH=A9h
  6272. --------N-17A9-------------------------------
  6273. INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
  6274.     AH = A9h
  6275.     AL = new spool drive (2=C:,3=D:,etc)
  6276. Return: AL = status (see #0411)
  6277. Note:    does not remove previous spooling directory since jobs may be pending
  6278. SeeAlso: AH=A8h
  6279. --------N-17AA-------------------------------
  6280. INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
  6281.     AH = AAh
  6282.     AL = mode
  6283.         00h NTNX
  6284.         DX = NTNX printer number (see #0412)
  6285.         01h MW386
  6286.         DX = MW386 printer number
  6287. Return: AH = instantaneous printer status
  6288.         00h printer ready
  6289.         01h not ready
  6290.         12h off line
  6291.         13h out of paper
  6292.         14h general device failure
  6293.         15h device timeout
  6294.         16h bad device number
  6295. --------N-17AF-------------------------------
  6296. INT 17 - Alloy MW386 - CHECK SPOOLER
  6297.     AH = AFh
  6298. Return: AX = 55AAh if spooler available
  6299. --------c-17C0-------------------------------
  6300. INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
  6301.     AH = C0h
  6302.     DX = printer port (0-3)
  6303. Return: ES:BX -> control block (see #0415)
  6304. SeeAlso: AH=C1h
  6305.  
  6306. Format of PCSpool control block:
  6307. Offset    Size    Description    (Table 0415)
  6308.  00h    WORD    printer number
  6309.  02h    WORD    address of printer status port
  6310.  04h    WORD    number of first record in queue
  6311.  06h    WORD    number of last record in queue
  6312.  08h    DWORD    characters already printed
  6313.  0Ch    DWORD    number of characters remaining
  6314.  10h    DWORD    pointer to dequeue buffer
  6315.  14h    DWORD    previous count of characters printed
  6316.  18h    DWORD    number of clock ticks taken to print them
  6317.  1Ch    WORD    offset of next character to output
  6318.  1Eh    WORD    offset of next character to print
  6319.  20h    WORD    pointer to spooling queue record
  6320.  22h    BYTE    current spooling status
  6321.  23h    BYTE    current printer status:
  6322.         00h OK
  6323.         01h not ready
  6324.         02h paused with message
  6325.         03h paused
  6326.         04h initializing
  6327.         FEh non-existent port
  6328.         FFh not spooled
  6329.  24h    BYTE    current control record type
  6330.  25h    WORD    observed printer speed
  6331.  27h    WORD    characters to print per service
  6332.  29h    BYTE    01h if disk write needed
  6333.  2Ah    BYTE    01h if queued data should be flushed
  6334.  2Bh    BYTE    01h to update cps status
  6335. --------c-17C1--------------------------------
  6336. INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
  6337.     AH = C1h
  6338.     DX = printer port (0-3)
  6339.     DS:SI -> ASCIZ string to save for display
  6340. Note:    flushes pending writes
  6341. SeeAlso: AH=C0h,AH=C2h
  6342. --------c-17C2-------------------------------
  6343. INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
  6344.     AH = C2h
  6345.     DX = printer port (0-3)
  6346. SeeAlso: AH=C3h
  6347. --------c-17C3-------------------------------
  6348. INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
  6349.     AH = C3h
  6350.     DX = printer port (0-3)
  6351. SeeAlso: AH=C2h,AH=C7h
  6352. --------c-17C4-------------------------------
  6353. INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
  6354.     AH = C4h
  6355. Return: DI = B0BFh
  6356.     SI = segment
  6357. --------c-17C5-------------------------------
  6358. INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
  6359.     AH = C5h
  6360.     DX = printer port (0-3)
  6361. Note:    cancels up to the pause record
  6362. --------c-17C6-------------------------------
  6363. INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
  6364.     AH = C6h
  6365.     DX = printer port (0-3)
  6366. Return: AX = queue status
  6367.        0000h printer not active or at pause
  6368.        0001h printer busy
  6369. --------c-17C7-------------------------------
  6370. INT 17 - PC Magazine PCSpool - CLOSE QUEUE
  6371.     AH = C7h
  6372.     DX = printer port (0-3)
  6373. SeeAlso: AH=C3h
  6374. --------P-17CD00-----------------------------
  6375. INT 17 - INSET - EXECUTE COMMAND STRING
  6376.     AX = CD00h
  6377.     DS:DX -> ASCIZ command string (max 80 bytes)
  6378. Return: CX = 07C2h (1986d)
  6379. Note:    user interface menus pop up after last command, unless that command
  6380.     exits INSET
  6381. --------P-17CD01-----------------------------
  6382. INT 17 - INSET - GET IMAGE SIZE
  6383.     AX = CD01h
  6384.     DS:DX -> ASCIZ name of image file
  6385. Return: AX = height in 1/720th inch
  6386.     BX = width in 1/720th inch
  6387.     CX = 07C2h (1986d)
  6388. --------P-17CD02-----------------------------
  6389. INT 17 - INSET - INITIALIZE
  6390.     AX = CD02h
  6391. Return: CX = 07C2h (1986d)
  6392. Note:    all open files are closed and the printer is reset
  6393. SeeAlso: AX=CD04h
  6394. --------P-17CD03-----------------------------
  6395. INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
  6396.     AX = CD03h
  6397. Return: CX = 07C2h (1986d)
  6398. --------P-17CD04-----------------------------
  6399. INT 17 - INSET - INITIALIZE LINKED MODE
  6400.     AX = CD04h
  6401.     ES:SI -> FAR routine for linked mode (see #0416)
  6402. Return: CX = 07C2h
  6403. SeeAlso: AX=CD02h,AX=CD08h
  6404.  
  6405. (Table 0416)
  6406. Values INSET linked-mode routine is called with:
  6407.     AL = function
  6408.         00h send character to printer
  6409.         BL = character to send
  6410.         01h send string to printer
  6411.         CX = number of bytes to send
  6412.         DS:DX -> buffer containing data
  6413.         02h move print head to horizontal starting position of image
  6414. Return:    AX = status
  6415.         0000h success
  6416.         0001h failure
  6417. --------P-17CD05-----------------------------
  6418. INT 17 - INSET - START MERGING IMAGE INTO TEXT
  6419.     AX = CD05h
  6420.     DS:DX -> ASCIZ name of PIX file
  6421.     CX = left margin of text in 1/720th inch
  6422. Return: AH = printer type
  6423.         00h page-oriented (multiple images may be placed side-by-side)
  6424.         01h line-oriented (use AX=CD06h for vertical paper movement)
  6425.     CX = 07C2h (1986d)
  6426. SeeAlso: AX=CD07h
  6427. --------P-17CD06-----------------------------
  6428. INT 17 - INSET - GRAPHICS LINE FEED
  6429.     AX = CD06h
  6430. Return: AH = completion status
  6431.         00h image complete
  6432.         01h image incomplete
  6433.     CX = 07C2h (1986d)
  6434. SeeAlso: AX=CD09h
  6435. --------P-17CD07-----------------------------
  6436. INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
  6437.     AX = CD07h
  6438. Return: CX = 07C2h
  6439. SeeAlso: AX=CD05h
  6440. --------P-17CD08-----------------------------
  6441. INT 17 - INSET - CANCEL LINK MODE
  6442.     AX = CD08h
  6443. Return: CX = 07C2h
  6444. SeeAlso: AX=CD04h
  6445. --------P-17CD09-----------------------------
  6446. INT 17 - INSET - ALTER TEXT LINE SPACING
  6447.     AX = CD09h
  6448.     CX = line spacing in 1/720th inch
  6449. Return: CX = 07C2h
  6450. Note:    not yet implemented, line spacing is currently fixed at 1/6 inch
  6451. SeeAlso: AX=CD06h
  6452. --------P-17CD0A-----------------------------
  6453. INT 17 - INSET - GET SETUP
  6454.     AX = CD0Ah
  6455.     DS:DX -> buffer for IN.SET data
  6456. Return: CX = 07C2h
  6457. --------P-17CD0B-----------------------------
  6458. INT 17 - INSET - START GETTING SCALED IMAGE
  6459.     AX = CD0Bh
  6460.     DS:SI -> ASCIZ pathname of .PIX file
  6461.     BX = number of bitplanes
  6462.     CX = number of rows in output bitmap
  6463.     DX = number of columns in output bitmap
  6464. Return: AX = status
  6465.         0000h OK
  6466.         FFFFh error
  6467. Note:    image is returned in strips by repeated calls to AX=CD0Ch
  6468. --------P-17CD0C-----------------------------
  6469. INT 17 - INSET - GET NEXT IMAGE STRIP
  6470.     AX = CD0Ch
  6471. Return: AX = status
  6472.         0000h OK but not complete
  6473.         0001h OK and image complete
  6474.         FFFFh error
  6475.     DS:SI -> buffer (max 4K) for bit map strip
  6476.     CX = start row
  6477.     DX = number of rows
  6478.     BX = offset in bytes between bit planes
  6479. Note:    buffer may be overwritten by subsequent calls
  6480. SeeAlso: AX=CD0Bh
  6481. --------P-17F0-------------------------------
  6482. INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
  6483.     AH = F0h
  6484.     DX = printer port (0-3)
  6485. Return: AX = 0001h Jetstream present
  6486.          else  non-Jetstream port
  6487. Note:    NorthNet Jetstream is a high-performance DMA-driven parallel card able
  6488.       to drive printers at up to 80000 characters per second
  6489. --------P-17F1-------------------------------
  6490. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
  6491.     AH = F1h
  6492.     CX = data buffer length
  6493.     DX = printer port (0-3)
  6494.     DS:SI -> data buffer
  6495. Return: AX = status
  6496.         0000h printer not ready (see also AH=02h)
  6497.         other printing started
  6498. SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
  6499. --------P-17F2-------------------------------
  6500. INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
  6501.     AH = F2h
  6502.     DX = printer port (0-3)
  6503. Return: AX = status
  6504.         0000h prior print request finished
  6505.         other number of characters left to print
  6506. SeeAlso: AH=02h,AH=F1h,AH=F3h
  6507. --------P-17F3-------------------------------
  6508. INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
  6509.     AH = F3h
  6510.     DX = printer port (0-3)
  6511. Return: AX = number of unprinted characters due to abort
  6512. SeeAlso: AH=F1h,AH=F4h
  6513. --------P-17F4-------------------------------
  6514. INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
  6515.     AH = F4h
  6516.     DX = printer port (0-3)
  6517.     DS:DS -> FAR post address (called with interrupts on)
  6518. SeeAlso: AH=F1h,AH=F3h
  6519. --------P-17F5-------------------------------
  6520. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
  6521.     AH = F5h
  6522.     CX = data buffer length
  6523.     DX = printer port (0-3)
  6524.     DS:SI -> data buffer (32-bit physical address)
  6525. Return: AX = status
  6526.         0000h printer not ready (see also AH=02h)
  6527.         other printing started
  6528. SeeAlso: AH=F1h
  6529. --------c-17FF--BX0000-----------------------
  6530. INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE
  6531.     AH = FFh
  6532.     BX = 0000h
  6533.     CX = 0000h
  6534.     DX = printer port number
  6535. Return: AH = printer status (see #0407 at AH=00h)
  6536. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  6537.       operating system by The Software Link, Inc.
  6538. Desc:    close the spool file immediately instead of waiting for the close time
  6539.       to elapse
  6540. SeeAlso: AH=01h,AH=03h"PC-MOS"
  6541. --------B-18---------------------------------
  6542. INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC)
  6543. Desc:    called when there is no bootable disk available to the system
  6544. Notes:    only PCs produced by IBM contain BASIC in ROM, so the action is
  6545.       unpredictable on compatibles; this interrupt often reboots the
  6546.       system, and often has no effect at all
  6547.     network cards with their own BIOS can hook this interrupt to allow
  6548.       a diskless boot off the network (even when a hard disk is present
  6549.       if none of the partitions is marked as the boot partition)
  6550. SeeAlso: INT 86"NetBIOS"
  6551. --------J-1800-------------------------------
  6552. INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
  6553.     AH = 00h
  6554. Return: AX = keystroke
  6555. SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
  6556. --------J-1801-------------------------------
  6557. INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
  6558.     AH = 01h
  6559. Return: ZF set if no keystroke available
  6560.     ZF clear if keystroke available
  6561.         AX = keystroke
  6562. SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
  6563. --------J-1802-------------------------------
  6564. INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
  6565.     AH = 02h
  6566. Return: AL = shift flags
  6567. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
  6568. --------J-1803-------------------------------
  6569. INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
  6570.     AH = 03h
  6571.     ???
  6572. Return: ???
  6573. SeeAlso: AH=00h,AH=04h
  6574. --------J-1804-------------------------------
  6575. INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
  6576.     AH = 04h
  6577.     ???
  6578. Return: ???
  6579. Note:    details are not available at this time
  6580. SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
  6581. --------J-18---------------------------------
  6582. INT 18 - NEC PC-9800 series - VIDEO
  6583.     AH = function
  6584.         0Ah set video mode
  6585.         0Bh get video mode
  6586.         0Ch start text screen display
  6587.         0Dh end text screen display
  6588.         0Eh set single display area
  6589.         0Fh set multiple display area
  6590.         10h set cursor shape
  6591.         11h display cursor
  6592.         12h terminate cursor
  6593.         13h set cursor position
  6594.         14h read font patter
  6595.         16h initialize text video RAM
  6596.         1Ah define user character
  6597.     ???
  6598. Return: ???
  6599. Notes:    details are not available at this time
  6600.     text video RAM is located at segments A000h (characters) and A200h
  6601.       (attributes)
  6602. ----------185350BX4849-----------------------
  6603. INT 18 - SPHINX C-- - WB.COM - API
  6604.     AX = 5350h ('SP')
  6605.     BX = 4849h ('HI')
  6606.     CX = 4E58h ('NX')
  6607.     DH = function
  6608.         01h set ???
  6609.         DL = ???
  6610.         02h get ???
  6611.         Return: DL = ???
  6612.         03h get ???
  6613.         Return: ES:DI -> ??? data buffer
  6614.         06h ???
  6615. Return: AX = 7370h ('sp') if installed
  6616.     BX = 6869h ('hi') if installed
  6617.     CX = 6E78h ('nx') if installed
  6618. Program: SPHINX C-- is a shareware compiler by Peter Cellik for a language
  6619.       which is a cross between C and assembler; WB.COM is the driver which
  6620.       launches the WorkBench
  6621. --------s-186900-----------------------------
  6622. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET STATUS
  6623.     AX = 6900h
  6624. Return: AX = amount of DRAM on card or 0000h if GUS not available
  6625. Program: YEA_GUS is a driver for the Graphics Ultra Sound which hooks INT 18h
  6626.       and then shells out the the program requiring its services
  6627. SeeAlso: AX=6901h,AX=690Ah,AX=690Bh
  6628. --------s-186901-----------------------------
  6629. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESET
  6630.     AX = 6901h
  6631.     BX = number of active voices (14-32)
  6632. Return: nothing
  6633. SeeAlso: AX=6900h
  6634. --------s-186902-----------------------------
  6635. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOLUME FOR SPECIFIC VOICE
  6636.     AX = 6902h
  6637.     BX = voice number (00h-1Fh)
  6638.     CX = linear volume (0000h-01FFh)
  6639. Return: nothing
  6640. SeeAlso: AX=6900h,AX=6903h,AX=6904h,AX=6909h,AX=690Ah
  6641. --------s-186903-----------------------------
  6642. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET FREQUENCY FOR VOICE
  6643.     AX = 6903h
  6644.     BX = voice number (00h-1Fh)
  6645.     CX = frequency in Hz (0-44100)
  6646. Return: nothing
  6647. SeeAlso: AX=6902h,AX=6904h
  6648. --------s-186904-----------------------------
  6649. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET LEFT/RIGHT BALANCE
  6650.     AX = 6904h
  6651.     BX = voice number (00h-1Fh)
  6652.     CX = balance (0 = left, 7 = even, 15 = right)
  6653. Return: nothing
  6654. SeeAlso: AX=6902h,AX=6903h
  6655. --------s-186905-----------------------------
  6656. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - PLAY MUSIC
  6657.     AX = 6905h
  6658.     BL = voice number
  6659.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  6660.     CL = looping type (0 = none, 1 = forward, 2 = back and forth)
  6661.     CH:DI = 20-bit starting address for voice data
  6662.     DL:SI = 20-bit address for loop start
  6663.     DH:BP = 20-bit address for loop end
  6664. SeeAlso: AX=6903h,AX=6906h,AX=690Bh
  6665. --------s-186906-----------------------------
  6666. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - LOAD SOUND DATA
  6667.     AX = 6906h
  6668.     BL = data format (1 = twos-complement, 0 = not)
  6669.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  6670.     CX = number of bytes to send
  6671.     ES:SI -> buffer containing data
  6672.     DL:DI = 20-bit address of GUS DRAM at which to load sound data
  6673. SeeAlso: AX=6900h,AX=6905h,AX=690Ch
  6674. --------s-186907-----------------------------
  6675. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - STOP VOICE
  6676.     AX = 6907h
  6677.     BX = voice number (00h-1Fh)
  6678. Return: nothing
  6679. SeeAlso: AX=6908h,AX=690Dh
  6680. --------s-186908-----------------------------
  6681. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOICE END
  6682.     AX = 6908h
  6683.     BX = voice number (00h-1Fh)
  6684.     CL:DX = 20-bit ending address
  6685. Return: nothing
  6686. SeeAlso: AX=690Bh
  6687. --------s-186909-----------------------------
  6688. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RAMP VOLUME
  6689.     AX = 6909h
  6690.     BL = voice number (00h-1Fh)
  6691.     BH = looping type (0 = none, 1 = forward, 2 = back and forth)
  6692.     CX = starting volume
  6693.     DX = ending volume
  6694.     DI:SI = time
  6695. Return: nothing
  6696. SeeAlso: AX=6902h,AX=690Ah
  6697. --------s-18690A-----------------------------
  6698. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET VOLUME
  6699.     AX = 690Ah
  6700.     BX = voice number (00h-1Fh)
  6701. Return: AX = current non-linear volume for voice
  6702. SeeAlso: AX=6902h,AX=6909h
  6703. --------s-18690B-----------------------------
  6704. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET POSITION
  6705.     AX = 690Bh
  6706.     BX = voice number
  6707. Return: BX:AX = 20-bit address at which voice is playing
  6708. SeeAlso: AX=6900h,AX=6905h,AX=6908h
  6709. --------s-18690C-----------------------------
  6710. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SAVE SOUND DATA
  6711.     AX = 690Ch
  6712.     BL = data format (1 = twos-complement, 0 = not)
  6713.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  6714.     CX = number of bytes to get
  6715.     ES:SI -> buffer for retrieved data
  6716.     DL:DI = 20-bit address in GUS DRAM from which to read voice data
  6717. Return: nothing
  6718. SeeAlso: AX=6906h
  6719. --------s-18690D-----------------------------
  6720. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESTART VOICE
  6721.     AX = 690Dh
  6722.     BX = voice
  6723.     CX = sample type (0 = 8-bit, 1 = 16-bit)
  6724.     DX = looping type (0 = none, 1 = forward, 2 = back and forth)
  6725. Return: CX = balance value
  6726. SeeAlso: AX=6907h,AX=6908h
  6727. --------s-188000-----------------------------
  6728. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - INITIALIZE
  6729.     AX = 8000h
  6730. Program: EURO_MOD is a .MOD file player for the Gravis Ultra Sound which hooks
  6731.       INT 18h and then shells out to the program requiring its services
  6732. SeeAlso: AX=8001h,AX=8004h
  6733. --------s-188001-----------------------------
  6734. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - LOAD .MOD FILE
  6735.     AX = 8001h
  6736.     BX:CX -> ASCIZ filename
  6737. SeeAlso: AX=8000h,AX=8002h
  6738. --------s-188002-----------------------------
  6739. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - PLAY .MOD FILE
  6740.     AX = 8002h
  6741. SeeAlso: AX=8002h,AX=8003h
  6742. --------s-188003-----------------------------
  6743. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - STOP PLAYING
  6744.     AX = 8003h
  6745. --------s-188004-----------------------------
  6746. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - SHUTDOWN
  6747.     AX = 8004h
  6748. SeeAlso: AX=8000h,AX=8003h
  6749. --------B-19---------------------------------
  6750. INT 19 - SYSTEM - BOOTSTRAP LOADER
  6751. Desc:    This interrupt reboots the system without clearing memory or restoring
  6752.       interrupt vectors.  Because interrupt vectors are preserved, this
  6753.       interrupt usually causes a system hang if any TSRs have hooked
  6754.       vectors from 00h through 1Ch, particularly INT 08.
  6755. Notes:    Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
  6756.       A: to 0000h:7C00h.  If this fails, and a hard disk is installed, the
  6757.       BIOS will read sector 1, head 0, track 0 of the first hard disk.
  6758.       This sector should contain a master bootstrap loader and a partition
  6759.       table (see #0418).  After loading the master boot sector at
  6760.       0000h:7C00h, the master bootstrap loader is given control.  It will
  6761.       scan the partition table for an active partition, and will then load
  6762.       the operating system's bootstrap loader (contained in the first
  6763.       sector of the active partition) and give it control.
  6764.     true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
  6765.       disk have a valid boot sector
  6766.     to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
  6767.       0040h:0072h and jump to FFFFh:0000h.    For a cold boot equivalent to
  6768.       a reset, store 0000h at 0040h:0072h before jumping.
  6769.     VDISK.SYS hooks this interrupt to allow applications to find out how
  6770.       much extended memory has been used by VDISKs (see #0417).  DOS 3.3+
  6771.       PRINT hooks INT 19 but does not set up a correct VDISK header block
  6772.       at the beginning of its INT 19 handler segment, thus causing some
  6773.       programs to overwrite extended memory which is already in use.
  6774.     the default handler is at F000h:E6F2h for 100% compatible BIOSes
  6775.     MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
  6776.       contains extended partitions which point at each other in a loop,
  6777.       since it will never find the end of the linked list of extended
  6778.       partitions
  6779. SeeAlso: INT 14/AH=17h,INT 18
  6780.  
  6781. Format of VDISK header block (at beginning of INT 19 handler's segment):
  6782. Offset    Size    Description    (Table 0417)
  6783.  00h 18 BYTEs    n/a (for VDISK.SYS, the device driver header)
  6784.  12h 11 BYTEs    signature string "VDISK     Vn.m" for VDISK.SYS version n.m
  6785.  1Dh 15 BYTEs    n/a
  6786.  2Ch  3 BYTEs    linear address of first byte of available extended memory
  6787.  
  6788. Format of hard disk master boot sector:
  6789. Offset    Size    Description    (Table 0418)
  6790.  00h 446 BYTEs    Master bootstrap loader code
  6791. 1BEh 16 BYTEs    partition record for partition 1 (see #0419)
  6792. 1CEh 16 BYTEs    partition record for partition 2
  6793. 1DEh 16 BYTEs    partition record for partition 3
  6794. 1EEh 16 BYTEs    partition record for partition 4
  6795. 1FEh    WORD    signature, AA55h indicates valid boot block
  6796.  
  6797. Format of partition record:
  6798. Offset    Size    Description    (Table 0419)
  6799.  00h    BYTE    boot indicator (80h = active partition)
  6800.  01h    BYTE    partition start head
  6801.  02h    BYTE    partition start sector (bits 0-5)
  6802.  03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
  6803.  04h    BYTE    operating system indicator (see #0420)
  6804.  05h    BYTE    partition end head
  6805.  06h    BYTE    partition end sector (bits 0-5)
  6806.  07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
  6807.  08h    DWORD    sectors preceding partition
  6808.  0Ch    DWORD    length of partition in sectors
  6809.  
  6810. (Table 0420)
  6811. Values for operating system indicator:
  6812.  00h    empty
  6813.  01h    DOS 12-bit FAT
  6814.  02h    XENIX root file system
  6815.  03h    XENIX /usr file system (obsolete)
  6816.  04h    DOS 16-bit FAT
  6817.  05h    DOS 3.3+ extended partition
  6818.  06h    DOS 3.31+ Large File System
  6819.  07h    QNX
  6820.  07h    OS/2 HPFS
  6821.  07h    Advanced Unix
  6822.  08h    AIX bootable partition, SplitDrive
  6823.  09h    AIX data partition
  6824.  09h    Coherent filesystem
  6825.  0Ah    OS/2 Boot Manager
  6826.  0Ah    OPUS
  6827.  0Ah    Coherent swap partition
  6828.  10h    OPUS
  6829.  18h    AST special Windows swap file
  6830.  24h    NEC MS-DOS 3.x
  6831.  40h    VENIX 80286
  6832.  50h    Disk Manager, read-only partition
  6833.  51h    Disk Manager, read/write partition
  6834.  51h    Novell???
  6835.  52h    CP/M
  6836.  52h    Microport System V/386
  6837.  56h    GoldenBow VFeature
  6838.  61h    SpeedStor
  6839.  63h    Unix SysV/386, 386/ix
  6840.  63h    Mach, MtXinu BSD 4.3 on Mach
  6841.  63h    GNU HURD
  6842.  64h    Novell NetWare
  6843.  65h    Novell NetWare (3.11)
  6844.  70h    DiskSecure Multi-Boot
  6845.  75h    PC/IX
  6846.  80h    Minix v1.1 - 1.4a
  6847.  81h    Minix v1.4b+
  6848.  81h    Linux
  6849.  81h    Mitac Advanced Disk Manager
  6850.  82h    Linux Swap partition (planned)
  6851.  84h    OS/2-renumbered type 04h partition (related to hiding DOS C: drive)
  6852.  93h    Amoeba file system
  6853.  94h    Amoeba bad block table
  6854.  B7h    BSDI file system (secondarily swap)
  6855.  B8h    BSDI swap partition (secondarily file system)
  6856.  C1h    DR-DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition
  6857.  C4h    DR-DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition
  6858.  C6h    DR-DOS 6.0 LOGIN.EXE-secured Huge partition
  6859.  DBh    CP/M, Concurrent CP/M, Concurrent DOS
  6860.  DBh    CTOS (Convergent Technologies OS)
  6861.  E1h    SpeedStor 12-bit FAT extended partition
  6862.  E4h    SpeedStor 16-bit FAT extended partition
  6863.  F2h    DOS 3.3+ secondary
  6864.  FEh    LANstep
  6865.  FFh    Xenix bad block table
  6866. --------!---Section--------------------------
  6867.