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