home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / inter42.doc / interrup.c < prev    next >
Encoding:
Text File  |  1994-08-07  |  315.0 KB  |  9,077 lines

  1. Interrupt List, part 3 of 12
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3. --------B-1580-------------------------------
  4. INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
  5.     AH = 80h
  6.     BX = device ID
  7.     CX = process ID
  8.     CF clear
  9. Return: CF clear if successful
  10.         AH = 00h
  11.     CF set on error
  12.         AH = status (see #0333)
  13. Note:    this function should be hooked by a multitasker which wishes to keep
  14.       track of device ownership; the default BIOS handler merely returns
  15.       successfully
  16. SeeAlso: AH=81h,AH=82h
  17.  
  18. (Table 0333)
  19. Values for status:
  20.  80h    invalid command (PC,PCjr)
  21.  86h    function not supported (XT)
  22. --------b-1580------------------------------------
  23. INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
  24.     AH = 80h
  25.     AL = function
  26.         00h get
  27.         Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
  28.         else set
  29.         BL = battery capacity (same as AL above)
  30. SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
  31. --------B-1581-------------------------------
  32. INT 15 C - OS HOOK - DEVICE CLOSE
  33.     AH = 81h
  34.     BX = device ID
  35.     CX = process ID
  36.     CF clear
  37. Return: CF clear if successful
  38.         AH = 00h
  39.     CF set on error
  40.         AH = status (see #0333)
  41. Note:    this function should be hooked by a multitasker which wishes to keep
  42.       track of device ownership; the default BIOS handler merely returns
  43.       successfully
  44. SeeAlso: AH=80h,AH=82h
  45. --------b-1581------------------------------------
  46. INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
  47.     AH = 81h
  48.     AL = new state of power output (00h off, nonzero on)
  49. Desc:    turn the +5V low power output on or off
  50. SeeAlso: AH=80h"HUNTER"
  51. --------B-1582-------------------------------
  52. INT 15 C - OS HOOK - PROGRAM TERMINATION
  53.     AH = 82h
  54.     BX = process ID
  55.     CF clear
  56. Return: CF clear if successful
  57.         AH = 00h
  58.     CF set on error
  59.         AH = status (see #0333)
  60. Notes:    closes all devices opened by the given process ID with function 80h
  61.     this function should be hooked by a multitasker which wishes to keep
  62.       track of device ownership; the default BIOS handler merely returns
  63.       successfully
  64. SeeAlso: AH=80h,AH=81h
  65. --------b-1582------------------------------------
  66. INT 15 - HUNTER 16 - SOUND OUTPUT
  67.     AH = 82h
  68.     DX = length (duration in seconds = DX * 666670 / frequency)
  69.     BX = pitch (see #0334)
  70. Desc:    Sound the tone specified in BX for the duration in DX
  71. SeeAlso: AX=1019h
  72.  
  73. (Table 0334)
  74. Values for HUNTER 16 sound pitch:
  75. BX(dec)     Note    Frequency    BX(dec)     Note    Frequency
  76.   425    G    1568.000     1515    A     440.000
  77.   451    F#    1479.503     1605    G#     415.307
  78.   477    F    1396.900     1701    G     392.000
  79.   506    E    1318.500     1802    F#     369.998
  80.   536    D#    1244.523     1909    F     349.230
  81.   568    D    1174.700     2022    E     329.630
  82.   601    C#    1108.749     2143    D#     311.127
  83.   637    C    1046.500     2270    D     293.660
  84.   675    B     958.770     2405    C#     277.183
  85.   715    A#     932.329     2548    MID C     261.630
  86.   758    A     880.000     2700    B     246.940
  87.   803    G#     830.609     2860    A#     233.081
  88.   850    G     783.990     3030    A     220.000
  89.   901    F#     739.990     3210    G#     207.654
  90.   954    F     698.460     3401    G     196.000
  91.  1011    E     659.260     3604    F#     184.996
  92.  1071    D#     622.257     3818    F     174.610
  93.  1135    D     587.330     4045    E     164.810
  94.  1203    C#     554.365     4286    D#     155.560
  95.  1274    C     523.250     4540    D     146.830
  96.  1350    B     493.880     4668    C#     142.827
  97.  1430    A#     466.162     4803    C     138.810
  98. --------B-1583-------------------------------
  99. INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
  100.     AH = 83h
  101.     AL = subfunction
  102.         00h set interval
  103.         CX:DX = microseconds to delay
  104.         ES:BX -> byte whose high bit is to be set at end of interval
  105.         01h cancel wait interval
  106. Return: CF set on error or function already busy
  107.         AH = status
  108.         80h invalid command (PC,PCjr)
  109.         86h function not supported (XT and later)
  110.     CF clear if successful
  111. Notes:    the resolution of the wait period is 977 microseconds on most systems
  112.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  113.       real-time clock chip which is available on INT 70
  114.     IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
  115. SeeAlso: AH=41h,AH=86h,INT 70
  116. --------b-1583------------------------------------
  117. INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
  118.     AH = 83h
  119.     AL = state of LCD window (00h disabled, nonzero enabled)
  120. Desc:    Enable/disable the facility where the displayed window tracks the
  121.       cursor output to keep the focus visible
  122. --------B-1584-------------------------------
  123. INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
  124.     AH = 84h
  125.     DX = subfunction
  126.         0000h read joystick switches
  127.         Return: AL bits 7-4 = switch settings
  128.         0001h read positions of joysticks
  129.         Return: AX = X position of joystick A
  130.             BX = Y position of joystick A
  131.             CX = X position of joystick B
  132.             DX = Y position of joystick B
  133. Return: CF set on error
  134.         AH = status (see #0333)
  135.     CF clear if successful
  136. Notes:    if no game port is installed, subfunction 0000h returns AL=00h (all
  137.       switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
  138.     a 250kOhm joystick typically returns 0000h-01A0h
  139. --------b-158400----------------------------------
  140. INT 15 - HUNTER 16 - GET DISKETTE PORT
  141.     AX = 8400h
  142.     BH = Drive (0: A:, 1: B:)
  143. Return: AL = Port (0: COM1, >0: COM2)
  144. Desc:    return the COM port used for the floppy drive
  145. SeeAlso: AX=8401h
  146. --------b-158401----------------------------------
  147. INT 15 - HUNTER 16 - SET DISKETTE PORT
  148.     AX = 8401h
  149.     BH = Drive (0: A:, 1: B:)
  150.     BL = Port (0: COM1, >0: COM2)
  151. Desc:    set the COM port used for the floppy drive
  152. SeeAlso: AX=8400h
  153. --------B-1585-------------------------------
  154. INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
  155.     AH = 85h
  156.     AL = SysReq key action (00h pressed, 01h released)
  157.     CF clear
  158. Return: CF clear if successful
  159.         AH = 00h
  160.     CF set on error
  161.         AH = status (see #0333)
  162. Notes:    called by keyboard decode routine
  163.     the default handler simply returns successfully; programs which wish
  164.       to monitor the SysReq key must hook this call
  165.     the SysReq key is often labeled SysRq
  166. SeeAlso: INT 09
  167. --------b-158500----------------------------------
  168. INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
  169.     AX = 8500h
  170. Desc:    restore the standard power menu
  171. SeeAlso: AX=8501h"HUNTER"
  172. --------b-158501----------------------------------
  173. INT 15 - HUNTER 16 - SET POWER MENU (APM)
  174.     AX = 8501h
  175.     BL = user software interrupt number
  176. Desc:    install an alternate power menu routine
  177. SeeAlso: AX=8500h"HUNTER"
  178. --------B-1586-------------------------------
  179. INT 15 - BIOS - WAIT (AT,PS)
  180.     AH = 86h
  181.     CX:DX = interval in microseconds
  182. Return: CF clear if successful (wait interval elapsed)
  183.     CF set on error or AH=83h wait already in progress
  184.         AH = status (see #0333)
  185. Note:    the resolution of the wait period is 977 microseconds on most systems
  186.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  187.       real-time clock chip which is available on INT 70
  188. SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
  189. --------b-1586------------------------------------
  190. INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
  191.     AH = 86h
  192.     AL = function (00h get, nonzero set)
  193.     BX = 1234h
  194.     DS:SI -> 256-byte Attribute buffer
  195. Note:    In text modes each character has its attribute byte XOR'd with the
  196.       corresponding byte in the attribute table.  If the attribute is 15,
  197.       15 is XOR'd with Table[15]
  198. --------B-1587-------------------------------
  199. INT 15 - SYSTEM - COPY EXTENDED MEMORY
  200.     AH = 87h
  201.     CX = number of words to copy (max 8000h)
  202.     ES:SI -> global descriptor table (see #0336)
  203. Return: CF set on error
  204.     CF clear if successful
  205.     AH = status (see #0335)
  206. Notes:    copy is done in protected mode with interrupts disabled by the default
  207.       BIOS handler; many 386 memory managers perform the copy with
  208.       interrupts enabled
  209.     this function is incompatible with the OS/2 compatibility box
  210. SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
  211.  
  212. (Table 0335)
  213. Values for extended-memory copy status:
  214.  00h    source copied into destination
  215.  01h    parity error
  216.  02h    interrupt error
  217.  03h    address line 20 gating failed
  218.  80h    invalid command (PC,PCjr)
  219.  86h    unsupported function (XT,PS30)
  220.  
  221. Format of global descriptor table:
  222. Offset    Size    Description    (Table 0336)
  223.  00h 16 BYTEs    zeros (used by BIOS)
  224.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  225.  12h  3 BYTEs    24-bit linear source address, low byte first
  226.  15h    BYTE    source segment access rights (93h)
  227.  16h    WORD    zero
  228.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  229.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  230.  1Dh    BYTE    destination segment access rights (93h)
  231.  1Eh 18 BYTEs    zeros (used by BIOS)
  232. --------b-1587------------------------------------
  233. INT 15 - HUNTER 16 - SET INT 72h VECTOR
  234.     AH = 87h
  235.     DS:DX = new service routine
  236. Desc:    set the INT 72h vector which is called in 2 cases:
  237.       - when the machine is about to turn off or reboot, INT 72h is called
  238.         with AH=0
  239.       - when the machine is powering up INT 72h is called with AH=01h
  240. Note:    the actual INT 72h vector must also be changed with INT 21/AH=25h
  241. --------B-1588-------------------------------
  242. INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
  243.     AH = 88h
  244. Return: CF clear if successful
  245.         AX = number of contiguous KB starting at absolute address 100000h
  246.     CF set on error
  247.         AH = status
  248.         80h invalid command (PC,PCjr)
  249.         86h unsupported function (XT,PS30)
  250. Notes:    TSRs which wish to allocate extended memory to themselves often hook
  251.       this call, and return a reduced memory size.    They are then free to
  252.       use the memory between the new and old sizes at will.
  253.     the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
  254.       for memory beyond 16MB
  255.     not all BIOSes correctly return the carry flag, making this call
  256.       unreliable unless one first checks whether it is supported through
  257.       a mechanism other than calling the function and testing CF
  258. SeeAlso: AH=87h,AH=C7h
  259. --------b-1588------------------------------------
  260. INT 15 - HUNTER 16 - GET POWER UP KEYS
  261.     AH = 88h
  262. Return: AH = 00h
  263.     BX = column
  264.     CL = row
  265. SeeAlso: AH=71h
  266. --------B-1589-------------------------------
  267. INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
  268.     AH = 89h
  269.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  270.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  271.     ES:SI -> GDT for protected mode
  272.            offset 0h  null descriptor (initialize to zeros)
  273.               8h  GDT descriptor
  274.              10h  IDT descriptor
  275.              18h  DS
  276.              20h  ES
  277.              28h  SS
  278.              30h  CS
  279.              38h  uninitialized, used to build descriptor for BIOS CS
  280. Return: CF set on error
  281.        AH = FFh  error enabling address line 20
  282.     CF clear if successful
  283.        AH = 00h
  284.        in protected mode at specified address
  285. Notes:    BL and BH must be multiples of 8
  286.     the protected-mode CS must reference the same memory as the CS this
  287.       function is called from because execution continues with the address
  288.       following the interrupt call
  289. SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
  290. --------b-158900----------------------------------
  291. INT 15 - HUNTER 16 - GET POWER MODE
  292.     AX = 8900h
  293. Return: AH = 00h
  294.     BL = current power mode
  295.         00h Standard Power Mode (SPM)
  296.         01h Advanced Power Mode (APM)
  297. SeeAlso: AX=8901h
  298. --------b-158901----------------------------------
  299. INT 15 - HUNTER 16 - SET POWER MODE
  300.     AX = 8901h
  301.     BL = new mode
  302.         00h Standard Power Mode (SPM)
  303.         01h Advanced Power Mode (APM)
  304. Return: AH = 00h
  305. SeeAlso: AX=8900h
  306. --------b-158A------------------------------------
  307. INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
  308.     AH = 8Ah
  309.     AL = new state of Power Input (00h disabled, nonzero enabled)
  310.     SI = 1234h
  311.     DI = 5678h
  312. Return: AH = status
  313.         00h success
  314.         FFh failure
  315. Desc:    Enable or disable Power Input. When Power Input is disabled the AC
  316.       adaptor will neither charge the batteries nor supply power to the
  317.       Hunter 16. Disable Power Input if using Alkaline batteries.
  318. --------b-158B------------------------------------
  319. INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
  320.     AH = 8Bh
  321.     AL = function
  322.         00h get
  323.         Return:    BH = Maximum charging temperature
  324.                 Temp = -20 + (n * 0.63) degrees Centigrade
  325.             BL = Minimum charging temperature
  326.         else set
  327.         BH = maximum charging temperature (as above)
  328.         BL = minimum charging temperature (as above)
  329. Return: AH = status
  330.         00h success
  331.         FFh failure 
  332. Desc:    get/set the temperature interval within which the charger should 
  333.       operate
  334. --------b-158C------------------------------------
  335. INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
  336.     AH = 8Ch
  337.     AL = function
  338.         00h get
  339.         Return: BX = which operations disable power save (see #0337)
  340.         else set
  341.         BX = which operations should disable power save (see #0337)
  342. SeeAlso: AH=8Dh
  343.  
  344. Bitfields for HUNTER 16 operations disabling power save:
  345. Bit(s)    Description    (Table 0337)
  346.  0    INT 10h prevents power save
  347.  1    INT 13h prevents power save
  348.  2    INT 14h prevents power save
  349.  3    INT 15h prevents power save
  350.  4    INT 1Ah prevents power save
  351.  5    INT 21h prevents power save
  352.  6    direct write to video RAM prevents power save
  353.  7    access to 8250 UART prevents power save
  354.  8    access to 8253 (Sound) prevents power save
  355. --------b-158D------------------------------------
  356. INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
  357.     AH = 8Dh
  358.     AL = function
  359.         00h get
  360.         Return: AL = Fast Charge state (00h prevented, else allowed)
  361.         nonzero set
  362.         BH = Fast Charge state (00h prevent, nonzero allow)
  363. Return: AH = status
  364.         00h success
  365.         FFh failure
  366. Desc:    control whether Fast Charging (200ma rather than 70ma) is allowed
  367. SeeAlso: AH=8Ch
  368. --------B-1590-------------------------------
  369. INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
  370.     AH = 90h
  371.     AL = device type (see #0338)
  372.     ES:BX -> request block for type codes 80h through BFh
  373.     CF clear
  374. Return: CF set if wait time satisfied
  375.     CF clear if driver must perform wait
  376.         AH = 00h
  377. Notes:    type codes are allocated as follows:
  378.       00-7F non-reentrant devices; OS must arbitrate access
  379.       80-BF reentrant devices; ES:BX points to a unique control block
  380.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  381.     floppy and hard disk BIOS code uses this call to implement a timeout;
  382.       for device types 00h and 01h, a return of CF set means that the
  383.       timeout expired before the disk responded.
  384.     this function should be hooked by a multitasker to allow other tasks
  385.       to execute while the BIOS is waiting for I/O completion; the default
  386.       handler merely returns with AH=00h and CF clear
  387. SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
  388.  
  389. (Table 0338)
  390. Values for device type:
  391.  00h    disk
  392.  01h    diskette
  393.  02h    keyboard
  394.  03h    PS/2 pointing device
  395.  21h    waiting for keyboard input (Phoenix BIOS)
  396.  80h    network
  397.  FBh    digital sound (Tandy)
  398.  FCh    disk reset (PS)
  399.  FDh    diskette motor start
  400.  FEh    printer
  401. --------B-1591-------------------------------
  402. INT 15 - OS HOOK - DEVICE POST (AT,PS)
  403.     AH = 91h
  404.     AL = device type (see #0338)
  405.     ES:BX -> request block for type codes 80h through BFh
  406.     CF clear
  407. Return: AH = 00h
  408. Note:    this function should be hooked by a multitasker to allow other tasks
  409.       to execute while the BIOS is waiting for I/O completion; the default
  410.       handler merely returns with AH=00h and CF clear
  411. SeeAlso: AH=90h
  412. ----------15A1-------------------------------
  413. INT 15 U - AMI PCI BIOS - SET ??? FLAG
  414.     AX = A100h
  415. Return: AX = 0000h
  416.     CF clear
  417. Desc:    sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in
  418.       locations 3Eh and 3Fh
  419. Note:    in the examined version of the BIOS, nonzero values in AL cause it to
  420.       drop through to checking the next possible value of AH, i.e. only
  421.       subfunction 00h is supported
  422. --------b-15BC-------------------------------
  423. INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
  424.     AH = BCh
  425. Return: CF clear
  426.     (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
  427.     (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
  428. Note:    this function reads system timer channel 0 twice, then does
  429.       calculations on the returned values to determine the delay loop
  430.       counter needed by the BIOS for beeps and floppy timeouts
  431. SeeAlso: AX=2305h
  432. --------E-15BF00-----------------------------
  433. INT 15 - Rational Systems DOS/16M - ???
  434.     AX = BF00h
  435.     ???
  436. Return: ???
  437. Note:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  438. SeeAlso: AX=BF02h
  439. --------E-15BF01-----------------------------
  440. INT 15 - Rational Systems DOS/16M - ???
  441.     AX = BF01h
  442.     ???
  443. Return: ???
  444. Notes:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  445.     called by DOS/4GW
  446. SeeAlso: AX=BF00h,AX=BF02h
  447. --------E-15BF02DX0000-----------------------
  448. INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
  449.     AX = BF02h
  450.     DX = 0000h
  451. Return: DX = nonzero if installed
  452.         DX:SI -> XBRK structure (see #0339)
  453. Note:    this function is also supported by DOS/4G
  454. SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
  455. SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
  456.  
  457. Format of DOS/16M XBRK structure:
  458. Offset    Size    Description    (Table 0339)
  459.  00h    DWORD    linear address of first available byte
  460.  04h    DWORD    linear address of last available byte + 1 ???
  461.  08h    DWORD    real-mode address of XBRK structure???
  462.  0Ch    DWORD    ???
  463.  10h  2 BYTEs    ???
  464.  12h    WORD    segment of ???
  465.  14h  8 BYTEs    ???
  466.  1Ch 512 BYTEs    protected-mode IDT
  467. 21Ch  N BYTEs    protected-mode GDT
  468. --------E-15BF03-----------------------------
  469. INT 15 - Rational Systems DOS/4GW - UNINSTALL???
  470.     AX = BF03h
  471.     BX = PSP segment of extender
  472.     ???
  473. Return: ???
  474. Note:    if BX is not the PSP segment of the extender, it passes the call down
  475.       the INT 15 chain; this allows nested instances of the extender
  476. SeeAlso: AX=BF06h
  477. --------E-15BF04-----------------------------
  478. INT 15 - Rational Systems DOS/4GW - ???
  479.     AX = BF04h
  480.     BX = PSP segment of extender
  481. Return: nothing???
  482. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  483.       the INT 15 chain; this allows nested instances of the extender
  484.     grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
  485. SeeAlso: INT 2F/AX=1607h/BX=22C0h
  486. --------E-15BF05-----------------------------
  487. INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
  488.     AX = BF05h
  489.     BX = PSP segment of extender
  490. Return: nothing???
  491. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  492.       the INT 15 chain; this allows nested instances of the extender
  493.     calls INT 67/AX=DE01h if ???
  494. --------E-15BF06-----------------------------
  495. INT 15 - Rational Systems DOS/4GW - ???
  496.     AX = BF06h
  497.     BX = PSP segment of extender
  498.     ???
  499. Return: ???
  500. Note:    if BX is not the PSP segment of the extender, it passes the call down
  501.       the INT 15 chain; this allows nested instances of the extender
  502. SeeAlso: AX=BF03h
  503. --------E-15BFDCDX0000-----------------------
  504. INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
  505.     AX = BFDCh
  506.     DX = 0000h
  507.     SI = 0000h
  508. Return: DX = nonzero if installed
  509.         DX:SI -> XBRK structure (see #0339)
  510. SeeAlso: AX=BF02h
  511. --------E-15BFDEBX0000-----------------------
  512. INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
  513.     AX = BFDEh
  514.     BX = 0000h
  515. Return: AX = ??? (0003h)
  516.     BX = FFFFh
  517. SeeAlso: AX=BF02h
  518. --------E-15BFDEBX0001-----------------------
  519. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
  520.     AX = BFDEh
  521.     BX = 0001h
  522. Return: BX = 0000h (success)
  523.     CX:DX -> name of process manager executable
  524. SeeAlso: AX=BFDEh/BX=0000h
  525. --------E-15BFDEBX0002-----------------------
  526. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  527.     AX = BFDEh
  528.     BX = 0002h
  529.     CX:DX -> ???
  530. Return: BX = 0000h (success)
  531. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
  532. --------E-15BFDEBX0003-----------------------
  533. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  534.     AX = BFDEh
  535.     BX = 0003h
  536. Return: BX = 0000h (success)
  537.     CX:DX -> ???
  538. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
  539. --------E-15BFDEBX0004-----------------------
  540. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  541.     AX = BFDEh
  542.     BX = 0004h
  543.     CL = ???
  544. Return: BX = 0000h (success)
  545.     CX:DX -> XBRK structure (see #0339)
  546. SeeAlso: AX=BFDEh/BX=0000h
  547. --------E-15BFDEBX0005-----------------------
  548. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  549.     AX = BFDEh
  550.     BX = 0005h
  551.     CX = new value for ???
  552. Return: BX = 0000h (success)
  553.     AX = old value of ???
  554.     DS:SI -> ??? (if AX nonzero on return)
  555.     ES:DI -> ??? (if AX zero on return)
  556. Note:    called by DOS4GW.EXE
  557. SeeAlso: AX=BFDEh/BX=0000h
  558. --------E-15BFDEBX0006-----------------------
  559. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  560.     AX = BFDEh
  561.     BX = 0006h
  562. Return: BX = 0000h (success)
  563.     AH = interrupt number??? (BEh)
  564.     CX:DX = ???
  565. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
  566. --------E-15BFDEBX0007-----------------------
  567. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  568.     AX = BFDEh
  569.     BX = 0007h
  570.     CX:DX = ???
  571. Return: BX = 0000h (success)
  572. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
  573. --------E-15BFDEBX0008-----------------------
  574. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  575.     AX = BFDEh
  576.     BX = 0008h
  577.     CX = segment of ???
  578.     DS = ???
  579. Return: BX = status
  580.         0000h successful
  581.         AL = ??? (80h or C0h)
  582.         DX = ??? (0603h) if AL=C0h
  583.         0001h failed
  584.         AX = 0000h
  585. Note:    called by DOS4GW.EXE
  586. SeeAlso: AX=BFDEh/BX=0000h
  587. --------E-15BFDEBX0009-----------------------
  588. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
  589.     AX = BFDEh
  590.     BX = 0009h
  591. Return: BX = 0000h (success)
  592.     CX:DX -> full pathname to LOAD32.EXP
  593. SeeAlso: AX=BFDEh/BX=0000h
  594. --------E-15BFDEBX000A-----------------------
  595. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
  596.     AX = BFDEh
  597.     BX = 000Ah
  598. Return: BX = 0000h (success)
  599.     AX = new value of ??? counter
  600. Notes:    also resets a variety of values if the counter goes negative
  601.     called by DOS4GW.EXE
  602. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
  603. --------E-15BFDEBX000B-----------------------
  604. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
  605.     AX = BFDEh
  606.     BX = 000Bh
  607. Return: AX = new value of ??? counter
  608. Note:    called by DOS4GW.EXE
  609. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
  610. --------E-15BFDEBX000C-----------------------
  611. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  612.     AX = BFDEh
  613.     BX = 000Ch
  614.     CL = ???
  615.         00h
  616.         nonzero
  617. Return: ???
  618. SeeAlso: AX=BFDEh/BX=0000h
  619. --------E-15BFDEBX000D-----------------------
  620. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  621.     AX = BFDEh
  622.     BX = 000Dh
  623.     ???
  624. Return: ???
  625. SeeAlso: AX=BFDEh/BX=0000h
  626. --------E-15BFDEBX000E-----------------------
  627. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  628.     AX = BFDEh
  629.     BX = 000Eh
  630.     DX:CX -> ???
  631. Return: AX = segment of handle for calling task
  632.     BX = ??? (probably destroyed)
  633.     DX:CX -> ???
  634. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
  635. --------E-15BFDEBX000F-----------------------
  636. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  637.     AX = BFDEh
  638.     BX = 000Fh
  639. Return: AX = segment of handle for calling task
  640.     BX = ??? (probably destroyed)
  641.     DX:CX -> ???
  642. Note:    identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
  643. SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
  644. --------E-15BFDEBX0010-----------------------
  645. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
  646.     AX = BFDEh
  647.     BX = 0010h
  648. Return: AX = segment of caller's task handle
  649.     BX destroyed
  650. SeeAlso: AX=BFDEh/BX=000Fh
  651. --------E-15BFDEBX0011-----------------------
  652. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  653.     AX = BFDEh
  654.     BX = 0011h
  655. Return: CX = code segment of DVDOS4GX.DVR
  656.     BX = ??? (0004h)
  657. SeeAlso: AX=BFDEh/BX=0000h
  658. --------E-15BFDEBX0012-----------------------
  659. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  660.     AX = BFDEh
  661.     BX = 0012h
  662. Return: DX = code segment of DVDOS4GX.DVR
  663.     BX = ??? (012Ch)
  664.     CX = ??? (0006h)
  665. SeeAlso: AX=BFDEh/BX=0000h
  666. --------E-15BFDEBX0013-----------------------
  667. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  668.     AX = BFDEh
  669.     BX = 0013h
  670. Return: DX:CX -> ???
  671. SeeAlso: AX=BFDEh/BX=000Eh
  672. --------E-15BFDEBX0014-----------------------
  673. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
  674.     AX = BFDEh
  675.     BX = 0014h
  676.     CX = index of ??? mailbox
  677.         (0000h-0004h valid, but no range checking done)
  678. Return: AX,BX destroyed
  679. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  680. --------E-15BFDEBX0015-----------------------
  681. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
  682.     AX = BFDEh
  683.     BX = 0015h
  684.     CX = index of ??? mailbox
  685.         (0000h-0004h valid, but no range checking done)
  686. Return: AX,BX destroyed
  687. SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
  688. --------E-15BFDEBX0016-----------------------
  689. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
  690.     AX = BFDEh
  691.     BX = 0016h
  692.     CX = index of ??? mailbox
  693.         (0000h-0004h valid, but no range checking done)
  694. Return: AX = status
  695.         0000h no one owns mailbox
  696.         0001h mailbox has an owner
  697.     BX destroyed
  698. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  699. --------E-15BFDEBX0017-----------------------
  700. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
  701.     AX = BFDEh
  702.     BX = 0017h
  703.     CX = index of ??? mailbox
  704.         (0000h-0004h valid, but no range checking done)
  705. Return: AX = segment of mailbox owner's handle
  706.     BX = segment of caller's task handle
  707. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
  708. --------E-15BFDEBXFFFD-----------------------
  709. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  710.     AX = BFDEh
  711.     BX = FFFDh
  712. Return: CX:DX = ???
  713. SeeAlso: AX=BFDEh/BX=FFFEh
  714. --------E-15BFDEBXFFFE-----------------------
  715. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  716.     AX = BFDEh
  717.     BX = FFFEh
  718.     CX:DX = ???
  719. SeeAlso: AX=BFDEh/BX=FFFDh
  720. --------E-15BFDEBXFFFF-----------------------
  721. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
  722.     AX = BFDEh
  723.     BX = FFFFh
  724. SeeAlso: AX=BFDEh/BX=0000h
  725. --------B-15C0-------------------------------
  726. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  727.     AH = C0h
  728. Return: CF set if BIOS doesn't support call
  729.     CF clear on success
  730.         ES:BX -> ROM table (see #0340)
  731.     AH = status
  732.         00h successful
  733.         86h unsupported function
  734. Notes:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  735.     the configuration table is at F000h:E6F5h in 100% compatible BIOSes
  736.     Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
  737.       and a model byte at absolute address FE845h (see #0346)
  738.     Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
  739.       a product identifier at F000h:00FAh (see #0348)
  740.     Compaq machines can be identified by the signature string "COMPAQ" at
  741.       F000h:FFEAh, and is preceded by additional information (see #0347)
  742.     Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
  743.       the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
  744.       first three data bytes (model/submodel/revision) in the returned
  745.       table
  746.     Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
  747.       a laptop information record at F000h:E000h (see #0349)
  748.     some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
  749.       past the end of the configuration table
  750.     the Phoenix 386 BIOS contains a second version and date string
  751.       (presumably the last modification for that OEM version) beginning at
  752.       F000h:FFD8h, with each byte doubled (so that both ROM chips contain
  753.       the complete information)
  754. SeeAlso: AH=C7h,AH=C9h,AH=D1h
  755.  
  756. Format of ROM configuration table:
  757. Offset    Size    Description    (Table 0340)
  758.  00h    WORD    number of bytes following
  759.  02h    BYTE    model (see #0345)
  760.  03h    BYTE    submodel (see #0345)
  761.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  762.  05h    BYTE    feature byte 1 (see #0341)
  763.  06h    BYTE    feature byte 2 (see #0342)
  764.  07h    BYTE    feature byte 3 (see #0343)
  765.  08h    BYTE    feature byte 4 (see #0344)
  766.  09h    BYTE    feature byte 5:
  767.         reserved (0) (IBM)
  768.         ??? (08h) (Phoenix 386 v1.10)
  769. ---AWARD BIOS---
  770.  0Ah  N BYTEs    AWARD copyright notice
  771. ---Phoenix BIOS---
  772.  0Ah    BYTE    ??? (00h)
  773.  0Bh    BYTE    major version
  774.  0Ch    BYTE    minor version (BCD)
  775.  0Dh  4 BYTEs    ASCIZ string "PTL" (Phoenix Technologies Ltd)
  776. ---Quadram Quad386---
  777.  0Ah 17 BYTEs    ASCII signature string "Quadram Quad386XT"
  778.  
  779. Bitfields for feature byte 1:
  780. Bit(s)    Description    (Table 0341)
  781.  7    DMA channel 3 used by hard disk BIOS
  782.  6    2nd 8259 installed
  783.  5    Real-Time Clock installed
  784.  4    INT 15/AH=4Fh called upon INT 09h
  785.  3    wait for external event (INT 15/AH=41h) supported
  786.  2    extended BIOS area allocated (usually at top of RAM)
  787.  1    bus is Micro Channel instead of ISA
  788.  0    system has dual bus (Micro Channel + ISA)
  789.  
  790. Bitfields for feature byte 2:
  791. Bit(s)    Description    (Table 0342)
  792.  7    reserved
  793.  6    INT 16/AH=09h (keyboard functionality) supported
  794.  5    INT 15/AH=C6h (get POS data) supported
  795.  4    INT 15/AH=C7h (return memory map info) supported
  796.  3    INT 15/AH=C8h (en/disable CPU functions) supported
  797.  2    non-8042 keyboard controller
  798.  1    data streaming supported
  799.  0    reserved
  800.  
  801. Bitfields for feature byte 3:
  802. Bit(s)    Description    (Table 0343)
  803.  7-5    reserved
  804.  4    ??? (set on 1992 PS/1's, N51SX, CL57SX, 35SX?, 40SX?)
  805.  3    SCSI subsystem supported on system board
  806.  2    information panel installed
  807.  1    IML (Initial Machine Load) system
  808.  0    SCSI supported in IML
  809.  
  810. Bitfields for feature byte 4:
  811. Bit(s)    Description    (Table 0344)
  812.  7    ??? (set on N51SX, CL57SX)
  813.  6-4    reserved
  814.  3    ??? (set on some 1992 PS/1's, 35SX, 40SX)
  815.  2-1    reserved
  816.  0    ??? (set on N51SX, CL57SX, 57SX)
  817.  
  818. (Table 0345)
  819. Values for model/submodel/revision:
  820. Model  Submdl  Rev    BIOS date    System
  821.  FFh    *    *    04/24/81    PC (original)
  822.  FFh    *    *    10/19/81    PC (some bugfixes)
  823.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  824.  FFh    00h    rev      ???        Tandy 1000SL
  825.  FFh    01h    rev      ???        Tandy 1000TL
  826.  FFh    46h    ***      ???        Olivetti M15
  827.  FEh    *    *    08/16/82    PC XT
  828.  FEh    *    *    11/08/82    PC XT and Portable
  829.  FEh    *    *    ../..x..    Toshiba laptops up to ~1987
  830.                     ("x"=product ID) (see #0350)
  831.  FEh    43h    ***      ???        Olivetti M240
  832.  FEh    A6h    ???      ???        Quadram Quad386
  833.  FDh    *    *    06/01/83    PCjr
  834.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  835.  FCh    00h    00h      ???        PC3270/AT
  836.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  837.  FCh    00h    > 01h      ???        7531/2 Industrial AT
  838.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  839.  FCh    01h    00h    09/17/87    Tandy 3000
  840.  FCh    01h    00h    ../..x..    Toshiba laptops since ~1988
  841.                     ("x"=product ID) (see #0350)
  842.  FCh    01h    00h    03/08/93    Compaq DESKPRO/i
  843.  FCh    01h    00h     various    Compaq DESKPRO, SystemPro, ProSignia
  844.  FCh    01h    00h    07/20/93    Zenith Z-Lite 425L
  845.  FCh    01h    20h    06/10/92    AST
  846.  FCh    01h    30h      ???        Tandy 3000NL
  847.  FCh    01h    ???      ???        Compaq 286/386
  848.  FCh    02h    00h    04/21/86    PC XT-286
  849.  FCh    02h    00h     various    Compaq LTE Lite
  850.  FCh    02h    00h    08/05/93    Compaq Contura 486/486c/486cx
  851.  FCh    04h    00h    02/13/87     ** PS/2 Model 50 (10 MHz/1 ws 286)
  852.  FCh    04h    02h      ???        PS/2 Model 50
  853.  FCh    04h    03h    04/18/88    PS/2 Model 50Z (10 MHz/0 ws 286)
  854.  FCh    04h    04h      ???        PS/2 Model 50Z
  855.  FCh    05h    00h    02/13/87     ** PS/2 Model 60 (10 MHz 286)
  856.  FCh    06h    00h      ???        IBM 7552-140 "Gearbox"
  857.  FCh    06h    01h      ???        IBM 7552-540 "Gearbox"
  858.  FCh    08h    ***      ???        Epson, unknown model
  859.  FCh    08h    00h      ???        PS/2 Model 25/286
  860.  FCh    09h    00h      ???        PS/2 Model 25 (10 MHz 286)
  861.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  862.  FCh    0Bh    00h    02/16/90    PS/1 Model 2011 (10 MHz 286)
  863.  FCh    20h    00h    02/18/93    Compaq ProLinea
  864.  FCh    30h    ***      ???        Epson, unknown model
  865.  FCh    31h    ***      ???        Epson, unknown model
  866.  FCh    33h    ***      ???        Epson, unknown model
  867.  FCh    3Fh    ???    09/16991    Toshiba T2200SX/60 (see also #0350)
  868.  FCh    42h    ***      ???        Olivetti M280
  869.  FCh    45h    ***      ???        Olivetti M380 (XP 1, XP3, XP 5)
  870.  FCh    48h    ***      ???        Olivetti M290
  871.  FCh    4Fh    ***      ???        Olivetti M250
  872.  FCh    50h    ***      ???        Olivetti M380 (XP 7)
  873.  FCh    51h    ***      ???        Olivetti PCS286
  874.  FCh    52h    ***      ???        Olivetti M300
  875.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  876.  FCh    81h    01h      ???        "OEM machine"
  877.  FCh    82h    01h      ???        "OEM machine"
  878.  FCh    94h    00h      ???        Zenith 386
  879.  FCh    FFh    ???    01/28<91    Toshiba T2000SX/40 (see also #0350)
  880.  FBh    00h    01h    01/10/86    PC XT-089, Enh Keyb, 3.5" support
  881.  FBh    00h    02h    05/09/86    PC XT
  882.  FBh    4Ch    ***      ???        Olivetti M200
  883.  FAh    00h    00h    09/02/86    PS/2 Model 30 (8 MHz 8086)
  884.  FAh    00h    01h    12/12/86    PS/2 Model 30
  885.  FAh    01h    00h      ???        PS/2 Model 25/25L (8 MHz 8086)
  886.  FAh    30h    00h      ???        IBM Restaurant Terminal
  887.  FAh    4Eh    ***      ???        Olivetti M111
  888.  FAh    FEh    00h      ???        IBM PCradio 9075
  889.  F9h    00h    00h    09/13/85    PC Convertible
  890.  F9h    FFh    00h      ???        PC Convertible
  891.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 (16MHz 386)
  892.  F8h    01h    00h    10/07/87    PS/2 Model 80 (20MHz 386)
  893.  F8h    02h    00h      ???        PS/2 Model 55-5571
  894.  F8h    04h    00h      ???        PS/2 Model 70
  895.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  896.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  897.  F8h    05h    00h      ???        IBM PC 7568
  898.  F8h    06h    00h      ???        PS/2 Model 55-5571
  899.  F8h    07h    00h      ???        IBM PC 7561/2
  900.  F8h    07h    01h      ???        PS/2 Model 55-5551
  901.  F8h    07h    02h      ???        IBM PC 7561/2
  902.  F8h    07h    03h      ???        PS/2 Model 55-5551
  903.  F8h    09h    00h      ???        PS/2 Model 70 16MHz, type 1 system brd
  904.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  905.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  906.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121) typ 2 sys brd
  907.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  908.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX (16 MHz 386SX)
  909.  F8h    0Dh    00h      ???        PS/2 Model 70 25MHz, type 3 system brd
  910.  F8h    0Eh    00h      ???        PS/1 486SX
  911.  F8h    0Fh    00h      ???        PS/1 486DX
  912.  F8h    10h    00h      ???        PS/2 Model 55-5551
  913.  F8h    11h    00h    10/01/90    PS/2 Model 90 XP (25 MHz 486)
  914.  F8h    12h    00h      ???        PS/2 Model 95 XP
  915.  F8h    13h    00h    10/01/90    PS/2 Model 90 XP (33 MHz 486)
  916.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9 (25 MHz 486), 95 XP
  917.  F8h    15h    00h      ???        PS/2 Model 90 XP
  918.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD (33 MHz 486)
  919.  F8h    17h    00h      ???        PS/2 Model 90 XP
  920.  F8h    19h    05h      ???        PS/2 Model 35/35LS or 40 (20 MHz 386SX)
  921.  F8h    1Ah    00h      ???        PS/2 Model 95 XP
  922.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486 (25 MHz 486)
  923.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121 (16 MHz 386SX)
  924.  F8h    1Eh    00h    02/08/90    PS/2 Model 55LS (16 MHz 386SX)
  925.  F8h    23h    00h      ???        PS/2 Model L40 SX
  926.  F8h    23h    01h      ???        PS/2 Model L40 SX (20 MHz 386SX)
  927.  F8h    25h    00h      ???        PS/2 Model 57 SLC
  928.  F8h    25h    06h      ???        PS/2 Model M57 (20 MHz 386SLC)
  929.  F8h    26h    00h      ???        PS/2 Model 57 SX
  930.  F8h    26h    01h      ???        PS/2 Model 57 (20 MHz 386SX)
  931.  F8h    28h    00h      ???        PS/2 Model 95 XP
  932.  F8h    29h    00h      ???        PS/2 Model 90 XP
  933.  F8h    2Ah    00h      ???        PS/2 Model 95 XP (50 MHz 486)
  934.  F8h    2Bh    00h      ???        PS/2 Model 90 (50 MHz 486)
  935.  F8h    2Ch    00h      ???        PS/2 Model 95 XP
  936.  F8h    2Ch    01h      ???        PS/2 Model 95 (20 MHz 486SX)
  937.  F8h    2Dh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX)
  938.  F8h    2Eh    00h      ???        PS/2 Model 95 XP
  939.  F8h    2Eh    01h      ???        PS/2 Model 95 (20 MHz 486SX + 487SX)
  940.  F8h    2Fh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX + 487SX)
  941.  F8h    30h    00h      ???        PS/1 Model 2121 (16 MHz 386SX)
  942.  F8h    33h    00h      ???        PS/2 Model 30-386
  943.  F8h    34h    00h      ???        PS/2 Model 25-386
  944.  F8h    36h    00h      ???        PS/2 Model 95 XP
  945.  F8h    37h    00h      ???        PS/2 Model 90 XP
  946.  F8h    38h    00h      ???        PS/2 Model 57
  947.  F8h    39h    00h      ???        PS/2 Model 95 XP
  948.  F8h    3Fh    00h      ???        PS/2 Model 90 XP
  949.  F8h    40h    00h      ???        PS/2 Model 95 XP
  950.  F8h    41h    00h      ???        PS/2 Model 77
  951.  F8h    45h    00h      ???        PS/2 Model 90 XP (Pentium)
  952.  F8h    46h    00h      ???        PS/2 Model 95 XP (Pentium)
  953.  F8h    47h    00h      ???        PS/2 Model 90/95 E (Pentium)
  954.  F8h    48h    00h      ???        PS/2 Model 85
  955.  F8h    49h    00h      ???        PS/ValuePoint 325T
  956.  F8h    4Ah    00h      ???        PS/ValuePoint 425SX
  957.  F8h    4Bh    00h      ???        PS/ValuePoint 433DX
  958.  F8h    4Eh    00h      ???        PS/2 Model 295
  959.  F8h    50h    00h      ???        PS/2 Model P70 (8573) (16 MHz 386)
  960.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  961.  F8h    52h    00h      ???        PS/2 Model P75 (33 MHz 486)
  962.  F8h    56h    00h      ???        PS/2 Model CL57 SX
  963.  F8h    57h    00h      ???        PS/2 Model 90 XP
  964.  F8h    58h    00h      ???        PS/2 Model 95 XP
  965.  F8h    59h    00h      ???        PS/2 Model 90 XP
  966.  F8h    5Ah    00h      ???        PS/2 Model 95 XP
  967.  F8h    5Bh    00h      ???        PS/2 Model 90 XP
  968.  F8h    5Ch    00h      ???        PS/2 Model 95 XP
  969.  F8h    5Dh    00h      ???        PS/2 Model N51 SLC
  970.  F8h    5Eh    00h      ???        IBM ThinkPad 700
  971.  F8h    61h    ***      ???        Olivetti P500
  972.  F8h    62h    ***      ???        Olivetti P800
  973.  F8h    80h    00h      ???        PS/2 Model 80 (25 MHz 386)
  974.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21
  975.  F8h    81h    00h      ???        PS/2 Model 55-5502
  976.  F8h    87h    00h      ???        PS/2 Model N33SX
  977.  F8h    88h    00h      ???        PS/2 Model 55-5530T
  978.  F8h    97h    00h      ???        PS/2 Model 55 Note N23SX
  979.  F8h    99h    00h      ???        PS/2 Model N51 SX
  980.  F8h    F2h    30h      ???        Reply Model 32
  981.  F8h    F6h    30h      ???        Memorex Telex
  982.  F8h    FDh    00h      ???        IBM Processor Complex (with VPD)
  983.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX)
  984.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX)
  985.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX + 487SX)
  986.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX + 487SX)
  987.  E1h    ???    ???      ???        ??? (checked for by DOS4GW.EXE)
  988.  E1h    00h    00h      ???        PS/2 Model 55-5530 Laptop
  989.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  990.  30h    ???    ???      ???        Sperry PC
  991.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  992.  ???    56h    ???      ???        Olivetti, unknown model
  993.  ???    74h    ???      ???        Olivetti, unknown model
  994.     * This BIOS call is not implemented in these early versions.
  995.       Read Model byte at F000h:FFFEh and BIOS date at F000h:FFF5h.
  996.    ** These BIOS versions require the DASDDRVR.SYS patches.
  997.   *** These Olivetti and Epson machines store the submodel in the byte at
  998.     F000h:FFFDh.
  999.  
  1000. (Table 0346)
  1001. Values for Dell model byte:
  1002.  02h    Dell 200
  1003.  03h    Dell 300
  1004.  05h    Dell 220
  1005.  06h    Dell 310
  1006.  07h    Dell 325
  1007.  09h    Dell 310A
  1008.  0Ah    Dell 316
  1009.  0Bh    Dell 220E
  1010.  0Ch    Dell 210
  1011.  0Dh    Dell 316SX
  1012.  0Eh    Dell 316LT
  1013.  0Fh    Dell 320LX
  1014.  11h    Dell 425E
  1015.  
  1016. Format of Compaq product information:
  1017. Address        Size    Description    (Table 0347)
  1018.  F000h:FFE4h    BYTE    product family code (first byte)
  1019.  F000h:FFE4h    BYTE    Point release number
  1020.  F000h:FFE4h    BYTE    ROM version code
  1021.  F000h:FFE4h    BYTE    product family code (second byte)
  1022.  F000h:FFE8h    WORD    BIOS type code
  1023.  
  1024. Bitfields for Hewlett-Packard product identifier:
  1025. Bit(s)    Description    (Table 0348)
  1026.  4-0    machine code
  1027.     0 original Vectra
  1028.     1 ES/12
  1029.     2 RS/20
  1030.     3 Portable/CS
  1031.     4 ES
  1032.     5 CS
  1033.     6 RS/16
  1034.     other reserved
  1035.  7-5    CPU type
  1036.     0 = 80286
  1037.     1 = 8088
  1038.     2 = 8086
  1039.     3 = 80386
  1040.     other reserved
  1041.  
  1042. Format of Toshiba laptop information:
  1043. Offset    Size    Description    (Table 0349)
  1044.  00h  8 BYTEs    ASCII product number (e.g. "T2200SX ")
  1045.  08h  8 BYTEs    ASCII version number (e.g. "V1.20   ")
  1046.  10h  8 BYTEs    ASCII signature string "TOSHIBA "
  1047.  18h  8 BYTEs    ???
  1048.  20h    DWORD    -> built-in BIOS setup program entry point or 0000h:0000h
  1049. Note:    this record is located at F000h:E000h
  1050.  
  1051. (Table 0350)
  1052. Values for Toshiba product ID:
  1053. model prodID   version      date       product number    /hdd
  1054.  FEh    29h        ../..)..   Toshiba T1000LE
  1055.  FEh    2Ah        ../..*..   Toshiba T1000XE
  1056.  FEh    2Bh        ../..+..   Toshiba T1000SE
  1057.  FEh    2Ch        ../..,..   Toshiba T1000      -
  1058.  FEh    2Dh        ../..-..   Toshiba T1200F     -
  1059.  FEh    2Dh    V4.00    12/26-87   Toshiba T1200H    /20
  1060.  FEh    2Eh        ../.....   Toshiba T1100+
  1061.  FCh    22h        ../.."..   Toshiba T8500
  1062.  FCh    26h        01/15&88   Toshiba T5200     /100
  1063.  FCh    27h        ../..'..   Toshiba T5100
  1064.  FCh    28h        ../..(..   Toshiba T2000
  1065.  FCh    2Ah        12/26*89   Toshiba T1200XE
  1066.  FCh    2Bh        ../..+..   Toshiba T1600
  1067.  FCh    2Ch        ../..,..   Toshiba T3100e
  1068.  FCh    2Dh        ../..-..   Toshiba T3200
  1069.  FCh    2Fh        ../../..   Toshiba T3100
  1070.  FCh    34h        ../..4..   Toshiba T100X
  1071.  FCh    ???        ../.. ..   Toshiba T200
  1072.  FCh    ???        ../.. ..   Toshiba T200CS
  1073.  FCh    38h        ../..8..   Toshiba T2000SXe
  1074.  FCh    39h    V1.20    09/16991   Toshiba T2200SX   /60
  1075.  FCh    39h    V1.40    10/01992   Toshiba T2200SX   /120 (upgraded)
  1076.  FCh    3Ch    V1.50    01/28<91   Toshiba T2000SX   /40
  1077.  FCh    3Dh        ../..=..   Toshiba T3200SXC
  1078.  FCh    3Eh        ../..>..   Toshiba T3100SX
  1079.  FCh    3Fh        ../..?..   Toshiba T3200SX
  1080.  FCh    40h        ../..@..   Toshiba T4500C
  1081.  FCh    41h        04/05A92   Toshiba T4500     ("T4500SXC" ?)
  1082.  FCh    45h    V3.20    04/14E92   Toshiba T4400SX   ("C" or "SXC" on cover)
  1083.  FCh    45h        01/13E93   Toshiba T4400SXC
  1084.  FCh    46h *        ../..F..   Toshiba T6400
  1085.  FCh    46h *        ../..F..   Toshiba T6400C
  1086.  FCh    5Fh        ../.._..   Toshiba T3300SL
  1087.  FCh    69h        ../..i..   Toshiba T1900C
  1088.  FCh    6Ah        ../..j..   Toshiba T1900
  1089.  FCh    6Dh        ../..m..   Toshiba T1850C
  1090.  FCh    6Eh        12/25n92   Toshiba T1850
  1091.  FCh    6Fh        07/17o92   Toshiba T1800
  1092.  FCh    7Eh    V1.30    06/17~93   Toshiba T4600C
  1093.  FCh    7Fh        ../..x..   Toshiba T4600
  1094.  FCh    97h        ../..x..   Toshiba T4800CT
  1095.  FCh    98h *    V1.10    12/22x93   Toshiba T1910     /120 /320
  1096.  FCh    98h *        ../..x..   Toshiba T1910CS
  1097.  FCh    99h        ../..x..   Toshiba T4700CS
  1098.  FCh    9Bh    V2.30    01/31x94   Toshiba T4700CT
  1099.  FCh    9Bh    V2.50    03/22x94   Toshiba T4700CT   /320
  1100.  FCh    9Ch    V1.30    01/11x94   Toshiba T1950CT   /320
  1101.  FCh    9Dh *        ../..x..   Toshiba T1950
  1102.  FCh    9Dh *        ../..x..   Toshiba T1950CS
  1103.  FCh    9Eh *    V1.20    12/25x93   Toshiba T3400     /120
  1104.  FCh    9Eh *               Toshiba T3400CT
  1105. Note:    BIOS version numbers and dates may vary, esp. due to harddisk upgrades
  1106.     [*] These models have monochrome and color versions which can only be
  1107.       distinguished with INT 42/AX=7503h
  1108. --------B-15C1-------------------------------
  1109. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  1110.     AH = C1h
  1111. Return: CF set on error
  1112.     CF clear if successful
  1113.         ES = segment of data area
  1114. SeeAlso: AH=04h"ABIOS"
  1115. --------M-15C200-----------------------------
  1116. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  1117.     AX = C200h
  1118.     BH = new state
  1119.         00h disabled
  1120.         01h enabled
  1121. Return: CF set on error
  1122.     AH = status (see #0351)
  1123.  
  1124. (Table 0351)
  1125. Values for pointing device function status:
  1126.  00h    successful
  1127.  01h    invalid function
  1128.  02h    invalid input
  1129.  03h    interface error
  1130.  04h    need to resend
  1131.  05h    no device handler installed
  1132. --------M-15C201-----------------------------
  1133. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  1134.     AX = C201h
  1135. Return: CF set on error
  1136.         AH = status (see #0351)
  1137.     CF clear if successful
  1138.         BH = device ID
  1139.         BL = value returned by attached device after reset
  1140.         AAh if device is a mouse
  1141. Note:    after successful completion of this call, the pointing device is set
  1142.       as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
  1143.       scaling 1:1, unchanged data package size
  1144. SeeAlso: INT 33/AX=0000h
  1145. --------M-15C202-----------------------------
  1146. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  1147.     AX = C202h
  1148.     BH = sampling rate
  1149.         00h 10/second
  1150.         01h 20/second
  1151.         02h 40/second
  1152.         03h 60/second
  1153.         04h 80/second
  1154.         05h 100/second
  1155.         06h 200/second
  1156. Return: CF set on error
  1157.         AH = status (see #0351)
  1158. SeeAlso: INT 33/AX=001Ch
  1159. --------M-15C203-----------------------------
  1160. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  1161.     AX = C203h
  1162.     BH = resolution (see #0352)
  1163. Return: CF set on error
  1164.         AH = status (see #0351)
  1165.  
  1166. (Table 0352)
  1167. Values for pointing device resolution:
  1168.  00h    one count per mm
  1169.  01h    two counts per mm
  1170.  02h    four counts per mm
  1171.  03h    eight counts per mm
  1172. --------M-15C204-----------------------------
  1173. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  1174.     AX = C204h
  1175. Return: CF set on error
  1176.         AH = status (see #0351)
  1177.     CF clear if successful
  1178.         BH = device ID
  1179. --------M-15C205-----------------------------
  1180. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  1181.     AX = C205h
  1182.     BH = data package size (1 - 8 bytes)
  1183. Return: CF set on error
  1184.         AH = status (see #0351)
  1185. Note:    the pointing device is set as follows: disabled, 100 Hz sample rate,
  1186.       resolution 4 counts/mm, scaling 1:1
  1187. SeeAlso: AX=C201h
  1188. --------M-15C206-----------------------------
  1189. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
  1190.     AX = C206h
  1191.     BH = subfunction
  1192.         00h return device status
  1193.         Return: BL = pointing device status (see #0353)
  1194.             CL = resolution (see #0352)
  1195.             DL = sample rate, reports per second
  1196.         01h set scaling at 1:1
  1197.         02h set scaling at 2:1
  1198. Return: CF set on error
  1199.         AH = status (see #0351)
  1200.  
  1201. Bitfields for pointing device status:
  1202. Bit(s)    Description    (Table 0353)
  1203.  0    right button pressed
  1204.  1    reserved
  1205.  2    left button pressed
  1206.  3    reserved
  1207.  4    0 if 1:1 scaling, 1 if 2:1 scaling
  1208.  5    device enabled
  1209.  6    0 if stream mode, 1 if remote mode
  1210.  7    reserved
  1211. --------M-15C207-----------------------------
  1212. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  1213.     AX = C207h
  1214.     ES:BX -> FAR user device handler
  1215. Return: CF set on error
  1216.         AH = status (see #0351)
  1217. Note:    when the subroutine is called, it is passed the following values on
  1218.       the stack; the handler should return with a FAR return without
  1219.       popping the stack:
  1220.         WORD 1: status (see #0354)
  1221.         WORD 2: X data (high byte = 00h)
  1222.         WORD 3: Y data (high byte = 00h)
  1223.         WORD 4: 0000h
  1224. SeeAlso: INT 33/AX=000Ch
  1225.  
  1226. Bitfields for pointing device status:
  1227. Bit(s)    Description    (Table 0354)
  1228.  15-8    reserved (0)
  1229.  7    Y data overflowed
  1230.  6    X data overflowed
  1231.  5    Y data is negative
  1232.  4    X data is negative
  1233.  3    reserved (1)
  1234.  2    reserved (0)
  1235.  1    right button pressed
  1236.  0    left button pressed
  1237. --------B-15C3------------------------------
  1238. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  1239.     AH = C3h
  1240.     AL = function
  1241.         00h disable PS/2 watchdog timer
  1242.         01h enable PS/2 watchdog timer
  1243.         BX = timer counter (0001h-00FFh)
  1244.         02h disable Gearbox system
  1245.         03h enable Gearbox system
  1246. Return: CF set on error
  1247.     CF clear if successful
  1248. Note:    the watchdog timer generates an NMI
  1249. SeeAlso: INT 21/AH=2Bh/CX=6269h/DX=742Dh
  1250. --------B-15C4-------------------------------
  1251. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  1252.     AH = C4h
  1253.     AL = subfunction
  1254.         00h return base POS register address
  1255.         01h enable selected slot for setup
  1256.         BL = slot number (1 to 8)
  1257.         02h disable setup for all slots (enable adapter)
  1258. Return: CF set on error
  1259.     DX = base POS register address (if subfunction 00h)
  1260. SeeAlso: AH=C6h
  1261. --------B-15C5-------------------------------
  1262. INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
  1263.     AH = C5h
  1264.     AL = interrupt being invoked
  1265.         01h INT 19
  1266.         02h INT 14
  1267.         03h INT 16
  1268.         04h INT 40 (floppy INT 13)
  1269.         05h INT 17
  1270.         06h INT 10
  1271.         07h INT 12
  1272.         08h INT 11
  1273.         09h INT 1A
  1274. Return: all registers except AX must be preserved
  1275. Notes:    called as the very first action of the indicated ROM BIOS interrupt
  1276.       handlers on the PS/2 Models 30/286, 50Z, and 95
  1277.     default handler does nothing and returns CF clear for the above
  1278.       subfunctions, CF set and AH=86h for all other subfunctions
  1279.     value of AX passed to the original interrupt handler is pushed on
  1280.       stack immediately prior to call
  1281. --------B-15C6-------------------------------
  1282. INT 15 U - later PS/2 models - GET POS DATA
  1283.     AH = C6h
  1284.     ???
  1285. Return: ???
  1286. Notes:    this function is referenced by name and number in some IBM BIOS manuals
  1287.     IBM reports that "there are a number of problems with this call" and
  1288.       does not recommend its use.
  1289. SeeAlso: AH=C4h
  1290. --------B-15C7-------------------------------
  1291. INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
  1292.     AH = C7h
  1293.     DS:SI -> user supplied memory map table (see #0355)
  1294. Note:    call AH=C0h and examine bit 4 of feature byte 2 to check if this
  1295.       function is supported
  1296. Return: CF set on error, clear if successful
  1297. SeeAlso: AH=C0h,AH=C9h,AH=D1h
  1298.  
  1299. Format of memory-map table structure:
  1300. Offset    Size    Description    (Table 0355)
  1301.  00h    WORD    length of table (excluding this word)
  1302.  02h    DWORD    local memory between 1M and 16M, in 1K blocks
  1303.  06h    DWORD    local memory between 16M and 4G, in 1K blocks
  1304.  0Ah    DWORD    system memory between 1M and 16M, in 1K blocks
  1305.  0Eh    DWORD    system memory between 16M and 4G, in 1K blocks
  1306.  12h    DWORD    cacheable memory between 1M and 16M, in 1K blocks
  1307.  16h    DWORD    cacheable memory between 16M and 4G, in 1K blocks
  1308.  1Ah    DWORD    1K blocks before start of non-system memory between 1M and 16M
  1309.  1Eh    DWORD    1K blocks before start of non-system memory between 16M and 4G
  1310.  22h  2 DWORDs    reserved
  1311. --------B-15C8-------------------------------
  1312. INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
  1313.     AH = C8h
  1314.     AL = function
  1315.         00h disable cache or (90 and 95) disable cache L1
  1316.         01h enable cache or (90 and 95) enable cache L1
  1317.         ---models 90 and 95 only---
  1318.         02h disable cache L2
  1319.         03h enable cache L2
  1320.         04h disable both caches
  1321.         05h enable both caches
  1322.         06h return status of both caches
  1323.         07h-FFh Reserved
  1324. Return: CF set on error
  1325.     CF clear if successful
  1326.         AH = status (see #0356)
  1327.     For subfunction 06h only:
  1328.         BH = status of cache L2
  1329.         00h enabled
  1330.         01h disabled or not installed
  1331.         BL = status of cache L1 (same codes as BH)
  1332. Notes:     supported by at least PS/2 70, 70/486, 80-A21, 90, 95
  1333.     call AH=C0h and examine bit 3 of feature byte 2 to check if this
  1334.       function is supported.
  1335.     on a 486 system, any external caches must be disabled when the
  1336.       on-chip cache (L1) is disabled.
  1337. SeeAlso: AH=C0h
  1338.  
  1339. (Table 0356)
  1340. Values for status:
  1341.  00h    operation successful
  1342.  01h    function choice (in AL) is invalid
  1343.  02h    NVRAM data is invalid
  1344.  03h    cache test error
  1345.  04h    (90 and 95 only) cannot perform operation requested due to state of
  1346.       other cache (see note above)
  1347.  05h    no L2 cache is present
  1348.  09h    CPU in protected mode
  1349. --------B-15C9-------------------------------
  1350. INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
  1351.     AH = C9h
  1352.     AL = 10h (may be required on some non-PS BIOSes)
  1353. Return: CF clear if successful
  1354.         AH = 00h
  1355.         CH = CPU type (see #0357)
  1356.         CL = mask revision (stepping level) (see #0358)
  1357.     CF set on error
  1358.         AH = status (80h,86h = function not supported)
  1359. Notes:    the BIOS must save DX at startup in order to be able to support this
  1360.       call; PS/2 Models 56, 57, 90, and 95 are known to support it
  1361.     the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
  1362.  
  1363. (Table 0357)
  1364. Values for CPU type:
  1365.  03h    80386DX or clone
  1366.  04h    80486
  1367.  23h    80386SX or clone
  1368.  43h    80386SL or clone
  1369.  A3h    IBM 386SLC
  1370.  A4h    IBM 486SLC
  1371.  
  1372. (Table 0358)
  1373. Values for stepping level:
  1374. ---80386---
  1375.  03h    B1
  1376.  05h    D0
  1377.  08h    D1/D2/E1
  1378. ---80386SX---
  1379.  04h    A0
  1380.  05h    B
  1381.  08h    C/D1
  1382. ---80486---
  1383.  00h    A0/A1
  1384.  01h    B2
  1385.  03h    B3
  1386.  04h    B4
  1387.  05h    B5
  1388.  06h    B6
  1389.  07h    C1
  1390.  10h    cAx
  1391.  11h    cBx
  1392.  33h    DX2/66
  1393. ---486SX---
  1394.  20h    A0
  1395. Note:    the steppings for 486 are alternately reported to be 01h=Bx, 02h=C0,
  1396.       04h=D0
  1397. --------B-15CA-------------------------------
  1398. INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
  1399.     AH = CAh
  1400.     AL = function
  1401.         00h read CMOS
  1402.         Return: CL = value of CMOS location
  1403.         01h write CMOS
  1404.         CL = new value for CMOS location
  1405.     BL = CMOS location (0Eh-3Fh)
  1406. Return: CF clear if successful
  1407.         AH = 00h
  1408.     CF set on error
  1409.         AH = error code (see #0359)
  1410. Note:    writes do not update the CMOS checksum
  1411.  
  1412. (Table 0359)
  1413. Values for CMOS read/write error code:
  1414.  01h    CMOS lost power or has invalid checksum
  1415.  03h    specified location out of range (too high)
  1416.  04h    specified location out of range (too low)
  1417.  80h    unsupported function (PC)
  1418.  86h    unsupported function (XT)
  1419. --------B-15CB-------------------------------
  1420. INT 15 U - PS/2 Model 95 - RESERVED
  1421.     AH = CBh
  1422.     ???
  1423. Return: ???
  1424. --------B-15CC-------------------------------
  1425. INT 15 U - PS/2 Model 95 - RESERVED
  1426.     AH = CCh
  1427.     ???
  1428. Return: ???
  1429. --------V-15CCCC-----------------------------
  1430. INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
  1431.     AX = CCCCh
  1432. Return: AX = ABCDh if installed
  1433. Note:    supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
  1434.       older versions have the string "VCHAD" 2 bytes after the address of
  1435.       the INT 15 handler which is hooked by all versions for the SysReq key
  1436. SeeAlso: AH=85h
  1437. --------B-15CD-------------------------------
  1438. INT 15 U - PS/2 Model 95 - RESERVED
  1439.     AH = CDh
  1440.     ???
  1441. Return: ???
  1442. --------B-15CE--BL00-------------------------
  1443. INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
  1444.     AH = CEh
  1445.     BL = 00h-0Eh arbitration level to be allocated
  1446.          0Fh-FFh reserved
  1447.     AL = option byte
  1448.         bit 7-1: reserved (0)
  1449.         bit 0: 0 = need DMA channel for arbitration level requested
  1450.            1 = no channel required for arbitration level
  1451. Return: CF set on error
  1452.         AH = status (80h,86h = function not supported)
  1453.     CF clear on success
  1454.         AL = channel number
  1455.         00h-07h channel number allocated for the arbiration level
  1456.         08h-FEh reserved
  1457.         FFh    no channel requested for arbitration level
  1458.         AH = status (see #0360)
  1459. Notes:     arbitration level 00h has the highest priority, 0Eh the lowest
  1460.      to perform a DMA transfer operation, be sure to call this function
  1461.        first, and call AH=CFh afterward.  Failure to use this function
  1462.        can cause unpredictable results.
  1463. SeeAlso: AH=CFh
  1464.  
  1465. (Table 0360)
  1466. Values for DMA arbitration status:
  1467.  00h    success
  1468.  01h    arbitration level not available
  1469.  02h    channel not available
  1470.  03h    invalid arbitration level passed
  1471. --------B-15CF-------------------------------
  1472. INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
  1473.     AH = CFh
  1474.     BL = arbitration level to be deallocated (see AH=CEh)
  1475. Return: CF set on error
  1476.         AH = status (80h,86h = function not supported)
  1477.     CF clear on success
  1478.         AH = status
  1479.         00h success
  1480.         04h arbitration level not allocated
  1481. SeeAlso: AH=CEh
  1482. --------B-15D0-------------------------------
  1483. INT 15 - later PS/2s - RESERVED
  1484.     AH = D0h
  1485.     ???
  1486. Return: ???
  1487. --------B-15D100DX0000-----------------------
  1488. INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
  1489.     AX = D100h
  1490.     DX = 0000h (reserved, must set to 0)
  1491. Return: BL = size of one DDT entry, in bytes
  1492.     CX = number of DDT entries
  1493.     AH = return code (see #0361)
  1494.     CF set on error
  1495.     CF clear on success
  1496. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
  1497.  
  1498. (Table 0361)
  1499. Values for return code:
  1500.  00h    success
  1501.  01h    requested DDT entry not found
  1502.  02h    DDT data not valid
  1503.  86h    function not supported
  1504. --------B-15D101-----------------------------
  1505. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
  1506.     AX = D101h
  1507.     BX = number of requested entry (starting with 1)
  1508.     DX = 0000h (reserved, must be set to 0)
  1509.     ES:DI -> buffer to contain DDT entry (see #0362)
  1510. Return:    AH = return code (see #0361)
  1511.     CF set on error
  1512.     CF clear on success
  1513.         ES:DI buffer filled with DDT entry
  1514. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
  1515.  
  1516. Format of Device Descriptor Table (DDT):
  1517. Offset    Size    Description    (Table 0362)
  1518.  00h    BYTE    bits 7-4: reserved (set to 0)
  1519.         bits 3-0: slot of device (0 = system board)
  1520.  01h    BYTE    bits 7-4: second interrupt for this device (0 = none)
  1521.         bits 3-0: first interrupt for this device (0 = none)
  1522.  02h    BYTE    bits 7-4: second arbitration level for this device
  1523.         bits 3-0: first arbitration level for this device
  1524.  03h    WORD    DDT indicators (see #0363)
  1525.  05h    BYTE    reserved (0)
  1526.  06h    WORD    device ID (0 = none)
  1527.  08h    WORD    starting address of first  I/O block (0 = none)
  1528.  0Ah    WORD    starting address of second I/O block (0 = none)
  1529.  OCh    WORD    starting address of third  I/O block (0 = none)
  1530.  OEh    DWORD    start of first non-system memory block (0 = none)
  1531.  12h    WORD    size of first non-system memory block (in kilobytes)
  1532.  14h    DWORD    start of second non-system memory block (0 = none)
  1533.  18h    WORD    size of second non-system memory block (in kilobytes)
  1534.  1Ah    BYTE    implementation identifier of the device
  1535.  1Bh    BYTE    implementation revision level of the device
  1536. Note:    I/O block addresses and non-system memory addresses are listed in
  1537.       ascending order in each DDT entry.
  1538.  
  1539. Bitfields for DDT indicators:
  1540. Bit(s)    Description    (Table 0363)
  1541.  15    reserved (0)
  1542.  14    second arbitration level exists
  1543.  13    first arbitration level exists
  1544.  12    serial interface is RS-422
  1545.  11    not address limited
  1546.  10    DMA channel used
  1547.  9    second arbitration level can be shared
  1548.  8    first arbitration level can be shared
  1549.  7-0    reserved (0)
  1550. --------B-15D102-----------------------------
  1551. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
  1552.     AX = D102h
  1553.     BX = entry number at which to start searching
  1554.     CX = requested I/O port address
  1555.     DX = 0000h (reserved, must be set to 0)
  1556.     ES:DI -> buffer to contain DDT entry (see #0362)
  1557. Return:    AH = return code (see #0361)
  1558.     BX = DDT entry number where I/O port was found, or total entries
  1559.          plus 1 if port was not found.
  1560.     CF set on error
  1561.     CF clear on success
  1562.         ES:DI buffer filled with DDT entry
  1563. Desc:    the DDT is searched from the specified entry for the I/O port in CX,
  1564.       and the first entry in which it is found is returned
  1565. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
  1566. --------B-15D103DX0000-----------------------
  1567. INT 15 - later PS/2s - RETURN ENTIRE DDT
  1568.     AX = D103h
  1569.     DX = 0000h (reserved, must be set to 0)
  1570.     ES:DI -> buffer to contain DDT entry (see #0362)
  1571. Return:    AH = return code (see #0361)
  1572.     CF set on error
  1573.     CF clear on success
  1574.         ES:DI buffer filled with DDT entry
  1575. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
  1576. --------B-15D104-----------------------------
  1577. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
  1578.     AX = D104h
  1579.     BX = entry number at which to start searching
  1580.     CX = requested device ID
  1581.     DX = 0000h (reserved, must be set to 0)
  1582.     ES:DI -> buffer to contain DDT entry (see #0362)
  1583. Return:    AH = return code (see #0361)
  1584.     BX = DDT entry number where device ID was found, or total entries
  1585.           plus 1 if port was not found.
  1586.     CF set on error
  1587.     CF clear on success
  1588.         ES:DI buffer filled with DDT entry
  1589. Desc:    the DDT is searched from the specified entry for the device ID in CX,
  1590.       and the first entry in which it is found is returned.
  1591. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
  1592. --------B-15D2-------------------------------
  1593. INT 15 - later PS/2s - RESERVED
  1594.     AH = D2h
  1595.     ???
  1596. Return: ???
  1597. --------B-15D3-------------------------------
  1598. INT 15 - later PS/2s - RESERVED
  1599.     AH = D3h
  1600.     ???
  1601. Return: ???
  1602. --------B-15D4-------------------------------
  1603. INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
  1604.     AH = D4h
  1605.     DL = logical fixed disk drive number
  1606. Return:    AH = return code (see #0364)
  1607.     CF set on error
  1608.     CF clear on success
  1609.         AL = physical fixed disk drive number
  1610.  
  1611. (Table 0364)
  1612. Values for return code:
  1613.  00h    success
  1614.  01h    specified logical drive number is invalid
  1615.  80h    function not supported (on PCjr and PC)
  1616.  86h    function not supported
  1617. --------B-15D5-------------------------------
  1618. INT 15 - later PS/2s - RESERVED
  1619.     AH = D5h
  1620.     ???
  1621. Return: ???
  1622. --------B-15D600BL00-------------------------
  1623. INT 15 - later PS/2s - READ BOOT DEVICE ID
  1624.     AX = D600h
  1625.     BL = 00h
  1626.     DX = device ID
  1627. Return: CF clear if successful
  1628.         AH = 00h
  1629.     CF set on error
  1630.         AH = status (86h for function not supported)
  1631. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
  1632. --------B-15D600BL01-------------------------
  1633. INT 15 - later PS/2s - WRITE BOOT DEVICE ID
  1634.     AX = D600h
  1635.     BL = 01h
  1636.     DX = device ID
  1637. Return: CF clear on success
  1638.         AH = 00h
  1639.     CF set on error
  1640.         AH = status (86h for function not supported)
  1641. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
  1642. --------B-15D601BL00-------------------------
  1643. INT 15 - later PS/2s - READ BOOT DEVICE KEY
  1644.     AX = D601h
  1645.     BL = 00h
  1646.     DX = device ID
  1647. Return: CF clear on success
  1648.         AH = 00h
  1649.     CF set on error
  1650.         AH = status (86h for function not supported)
  1651. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
  1652. --------B-15D601BL01-------------------------
  1653. INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
  1654.     AX = D601h
  1655.     BL = 01h
  1656.     DX = device ID
  1657. Return: CF clear on success
  1658.         AH = 00h
  1659.     CF set on error
  1660.         AH = status (86h for function not supported)
  1661. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
  1662. --------B-15D602-----------------------------
  1663. INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
  1664.     AX = D602h
  1665. Return: CF clear on success
  1666.         AH = 00h
  1667.         AL = status of reference-partition boot request
  1668.         00h boot not requested
  1669.         01h boot requested
  1670.     CF set on error
  1671.         AH = status (86h for function not supported)
  1672. SeeAlso: AX=D601h/BL=00h
  1673. --------X-15D800-----------------------------
  1674. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  1675.     AX = D800h
  1676.     CL = slot number (including embedded and virtual)
  1677. Return: CF clear if successful
  1678.         AH = 00h
  1679.     CF set on error
  1680.         AH = error code (80h,82h,83h,86h,87h)(see #0366)
  1681.     AL = bit flags (see #0365)
  1682.     BH = major revision level of configuration utility
  1683.     BL = minor revision level of configuration utility
  1684.     CX = checksum of configuration file
  1685.     DH = number of device functions
  1686.     DL = combined function information byte
  1687.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  1688. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  1689. SeeAlso: AX=D801h,AX=D804h
  1690.  
  1691. Bitfields for EISA AL bit flags:
  1692. Bit(s)    Description    (Table 0365)
  1693.  7    set if duplicate IDs
  1694.  6    set if product ID readable
  1695.  4,5    slot type (00=expansion, 01=embedded, 10=virtual device)
  1696.  0-3    duplicate ID number if bit 7 set
  1697.  
  1698. (Table 0366)
  1699. Values for EISA error code:
  1700.  80h    invalid slot number
  1701.  81h    invalid function number
  1702.  82h    EISA CMOS corrupt
  1703.  83h    empty slot
  1704.  84h    error clearing CMOS
  1705.  85h    EISA CMOS is full
  1706.  86h    invalid BIOS-FW function call
  1707.  87h    invalid system configuration
  1708.  88h    config utility version not supported
  1709. --------X-15D801-----------------------------
  1710. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  1711.     AX = D801h
  1712.     CH = function number to read
  1713.     CL = slot number (including embedded and virtual)
  1714.     DS:SI -> 320-byte buffer for standard configuration data block
  1715. Return: CF clear if successful
  1716.         AH = 00h
  1717.         DS:SI buffer filled
  1718.     CF set on error
  1719.         AH = error code (80h-83h,86h,87h) (see #0366)
  1720.     BX destroyed
  1721. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  1722. --------X-15D802-----------------------------
  1723. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  1724.     AX = D802h
  1725.     BH = EISA config utility major revision level
  1726.     BL = EISA config utility minor revision level
  1727. Return: CF clear if successful
  1728.         AH = 00h
  1729.     CF set on error
  1730.         AH = error code (84h,86h,88h) (see #0366)
  1731. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  1732. SeeAlso: AX=D803h
  1733. --------X-15D803-----------------------------
  1734. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  1735.     AX = D803h
  1736.     CX = length of data structure (0000h = empty slot)
  1737.         includes two bytes for config file checksum
  1738.     DS:SI -> configuration data
  1739. Return: CF clear if successful
  1740.         AH = 00h
  1741.     CF set on error
  1742.         AH = error code (84h-86h) (see #0366)
  1743. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  1744. SeeAlso: AX=D802h
  1745. --------X-15D804-----------------------------
  1746. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  1747.     AX = D804h
  1748.     CL = slot number (including embedded and virtual)
  1749. Return: CF clear if successful
  1750.         AH = 00h
  1751.     CF set on error
  1752.         AH = error code (80h,83h,86h) (see #0366)
  1753.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  1754. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  1755. SeeAlso: AX=D800h
  1756. --------b-15D820-----------------------------
  1757. INT 15 - Compaq LTE Lite - GET ???
  1758.     AX = D820h
  1759.     DS:SI -> 17-byte buffer for ???
  1760. Return: DS:SI buffer filled (first byte is length of remaining data, unless
  1761.       it is greater than 10h, in which case the second byte is 00h and no
  1762.       other data is returned)
  1763. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  1764.       486/486c/486cx and recent DESKPRO/i ROMs
  1765. SeeAlso: AX=D821h
  1766. --------b-15D821-----------------------------
  1767. INT 15 - Compaq LTE Lite - SET ???
  1768.     AX = D821h
  1769.     DS:SI -> counted string (should not be more than 16 bytes)
  1770. Return: AH = 00h
  1771. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  1772.       486/486c/486cx and recent DESKPRO/i ROMs
  1773. SeeAlso: AX=D820h
  1774. --------b-15D822BL00-------------------------
  1775. INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
  1776.     AX = D822h
  1777.     BL = 00h
  1778.     CX = size of buffer or 0000h to retrieve required buffer size
  1779.     DS:SI -> buffer for ??? (if CX nonzero)
  1780. Return: CF clear if successful
  1781.         AH = 00h
  1782.         DH = 08h
  1783.         CX = required buffer size to retrieve all data (if CX=0 on entry)
  1784.         DS:SI buffer filled (if CX nonzero on entry)
  1785.     CF set on error (BL nonzero)
  1786.         AH = 86h
  1787. --------b-15D823-----------------------------
  1788. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  1789.     AX = D823h
  1790.     BL = subfunction??? (00h or 80h)
  1791.     BH = ???
  1792.     DS:SI -> buffer for ??? (see #0367)
  1793. Return: CF clear if successful
  1794.         AH = 00h
  1795.         DH = 08h
  1796.         DL = ???
  1797.     CF set on error
  1798.         AH = error code
  1799.         86h BL neither 00h nor 80h
  1800.         87h ???
  1801.  
  1802. Format of Compaq EISA buffer:
  1803. Offset    Size    Description    (Table 0367)
  1804.  00h    BYTE    ???
  1805.  01h    WORD    ???
  1806.  03h    BYTE    ???
  1807.  04h    WORD    ???
  1808.  06h    WORD    ???
  1809.     ???
  1810. ----------15D824-----------------------------
  1811. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  1812.     AX = D824h
  1813.     CX = ???
  1814.     DS:SI -> ASCIZ string containing ???
  1815. Return: CF clear if successful
  1816.         AH = 00h
  1817.         CX = ???
  1818.     CF set on error
  1819.         AH = error code
  1820.         87h ??? failed
  1821.         88h ???
  1822. Note:    these functions are only available if ??? from keyboard controller
  1823.       command C0h
  1824. ----------15D825-----------------------------
  1825. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  1826.     AX = D825h
  1827.     CX = ???
  1828.     SI = ???
  1829.     DI = ???
  1830.     ???
  1831. Return: CF clear if successful
  1832.         AH = 00h
  1833.         CX = ???
  1834.     CF set on error
  1835.         AH = error code
  1836.         87h ??? failed
  1837.         88h ???
  1838.             CX = ???
  1839. Note:    these functions are only available if ??? from keyboard controller
  1840.       command C0h
  1841. ----------15D826-----------------------------
  1842. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  1843.     AX = D826h
  1844.     BX = ???
  1845.     CX = size of buffer in bytes
  1846.     DS:SI -> buffer for ???
  1847.     ???
  1848. Return: CF clear if successful
  1849.         AH = 00h
  1850.         CX = ???
  1851.     CF set on error
  1852.         AH = error code
  1853.         87h ??? failed
  1854.         88h ???
  1855. Note:    these functions are only available if ??? from keyboard controller
  1856.       command C0h
  1857. --------X-15D8-------------------------------
  1858. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  1859.     AH = D8h
  1860.     AL = 80h to 84h
  1861.     other registers as appropriate for AL=00h to 04h
  1862. Return: as appropriate for AL=00h to 04h
  1863. Note:    these functions are identical to AX=D800h to D804h, except that they
  1864.       should be called when using 32-bit CS addressing mode (pointers use
  1865.       ESI rather than SI as offset) instead of 16-bit addressing mode
  1866. SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
  1867. --------b-15D8-------------------------------
  1868. INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
  1869.     AH = D8h
  1870.     AL = A0h to A6h
  1871.     other registers as appropriate for AL=20h to 26h
  1872. Return: as appropriate for AL=20h to 26h
  1873. Note:    these functions are identical to AX=D820h to D826h, except that they
  1874.       should be called when using 32-bit CS addressing mode
  1875. ----------15DA-------------------------------
  1876. INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
  1877.     AH = DAh
  1878.     AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h)
  1879.     ???
  1880. Return: ???
  1881. SeeAlso: AH=DBh
  1882. ----------15DA-------------------------------
  1883. INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
  1884.     AH = DBh
  1885.     AL = function (00h-04h)
  1886.     ???
  1887. Return: ???
  1888. SeeAlso: AH=DAh
  1889. --------Q-15DE00-----------------------------
  1890. INT 15 - DESQview - GET PROGRAM NAME
  1891.     AX = DE00h
  1892. Return: AX = offset into DESQVIEW.DVO of program most recently selected from
  1893.         the "Switch Windows" menu (see #0368)
  1894. Note:    always returns AX=0000h under DESQview/X
  1895. SeeAlso: AX=DE07h
  1896.  
  1897. Format of program entry in DESQVIEW.DVO:
  1898. Offset    Size    Description    (Table 0368)
  1899.  00h    BYTE    length of name (FFh if end of file)
  1900.  01h  N BYTEs    name
  1901.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  1902.     BYTE    program type
  1903.         00h normal program
  1904.         04h divider
  1905.         80h Delete a Program
  1906.         81h Change a Program
  1907.     WORD    ??? apparently always 0000h
  1908. --------Q-15DE01-----------------------------
  1909. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  1910.     AX = DE01h
  1911. Return: nothing
  1912. Notes:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  1913.     NOP for DESQview/X
  1914. --------Q-15DE02-----------------------------
  1915. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  1916.     AX = DE02h
  1917. Return: nothing
  1918. Note:    this call is a NOP in DV 2.x
  1919. SeeAlso: AX=DE03h
  1920. --------Q-15DE03-----------------------------
  1921. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  1922.     AX = DE03h
  1923. Return: AX = ??? for current window
  1924.     BX = ??? for current window
  1925. Note:    this call is a NOP in DV 2.x
  1926. SeeAlso: AX=DE02h
  1927. --------Q-15DE04-----------------------------
  1928. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  1929.     AX = DE04h
  1930. Return: BX = bytes of common memory available
  1931.     CX = largest block available
  1932.     DX = total common memory in bytes
  1933. SeeAlso: AX=DE05h,AX=DE06h
  1934. --------Q-15DE05-----------------------------
  1935. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  1936.     AX = DE05h
  1937. Return: BX = KB of memory available
  1938.     CX = largest block available
  1939.     DX = total conventional memory in KB
  1940. SeeAlso: AX=DE04h,AX=DE06h
  1941. --------Q-15DE06-----------------------------
  1942. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  1943.     AX = DE06h
  1944. Return: BX = KB of expanded memory available
  1945.     CX = largest block available
  1946.     DX = total expanded memory in KB
  1947. SeeAlso: AX=DE04h,AX=DE05h
  1948. --------Q-15DE07-----------------------------
  1949. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  1950.     AX = DE07h
  1951. Return: AX = number of program as it appears on the "Switch Windows" menu
  1952. Note:    this API call may be made from a hardware interrupt handler
  1953. SeeAlso: AX=DE00h
  1954. --------Q-15DE08-----------------------------
  1955. INT 15 - DESQview - GET ???
  1956.     AX = DE08h
  1957. Return: AX = 0000h if ??? is not set to the current task
  1958.          0001h if ??? is set to the current task
  1959. --------Q-15DE09-----------------------------
  1960. INT 15 - DESQview - UNIMPLEMENTED
  1961.     AX = DE09h
  1962. Return: nothing (NOP in DV 1.x and 2.x)
  1963. --------Q-15DE0A-----------------------------
  1964. INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  1965.     AX = DE0Ah
  1966.     BL = character
  1967. Return: character displayed, next call will display in next position (which
  1968.     wraps back to the start of the line if off the right edge of screen)
  1969. Notes:    displays character on bottom line of *physical* screen, regardless
  1970.       of current size of window (even entirely hidden)
  1971.     does not know about graphics display modes, just pokes the characters
  1972.       into display memory
  1973.     this API call may be made from a hardware interrupt handler
  1974. SeeAlso: AX=1003h
  1975. --------Q-15DE0B-----------------------------
  1976. INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  1977.     AX = DE0Bh
  1978.     BL = API level minor version number
  1979.     BH = API level major version number
  1980. Return: AX = maximum API level (AH = major, AL = minor)
  1981. Notes:    if the requested API level is greater than the version of DESQview, a
  1982.       "You need a newer version" error window is popped up
  1983.     the API level defaults to 1.00, and is inherited by child tasks
  1984. --------Q-15DE0C-----------------------------
  1985. INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  1986.     AX = DE0Ch
  1987.     BX = number of bytes
  1988. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  1989. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  1990.       system memory
  1991. SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
  1992. --------Q-15DE0D-----------------------------
  1993. INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  1994.     AX = DE0Dh
  1995.     ES:DI -> previously allocated block
  1996. Return: nothing
  1997. SeeAlso: AX=1002h,AX=DE0Ch
  1998. --------Q-15DE0E-----------------------------
  1999. INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
  2000.     AX = DE0Eh
  2001.     ES:DI -> name to find (see #0369)
  2002.     CX = length of name
  2003. Return: BX = 0000h not found
  2004.          0001h found
  2005.         DS:SI = object handle
  2006. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1200h"GETNAME"
  2007.  
  2008. (Table 0369)
  2009. Values for special DESQview mailbox names:
  2010.  "COM1" ... "COM4"    RBcomm using COM1 ... COM4
  2011.  "DESQview/X Help Engine"
  2012.  "DESQview/X Network Server"  Network Manager
  2013.  "DESQview X Server0"    X-Windows server
  2014.  "DESQview X Server7"    X-Windows printing service
  2015.  "INBOX"        DESQview/X LPD requests
  2016.  "OUTBOX"        DESQview/X LPD responses
  2017.  "WAITBOX"        semaphore to synchronize DESQview/X LPD communications
  2018.  "_DVNM_"        DV/X v1.10 network manager
  2019. --------Q-15DE0F-----------------------------
  2020. INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
  2021.     AX = DE0Fh
  2022. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  2023. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  2024.     enables an additional mouse mode
  2025. --------Q-15DE10-----------------------------
  2026. INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  2027.     AX = DE10h
  2028.     BH = scan code
  2029.     BL = character
  2030. Return: nothing
  2031. Notes:    a later read will get the keystroke as if it had been typed by the user
  2032.     multiple pushes are read last-in first-out
  2033.     if a script exists for the pushed key in the current application, the
  2034.       script will be executed
  2035.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  2036. SeeAlso: INT 16/AH=05h
  2037. --------Q-15DE11BL00-------------------------
  2038. INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
  2039.     AX = DE11h
  2040.     BL = 00h      viewport will not move automatically
  2041.          nonzero  viewport will move to keep cursor visible (default)
  2042. Return: nothing
  2043. --------Q-15DE12BX0000-----------------------
  2044. INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  2045.     AX = DE12h
  2046.     BX = 0000h    select normal style (linefeed only moves down)
  2047.          nonzero  select C style (linefeed moves to start of next line)
  2048. Return: nothing
  2049. Note:    set on a per-task basis, and inherited from the parent task
  2050. --------Q-15DE13-----------------------------
  2051. INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
  2052.     AX = DE13h
  2053. Return: BX = number of calls to BEGINC or ENTERC
  2054.           (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
  2055.           (see INT 15/AX=101Ch)
  2056. Note:    this API call may be made from within a hardware interrupt handler
  2057. SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
  2058. --------Q-15DE14-----------------------------
  2059. INT 15 - DESQview v2.20+ - GET OBJECT TYPE
  2060.     AX = DE14h
  2061.     ES:DI -> object
  2062. Return: BL = 00h not an object
  2063.          08h window or task
  2064.          09h mailbox
  2065.          0Ah keyboard
  2066.          0Bh timer
  2067.          0Ch objectq
  2068.          0Fh pointer
  2069.          10h panel
  2070. SeeAlso: AX=1016h
  2071. --------Q-15DE15-----------------------------
  2072. INT 15 - DESQview v2.20+ - SET ERROR HANDLING
  2073.     AX = DE15h
  2074.     BL = error handling mode
  2075.         00h post system error on all error conditions
  2076.         01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  2077.         messages sent to mailboxes which fail due to lack of system
  2078.         or common memory
  2079.         02h (v2.26+) same as 01h, but also return null pointer for GETMEM
  2080.         calls which fail due to lack of system memory
  2081. Return: nothing
  2082. SeeAlso: AX=DE0Ch,AX=DE16h
  2083. --------Q-15DE16-----------------------------
  2084. INT 15 - DESQview v2.20+ - GET ERROR HANDLING
  2085.     AX = DE16h
  2086. Return: BL = current mode
  2087.         00h always post system error
  2088.         01h return carry flag set on failed mailbox writes
  2089.         02h return CF set on failed mailbox writes and NULL on failed
  2090.         GETMEM calls
  2091. SeeAlso: AX=DE15h
  2092. --------Q-15DE17-----------------------------
  2093. INT 15 - DESQview v2.20-2.25 - reserved
  2094.     AX = DE17h
  2095. Return: pops up "Programming error" window
  2096. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  2097. SeeAlso: AX=1117h
  2098. --------Q-15DE17-----------------------------
  2099. INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  2100.     AX = DE17h
  2101.     BX = function
  2102.         0000h   get current mapping context without setting
  2103.         nonzero set new mapping context to BX
  2104. Return: BX = mapping context in effect before call
  2105. Notes:    mapping contexts determine conventional-memory addressability; setting
  2106.       a mapping context ensures that the associated program and data areas
  2107.       are in memory for access.  Usable by drivers, TSRs and shared
  2108.       programs.
  2109.     caller need not be running under DESQview
  2110.     this API call may be made from a hardware interrupt handler
  2111. SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
  2112. --------Q-15DE18-----------------------------
  2113. INT 15 - DESQview v2.20+ - internal - ???
  2114.     AX = DE18h
  2115.     BP = function number
  2116.         high byte must be 10h
  2117.         low byte is function
  2118.         00h set ???
  2119.             BL = ???  (00h-10h, video mode???)
  2120.             BH = value to store
  2121.         03h set ???
  2122.             BL = ??? (stored in driver)
  2123.         0Ah get ???
  2124.             ES:DI -> 18-byte buffer to hold ???
  2125. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  2126. --------Q-15DE19-----------------------------
  2127. INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  2128.     AX = DE19h
  2129.     BX = number of bytes to allocate
  2130. Return: AX = 0000h successful
  2131.         ES:DI -> allocated block
  2132.          nonzero insufficient memory
  2133. Note:    this API call may be made from within a hardware interrupt handler
  2134. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  2135. --------Q-15DE1A-----------------------------
  2136. INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  2137.     AX = DE1Ah
  2138.     ES:DI -> previously allocated block
  2139. Return:    AX = 0000h (successful)
  2140. Note:    this function may be called from within a hardware interrupt handler
  2141. SeeAlso: AX=DE0Dh,AX=DE19h
  2142. --------Q-15DE1B-----------------------------
  2143. INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  2144.     AX = DE1Bh
  2145. Return: nothing
  2146. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  2147. --------Q-15DE1C-----------------------------
  2148. INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  2149.     AX = DE1Ch
  2150. Return: nothing
  2151. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  2152.       that DOS is free
  2153.     the official documentation states that this call should be paired with
  2154.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  2155.     this API call may be made from within a hardware interrupt handler
  2156. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  2157. --------Q-15DE1D-----------------------------
  2158. INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  2159.     AX = DE1Dh
  2160.     DX = segment of handle for task to receive keystroke
  2161.     BL = character
  2162.     BH = scan code
  2163. Return: AX = 0000h if successful
  2164.        nonzero if receiver's keyboard buffer was full
  2165. Notes:    the key is treated as though the user had pressed it, ignoring any
  2166.       script which may be bound to the key, and using the current field
  2167.       table if the keyboard object is in field processing mode
  2168.     multiple PUTKEYs are seen in the order in which they are executed
  2169. SeeAlso: AX=DE10h
  2170. --------Q-15DE1E-----------------------------
  2171. INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  2172.     AX = DE1Eh
  2173. Return: CL = actual number of rows on screen
  2174.     CH = actual number of columns on screen
  2175.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  2176. Note:    this API call may be made from a hardware interrupt handler
  2177. SeeAlso: INT 10/AH=0Fh
  2178. --------Q-15DE1F-----------------------------
  2179. INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  2180.     AX = DE1Fh
  2181. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  2182. Note:    this API call may be made from within a hardware interrupt handler
  2183. SeeAlso: AX=DE13h,INT 21/AH=34h
  2184. --------Q-15DE20-----------------------------
  2185. INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  2186.     AX = DE20h
  2187.     BX = segment of handle of task to interupt
  2188.     DX:CX -> FAR interrupt routine
  2189.     BP,SI,DI,DS,ES as required by interrupt routine
  2190. Return: nothing
  2191. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  2192.       making the DISPATCHINT call
  2193.     multiple "DISPATCHINT" calls are processed in the order in which they
  2194.       were executed
  2195.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  2196.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  2197.       needs to be preserved
  2198.     this API call may be made from within a hardware interrupt handler
  2199. SeeAlso: AX=1021h,AX=DE2Ah
  2200. --------Q-15DE21-----------------------------
  2201. INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  2202.     AX = DE21h
  2203.     BX = new state
  2204.         0000h turn off
  2205.         nonzero turn on
  2206. Return: BX = old state of virtualization
  2207. Notes:    this API call may be made from within a hardware interrupt handler
  2208.     under DV 2.40 and 2.42, this call appears to have no effect and always
  2209.       returns a nonzero value in BX which appears to be the offset within
  2210.       the DV common memory segment of the caller's task object; it may
  2211.       only have an effect within a hardware interrupt handler
  2212. SeeAlso: AX=1117h,AX=DE17h
  2213. --------Q-15DE22-----------------------------
  2214. INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  2215.     AX = DE22h
  2216.     DX = segment of task handle
  2217. Return: DX = total amount of memory in paragraphs
  2218.     BX = amount of system memory in paragraphs
  2219.     CX = largest block of system memory available in paragraphs
  2220.     AX = memory flags (see #0370)
  2221. Notes:    if the task handle is a child task, the returned values will be for the
  2222.       process containing the task, rather than the task itself
  2223.     if the process's system memory is swapped out, BX,CX,DX remain
  2224.       unchanged, because the memory usage cannot be determined
  2225. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  2226.  
  2227. Bitfields for DESQview process memory flags:
  2228. Bit(s)    Description    (Table 0370)
  2229.  0    system memory resides in shared memory
  2230.  1    process's memory is swapped out
  2231.  2    process's system memory is swapped out
  2232. --------Q-15DE23-----------------------------
  2233. INT 15 U - DESQview v2.31+ - ???
  2234.     AX = DE23h
  2235.     BX = ??? IRQ number on first PIC?
  2236.     CX = ??? IRQ number on second PIC?
  2237. Return: ???
  2238. Note:    called by QEMM 6.00+
  2239. --------Q-15DE24-----------------------------
  2240. INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
  2241.     AX = DE24h
  2242.     BX = length of .DVP data
  2243.     CX = length of ??? string
  2244.     DS:SI -> ??? string
  2245.     ES:DI -> .DVP data (see #0285 at AX=102Ch)
  2246. Return: BX = segment of task handle??? or 0000h on error
  2247. Note:    this call is similar to AX=102Ch except that it can interpret the
  2248.       extended DVP data
  2249. SeeAlso: AX=102Ch
  2250. --------Q-15DE25-----------------------------
  2251. INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
  2252.     AX = DE25h
  2253.     ES:DI -> 67-byte buffer for ASCIZ directory name
  2254. Return: ES:DI buffer filled with directory from which DESQview was started
  2255. BUG:    DV 2.42 does not place a terminating NUL at the end of the directory
  2256.       name, so if the buffer is not cleared to zeros before the call,
  2257.       there is no way to tell where the directory name ends.  This bug
  2258.       has been fixed in DV 2.52 (DV/X 1.02)
  2259. SeeAlso: AX=DE2Eh,INT 21/AH=47h
  2260. --------Q-15DE26-----------------------------
  2261. INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
  2262.     AX = DE26h
  2263. Return: BX = segment of handle for task with keyboard focus
  2264. Note:    under DESQview/X, the X server always has the keyboard focus unless a
  2265.       "direct" window is active
  2266. SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
  2267. --------Q-15DE27-----------------------------
  2268. INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
  2269.     AX = DE27h
  2270.     BX = type
  2271.         0000h process
  2272.         0001h task
  2273.     ES:DI -> list of Instance Item Structures (see #0371)
  2274. Return: CF clear if successful
  2275.         AX = ???
  2276.         BX = ???
  2277.     CF set on error
  2278.         AX = error code???
  2279.         0004h invalid BX value
  2280. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2281. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
  2282.  
  2283. Format of DESQview Instance Item Structure [one element of list]:
  2284. Offset    Size    Description    (Table 0371)
  2285.  00h    WORD    length of data area DESQview should save and restore on context
  2286.           switches (0000h = end of list)
  2287.  02h    DWORD    pointer to area to be saved/restored
  2288. --------Q-15DE28-----------------------------
  2289. INT 15 U - DESQview v2.50+ - ???
  2290.     AX = DE28h
  2291.     BX = segment of ??? or 0000h for default
  2292.     ???
  2293. Return: ???
  2294. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2295. SeeAlso: AX=DE2Ah
  2296. --------Q-15DE29BX0000-----------------------
  2297. INT 15 U - DESQview/X - ???
  2298.     AX = DE29h
  2299.     BX = 0000h
  2300.     ???
  2301. Return: CF clear if successful
  2302.         ???
  2303.     CF set on error
  2304. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2305.     under DESQview 2.60, this function and all other subfunctions of
  2306.       AX=DE29h always return CF set, as they are unique to DESQview/X
  2307. --------Q-15DE29BX0001-----------------------
  2308. INT 15 U - DESQview/X - ???
  2309.     AX = DE29h
  2310.     BX = 0001h
  2311.     DX = segment of window handle
  2312. Return: CF clear if successful
  2313.         AX = ???
  2314.         DX = ???
  2315.     CF set on error
  2316. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2317. --------Q-15DE29BX0002-----------------------
  2318. INT 15 U - DESQview/X - ???
  2319.     AX = DE29h
  2320.     BX = 0002h
  2321.     DX = segment of window handle
  2322. Return: CF clear if successful
  2323.         AX = ???
  2324.         DX = ???
  2325.     CF set on error
  2326. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2327. --------Q-15DE29BX0003-----------------------
  2328. INT 15 U - DESQview/X - ???
  2329.     AX = DE29h
  2330.     BX = 0003h
  2331.     DX = segment of window handle
  2332. Return: CF clear if successful
  2333.         ???
  2334.     CF set on error
  2335. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2336. --------Q-15DE29BX0004-----------------------
  2337. INT 15 U - DESQview/X - GET DISPLAY NAME
  2338.     AX = DE29h
  2339.     BX = 0004h
  2340.     CX = size of buffer in bytes
  2341.     DX = segment of window handle
  2342.     ES:DI -> buffer for display name
  2343. Return: CF clear if successful
  2344.         buffer filled with ASCIZ display name (truncated if necessary) or
  2345.           null string if no display
  2346.     CF set on error
  2347. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2348.     the name ":0" refers to the local display
  2349. --------Q-15DE29BX0005-----------------------
  2350. INT 15 U - DESQview/X - ???
  2351.     AX = DE29h
  2352.     BX = 0005h
  2353.     ???
  2354. Return: CF clear if successful
  2355.         ???
  2356.     CF set on error
  2357. Note:    under DESQview 2.60, this function and all other subfunctions of
  2358.       AX=DE29h always return CF set, as they are unique to DESQview/X
  2359. --------Q-15DE2A-----------------------------
  2360. INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
  2361.     AX = DE2Ah
  2362.     BX = segment of handle for task to interrupt or 0000h for caller
  2363.     DX:CX -> interrupt routine
  2364.     BP,SI,DI,DS,ES as required by interrupt routine
  2365. Return: nothing
  2366. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2367.     this call is the same as AX=DE20h except that it will delay
  2368.       interrupting the specified task until after it has exited DOS
  2369. SeeAlso: AX=1021h,AX=DE20h
  2370. --------Q-15DE2B-----------------------------
  2371. INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
  2372.     AX = DE2Bh
  2373.     ES:DI -> starting object
  2374.         0000h:0000h for first object in list???
  2375. Return: AX = status
  2376.         0000h successful
  2377.         ES:DI -> next object of same type (window/non-window)
  2378.         0001h failed (ES:DI was not a valid handle)
  2379. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2380.     there are two separate lists, one for window/task objects and one
  2381.       for all other objects
  2382. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
  2383. --------Q-15DE2C-----------------------------
  2384. INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
  2385.     AX = DE2Ch
  2386.     DX = window information format version (0100h for DESQview 2.5x)
  2387.     BX = segment of window handle or 0000h for default
  2388.     ES:DI -> buffer for window information (see #0372)
  2389. Return: AX = status
  2390.         0000h successful
  2391. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2392. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
  2393.  
  2394. Format of DESQview window information:
  2395. Offset    Size    Description    (Table 0372)
  2396.  00h    BYTE    task flag: 00h window, 01h task
  2397.  01h    BYTE    process number if owner task
  2398.         00h if non-owner task
  2399.  02h    WORD    segment of owner's handle, 0000h if orphaned
  2400.  04h    WORD    mapping context (see #0274 at AX=1016h)
  2401.  06h    BYTE    task status (see #0373)
  2402.  07h    BYTE    unused
  2403.  08h    WORD    status bits (see #0374)
  2404.  0Ah    BYTE    01h if foreground-only window
  2405.  
  2406. (Table 0373)
  2407. Values for DESQview task status:
  2408.  00h    "Waiting" waiting for input
  2409.  01h    "Idle" keyboard poll limit reached
  2410.  03h    same as 01h
  2411.  04h    "Pausing" INT 15/AX=1000h pause called
  2412.  04h    DV/X direct: user did something to allow task switch
  2413.  05h    "ModeChg" video mode about to be changed
  2414.  06h    "ModeNtf" notify that video mode changed
  2415.  07h    "MoniCh" requested change to other monitor
  2416.  08h    "StartPgm" control relinquished to start new process
  2417.  09h    "MgrCan" made window manager CANCEL command
  2418.  0Ah    "Slicing" time slice expired
  2419.  0Bh    "Exit DOS" notify on DOS calls
  2420.  0Ch    "Enter DOS" process is re-entering DOS
  2421.  0Dh    "Terminate" INT 21/AH=4Ch or task freed
  2422.  0Eh    "BrkNxt" Control-Break pressed
  2423.  0Fh    "MgrCol" keyboard focus taken away
  2424.  10h    "PgmInt" interrupted by API call from another task
  2425.  11h    "BldOpen" call to INT 15/AX=DE01h
  2426.  
  2427. Bitfields for DESQview task status bits:
  2428. Bit(s)    Description    (Table 0374)
  2429.  6    task is freeing another task
  2430.  5    process is being created
  2431.  4    user suspended process
  2432.  3    process suspended itself
  2433.  2    process is resized direct window (suspended)
  2434.  1    process swapped out
  2435.  0    DESQview process
  2436. --------Q-15DE2D-----------------------------
  2437. INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
  2438.     AX = DE2Dh
  2439.     CX = direction
  2440.         FFFFh set socket handler
  2441.         DX:BX -> FAR function for socket interface
  2442.             must be of the format described under INT 63"DESQview"
  2443.         other get socket handler
  2444.         Return: DX:BX -> socket handler
  2445. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2446.     the "set" subfunction is normally called only by SOCKET.DVR
  2447. SeeAlso: AX=DE2Eh,INT 63"DESQview"
  2448. --------Q-15DE2E-----------------------------
  2449. INT 15 U - DESQview v2.50+ - SOCKET API
  2450.     AX = DE2Eh
  2451.     DX:BX -> socket record (see #0376)
  2452.         0000h:0000h to create a new socket record
  2453. Return: CX = size of socket record in bytes
  2454.     DX:BX -> socket record which was used
  2455. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  2456.     socket records are allocated from common memory
  2457.     for Unix compatibility, each socket and connection on a socket is
  2458.       allocated a DOS file handle (referencing an SFT for NUL) which is
  2459.       used on various calls to specify which of possibly multiple
  2460.       connections is to be operated upon
  2461. SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
  2462.  
  2463. (Table 0375)
  2464. Values for DESQview/X socket API function number:
  2465.  0000h    initialize socket???
  2466.  0001h    "gethostname"
  2467.  0002h    "ioctl" check for input
  2468.  0003h    "sleep" delay for specified period
  2469.  0004h    "htons" convert word to network (big-endian) byte order
  2470.  0005h    "select"
  2471.  0006h    "bsd_close"/"so_close" close socket
  2472.  0007h    NOP
  2473.  0008h    "connect" initiate connection on socket
  2474.  0009h    "recv"/"recvfrom" read from socket
  2475.  000Ah    "socket"
  2476.  000Bh    ???
  2477.  000Ch    "gethostbyname"
  2478.  000Dh    "send"/"sendto" write to socket
  2479.  000Eh    ??? (does something to all connections for process)
  2480.  000Fh    "getpid" get process identifier
  2481.  0010h    "gettimeofday"
  2482.  0011h    "bind" assign name to socket
  2483.  0012h    "listen" listen for connections on socket
  2484.  0013h    "accept" accept connection on socket
  2485.  0014h    connect to X server
  2486.  0015h    "gethostbyaddr" get host information for an address
  2487.  0016h    "getprotobyname"
  2488.  0017h    "getprotobynumber"
  2489.  0018h    "getservbyname"
  2490.  0019h    "getservbyport"
  2491.  001Ah    "getsockname" determine name bound to socket
  2492.  001Bh    "getpeername" get name of connected peer
  2493.  001Ch    "getsockopt"/"setsockopt"
  2494.  001Dh    "so_exit"     close all sockets for calling process
  2495.  001Eh    "issock" determine whether file handle references socket
  2496.  001Fh    "so_attach" reattach previously detached socket
  2497.  0020h    "so_detach" temporarily detach socket
  2498.  0021h    get DESQview directory
  2499.  0022h    "NewProc" start new application (see AX=102Ch)
  2500.  0023h    "so_linkup"
  2501.  0024h    canonicalize filename
  2502.  0025h    indirect INT 15h call
  2503.  0026h    Network Manager interface
  2504.  0027h    "so_unlink"    close connection from "so_linkup"
  2505.  0028h    "raisepriority"
  2506.  0029h    "lowerpriority"
  2507.  002Ah    ???
  2508.  FFFFh    "NetExit" (appears to be a NOP)
  2509.  
  2510. Format of DESQview/X socket record:
  2511. Offset    Size    Description    (Table 0376)
  2512.  00h    WORD    signature F0ADh
  2513.  02h    WORD    function number (see #0375)
  2514.  04h    WORD    returned error code (see #0393)
  2515.  06h    WORD    maximum message size??? (usually 0400h)
  2516.  08h    WORD    PSP segment to use or 0000h if socket not valid
  2517.  0Ah    WORD    scratch space (JFT size)
  2518.  0Ch    DWORD    scratch space (JFT address)
  2519.  10h    DWORD    mailbox handle (initialized by function 0000h)
  2520.  14h    DWORD    timer object handle (initialized by function 0000h)
  2521. ---function 0000h---
  2522.  18h    WORD    (return) ???
  2523. ---function 0001h---
  2524.  18h    WORD    (return) status???
  2525.  1Ah 128 BYTEs    (return) ASCIZ hostname (empty string if not on network)
  2526.  9Ah    WORD    maximum length of hostname to return
  2527. ---function 0002h---
  2528.  18h    WORD    (return) status
  2529.  1Ah    WORD    socket's file handle
  2530.  1Ch    WORD    IOCTL function
  2531.         05h "FIONREAD" determine available input
  2532.         06h "FIONBIO" set blocking state of socket
  2533.  1Eh    WORD    (return, subfn 05h) number of bytes available for reading
  2534.         (call, subfn 06h) 0000h blocking, nonzero nonblocking
  2535. ---function 0003h---
  2536.  18h  2 BYTEs    unused
  2537.  1Ah    WORD    delay time in seconds
  2538. ---function 0004h---
  2539.  18h    WORD    (return) result in network (big-endian) byte order
  2540.  1Ah    WORD    value to convert to network byte order
  2541. ---function 0005h---
  2542.  18h    WORD    (return) number of handles meeting the specified conditions???
  2543.  1Ah    WORD    number of file handles in each bitset???
  2544.  1Ch    DWORD    bitset of socket handles to check for readability???
  2545.  20h    DWORD    bitset of socket handles to check for writability???
  2546.  24h    DWORD    bitset of socket handles to check for errors???
  2547.  28h    WORD    timeout in ??? or 0000h to block until some socket ready
  2548.  2Ah    DWORD    ???
  2549.  2Eh    DWORD    ???
  2550. ---function 0006h---
  2551.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2552.  1Ah    WORD    socket's file handle
  2553. ---function 0008h---
  2554.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2555.  1Ah    WORD    socket's file handle
  2556.  1Ch    WORD    0001h if socket name specified, 0000h if not
  2557.  1Eh    WORD    length of socket name
  2558.  20h  N BYTEs    name of socket to which to connect
  2559. ---function 0009h---
  2560.  18h    WORD    (return) number of bytes actually read, 0000h if connection
  2561.             closed, or FFFFh on error
  2562.  1Ah    WORD    socket's file handle
  2563.  1Ch    WORD    number of bytes to read
  2564.  1Eh    WORD    flags
  2565.  20h    WORD    0000h if no source address desired
  2566.         0001h if source address is to be stored (datagram sockets)
  2567.  22h    WORD    length of source address
  2568.  24h 110 BYTEs    source address
  2569.  92h 1K BYTEs    buffer for data to be read
  2570. ---function 000Ah---
  2571.  18h    WORD    (return) socket's file handle or FFFFh on error
  2572.  1Ah    WORD    address family (0001h,0002h)
  2573.  1Ch    WORD    socket type
  2574.  1Eh    WORD    protocol
  2575. ---function 000Bh---
  2576.  18h    WORD    (return) 0001h if ??? or FFFFh on error
  2577.  1Ah    WORD    socket's file handle
  2578.  1Eh    WORD    (call) ???
  2579. ---function 000Ch---
  2580.  18h 128 BYTEs    buffer containing ASCIZ hostname
  2581.         special case if empty string or "unix"
  2582.  98h    ???    'struct hostent' ???
  2583.  A2h    ???    (return) ???
  2584. ---function 000Dh---
  2585.  18h    WORD    (return) number of bytes actually written or FFFFh on error
  2586.  1Ah    WORD    socket's file handle
  2587.  1Ch    WORD    number of bytes to write
  2588.  1Eh    WORD    number of bytes to follow in subsequent writes???
  2589.  20h    WORD    flags
  2590.  22h    WORD    0000h if no destination specified, 0001h if destination present
  2591.  24h    WORD    ???
  2592.  26h    WORD    length of destination address
  2593.  28h 110 BYTEs    destination address
  2594.  96h 1K BYTEs    buffer containing data to be written
  2595. ---function 000Eh---
  2596.  no additional fields
  2597. ---function 000Fh---
  2598.  18h    DWORD    (return) DESQview task handle of calling process
  2599. ---function 0010h---
  2600.  18h    DWORD    (return) current time
  2601.  1Ch    DWORD    (return) ???
  2602. ---function 0011h---
  2603.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2604.  1Ah    WORD    socket's file handle
  2605.  1Ch    WORD    length of name
  2606.  1Eh  N BYTEs    buffer for socket name
  2607. ---function 0012h---
  2608.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2609.  1Ah    WORD    socket's file handle
  2610.  1Ch    WORD    maximum backlog of pending connections allowed on socket
  2611. ---function 0013h---
  2612.  18h    WORD    (return) file handle for new connection or FFFFh on error
  2613.  1Ah    WORD    listen()ing socket's file handle
  2614.  1Ch    WORD    (call) length of buffer for connecting entity's address
  2615.         (return) actual length of address
  2616.  1Eh  N BYTEs    buffer for connecting entity's address
  2617. ---function 0014h---
  2618.  18h    WORD    (return) socket's file handle or FFFFh on error
  2619.  1Ah  4 BYTEs    (return) ???
  2620.  1Eh    WORD    (return) ???
  2621.  20h    WORD    (return) ???
  2622.  22h 256 BYTEs    ASCIZ X display name
  2623. 122h    ???
  2624. ---function 0015h---
  2625.  18h    WORD    (call) type of address??? (test for 0001h seen)
  2626.  1Ah    WORD    (call) length of buffer for host address
  2627.  1Ch 110 BYTEs    buffer containing host address
  2628.  8Ah    WORD    (return) offset of official host name???
  2629.  8Ch    WORD    (return) offset of alias list???
  2630.  8Eh    WORD    (return) address type???
  2631.  90h    WORD    (return) length of an address in bytes???
  2632.  92h    WORD    (return) offset of address???
  2633.  9Ah  N BYTEs    (return) ??? buffer for hostname, alias list, and host address
  2634. ---function 0016h---
  2635.  18h    ???    buffer for protocol name???
  2636.  98h    ???
  2637. ---function 0017h---
  2638.  18h    WORD    (call) protocol number???
  2639.  1Ah    WORD    (return) ??? or 0001h
  2640. ---function 0018h---
  2641.  18h 128 BYTEs    buffer containing ???
  2642.  98h 128 BYTEs    buffer containing ???
  2643. 118h    WORD    (return) ???
  2644. ---function 0019h---
  2645.  18h    WORD    length of name???
  2646.  1Ah 128 BYTEs    buffer for name???
  2647.  9Ah    WORD    (return) ???
  2648. ---function 001Ah---
  2649.  18h    WORD    (return) 0000h if successful, FFFFh on error
  2650.  1Ah    WORD    socket's file handle
  2651.  1Ch    WORD    (call) length of buffer for socket name
  2652.         (return) actual length of socket name
  2653.  1Eh  N BYTEs    buffer for socket name
  2654. ---function 001Bh---
  2655.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2656.  1Ah    WORD    socket's file handle
  2657.  1Ch    WORD    (call) size of buffer for name
  2658.         (return) actual size of name
  2659.  1Eh  N BYTEs    buffer for peer's name
  2660. ---function 001Ch---
  2661.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2662.  1Ah    WORD    direction: 0000h to get, 0001h to set
  2663.  1Ch    WORD    socket's file handle
  2664.  1Eh    WORD    option level
  2665.  20h    WORD    option name
  2666.  22h    WORD    (call) length of buffer for option value
  2667.         (return) actual length of option value
  2668.  24h  N BYTEs    buffer for option value
  2669. ---function 001Dh---
  2670.  no additional fields
  2671. ---function 001Eh---
  2672.  18h    WORD    (return) status: 0000h ??? or 0001h ???
  2673.  1Ah    WORD    file handle which may or may not be a socket
  2674. ---function 001Fh---
  2675.  18h    WORD    (return) file handle or FFFFh on error
  2676.  1Ah    DWORD    (call) pointer to Socket Context Record (see #0394) of a
  2677.             previously detached socket
  2678. ---function 0020h---
  2679.  18h    WORD    (return) status: 0000h if successful or FFFFh on error
  2680.  1Ah    WORD    socket's file handle
  2681.  1Ch    DWORD    (return) pointer to Socket Context Record (see #0394) for
  2682.             the file handle
  2683. ---function 0021h---
  2684.  18h 64 BYTEs    buffer for DESQview startup directory (see AX=DE25h)
  2685. ---function 0022h---
  2686.  18h    DWORD    (return) task handle of new application
  2687.  1Ch    WORD    size of .DVP data
  2688.  1Eh 129 BYTEs    ASCIZ ???
  2689.  9Fh  N BYTEs    .DVP data (see #0285 at AX=102Ch)
  2690. ---function 0023h---
  2691.  18h    WORD    (return) ??? or FFFFh on error
  2692.  1Ah    WORD    socket's file handle???
  2693. ---function 0024h---
  2694.  18h    WORD    (return) DOS error code (see #0789 at INT 21/AH=59h)
  2695.             0000h if successful
  2696.  1Ah 129 BYTEs    ASCIZ filename/pathname
  2697. 11Bh 129 BYTEs    ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
  2698. ---function 0025h---
  2699.  18h    WORD    value of AX
  2700.  1Ah    WORD    value of BX
  2701.  1Ch    WORD    (call) value of CX for call if AH value other than 12h
  2702.         (call) number of stack parameters if AH value is 12h
  2703.         (return) returned CX for calls other than INT 15/AH=12h
  2704.  1Eh    WORD    value of DX
  2705.  20h    WORD    value of DI
  2706.  22h    WORD    value of SI
  2707.  24h    WORD    value of DS
  2708.  26h    WORD    value of ES
  2709.  28h    WORD    (return) value of FLAGS after call
  2710.  2Ah  N DWORDs    (call) stack parameters for INT 15/AH=12h call
  2711.         (return) stack results from INT 15/AH=12h call
  2712. ---function 0026h---
  2713.  18h    WORD    (call) Network Manager subfunction (see #0377)
  2714.         (return) status???
  2715.  1Ah    WORD    (call) size of parameter data
  2716.         (return) size of returned data
  2717.  1Ch  N BYTEs    (call) parameter data required by call (see #0378,#0379,#0380)
  2718.         (return) result data (see #0388,#0389,#0392)
  2719. ---function 0027h---
  2720.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  2721.  1Ah    WORD    socket's file handle
  2722. ---functions 0028h,0029h---
  2723.  18h    WORD    (call) file handle for which to set priority low/high
  2724.             FFFFh to change calling task's priority
  2725. ---function 002Ah---
  2726.  no additional fields
  2727.  
  2728. (Table 0377)
  2729. Values for DESQview/X Network Manager subfunction:
  2730.  0004h    "so_exit"???
  2731.  0005h    "gethostbyname"
  2732.  0006h    "gethostname"
  2733.  0009h    "socket"
  2734.  000Dh    "gethostbyaddr"
  2735.  000Fh    "getprotobyname"
  2736.  0010h    get protocol name for protocol number
  2737.  0011h    "getservbyname"
  2738.  0012h    "getservbyport" (see #0381)
  2739.  0013h    "getsockname"??? (see #0382)
  2740.  0016h    ??? (see #0383)
  2741.  0017h    kill Network Manager
  2742.  0018h    "getpeername"??? (see #0384)
  2743.  0019h    ??? (called by socket function 0000h) (see #0385)
  2744.  001Ah    ??? (see #0386)
  2745.  001Bh    "so_linkup" (see #0387)
  2746.  001Dh    get network services (see #0388)
  2747.  001Fh    "getpwuid"
  2748.  0020h    "getpwnam"
  2749.  0021h    "getpwvar"
  2750.  0022h    "crypt"
  2751.  0023h    "so_unlink"
  2752.  0024h    "getlogin" (see #0389)
  2753.  0028h    "sethostent"
  2754.  0029h    "gethostent"
  2755.  002Ah    "soaddhost"
  2756.  002Bh    "soupdatehost"
  2757.  002Ch    "sodeletehost"
  2758.  002Dh    "setservent"
  2759.  002Eh    "getservent"
  2760.  002Fh    "setpwent"
  2761.  0030h    "getpwent" (see #0390)
  2762.  0031h    ???
  2763.  0032h    ???
  2764.  0033h    ???
  2765.  0034h    get IP network number (see #0391)
  2766.  0035h    ??? (pops up Network Manager window)
  2767.  0037h    ???
  2768.  0038h    get machine name and IP address (see #0392)
  2769.  0039h    ???
  2770.  
  2771. Format of Function 0026h/Subfunction 000Fh data:
  2772. Offset    Size    Description    (Table 0378)
  2773.  00h  8 BYTEs    (return) ???
  2774.  
  2775. Format of Function 0026h/Subfunction 0010h data:
  2776. Offset    Size    Description    (Table 0379)
  2777.  00h  2 BYTEs    (return) ???
  2778.  02h    WORD    (return) protocol number
  2779.  04h    WORD    (call) protocol number for which to get name
  2780.  06h    WORD    (return) ???
  2781.  08h    var    (return) ASCIZ protocol name
  2782.  N    var    (return) ASCIZ protocol name
  2783.  
  2784. Format of Function 0026h/Subfunction 0011h data:
  2785. Offset    Size    Description    (Table 0380)
  2786.  00h  8 BYTEs    ???
  2787.  08h    var    (return) ASCIZ protocol name
  2788.     var    (return) ASCIZ ??? name
  2789.     var    (return) ASCIZ ??? name
  2790.  
  2791. Format of Function 0026h/Subfunction 0012h data:
  2792. Offset    Size    Description    (Table 0381)
  2793.  00h  8 BYTEs    (return) ???
  2794.  
  2795. Format of Function 0026h/Subfunction 0013h data:
  2796. Offset    Size    Description    (Table 0382)
  2797.  00h 116 BYTEs    (return) ???
  2798.  
  2799. Format of Function 0026h/Subfunction 0016h data:
  2800. Offset    Size    Description    (Table 0383)
  2801.  00h  4 BYTEs    (return) ???
  2802.  
  2803. Format of Function 0026h/Subfunction 0018h data:
  2804. Offset    Size    Description    (Table 0384)
  2805.  00h 116 BYTEs    (return) ???
  2806.  
  2807. Format of Function 0026h/Subfunction 0019h data:
  2808. Offset    Size    Description    (Table 0385)
  2809.  00h  4 BYTEs    (return) ???
  2810.  04h    DWORD    (return) task handle of ???
  2811.  
  2812. Format of Function 0026h/Subfunction 001Ah data:
  2813. Offset    Size    Description    (Table 0386)
  2814.  00h 38 BYTEs    (return) ???
  2815.  
  2816. Format of Function 0026h/Subfunction 001Bh data:
  2817. Offset    Size    Description    (Table 0387)
  2818.  00h 10 BYTEs    (return) ???
  2819.  
  2820. Format of Function 0026h/Subfunction 001Dh return data [array]:
  2821. Offset    Size    Description    (Table 0388)
  2822.  00h    WORD    ??? or FFFFh if end of array
  2823.  02h  7 BYTEs    ???
  2824.  09h 27 BYTEs    ASCIZ name of service
  2825.  
  2826. Format of Function 0026h/Subfunction 0024h return data:
  2827. Offset    Size    Description    (Table 0389)
  2828.  00h    var    ASCIZ username
  2829.  
  2830. Format of Function 0026h/Subfunction 0030h data:
  2831. Offset    Size    Description    (Table 0390)
  2832.  00h    WORD    (call) UID or 0000h for current user
  2833.         (return) ???
  2834.  02h    WORD    (return) UID
  2835.  04h  6 BYTEs    (return) ???
  2836.  0Ah    var    (return) ASCIZ username
  2837.     var    (return) ASCIZ encrypted password
  2838.     var    (return) ASCIZ initial ("home") directory
  2839.  
  2840. Format of Function 0026h/Subfunction 0034h data:
  2841. Offset    Size    Description    (Table 0391)
  2842.  00h  1-3 BYTEs IP network number of caller's machine (low byte first)
  2843.  
  2844. Format of Function 0026h/Subfunction 0038h return data:
  2845. Offset    Size    Description    (Table 0392)
  2846.  00h    BYTE    ???
  2847.  01h  4 BYTEs    IP address
  2848.  05h    var    ASCIZ machine name
  2849.     ???
  2850.  
  2851. (Table 0393)
  2852. Values for DESQview/X socket error code:
  2853.  0000h    successful
  2854.  0009h    "BADF" bad file handle
  2855.  000Ch    "ENOMEM" out of memory
  2856.  000Eh    "EFAULT" bad address
  2857.  0016h    "EINVAL" invalid argument
  2858.  0018h    "EMFILE" too many open files
  2859.  0020h    "EPIPE" ??? broken pipe
  2860.  0023h    "EWOULDBLOCK" operation cannot be completed at this time
  2861.  0024h    "EINPROGRESS" operation now in progress
  2862.  0026h    "ENOTSOCK" socket invalid
  2863.  0028h    "EMSGSIZE" message too long to send atomically
  2864.  002Ch    "ESOCKTNOSUPPORT" socket type not supported
  2865.  002Fh    "EAFNOSUPPORT" address family not supp. by protocol fam.
  2866.  0031h    "EDOM" argument too large
  2867.  0038h    "EISCONN" socket is already connected
  2868.  0039h    "ENOTCONN" socket is not connected
  2869.  
  2870. Format of DESQview/X Socket Context Record:
  2871. Offset    Size    Description    (Table 0394)
  2872.  00h    DWORD    pointer to next Socket Context Record, 0000h:0000h if last
  2873.  04h    WORD    SFT index for socket, 00FFh if not connected, FFFFh if detached
  2874.  06h    WORD    PSP segment of owner or 0000h
  2875.  08h    WORD    mapping context of owning window (see #0274 at AX=1016h)
  2876.  0Ah  2 BYTEs    ???
  2877.  0Ch    WORD    address family
  2878.  0Eh    WORD    socket type
  2879.  10h    WORD    protocol
  2880.  12h    WORD    socket state
  2881.         0001h created
  2882.         0002h bound
  2883.         0003h listening???
  2884.         0005h connected
  2885.  14h    DWORD    timer object handle
  2886.  18h    DWORD    object handle (mailbox???)
  2887.  1Ch    DWORD    object handle of parent of above object or 0000h:0000h
  2888.  20h    DWORD    pointer to ??? or 0000h
  2889.  24h  6 BYTEs    ???
  2890.  2Ah    WORD    file handle for socket or FFFFh
  2891.  2Ch  2 BYTEs    ???
  2892.  2Eh    WORD    nonzero if socket nonblocking
  2893. ---network connections only---
  2894.  30h  2 BYTEs    ???
  2895.  32h    WORD    ???
  2896.  34h  4 BYTEs    (big-endian) IP address of remote
  2897.  38h  6 BYTEs    ???
  2898. --------Q-15DE2F-----------------------------
  2899. INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
  2900.     AX = DE2Fh
  2901. Return: BX = status
  2902.         0001h keyboard focus has been given to a direct window since the
  2903.         last call
  2904.         0000h if not
  2905. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  2906.     Quarterdeck stated that this call would not be available under future
  2907.       versions of DESQview Classic, but it is still present in v2.60
  2908. --------Q-15DE30-----------------------------
  2909. INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
  2910.     AX = DE30h
  2911. Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
  2912. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  2913.     you must first check the DESQview version to verify that it is 2.50 or
  2914.       greater
  2915. SeeAlso: INT 21/AH=2Bh/CX=4445h
  2916. --------Q-15DE31-----------------------------
  2917. INT 15 - DESQview/X v1.10 - ???
  2918.     AX = DE31h
  2919.     CX = ???
  2920.         0000h ???
  2921.         nonzero ???
  2922.     ???
  2923. Return: ???
  2924. --------b-15DF-------------------------------
  2925. INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
  2926.     AH = DFh
  2927.     AL = function
  2928.         00h turn on Turbo mode
  2929.         01h turn off Turbo mode
  2930.         02h set Turbo mode according to hardware switch
  2931. SeeAlso: INT 13/AX=FFFFh
  2932. --------b-15E00F-----------------------------
  2933. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  2934.     AX = E00Fh
  2935.     ES:BX -> start of 2nd processor's execution
  2936. Return: AL = status
  2937.         0Fh successful
  2938.         00h failure
  2939. SeeAlso: AX=E10Eh,AX=E200h
  2940. --------b-15E10E-----------------------------
  2941. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  2942.     AX = E10Eh
  2943.     ES:BX -> start of 2nd processor's execution
  2944. Return: AL = status
  2945.         0Fh successful (halted)
  2946.         00h failure (not halted)
  2947. SeeAlso: AX=E00Fh,AX=E200h
  2948. --------b-15E200-----------------------------
  2949. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  2950.     AX = E200h
  2951. Return: AX bit 15 set if 2nd processor available
  2952. SeeAlso: AX=E00Fh,AX=E10Eh
  2953. --------b-15E4-------------------------------
  2954. INT 15 - Tandy??? - ???
  2955.     AH = E4h
  2956.     AL = subfunction
  2957.         21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
  2958.     DL = ???
  2959. Return: DL = 00h if successful???
  2960. Note:    the section of code in 386MAX which calls these functions also checks
  2961.       whether the ROM BIOS has both Tandy and Phoenix Technologies
  2962.       signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
  2963.       support this function, however, returning the usual CF set/AH=86h for
  2964.       "unsupported function".
  2965. --------b-15E4-------------------------------
  2966. INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
  2967.     AH = E4h
  2968.     AL = subfunction
  2969.         00h get ???
  2970.         Return: CF clear
  2971.             AH = 00h
  2972.             CX = 0000h
  2973.             BX = ??? (read from [XBDA:0094h])
  2974.         01h,02h unsupported by this ROM version
  2975.         Return: CF set, AH = 86h
  2976.         80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
  2977.         Return: CF clear
  2978.             AH = 00h
  2979.             CX = 0000h
  2980.             BX = ???
  2981.         81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
  2982.         Return: CF set, AH = 86h
  2983. Notes:    functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
  2984.     these functions are not supported by the 7/26/93 LTE Lite 386 ROM
  2985. --------b-15E800-----------------------------
  2986. INT 15 - Compaq Contura - GET ???
  2987.     AX = E800h
  2988. Return: AX = 0000h
  2989.     BH = 00h
  2990.     BL = ??? (read from port 0C7Ch)
  2991.     CH = ???
  2992.     CL = ???
  2993.     DX = 0000h
  2994. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  2995. --------b-15E801-----------------------------
  2996. INT 15 - Compaq Contura - GET ???
  2997.     AX = E801h
  2998. Return: CF clear
  2999.     AX = extended memory in K (read from CMOS locations 30h and 31h)
  3000.     BH = ???
  3001.     BL = ???
  3002.     CX = extended memory in K (read from CMOS locations 17h and 18h)
  3003.     DX = ???
  3004. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  3005. --------b-15E802-----------------------------
  3006. INT 15 - Compaq Contura - GET ???
  3007.     AX = E802h
  3008. Return: CF clear
  3009.     AX = 0000h
  3010.     BX = ???
  3011.     CX = 0000h
  3012. Note:    this function is also supported by the LTE Lite 25c, 25E, and 486; not
  3013.       supported by LTE Lite 20 and 25.
  3014. --------m-15F200CX454D-----------------------
  3015. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALISATION CHECK ???
  3016.     AX = F200h
  3017.     CX = 454Dh
  3018. Return: CF clear if hardware already initialised
  3019.         BX = upper RAM areas in use
  3020.         bit 0: C000-C3FF
  3021.         bit 1: C400-C7FF
  3022.         ...
  3023.         bit 11: EC00-EFFF
  3024.     CF set if hardware not initialised yet
  3025. --------B-1600-------------------------------
  3026. INT 16 - KEYBOARD - GET KEYSTROKE
  3027.     AH = 00h
  3028. Return: AH = BIOS scan code
  3029.     AL = ASCII character
  3030. Notes:    on extended keyboards, this function discards any extended keystrokes,
  3031.       returning only when a non-extended keystroke is available
  3032.     the BIOS scan code is usually, but not always, the same as the hardware
  3033.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  3034.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  3035.       differs for shifted special keys.
  3036. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,INT 18/AH=00h
  3037. --------B-1601-------------------------------
  3038. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  3039.     AH = 01h
  3040. Return: ZF set if no keystroke available
  3041.     ZF clear if keystroke available
  3042.         AH = BIOS scan code
  3043.         AL = ASCII character
  3044. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  3045.       however, any extended keystrokes which are not compatible with 83/84-
  3046.       key keyboards are removed in the process of checking whether a
  3047.       non-extended keystroke is available
  3048. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  3049. --------B-1602-------------------------------
  3050. INT 16 - KEYBOARD - GET SHIFT FLAGS
  3051.     AH = 02h
  3052. Return: AL = shift flags (see #0395)
  3053. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h
  3054.  
  3055. Bitfields for keyboard shift flags:
  3056. Bit(s)    Description    (Table 0395)
  3057.  7    Insert active
  3058.  6    CapsLock active
  3059.  5    NumLock active
  3060.  4    ScrollLock active
  3061.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  3062.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  3063.  1    left shift key pressed
  3064.  0    right shift key pressed
  3065. --------B-1603-------------------------------
  3066. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  3067.     AH = 03h
  3068.     AL = subfunction
  3069.         00h set default delay and rate (PCjr and some PS/2)
  3070.         01h increase delay before repeat (PCjr)
  3071.         02h decrease repeat rate by factor of 2 (PCjr)
  3072.         03h increase delay and decrease repeat rate (PCjr)
  3073.         04h turn off typematic repeat (PCjr and some PS/2)
  3074.         05h set repeat rate and delay (AT,PS)
  3075.         BH = delay value (00h = 250ms to 03h = 1000ms)
  3076.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  3077.         06h get current typematic rate and delay (newer PS/2s)
  3078.         Return: BL = repeat rate (see above)
  3079.             BH = delay (see above)
  3080. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  3081.       supported
  3082. SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
  3083. --------B-1604-------------------------------
  3084. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  3085.     AH = 04h
  3086.     AL = keyclick state
  3087.         00h off
  3088.         01h on
  3089. SeeAlso: AH=03h
  3090. --------B-1605-------------------------------
  3091. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  3092.     AH = 05h
  3093.     CH = scan code
  3094.     CL = ASCII character
  3095. Return: AL = 00h if successful
  3096.          01h if keyboard buffer full
  3097. Note:    under DESQview, a number of "keystrokes" invoke specific
  3098.       DESQview-related actions when they are read from the keyboard
  3099.       buffer (see #2208)
  3100. SeeAlso: AH=00h,AH=25h"K3",AH=71h,AH=FFh,INT 15/AX=DE10h
  3101.  
  3102. (Table 2208)
  3103. Values for pseudo-keystrokes for DESQview:
  3104.  38FBh or FB00h    switch to next window (only if main menu already popped up)
  3105.  38FCh or FC00h    pop up DESQview main menu
  3106.  38FEh or FE00h    close the current window
  3107.  38FFh or FF00h    pop up DESQview learn menu
  3108. --------B-1605-------------------------------
  3109. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  3110.     AH = 05h
  3111.     AL = function
  3112.         01h set keyboard layout to French
  3113.         02h set keyboard layout to German
  3114.         03h set keyboard layout to Italian
  3115.         04h set keyboard layout to Spanish
  3116.         05h set keyboard layout to UK
  3117.         80h check if function supported
  3118.         Return: AL <> 80h if supported
  3119. Return: ???
  3120. Note:    this function is called by the DOS 3.2 KEYBxx.COM
  3121. SeeAlso: AH=92h,AH=A2h
  3122. --------B-1609-------------------------------
  3123. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  3124.     AH = 09h
  3125. Return: AL = supported keyboard functions (see #0396)
  3126. Note:    this function is only available if bit 6 of the second feature byte
  3127.       returned by INT 15/AH=C0h is set
  3128. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  3129.  
  3130. Bitfields for supported keyboard functions:
  3131. Bit(s)    Description    (Table 0396)
  3132.  7    reserved
  3133.  6    INT 16/AH=20h-22h supported (122-key keyboard support)
  3134.  5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  3135.  4    INT 16/AH=0Ah supported
  3136.  3    INT 16/AX=0306h supported
  3137.  2    INT 16/AX=0305h supported
  3138.  1    INT 16/AX=0304h supported
  3139.  0    INT 16/AX=0300h supported
  3140. --------B-160A-------------------------------
  3141. INT 16 - KEYBOARD - GET KEYBOARD ID
  3142.     AH = 0Ah
  3143. Return: BX = keyboard ID (see #0397)
  3144. Note:    check return value from AH=09h to determine whether this function is
  3145.       supported
  3146. SeeAlso: AH=09h
  3147.  
  3148. (Table 0397)
  3149. Values for keyboard ID:
  3150.  0000h    no keyboard attached
  3151.  41ABh    Japanese "G" keyboard (translate mode)
  3152.  54ABh    Japanese "P" keyboard (translate mode)
  3153.  83ABh    Japanese "G" keyboard (pass-through mode)
  3154.  84ABh    Japanese "P" keyboard (pass-through mode)
  3155.  90ABh    old Japanese "G" keyboard
  3156.  91ABh    old Japanese "P" keyboard
  3157.  92ABh    old Japanese "A" keyboard
  3158. --------B-1610-------------------------------
  3159. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  3160.     AH = 10h
  3161. Return: AH = BIOS scan code
  3162.     AL = ASCII character
  3163. Notes:    if no keystroke is available, this function waits until one is placed
  3164.       in the keyboard buffer
  3165.     the BIOS scan code is usually, but not always, the same as the hardware
  3166.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  3167.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  3168.       differs for shifted special keys.
  3169.     unlike AH=00h, this function does not discard extended keystrokes
  3170.     INT 16/AH=09h can be used to determine whether this function is
  3171.       supported, but only on later model PS/2s
  3172. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h
  3173. --------B-1611-------------------------------
  3174. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  3175.     AH = 11h
  3176. Return: ZF set if no keystroke available
  3177.     ZF clear if keystroke available
  3178.         AH = BIOS scan code
  3179.         AL = ASCII character
  3180. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  3181.     unlike AH=01h, this function does not discard extended keystrokes
  3182.     some versions of the IBM BIOS Technical Reference erroneously report
  3183.       that CF is returned instead of ZF
  3184.     INT 16/AH=09h can be used to determine whether this function is
  3185.       supported, but only on later model PS/2s
  3186. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
  3187. --------B-1612-------------------------------
  3188. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  3189.     AH = 12h
  3190. Return: AL = shift flags 1 (same as returned by AH=02h) (see #0398)
  3191.     AH = shift flags 2 (see #0399)
  3192. Notes:    AL bit 3 set only for left Alt key on many machines
  3193.     AH bits 7 through 4 always clear on a Compaq SLT/286
  3194.     INT 16/AH=09h can be used to determine whether this function is
  3195.       supported, but only on later model PS/2s
  3196. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh
  3197.  
  3198. Bitfields for keyboard shift flags 1:
  3199. Bit(s)    Description    (Table 0398)
  3200.  7    Insert active
  3201.  6    CapsLock active
  3202.  5    NumLock active
  3203.  4    ScrollLock active
  3204.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  3205.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  3206.  1    left shift key pressed
  3207.  0    right shift key pressed
  3208.  
  3209. Bitfields for keyboard shift flags 2:
  3210. Bit(s)    Description    (Table 0399)
  3211.  7    SysReq key pressed (SysReq is often labeled SysRq)
  3212.  6    CapsLock pressed
  3213.  5    NumLock pressed
  3214.  4    ScrollLock pressed
  3215.  3    right Alt key pressed
  3216.  2    right Ctrl key pressed
  3217.  1    left Alt key pressed
  3218.  0    left Ctrl key pressed
  3219. --------J-1613-------------------------------
  3220. INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
  3221.     AH = 13h
  3222.     AL = function
  3223.         00h set shift status
  3224.         DX = shift status (see #0400), must preserve internal status
  3225.               bits
  3226.         01h get shift status
  3227.         Return: DX = current shift status (see #0400)
  3228. Note:    these functions are supplied by the Japanese Front-End Processor
  3229. SeeAlso: AH=14h,INT 21/AX=6301h
  3230.  
  3231. Bitfields for DOS/V shift status:
  3232. Bit(s)    Description    (Table 0400)
  3233.  0    full-size rather than half-size
  3234.  2-1    character input mode
  3235.     00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
  3236.  5-3    internal status
  3237.  6    Romaji enabled
  3238.  7    Katakana to Kanji conversion enabled
  3239.  15-8    internal status
  3240. --------J-1614-------------------------------
  3241. INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
  3242.     AH = 14h
  3243.     AL = function
  3244.         00h enable display
  3245.         01h disable display
  3246.         02h get display state
  3247.         Return: AL = current state (00h enabled, 01h disabled)
  3248. Desc:    control the screen-bottom shift status row(s) for the Japanese
  3249.       Front-End Processor
  3250. SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
  3251. --------B-1620-------------------------------
  3252. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  3253.     AH = 20h
  3254. Return: AH = BIOS scan code (see AH=10h for details)
  3255.     AL = ASCII character
  3256. Note:    use AH=09h to determine whether this function is supported
  3257. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  3258. --------b-1620------------------------------------
  3259. INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
  3260.     AH = 20h
  3261.     AL = shift status (see #0401)
  3262. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  3263.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  3264.     the user can override the specified settings by pressing the keys
  3265.  
  3266. Bitfields for HUNTER 16 shift status:
  3267. Bit(s)    Description    (Table 0401)
  3268.  4    Scroll Lock on
  3269.  5    Num Lock on
  3270.  6    Caps Lock on
  3271. --------K-1620-------------------------------
  3272. INT 16 - K3 v1.5+, K3PLUS v5.0+ - GET EXTENDED BUFFER STATE
  3273.     AH = 20h
  3274. Return: AX = K3 version
  3275.     ES:BX -> extended keyboard buffer start
  3276.     ES:DX -> extended keyboard buffer end
  3277.     ES:SI -> next keystroke
  3278.     ES:DI -> last keystroke in buffer
  3279.     CX = number of keystrokes in buffer
  3280. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  3281.       K3 extended German keyboard driver by Martin Gerdes published in c't
  3282.       magazine in 1988
  3283. SeeAlso: AH=25h"K3",AX=AF20h
  3284. --------B-1621-------------------------------
  3285. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  3286.     AH = 21h
  3287. Return: ZF set if no keystroke available
  3288.     ZF clear if keystroke available
  3289.         AH = BIOS scan code
  3290.         AL = ASCII character
  3291. Notes:    use AH=09h to determine whether this function is supported
  3292.     some versions of the IBM BIOS Technical Reference erroneously report
  3293.       that CF is returned instead of ZF
  3294. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  3295. --------b-1621------------------------------------
  3296. INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
  3297.     AH = 21h
  3298.     AL = shift keys to control (see #0395)
  3299.     BL = shift state for disabled keys
  3300. Note:    If a bit in AL is set the key is disabled and set to the state of the
  3301.       corresponding bit in BL
  3302. SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
  3303. --------B-1622-------------------------------
  3304. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  3305.     AH = 22h
  3306. Return: AL = shift flags 1 (see #0398)
  3307.     AH = shift flags 2 (see #0399)
  3308. Note:    use AH=09h to determine whether this function is supported
  3309. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  3310. --------b-1622------------------------------------
  3311. INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
  3312.     AH = 22h
  3313.     AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
  3314.     BX = 0708h
  3315.     CX = 0910h
  3316.     DX = 1112h
  3317. Return: AL = 00h if successful
  3318. SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
  3319. --------b-1623------------------------------------
  3320. INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
  3321.     AH = 23h
  3322.     AL = new state of breakout (00h enabled, nonzero disabled)
  3323.     BX = 0708h   
  3324.     CX = 0910h
  3325.     DX = 1112h
  3326. Return: AL = 00h if successful
  3327. Desc:    Enables or disables the emergency breakout feature, where the
  3328.       Hunter 16 at power on checks whether the X and P keys are pressed.
  3329.       If so the machine will boot rather than continue the running program
  3330. SeeAlso: AH=22h"HUNTER"
  3331. --------b-1624------------------------------------
  3332. INT 16 - HUNTER 16 - REDEFINE KEY CODES
  3333.     AH = 24h
  3334.     AL = Matrix Code (see #0402)
  3335.     BL = new Key code
  3336. Return: AL = status (00h successful, nonzero failed)
  3337. SeeAlso: AH=2Bh,AH=2Ch
  3338.  
  3339. (Table 0402)
  3340. Values for HUNTER 16 Matrix Code:
  3341.  Code  Key        Code    Key        Code    Key
  3342.  00h   Esc key        1Eh    Space        3Bh    L
  3343.  01h   1        21h    0        3Ch    ,
  3344.  02h   Q        22h    -        3Eh    Right shift
  3345.  03h   Tab        23h    '        42h    8
  3346.  04h   Num Lock        24h    Keypad 4    43h    7
  3347.  05h   \        25h    Enter        44h    U
  3348.  08h   LShift        26h    Keypad 7    45h    I
  3349.  09h   Ctrl        27h    .        46h    J
  3350.  0Ah   "Paw" key    28h    Keypad 1    47h    K
  3351.  0Bh   2        29h    Keypad 0    48h    M
  3352.  0Ch   W        2Ch    =        49h    N 
  3353.  0Dh   A        2Dh    Backspace    4Ah    /
  3354.  0Eh   S        2Eh    Keypad 8    4Dh    6
  3355.  0Fh   Z        2Fh    Keypad 9    4Eh    5
  3356.  11h   Alt        30h    Keypad 5    4Fh    T
  3357.  16h   4        31h    Keypad 6    50h    Y
  3358.  17h   3        32h    Keypad 2    51h    G
  3359.  18h   E        33h    Keypad 3    52h    H
  3360.  19h   R        34h    Keypad .    53h    B
  3361.  1Ah   D        37h    9        54h    V
  3362.  1Bh   F        38h    O        55h    #
  3363.  1Ch   X        39h    P        58h    Pwr
  3364.  1Dh   C        3Ah    ;        59h    Shift Pwr
  3365. --------b-1625------------------------------------
  3366. INT 16 - HUNTER 16 - RESET KEYBOARD
  3367.     AH = 25h
  3368. Return: AL = 00h
  3369. Desc:    restores the standard keyboard layout after any remapping
  3370. SeeAlso: AH=24h,AH=2Bh,AH=2Ch
  3371. --------K-1625-------------------------------
  3372. INT 16 - K3 v1.5+, K3PLUS v5.0+ - COPY INTO EXTENDED BUFFER
  3373.     AH = 25h
  3374.     CX = number of keystrokes to copy
  3375.     ES:SI -> buffer containing keystrokes
  3376. Return: CF clear if successful
  3377.     CF set on error (i.e. buffer full)
  3378.         CX = number of keystrokes NOT transferred
  3379.         ES:SI -> first keystroke not transferred
  3380. SeeAlso: AH=05h,AH=20h"K3",AX=AF25h
  3381. --------b-1626------------------------------------
  3382. INT 16 - HUNTER 16 - CONTROL KEYCLICK
  3383.     AH = 26h
  3384.     AL = new state of keyclicks (00h disabled, 01h enabled)
  3385. Return: AL = 00h
  3386. SeeAlso: AH=2Ah
  3387. --------b-1627------------------------------------
  3388. INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
  3389.     AH = 27h
  3390.     AL = what to dump
  3391.         00h whole (virtual) window
  3392.         01h LCD window only
  3393. Return: AL = 00h
  3394. Desc:    control whether printscren dumps the whole 80x25 screen or only the
  3395.       part displayed in the LCD window
  3396. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  3397.       a 640x200 virtual screen
  3398. --------b-1629------------------------------------
  3399. INT 16 - HUNTER 16 - GET KEY REPEAT
  3400.     AH = 29h
  3401. Return: BL = Typematic rate (characters per second) (see #0403)
  3402.     BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
  3403. SeeAlso: AH=03h,AH=2Ah
  3404.  
  3405. (Table 0403)
  3406. Values for HUNTER 16 Typematic rate:
  3407.  00h    30.0     08h    15.0     10h    7.5     18h    3.7
  3408.  01h    26.7     09h    13.3     11h    6.7     19h    3.3
  3409.  02h    24.0     0Ah    12.0     12h    6.0     1Ah    3.0
  3410.  03h    21.8     0Bh    10.9     13h    5.5     1Bh    2.7
  3411.  04h    20.0     0Ch    10.0     14h    5.0     1Ch    2.5
  3412.  05h    18.5     0Dh     9.2     15h    4.6     1Dh    2.3
  3413.  06h    17.1     0Eh     8.6     16h    4.3     1Eh    2.1
  3414.  07h    16.0     0Fh     8.0     17h    4.0     1Fh    2.0
  3415. SeeAlso: AH=2Ah
  3416. --------b-162A------------------------------------
  3417. INT 16 - HUNTER 16 - CONTROL KEY REPEAT
  3418.     AH = 2Ah
  3419.     AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
  3420. SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
  3421. --------b-162B------------------------------------
  3422. INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
  3423.     AH = 2Bh
  3424.     AL = which key table to redefine
  3425.         00h unshifted
  3426.         01h shifted
  3427.         02h Numlock
  3428.     BH = standard scan code of key (00h-80h)
  3429.     BL = new scan code
  3430. Desc:    redefine the generated scan code from BH to BL
  3431. SeeAlso: AH=24h,AH=2Ah,AH=2Ch
  3432. --------b-162C------------------------------------
  3433. INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
  3434.     AH = 2Ch
  3435.     AL = Matrix code of key (see AH=29h)
  3436.     BL = new key code
  3437. Return: AL = status (00h success, nonzero failed)
  3438. Desc:    redefine the key code generated by holding the PAW key down and
  3439.       pressing the key in AL
  3440. SeeAlso: AH=24h,AH=2Bh
  3441. --------b-162D------------------------------------
  3442. INT 16 - HUNTER 16 - CONTROL BREAK KEYS
  3443.     AH = 2Dh
  3444.     AL = enabled break keys
  3445.         bit 0 Ctrl-C
  3446.         bit 1 Ctrl-Break
  3447.     BX = 0708h
  3448.     CX = 0910h
  3449.     DX = 1112h
  3450. Return: AL = status (00h success, FFh failed)
  3451. SeeAlso: AH=21h"HUNTER"
  3452. --------U-163577-----------------------------
  3453. INT 16 U - TextWare TWTSR - API
  3454.     AX = 3577h
  3455.     CX = function
  3456.         00CBh ???
  3457.         Return: AX = 0000h
  3458.             BX = 0000h
  3459.             DX:CX -> ???
  3460.         00CCh uninstall
  3461.         Return: AX = status
  3462.                 0000h successful
  3463.                 FFFDh unable to unload because vectors taken
  3464.         00CDh ???
  3465.         Return: AX = 0000h
  3466.             BX = 0000h
  3467.             DX:CX -> ???
  3468.         other
  3469.         Return: AX = 5345h ('SE')
  3470. Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
  3471.       popped up via hotkey
  3472. SeeAlso: AX=D724h
  3473. --------U-164252-----------------------------
  3474. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  3475.     AX = 4252h
  3476. Return: AX = 5242h if installed
  3477. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of the
  3478.       PC Magazine utility CAPTURE written by Tom Kihlken
  3479. SeeAlso: AX=4253h,AX=4254h
  3480. --------U-164253-----------------------------
  3481. INT 16 - TEXTCAP 2.0 - UNINSTALL
  3482.     AX = 4253h
  3483. Return: AX = segment of resident code
  3484. Notes:    the uninstall code does not check whether interrupt vectors have been
  3485.       chained by other programs
  3486.     the caller must free the main memory block (using the returned segment)
  3487. SeeAlso: AX=4252h,AX=4254h
  3488. --------U-164254-----------------------------
  3489. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  3490.     AX = 4254h
  3491. Return: AX = status
  3492.         4254h if screen dump will be written as soon as disk becomes idle
  3493.         5442h if screen dump written
  3494. SeeAlso: AX=4252h,AX=4253h
  3495. --------e-164500-----------------------------
  3496. INT 16 - Shamrock Software EMAIL - GET STATUS
  3497.     AX = 4500h
  3498.     DL = port number (01h = COM1)
  3499.     ES:BX -> 13-byte buffer for ASCIZ name
  3500. Return: AX = 4D00h if EMAIL installed on specified port
  3501.         ES:BX -> "" if no connection
  3502.           -> "*" if connection but caller has not identified name
  3503.           -> name otherwise
  3504.         CX = version (CH = major, CL = minor)
  3505.         DL = privilege level of user (00h = guest)
  3506.         DH = chosen language (00h German, 01h English)
  3507. SeeAlso: AX=4501h,AX=4502h
  3508. --------e-164501-----------------------------
  3509. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  3510.     AX = 4501h
  3511.     DL = port number (01h = COM1)
  3512. Return: AX = 4D00h if EMAIL installed on specified port
  3513.         BX = maximum connect time in clock ticks
  3514.         CX = maximum connect time for guests (without name) in clock ticks
  3515.         DX = elapsed connect time of current user in clock ticks
  3516. SeeAlso: AX=4500h
  3517. --------e-164502-----------------------------
  3518. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  3519.     AX = 4502h
  3520.     DL = port number (01h = COM1)
  3521. Return: AX = 4D00h if EMAIL installed on specified port
  3522.         BL = current value of serial port's Line Control Register
  3523.         BH = flags (see #0404)
  3524.         CX = selected country code (33 = France, 49 = Germany, etc)
  3525.         DX = baudrate divisor (115200/DX = baudrate)
  3526. SeeAlso: AX=4500h
  3527.  
  3528. Bitfields for Shamrock Software EMAIL flags:
  3529. Bit(s)    Description    (Table 0404)
  3530.  0    ISO code
  3531.  1    pause
  3532.  2    linefeed
  3533.  3    ANSI sequences
  3534. --------e-164503-----------------------------
  3535. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  3536.     AX = 4503h
  3537.     DL = port number (01h = COM1)
  3538.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  3539.     ES:BX -> ASCIZ string with new user command-word
  3540. Return: AX = 4D00h if EMAIL installed on specified port
  3541. Notes:    a single user command (consisting of only uppercase letters and digits)
  3542.       may be defined, and remains valid until it is overwritten or the
  3543.       EMAIL program terminates; the user command must be activated by
  3544.       calling AX=4504h at least once.
  3545.     an existing command word may be redefined with this function
  3546. SeeAlso: AX=4504h,AX=4505h
  3547. --------e-164504-----------------------------
  3548. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  3549.     AX = 4504h
  3550.     DL = port number (01h = COM1)
  3551.     ES:BX -> 80-byte buffer for ASCIZ user input line
  3552. Return: AX = 4D00h if EMAIL installed on specified port
  3553.         DL = flags
  3554.         bit 0: user function supported (always set)
  3555.         bit 1: user entered user-function command word
  3556.         if DL bit 1 set,
  3557.         ES:BX buffer contains line entered by user which begins with
  3558.             the defined command word and has been converted to all
  3559.             caps
  3560. Note:    caller must process the returned commandline and invoke AX=4505h
  3561.       within five seconds with the result of that processing
  3562. SeeAlso: AX=4503h,AX=4505h
  3563. --------e-164505-----------------------------
  3564. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  3565.     AX = 4505h
  3566.     DL = port number (01h = COM1)
  3567.     DH = error flag
  3568.         bit 3: set on error
  3569.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  3570. Return: AH = 4Dh if EMAIL installed on specified port
  3571.     AL = status
  3572.         00h successful
  3573.         02h unable to perform function (timeout, prev call not complete)
  3574.         other error
  3575. Notes:    if the error flag in DH is set, the string is not sent and an error
  3576.       message is generated instead; if this function is not called within
  3577.       five seconds of AX=4504h, EMAIL automatically generates an error
  3578.       message
  3579.     the string is copied into an internal buffer, allowing this function's
  3580.       caller to continue immediately
  3581. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  3582. --------e-164506-----------------------------
  3583. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  3584.     AX = 4506h
  3585.     DL = port number (01h = COM1)
  3586.     ES:BX -> 13-byte buffer for ASCIZ filename
  3587. Return: AX = 4D00h if EMAIL installed on specified port
  3588.         DH = Xmodem status
  3589.         00h no XGET command given
  3590.         01h XGET in progress
  3591.         02h XGET completed successfully
  3592.         ES:BX buffer filled with last filename given to XGET command
  3593.         (without path)
  3594. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  3595.       return DH=00h
  3596. SeeAlso: AX=4500h,INT 17/AX=2408h
  3597. --------K-164D4F-----------------------------
  3598. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  3599.     AX = 4D4Fh
  3600. Return: AX = 6F6Dh if installed
  3601.         ES = segment of resident code
  3602. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  3603. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  3604. --------J-165000-----------------------------
  3605. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  3606.     AX = 5000h
  3607.     BX = country code
  3608.         0001h USA (English), 0051h Japan
  3609. Return: AL = status
  3610.         00h successful
  3611.         01h bad country code
  3612.         02h other error
  3613. SeeAlso: AX=5001h,INT 10/AX=5000h,INT 17/AX=5000h
  3614. --------J-165001-----------------------------
  3615. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  3616.     AX = 5001h
  3617. Return: AL = status
  3618.         00h successful
  3619.         BX = country code
  3620.         02h error
  3621. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  3622. --------J-1651-------------------------------
  3623. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  3624.     AH = 51h
  3625. Return: AL = standard shift key states (see #0395,#0398)
  3626.     AH = Kana lock (00h off, 01h on)
  3627. SeeAlso: AH=02h,AH=12h,AH=22h
  3628. --------t-165453BX5242-----------------------
  3629. INT 16 - TSRBONES - INSTALLATION CHECK
  3630.     AX = 5453h ('TS')
  3631.     BX = 5242h ('RB')
  3632.     CX = 4F4Eh ('ON')
  3633.     DX = 4553h ('ES')
  3634. Return: AX = 4553h if installed
  3635.     BX = 4F4Eh if installed
  3636.     CX = 5242h if installed
  3637.     DX = 5453h if installed
  3638. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  3639. Note:    these values are the default as the TSRBONES package is distributed,
  3640.       but will normally be changed when implementing an actual TSR with
  3641.       the TSRBONES skeleton
  3642. SeeAlso: INT 2D"AMIS"
  3643. --------A-165500-----------------------------
  3644. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  3645.     AX = 5500h
  3646. Return: AX = 4D53h ('MS') if keyboard TSR present
  3647. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  3648.       that are present through this call.
  3649.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  3650.       handlers; otherwise it assumes that the TSR will handle the keyboard
  3651. SeeAlso: INT 1A/AX=3601h
  3652. --------A-1655FEDX0000-----------------------
  3653. INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR???
  3654.     AX = 55FEh
  3655.     DX = 0000h
  3656.     ES:BX -> ??? function
  3657.     ES:CX -> ??? structure
  3658. Return: AX = result
  3659.         4D4Bh only the INT 1B handler will be installed.
  3660.         <> 4D4Bh handlers for INT 08, INT 09, INT 16, INT 1B, and
  3661.           INT 1C are installed
  3662. Notes:    The pointer in ES:CX seems to point at a structure defining a callback
  3663.       function when new keyboard keys are pressed. If a TSR returns
  3664.       AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
  3665. SeeAlso: INT 16/AX=5500h,INT 1A/AX=3601h
  3666. --------U-1655FF-----------------------------
  3667. INT 16 - Swap Utilities - ???
  3668.     AX = 55FFh
  3669.     BX >= 0004h
  3670.     CX = function
  3671.         0000h set ??? flag
  3672.         other clear ??? flag
  3673. Note:    present in SWAPSH and SWAPDT v1.77j, distributed with PC Tools v7, as
  3674.       well as the Trusted Access SCRNBLNK.COM; this may be part of the
  3675.       standard TesSeRact library
  3676. SeeAlso: INT 2F/AX=5453h
  3677. --------c-165758BX4858-----------------------
  3678. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  3679.     AX = 5758h
  3680.     BX = 4858h ('HX')
  3681.     DX = 4443h ('DC')
  3682.     CX <> 5758h
  3683. Return: BX = 6878h if installed
  3684.     CX = 6463h if installed
  3685.         AX = code segment of TSR
  3686.         CX = internal version??? (v3.00 returns 0100h)
  3687. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  3688. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  3689.     the cache statistics are located early in the segment pointed at by
  3690.       AX on return
  3691. SeeAlso: INT 2F/AX=5758h
  3692. ----------165758BX5754-----------------------
  3693. INT 16 U - Netroom ??? - ???
  3694.     AX = 5758h
  3695.     BX = 5754h
  3696.     ???
  3697. Return: ???
  3698. ----------165758BX5755-----------------------
  3699. INT 16 U - Netroom ??? - ???
  3700.     AX = 5758h
  3701.     BX = 5755h
  3702.     DS:SI -> ???
  3703. Return: ???
  3704. ----------165758BX5756-----------------------
  3705. INT 16 U - Netroom ??? - INSTALLATION CHECK
  3706.     AX = 5758h
  3707.     BX = 5756h
  3708. Return: BX <> 5756h if installed
  3709. --------m-165758BX5858-----------------------
  3710. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  3711.     AX = 5758h
  3712.     BX = 5858h
  3713. Return: CF clear
  3714.     DX:BX -> saved copy of interrupt vector table
  3715. Note:    the installation check consists of calling this function and comparing
  3716.       BX against 5858h on return; if it has changed, PRENET is installed
  3717. SeeAlso: AX=5758h/BX=5859h
  3718. Index:    installation check;Netroom PRENET
  3719. --------m-165758BX5859-----------------------
  3720. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  3721.     AX = 5758h
  3722.     BX = 5859h
  3723. Return: CF clear
  3724.     DX:BX -> saved copy of interrupt vector table
  3725. Note:    the installation check consists of calling this function and comparing
  3726.       BX against 5859h on return; if it has changed, POSTNET is installed
  3727. SeeAlso: AX=5758h/BX=5858h
  3728. Index:    installation check;Netroom POSTNET
  3729. --------U-166969BX6968-----------------------
  3730. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  3731.     AX = 6969h
  3732.     BX = 6968h
  3733. Return: resident code unhooked, but not removed from memory
  3734. Index:    uninstall;BACKTALK
  3735. --------U-166969BX6969-----------------------
  3736. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  3737.     AX = 6969h
  3738.     BX = 6969h
  3739.     DX = 0000h
  3740. Return: DX nonzero if installed
  3741.         BX = CS of resident code
  3742.         DX = PSP segment of resident code
  3743.         DS:SI -> ASCIZ identification string "CPoint Talk"
  3744. --------i-166A6B-----------------------------
  3745. INT 16 U - FastJuice - DISABLE/UNLOAD???
  3746.     AX = 6A6Bh
  3747. Return: ???
  3748. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  3749. SeeAlso: AX=7463h
  3750. Index:    uninstall;FastJuice
  3751. --------G-166C63-----------------------------
  3752. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  3753.     AX = 6C63h ('lc')
  3754. Return: AX = 4C43h ('LC') if installed
  3755. Program: TMED is a freeware resident memory editor by Liang Chen
  3756. --------b-166F00BX0000-----------------------
  3757. INT 16 - HP HIL Vectras - HP HIL Extended BIOS INSTALLATION CHECK
  3758.     AX = 6F00h
  3759.     BX = 0000h
  3760. Return: BX = 4850h if present
  3761. Notes:    called by recent MS Mouse drivers looking for an HP-HIL mouse
  3762.     supported by ES, QS, and RS series HP Vectras
  3763. SeeAlso: AX=6F0Dh
  3764. --------b-166F0D-----------------------------
  3765. INT 16 - HP HIL Vectras - GET HIL Extended BIOS INTERRUPT NUMBER
  3766.     AX = 6F0Dh
  3767. Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
  3768. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  3769.       input system
  3770. SeeAlso: AX=6F0Eh,INT 6F"HP"
  3771. --------b-166F0E-----------------------------
  3772. INT 16 - HP HIL Vectras - SET HIL Extended BIOS INTERRUPT NUMBER
  3773.     AX = 6F0Eh
  3774.     BL = new interrupt number (60h-6Fh,78h-7Fh)
  3775. Return: AH = status (00h = successful)
  3776. Desc:    allows the HIL Extended BIOS software to use a non-default interrupt
  3777.       number in case of an interrupt conflict with another application
  3778. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  3779.       input system
  3780. SeeAlso: AX=6F0Dh,INT 6F"HP"
  3781. --------K-1670-------------------------------
  3782. INT 16 - FAKEY.COM - INSTALLATION CHECK
  3783.     AH = 70h
  3784. Return: AX = 1954h if installed
  3785. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  3786. --------K-1671-------------------------------
  3787. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  3788.     AH = 71h
  3789.     CX = number of keystrokes
  3790.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  3791. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  3792. SeeAlso: AH=05h,AH=72h
  3793. --------K-1672-------------------------------
  3794. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  3795.     AH = 72h
  3796. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  3797. SeeAlso: AH=71h
  3798. --------K-1673-------------------------------
  3799. INT 16 - FAKEY.COM - PLAY TONES
  3800.     AH = 73h
  3801.     CX = number of tones to play
  3802.     DS:SI -> array of tones (see #0405)
  3803. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  3804. SeeAlso: INT 15/AX=1019h
  3805.  
  3806. Format of FAKEY.COM tone array entries:
  3807. Offset    Size    Description    (Table 0405)
  3808.  00h    WORD    divisor for timer channel 2
  3809.  02h    WORD    duration in clock ticks
  3810. --------i-167463-----------------------------
  3811. INT 16 U - FastJuice - INSTALLATION CHECK
  3812.     AX = 7463h ("tc")
  3813. Return: AX = 5443h ("TC") if installed
  3814. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  3815. SeeAlso: AX=6A6Bh
  3816. --------R-1675-------------------------------
  3817. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  3818.     AH = 75h
  3819.     AL = number of ticks between checks for new screen changes
  3820. --------R-1676-------------------------------
  3821. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  3822.     AH = 76h
  3823.     AL = error checking type
  3824.         00h none
  3825.         01h fast
  3826.         02h slow
  3827. --------R-1677-------------------------------
  3828. INT 16 - pcANYWHERE III - LOG OFF
  3829.     AH = 77h
  3830.     AL = mode
  3831.         00h wait for another call
  3832.         01h leave in Memory Resident Mode
  3833.         02h leave in Automatic Mode
  3834.         FFh leave in current operating mode
  3835. --------U-167761-----------------------------
  3836. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  3837.     AX = 7761h ('wa')
  3838. Return: AX = 5741h ('WA') if installed
  3839. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  3840. SeeAlso: INT 21/AX=7761h
  3841. --------U-167788BX7789-----------------------
  3842. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  3843.     AX = 7788h
  3844.     BX = 7789h
  3845.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  3846. Return: AX = 7789h if installed and signature correct
  3847.     BX = 7788h
  3848.     SI destroyed
  3849. --------R-1679-------------------------------
  3850. INT 16 - pcANYWHERE III - CHECK STATUS
  3851.     AH = 79h
  3852. Return: AX = status
  3853.         FFFFh if resident and active
  3854.         FFFEh if resident but not active
  3855.         FFFDh if in Memory Resident mode
  3856.         FFFCh if in Automatic mode
  3857.         other value if not resident
  3858. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  3859. --------R-167A-------------------------------
  3860. INT 16 - pcANYWHERE III - CANCEL SESSION
  3861.     AH = 7Ah
  3862. --------R-167B00-----------------------------
  3863. INT 16 - pcANYWHERE III - SUSPEND
  3864.     AX = 7B00h
  3865. SeeAlso: AH=79h,AX=7B01h
  3866. --------R-167B01-----------------------------
  3867. INT 16 - pcANYWHERE III - RESUME
  3868.     AX = 7B01h
  3869. SeeAlso: AH=79h,AX=7B00h
  3870. --------R-167C-------------------------------
  3871. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  3872.     AH = 7Ch
  3873. Return: AH = port number
  3874.     AL = baud rate
  3875.         00h = 50 baud
  3876.         01h = 75 baud
  3877.         02h = 110 baud
  3878.         03h = 134.5 baud
  3879.         04h = 150 baud
  3880.         05h = 300 baud
  3881.         06h = 600 baud
  3882.         07h = 1200 baud
  3883.         08h = 1800 baud
  3884.         09h = 2000 baud
  3885.         0Ah = 2400 baud
  3886.         0Bh = 4800 baud
  3887.         0Ch = 7200 baud
  3888.         0Dh = 9600 baud
  3889.         0Eh = 19200 baud
  3890. --------R-167D-------------------------------
  3891. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  3892.     AH = 7Dh
  3893.     AL = subfunction
  3894.         00h set terminal parameters
  3895.         01h get terminal parameters
  3896.         02h get configuration header and terminal parameters
  3897.     DS:CX -> terminal parameter block
  3898. --------R-167E-------------------------------
  3899. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  3900.     AH = 7Eh
  3901.     AL = subfunction
  3902.         01h port input status
  3903.         Return AX = 0 if no characer ready,
  3904.                AX = 1 if character ready
  3905.         02h port input character
  3906.         Return AL = received character
  3907.         03h port output character in CX
  3908.         11h hang up phone
  3909. --------R-167F-------------------------------
  3910. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  3911.     AH = 7Fh
  3912.     AL = subfunction
  3913.         00h enable remote keyboard only
  3914.         01h enable host keyboard only
  3915.         02h enable both keyboards
  3916.         08h display top 24 lines
  3917.         09h display bottom 24 lines
  3918.         10h Hayes modem
  3919.         11h other modem
  3920.         12h direct connect
  3921. --------U-1680-------------------------------
  3922. INT 16 - MAKEY.COM - INSTALLATION CHECK
  3923.     AH = 80h
  3924. Return: AX = 1954h if installed
  3925. Program: MAKEY is a utility by System Enhancement Associates
  3926. --------U-168765BX4321-----------------------
  3927. INT 16 - AT.COM version 8/26/87 - API
  3928.     AX = 8765h
  3929.     BX = 4321h
  3930.     CX = ??? or FFFFh
  3931.     if CX = FFFFh
  3932.         DX = number of event to remove or FFFFh
  3933. Return: ES:BX -> event record array (see #0406)
  3934. Program: AT.COM is a resident scheduler by Bill Frolik
  3935.  
  3936. Format of AT.COM event record:
  3937. Offset    Size    Description    (Table 0406)
  3938.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  3939.  01h    BYTE    day of date on which to trigger
  3940.  02h    BYTE    month of date on which to trigger
  3941.  03h    BYTE    trigger time, minute
  3942.  04h    BYTE    trigger time, hour
  3943.  05h    WORD    offset of command to be executed
  3944. ----------1692-------------------------------
  3945. INT 16 - ???
  3946.     AH = 92h
  3947. Return: AH <= 80h if ???
  3948. Note:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  3949. SeeAlso: AH=05h"PCjr",AH=A2h
  3950. --------U-1699-------------------------------
  3951. INT 16 - SCOUT v5.4 - GET ???
  3952.     AH = 99h
  3953. Return: AX = ABCDh
  3954.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  3955. Program: Scout is a memory-resident file manager by New-Ware
  3956. SeeAlso: AH=9Eh
  3957. --------U-169E-------------------------------
  3958. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  3959.     AH = 9Eh
  3960. Return: AX = ABCDh if installed
  3961. Program: Scout is a memory-resident file manager by New-Ware
  3962. SeeAlso: AH=99h
  3963. ----------16A2-------------------------------
  3964. INT 16 - ???
  3965.     AH = A2h
  3966. Return: AH <= 80h if ???
  3967. Note:    this function is this function is called by the DOS 5+ KEYB.COM
  3968. SeeAlso: AH=92h
  3969. --------V-16AA-------------------------------
  3970. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  3971.     AH = AAh
  3972.     Various registers set up by high level language.
  3973. Return: Graphics performed
  3974. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  3975.       Modula 2 and others from DataBiten in Sweden. The library is
  3976.       installed as a memory resident driver.
  3977. --------U-16AABBBXEEFF-----------------------
  3978. INT 16 U - JORJ v4.3 - INSTALLATION CHECK
  3979.     AX = AABBh
  3980.     BX = EEFFh
  3981. Return: AX = EEFFh if installed
  3982.     BX = AABBh if installed
  3983.         CL = hotkey name (default 6Ah 'j' for Alt-J)
  3984. Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
  3985.       Co.
  3986. Index:    hotkeys;JORJ
  3987. --------K-16AF20-----------------------------
  3988. INT 16 - K3PLUS v2.00+ - GET EXTENDED BUFFER STATE
  3989.     AX = AF20h
  3990. Return: AX = K3 version (same as returned in BX by AX=AF4Dh)
  3991.     ES:BX -> extended keyboard buffer start
  3992.     ES:DX -> extended keyboard buffer end
  3993.     ES:SI -> next keystroke
  3994.     ES:DI -> last keystroke in buffer
  3995.     CX = number of keystrokes in buffer
  3996. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  3997.       K3 extended German keyboard driver by Martin Gerdes published in c't
  3998.       magazine in 1988
  3999. Note:    this function is identical to AH=20h"K3"
  4000. SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h
  4001. --------K-16AF25-----------------------------
  4002. INT 16 - K3PLUS v2.00+ - COPY INTO EXTENDED BUFFER
  4003.     AX = AF25h
  4004.     CX = number of keystrokes to copy
  4005.     ES:SI -> buffer containing keystrokes
  4006. Return: CF clear if successful
  4007.     CF set on error (i.e. buffer full)
  4008.         CX = number of keystrokes NOT transferred
  4009.         ES:SI -> first keystroke not transferred
  4010. Note:    this function is identical to AH=25h"K3"
  4011. SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h
  4012. --------K-16AF4D-----------------------------
  4013. INT 16 - K3PLUS v2.00+ - GET VERSION INFORMATION
  4014.     AX = AF4Dh
  4015. Return: AL = 50h if installed
  4016.         BX = K3 version
  4017.         DX = API version
  4018.         ES:CX -> K3 structure (version-dependent) (see #2209)
  4019. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  4020.       K3 extended German keyboard driver by Martin Gerdes published in c't
  4021.       magazine in 1988
  4022. SeeAlso: AX=AF20h,AX=AF50h
  4023. Index:    installation check;K3PLUS
  4024.  
  4025. Format of internal K3 structure:
  4026. Offset    Size    Description    (Table 2209)
  4027.  00h  3 BYTEs    signature "K3$"
  4028.  03h    BYTE    length of structure, including this byte and signature
  4029.  04h    WORD    compiler switch option flags A (see #2211)
  4030.  06h    WORD    compiler switch option flags B (see #2212)
  4031.  08h    BYTE    internal flags A (see #2213)
  4032.  09h    BYTE    internal flags B (see #2214)
  4033.  0Ah    WORD    DOS version recorded at startup
  4034.  0Ch    WORD    "ActTypeSpeed"
  4035.  0Eh    WORD    last Keyboard-ID sent (41ABh translated, 83ABh native)
  4036.  10h    WORD    offset of K3TAB Special
  4037.  12h    WORD    offset of K3TAB German
  4038.  14h    WORD    offset of K3TAB Alt
  4039.  16h    WORD    offset of K3TAB AltGr
  4040.  18h    WORD    offset of K3TAB Ctrl
  4041.  1Ah    WORD    offset of K3TAB NPad
  4042.  1Ch    WORD    offset of K3TAB CtrlNPad
  4043.  1Eh    WORD    offset of K3TAB AltNPad
  4044.  20h    WORD    offset of ApoTbl or 0000h
  4045.  22h    WORD    offset of UmlautTbl or 0000h
  4046.  24h    WORD    offset of UmlautTblExp or 0000h
  4047.  26h    WORD    length of video mode table
  4048.  28h    WORD    offset of VidMdTbl or 0000h
  4049.  2Ah    BYTE    '$' end marker
  4050.  
  4051. Bitfields for K3 compiler switch option flags A:
  4052. Bit(s)    Description    (Table 2211)
  4053.  15    GuINT16Fct2
  4054.  14    Int15df
  4055.  13    GuAltNP
  4056.  12    SupAT
  4057.  11    GuINT16Fct3
  4058.  10    GuINT16Ret
  4059.  9-8    Layout (0-2, 3 reserved)
  4060.  7    ForceMF (force MF decode without read-ID)
  4061.  6    KXlate (translate keys)
  4062.  5    UmlautX (include umlaut translation capability)
  4063.  4    ApoX (translate apostrophe)
  4064.  3    DoINT16
  4065.  2    UseCC
  4066.  1-0    UseEB (0-2, 3 reserved)
  4067.  
  4068. Bitfields for K3 compiler switch option flags B:
  4069. Bit(s)    Description    (Table 2212)
  4070.  15-5    reserved (0)
  4071.  4    SendOut
  4072.  3    SupInt16fct5500
  4073.  2    GuINT15Fct4F
  4074.  1-0    UseBufferStart (0-2, 3 reserved) 
  4075.  
  4076. Bitfields for K3 internal flags A:
  4077. Bit(s)    Description    (Table 2213)
  4078.  7    DoingUmlautExp
  4079.  6    CallINT15fct4F
  4080.  5    Beep1 (requires SendOut set in option flags B)
  4081.  4    ATflag (set for AT, 386, PS/2 Models 50-80)
  4082.  3    XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30)
  4083.  2    KeyClick
  4084.  1    UmlautExp
  4085.  0    UmlautTrans
  4086.  
  4087. Bitfields for K3 internal flags B:
  4088. Bit(s)    Description    (Table 2214)
  4089.  7-1    reserved
  4090.  0    ApoPendingBeep
  4091. --------K-16AF50-----------------------------
  4092. INT 16 - K3PLUS v2.00+ - CHECK IF FUNCTION SUPPORTED
  4093.     AX = AF50h
  4094.     CH = function
  4095.         00h get function flags
  4096.         CL = 00h
  4097.         Return: CX = supported function flags (see #2210)
  4098.         nonzero reserved for extensions
  4099. SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h
  4100.  
  4101. Bitfields for K3PLUS supported function list:
  4102. Bit(s)    Description    (Table 2210)
  4103.  0    function 4Dh supported
  4104.  1    function 50h supported
  4105.  2-3    reserved (0)
  4106.  4    function 20h supported
  4107.  5    function 25h supported
  4108.  6    function 51h supported
  4109.  7    reserved (0)
  4110.  8    function 80h supported
  4111.  9    function 81h supported
  4112.  10    function 82h supported
  4113.  11-15    reserved (0)
  4114. --------K-16AF51-----------------------------
  4115. INT 16 - K3PLUS v2.00+ - SET OPTIONS
  4116.     AX = AF51h
  4117.     CX = switches
  4118. Return: AL = status
  4119.         00h done
  4120.         CX = previous switch settings
  4121.         01h switch not supported
  4122.         FFh other error
  4123. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h
  4124. --------K-16AF80-----------------------------
  4125. INT 16 - K3PLUS v2.00+ - GET ORIGINAL INT 09h VECTOR
  4126.     AX = AF80h
  4127. Return: AL = status
  4128.         00h not supported
  4129.         81h if successful
  4130.         ES:CX -> original INT 09 handler
  4131. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h
  4132. --------K-16AF81-----------------------------
  4133. INT 16 - K3PLUS v2.00+ - GET ORIGINAL INT 16h HANDLER
  4134.     AX = AF81h
  4135. Return: AL = status
  4136.         00h not supported
  4137.         82h if successful
  4138.         ES:CX -> original INT 16 handler
  4139. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h
  4140. --------K-16AF82-----------------------------
  4141. INT 16 - K3PLUS v2.00+ - GET ORIGINAL INT 10h HANDLER
  4142.     AX = AF82h
  4143. Return: AL = status
  4144.         00h not supported
  4145.         83h if successful
  4146.         ES:CX -> original INT 10 handler
  4147. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  4148.       K3 extended German keyboard driver by Martin Gerdes published in c't
  4149.       magazine in 1988
  4150. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h
  4151. --------m-16B0B1-----------------------------
  4152. INT 16 - VGARAM v1.00 - INSTALLATION CHECK
  4153.     AX = B0B1h
  4154.     ES:DI -> 6 byte signature "VGARAM"
  4155. Return: AX = B1B0h if installed,
  4156.     DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON
  4157. Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is
  4158.       not used in text modes available for DOS
  4159. --------K-16CA--BX736B-----------------------
  4160. INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
  4161.     AH = CAh
  4162.     BX = 736Bh ("sk")
  4163.     CX = 736Bh
  4164.     AL = function
  4165.         00h installation check
  4166.         Return: DX = words available in keyboard buffer
  4167.         01h place keystroke in buffer
  4168.         DX = keystroke (DH = scan code, DL = ASCII character)
  4169.         Return: DX = words available in keyboard buffer
  4170.                 FFFFh on error
  4171.         02h flush STACKEY and BIOS keyboard buffers
  4172. Return: AX = CAFFh if installed
  4173.         BX = segment of resident code
  4174.         CX = STACKEY version (CH = major, CL = minor)
  4175. Program: STACKEY is a shareware keyboard-input faking TSR
  4176. Index:    installation check;STACKEY
  4177. --------V-16CA00BX6570-----------------------
  4178. INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
  4179.     AX = CA00h
  4180.     BX = 6570h ("ep")
  4181.     CX = 6570h
  4182. Return: AX = CAFFh if installed
  4183.         BX = segment of resident code
  4184.         CX = ??? (0090h)
  4185. Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette settings
  4186.       permanent across mode switches
  4187. SeeAlso: AX=CA00h/BX=7670h
  4188. --------V-16CA00BX7670-----------------------
  4189. INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
  4190.     AX = CA00h
  4191.     BX = 7670h ("vp")
  4192.     CX = 7670h
  4193. Return: AX = CAFFh if installed
  4194.         BX = segment of resident code
  4195.         CX = ??? (0090h)
  4196. Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette settings
  4197.       permanent across mode switches
  4198. SeeAlso: AX=CA00h/BX=6570h
  4199. --------U-16D724CX00CB-----------------------
  4200. INT 16 U - APCAL v3.20 - GET ???
  4201.     AX = D724h
  4202.     CX = 00CBh
  4203. Return: AX = 0000h
  4204.     BX = 0000h
  4205.     DX:CX -> ??? or 0000h:0000h
  4206. Program: APCAL is an optionally-resident shareware appointment calendar by
  4207.       Gamma Software
  4208. SeeAlso: AX=3577h,AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
  4209. --------U-16D724CX00CC-----------------------
  4210. INT 16 U - APCAL v3.20 - GET ???
  4211.     AX = D724h
  4212.     CX = 00CCh
  4213. Return: AX = 0000h
  4214.     BX = 0000h
  4215.     DX:CX -> ??? (apparently an internal data area)
  4216. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
  4217. --------U-16D724CX00CD-----------------------
  4218. INT 16 U - APCAL v3.20 - GET ???
  4219.     AX = D724h
  4220.     CX = 00CDh
  4221. Return: AX = ??? (5345h seen)
  4222. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
  4223. ----------16DFDF-----------------------------
  4224. INT 16 U - Corel PowerSCSI - FDAUDIO.COM - INSTALLATION CHECK
  4225.     AX = DFDFh
  4226. Return: ES:DI -> ASCII signature "FDAUDIO/CD" followed by ASCII date, i.e.
  4227.       "06/18/93" if installed
  4228. --------t-16E0E0-----------------------------
  4229. INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
  4230.     AX = E0E0h
  4231. Return: AX = 1F1Fh if installed
  4232.         DWORD 0040h:00F0h -> last data block in TSR list (see #0408)
  4233. Note:    the returned TSR list provides support for communication among TSRs
  4234.       built with TurboPower's Turbo Professional and Object Professional
  4235.       libraries for Turbo Pascal
  4236. SeeAlso: AX=F0F0h
  4237. --------U-16ED--BHED-------------------------
  4238. INT 16 - BORLAND TURBO LIGHTNING - API
  4239.     AH = EDh
  4240.     BH = EDh
  4241.     BL = function
  4242.         00h installation check
  4243.         Return: AX = 5205h
  4244.             CH = major version
  4245.             CL = minor version
  4246.         01h identical to function 00h???
  4247.         02h get resident data segment
  4248.         Return: AX = data segment of resident portion
  4249.         03h get resident ???
  4250.         Return: AX = offset of some buffer in resident code seg
  4251.         04h redefine auxiliary dictionary
  4252.         DS:SI -> counted filename string
  4253.         Return: AL = result code
  4254.         05h select active environment
  4255.         AL = environment (00h to 0Ch)
  4256.         Return: AX = status
  4257.                 0000h if OK
  4258.                 0001h if out of range
  4259.         06h toggle AutoProof???
  4260.         AL = state (00h off, 01h on)
  4261.         07h ???
  4262.         08h ???
  4263.         AL = char???
  4264.         CX = ???
  4265.         DX = ???
  4266.         Return: AX = 0, 1 or 2
  4267.         09h ???
  4268.         0Ah ???
  4269.         CX = ???
  4270.         DX = ???
  4271.         Return: AX = ???
  4272.         0Bh check dictionary integrity???
  4273.         DS:SI -> counted dictionary filename string
  4274.         Return: AX = 0, 40h, 80h
  4275.         0Ch spellcheck string (disk dictionary, possibly RAM dict as well)
  4276.         DS:SI -> counted string to check
  4277.         Return: AH = 0
  4278.             AL = result code
  4279.                00h string found in dictionary
  4280.                20h string begins more than one word
  4281.                40h string not found
  4282.         0Dh set ???
  4283.         (sets an internal flag)
  4284.         0Eh spellcheck string (RAM dictionary only)
  4285.         DS:SI -> counted string to check
  4286.         Return: AH = 00h
  4287.             AL = result code
  4288.                 00h string found in dictionary
  4289.                 01h string not found
  4290.                 02h ???
  4291.         0Fh ???
  4292.         10h ???
  4293. Notes:    AX in general returns an error code from most functions.
  4294. Index:    installation check;Turbo Lightning
  4295. --------U-16EF-------------------------------
  4296. INT 16 - CALCULATOR - INSTALLATION CHECK
  4297.     AH = EFh
  4298. Return: AX = 0088h if installed
  4299. Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
  4300.       Marek Kosznik
  4301. --------b-16F0-------------------------------
  4302. INT 16 - Compaq 386 and newer - SET CPU SPEED
  4303.     AH = F0h
  4304.     AL = speed code (see #0407)
  4305.     if AL=09h,
  4306.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  4307. SeeAlso: AH=F1h,AH=F3h
  4308.  
  4309. (Table 0407)
  4310. Values for speed code:
  4311.  00h    equivalent to 6 MHz 80286 (COMMON)
  4312.  01h    equivalent to 8 MHz 80286 (FAST)
  4313.  02h    full 16 MHz (HIGH)
  4314.  03h    toggles between 8 MHz-equivalent and speed set by system board switch
  4315.       (AUTO or HIGH)
  4316.  08h    full 16 MHz except 8 MHz-equivalent during floppy disk access
  4317.  09h    specify speed directly
  4318. --------t-16F0F0-----------------------------
  4319. INT 16 - TurboPower TSRs - INSTALLATION CHECK
  4320.     AX = F0F0h
  4321. Return: AX = 0F0Fh if installed
  4322.         ES:DI -> last data block in TSR list
  4323. Note:    the returned TSR list provides support for communication among TSRs
  4324.       built with TurboPower's Turbo Professional and Object Professional
  4325.       libraries for Turbo Pascal
  4326. SeeAlso: AX=E0E0h
  4327.  
  4328. Format of TurboPower TSR data block:
  4329. Offset    Size    Description    (Table 0408)
  4330.  00h    DWORD    pointer to program tag (counted ASCII string)
  4331.  04h    WORD    interface version number (0400h)
  4332.  06h    DWORD    pointer to command entry point
  4333.  0Ah    DWORD    pointer to previous data block (0000h:0000h if none)
  4334.  0Eh    DWORD    pointer to next data block (0000h:0000h if none)
  4335. ---swappable TSRs only---
  4336.  12h    DWORD    pointer to swapping data
  4337.  16h    DWORD    pointer to user data
  4338.     more???
  4339. --------b-16F1-------------------------------
  4340. INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED
  4341.     AH = F1h
  4342. Return: AL = speed code (see #0407)
  4343.     if AL = 09h, CX = speed code
  4344. SeeAlso: AH=F0h,AH=F3h
  4345. --------b-16F2-------------------------------
  4346. INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE
  4347.     AH = F2h
  4348. Return: AL = type
  4349.         00h if 11-bit AT keyboard is in use
  4350.         01h if 9-bit PC keyboard is in use
  4351.     AH = 00h (04/08/93 system ROM)
  4352. --------b-16F3-------------------------------
  4353. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  4354.     AH = F3h
  4355.     AL = new limit
  4356.         00h limit is 6 Mhz
  4357.         01h limit is 8 Mhz/6 Mhz
  4358. SeeAlso: AH=F0h,AH=F1h
  4359. --------U-16F398-----------------------------
  4360. INT 16 U - NORTON GUIDES - INSTALLATION CHECK
  4361.     AX = F398h
  4362. Return: AX = 6A73h ("js")
  4363.     BH = scan code of current hot key
  4364.     BL = ASCII code of current hot key
  4365. Note:    NG.EXE was written by John Socha
  4366. --------b-16F400-----------------------------
  4367. INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS
  4368.     AX = F400h
  4369. Return: AH = E2h
  4370.     AL = status
  4371.         00h not present
  4372.         01h enabled
  4373.         02h disabled
  4374. SeeAlso: AX=F401h,AX=F402h
  4375. --------b-16F401-----------------------------
  4376. INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER
  4377.     AX = F401h
  4378. Return: AX = E201h
  4379. SeeAlso: AX=F400h,AX=F402h
  4380. --------b-16F402-----------------------------
  4381. INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER
  4382.     AX = F402h
  4383. Return: AX = E202h
  4384. SeeAlso: AX=F400h,AX=F401h
  4385. --------v-16FA00DX5945-----------------------
  4386. INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK
  4387.     AX = FA00h
  4388.     DX = 5945h
  4389. Return: CF clear
  4390.     DI = 4559h
  4391.     BX = BIOS hotkey scancode (default 2F00h) (VSAFE only)
  4392.         FFFFh if disabled
  4393. Note:    MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection
  4394. SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
  4395. --------v-16FA01DX5945-----------------------
  4396. INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
  4397.     AX = FA01h
  4398.     DX = 5945h
  4399. Return: CF clear if successful
  4400.     DI = 4559h
  4401. SeeAlso: AX=FA00h
  4402. --------v-16FA02DX5945-----------------------
  4403. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS
  4404.     AX = FA02h
  4405.     DX = 5945h
  4406.     BL = new parameter flags (see #0409)
  4407. Return: CF clear
  4408.     DI = 4559h
  4409.     CL = old value of parameter flags
  4410.  
  4411. Bitfields for VSAFE/VWATCH parameter flags:
  4412. Bit(s)    Description    (Table 0409)
  4413.  7    Protect executable files
  4414.  6    Protect FD boot sector
  4415.  5    Protect HD boot sector
  4416.  4    Boot sector viruses
  4417.  3    Check executable files
  4418.  2    General write protect
  4419.  1    Resident
  4420.  0    HD Low level format
  4421. --------v-16FA03DX5945-----------------------
  4422. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
  4423.     AX = FA03h
  4424.     DX = 5945h
  4425. Return: CF clear
  4426.     DI = 4559h
  4427.     AX = 0002h
  4428. --------v-16FA04DX5945-----------------------
  4429. INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG
  4430.     AX = FA04h
  4431.     DX = 5945h
  4432. Return: CF clear
  4433.     DI = 4559h
  4434.     BL = hotkey disable flag (nonzero if hotkey disabled)
  4435. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  4436. SeeAlso: AX=FA00h,AX=FA05h
  4437. --------v-16FA05DX5945-----------------------
  4438. INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG
  4439.     AX = FA05h
  4440.     DX = 5945h
  4441.     BL = new value of hotkey disable flag (nonzero to disable hotkey)
  4442. Return: CF clear
  4443.     DI = 4559h
  4444. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  4445. SeeAlso: AX=FA00h,AX=FA04h
  4446. --------v-16FA06DX5945-----------------------
  4447. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG
  4448.     AX = FA06h
  4449.     DX = 5945h
  4450. Return: CF clear
  4451.     DI = 4559h
  4452.     BL = test status
  4453.         00h don't monitor network drives (default for VWATCH v2.1)
  4454.         FFh monitor network drives (default for VSAFE v2.0)
  4455.     CL = ??? (only VSAFE 2.0)
  4456. SeeAlso: AX=FA07h
  4457. --------v-16FA07DX5945-----------------------
  4458. INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG
  4459.     AX = FA07h
  4460.     DX = 5945h
  4461.     BL = new state
  4462.         00h don't monitor
  4463.         01h monitor network drives
  4464. Return: CF clear
  4465.     DI = 4559h
  4466. Note:    VWATCH v2.1 (from PC Tools 9.0) returns CF set instead
  4467. SeeAlso: AX=FA00h,AX=FA06h
  4468. --------v-16FA08DX5945-----------------------
  4469. INT 16 U - PC Tools v9+ VWATCH v2.1 - ???
  4470.     AX = FA08h
  4471.     DX = 5945h
  4472. Return: CF clear
  4473.     DI = 4559h
  4474.     AX = ??? (0002h)
  4475.     BX = version (BH=major, BL=two-digit minor)
  4476. Note:    this function is not supported by the PC Tools 9.0 VSAFE v2.0
  4477. SeeAlso: AX=FA00h,AX=FA06h
  4478. --------U-16FE55-----------------------------
  4479. INT 16 U - PC Tools v8+ programs - GET ???
  4480.     AX = FE55h
  4481.     CX = segment of resident program or 0000h for last loaded
  4482.     DX = 0000h
  4483. Return: DX = resident code segment (unchanged if CX=0000h on entry)
  4484.     AX = ??? or 0000h
  4485. Note:    this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP,
  4486.       and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK
  4487.       seem to hook it merely to return the same AX as the CPTASK loaded
  4488.       prior to them returned
  4489. --------U-16FEA4-----------------------------
  4490. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ???
  4491.     AX = FEA4h
  4492. Return: nothing
  4493. Note:    this function is identical to AX=FFA4h, and is implemented by the same
  4494.       code in DESKTOP
  4495. SeeAlso: AX=FFA4h
  4496. --------U-16FEC6-----------------------------
  4497. INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API
  4498.     AX = FEC6h
  4499.     BL = new state (00h enabled, nonzero disabled)
  4500. Return: nothing
  4501. Desc:    specify whether CPSCHED API calls other than this one and AX=FE55h will
  4502.       be honored
  4503. --------U-16FED3-----------------------------
  4504. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  4505.     AX = FED3h
  4506.     DS:SI -> 92-byte data record for ???
  4507. Return: ???
  4508. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  4509.       code in DESKTOP
  4510. SeeAlso: AX=FFD3h
  4511. --------U-16FEDC-----------------------------
  4512. INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS
  4513.     AX = FEDCh
  4514. Return: AX,DX destroyed
  4515. Index:    uninstall;CPSCHED
  4516. --------U-16FEEFCX0000-----------------------
  4517. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
  4518.     AX = FEEFh
  4519.     CX = 0000h
  4520. Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
  4521.         BX = segment of resident portion
  4522.         DX = (CPSCHED v8.0) resident CS
  4523. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  4524.       code in DESKTOP
  4525. SeeAlso: AX=FFEFh
  4526. --------U-16FEF1-----------------------------
  4527. INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
  4528.     AX = FEF1h
  4529.     BX = ???
  4530. Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
  4531.     DX = 5555h
  4532. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  4533.       code in DESKTOP
  4534. SeeAlso: AX=FFF1h
  4535. --------K-16FF-------------------------------
  4536. INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
  4537.     AH = FFh
  4538.     DX = scan code
  4539. Return: AL = status
  4540.         00h success
  4541.         01h failure
  4542. Program: KBUF is a keyboard buffer expander by Mark Adler
  4543. SeeAlso: AH=05h
  4544. --------V-16FF-------------------------------
  4545. INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT
  4546.     AH = FFh
  4547. Return: AL = interrupt number to which BIOS keyboard handler has been relocated
  4548.     AL+1 = Zoom interrupt number
  4549.     BX = hotkey
  4550. Notes:    the default interrupts are 60h for keyboard and 61h for Zoom interrupt;
  4551.       the default hot key is F10
  4552.     not all vendors include the Tseng TSR which supports these functions
  4553. SeeAlso: INT 60"OPTIMA"
  4554. Index:    hotkeys;OPTIMA 1024 VGA
  4555. --------d-16FF70BX0000-----------------------
  4556. INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
  4557.     AX = FF70h
  4558.     BX = 0000h
  4559.     CX = 4C69h ('Li')
  4560.     DX = 6E6Bh ('nk')
  4561. Return: AX = 0000h
  4562.     CX = 4350h ('CP')
  4563.     DH = major version
  4564.     DL = minor version
  4565. Program: DRIVEMAP is a redirector which allows drives on computers connected
  4566.       over the parallel or serial ports to appear as local drives
  4567. SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h
  4568. --------d-16FF70BX0001-----------------------
  4569. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  4570.     AX = FF70h
  4571.     BX = 0001h
  4572.     DL = ???
  4573. Return: AX = ???
  4574.     DH = ???
  4575. SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h
  4576. --------d-16FF70BX0002-----------------------
  4577. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  4578.     AX = FF70h
  4579.     BX = 0002h
  4580.     CX = ???
  4581.     DX = ???
  4582. Return: AX = ??? or FFFEh/FFFFh on error
  4583.     DL = ???
  4584. BUG:    DRIVEMAP will branch to random locations for BX values other than
  4585.       those listed above for v8.0-9.0 because a) the incorrect register is
  4586.       range-tested, resulting in BX=0003h-5CD6h being accepted as valid
  4587.       function numbers, and b) the conditional which branches on invalid
  4588.       function numbers jumps to the following instruction, becoming a NOP
  4589. SeeAlso: INT 2F/AX=9203h"DRIVEMAP"
  4590. Index:    installation check;DRIVEMAP
  4591. --------T-16FF80BX0000-----------------------
  4592. INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
  4593.     AX = FF80h
  4594.     BX = 0000h
  4595.     CX = 0000h
  4596.     DX = 0000h
  4597. Return: CX = 5555h if installed
  4598. Program: CPTASK is a task switcher by Central Point Software
  4599. --------T-16FF80BX0001-----------------------
  4600. INT 16 U - PC Tools v8+ CPTASK - GET ???
  4601.     AX = FF80h
  4602.     BX = 0001h
  4603.     ???
  4604. Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0)
  4605.     BX = ??? (PSP segment of resident code???)
  4606. --------T-16FF80BX0002-----------------------
  4607. INT 16 U - PC Tools v8+ CPTASK - GET ???
  4608.     AX = FF80h
  4609.     BX = 0002h
  4610. Return: DX:SI -> ???
  4611. --------T-16FF80BX0003-----------------------
  4612. INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
  4613.     AX = FF80h
  4614.     BX = 0003h
  4615. Return: AX = flags (see #0410)
  4616. SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h
  4617.  
  4618. Bitfields for CPTASK flags:
  4619. Bit(s)    Description    (Table 0410)
  4620.  10    ???
  4621.  13    ???
  4622.  14    ???
  4623.  15    ???
  4624. --------T-16FF80BX0004-----------------------
  4625. INT 16 U - PC Tools v8+ CPTASK - SET ???
  4626.     AX = FF80h
  4627.     BX = 0004h
  4628.     CX = new value of ???
  4629. Return: ???
  4630. Note:    this function also sets bit 14 of the flags word returned by
  4631.       AX=FF80h/BX=0003h
  4632. --------T-16FF80BX0005-----------------------
  4633. INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
  4634.     AX = FF80h
  4635.     BX = 0005h
  4636. Return: AX = number of active tasks???
  4637. --------T-16FF80BX0006-----------------------
  4638. INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
  4639.     AX = FF80h
  4640.     BX = 0006h
  4641. Return: AX = old state (0000h clear, 0001h set)
  4642. Note:    the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h
  4643. --------T-16FF80BX0007-----------------------
  4644. INT 16 U - PC Tools v8+ CPTASK - ???
  4645.     AX = FF80h
  4646.     BX = 0007h
  4647.     ES:DI -> ???
  4648.     ???
  4649. Return: ???
  4650. --------T-16FF80BX0008-----------------------
  4651. INT 16 U - PC Tools v8+ CPTASK - ???
  4652.     AX = FF80h
  4653.     BX = 0008h
  4654.     ???
  4655. Return: ???
  4656. --------T-16FF80BX0009-----------------------
  4657. INT 16 U - PC Tools v8+ CPTASK - GET ???
  4658.     AX = FF80h
  4659.     BX = 0009h
  4660. Return: CL = ???
  4661.     CH = ??? (01h or 02h)
  4662. --------T-16FF80BX000A-----------------------
  4663. INT 16 U - PC Tools v9+ CPTASK - SET ???
  4664.     AX = FF80h
  4665.     BX = 000Ah
  4666.     DS:SI -> 128-byte buffer containing ???
  4667. --------T-16FF80BX000B-----------------------
  4668. INT 16 U - PC Tools v9+ CPTASK - SET ???
  4669.     AX = FF80h
  4670.     BX = 000Bh
  4671.     DX = index of ??? task (1-10)
  4672. --------T-16FF80BX000C-----------------------
  4673. INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
  4674.     AX = FF80h
  4675.     BX = 000Ch
  4676.     CX = new delay time in minutes
  4677. --------T-16FF80BX4350-----------------------
  4678. INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
  4679.     AX = FF80h
  4680.     BX = 4350h ('CP')
  4681.     CX = 5354h ('ST')
  4682. Return: never returns; terminates all tasks and exits to program originally
  4683.       calling CPTASK
  4684. --------U-16FF90-----------------------------
  4685. INT 16 U - PC Tools v8+ DESKTOP - ???
  4686.     AX = FF90h
  4687.     ???
  4688. Return: ???
  4689. Note:    available only when popped up
  4690. --------U-16FF91-----------------------------
  4691. INT 16 U - PC Tools v7+ DESKTOP - ???
  4692.     AX = FF91h
  4693.     ???
  4694. Return: AX = 0000h
  4695. Note:    calls AX=FFFDh after ???
  4696. SeeAlso: AX=FF92h,AX=FFFDh
  4697. --------U-16FF92-----------------------------
  4698. INT 16 U - PC Tools v7+ DESKTOP - ???
  4699.     AX = FF92h
  4700.     ???
  4701. Return: AX = 0000h
  4702. Note:    like AX=FF91h, but temporarily sets ??? to 3
  4703. SeeAlso: AX=FF91h,AX=FFFDh
  4704. --------U-16FF93-----------------------------
  4705. INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
  4706.     AX = FF93h
  4707. --------U-16FF94-----------------------------
  4708. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  4709.     AX = FF94h
  4710.     CX = ??? (default 0017h)
  4711. --------U-16FF95-----------------------------
  4712. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  4713.     AX = FF95h
  4714.     BX = ???
  4715. --------U-16FF96-----------------------------
  4716. INT 16 U - PC Tools v7+ DESKTOP - ???
  4717.     AX = FF96h
  4718.     CL = ???
  4719. Return: AX = ???
  4720. --------U-16FF97-----------------------------
  4721. INT 16 U - PC Tools v7+ DESKTOP - ???
  4722.     AX = FF97h
  4723.     DS:DX -> buffer for ??? (see #0411)
  4724. Return: ???
  4725.  
  4726. Format of PC Tools DESKTOP buffer:
  4727. Offset    Size    Description    (Table 0411)
  4728.  00h 48 BYTEs    ???
  4729.  30h 128 BYTEs    ???
  4730. --------U-16FF98-----------------------------
  4731. INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
  4732.     AX = FF98h
  4733.     DX = byte offset in file of overlay header (see #0412)
  4734. Return: BX = file handle for DESK.OVL file
  4735. Desc:    open the DESK.OVL file, seek to the specified offset, read in the
  4736.       overlay header, and seek to the offset specified by the header
  4737.  
  4738. Format of PC Tools DESKTOP overlay header:
  4739. Offset    Size    Description    (Table 0412)
  4740.  00h 12 BYTEs    NUL-padded ASCII overlay filename
  4741.  0Ch    DWORD    offset within DESK.OVL file of actual overlay
  4742. --------U-16FF99-----------------------------
  4743. INT 16 U - PC Tools v7+ DESKTOP - ???
  4744.     AX = FF99h
  4745.     ???
  4746. Return: ???
  4747. --------U-16FF9A-----------------------------
  4748. INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
  4749.     AX = FF9Ah
  4750. Return: ES:BX -> name of current color scheme
  4751. Note:    available even if not popped up
  4752. --------U-16FF9B-----------------------------
  4753. INT 16 U - PC Tools v7+ DESKTOP - UNUSED
  4754.     AX = FF9Bh
  4755. Return: ???
  4756. Note:    sounds triple-length beep
  4757. --------T-16FF9C-----------------------------
  4758. INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
  4759.     AX = FF9Ch
  4760.     BL = function
  4761.         00h set ??? pointer
  4762.         DS:SI -> ???
  4763.         01h clear pointer to 0000h:0000h
  4764. ----------16FF9D-----------------------------
  4765. INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
  4766.     AX = FF9Dh
  4767.     ES:BX -> ??? word
  4768. Return: ???
  4769. Note:    if ES is non-zero, the word pointed at by ES:BX determines whether the
  4770.       ??? flag is cleared (word = 0000h) or set (word is nonzero).    The
  4771.       flag is always cleared if ES=0000h.
  4772. --------U-16FF9E-----------------------------
  4773. INT 16 U - PC Tools v7+ DESKTOP - ???
  4774.     AX = FF9Eh
  4775.     DL = ???
  4776.         bit 7: ???
  4777.         bits 6-0: function number??? (00h,01h,other)
  4778.     ???
  4779. Return: ???
  4780. --------U-16FFA1-----------------------------
  4781. INT 16 U - PC Tools v7+ DESKTOP - ???
  4782.     AX = FFA1h
  4783.     ???
  4784. Return: ???
  4785. Note:    same as AX=FFA2h, except ??? set to FFh
  4786. SeeAlso: AX=FFA2h
  4787. --------U-16FFA2-----------------------------
  4788. INT 16 U - PC Tools v7+ DESKTOP - ???
  4789.     AX = FFA2h
  4790.     ???
  4791. Return: ???
  4792. Note:    calls AX=FFC7h (remove window) and AX=FFFDh
  4793. SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
  4794. --------y-16FFA3BX0000-----------------------
  4795. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
  4796.     AX = FFA3h
  4797.     BX = 0000h
  4798.     CX = 0000h
  4799. Return: AX = segment of resident code
  4800.     BX = 5555h
  4801.     CX = 5555h
  4802. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  4803. SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h,INT 2F/AX=6284h
  4804. --------y-16FFA3BX0001-----------------------
  4805. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  4806.     AX = FFA3h
  4807.     BX = 0001h
  4808.     CX = 0001h
  4809. Return: AX:BX -> ???
  4810.     CX = BX
  4811. --------y-16FFA3BX0002-----------------------
  4812. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  4813.     AX = FFA3h
  4814.     BX = 0002h
  4815.     CX = 0002h
  4816. Return: AX = ??? (0 or 1)
  4817.     CX = BX = AX
  4818. --------y-16FFA3BX0003-----------------------
  4819. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  4820.     AX = FFA3h
  4821.     BX = 0003h
  4822.     CX = 0003h
  4823. Return: AX = ??? (0 or 1)
  4824.     CX = BX = AX
  4825. --------y-16FFA3BX0004-----------------------
  4826. INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
  4827.     AX = FFA3h
  4828.     BX = 0004h
  4829.     CX = 0004h
  4830. SeeAlso: AX=FFA3h/BX=0005h
  4831. --------y-16FFA3BX0005-----------------------
  4832. INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
  4833.     AX = FFA3h
  4834.     BX = 0005h
  4835.     CX = 0005h
  4836. SeeAlso: AX=FFA3h/BX=0004h
  4837. --------y-16FFA3BX0006-----------------------
  4838. INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
  4839.     AX = FFA3h
  4840.     BX = 0006h
  4841.     CX = 0006h
  4842.     DX = current PSP segment as known to DOS??? or 0000h
  4843. ----------16FFA3BXFFA3-----------------------
  4844. INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
  4845.     AX = FFA3h
  4846.     BX = FFA3h
  4847.     CX = FFA3h
  4848. Return: BX = CX = 5555h if installed
  4849.         AX = resident code segment
  4850. Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk-
  4851.       access indicator on the screen; in v7 and v8, this function was
  4852.       provided by DATAMON
  4853. Note:    DSKLIGHT chains to the previous handler if BX or CX is not FFA3h
  4854. --------U-16FFA4-----------------------------
  4855. INT 16 U - PC Tools v7-8 DESKTOP - ???
  4856.     AX = FFA4h
  4857. Return: ???
  4858. Notes:    available even when not popped up
  4859.     sets unknown flag if ??? conditions met
  4860. SeeAlso: AX=FEA4h
  4861. --------c-16FFA5CX1111-----------------------
  4862. INT 16 - PC-Cache v6+ - INSTALLATION CHECK
  4863.     AX = FFA5h
  4864.     CX = 1111h
  4865. Return: CH = 00h if installed
  4866.         ES:DI -> internal data (see #0413)
  4867.         CL = cache state
  4868.         01h enabled
  4869.         02h disabled
  4870. SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
  4871.  
  4872. Format of PC-Cache internal data:
  4873. Offset    Size    Description    (Table 0413)
  4874. -1Ch 20 BYTEs    cached drive list, one byte per drive A: to T:
  4875.         each byte is either blank (20h) or drive letter (41h-54h)
  4876.  -8    BYTE    ???
  4877.  -7    WORD    number of physical transfers (scaled down to 0000h-7FFFh)
  4878.  -5    WORD    number of saved transfers (scaled down to 0000h-7FFFh)
  4879.  -3   3 BYTEs    ???
  4880. --------c-16FFA5CXAAAA-----------------------
  4881. INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
  4882.     AX = FFA5h
  4883.     CX = AAAAh
  4884. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  4885. SeeAlso: AX=FFA5h/CX=CCCCh
  4886. --------c-16FFA5CXCCCC-----------------------
  4887. INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
  4888.     AX = FFA5h
  4889.     CX = CCCCh
  4890. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  4891. Note:    delayed writes are automatically disabled on EXECing
  4892.       (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
  4893.       however, delayed writes are not automatically reenabled upon the
  4894.       program's termination in v6.
  4895. SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
  4896. --------c-16FFA5CXDDDD-----------------------
  4897. INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
  4898.     AX = FFA5h
  4899.     CX = DDDDh
  4900. SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
  4901. --------c-16FFA5CXEEEE-----------------------
  4902. INT 16 - PC-Cache v6+ - ENABLE CACHE
  4903.     AX = FFA5h
  4904.     CX = EEEEh
  4905. SeeAlso: AX=FFA5h/CX=DDDDh
  4906. --------c-16FFA5CXFFFF-----------------------
  4907. INT 16 - PC-Cache v6+ - FLUSH CACHE
  4908.     AX = FFA5h
  4909.     CX = FFFFh
  4910. SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
  4911. --------U-16FFA6-----------------------------
  4912. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  4913.     AX = FFA6h
  4914. Return: DS:SI -> ???
  4915. Note:    available only when popped up
  4916. --------U-16FFA7-----------------------------
  4917. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? PATH
  4918.     AX = FFA7h
  4919. Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
  4920. --------U-16FFA8-----------------------------
  4921. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  4922.     AX = FFA8h
  4923.     DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
  4924.     ???
  4925. Return: ???
  4926. Notes:    available only when popped up
  4927.     strings copied into internal buffer, among other actions
  4928. --------U-16FFA9-----------------------------
  4929. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET VERSION STRING
  4930.     AX = FFA9h
  4931. Return: DS:SI -> version string
  4932. --------U-16FFAA-----------------------------
  4933. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  4934.     AX = FFAAh
  4935.     ???
  4936. Return: ???
  4937. Note:    available only when popped up
  4938. --------U-16FFAB-----------------------------
  4939. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET EDITOR SETTINGS???
  4940.     AX = FFABh
  4941. Return: DS:SI -> editor setting strings???
  4942. --------U-16FFAC-----------------------------
  4943. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  4944.     AX = FFACh
  4945.     DL = ???
  4946. Note:    available only when popped up
  4947. --------U-16FFAD-----------------------------
  4948. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  4949.     AX = FFADh
  4950.     DL = ???
  4951. --------U-16FFAE-----------------------------
  4952. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  4953.     AX = FFAEh
  4954. Return: AL = ???
  4955. --------U-16FFAF-----------------------------
  4956. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  4957.     AX = FFAFh
  4958.     DL = ???
  4959. --------U-16FFB0-----------------------------
  4960. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  4961.     AX = FFB0h
  4962.     BL = ???
  4963. --------U-16FFB1-----------------------------
  4964. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  4965.     AX = FFB1h
  4966.     ???
  4967. Return: ???
  4968. --------U-16FFB2-----------------------------
  4969. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  4970.     AX = FFB2h
  4971. Return: DS:SI -> ???
  4972. --------U-16FFB3-----------------------------
  4973. INT 16 U - PC Tools v5.5-8.0 DESKTOP - ???
  4974.     AX = FFB3h
  4975.     ???
  4976. Return: ???
  4977. Note:    available only when popped up
  4978. --------U-16FFB4-----------------------------
  4979. INT 16 U - PC Tools v5.5-8.0 DESKTOP - SET ??? FLAG
  4980.     AX = FFB4h
  4981. Note:    available only when popped up
  4982. SeeAlso: AX=FFBBh
  4983. --------U-16FFB5-----------------------------
  4984. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET WINDOW PARAMETERS
  4985.     AX = FFB5h
  4986.     BX = window specifier (000Fh to 0019h) (see #0414)
  4987.     DX = 0000h get, nonzero = set
  4988.     ES:DI -> window parameter buffer (see #0415)
  4989. SeeAlso: AX=FFCBh
  4990.  
  4991. (Table 0414)
  4992. Values for PC Tools DESKTOP window specifier:
  4993.  000Fh    comm/FAX
  4994.  0014h    hotkey selection
  4995.  0015h    ASCII table
  4996.  0016h    system colors menu
  4997.  
  4998. Format of PC Tools DESKTOP window parameters:
  4999. Offset    Size    Description    (Table 0415)
  5000.  00h    BYTE    rows in window, not counting frame
  5001.  01h    BYTE    columns in window, not counting frame
  5002.  02h    BYTE    row number of top of window
  5003.  03h    BYTE    2*column number of left of window
  5004.  04h    BYTE    character attribute for ???
  5005.  05h    BYTE    character attribute for background/border
  5006.  06h    BYTE    character attribute for ???
  5007.  07h    DWORD    pointer to ??? on screen
  5008.  0Bh  4 BYTEs    ???
  5009.  0Fh    BYTE    nonzero if window may be resized
  5010. Note:    if running in monochrome mode, character attributes at offsets 04h to
  5011.       06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
  5012.       are changed to 07h on reading
  5013. --------U-16FFB6-----------------------------
  5014. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  5015.     AX = FFB6h
  5016. Return: AH = ???
  5017.     AL = ???
  5018. --------U-16FFB7-----------------------------
  5019. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET ???
  5020.     AX = FFB7h
  5021.     BX = direction
  5022.         0000h copy to buffer
  5023.         else  copy from buffer
  5024.     DS:SI -> 70-byte buffer with ???
  5025. Return: data copied
  5026. Note:    available only when popped up under v6.0+
  5027. --------U-16FFB8-----------------------------
  5028. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET/SET???
  5029.     AX = FFB8h
  5030.     BH = subfunction
  5031.         00h get
  5032.         Return: BL = old value of ???
  5033.             CL = old value of ??? (v6.0+)
  5034.             CH = old value of ??? (v6.0+)
  5035.         nonzero set
  5036.         BL = new value for ???
  5037.         CL = new value for ??? (v6.0+)
  5038.         CH = new value for ??? (v6.0+)
  5039.         DH = ???
  5040.         Return: AL = old value replaced by CL (v6.0+)
  5041.             AH = old value replaced by CH (v6.0+)
  5042. --------U-16FFB9-----------------------------
  5043. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5044.     AX = FFB9h
  5045.     ???
  5046. Return: AX = ???
  5047.     CX = ???
  5048.     DS:SI -> ???
  5049.     ES:DI -> ???
  5050. --------U-16FFBA-----------------------------
  5051. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5052.     AX = FFBAh
  5053.     ???
  5054. Return: AX = ???
  5055. Note:    available only when popped up
  5056. --------U-16FFBB-----------------------------
  5057. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLEAR ??? FLAG
  5058.     AX = FFBBh
  5059. Note:    available only when popped up
  5060. SeeAlso: AX=FFB4h
  5061. --------U-16FFBC-----------------------------
  5062. INT 16 U - PC Tools v5.1-8.0 DESKTOP - RESTORE ORIGINAL SCREEN???
  5063.     AX = FFBCh
  5064. --------U-16FFBD-----------------------------
  5065. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? DATABASE INDEXING MESSAGES
  5066.     AX = FFBDh
  5067.     ???
  5068. Return: ???
  5069. --------U-16FFBE-----------------------------
  5070. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5071.     AX = FFBEh
  5072.     ???
  5073. Return: ???
  5074. Note:    available only when popped up
  5075. --------U-16FFBF-----------------------------
  5076. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5077.     AX = FFBFh
  5078.     BX = DOS file handle to write on
  5079.     ???
  5080. Return: ???
  5081. Note:    available only when popped up
  5082. --------U-16FFC0-----------------------------
  5083. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5084.     AX = FFC0h
  5085.     ???
  5086. Return: AX = 0000h if successful
  5087.     AX = FFFFh on error
  5088. Note:    available only when popped up
  5089. --------U-16FFC1-----------------------------
  5090. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5091.     AX = FFC1h
  5092.     BL = ???
  5093.     ES:DI -> data structure (see #0416)
  5094.     ???
  5095. Return: AX = ???
  5096. Note:    available only when popped up
  5097. SeeAlso: AX=FFC2h,AX=FFC3h
  5098.  
  5099. Format of PC Tools DESKTOP data structure:
  5100. Offset    Size    Description    (Table 0416)
  5101.  00h    WORD    ???
  5102.  02h    WORD    ???
  5103.  04h    WORD    ???
  5104.  06h    WORD    ???
  5105.  08h    WORD    ???
  5106.  0Ah    BYTE    ???
  5107.  0Bh    BYTE    ??? (zero/nonzero)
  5108. ---v7.1---
  5109.  0Ch    WORD    ???
  5110.  0Eh    BYTE    ???
  5111.  0Fh    WORD    ???
  5112.  11h    WORD    ???
  5113.     ???
  5114. --------U-16FFC2-----------------------------
  5115. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5116.     AX = FFC2h
  5117.     BL = ???
  5118.     ES:DI -> data structure (see #0416)
  5119.     ???
  5120. Return: AH = ???
  5121.     CX = ???
  5122.     DH = ???
  5123.     DL = ???
  5124. Note:    available only when popped up
  5125. SeeAlso: AX=FFC1h,AX=FFC3h
  5126. --------U-16FFC3-----------------------------
  5127. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5128.     AX = FFC3h
  5129.     BL = ???
  5130.     ES:DI -> data structure (see #0416)
  5131.     ???
  5132. Return: AH = ???
  5133.     CX = ???
  5134.     DH = ???
  5135.     DL = ???
  5136. Note:    available only when popped up
  5137. SeeAlso: AX=FFC1h,AX=FFC2h
  5138. --------U-16FFC4-----------------------------
  5139. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  5140.     AX = FFC4h
  5141. Return: AL = ???
  5142.     BX = segment of scratch space???
  5143.     CX = segment of stored screen data (section covered by window???)
  5144.     DX = segment of window parameters for ???
  5145.     ES:BP -> ???
  5146. Note:    available only when popped up in versions prior to 6.0
  5147. --------U-16FFC5-----------------------------
  5148. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK WHETHER DESKTOP LOADED RESIDENT
  5149.     AX = FFC5h
  5150. Return: BL = Desktop state
  5151.         00h if nonresident
  5152.         nonzero if loaded resident
  5153. Note:    available only when popped up; should call AX=FFEFh first to ensure
  5154.       that DESKTOP is active
  5155. SeeAlso: AX=FFEFh,AX=FFF3h
  5156. --------U-16FFC6-----------------------------
  5157. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  5158.     AX = FFC6h
  5159.     BL = new value for ???
  5160. --------U-16FFC7-----------------------------
  5161. INT 16 U - PC Tools v5.1-8.0 DESKTOP - REMOVE WINDOW
  5162.     AX = FFC7h
  5163.     ???
  5164. Return: ???
  5165. --------U-16FFC8-----------------------------
  5166. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  5167.     AX = FFC8h
  5168. Return: DS:SI -> ???
  5169. Note:    valid only while popped up
  5170. --------U-16FFC9-----------------------------
  5171. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY DATA TO CLIPBOARD
  5172.     AX = FFC9h
  5173.     DS:SI -> characters to store in clipboard
  5174.     CX = size in bytes
  5175. Return: CF set on error
  5176. Notes:    available only when popped up
  5177.     while copying, bytes of 00h and 0Ah are skipped
  5178. --------U-16FFCA-----------------------------
  5179. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  5180.     AX = FFCAh
  5181.     DX = ???
  5182. Return: AX destroyed
  5183. Note:    available only when popped up
  5184. --------U-16FFCB-----------------------------
  5185. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SELECT WINDOW PARAMETERS???
  5186.     AX = FFCBh
  5187.     DX = window specifier???
  5188. Return: AX destroyed
  5189. Note:    available only when popped up
  5190. SeeAlso: AX=FFB5h
  5191. --------U-16FFCC-----------------------------
  5192. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY ASCIZ STRING CENTERED IN WINDOW
  5193.     AX = FFCCh
  5194.     DS:SI -> ASCIZ string
  5195. Return: AX = ???
  5196.     CX = ???
  5197.     ES:DI -> address past last character displayed (v5.1/5.5)
  5198.           -> ??? on menu bar (v6.0)
  5199. --------U-16FFCD-----------------------------
  5200. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5201.     AX = FFCDh
  5202.     DS:DX -> ???
  5203. Return: ???
  5204. Note:    available only when popped up
  5205. --------U-16FFCE-----------------------------
  5206. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? DELAYS
  5207.     AX = FFCEh
  5208.     CX = ???
  5209. Return: nothing???
  5210. --------U-16FFCF-----------------------------
  5211. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLOSE PRINTER/PRINT FILE
  5212.     AX = FFCFh
  5213. Note:    available only when popped up
  5214. --------U-16FFD0-----------------------------
  5215. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO PRINT???
  5216.     AX = FFD0h
  5217.     ???
  5218. Return: ???
  5219. Note:    available only when popped up
  5220. --------U-16FFD1-----------------------------
  5221. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY PRINT OPTIONS MENU
  5222.     AX = FFD1h
  5223. Return: BX = number of copies
  5224.     DX = destination
  5225.         00h cancel
  5226.         01h LPT1
  5227.         02h LPT2
  5228.         03h LPT3
  5229.         04h COM1
  5230.         05h COM2
  5231.         06h disk file
  5232. Note:    available only when popped up
  5233. --------U-16FFD2-----------------------------
  5234. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5235.     AX = FFD2h
  5236.     BX = ???
  5237. Return: BL = ???
  5238. Note:    available only when popped up
  5239. --------U-16FFD3-----------------------------
  5240. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5241.     AX = FFD3h
  5242.     DS:SI -> 92-byte data record for ???
  5243. Return: ???
  5244. SeeAlso: AX=FED3h
  5245. --------U-16FFD4BH3C-------------------------
  5246. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CREATE/OPEN/DELETE FILE
  5247.     AX = FFD4h
  5248.     BH = 3Ch create file (with no attributes)
  5249.          3Dh open file
  5250.          41h delete file
  5251.     BL = access mode
  5252.          00h read only
  5253.          01h write only
  5254.          02h read/write
  5255.     DS:SI -> ASCIZ filename
  5256. Return: BX = file handle
  5257.         0000h on error
  5258. Note:    operation is attempted in (in order) the directory from which the
  5259.       desktop was started/run???, the directory specified with the
  5260.       filename, X:\PCTOOLS\, and X:\
  5261. --------U-16FFD5-----------------------------
  5262. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5263.     AX = FFD5h
  5264.     ???
  5265. Return: ???
  5266. Note:    available only when popped up
  5267. --------U-16FFD6-----------------------------
  5268. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5269.     AX = FFD6h
  5270.     BX = ???
  5271.     CX = ???
  5272.     DX = offset in ???
  5273.     ???
  5274. Return: ???
  5275. Note:    available only when popped up
  5276. --------U-16FFD7-----------------------------
  5277. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5278.     AX = FFD7h
  5279.     ???
  5280. Return: BL = ???
  5281. Note:    available only when popped up
  5282. --------U-16FFD8-----------------------------
  5283. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SAFE CREATE FILE
  5284.     AX = FFD8h
  5285.     DS:BX -> ASCIZ filename
  5286. Return: BX = file handle
  5287.         0000h on error
  5288. Note:    pops up confirmation menu if file already exists
  5289.     only available when popped up???
  5290. --------U-16FFD9-----------------------------
  5291. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  5292.     AX = FFD9h
  5293. Return: AX = ???
  5294. Note:    available only when popped up
  5295. --------U-16FFDA-----------------------------
  5296. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET NAME OF LAST FILE OPENED
  5297.     AX = FFDAh
  5298.     DS:SI -> ??? (v5.1/5.5 only)
  5299. Return: DS:SI -> filename
  5300. --------U-16FFDB-----------------------------
  5301. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  5302.     AX = FFDBh
  5303.     BL = ???
  5304. Note:    available only when popped up
  5305. --------U-16FFDC-----------------------------
  5306. INT 16 U - PC Tools v5.1-8.0 DESKTOP - UNHOOK
  5307.     AX = FFDCh
  5308. Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
  5309.       original values
  5310. Index:    uninstall;PC Tools DESKTOP
  5311. --------U-16FFDDBX0000-----------------------
  5312. INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
  5313.     AX = FFDDh
  5314.     BX = 0000h
  5315. Return: CX = 5555h
  5316.     DX = 5555h if PCShell installed in resident mode
  5317. --------U-16FFDDBX0001-----------------------
  5318. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  5319.     AX = FFDDh
  5320.     BX = 0001h
  5321. Return: CF clear if request successful (PCShell will pop up)
  5322.     CF set on error
  5323. SeeAlso: AX=FFDDh/BX=0003h
  5324. --------U-16FFDDBX0002-----------------------
  5325. INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
  5326.     AX = FFDDh
  5327.     BX = 0002h
  5328. Return: AL =
  5329.         00h ???
  5330.         01h ???
  5331. Note:    PCShell v6.0+ displays the error message "Incorrect PCRUN version",
  5332.       awaits a keystroke, and aborts the current process
  5333. --------U-16FFDDBX0003-----------------------
  5334. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  5335.     AX = FFDDh
  5336.     BX = 0003h
  5337. SeeAlso: AX=FFDDh/BX=0001h
  5338. --------U-16FFDDBX0004-----------------------
  5339. INT 16 U - PC Tools v5.1+ PCShell API - GET ???
  5340.     AX = FFDDh
  5341.     BX = 0004h
  5342. Return: CF clear if successful
  5343.         DS:SI -> ???
  5344. --------U-16FFDDBX0005-----------------------
  5345. INT 16 U - PC Tools v5.1+ PCShell API - ???
  5346.     AX = FFDDh
  5347.     BX = 0005h
  5348.     ???
  5349. Return: ???
  5350. Note:    resets various variables if certain conditions are met
  5351. --------U-16FFDDBX0006-----------------------
  5352. INT 16 U - PC Tools v5.1+ PCShell API - ???
  5353.     AX = FFDDh
  5354.     BX = 0006h
  5355.     ???
  5356. Return: ???
  5357. Note:    resets various variables if certain conditions are met
  5358. --------U-16FFDDBX0007-----------------------
  5359. INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
  5360.     AX = FFDDh
  5361.     BX = 0007h
  5362. Return: CF clear if successful
  5363. SeeAlso: AX=FFDDh/BX=0008h
  5364. --------U-16FFDDBX0008-----------------------
  5365. INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
  5366.     AX = FFDDh
  5367.     BX = 0008h
  5368. Return: CF undefined
  5369. SeeAlso: AX=FFDDh/BX=0007h
  5370. --------U-16FFDDBX0009-----------------------
  5371. INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
  5372.     AX = FFDDh
  5373.     BX = 0009h
  5374. Return: CF clear if successful
  5375.         DS:SI -> list of pointers (see #0417)
  5376.  
  5377. Format of PC Tools PCShell returned pointer list:
  5378. Offset    Size    Description    (Table 0417)
  5379.  00h    WORD    offset of WORD containing ???
  5380.  02h    WORD    offset of name of program to execute
  5381.  04h    WORD    offset of 80-byte buffer for ???
  5382.  06h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  5383.  08h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  5384. --------U-16FFDDBX000A-----------------------
  5385. INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
  5386.     AX = FFDDh
  5387.     BX = 000Ah
  5388. Return: CX = 5555h if running
  5389.     DX = 5555h
  5390. Note:    also sets a flag
  5391. --------U-16FFDDBX000B-----------------------
  5392. INT 16 U - PC Tools v6.0+ PCRUN API - ???
  5393.     AX = FFDDh
  5394.     BX = 000Bh
  5395.     ???
  5396. Return: CX = 5555h if PCRUN active
  5397.     DX = 5555h
  5398. Note:    also clears flag set by AX=FFDDh/BX=000Ah
  5399. --------U-16FFDE-----------------------------
  5400. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY POPUP MENU
  5401.     AX = FFDEh
  5402.     DS:DX -> menu description (must be on a paragraph boundary)
  5403. Return: AX = ???
  5404.         AL seems to be the number of the selected button
  5405. Note:    available only when popped up
  5406. SeeAlso: AX=FFEEh
  5407. --------U-16FFDF-----------------------------
  5408. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5409.     AX = FFDFh
  5410.     ???
  5411. Return: ???
  5412. --------U-16FFE0-----------------------------
  5413. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5414.     AX = FFE0h
  5415.     CX = ???
  5416.     DX = ???
  5417. Note:    available only when popped up
  5418. --------U-16FFE1-----------------------------
  5419. INT 16 U - PC Tools v5.1-8.0 DESKTOP - BEEP
  5420.     AX = FFE1h
  5421. --------U-16FFE2-----------------------------
  5422. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5423.     AX = FFE2h
  5424.     DX = ???
  5425. Return: ???
  5426. Note:    available only when popped up
  5427. --------U-16FFE3-----------------------------
  5428. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PRINT CHARACTER
  5429.     AX = FFE3h
  5430.     BL = character to print to currently open printer or print file
  5431. Return: CF set on error
  5432. Note:    available only when popped up
  5433. SeeAlso: INT 17/AH=00h
  5434. --------U-16FFE4-----------------------------
  5435. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5436.     AX = FFE4h
  5437.     DX = segment of ???
  5438. Return: ???
  5439. Note:    available only when popped up
  5440. --------U-16FFE5-----------------------------
  5441. INT 16 U - PC Tools v5.1-8.0 DESKTOP - POP UP FILE SELECTION MENU
  5442.     AX = FFE5h
  5443.     DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
  5444.     DX = segment of window parameters???
  5445. Return: AX = DOS file handle for file
  5446.         DS:DX -> filename???
  5447.         FFFFh if function cancelled by user
  5448. Note:    available only when popped up
  5449. SeeAlso: AX=FFDAh
  5450. --------U-16FFE6-----------------------------
  5451. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK FOR AND GET KEYSTROKE
  5452.     AX = FFE6h
  5453. Return: AX = 0000h if no key available
  5454.          else  BIOS keycode
  5455. Notes:    available only when popped up
  5456.     invokes INT 28 idle interrupt before checking for key
  5457. --------U-16FFE7-----------------------------
  5458. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5459.     AX = FFE7h
  5460.     BX = segment of ???
  5461. Return: ???
  5462. Note:    available only when popped up
  5463. --------U-16FFE8-----------------------------
  5464. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY NUMBER
  5465.     AX = FFE8h
  5466.     CX = number
  5467.     DH = attribute
  5468.     DS:SI -> destination for ASCII number
  5469. Return: DS:SI buffer filled in with alternating characters and attributes
  5470. --------U-16FFE9-----------------------------
  5471. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET FILE LIST???
  5472.     AX = FFE9h
  5473. Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
  5474. Note:    available only when popped up
  5475. --------U-16FFEA-----------------------------
  5476. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY COUNTED STRING
  5477.     AX = FFEAh
  5478.     DS:SI -> counted string (count byte followed by string)
  5479. Return: ???
  5480. Note:    available only when popped up
  5481. --------U-16FFEB-----------------------------
  5482. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5483.     AX = FFEBh
  5484.     ???
  5485. Return: ???
  5486. --------U-16FFEC-----------------------------
  5487. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET KEY
  5488.     AX = FFECh
  5489.     DS:SI -> FAR routine to ???
  5490.     BX = ???
  5491.     ???
  5492. Return: AX = keystroke
  5493.         FFFFh if F10 pressed to go to menu
  5494. Notes:    available only when popped up
  5495.     invokes INT 28 while waiting for keystroke
  5496.     F10 is hotkey to Desktop menu
  5497. Index:    hotkeys;PC Tools DESKTOP
  5498. --------U-16FFED-----------------------------
  5499. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  5500.     AX = FFEDh
  5501. Return: AX = ???
  5502. Note:    available only when popped up
  5503. --------U-16FFEE-----------------------------
  5504. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE PULLDOWN MENUS
  5505.     AX = FFEEh
  5506.     DS:SI -> pulldown menu system description (see #0418)
  5507. Return: AX destroyed
  5508. Notes:    available only when popped up
  5509.     if the accessory does not need any menu items of its own, it should
  5510.       call AX=FFFAh instead
  5511. SeeAlso: AX=FFF7h,AX=FFFAh
  5512.  
  5513. Format of PC Tools DESKTOP pulldown menu system description:
  5514. Offset    Size    Description    (Table 0418)
  5515.  00h    WORD    offset of menu bar contents (counted string)
  5516.  02h    WORD    number of items on menu bar
  5517.  04h 10 BYTEs    scan codes for hotkeying to each of up to ten menu items
  5518.  0Eh 10 BYTEs    which character to highlight in each menu item (01h=first)
  5519.  18h    WORD    offset of first menu definition (see #0419)
  5520.  1Ah    WORD    offset of second menu definition
  5521.     ...
  5522.  
  5523. Format of PC Tools DESKTOP menu definition:
  5524. Offset    Size    Description    (Table 0419)
  5525.  00h    WORD    offset of menu contents (see #0420)
  5526.  02h    WORD    number of entries in menu
  5527.  04h    for each entry:
  5528.         Offset    Size    Description
  5529.          00h    BYTE    scancode of Alt-key to invoke entry
  5530.          01h    BYTE    character to highlight (01h=first, etc)
  5531.          02h    WORD    offset of FAR routine to handle selection
  5532.  
  5533. Format of PC Tools DESKTOP menu contents:
  5534. Offset    Size    Description    (Table 0420)
  5535.  00h    BYTE    number of lines in menu
  5536.  01h    BYTE    width of menu
  5537.  02h  N BYTEs    counted strings, one for each line in menu
  5538. --------U-16FFEFCX0000-----------------------
  5539. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INSTALLATION CHECK
  5540.     AX = FFEFh
  5541.     CX = 0000h
  5542. Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
  5543.         BX = segment of resident portion
  5544.         AX = ??? (v5.1/5.5 only)
  5545. SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
  5546. --------U-16FFF0-----------------------------
  5547. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  5548.     AX = FFF0h
  5549.     DX = ???
  5550. Return: AX destroyed
  5551. Note:    available only when popped up
  5552. --------U-16FFF1BX0000-----------------------
  5553. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ALTERNATE INSTALLATION CHECK
  5554.     AX = FFF1h
  5555.     BX = 0000h  leave ??? flag as is
  5556.         nonzero set ??? flag
  5557. Return: CX = 5555h if installed
  5558.     DX = 5555h
  5559. --------U-16FFF2-----------------------------
  5560. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY HELP LINE
  5561.     AX = FFF2h
  5562.     DS:SI -> ASCIZ function key label string (each label preceded by '[')
  5563.         or help text
  5564. Return: AX destroyed
  5565. Notes:    available only when popped up
  5566.     if the specified string does not start with '[', it is displayed
  5567.       centered on the bottom line, else the function key labels are shown
  5568. --------U-16FFF3-----------------------------
  5569. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO UNLOAD RESIDENT DESKTOP
  5570.     AX = FFF3h
  5571. Note:    releases any EMS being used; restores video mode, page, and cursor
  5572.       shape; and restores interrupt vectors
  5573. SeeAlso: AX=FFC5h,AX=FFEFh
  5574. Index:    uninstall;PC Tools DESKTOP
  5575. --------U-16FFF4-----------------------------
  5576. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  5577.     AX = FFF4h
  5578.     ???
  5579. Return: ???
  5580. Note:    available only when popped up
  5581. SeeAlso: AX=FFF6h
  5582. --------U-16FFF5-----------------------------
  5583. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET SCREEN ATTRIBUTE ARRAY
  5584.     AX = FFF5h
  5585. Return: ES:BX -> screen attributes data structure (see #0421)
  5586.     AL = ??? (v6.0+)
  5587.  
  5588. Format of PC Tools DESKTOP attribute data structure:
  5589. Offset    Size    Description    (Table 0421)
  5590.  -1    BYTE    attribute for desktop background
  5591.  00h    BYTE    attribute for normal characters on desktop menu
  5592.  01h    BYTE    attribute for highlighted characters on desktop menu
  5593.  02h  5 BYTEs    ???
  5594.  07h    BYTE    attribute for dialog boxes
  5595.  08h 15 BYTEs    ???
  5596.  17h    BYTE    attribute for message boxes
  5597. --------U-16FFF6-----------------------------
  5598. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INVOKE NOTEPAD EDITOR
  5599.     AX = FFF6h
  5600.     DS = segment of editor buffer structure (see #0422)
  5601.     BX = ???
  5602.     DX = segment of window parameters structure (see #0415)
  5603. Return: ???
  5604. Note:    available only when popped up
  5605. SeeAlso: AX=FFF4h
  5606.  
  5607. Format of PC Tools DESKTOP editor buffer structure:
  5608. Offset    Size    Description    (Table 0422)
  5609.  00h    WORD    offset of current cursor position in buffer segment
  5610.  02h  2 BYTEs    ???
  5611.  04h    WORD    offset of beginning of file data in buffer segment
  5612.  06h 10 BYTEs    ???
  5613.  10h  N BYTEs    ASCIZ name of file being edited
  5614. --------U-16FFF7-----------------------------
  5615. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS MENU BAR ENTRY???
  5616.     AX = FFF7h
  5617.     DS:SI -> ???
  5618.     ???
  5619. Return: ???
  5620. Notes:    available only when popped up
  5621.     performs input processing on the menu bar set up with AX=FFEEh
  5622. SeeAlso: AX=FFEEh,AX=FFFBh
  5623. --------U-16FFF8-----------------------------
  5624. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DRAW EMPTY WINDOW
  5625.     AX = FFF8h
  5626.     DS:0000h -> window parameters structure (see #0415)
  5627.     DS:BX -> DWORD to store address of ??? on screen
  5628. Return: ???
  5629. --------U-16FFF9-----------------------------
  5630. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE SCREEN REFRESH ROUTINE
  5631.     AX = FFF9h
  5632.     ES:BX -> FAR routine to redisplay the utility's window
  5633. Note:    available only when popped up
  5634. --------U-16FFFA-----------------------------
  5635. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE STANDARD PULLDOWN MENUS
  5636.     AX = FFFAh
  5637. Notes:    available only when popped up
  5638.     adds the "Window" option to the "Desktop" option which is the only one
  5639.       available when no accessories are active.  Unlike AX=FFEEh, no
  5640.       additional menu items are added between "Desktop" and "Window"
  5641. SeeAlso: AX=FFEEh,AX=FFFBh
  5642. --------U-16FFFB-----------------------------
  5643. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS STANDARD MENU BAR
  5644.     AX = FFFBh
  5645. Return: ???
  5646. Notes:    available only when popped up
  5647.     performs input processing on the standard menu bar set up with AX=FFFAh
  5648. SeeAlso: AX=FFF7h
  5649. --------U-16FFFC-----------------------------
  5650. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET HOTKEYS AND KEYBOARD VECTOR
  5651.     AX = FFFCh
  5652. Return: ES:BX -> hotkey table (see #0423)
  5653.     DS:DX = original INT 09 vector
  5654.  
  5655. Format of PC Tools DESKTOP hotkey table:
  5656. Offset    Size    Description    (Table 0423)
  5657.  00h  2 BYTEs    scancode/shift state for desktop hotkey
  5658.  02h  2 BYTEs    scancode/shift state for clipboard paste key
  5659.  04h  2 BYTEs    scancode/shift state for clipboard copy key
  5660.  06h  2 BYTEs    scancode/shift state for screen autodial key
  5661. --------U-16FFFD-----------------------------
  5662. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY ???
  5663.     AX = FFFDh
  5664. Return: AX destroyed
  5665. Note:    copies 4000 bytes from ??? to ??? under certain circumstances
  5666. SeeAlso: AX=FF91h,AX=FF92h
  5667. --------M-16FFFE-----------------------------
  5668. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SHOW MOUSE CURSOR
  5669.     AX = FFFEh
  5670. SeeAlso: AX=FFFFh,INT 33/AX=0001h
  5671. --------M-16FFFF-----------------------------
  5672. INT 16 U - PC Tools v5.1-8.0 DESKTOP - HIDE MOUSE CURSOR
  5673.     AX = FFFFh
  5674. SeeAlso: AX=FFFEh,INT 33/AX=0002h
  5675. --------P-17----DX0ABC-----------------------
  5676. INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
  5677.     DX = 0ABCh
  5678. Return: AX = AAAAh
  5679.     DX = BAAAh
  5680.     ES = code segment of resident portion
  5681. --------P-17----DX0B90-----------------------
  5682. INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
  5683.     DX = 0B90h
  5684. Return: DX = ABBBh
  5685.     ES = code segment of resident portion
  5686. --------P-17----DX0B91-----------------------
  5687. INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
  5688.     DX = 0B91h
  5689. Return: DX = ABCBh
  5690.     ES = code segment of resident portion
  5691. --------P-17----DX0F5F-----------------------
  5692. INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
  5693.     DX = 0F5Fh
  5694. Return: AX = AAAAh
  5695.     DX = F555h
  5696.     ES = code segment of resident portion
  5697. --------B-1700-------------------------------
  5698. INT 17 - PRINTER - WRITE CHARACTER
  5699.     AH = 00h
  5700.     AL = character to write
  5701.     DX = printer number (00h-02h)
  5702. Return: AH = printer status (see #0424)
  5703. SeeAlso: AH=02h,AH=84h"AX",AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
  5704.  
  5705. Bitfields for printer status:
  5706. Bit(s)    Description    (Table 0424)
  5707.  7    not busy
  5708.  6    acknowledge
  5709.  5    out of paper
  5710.  4    selected
  5711.  3    I/O error
  5712.  2-1    unused
  5713.  0    timeout
  5714. --------B-1701-------------------------------
  5715. INT 17 - PRINTER - INITIALIZE PORT
  5716.     AH = 01h
  5717.     DX = printer number (00h-02h)
  5718. Return: AH = printer status (see #0424)
  5719. Note:    some printers report that they are ready immediately after
  5720.       initialization when they actually are not; a more reliable result may
  5721.       be obtained by calling AH=02h after a brief delay
  5722. SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC"
  5723. --------B-1702-------------------------------
  5724. INT 17 - PRINTER - GET STATUS
  5725.     AH = 02h
  5726.     DX = printer number (00h-02h)
  5727. Return: AH = printer status (see #0424)
  5728. Note:    PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h
  5729. SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC"
  5730. --------P-1702--DX0000-----------------------
  5731. INT 17 - INSET - INSTALLATION CHECK
  5732.     AH = 02h
  5733.     DX = 0000h
  5734.     CX = 07C3h (1987d)
  5735. Return: CX = 07C2h (1986d) if installed
  5736. Program: INSET is a text/graphics integration program
  5737. --------b-170200BX5050-----------------------
  5738. INT 17 - Advanced Parallel Port BIOS - INSTALLATION CHECK
  5739.     AX = 0200h
  5740.     BX = 5050h ('PP')
  5741.     CH = 45h   ('E')
  5742.     DX = printer port number (00h-02h)
  5743. Return: AH = 00h      \
  5744.     AL = 45h       If Advanced BIOS Installed
  5745.     CX = 5050h    /
  5746.     DX:BX -> far entry point to Advanced BIOS
  5747. Program: The Advanced Parallel Port BIOS provides support for parallel
  5748.       port peripherals using the enhanced modes of the IEEE 1284.
  5749. --------P-1703-------------------------------
  5750. INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS
  5751.     AH = 03h
  5752. Return: BX = ???
  5753.     CX = ???
  5754. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  5755.       Vertisoft Systems, Inc.
  5756. SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h
  5757. --------c-1703-------------------------------
  5758. INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING
  5759.     AH = 03h
  5760.     DX = printer port number
  5761.     CX = number of characters to print
  5762.     DS:SI -> string
  5763. Return: AH = printer status (see #0424)
  5764.     CX = number of characters actually printed
  5765. Desc:    send an entire string of chars to the print spooler with a single call
  5766. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  5767.       operating system by The Software Link, Inc.
  5768. SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS"
  5769. --------P-1704-------------------------------
  5770. INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT
  5771.     AH = 04h
  5772. Note:    has no effect unless ELTSR is deactivated (see AX=0503h)
  5773. SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h
  5774. --------P-170500-----------------------------
  5775. INT 17 U - Emulaser ELTSR - ???
  5776.     AX = 0500h
  5777.     ???
  5778. Return: AX = unload status (0001h safe to unload, 0002h not safe)
  5779.     BX = ???
  5780.     CX = PSP segment of ELTSR
  5781.     DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing)
  5782.     SI = ???
  5783.     DI = ???
  5784. SeeAlso: AH=04h,INT 1A/AH=E5h
  5785. --------P-170501-----------------------------
  5786. INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS
  5787.     AX = 0501h
  5788. Return: (see AX=0500h)
  5789. Note:    restores interrupt vectors without checking whether they have been
  5790.       hooked by later programs; should only be called if ELTSR reports
  5791.       that it is safe to unload
  5792. SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h
  5793. Index:    uninstall;Emulaser ELTSR
  5794. --------P-170502-----------------------------
  5795. INT 17 U - Emulaser ELTSR - SET ???
  5796.     AX = 0502h
  5797.     BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3)
  5798.     CL = ???
  5799.     DL = ???
  5800. Return: (see AX=0500h)
  5801. SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h
  5802. --------P-170503-----------------------------
  5803. INT 17 U - Emulaser ELTSR - DEACTIVATE???
  5804.     AX = 0503h
  5805. Return: (see AX=0500h)
  5806. SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h
  5807. --------P-1706-------------------------------
  5808. INT 17 U - Emulaser ELTSR - ???
  5809.     AH = 06h
  5810.     ???
  5811. Return: ???
  5812. SeeAlso: AH=05h,INT 1A/AH=E5h
  5813. --------P-1707-------------------------------
  5814. INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE
  5815.     AH = 07h
  5816.     ES:DX -> ASCIZ filename to be opened
  5817. Return: ???
  5818. Note:    new output will be appended to the specified file
  5819. SeeAlso: AH=08h,INT 1A/AH=E5h
  5820. --------P-1708-------------------------------
  5821. INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE
  5822.     AH = 08h
  5823.     ???
  5824. Return: ???
  5825. Desc:    close the file previously opened by function 07h
  5826. SeeAlso: AH=07h,INT 1A/AH=E5h
  5827. --------P-1709-------------------------------
  5828. INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE???
  5829.     AH = 09h
  5830.     BX = ???
  5831.     CX = ???
  5832.     DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  5833. Return: AX = status
  5834.         00h successful
  5835.         FFh failed
  5836. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  5837.       Vertisoft Systems, Inc.
  5838. Note:    this function calls through to INT 1A/AX=E401h, and thus requires
  5839.       that either ELSPL or Disk Spool II be installed
  5840. SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h
  5841. --------P-170A-------------------------------
  5842. INT 17 U - Emulaser ELTSR - SET ??? FILENAME
  5843.     AH = 0Ah
  5844.     ES:BX -> ??? buffer
  5845.     CX = length of ??? buffer
  5846. Return: ???
  5847. Note:    copies the specified name into the buffer passed to ELSPL as the
  5848.       filename by AH=09h
  5849. SeeAlso: AH=09h,INT 1A/AH=E5h
  5850. --------P-170B-------------------------------
  5851. INT 17 U - Emulaser ELTSR - GET ???
  5852.     AH = 0Bh
  5853. Return: AX:BX -> ???
  5854. SeeAlso: AH=0Ah,INT 1A/AH=E5h
  5855. --------P-170C-------------------------------
  5856. INT 17 U - Emulaser ELTSR - SET ??? FLAG
  5857.     AH = 0Ch
  5858.     ???
  5859. Return: ???
  5860. SeeAlso: AH=0Bh,INT 1A/AH=E5h
  5861. --------P-170D-------------------------------
  5862. INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE
  5863.     AH = 0Dh
  5864. Return: AX = state (0000h off, 0010h on)
  5865. Desc:    determine the actual state of ScrlLk even when Emulaser is controlling
  5866.       the ScrlLk light as its activity indicator
  5867. SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h
  5868. --------P-170E-------------------------------
  5869. INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING
  5870.     AH = 0Eh
  5871. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  5872.       Vertisoft Systems, Inc.
  5873. Note:    this function is called by ELTSR on every INT 08 to allow data to be
  5874.       processed in the background, but may also be called by applications
  5875.       to give Emulaser additional CPU time
  5876. SeeAlso: AH=0Dh,INT 1A/AH=E5h
  5877. --------P-172000-----------------------------
  5878. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK
  5879.     AX = 2000h
  5880.     BL = printer number???
  5881. Return:    AX = status (see #0425)
  5882.     BX = driver version number (BH=major,BL=minor)
  5883.     CH = ??? (00h)
  5884.     CL = ???
  5885.     DX = ??? (0100h)
  5886. Note:    also enables the remaining printer driver functions (2001h-2007h)
  5887. SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h
  5888.  
  5889. (Table 0425)
  5890. Values for PC Paint function status:
  5891.  0000h    successful
  5892.  0001h    invalid printer???
  5893.  0002h    ???
  5894.  0003h    invalid subfunction
  5895.  0005h    driver disabled, must call function 00h first
  5896.  0009h    unknown printer error
  5897.  000Bh    printer not selected
  5898.  000Ch    printer out of paper
  5899.  000Eh    error while writing to serial printer
  5900.  000Fh    ???
  5901.  0010h    invalid function number
  5902.  0011h    value out of range
  5903. --------P-172001-----------------------------
  5904. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG
  5905.     AX = 2001h
  5906.     BL = printer number???
  5907. Return: AX = status (see #0425)
  5908. --------P-172002-----------------------------
  5909. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION
  5910.     AX = 2002h
  5911.     BL = printer number???
  5912.     CL = desired information
  5913.         00h printer type
  5914.         Return: ES:DI -> ASCIZ printer name
  5915.         01h paper size
  5916.         DX = size index
  5917.         Return: ES:DI -> ASCIZ paper size description
  5918.         02h ???
  5919.         Return: BX = ???
  5920.         03h printer information???
  5921.         DX = ???
  5922.         ES:BX -> buffer for ??? (min 134 bytes)
  5923. Return: AX = status (see #0425)
  5924. SeeAlso: AX=2000h,AX=2004h
  5925. --------P-172003-----------------------------
  5926. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ???
  5927.     AX = 2003h
  5928.     ES:BX -> ???
  5929. Return: AX = status (see #0425)
  5930. SeeAlso: AX=2000h,AX=2004h
  5931. --------P-172004-----------------------------
  5932. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ???
  5933.     AX = 2004h
  5934.     BL = printer number???
  5935. Return: AX = status (see #0425)
  5936.     ES:DI -> ???
  5937. SeeAlso: AX=2000h,AX=2003h
  5938. --------P-172005-----------------------------
  5939. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE
  5940.     AX = 2005h
  5941.     BL = printer number???
  5942. Return: AX = status (see #0425)
  5943. Note:    this function also clears the flag set by AX=2001h
  5944. SeeAlso: AX=2000h,AX=2001h,AX=2006h
  5945. --------P-172006-----------------------------
  5946. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN
  5947.     AX = 2006h
  5948.     BL = printer number???
  5949. Return: AX = status (see #0425)
  5950. Note:    this function also clears the flag set by AX=2001h and disables
  5951.       functions other than AX=2000h
  5952. SeeAlso: AX=2000h,AX=2001h,AX=2005h
  5953. --------P-172007-----------------------------
  5954. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED
  5955.     AX = 2007h
  5956. Return: AX unchanged
  5957. SeeAlso: AX=2000h
  5958. --------N-172400-----------------------------
  5959. INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
  5960.     AX = 2400h
  5961.     DL = new state
  5962.         00h disabled
  5963.         01h enabled
  5964. Return: DL = 24h if installed
  5965.     DH = minor version number
  5966.     CX = network address of this machine
  5967.     AL = status (see #0426)
  5968. SeeAlso: AX=2403h,INT 16/AX=4500h
  5969.  
  5970. (Table 0426)
  5971. Values for NET.24 function status:
  5972.  00h    successful
  5973.  01h    timeout
  5974.  02h    header error
  5975.  03h    data error
  5976.  04h    busy
  5977.  05h    invalid parameters
  5978. --------N-172401-----------------------------
  5979. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
  5980.     AX = 2401h
  5981.     BL = timeout in clock ticks
  5982. Return: AL = status (see #0426)
  5983.     DX:BX -> receive buffer
  5984. SeeAlso: AX=2402h,AX=2404h,AX=2408h
  5985. --------N-172402-----------------------------
  5986. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
  5987.     AX = 2402h
  5988.     transmit buffer filled (see AX=2403h)
  5989. Return: AL = status (see #0426)
  5990. SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
  5991. --------N-172403-----------------------------
  5992. INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
  5993.     AX = 2403h
  5994. Return: AL = status (see #0426)
  5995.     CX = number of characters in receive ring buffer
  5996.     DX:BX -> transmit buffer
  5997. SeeAlso: AX=2400h,AX=2402h
  5998. --------N-172404-----------------------------
  5999. INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
  6000.     AX = 2404h
  6001.     BX = target address
  6002. Return: AL = status (see #0426)
  6003. SeeAlso: AX=2402h,AX=2405h
  6004. --------N-172405-----------------------------
  6005. INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
  6006.     AX = 2405h
  6007.     BX = target address
  6008. Return: AL = status (see #0426)
  6009. SeeAlso: AX=2402h,AX=2404h
  6010. --------N-172406-----------------------------
  6011. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
  6012.     AX = 2406h
  6013. Return: AL = status (see #0426)
  6014. SeeAlso: AX=2407h,AX=240Ah
  6015. --------N-172407-----------------------------
  6016. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
  6017.     AX = 2407h
  6018. Return: AL = status (see also #0426)
  6019.         06h end of data
  6020.     DL = received character
  6021. SeeAlso: AX=2406h
  6022. --------N-172408-----------------------------
  6023. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
  6024.     AX = 2408h
  6025. Return: AL = status (see also #0426)
  6026.         06h end of data
  6027.     CX = number of bytes in receive buffer
  6028.     DX:SI -> receive buffer
  6029. SeeAlso: AX=2401h,AX=2405h,AX=2409h
  6030. --------N-172409-----------------------------
  6031. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
  6032.     AX = 2409h
  6033.     BX = target address
  6034.     CX = number of data bytes
  6035.     DL = command code to send
  6036.     DS:SI -> data bytes for command
  6037. Return: AL = status (see also #0426)
  6038.         03h no response
  6039.         06h remote currently unable to perform command
  6040. SeeAlso: AX=2405h,AX=2408h
  6041. --------N-17240A-----------------------------
  6042. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
  6043.     AX = 240Ah
  6044. Return: AL = status (see #0426)
  6045. SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
  6046. --------N-17240B-----------------------------
  6047. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
  6048.     AX = 240Bh
  6049.     DL = character to send
  6050. Return: AL = status (see also AX=2400h)
  6051.         03h transmission error
  6052.         06h write error
  6053. SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
  6054. --------N-17240C-----------------------------
  6055. INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
  6056.     AX = 240Ch
  6057. Return: AL = status (see also AX=2400h)
  6058.         03h transmission error
  6059.         06h remote breaks connection
  6060. SeeAlso: AX=240Ah,AX=240Bh
  6061. --------J-175000-----------------------------
  6062. INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
  6063.     AX = 5000h
  6064.     BX = country code
  6065.         0001h USA (English), 0051h Japan
  6066. Return: AL = status
  6067.         00h successful
  6068.         01h bad country code
  6069.         02h other error
  6070. SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
  6071. --------J-175001-----------------------------
  6072. INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
  6073.     AX = 5001h
  6074. Return: AL = status
  6075.         00h successful
  6076.         BX = country code
  6077.         02h error
  6078. SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
  6079. --------J-1751-------------------------------
  6080. INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
  6081.     AH = 51h
  6082.     DX = 2-byte JIS code
  6083. Return: DX = shift-JIS value or 0000h on error
  6084. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  6085.       characters to Shift-JIS characters, and the other performs the
  6086.       opposite conversion
  6087. SeeAlso: AX=5000h,AH=52h
  6088. --------J-1752-------------------------------
  6089. INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
  6090.     AH = 52h
  6091.     DX = 2-byte shift-JIS code
  6092. Return: DX = JIS code or 0000h on error
  6093. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  6094.       characters to Shift-JIS characters, and the other performs the
  6095.       opposite conversion
  6096. SeeAlso: AH=51h
  6097. --------V-1760-------------------------------
  6098. INT 17 - FLASHUP.COM - INSTALLATION CHECK
  6099.     AH = 60h
  6100. Return: AL = 60h
  6101.     DX = CS of resident code
  6102. Notes:    FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
  6103.     FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
  6104.       consisting of an 80h followed by the actual command
  6105. SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
  6106. --------V-1761-------------------------------
  6107. INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
  6108.     AH = 61h
  6109. Return: AL = 61h
  6110.     DX = CS of resident code
  6111. Note:    SPEEDSCR.COM is by The Software Bottling Co.
  6112. --------P-1762-------------------------------
  6113. INT 17 U - T2PS v1.0 - UNINSTALL
  6114.     AH = 62h
  6115. Return: nothing
  6116. SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh
  6117. --------P-1763-------------------------------
  6118. INT 17 U - T2PS v1.0 - SET PARAMETERS
  6119.     AH = 63h
  6120.     ES:SI -> settings (see #0427)
  6121. Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D.
  6122.       Technologies
  6123. SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h
  6124.  
  6125. Format of T2PS settings:
  6126. Offset    Size    Description    (Table 0427)
  6127.  00h    WORD    LPT port number (0=LPT1, etc.)
  6128.  02h    WORD    page heigh in points
  6129.  04h    WORD    page width in points
  6130.  06h    WORD    top margin in points
  6131.  08h    WORD    bottom margin in points
  6132.  0Ah    WORD    left margin in points
  6133.  0Ch    WORD    right margin in points
  6134.  0Eh    WORD    font size in points
  6135.  10h    WORD    tab size
  6136.  12h    WORD    timeout in clock ticks
  6137. --------P-1764-------------------------------
  6138. INT 17 U - T2PS v1.0 - GET PARAMETERS
  6139.     AH = 64h
  6140.     ES:SI -> buffer for settings (see #0427)
  6141. Return: ES:SI buffer filled
  6142. SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
  6143. --------N-1781-------------------------------
  6144. INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
  6145.     AH = 81h
  6146.     AL = 00h (NTNX compatibility mode)
  6147.     CL = number of jobs to cancel
  6148. Return: AL = status (see #0428)
  6149. Note:    this function cancels the last CL printouts for the current task
  6150. SeeAlso: AH=82h
  6151.  
  6152. (Table 0428)
  6153. Values for Alloy status:
  6154.  00h    success
  6155.  01h-7Fh warning
  6156.  80h    general failure
  6157.  81h    host overloaded (NTNX only)
  6158.  82h    module busy (NTNX only)
  6159.  83h    host busy (NTNX only)
  6160.  84h    re-entry flag set
  6161.  85h    invalid request
  6162.  86h    invalid printer
  6163.  87h    invalid process ID
  6164.  89h    access denied
  6165.  8Ah    option not available for given port type
  6166.  8Bh    option not available for given task type
  6167.  91h    printer busy
  6168.  C2h    file not found
  6169.  C3h    path not found
  6170.  C4h    file access failure
  6171. --------N-1782-------------------------------
  6172. INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
  6173.     AH = 82h
  6174.     AL = 00h (NTNX compatibility mode)
  6175. Return: AL = status (see #0428)
  6176. SeeAlso: AH=81h
  6177. --------N-1783-------------------------------
  6178. INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
  6179.     AH = 83h
  6180.     AL = mode
  6181.         00h NTNX compatibility
  6182.         CL = number of copies (max 99, default 1)
  6183.         02h MW386 v2+
  6184.         BX = logical device number
  6185.             00h-03h = LPT1-LPT4
  6186.             04h-07h = COM1-COM4
  6187.         CX = number of copies
  6188. Return: AL = status (see #0428)
  6189. Note:    in NTNX compatibility mode, this function only affects LPT1
  6190. --------N-1784-------------------------------
  6191. INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
  6192.     AH = 84h
  6193.     AL = mode
  6194.         00h NTNX compatibility
  6195.         02h MW386 v2+
  6196.         BX = logical device number
  6197.             00h-03h = LPT1-LPT4
  6198.             04h-07h = COM1-COM4
  6199. Note:    closes spool file and tells spooler to queue the print job (LPT1 only
  6200.       under MW386 in NTNX compatibility mode)
  6201. --------J-1784-------------------------------
  6202. INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
  6203.     AH = 84h
  6204.     AL = character
  6205.     DX = printer number
  6206. Return: AH = printer status (see #0424)
  6207. SeeAlso: AH=00h,AH=85h
  6208. --------J-1785-------------------------------
  6209. INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
  6210.     AH = 85h
  6211.     AL = new state (00h enabled, 01h disabled)
  6212. SeeAlso: AH=84h"AX"
  6213. --------N-1787-------------------------------
  6214. INT 17 - Alloy NTNX - SET INDOS POINTER
  6215.     AH = 87h
  6216.     AL = 00h
  6217.     CX:BX -> buffer for user-written printer drivers
  6218. Return: BX,CX destroyed
  6219. Note:    must be executed before the printer is enabled
  6220. SeeAlso: AH=8Ah
  6221. --------N-1788-------------------------------
  6222. INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
  6223.     AH = 88h
  6224.     AL = mode
  6225.         00h NTNX compatibility
  6226.         DX = NTNX printer number (see #0429)
  6227.         01h MW386
  6228.         DX = MW386 printer number
  6229. Return: AH = status (see #0428)
  6230. Note:    removes specified printer from the spooler's list of printers
  6231. SeeAlso: AH=89h,AH=8Bh
  6232.  
  6233. (Table 0429)
  6234. Values for Alloy NTNX printer number:
  6235.  00h    host LPT1
  6236.  01h    host LPT2
  6237.  02h    host LPT3
  6238.  03h    host LPT4
  6239.  04h    host COM1
  6240.  05h    host COM2
  6241.  06h    user's logical COM2
  6242.  07h    user's terminal AUX port
  6243.  08h    user's logical COM1 (MW386 only)
  6244. --------N-1789-------------------------------
  6245. INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
  6246.     AH = 89h
  6247.     AL = mode
  6248.         00h NTNX compatibility
  6249.         DX = NTNX printer number (see #0429)
  6250.         01h MW386
  6251.         DX = MW386 printer number
  6252. Return: AL = status (see #0428)
  6253. Note:    the specified printer is added to the spooler's list of available
  6254.       printers
  6255. SeeAlso: AH=88h,AH=8Bh
  6256. --------N-178A-------------------------------
  6257. INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
  6258.     AH = 8Ah
  6259.     ???
  6260. SeeAlso: AH=92h
  6261. --------N-178B-------------------------------
  6262. INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
  6263.     AH = 8Bh
  6264.     DS:DX -> ASCIZ printer name
  6265. Return: AL = status (see also AH=81h)
  6266.         00h successful
  6267.         DX = physical device number
  6268. SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
  6269. --------N-178C-------------------------------
  6270. INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
  6271.     AH = 8Ch
  6272.     DX = physical device number
  6273.     ES:DI -> 17-byte buffer for ASCIZ device name
  6274. Return: AL = status (see also AH=81h)
  6275.         00h successful
  6276.         ES:DI buffer filled
  6277. SeeAlso: AH=88h,AH=8Bh
  6278. --------N-178D-------------------------------
  6279. INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
  6280.     AH = 8Dh
  6281.     AL = 00h
  6282. Return: AL = status (see #0428)
  6283. Notes:    clears all buffers and resets spooler to boot-up values
  6284.     MW386 supports this function for compatibility only; it is a NOP
  6285. --------N-178E-------------------------------
  6286. INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
  6287.     AH = 8Eh
  6288.     AL = 00h
  6289. Return: CX:BX -> INT 28 entry point
  6290. SeeAlso: AH=8Fh
  6291. --------N-178F-------------------------------
  6292. INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
  6293.     AH = 8Fh
  6294.     AL = 00h
  6295. Return: CX:BX -> DOS intercept routine
  6296. SeeAlso: AH=8Eh
  6297. --------N-1790-------------------------------
  6298. INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
  6299.     AH = 90h
  6300.     AL = mode
  6301.         00h NTNX compatibility
  6302.         DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
  6303.         DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
  6304.         02h MW386 v2+
  6305.         BX = logical device number
  6306.             00h-03h = LPT1-LPT4
  6307.             04h-07h = COM1-COM4
  6308.     CX:SI -> ASCIZ pathname
  6309. Return: AL = status (see #0428)
  6310. Note:    in mode 00h, the file is always sent to logical LPT1
  6311. SeeAlso: AH=A0h
  6312. --------N-1791-------------------------------
  6313. INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
  6314.     AH = 91h
  6315.     AL = mode
  6316.         00h NTNX compatibility
  6317.         Return: CX = user number (00h = host)
  6318.             DX = currently selected printer number (00h-08h)
  6319.         01h MW386
  6320.         Return: CX = user number
  6321.             DX = physical dev number of currently selected printer
  6322.         02h MW386 v2+
  6323.         BX = logical device number
  6324.             00h-03h = LPT1-LPT4
  6325.             04h-07h = COM1-COM4
  6326.         Return: CX = user number
  6327.             DX = physical device number
  6328. Return: AL = status (see #0428)
  6329. SeeAlso: AH=8Ch
  6330. --------N-1792-------------------------------
  6331. INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
  6332.     AH = 92h
  6333.     AL = 00h
  6334.     CL = 00h
  6335. Return: CL = driver state
  6336.         01h initialized
  6337.         80h not initialized
  6338.     AX = status (see #0428)
  6339. SeeAlso: AH=8Ah
  6340. --------N-1794-------------------------------
  6341. INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
  6342.     AH = 94h
  6343.     AL = mode
  6344.         00h NTNX compatibility
  6345.         DX = NTNX printer number (see #0429)
  6346.         01h MW386
  6347.         DX = MW386 printer number
  6348.         02h MW386 v2+
  6349.         BX = logical printer number
  6350.         DX = MW386 printer number
  6351. Return: AL = status (see #0428)
  6352. Note:    modes 00h and 01h affect only logical LPT1
  6353. SeeAlso: AH=8Bh,AH=95h
  6354. --------N-1795-------------------------------
  6355. INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
  6356.     AH = 95h
  6357.     AL = mode
  6358.         00h NTNX compatibility
  6359.         Return: DX = NTNX printer number (see #0429)
  6360.                 (FFFFh if current printer not compatible with NTNX)
  6361.         01h MW386
  6362.         Return: DX = MW386 printer number
  6363.         02h MW386 v2+
  6364.         BX = logical device number
  6365.             00h-03h = LPT1-LPT4
  6366.             04h-07h = COM1-COM4
  6367.         Return: DX = MW386 printer number (FFFFh = none)
  6368. Return: AL = status (see #0428)
  6369. Note:    modes 00h and 01h return the printer number of logical LPT1 only
  6370. SeeAlso: AH=94h
  6371. --------N-1796-------------------------------
  6372. INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
  6373.     AH = 96h
  6374.     AL = 00h
  6375. Note:    documentation states that this is a NOP, doing only XOR AX,AX before
  6376.       returning
  6377. SeeAlso: INT 14/AH=24h
  6378. --------N-1797-------------------------------
  6379. INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
  6380.     AH = 97h
  6381.     AL = mode
  6382.         00h NTNX compatibility
  6383.         02h MW386 v2+
  6384.         BX = logical device number
  6385.             00h-03h = LPT1-LPT4
  6386.             04h-07h = COM1-COM4
  6387.     CH,CL,DH = three character break sequence
  6388.     DL = subfunction
  6389.         00h set break string
  6390.         else reset break
  6391. Return: AL = status (see #0428)
  6392. Notes:    mode 00h affects only logical LPT1
  6393.     when the break string is encountered, the spool file will be closed and
  6394.       queued for printing automatically
  6395.     the break string is not permanently saved, and will be reset each time
  6396.       MW386 or the user is rebooted
  6397. SeeAlso: AH=9Bh
  6398. --------N-1798-------------------------------
  6399. INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
  6400.     AH = 98h
  6401.     AL = 00h
  6402.     DL = printer number (FFh=current)
  6403. Return: AL = status
  6404.         00h successful
  6405.         01h incorrect printer
  6406.         02h task not found
  6407. Note:    MW386 supports this function for compatibility only; it is a NOP
  6408. --------N-1799-------------------------------
  6409. INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
  6410.     AH = 99h
  6411.     AL = mode
  6412.         00h NTNX compatibility
  6413.         DL = NTNX printer number (see #0429)
  6414.             (FFh = task's current logical LPT1)
  6415.         DH = mode (see #0430)
  6416.         01h MW386
  6417.         DX = MW386 printer number
  6418.         CL = mode (as for DH above)
  6419. Return: AL = status (see #0428)
  6420.     DH = mode (bits 1 and 2 set as above)
  6421.     DL = printer owner's user number if not spooled
  6422.  
  6423. Bitfields for Alloy printer mode:
  6424.  0    get mode if 1, set mode if 0    (Table 0430)
  6425.  1    private ("attached")
  6426.  2    direct instead of spooled
  6427.  3-7    reserved (0)
  6428. --------N-179A-------------------------------
  6429. INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
  6430.     AH = 9Ah
  6431.     AL = mode
  6432.         00h NTNX compatibility
  6433.         DX = NTNX printer number (see #0429)
  6434.             (FFFFh = current logical LPT1)
  6435.         01h MW386
  6436.         DX = MW386 printer number
  6437.     CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
  6438. Return: AL = status (see #0428)
  6439. Note:    beginning with MW386 v2.0, tab expansion is set on a per-printer basis
  6440.       rather than a per-user basis; NTNX and MW386 v1.x ignore DX
  6441. SeeAlso: AH=A4h
  6442. --------N-179B-------------------------------
  6443. INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
  6444.     AH = 9Bh
  6445.     AL = mode
  6446.         00h NTNX compatibility
  6447.         CX = timeout value in clock ticks (1/18 sec) (00h = never)
  6448.         01h MW386
  6449.         CX = timeout value in seconds (00h = never)
  6450.         02h MW386 v2+
  6451.         BX = logical device number
  6452.             00h-03h = LPT1-LPT4
  6453.             04h-07h = COM1-COM4
  6454.         CX = timeout value in seconds (00h = never)
  6455. Return: AL = status (see #0428)
  6456. Notes:    modes 00h and 01h affect only the current logical LPT1
  6457.     if no data is sent to a printer for the specified amount of time, the
  6458.       spool file will be closed and queued for printing automatically
  6459. SeeAlso: AH=97h
  6460. --------N-17A0-------------------------------
  6461. INT 17 - Alloy MW386 - SPOOL COPY OF FILE
  6462.     AH = A0h
  6463.     AL = mode
  6464.         00h NTNX compatibility
  6465.         DX = ??? (NTNX, MW386 v1.x only)
  6466.         02h MW386 v2+
  6467.         BX = logical device number
  6468.             00h-03h = LPT1-LPT4
  6469.             04h-07h = COM1-COM4
  6470.     CX:SI -> ASCIZ pathname
  6471. Return: AL = status (see #0428)
  6472. Notes:    makes a copy of the specified file in the spooler's directory, allowing
  6473.       the original file to be modified or deleted while the copy is printed
  6474.     in mode 00h, the file is printed on logical LPT1
  6475. SeeAlso: AH=90h
  6476. --------N-17A4-------------------------------
  6477. INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
  6478.     AH = A4h
  6479.     AL = new state
  6480.         00h form feed after end of print job disabled
  6481.         01h form feed enabled
  6482. Return: AL = status (see #0428)
  6483. Note:    only affects the current logical LPT1
  6484. SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
  6485. --------N-17A6-------------------------------
  6486. INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
  6487.     AH = A6h
  6488.     AL = new state
  6489.         00h banner page before print job disabled
  6490.         01h banner page enabled
  6491. Return: AL = status (see #0428)
  6492. Note:    only affects the current logical LPT1
  6493. SeeAlso: AH=A4h
  6494. --------N-17A7-------------------------------
  6495. INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
  6496.     AH = A7h
  6497.     AL = spool flags (see #0431)
  6498.     BX = logical device number
  6499.         00h-03h = LPT1-LPT4
  6500.         04h-07h = COM1-COM4
  6501. Return: AL = status (see #0428)
  6502. Note:    the documentation does not state which register contains the result of
  6503.       a GET
  6504. SeeAlso: AH=A4h,AH=A6h
  6505.  
  6506. Bitfields for Alloy spool flags:
  6507. Bit(s)    Description    (Table 0431)
  6508.  0    banner page enabled (see AH=A6h)
  6509.  1    form feed enabled (see AH=A4h)
  6510.  2-6    reserved (0)
  6511.  7    set flags if 1, get flags if 0
  6512. --------N-17A8-------------------------------
  6513. INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
  6514.     AH = A8h
  6515.     CX:SI -> ASCIZ filename without extension (max 8 chars)
  6516. Return: AL = status (see #0428)
  6517. Note:    allows application to specify banner page filename for spool files
  6518.       collected from the application's printer output
  6519. SeeAlso: AH=A9h
  6520. --------N-17A9-------------------------------
  6521. INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
  6522.     AH = A9h
  6523.     AL = new spool drive (2=C:,3=D:,etc)
  6524. Return: AL = status (see #0428)
  6525. Note:    does not remove previous spooling directory since jobs may be pending
  6526. SeeAlso: AH=A8h
  6527. --------N-17AA-------------------------------
  6528. INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
  6529.     AH = AAh
  6530.     AL = mode
  6531.         00h NTNX
  6532.         DX = NTNX printer number (see #0429)
  6533.         01h MW386
  6534.         DX = MW386 printer number
  6535. Return: AH = instantaneous printer status
  6536.         00h printer ready
  6537.         01h not ready
  6538.         12h off line
  6539.         13h out of paper
  6540.         14h general device failure
  6541.         15h device timeout
  6542.         16h bad device number
  6543. --------N-17AF-------------------------------
  6544. INT 17 - Alloy MW386 - CHECK SPOOLER
  6545.     AH = AFh
  6546. Return: AX = 55AAh if spooler available
  6547. --------c-17C0-------------------------------
  6548. INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
  6549.     AH = C0h
  6550.     DX = printer port (0-3)
  6551. Return: ES:BX -> control block (see #0432)
  6552. SeeAlso: AH=C1h
  6553.  
  6554. Format of PCSpool control block:
  6555. Offset    Size    Description    (Table 0432)
  6556.  00h    WORD    printer number
  6557.  02h    WORD    address of printer status port
  6558.  04h    WORD    number of first record in queue
  6559.  06h    WORD    number of last record in queue
  6560.  08h    DWORD    characters already printed
  6561.  0Ch    DWORD    number of characters remaining
  6562.  10h    DWORD    pointer to dequeue buffer
  6563.  14h    DWORD    previous count of characters printed
  6564.  18h    DWORD    number of clock ticks taken to print them
  6565.  1Ch    WORD    offset of next character to output
  6566.  1Eh    WORD    offset of next character to print
  6567.  20h    WORD    pointer to spooling queue record
  6568.  22h    BYTE    current spooling status
  6569.  23h    BYTE    current printer status:
  6570.         00h OK
  6571.         01h not ready
  6572.         02h paused with message
  6573.         03h paused
  6574.         04h initializing
  6575.         FEh non-existent port
  6576.         FFh not spooled
  6577.  24h    BYTE    current control record type
  6578.  25h    WORD    observed printer speed
  6579.  27h    WORD    characters to print per service
  6580.  29h    BYTE    01h if disk write needed
  6581.  2Ah    BYTE    01h if queued data should be flushed
  6582.  2Bh    BYTE    01h to update cps status
  6583. --------c-17C1--------------------------------
  6584. INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
  6585.     AH = C1h
  6586.     DX = printer port (0-3)
  6587.     DS:SI -> ASCIZ string to save for display
  6588. Note:    flushes pending writes
  6589. SeeAlso: AH=C0h,AH=C2h
  6590. --------c-17C2-------------------------------
  6591. INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
  6592.     AH = C2h
  6593.     DX = printer port (0-3)
  6594. SeeAlso: AH=C3h
  6595. --------c-17C3-------------------------------
  6596. INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
  6597.     AH = C3h
  6598.     DX = printer port (0-3)
  6599. SeeAlso: AH=C2h,AH=C7h
  6600. --------c-17C4-------------------------------
  6601. INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
  6602.     AH = C4h
  6603. Return: DI = B0BFh
  6604.     SI = segment
  6605. --------c-17C5-------------------------------
  6606. INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
  6607.     AH = C5h
  6608.     DX = printer port (0-3)
  6609. Note:    cancels up to the pause record
  6610. --------c-17C6-------------------------------
  6611. INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
  6612.     AH = C6h
  6613.     DX = printer port (0-3)
  6614. Return: AX = queue status
  6615.        0000h printer not active or at pause
  6616.        0001h printer busy
  6617. --------c-17C7-------------------------------
  6618. INT 17 - PC Magazine PCSpool - CLOSE QUEUE
  6619.     AH = C7h
  6620.     DX = printer port (0-3)
  6621. SeeAlso: AH=C3h
  6622. --------P-17CD00-----------------------------
  6623. INT 17 - INSET - EXECUTE COMMAND STRING
  6624.     AX = CD00h
  6625.     DS:DX -> ASCIZ command string (max 80 bytes)
  6626. Return: CX = 07C2h (1986d)
  6627. Note:    user interface menus pop up after last command, unless that command
  6628.     exits INSET
  6629. --------P-17CD01-----------------------------
  6630. INT 17 - INSET - GET IMAGE SIZE
  6631.     AX = CD01h
  6632.     DS:DX -> ASCIZ name of image file
  6633. Return: AX = height in 1/720th inch
  6634.     BX = width in 1/720th inch
  6635.     CX = 07C2h (1986d)
  6636. --------P-17CD02-----------------------------
  6637. INT 17 - INSET - INITIALIZE
  6638.     AX = CD02h
  6639. Return: CX = 07C2h (1986d)
  6640. Note:    all open files are closed and the printer is reset
  6641. SeeAlso: AX=CD04h
  6642. --------P-17CD03-----------------------------
  6643. INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
  6644.     AX = CD03h
  6645. Return: CX = 07C2h (1986d)
  6646. --------P-17CD04-----------------------------
  6647. INT 17 - INSET - INITIALIZE LINKED MODE
  6648.     AX = CD04h
  6649.     ES:SI -> FAR routine for linked mode (see #0433)
  6650. Return: CX = 07C2h
  6651. SeeAlso: AX=CD02h,AX=CD08h
  6652.  
  6653. (Table 0433)
  6654. Values INSET linked-mode routine is called with:
  6655.     AL = function
  6656.         00h send character to printer
  6657.         BL = character to send
  6658.         01h send string to printer
  6659.         CX = number of bytes to send
  6660.         DS:DX -> buffer containing data
  6661.         02h move print head to horizontal starting position of image
  6662. Return:    AX = status
  6663.         0000h success
  6664.         0001h failure
  6665. --------P-17CD05-----------------------------
  6666. INT 17 - INSET - START MERGING IMAGE INTO TEXT
  6667.     AX = CD05h
  6668.     DS:DX -> ASCIZ name of PIX file
  6669.     CX = left margin of text in 1/720th inch
  6670. Return: AH = printer type
  6671.         00h page-oriented (multiple images may be placed side-by-side)
  6672.         01h line-oriented (use AX=CD06h for vertical paper movement)
  6673.     CX = 07C2h (1986d)
  6674. SeeAlso: AX=CD07h
  6675. --------P-17CD06-----------------------------
  6676. INT 17 - INSET - GRAPHICS LINE FEED
  6677.     AX = CD06h
  6678. Return: AH = completion status
  6679.         00h image complete
  6680.         01h image incomplete
  6681.     CX = 07C2h (1986d)
  6682. SeeAlso: AX=CD09h
  6683. --------P-17CD07-----------------------------
  6684. INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
  6685.     AX = CD07h
  6686. Return: CX = 07C2h
  6687. SeeAlso: AX=CD05h
  6688. --------P-17CD08-----------------------------
  6689. INT 17 - INSET - CANCEL LINK MODE
  6690.     AX = CD08h
  6691. Return: CX = 07C2h
  6692. SeeAlso: AX=CD04h
  6693. --------P-17CD09-----------------------------
  6694. INT 17 - INSET - ALTER TEXT LINE SPACING
  6695.     AX = CD09h
  6696.     CX = line spacing in 1/720th inch
  6697. Return: CX = 07C2h
  6698. Note:    not yet implemented, line spacing is currently fixed at 1/6 inch
  6699. SeeAlso: AX=CD06h
  6700. --------P-17CD0A-----------------------------
  6701. INT 17 - INSET - GET SETUP
  6702.     AX = CD0Ah
  6703.     DS:DX -> buffer for IN.SET data
  6704. Return: CX = 07C2h
  6705. --------P-17CD0B-----------------------------
  6706. INT 17 - INSET - START GETTING SCALED IMAGE
  6707.     AX = CD0Bh
  6708.     DS:SI -> ASCIZ pathname of .PIX file
  6709.     BX = number of bitplanes
  6710.     CX = number of rows in output bitmap
  6711.     DX = number of columns in output bitmap
  6712. Return: AX = status
  6713.         0000h OK
  6714.         FFFFh error
  6715. Note:    image is returned in strips by repeated calls to AX=CD0Ch
  6716. --------P-17CD0C-----------------------------
  6717. INT 17 - INSET - GET NEXT IMAGE STRIP
  6718.     AX = CD0Ch
  6719. Return: AX = status
  6720.         0000h OK but not complete
  6721.         0001h OK and image complete
  6722.         FFFFh error
  6723.     DS:SI -> buffer (max 4K) for bit map strip
  6724.     CX = start row
  6725.     DX = number of rows
  6726.     BX = offset in bytes between bit planes
  6727. Note:    buffer may be overwritten by subsequent calls
  6728. SeeAlso: AX=CD0Bh
  6729. --------P-17F0-------------------------------
  6730. INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
  6731.     AH = F0h
  6732.     DX = printer port (0-3)
  6733. Return: AX = 0001h Jetstream present
  6734.          else  non-Jetstream port
  6735. Note:    NorthNet Jetstream is a high-performance DMA-driven parallel card able
  6736.       to drive printers at up to 80000 characters per second
  6737. --------P-17F1-------------------------------
  6738. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
  6739.     AH = F1h
  6740.     CX = data buffer length
  6741.     DX = printer port (0-3)
  6742.     DS:SI -> data buffer
  6743. Return: AX = status
  6744.         0000h printer not ready (see also AH=02h)
  6745.         other printing started
  6746. SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
  6747. --------P-17F2-------------------------------
  6748. INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
  6749.     AH = F2h
  6750.     DX = printer port (0-3)
  6751. Return: AX = status
  6752.         0000h prior print request finished
  6753.         other number of characters left to print
  6754. SeeAlso: AH=02h,AH=F1h,AH=F3h
  6755. --------P-17F3-------------------------------
  6756. INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
  6757.     AH = F3h
  6758.     DX = printer port (0-3)
  6759. Return: AX = number of unprinted characters due to abort
  6760. SeeAlso: AH=F1h,AH=F4h
  6761. --------P-17F4-------------------------------
  6762. INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
  6763.     AH = F4h
  6764.     DX = printer port (0-3)
  6765.     DS:DS -> FAR post address (called with interrupts on)
  6766. SeeAlso: AH=F1h,AH=F3h
  6767. --------P-17F5-------------------------------
  6768. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
  6769.     AH = F5h
  6770.     CX = data buffer length
  6771.     DX = printer port (0-3)
  6772.     DS:SI -> data buffer (32-bit physical address)
  6773. Return: AX = status
  6774.         0000h printer not ready (see also AH=02h)
  6775.         other printing started
  6776. SeeAlso: AH=F1h
  6777. --------c-17FF--BX0000-----------------------
  6778. INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE
  6779.     AH = FFh
  6780.     BX = 0000h
  6781.     CX = 0000h
  6782.     DX = printer port number
  6783. Return: AH = printer status (see #0424 at AH=00h)
  6784. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  6785.       operating system by The Software Link, Inc.
  6786. Desc:    close the spool file immediately instead of waiting for the close time
  6787.       to elapse
  6788. SeeAlso: AH=01h,AH=03h"PC-MOS"
  6789. --------B-18---------------------------------
  6790. INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC)
  6791. Desc:    called when there is no bootable disk available to the system
  6792. Notes:    only PCs produced by IBM contain BASIC in ROM, so the action is
  6793.       unpredictable on compatibles; this interrupt often reboots the
  6794.       system, and often has no effect at all
  6795.     network cards with their own BIOS can hook this interrupt to allow
  6796.       a diskless boot off the network (even when a hard disk is present
  6797.       if none of the partitions is marked as the boot partition)
  6798. SeeAlso: INT 2F/AX=4A06h,INT 86"NetBIOS"
  6799. --------J-1800-------------------------------
  6800. INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
  6801.     AH = 00h
  6802. Return: AX = keystroke
  6803. SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
  6804. --------J-1801-------------------------------
  6805. INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
  6806.     AH = 01h
  6807. Return: ZF set if no keystroke available
  6808.     ZF clear if keystroke available
  6809.         AX = keystroke
  6810. SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
  6811. --------J-1802-------------------------------
  6812. INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
  6813.     AH = 02h
  6814. Return: AL = shift flags
  6815. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
  6816. --------J-1803-------------------------------
  6817. INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
  6818.     AH = 03h
  6819.     ???
  6820. Return: ???
  6821. SeeAlso: AH=00h,AH=04h
  6822. --------J-1804-------------------------------
  6823. INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
  6824.     AH = 04h
  6825.     ???
  6826. Return: ???
  6827. Note:    details are not available at this time
  6828. SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
  6829. --------J-18---------------------------------
  6830. INT 18 - NEC PC-9800 series - VIDEO
  6831.     AH = function
  6832.         0Ah set video mode
  6833.         0Bh get video mode
  6834.         0Ch start text screen display
  6835.         0Dh end text screen display
  6836.         0Eh set single display area
  6837.         0Fh set multiple display area
  6838.         10h set cursor shape
  6839.         11h display cursor
  6840.         12h terminate cursor
  6841.         13h set cursor position
  6842.         14h read font patter
  6843.         16h initialize text video RAM
  6844.         1Ah define user character
  6845.     ???
  6846. Return: ???
  6847. Notes:    details are not available at this time
  6848.     text video RAM is located at segments A000h (characters) and A200h
  6849.       (attributes)
  6850. ----------185350BX4849-----------------------
  6851. INT 18 - SPHINX C-- - WB.COM - API
  6852.     AX = 5350h ('SP')
  6853.     BX = 4849h ('HI')
  6854.     CX = 4E58h ('NX')
  6855.     DH = function
  6856.         01h set ???
  6857.         DL = ???
  6858.         02h get ???
  6859.         Return: DL = ???
  6860.         03h get ???
  6861.         Return: ES:DI -> ??? data buffer
  6862.         06h ???
  6863. Return: AX = 7370h ('sp') if installed
  6864.     BX = 6869h ('hi') if installed
  6865.     CX = 6E78h ('nx') if installed
  6866. Program: SPHINX C-- is a shareware compiler by Peter Cellik for a language
  6867.       which is a cross between C and assembler; WB.COM is the driver which
  6868.       launches the WorkBench
  6869. --------s-186900-----------------------------
  6870. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET STATUS
  6871.     AX = 6900h
  6872. Return: AX = amount of DRAM on card or 0000h if GUS not available
  6873. Program: YEA_GUS is a driver for the Graphics Ultra Sound which hooks INT 18h
  6874.       and then shells out the the program requiring its services
  6875. SeeAlso: AX=6901h,AX=690Ah,AX=690Bh
  6876. --------s-186901-----------------------------
  6877. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESET
  6878.     AX = 6901h
  6879.     BX = number of active voices (14-32)
  6880. Return: nothing
  6881. SeeAlso: AX=6900h
  6882. --------s-186902-----------------------------
  6883. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOLUME FOR SPECIFIC VOICE
  6884.     AX = 6902h
  6885.     BX = voice number (00h-1Fh)
  6886.     CX = linear volume (0000h-01FFh)
  6887. Return: nothing
  6888. SeeAlso: AX=6900h,AX=6903h,AX=6904h,AX=6909h,AX=690Ah
  6889. --------s-186903-----------------------------
  6890. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET FREQUENCY FOR VOICE
  6891.     AX = 6903h
  6892.     BX = voice number (00h-1Fh)
  6893.     CX = frequency in Hz (0-44100)
  6894. Return: nothing
  6895. SeeAlso: AX=6902h,AX=6904h
  6896. --------s-186904-----------------------------
  6897. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET LEFT/RIGHT BALANCE
  6898.     AX = 6904h
  6899.     BX = voice number (00h-1Fh)
  6900.     CX = balance (0 = left, 7 = even, 15 = right)
  6901. Return: nothing
  6902. SeeAlso: AX=6902h,AX=6903h
  6903. --------s-186905-----------------------------
  6904. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - PLAY MUSIC
  6905.     AX = 6905h
  6906.     BL = voice number
  6907.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  6908.     CL = looping type (0 = none, 1 = forward, 2 = back and forth)
  6909.     CH:DI = 20-bit starting address for voice data
  6910.     DL:SI = 20-bit address for loop start
  6911.     DH:BP = 20-bit address for loop end
  6912. SeeAlso: AX=6903h,AX=6906h,AX=690Bh
  6913. --------s-186906-----------------------------
  6914. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - LOAD SOUND DATA
  6915.     AX = 6906h
  6916.     BL = data format (1 = twos-complement, 0 = not)
  6917.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  6918.     CX = number of bytes to send
  6919.     ES:SI -> buffer containing data
  6920.     DL:DI = 20-bit address of GUS DRAM at which to load sound data
  6921. SeeAlso: AX=6900h,AX=6905h,AX=690Ch
  6922. --------s-186907-----------------------------
  6923. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - STOP VOICE
  6924.     AX = 6907h
  6925.     BX = voice number (00h-1Fh)
  6926. Return: nothing
  6927. SeeAlso: AX=6908h,AX=690Dh
  6928. --------s-186908-----------------------------
  6929. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOICE END
  6930.     AX = 6908h
  6931.     BX = voice number (00h-1Fh)
  6932.     CL:DX = 20-bit ending address
  6933. Return: nothing
  6934. SeeAlso: AX=690Bh
  6935. --------s-186909-----------------------------
  6936. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RAMP VOLUME
  6937.     AX = 6909h
  6938.     BL = voice number (00h-1Fh)
  6939.     BH = looping type (0 = none, 1 = forward, 2 = back and forth)
  6940.     CX = starting volume
  6941.     DX = ending volume
  6942.     DI:SI = time
  6943. Return: nothing
  6944. SeeAlso: AX=6902h,AX=690Ah
  6945. --------s-18690A-----------------------------
  6946. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET VOLUME
  6947.     AX = 690Ah
  6948.     BX = voice number (00h-1Fh)
  6949. Return: AX = current non-linear volume for voice
  6950. SeeAlso: AX=6902h,AX=6909h
  6951. --------s-18690B-----------------------------
  6952. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET POSITION
  6953.     AX = 690Bh
  6954.     BX = voice number
  6955. Return: BX:AX = 20-bit address at which voice is playing
  6956. SeeAlso: AX=6900h,AX=6905h,AX=6908h
  6957. --------s-18690C-----------------------------
  6958. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SAVE SOUND DATA
  6959.     AX = 690Ch
  6960.     BL = data format (1 = twos-complement, 0 = not)
  6961.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  6962.     CX = number of bytes to get
  6963.     ES:SI -> buffer for retrieved data
  6964.     DL:DI = 20-bit address in GUS DRAM from which to read voice data
  6965. Return: nothing
  6966. SeeAlso: AX=6906h
  6967. --------s-18690D-----------------------------
  6968. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESTART VOICE
  6969.     AX = 690Dh
  6970.     BX = voice
  6971.     CX = sample type (0 = 8-bit, 1 = 16-bit)
  6972.     DX = looping type (0 = none, 1 = forward, 2 = back and forth)
  6973. Return: CX = balance value
  6974. SeeAlso: AX=6907h,AX=6908h
  6975. --------s-188000-----------------------------
  6976. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - INITIALIZE
  6977.     AX = 8000h
  6978. Program: EURO_MOD is a .MOD file player for the Gravis Ultra Sound which hooks
  6979.       INT 18h and then shells out to the program requiring its services
  6980. SeeAlso: AX=8001h,AX=8004h
  6981. --------s-188001-----------------------------
  6982. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - LOAD .MOD FILE
  6983.     AX = 8001h
  6984.     BX:CX -> ASCIZ filename
  6985. SeeAlso: AX=8000h,AX=8002h
  6986. --------s-188002-----------------------------
  6987. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - PLAY .MOD FILE
  6988.     AX = 8002h
  6989. SeeAlso: AX=8002h,AX=8003h
  6990. --------s-188003-----------------------------
  6991. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - STOP PLAYING
  6992.     AX = 8003h
  6993. --------s-188004-----------------------------
  6994. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - SHUTDOWN
  6995.     AX = 8004h
  6996. SeeAlso: AX=8000h,AX=8003h
  6997. --------B-19---------------------------------
  6998. INT 19 - SYSTEM - BOOTSTRAP LOADER
  6999. Desc:    This interrupt reboots the system without clearing memory or restoring
  7000.       interrupt vectors.  Because interrupt vectors are preserved, this
  7001.       interrupt usually causes a system hang if any TSRs have hooked
  7002.       vectors from 00h through 1Ch, particularly INT 08.
  7003. Notes:    Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
  7004.       A: to 0000h:7C00h.  If this fails, and a hard disk is installed, the
  7005.       BIOS will read sector 1, head 0, track 0 of the first hard disk.
  7006.       This sector should contain a master bootstrap loader and a partition
  7007.       table (see #0435).  After loading the master boot sector at
  7008.       0000h:7C00h, the master bootstrap loader is given control.  It will
  7009.       scan the partition table for an active partition, and will then load
  7010.       the operating system's bootstrap loader (contained in the first
  7011.       sector of the active partition) and give it control.
  7012.     true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
  7013.       disk have a valid boot sector
  7014.     to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
  7015.       0040h:0072h and jump to FFFFh:0000h.    For a cold boot equivalent to
  7016.       a reset, store 0000h at 0040h:0072h before jumping.
  7017.     VDISK.SYS hooks this interrupt to allow applications to find out how
  7018.       much extended memory has been used by VDISKs (see #0434).  DOS 3.3+
  7019.       PRINT hooks INT 19 but does not set up a correct VDISK header block
  7020.       at the beginning of its INT 19 handler segment, thus causing some
  7021.       programs to overwrite extended memory which is already in use.
  7022.     the default handler is at F000h:E6F2h for 100% compatible BIOSes
  7023.     MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
  7024.       contains extended partitions which point at each other in a loop,
  7025.       since it will never find the end of the linked list of extended
  7026.       partitions
  7027. SeeAlso: INT 14/AH=17h,INT 18,INT 5B"PC Cluster"
  7028.  
  7029. Format of VDISK header block (at beginning of INT 19 handler's segment):
  7030. Offset    Size    Description    (Table 0434)
  7031.  00h 18 BYTEs    n/a (for VDISK.SYS, the device driver header)
  7032.  12h 11 BYTEs    signature string "VDISK     Vn.m" for VDISK.SYS version n.m
  7033.  1Dh 15 BYTEs    n/a
  7034.  2Ch  3 BYTEs    linear address of first byte of available extended memory
  7035.  
  7036. Format of hard disk master boot sector:
  7037. Offset    Size    Description    (Table 0435)
  7038.  00h 446 BYTEs    Master bootstrap loader code
  7039. 1BEh 16 BYTEs    partition record for partition 1 (see #0436)
  7040. 1CEh 16 BYTEs    partition record for partition 2
  7041. 1DEh 16 BYTEs    partition record for partition 3
  7042. 1EEh 16 BYTEs    partition record for partition 4
  7043. 1FEh    WORD    signature, AA55h indicates valid boot block
  7044.  
  7045. Format of partition record:
  7046. Offset    Size    Description    (Table 0436)
  7047.  00h    BYTE    boot indicator (80h = active partition)
  7048.  01h    BYTE    partition start head
  7049.  02h    BYTE    partition start sector (bits 0-5)
  7050.  03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
  7051.  04h    BYTE    operating system indicator (see #0437)
  7052.  05h    BYTE    partition end head
  7053.  06h    BYTE    partition end sector (bits 0-5)
  7054.  07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
  7055.  08h    DWORD    sectors preceding partition
  7056.  0Ch    DWORD    length of partition in sectors
  7057.  
  7058. (Table 0437)
  7059. Values for operating system indicator:
  7060.  00h    empty
  7061.  01h    DOS 12-bit FAT
  7062.  02h    XENIX root file system
  7063.  03h    XENIX /usr file system (obsolete)
  7064.  04h    DOS 16-bit FAT
  7065.  05h    DOS 3.3+ extended partition
  7066.  06h    DOS 3.31+ Large File System
  7067.  07h    QNX
  7068.  07h    OS/2 HPFS
  7069.  07h    Advanced Unix
  7070.  08h    AIX bootable partition, SplitDrive
  7071.  09h    AIX data partition
  7072.  09h    Coherent filesystem
  7073.  0Ah    OS/2 Boot Manager
  7074.  0Ah    OPUS
  7075.  0Ah    Coherent swap partition
  7076.  10h    OPUS
  7077.  18h    AST special Windows swap file
  7078.  24h    NEC MS-DOS 3.x
  7079.  40h    VENIX 80286
  7080.  50h    Disk Manager, read-only partition
  7081.  51h    Disk Manager, read/write partition
  7082.  51h    Novell???
  7083.  52h    CP/M
  7084.  52h    Microport System V/386
  7085.  56h    GoldenBow VFeature
  7086.  61h    SpeedStor
  7087.  63h    Unix SysV/386, 386/ix
  7088.  63h    Mach, MtXinu BSD 4.3 on Mach
  7089.  63h    GNU HURD
  7090.  64h    Novell NetWare
  7091.  65h    Novell NetWare (3.11)
  7092.  70h    DiskSecure Multi-Boot
  7093.  75h    PC/IX
  7094.  80h    Minix v1.1 - 1.4a
  7095.  81h    Minix v1.4b+
  7096.  81h    Linux
  7097.  81h    Mitac Advanced Disk Manager
  7098.  82h    Linux Swap partition
  7099.  83h    Linux native file system (ext2fs/xiafs)
  7100.  84h    OS/2-renumbered type 04h partition (related to hiding DOS C: drive)
  7101.  93h    Amoeba file system
  7102.  94h    Amoeba bad block table
  7103.  B7h    BSDI file system (secondarily swap)
  7104.  B8h    BSDI swap partition (secondarily file system)
  7105.  C1h    DR-DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition
  7106.  C4h    DR-DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition
  7107.  C6h    DR-DOS 6.0 LOGIN.EXE-secured Huge partition
  7108.  DBh    CP/M, Concurrent CP/M, Concurrent DOS
  7109.  DBh    CTOS (Convergent Technologies OS)
  7110.  E1h    SpeedStor 12-bit FAT extended partition
  7111.  E4h    SpeedStor 16-bit FAT extended partition
  7112.  F2h    DOS 3.3+ secondary
  7113.  FEh    LANstep
  7114.  FFh    Xenix bad block table
  7115. --------B-1A00-------------------------------
  7116. INT 1A - TIME - GET SYSTEM TIME
  7117.     AH = 00h
  7118. Return: CX:DX = number of clock ticks since midnight
  7119.     AL = midnight flag, nonzero if midnight passed since time last read
  7120. Notes:    there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
  7121.     IBM and many clone BIOSes set the flag for AL rather than incrementing
  7122.       it, leading to loss of a day if two consecutive midnights pass
  7123.       without a request for the time (e.g. if the system is on but idle)
  7124. SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch,INT 62/AX=0099h
  7125. --------B-1A01-------------------------------
  7126. INT 1A - TIME - SET SYSTEM TIME
  7127.     AH = 01h
  7128.     CX:DX = number of clock ticks since midnight
  7129. SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
  7130. --------B-1A02-------------------------------
  7131. INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
  7132.     AH = 02h
  7133. Return: CF clear if successful
  7134.         CH = hour (BCD)
  7135.         CL = minutes (BCD)
  7136.         DH = seconds (BCD)
  7137.         DL = daylight savings flag (00h standard time, 01h daylight time)
  7138.     CF set on error (i.e. clock not running or in middle of update)
  7139. SeeAlso: AH=00h
  7140. --------B-1A03-------------------------------
  7141. INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
  7142.     AH = 03h
  7143.     CH = hour (BCD)
  7144.     CL = minutes (BCD)
  7145.     DH = seconds (BCD)
  7146.     DL = daylight savings flag (00h standard time, 01h daylight time)
  7147. SeeAlso: AH=01h
  7148. --------B-1A04-------------------------------
  7149. INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
  7150.     AH = 04h
  7151. Return: CF clear if successful
  7152.         CH = century (BCD)
  7153.         CL = year (BCD)
  7154.         DH = month (BCD)
  7155.         DL = day (BCD)
  7156.     CF set on error
  7157. SeeAlso: AH=02h,AH=05h,INT 21/AH=2Ah
  7158. --------B-1A05-------------------------------
  7159. INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
  7160.     AH = 05h
  7161.     CH = century (BCD)
  7162.     CL = year (BCD)
  7163.     DH = month (BCD)
  7164.     DL = day (BCD)
  7165. SeeAlso: AH=04h,INT 21/AH=2Bh
  7166. --------B-1A06-------------------------------
  7167. INT 1A - TIME - SET ALARM (AT,XT286,PS)
  7168.     AH = 06h
  7169.     CH = hour (BCD)
  7170.     CL = minutes (BCD)
  7171.     DH = seconds (BCD)
  7172. Return: CF set on error (alarm already set or clock stopped for update)
  7173.     CF clear if successful
  7174. Note:    the alarm occurs every 24 hours until turned off, invoking INT 4A each
  7175.       time
  7176. SeeAlso: AH=07h,INT 4A
  7177. --------B-1A07-------------------------------
  7178. INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
  7179.     AH = 07h
  7180. Return: alarm disabled
  7181. Note:    does not disable the real-time clock's IRQ
  7182. SeeAlso: AH=06h,INT 70
  7183. --------B-1A08-------------------------------
  7184. INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
  7185.     AH = 08h
  7186.     CH = hours in BCD
  7187.     CL = minutes in BCD
  7188.     DH = seconds in BCD
  7189. SeeAlso: AH=09h
  7190. --------B-1A09-------------------------------
  7191. INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
  7192.     AH = 09h
  7193. Return: CH = hours in BCD
  7194.     CL = minutes in BCD
  7195.     DH = seconds in BCD
  7196.     DL = alarm status
  7197.         00h alarm not enabled
  7198.         01h alarm enabled but will not power up system
  7199.         02h alarm will power up system
  7200. SeeAlso: AH=08h
  7201. --------B-1A0A-------------------------------
  7202. INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
  7203.     AH = 0Ah
  7204. Return: CF set on error
  7205.     CF clear if successful
  7206.         CX = count of days since Jan 1,1980
  7207. SeeAlso: AH=04h,AH=0Bh
  7208. --------B-1A0B-------------------------------
  7209. INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
  7210.     AH = 0Bh
  7211.     CX = count of days since Jan 1,1980
  7212. Return: CF set on error
  7213.     CF clear if successful
  7214. SeeAlso: AH=05h,AH=0Ah
  7215. --------J-1A10-------------------------------
  7216. INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
  7217.     AH = 10h
  7218.     ???
  7219. Return: ???
  7220. SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
  7221. --------J-1A11-------------------------------
  7222. INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
  7223.     AH = 11h
  7224.     ???
  7225. Return: ???
  7226. SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
  7227. --------J-1A12-------------------------------
  7228. INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
  7229.     AH = 12h
  7230.     ???
  7231. Return: ???
  7232. SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
  7233. --------A-1A3601-----------------------------
  7234. INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
  7235.     AX = 3601h
  7236. Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
  7237.         ASCIZ string "WPCORP\0"
  7238. Notes:    WordPerfect 5.0 will call this interrupt at start up to determine if a
  7239.       third party product wants to interface with it.  The third party
  7240.       product must intercept this interrupt and return the address of a
  7241.       keyboard monitor routine.
  7242.     Before checking for keyboard input, and after every key entered by the
  7243.       user, Word Perfect will call the routine whose address was provided
  7244.       in DS:SI with the following parameters:
  7245.         Entry:    AX = key code or 0
  7246.             BX = WordPerfect state flag
  7247.         Exit:    AX = 0 or key code
  7248.             BX = 0 or segment address of buffer with key codes
  7249.     See the "WordPerfect 5.0 Developer's Toolkit" for further information.
  7250. SeeAlso: INT 16/AX=5500h
  7251. --------N-1A6108-----------------------------
  7252. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
  7253.     AX = 6108h
  7254.     STACK:    WORD    conversation ID (0000h-0009h)
  7255.         DWORD    pointer to message buffer
  7256.         WORD    length of message
  7257.         DWORD    pointer to reply buffer
  7258.         WORD    length of reply buffer
  7259.         WORD    0000h (use default "Cparams" structure)
  7260. Return: AX = status (see #0438)
  7261.     STACK unchanged
  7262. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  7263.       which implements the Simple Network Application Protocol
  7264. SeeAlso: AX=6205h
  7265.  
  7266. (Table 0438)
  7267. Values for SNAP.EXE status:
  7268.  0000h    successful
  7269.  F830h    "SNAP_ABORTED"
  7270.  FC04h    "SNAP_SERVERDIED"
  7271.  FC05h    "SNAP_RESEND"
  7272.  FC06h    "SNAP_SELECTFAILED"
  7273.  FC07h    "SNAP_WRONGVERSION"
  7274.  FC08h    "SNAP_INVALIDACK"
  7275.  FC09h    "SNAP_TIMEOUT"
  7276.  FC0Ah    "SNAP_SERVERREJECT"
  7277.  FC0Bh    "SNAP_NOREPLYDUE"
  7278.  FC0Ch    "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
  7279.  FC0Dh    "SNAP_NOINIT"
  7280.  FC0Eh    "SNAP_SOCKETERROR"
  7281.  FC0Fh    "SNAP_BUFFERLIMIT"
  7282.  FC10h    "SNAP_INVALIDCID"
  7283.  FC11h    "SNAP_INVALIDOP"
  7284.  FC12h    "SNAP_XMITFAIL"
  7285.  FC13h    "SNAP_NOMORERETRIES"
  7286.  FC14h    "SNAP_BADPARMS"
  7287.  FC15h    "SNAP_NOMEMORY"
  7288.  FC16h    "SNAP_NOMORECONVS"
  7289.  FFFFh    failed (invalid function/parameter)
  7290. --------N-1A6205-----------------------------
  7291. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
  7292.     AX = 6205h
  7293.     STACK:    WORD    conversation ID (0000h-0009h)
  7294.         DWORD    pointer to message
  7295.         WORD    length of message
  7296.         WORD    0000h (use default "Cparms" structure)
  7297. Return: AX = status (see #0438)
  7298.     STACK unchanged
  7299. SeeAlso: AX=6108h
  7300. --------N-1A6308-----------------------------
  7301. INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
  7302.     AX = 6308h
  7303.     STACK:    WORD    offset of ASCIZ "guardian"
  7304.         WORD    offset of ASCIZ hostname
  7305.         WORD    offset of ASCIZ server name
  7306.         WORD    offset of ASCIZ userid
  7307.         WORD    offset of ASCIZ password
  7308.         WORD    offset of password length
  7309.         WORD    offset of password type
  7310.         WORD    offset of "Cparms" structure (see #0439)
  7311. Return: ???
  7312.     STACK unchanged
  7313. Note:    all stacked offsets are within the SNAP data segment (use AX=6A01h
  7314.       to allocate a buffer)
  7315. SeeAlso: AX=6405h,AX=7202h
  7316.  
  7317. Format of SNAP.EXE Cparms structure:
  7318. Offset    Size    Description    (Table 0439)
  7319.  00h    WORD    retry delay in seconds
  7320.  02h    WORD    timeout delay in seconds
  7321.  04h    WORD    maximum buffer size
  7322.  06h    WORD    encryption level
  7323. --------N-1A6405-----------------------------
  7324. INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
  7325.     AX = 6405h
  7326.     STACK:    WORD    conversation ID (0000h-0009h)
  7327.         DWORD    pointer to message buffer
  7328.         WORD    length of message
  7329.         WORD    0000h (use default "Cparms" structure)
  7330. Return: AX = status (see #0438)
  7331.     STACK unchanged
  7332. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  7333.       which implements the Simple Network Application Protocol
  7334. SeeAlso: AX=6308h
  7335. --------N-1A6900-----------------------------
  7336. INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
  7337.     AX = 6900h
  7338. Return: AX = value used for DS by resident code
  7339. SeeAlso: AX=6A01h,AX=6F01h
  7340. --------N-1A6A01-----------------------------
  7341. INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
  7342.     AX = 6A01h
  7343.     STACK:    WORD    number of bytes to allocate
  7344. Return: AX = offset of allocated buffer or 0000h if out of memory
  7345.     STACK unchanged
  7346. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  7347.       which implements the Simple Network Application Protocol
  7348. SeeAlso: AX=6B01h
  7349. --------N-1A6B01-----------------------------
  7350. INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
  7351.     AX = 6B01h
  7352.     STACK:    WORD    offset within SNAP data segment of previously allocated
  7353.             buffer
  7354. Return: STACK unchanged
  7355. Note:    this call is a NOP if the specified offset is 0000h
  7356. SeeAlso: AX=6A01h
  7357. --------N-1A6C04-----------------------------
  7358. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
  7359.     AX = 6C04h
  7360.     STACK:    WORD    offset within SNAP data segment of dest (nonzero)
  7361.         WORD    segment of source buffer
  7362.         WORD    offset of source buffer
  7363.         WORD    number of bytes to copy
  7364. Return: AX = offset of byte after last one copied to destination
  7365.     STACK unchanged
  7366. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  7367.       which implements the Simple Network Application Protocol
  7368. SeeAlso: AX=6D04h
  7369. --------N-1A6D04-----------------------------
  7370. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
  7371.     AX = 6D04h
  7372.     STACK:    WORD    offset within SNAP data segment of source buffer
  7373.         WORD    segment of destination buffer
  7374.         WORD    offset of destination buffer
  7375.         WORD    number of bytes to copy
  7376. Return: AX = offset of byte after last one copied from source
  7377.     buffer filled
  7378.     STACK unchanged
  7379. SeeAlso: AX=6C04h
  7380. --------N-1A6E01-----------------------------
  7381. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
  7382.     AX = 6E01h
  7383.     STACK:    WORD    new value for ???
  7384. Return: AX = old value of ???
  7385.     STACK unchanged
  7386. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  7387.       which implements the Simple Network Application Protocol
  7388. --------N-1A6F01-----------------------------
  7389. INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
  7390.     AX = 6F01h
  7391.     STACK: WORD 0000h
  7392. Return: AX = status
  7393.         0000h SNAP is resident
  7394.         other SNAP not present
  7395.     STACK unchanged
  7396. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  7397.       which implements the Simple Network Application Protocol, and is
  7398.       required by PCVENUS (a network shell).  The combination of SNAP and
  7399.       PCVENUS allows the use of the Andrew File System as one or more
  7400.       networked drives.
  7401. SeeAlso: AX=6900h,AX=7400h
  7402. --------N-1A7002-----------------------------
  7403. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
  7404.     AX = 7002h
  7405.     STACK:    WORD    anchor number (0000h-0009h)
  7406.         WORD    new value for the anchor
  7407. Return: AX = status
  7408.         0000h successful
  7409.         FFFFh failed (top word on stack not in range 00h-09h)
  7410.     STACK unchanged
  7411. SeeAlso: AX=7101h
  7412. --------N-1A7101-----------------------------
  7413. INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
  7414.     AX = 7101h
  7415.     STACK:    WORD    anchor number (0000h-0009h)
  7416. Return: AX = anchor's value
  7417.     STACK unchanged
  7418. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  7419.       which implements the Simple Network Application Protocol
  7420. SeeAlso: AX=7002h
  7421. --------N-1A7202-----------------------------
  7422. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
  7423.     AX = 7202h
  7424.     STACK:    WORD    conversation ID (0000h-0009h)
  7425.         WORD    offset within resident data segment of "Cparms"
  7426.               structure (see #0439)
  7427. Return: AX = status???
  7428.     STACK unchanged
  7429. SeeAlso: AX=6308h
  7430. --------N-1A7302-----------------------------
  7431. INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
  7432.     AX = 7302h
  7433.     STACK:    WORD    conversation ID (0000h-0009h)
  7434.         WORD    offset within resident data segment of ???
  7435. Return: AX = ???
  7436.     ???
  7437.     STACK unchanged
  7438. SeeAlso: AX=7400h
  7439. --------N-1A7400-----------------------------
  7440. INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
  7441.     AX = 7400h
  7442. Return: AX = version (AH=major, AL=minor)
  7443. Note:    this call is only valid if SNAP is installed
  7444. SeeAlso: AX=7302h,INT 1A/AX=6F01h
  7445. --------N-1A75-------------------------------
  7446. INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
  7447.     AH = 75h
  7448.     AL = ???
  7449. Return: AX = ??? (0000h)
  7450. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  7451.       which implements the Simple Network Application Protocol
  7452. --------N-1A76-------------------------------
  7453. INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
  7454.     AH = 76h
  7455.     AL = ???
  7456. Return: AX = ???
  7457. --------N-1A77-------------------------------
  7458. INT 1A - SNAP.EXE 3.4 - ???
  7459.     AH = 77h
  7460.     AL = ??? (at least 01h)
  7461.     STACK:    WORD    ???
  7462.         ???
  7463. Return: ???
  7464.     STACK unchanged
  7465. --------N-1A7802-----------------------------
  7466. INT 1A - SNAP.EXE 3.4 - ???
  7467.     AX = 7802h
  7468.     STACK:    WORD    ???
  7469.         WORD    ???
  7470. Return: ???
  7471.     STACK unchanged
  7472. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  7473.       which implements the Simple Network Application Protocol
  7474. --------s-1A7F-------------------------------
  7475. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  7476.     AH = 7Fh
  7477.     ???
  7478. Return: ???
  7479. Note:    this function is not supported by the Tandy 1000SL/TL BIOS
  7480. SeeAlso: AH=80h,AH=83h,AH=85h
  7481. --------s-1A80-------------------------------
  7482. INT 1A - PCjr, Tandy 2500???, Tandy 1000SL/TL - SET UP SOUND MULTIPLEXOR
  7483.     AH = 80h
  7484.     AL = 00h source is 8253 channel 2
  7485.          01h source is cassette input
  7486.          02h source is I/O channel "Audio IN"
  7487.          03h source is sound generator chip
  7488. Note:    although documented in the 1000TL Technical Reference, the 1000TL
  7489.       BIOS has just an IRET for this call
  7490. SeeAlso: AH=7Fh,AH=83h
  7491. --------X-1A80-------------------------------
  7492. INT 1A - PCMCIA Socket Services v1.00 - GET NUMBER OF ADAPTERS
  7493.     AH = 80h
  7494. Return: CF clear if successful
  7495.         CX = 5353h ('SS') if Socket Services installed
  7496.         AL = number of adapters present (0-16)
  7497.         AH destroyed
  7498.     CF set on error
  7499.         AH = error code (see #0440)
  7500. SeeAlso: AH=83h"PCMCIA"
  7501.  
  7502. (Table 0440)
  7503. Values for PCMCIA error codes:
  7504.  01h    "BAD_ADAPTER" nonexistent adapter
  7505.  02h    "BAD_ATTRIBUTE" invalid attribute specified
  7506.  03h    "BAD_BASE" invalid system memory base address
  7507.  04h    "BAD_EDC" invalid EDC generator specified
  7508.  05h    "BAD_INDICATOR" invalid indicator specified
  7509.  06h    "BAD_IRQ" invalid IRQ channel specified
  7510.  07h    "BAD_OFFSET" invalid PCMCIA card offset specified
  7511.  08h    "BAD_PAGE" invalid page specified
  7512.  09h    "BAD_READ" unable to complete request
  7513.  0Ah    "BAD_SIZE" invalid window size specified
  7514.  0Bh    "BAD_SOCKET" nonexistent socket specified
  7515.  0Ch    "BAD_TECHNOLOGY" unsupported Card Technology for writes
  7516.  0Dh    "BAD_TYPE" unavailable window type specified
  7517.  0Eh    "BAD_VCC" invalid Vcc power level index specified
  7518.  0Fh    "BAD_VPP" invalid Vpp1 or Vpp2 power level index specified
  7519.  10h    "BAD_WAIT" invalid number of wait states specified
  7520.  11h    "BAD_WINDOW" nonexistent window specified
  7521.  12h    "BAD_WRITE" unable to complete request
  7522.  13h    "NO_ADAPTERS" no adapters installed, but Socket Services is present
  7523.  14h    "NO_CARD" no card in socket
  7524. --------X-1A81-------------------------------
  7525. INT 1A - PCMCIA Socket Services v1.00 - REGISTER STATUS CHANGE CALLBACK
  7526.     AH = 81h
  7527.     DS:DX -> callback routine (see #0441) or 0000h:0000h to disable
  7528. Return: CF clear if successful
  7529.         AH destroyed
  7530.     CF set on error
  7531.         AH = error code (see #0440)
  7532. Note:    the callback will be invoked on any socket changes whose notification
  7533.       has not been disabled with the status change enable mask; it may be
  7534.       invoked either while processing a hardware interrupt from the adapter
  7535.       or while processing the following Socket Services request
  7536. SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA"
  7537.  
  7538. (Table 0441)
  7539. Values PCMCIA callback routine is invoked with:
  7540.     AL = adapter number
  7541.     BH = status change interrupt enable mask (see #0442)
  7542.     BL = socket number
  7543.     DH = current socket status (see #0443)
  7544.     DL = current card status (see #0444)
  7545. Return: all registers preserved
  7546. Notes:    the callback may be invoked during a hardware interrupt, and may not
  7547.       call on Socket Services
  7548.     the callback will be invoked once for each socket with a status change
  7549.  
  7550. Bitfields for PCMCIA status change interrupt enable mask:
  7551. Bit(s)    Description    (Table 0442)
  7552.  7    card detect change
  7553.  6    ready change
  7554.  5    battery warning change
  7555.  4    battery dead change
  7556.  3    insertion request
  7557.  2    ejection request
  7558.  1-0    reserved (0)
  7559.  
  7560. Bitfields for PCMCIA current socket status:
  7561. Bit(s)    Description    (Table 0443)
  7562.  7    card changed
  7563.  6    reserved (0)
  7564.  5    card insertion complete
  7565.  4    card ejection complete
  7566.  3    card insertion request pending
  7567.  2    card ejection request pending
  7568.  1    card locked
  7569.  0    reserved (0)
  7570.  
  7571. Bitfields for PCMCIA current card status:
  7572. Bit(s)    Description    (Table 0444)
  7573.  7    card detect
  7574.  6    ready
  7575.  5    battery voltage detect 2 (battery warning)
  7576.  4    battery voltage detect 1 (battery dead)
  7577.  3-1    reserved (0)
  7578.  0    write protected
  7579. --------s-1A8100-----------------------------
  7580. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
  7581.     AX = 8100h
  7582. Return: AL > 80h if supported
  7583.     AX = 00C4h if supported (1000SL/TL)
  7584.         CF set if sound chip is busy
  7585.         CF clear  if sound chip is free
  7586. Note:    the value of CF is not definitive; call this function until CF is
  7587.       clear on return, then call AH=84h"Tandy"
  7588. --------s-1A82-------------------------------
  7589. INT 1A - Tandy 2500???, Tandy 1000SL/TL - DIGITAL SOUND - RECORD SOUND
  7590.     AH = 82h
  7591.     ES:BX -> buffer for sound samples
  7592.     CX = length of buffer
  7593.     DX = transfer rate (1-4095, 1 is fastest)
  7594. Return: AH = 00h
  7595.     CF set if sound busy
  7596.     CF clear if sound chip free
  7597. Note:    the value in DX should be 1/10 the corresponding value for
  7598.       INT 1A/AH=83h on the 1000TL, 1/11.5 on the 1000SL.  Call
  7599.       INT 1A/AX=8100h and INT 1A/AH=84h before invoking this function.
  7600.     The BIOS issues an INT 15/AX=91FBh when the input is complete
  7601.     DMA across a 64K boundary is masked by the BIOS
  7602. --------X-1A82-------------------------------
  7603. INT 1A - PCMCIA Socket Services v1.00 - REGISTER CARD TECHNOLOGY CALLBACK
  7604.     AH = 82h
  7605.     DS:DX -> callback routine (see #0445) or 0000h:0000h
  7606. Return: CF clear if successful
  7607.         AH destroyed
  7608.     CF set on error
  7609.         AH = error code (see #0440)
  7610. Note:    the callback is invoked on a Write Multiple request with an unsupported
  7611.       card technology type
  7612. SeeAlso: AH=81h"PCMCIA",AH=94h
  7613.  
  7614. (Table 0445)
  7615. Values PCMCIA callback routine is invoked with:
  7616.     ES:AX -> Low-Level Socket Services Routines (see #0447)
  7617.     BH = socket attributes (see #0446)
  7618.     CX = number of bytes or words to write
  7619.     DS:SI -> data buffer to be written
  7620.     DX:DI -> 26-bit linear card address
  7621.     BP = card technology type
  7622. Return: CF clear if successful
  7623.     CF set on error
  7624.         AH = error code (07h,0Ch,12h,14h) (see #0440)
  7625.  
  7626. Bitfields for PCMCIA socket attributes:
  7627. Bit(s)    Description    (Table 0446)
  7628.  7-4    reserved (0)
  7629.  3    packed buffer
  7630.  2    even bytes only (only valid if 1 set)
  7631.  1    data width (clear = byte, set = word)
  7632.  0    memory type (clear = common, set = attribute)
  7633.  
  7634. Format of PCMCIA Low-Level Socket Services Routines:
  7635. Offset    Size    Description    (Table 0447)
  7636.  00h    WORD    offset of Write Many routine (see #0448)
  7637.  02h    WORD    offset of Write One routine (see #0449)
  7638.  04h    WORD    offset of Read One routine (see #0450)
  7639.  06h    WORD    offset of Increment Offset routine (see #0451)
  7640.  08h    WORD    offset of Set Offset routine (see #0452)
  7641.  0Ah    WORD    offset of Get Status routine (see #0453)
  7642.  
  7643. (Table 0448)
  7644. Call Write Many routine with:
  7645.     BH = socket attributes (see #0446)
  7646.     CX = number of bytes or words to write
  7647.     DS:SI -> data to be written
  7648. Return: CF clear if successful
  7649.     CF set on error
  7650.  
  7651. (Table 0449)
  7652. Call Write One routine with:
  7653.     AL/AX = data to be written
  7654.     BH = socket attributes (see #0446)
  7655. Return: CF clear if successful
  7656.     CF set on error
  7657.  
  7658. (Table 0450)
  7659. Call Read One routine with:
  7660.     BH = socket attributes (see #0446)
  7661. Return: CF clear if successful
  7662.         AL/AX = data read
  7663.     CF set on error
  7664.  
  7665. (Table 0451)
  7666. Call Increment Offset routine with:
  7667.     BH = socket attributes (see #0446)
  7668. Return: CF clear if successful
  7669.     CF set on error
  7670.  
  7671. (Table 0452)
  7672. Call Set Offset routine with:
  7673.     DX:DI = new offset address
  7674. Return: CF clear if successful
  7675.     CF set on error
  7676.  
  7677. (Table 0453)
  7678. Call Get Status routine with:
  7679.     nothing
  7680. Return: AL = current card status (see #0444)
  7681. --------s-1A83-------------------------------
  7682. INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
  7683.     AH = 83h
  7684.     AL = volume (0=silence, 7=highest)
  7685.     CX = number of bytes to play
  7686.     DX = time between sound samples (multiples of 273 nanoseconds)
  7687.         only bits 11-0 used
  7688.     ES:BX -> sound data (array of 8-bit unsigned PCM samples)
  7689. Return: AH = 00h
  7690.     CF set if sound is busy
  7691.     CF clear if sound chip is free
  7692. Notes:    this call returns immediately while the sound plays in the
  7693.       background; the sound chip is clocked at 3.57 MHz, with the low 12
  7694.       bits of DX specifying the clock divisor
  7695.     The BIOS appears to call INT 15/AX=91FBh when the sound device
  7696.       underflows to allow another INT 1A/AH=83h for seamless playing of
  7697.       long sounds.
  7698. SeeAlso: AH=84h"Tandy",INT 15/AH=91h
  7699. --------X-1A83-------------------------------
  7700. INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET SERVICES VERSION NUMBER
  7701.     AH = 83h
  7702.     AL = adapter number
  7703. Return: CF clear if successful
  7704.         AX = Socket Services version (BCD)
  7705.         BX = implementation version (BCD)
  7706.         CX = 5353h ("SS")
  7707.         DS:SI -> ASCIZ implementor description
  7708.     CF set on error
  7709.         AH = error code (01h) (see #0440)
  7710. Note:    the current version (from the Revision A.00 documentation) of Socket
  7711.       Services is 1.00 (AX=0100h)
  7712. SeeAlso: AH=80h"PCMCIA"
  7713. --------s-1A84-------------------------------
  7714. INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
  7715.     AH = 84h
  7716. Return: ???
  7717. Note:    the BIOS will call INT 15/AX=91FBh when the sound has stopped playing
  7718. SeeAlso: AH=83h"Tandy",AH=85h"Tandy"
  7719. --------X-1A84-------------------------------
  7720. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ADAPTER
  7721.     AH = 84h
  7722.     AL = adapter number
  7723. Return: CF clear if successful
  7724.         AH destroyed
  7725.         BH = number of windows
  7726.         BL = number of sockets (1-16)
  7727.         CX = number of EDCs
  7728.         DH = capabilities (see #0454)
  7729.         DL = status change interrupt used (only if DH bit 3 set)(see #0455)
  7730.     CF set on error
  7731.         AH = error code (01h) (see #0440)
  7732. SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h
  7733.  
  7734. Bitfields for PCMCIA capabilities:
  7735. Bit(s)    Description    (Table 0454)
  7736.  7-6    reserved (0)
  7737.  5    status change interrupt is hardware shareable
  7738.  4    status change interrupt is software shareable
  7739.  3    status change interrupt
  7740.  2    data bus width is per-socket rather than per-window
  7741.  1    power management is per-adapter rather than per-socket
  7742.  0    indicators are per-adapter rather than per-socket
  7743.  
  7744. (Table 0455)
  7745. Values for PCMCIA status change interrupt usage:
  7746.  00h-0Fh IRQ level
  7747.  10h    NMI
  7748.  11h    I/O check
  7749.  12h    bus error
  7750.  13h    vendor specific
  7751.  14h-FFh reserved
  7752. --------s-1A85-------------------------------
  7753. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  7754.     AH = 85h
  7755.     ???
  7756. Return: ???
  7757. Note:    this function is not supported by the Tandy 1000SL/TL BIOS
  7758. SeeAlso: AH=7Fh,AH=83h"Tandy"
  7759. --------X-1A85-------------------------------
  7760. INT 1A - PCMCIA Socket Services v1.00 - GET ADAPTER
  7761.     AH = 85h
  7762.     AL = adapter number
  7763. Return: CF clear if successful
  7764.         AH destroyed
  7765.         DH = adapter attributes (see #0456)
  7766.     CF set on error
  7767.         AH = error code (01h) (see #0440)
  7768. SeeAlso: AH=84h"PCMCIA",AH=86h
  7769.  
  7770. Bitfields for PCMCIA adapter attributes:
  7771. Bit(s)    Description    (Table 0456)
  7772.  7-5    reserved (0)
  7773.  4    hardware share status change
  7774.  3    software share status change
  7775.  2    enable status change interrupts
  7776.  1    adapter preserves state information during reduced power consumption
  7777.  0    attempting to reduce power consumption
  7778. --------X-1A86-------------------------------
  7779. INT 1A - PCMCIA Socket Services v1.00 - SET ADAPTER
  7780.     AH = 86h
  7781.     AL = adapter number
  7782.     DH = new adapter attributes (see #0456)
  7783. Return: CF clear if successful
  7784.         AH destroyed
  7785.     CF set on error
  7786.         AH = error code (01h) (see #0440)
  7787. SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA"
  7788. --------X-1A87-------------------------------
  7789. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE WINDOW
  7790.     AH = 87h
  7791.     AL = adapter number
  7792.     BH = window number
  7793. Return: CF clear if successful
  7794.         AH destroyed
  7795.         BL = capabilities (see #0457)
  7796.         CX = bitmap of assignable sockets
  7797.         DH = EISA A15-A12 address lines (in bits 7-4, bits 3-0 = 0)
  7798.         DL = supported access speeds (see #0458)
  7799.         DS:SI -> Memory Window Characteristics table (see #0459)
  7800.         DS:DI -> I/O Window Characteristics table (see #0460)
  7801.     CF set on error
  7802.         AH = error code (01h,11h) (see #0440)
  7803. SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch
  7804.  
  7805. Bitfields for PCMCIA window capabilities:
  7806. Bit(s)    Description    (Table 0457)
  7807.  7-5    reserved (0)
  7808.  4    separate enable for EISA comon space
  7809.  3    EISA I/O mappable
  7810.  2    I/O space
  7811.  1    attribute memory
  7812.  0    common memory
  7813.  
  7814. Bitfields for PCMCIA supported access speeds:
  7815. Bit(s)    Description    (Table 0458)
  7816.  7    reserved (0)
  7817.  6    600 ns
  7818.  5    300 ns
  7819.  4    250 ns
  7820.  3    200 ns
  7821.  2    150 ns
  7822.  1    100 ns
  7823.  0    WAIT line monitoring
  7824.  
  7825. Format of PCMCIA Memory Window Characteristics table:
  7826. Offset    Size    Description    (Table 0459)
  7827.  00h    WORD    window capabilities (see #0461)
  7828.  02h    WORD    minimum base address in 4K pages
  7829.  04h    WORD    maximum base address in 4K pages
  7830.  06h    WORD    minimum window size in 4K pages
  7831.  08h    WORD    maximum window size in 4K pages
  7832.  0Ah    WORD    window size granularity (4K units)
  7833.  0Ch    WORD    required base address alignment (4K units)
  7834.  0Eh    WORD    required card offset alignment (4K units)
  7835.  
  7836. Format of PCMCIA I/O Window Characteristics table:
  7837. Offset    Size    Description    (Table 0460)
  7838.  00h    WORD    window capabilities (see #0461)
  7839.  02h    WORD    minimum base address in bytes
  7840.  04h    WORD    maximum base address in bytes
  7841.  06h    WORD    minimum window size in bytes
  7842.  08h    WORD    maximum window size in bytes
  7843.  0Ah    WORD    window size granularity (bytes)
  7844.  
  7845. Bitfields for PCMCIA window capabilities:
  7846. Bit(s)    Description    (Table 0461)
  7847.  0    programmable base address
  7848.  1    programmable window size
  7849.  2    window disable/enable supported
  7850.  3    8-data bus
  7851.  4    16-data bus
  7852.  5    base address alignment on size boundary required
  7853.  6    power-of-two size granularity
  7854. ---memory windows---
  7855.  7    card offset must be aligned on size boundary
  7856.  8    paging hardware available
  7857.  9    paging hardware shared
  7858.  10    page disable/enable supported
  7859.  11-15    reserved (0)
  7860. ---I/O windows---
  7861.  7-15    reserved (0)
  7862. --------X-1A88-------------------------------
  7863. INT 1A - PCMCIA Socket Services v1.00 - GET WINDOW
  7864.     AH = 88h
  7865.     AL = adapter number
  7866.     BH = window number
  7867. Return: CF clear if successful
  7868.         AH destroyed
  7869.         BL = socket number (0-16) (0 = not assigned)
  7870.         CX = window size (bytes for I/O window, 4K units for memory window)
  7871.         DH = window attributes (see #0462)
  7872.         DL = access speed (only one bit set) (see #0458)
  7873.         SI = window base address (bytes if I/O, 4K units if memory)
  7874.         DI = card offset address (memory only, 4K units)
  7875.     CF set on error
  7876.         AH = error code (01h,11h) (see #0440)
  7877. SeeAlso: AH=87h,AH=89h,AH=8Ah
  7878.  
  7879. Bitfields for PCMCIA window attributes:
  7880. Bit(s)    Description    (Table 0462)
  7881.  0    memory-mapped rather than I/O-mapped
  7882.  1    attribute memory rather than common (memory-mapped)
  7883.     EISA mapped (I/O)
  7884.  2    enabled
  7885.  3    16-data path
  7886.  4    subdivided into pages (memory-mapped only)
  7887.  5    non-specific access slot enable (EISA-mapped only)
  7888.  6-7    reserved (0)
  7889. --------X-1A89-------------------------------
  7890. INT 1A - PCMCIA Socket Services v1.00 - SET WINDOW
  7891.     AH = 89h
  7892.     AL = adapter number
  7893.     BH = window number
  7894.     BL = socket number
  7895.     CX = window size (bytes if I/O window, 4K units if memory window)
  7896.     DH = window attributes (see #0462)
  7897.     DL = access speed (only one bit set) (see #0458)
  7898.     SI = window base address (bytes if I/O, 4K units if memory window)
  7899.     DI = card offset addrress (memory only, 4K units)
  7900. Return: CF clear if successful
  7901.         AH destroyed
  7902.     CF set on error
  7903.         AH = error code (01h,03h,07h,08h,0Ah,0Bh,0Dh,10h,11h) (see #0440)
  7904. SeeAlso: AH=87h,AH=88h,AH=8Bh
  7905. --------X-1A8A-------------------------------
  7906. INT 1A - PCMCIA Socket Services v1.00 - GET PAGE
  7907.     AH = 8Ah
  7908.     AL = adapter number
  7909.     BH = window number
  7910.     BL = page number
  7911. Return: CF clear if successful
  7912.         AH destroyed
  7913.         DX = page attributes (see #0463)
  7914.         DI = memory card offset (4K units)
  7915.     CF set on error
  7916.         AH = error code (01h,08h,11h) (see #0440)
  7917. Notes:    this function is only valid for memory-mapped windows
  7918.     the socket being operated on is implied by the previous AH=89h call
  7919. SeeAlso: AH=88h,AH=8Bh
  7920.  
  7921. Bitfields for PCMCIA page attributes:
  7922. Bit(s)    Description    (Table 0463)
  7923.  0    page enabled
  7924.  15-1    reserved (0)
  7925. --------X-1A8B-------------------------------
  7926. INT 1A - PCMCIA Socket Services v1.00 - SET PAGE
  7927.     AH = 8Bh
  7928.     AL = adapter number
  7929.     BH = window number
  7930.     BL = page number
  7931.     DX = page attributes (see #0463)
  7932.     DI = memory card offset (4K units)
  7933. Return: CF clear if successful
  7934.         AH destroyed
  7935.     CF set on error
  7936.         AH = error code (01h,02h,07h,08h,11h) (see #0440)
  7937. Notes:    this function is only valid for memory-mapped windows
  7938.     the socket being operated on is implied by the previous AH=89h call
  7939. SeeAlso: AH=89h,AH=8Ah
  7940. --------X-1A8C-------------------------------
  7941. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE SOCKET
  7942.     AH = 8Ch
  7943.     AL = adapter number
  7944.     BL = socket number (01h to maximum supported by adapter)
  7945. Return: CF clear if successful
  7946.         AH destroyed
  7947.         DH = capabilities (see #0464)
  7948.         DL = hardware indicators (see #0465)
  7949.         DS:SI -> Socket Characteristics table (see #0466)
  7950.         DS:DI -> Power Management table (see #0468)
  7951.     CF set on error
  7952.         AH = error code (01h,0Bh) (see #0440)
  7953. SeeAlso: AH=87h,AH=8Dh,AH=8Eh
  7954.  
  7955. Bitfields for PCMCIA socket capabilities:
  7956. Bit(s)    Description    (Table 0464)
  7957.  0    card change
  7958.  1    card lock
  7959.  2    insert card (motor control)
  7960.  3    eject card (motor control)
  7961.  4-7    reserved (0)
  7962.  
  7963. Bitfields for PCMCIA socket hardware indicators:
  7964. Bit(s)    Description    (Table 0465)
  7965.  0    busy status
  7966.  1    write-protected
  7967.  2    battery status
  7968.  3    card lock status
  7969.  4    XIP status (eXecute-In-Place)
  7970.  5-7    reserved (0)
  7971.  
  7972. Format of PCMCIA Socket Characteristics table:
  7973. Offset    Size    Description    (Table 0466)
  7974.  00h    WORD    supported card types (see #0467)
  7975.  02h    WORD    steerable IRQ levels (bit 0 = IRQ0 to bit 15 = IRQ15)
  7976.  04h    WORD    additional steerable IRQ levels
  7977.         bit 0: NMI
  7978.         bit 1: I/O check
  7979.         bit 2: bus error
  7980.         bit 3: vendor-unique
  7981.         bits 4-7 reserved (0)
  7982.  
  7983. Bitfields for supported card types:
  7984. Bit(s)    Description    (Table 0467)
  7985.  0    memory card
  7986.  1    I/O card
  7987.  2-7    reserved (0)
  7988.  
  7989. Format of PCMCIA Power Management table:
  7990. Offset    Size    Description    (Table 0468)
  7991.  00h    WORD    number of entries in table (0 if power management not avail)
  7992.  02h 2N BYTEs    power levels
  7993.         byte 0: voltage in 0.1V units
  7994.         byte 1: power supply
  7995.             bit 7: Vcc
  7996.             bit 6: Vpp1
  7997.             bit 5: Vpp2
  7998. --------X-1A8D-------------------------------
  7999. INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET
  8000.     AH = 8Dh
  8001.     AL = adapter number
  8002.     BL = socket number (01h to maximum supported by adapter)
  8003. Return: CF clear if successful
  8004.         AH destroyed
  8005.         BH = status change interrupt enable mask (see #0442)
  8006.         CH = Vcc level (lower nybble) (see #0468)
  8007.         CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
  8008.         DH = current socket status (see #0443)
  8009.         DL = indicators (see #0465)
  8010.         SI = card type (see #0469)
  8011.         DI = IRQ level steering (I/O only) (see #0470)
  8012.     CF set on error
  8013.         AH = error code (01h,0Bh) (see #0440)
  8014. SeeAlso: AH=8Ch,AH=8Eh
  8015.  
  8016. Bitfields for PCMCIA card type:
  8017. Bit(s)    Description    (Table 0469)
  8018.  0    memory
  8019.  1    I/O
  8020.  2-15    reserved (0)
  8021.  
  8022. Bitfields for PCMCIA I/O level steering:
  8023. Bit(s)    Description    (Table 0470)
  8024.  15    interrupt steering enabled
  8025.  14-5    reserved (0)
  8026.  4-0    IRQ level (0-15=IRQ,16=NMI,17=I/O check,18=bus error,19=vendor)
  8027. --------X-1A8E-------------------------------
  8028. INT 1A - PCMCIA Socket Services v1.00 - SET SOCKET
  8029.     AH = 8Eh
  8030.     AL = adapter number
  8031.     BL = socket number (01h to maximum supported by adapter)
  8032.     BH = status change interrupt enable mask (see #0442)
  8033.     CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
  8034.     DH = current socket status (see #0443)
  8035.     DL = indicators (see #0465)
  8036.     SI = card type (see #0469)
  8037.     DI = IRQ level steering (I/O only) (see #0470)
  8038. Return: CF clear if successful
  8039.         AH destroyed
  8040.     CF set on error
  8041.         AH = error code (01h,02h,05h,06h,0Bh,0Eh,0Fh) (see #0440)
  8042. SeeAlso: AH=8Ch,AH=8Dh
  8043. --------X-1A8F-------------------------------
  8044. INT 1A - PCMCIA Socket Services v1.00 - GET CARD
  8045.     AH = 8Fh
  8046.     AL = adapter number
  8047.     BL = socket number (01h to maximum supported by adapter)
  8048. Return: CF clear if successful
  8049.         AH destroyed
  8050.         DL = current card status (see #0444)
  8051.     CF set on error
  8052.         AH = error code (01h,0Bh) (see #0440)
  8053. SeeAlso: AH=8Dh,AH=90h
  8054. --------X-1A90-------------------------------
  8055. INT 1A - PCMCIA Socket Services v1.00 - RESET CARD
  8056.     AH = 90h
  8057.     AL = adapter number
  8058.     BL = socket number (01h to maximum supported by adapter)
  8059. Return: CF clear if successful
  8060.         AH destroyed
  8061.     CF set on error
  8062.         AH = error code (01h,0Bh,14h) (see #0440)
  8063. Note:    toggles RESET pin of the specified card, but does not wait after
  8064.       toggling the pin; it is the caller's responsibility to avoid
  8065.       accessing the card before it is ready again
  8066. --------X-1A91-------------------------------
  8067. INT 1A - PCMCIA Socket Services v1.00 - READ ONE
  8068.     AH = 91h
  8069.     AL = adapter number
  8070.     BL = socket number (01h to maximum supported by adapter)
  8071.     BH = attributes (see #0471)
  8072.     DX:SI = card address
  8073. Return: CF clear if successful
  8074.         AH destroyed
  8075.         CL/CX = value read
  8076.     CF set on error
  8077.         AH = error code (01h,07h,09h,0Bh,14h) (see #0440)
  8078.         CX may be destroyed
  8079. Note:    this function is only valid for I/O-mapped sockets
  8080. SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
  8081.  
  8082. Bitfields for PCMCIA attributes:
  8083. Bit(s)    Description    (Table 0471)
  8084.  2    even bytes only
  8085.  1    word rather than byte
  8086.  0    attribute memory instead of common memory
  8087. --------X-1A92-------------------------------
  8088. INT 1A - PCMCIA Socket Services v1.00 - WRITE ONE
  8089.     AH = 92h
  8090.     AL = adapter number
  8091.     BL = socket number (01h to maximum supported by adapter)
  8092.     BH = attributes (see #0471)
  8093.     CL/CX = value to write
  8094.     DX:SI = card address
  8095. Return: CF clear if successful
  8096.         AH destroyed
  8097.     CF set on error
  8098.         AH = error code (01h,07h,0Bh,12h,14h) (see #0440)
  8099. Note:    this function is only valid for I/O-mapped sockets; it also does not
  8100.       implement Card Technology handling--use AH=94h when writing to
  8101.       non-RAM technologies
  8102. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
  8103. --------X-1A93-------------------------------
  8104. INT 1A - PCMCIA Socket Services v1.00 - READ MULTIPLE
  8105.     AH = 93h
  8106.     AL = adapter number
  8107.     BL = socket number (01h to maximum supported by adapter)
  8108.     BH = attributes (see #0471)
  8109.     CX = number of bytes or words to read
  8110.     DX:SI = card address
  8111.     DS:DI -> data buffer to be filled
  8112. Return: CF clear if successful
  8113.         AH destroyed
  8114.     CF set on error
  8115.         AH = error code (01h,07h,09h,0Bh,14h) (see #0440)
  8116. Note:    this function is only available on I/O-mapped sockets
  8117. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
  8118. --------X-1A94-------------------------------
  8119. INT 1A - PCMCIA Socket Services v1.00 - WRITE MULTIPLE
  8120.     AH = 94h
  8121.     AL = adapter number
  8122.     BL = socket number (01h to maximum supported by adapter)
  8123.     BH = attributes (see #0471)
  8124.     CX = number of bytes or words to read
  8125.     DX:DI = card address
  8126.     DS:SI -> buffer containing data
  8127.     BP = Card Technology type (0000h = RAM)
  8128. Return: CF clear if successful
  8129.         AH destroyed
  8130.     CF set on error
  8131.         AH = error code (01h,07h,0Bh,0Ch,12h,14h) (see #0440)
  8132. Notes:    this function is only available on I/O-mapped sockets
  8133.     Socket Services calls the Card Technology callback (see #0445) for
  8134.       any card technology it does not directly support
  8135. SeeAlso: AH=82h"PCMCIA",AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
  8136. --------X-1A95-------------------------------
  8137. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ERROR DETECTION CODE
  8138.     AH = 95h
  8139.     AL = adapter number
  8140.     BH = EDC generator number
  8141. Return: CF clear if successful
  8142.         AH destroyed
  8143.         CX = bitmap of assignable sockets
  8144.         DH = EDC capabilities (see #0472)
  8145.         DL = supported EDC types (see #0473)
  8146.     CF set on error
  8147.         AH = error code (01h,04h) (see #0440)
  8148. SeeAlso: AH=96h,AH=9Ch
  8149.  
  8150. Bitfields for EDC capabilities:
  8151. Bit(s)    Description    (Table 0472)
  8152.  0    unidirectional only generation
  8153.  1    bidirectional only generation
  8154.  2    register-based (I/O-mapped) support
  8155.  3    memory-mapped support
  8156.  4    pausable
  8157.  5-7    reserved (0)
  8158.  
  8159. Bitfields for supported EDC types:
  8160. Bit(s)    Description    (Table 0473)
  8161.  0    8-checksum
  8162.  1    16-CRC-SDLC
  8163.  2-7    reserved (0)
  8164. --------X-1A96-------------------------------
  8165. INT 1A - PCMCIA Socket Services v1.00 - GET ERROR DETECTION CODE
  8166.     AH = 96h
  8167.     AL = adapter number
  8168.     BH = EDC generator number
  8169. Return: CF clear if successful
  8170.         AH destroyed
  8171.         BL = socket number
  8172.         DH = EDC attributes (see #0474)
  8173.         DL = EDC type (see #0473) (only one bit set)
  8174.     CF set on error
  8175.         AH = error code (01h,04h) (see #0440)
  8176. SeeAlso: AH=95h,AH=97h,AH=9Ch
  8177.  
  8178. Bitfields for EDC attributes:
  8179. Bit(s)    Description    (Table 0474)
  8180.  0    unidirectional only
  8181.  1    (if 0 set) clear=read, set=write
  8182.  2-7    reserved (0)
  8183. --------X-1A97-------------------------------
  8184. INT 1A - PCMCIA Socket Services v1.00 - SET ERROR DETECTION CODE
  8185.     AH = 97h
  8186.     AL = adapter number
  8187.     BH = EDC generator
  8188.     BL = socket number
  8189.     DH = EDC attributes (see #0474)
  8190.     DL = EDC type (see #0473) (only one bit may be set)
  8191. Return: CF clear if successful
  8192.         AH destroyed
  8193.     CF set on error
  8194.         AH = error code (01h,02h,04h,0Bh) (see #0440)
  8195. SeeAlso: AH=96h,AH=9Ch
  8196. --------X-1A98-------------------------------
  8197. INT 1A - PCMCIA Socket Services v1.00 - START ERROR DETECTION CODE
  8198.     AH = 98h
  8199.     AL = adapter number
  8200.     BH = EDC generator
  8201. Return: CF clear if successful
  8202.         AH destroyed
  8203.     CF set on error
  8204.         AH = error code (01h,04h) (see #0440)
  8205. SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch
  8206. --------X-1A99-------------------------------
  8207. INT 1A - PCMCIA Socket Services v1.00 - PAUSE ERROR DETECTION CODE
  8208.     AH = 99h
  8209.     AL = adapter number
  8210.     BH = EDC generator
  8211. Return: CF clear if successful
  8212.         AH destroyed
  8213.     CF set on error
  8214.         AH = error code (01h,04h) (see #0440)
  8215. SeeAlso: AH=9Ah
  8216. --------X-1A9A-------------------------------
  8217. INT 1A - PCMCIA Socket Services v1.00 - RESUME ERROR DETECTION CODE
  8218.     AH = 9Ah
  8219.     AL = adapter number
  8220.     BH = EDC generator
  8221. Return: CF clear if successful
  8222.         AH destroyed
  8223.     CF set on error
  8224.         AH = error code (01h,04h) (see #0440)
  8225. SeeAlso: AH=99h,AH=98h
  8226. --------X-1A9B-------------------------------
  8227. INT 1A - PCMCIA Socket Services v1.00 - STOP ERROR DETECTION CODE
  8228.     AH = 9Bh
  8229.     AL = adapter number
  8230.     BH = EDC generator
  8231. Return: CF clear if successful
  8232.         AH destroyed
  8233.     CF set on error
  8234.         AH = error code (see #0440)
  8235. SeeAlso: AH=98h,AH=99h,AH=9Ch
  8236. --------X-1A9C-------------------------------
  8237. INT 1A - PCMCIA Socket Services v1.00 - READ ERROR DETECTION CODE
  8238.     AH = 9Ch
  8239.     AL = adapter number
  8240.     BH = EDC generator
  8241. Return: CF clear if successful
  8242.         AH destroyed
  8243.         DL/DX = computed checksum or CRC
  8244.     CF set on error
  8245.         AH = error code (01h,04h) (see #0440)
  8246. SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh
  8247. --------c-1AA0-------------------------------
  8248. INT 1A U - Disk Spool II v2.07+ - INSTALLATION CHECK
  8249.     AH = A0h
  8250. Return: AH = B0h if installed
  8251.         AL = pending INT 1A/AH=D0h subfunction if nonzero???
  8252.         ES = code segment
  8253.         ES:BX -> name of current spool file
  8254.         ES:SI -> current despool file
  8255.         CL = despooler state (00h disabled, 41h enabled)
  8256.         CH = spooler state (00h disabled, 41h enabled)
  8257.         DL = despooler activity
  8258.         00h currently active printing a file
  8259.         41h standing by
  8260.         DH = 00h ???
  8261.            = 41h ???
  8262.         DI = 0000h ???
  8263.          0001h ???
  8264. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  8265.       Software Company
  8266. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8267.       as that is a licensed version of Disk Spool II
  8268. SeeAlso: AH=ABh,AH=C0h,AH=D0h,AH=E1h
  8269. --------c-1AAB-------------------------------
  8270. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  8271.     AH = ABh
  8272. Return: AH = BAh if installed
  8273.         AL = pending INT 1A/AH=ADh subfunction if nonzero???
  8274.         ES = code segment
  8275.         ES:BX -> name of current spool file
  8276.         ES:SI -> current despool file
  8277.         CL = despooler state (00h disabled, 41h enabled)
  8278.         CH = spooler state (00h disabled, 41h enabled)
  8279.         DL = despooler activity
  8280.         00h currently active printing a file
  8281.         41h standing by
  8282.         DH = 00h ???
  8283.            = 41h ???
  8284.         DI = 0000h ???
  8285.          0001h ???
  8286. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  8287.       Software Company
  8288. SeeAlso: AH=A0h,AH=ACh,AH=ADh,AH=E1h
  8289. --------c-1AAC-------------------------------
  8290. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  8291.     AH = ACh
  8292. Return: (see AH=ABh)
  8293. Note:    this function is identical to AH=ABh
  8294. SeeAlso: AH=A0h,AH=ABh,AH=ADh
  8295. --------c-1AAD-------------------------------
  8296. INT 1A U - Disk Spool II v1.83 - FUNCTION CALLS
  8297.     AH = ADh
  8298.     AL = function code (see #0475)
  8299. Return: AH = 00h if successful
  8300. SeeAlso: AH=ABh
  8301.  
  8302. (Table 0475)
  8303. Values for Disk Spool function code:
  8304.  02h    enable spooler only
  8305.  03h    enable the despooler
  8306.  04h    disable the despooler
  8307.  08h    inhibit popup menu
  8308.  09h    enable popup menu
  8309.  0Ah    ???
  8310.  0Bh    disable the spooler
  8311.  0Ch    start despooler after last successfully printed document???
  8312.  0Dh    start despooler at the exact point where it last left off???
  8313.  0Eh    pop up the menu
  8314.  0Fh    ???
  8315.  11h    ???
  8316.  14h    ???
  8317.  15h    ???
  8318.  16h    ???
  8319.  17h    ???
  8320.  18h    ???
  8321.  19h    ???
  8322.  20h    clear file pointed to by the despooler???
  8323.  21h    ???
  8324.  22h    ???
  8325.  23h    ???
  8326.  30h    ???
  8327. --------d-1AB001CX4D52-----------------------
  8328. INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
  8329.     AX = B001h
  8330.     CX = 4D52h ("MR")
  8331.     DX = 4349h ("CI")
  8332. Return: CX = 4943h ("IC") if installed
  8333.     DX = 524Dh ("RM") if installed
  8334.         ES:DI -> MRCINFO structure (see #0476)
  8335. Note:    this call is functionally identical to INT 2F/AX=4A12h, which should
  8336.       be called first, as this call is used for the first, ROM-based
  8337.       MRCI server, while the other call is used for RAM-based servers
  8338.       which may be partially or entirely replacing a prior server
  8339. SeeAlso: INT 2F/AX=4A12h
  8340.  
  8341. Format of MRCINFO structure:
  8342. Offset    Size    Description    (Table 0476)
  8343.  00h  4 BYTEs    vendor signature
  8344.         "MSFT" Microsoft
  8345.  04h    WORD    server version (high=major)
  8346.  06h    WORD    MRCI specification version
  8347.  08h    DWORD    address of server entry point (see #0478)
  8348.  0Ch    WORD    bit flags: server capabilities (see #0477)
  8349.  0Eh    WORD    bit flags: hardware assisted capabilities (see #0477)
  8350.  10h    WORD    maximum block size supported by server (at least 8192 bytes)
  8351.  
  8352. Bitfields for MRCI capabilities:
  8353. Bit(s)    Description    (Table 0477)
  8354.  0    standard compress
  8355.  1    standard decompress
  8356.  2    update compress
  8357.  3    MaxCompress (not present in initial public release)
  8358.  4    reserved
  8359.  5    incremental decompress
  8360.  6-14    reserved
  8361.  15    this structure is in ROM and can't be modified
  8362.     (server capabilities only)
  8363.  
  8364. (Table 0478)
  8365. Call MRCI entry point with:
  8366.     DS:SI -> MRCREQUEST structure (see #0479)
  8367.     CX = type of client (0000h application, 0001h file system)
  8368.     AX = operation
  8369.         0001h perform standard compression
  8370.         0002h perform standard decompression
  8371.         0004h perform update compression
  8372.         0008h perform MaxCompress
  8373.         0020h perform incremental decompression
  8374.     AX = FFFFh clear flags
  8375.         BX = bitmask of flags to clear (set bits in BX are flags to clear)
  8376. Return: AX = status
  8377.         0000h successful
  8378.         0001h invalid function
  8379.         0002h server busy, try again
  8380.         0003h destination buffer too small
  8381.         0004h incompressible data
  8382.         0005h bad compressed data format
  8383.     BP destroyed (MS-DOS 6.2)
  8384. Note:    MRCI driver may chain to a previous driver
  8385.  
  8386. Format of MRCREQUEST structure:
  8387. Offset    Size    Description    (Table 0479)
  8388.  00h    DWORD    pointer to source buffer
  8389.  04h    WORD    size of source buffer (0000h = 64K)
  8390.  06h    WORD    (UpdateCompress only)
  8391.         (call) offset in source buffer of beginning of changed data
  8392.         (return) offset in destination buffer of beginning of changed
  8393.               compressed data
  8394.  08h    DWORD    pointer to destination buffer
  8395.         must contain original compressed data for UpdateCompress
  8396.  0Ch    WORD    size of destination buffer (0000h = 64K)
  8397.         any compression: size of buffer for compressed data
  8398.         standard decompression: number of bytes to be decompressed
  8399.         incremental decompression: number of byte to decompress now
  8400.         (return) actual size of resulting data
  8401.  0Eh    WORD    client compressed data storage allocation size
  8402.  10h    DWORD    incremental decompression state data
  8403.         set to 00000000h before first incremental decompression call
  8404. Notes:    the source and destination buffers may not overlap
  8405.     the source and destination buffer sizes should normally be the same
  8406.     application should not update the contents of the MRCREQUEST structure
  8407.       between incremental decompression calls
  8408. --------X-1AB101-----------------------------
  8409. INT 1A - Intel PCI BIOS v2.0c - INSTALLATION CHECK
  8410.     AX = B101h
  8411. Return: AH = 00h if installed
  8412.         CF clear
  8413.         EDX = 20494350h (' ICP')
  8414.         EDI = physical address of protected-mode entry point (see #0481)
  8415.         AL = PCI hardware characteristics (see #0480)
  8416.         BH = PCI interface level major version (BCD)
  8417.         BL = PCI interface level minor version (BCD)
  8418.         CL = number of last PCI bus in system
  8419.     EAX, EBX, ECX, and EDX may be modified
  8420.     all other flags (except IF) may be modified
  8421. Note:    this function may require up to 1024 byte of stack; it will not enable
  8422.       interrupts if they were disabled before making the call
  8423. SeeAlso: AX=B181h
  8424.  
  8425. Bitfields for PCI hardware characteristics:
  8426. Bit(s)    Description    (Table 0480)
  8427.  0    configuration space access mechanism 1 supported
  8428.  1    configuration space access mechanism 2 supported
  8429.  2-3    reserved
  8430.  4    Special Cycle generation mechanism 1 supported
  8431.  5    Special Cycle generation mechanism 2 supported
  8432.  6-7    reserved
  8433.  
  8434. (Table 0481)
  8435. Call protected-mode entry point with:
  8436.     registers as for real/V86-mode INT call
  8437.     CS = ring 0 descriptor with access to full address space
  8438. Return: as for real/V86-mode call
  8439. --------X-1AB102-----------------------------
  8440. INT 1A - Intel PCI BIOS v2.0c - FIND PCI DEVICE
  8441.     AX = B102h
  8442.     CX = device ID
  8443.     DX = vendor ID
  8444.     SI = device index (0-n)
  8445. Return: CF clear if successful
  8446.     CF set on error
  8447.     AH = status
  8448.         00h successful
  8449.         BL = bus number
  8450.         BH = device/function number (bits 7-3 device, bits 2-0 func)
  8451.         83h bad vendor ID
  8452.         86h device not found
  8453.     EAX, EBX, ECX, and EDX may be modified
  8454.     all other flags (except IF) may be modified
  8455. Notes:    this function may require up to 1024 byte of stack; it will not enable
  8456.       interrupts if they were disabled before making the call
  8457.     device ID FFFFh may be reserved as a wildcard in future implementations
  8458.     the meanings of BL and BH on return may be exchanged in future
  8459.       implementations
  8460.     all devices sharing a single vendor ID and device ID may be enumerated
  8461.       by incrementing SI from 0 until error 86h is returned
  8462. SeeAlso: AX=B182h
  8463. --------X-1AB103-----------------------------
  8464. INT 1A - Intel PCI BIOS v2.0c - FIND PCI CLASS CODE
  8465.     AX = B103h
  8466.     ECX = class code (bits 23-0)
  8467.     SI = device index (0-n)
  8468. Return: CF clear if successful
  8469.     CF set on error
  8470.     AH = status
  8471.         00h successful
  8472.         BL = bus number
  8473.         BH = device/function number (bits 7-3 device, bits 2-0 func)
  8474.         86h device not found
  8475.     EAX, EBX, ECX, and EDX may be modified
  8476.     all other flags (except IF) may be modified
  8477. Notes:    this function may require up to 1024 byte of stack; it will not enable
  8478.       interrupts if they were disabled before making the call
  8479.     the meanings of BL and BH on return may be exchanged in future
  8480.       implementations
  8481.     all devices sharing the same Class Code may be enumerated by
  8482.       incrementing SI from 0 until error 86h is returned
  8483. SeeAlso: AX=B183h
  8484. --------X-1AB106-----------------------------
  8485. INT 1A - Intel PCI BIOS v2.0c - PCI BUS-SPECIFIC OPERATIONS
  8486.     AX = B106h
  8487.     BL = bus number
  8488.     EDX = Special Cycle data
  8489. Return: CF clear if successful
  8490.     CF set on error
  8491.     AH = status
  8492.         00h successful
  8493.         81h unsupported function
  8494.     EAX, EBX, ECX, and EDX may be modified
  8495.     all other flags (except IF) may be modified
  8496. Note:    this function may require up to 1024 byte of stack; it will not enable
  8497.       interrupts if they were disabled before making the call
  8498. SeeAlso: AX=B186h
  8499. --------X-1AB108-----------------------------
  8500. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION BYTE
  8501.     AX = B108h
  8502.     BL = bus number
  8503.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8504.     DI = register number (0000h-00FFh)
  8505. Return: CF clear if successful
  8506.         CL = byte read
  8507.     CF set on error
  8508.     AH = status
  8509.         00h successful
  8510.         87h bad register number
  8511.     EAX, EBX, ECX, and EDX may be modified
  8512.     all other flags (except IF) may be modified
  8513. Notes:    this function may require up to 1024 byte of stack; it will not enable
  8514.       interrupts if they were disabled before making the call
  8515.     the meanings of BL and BH on entry may be exchanged in future
  8516.       implementations
  8517. SeeAlso: AX=B188h
  8518. --------X-1AB109-----------------------------
  8519. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION WORD
  8520.     AX = B109h
  8521.     BL = bus number
  8522.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8523.     DI = register number (0000h-00FFh)
  8524. Return: CF clear if successful
  8525.         CX = word read
  8526.     CF set on error
  8527.     AH = status
  8528.         00h successful
  8529.         87h bad register number
  8530.     EAX, EBX, ECX, and EDX may be modified
  8531.     all other flags (except IF) may be modified
  8532. Notes:    this function may require up to 1024 byte of stack; it will not enable
  8533.       interrupts if they were disabled before making the call
  8534.     the meanings of BL and BH on entry may be exchanged in future
  8535.       implementations
  8536. SeeAlso: AX=B189h
  8537. --------X-1AB10A-----------------------------
  8538. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION DWORD
  8539.     AX = B10Ah
  8540.     BL = bus number
  8541.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8542.     DI = register number (0000h-00FFh)
  8543. Return: CF clear if successful
  8544.         ECX = dword read
  8545.     CF set on error
  8546.     AH = status
  8547.         00h successful
  8548.         87h bad register number
  8549.     EAX, EBX, ECX, and EDX may be modified
  8550.     all other flags (except IF) may be modified
  8551. Notes:    this function may require up to 1024 byte of stack; it will not enable
  8552.       interrupts if they were disabled before making the call
  8553.     the meanings of BL and BH on entry may be exchanged in future
  8554.       implementations
  8555. SeeAlso: AX=B18Ah
  8556. --------X-1AB10B-----------------------------
  8557. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION BYTE
  8558.     AX = B10Bh
  8559.     BL = bus number
  8560.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8561.     DI = register number (0000h-00FFh)
  8562.     CL = byte to write
  8563. Return: CF clear if successful
  8564.     CF set on error
  8565.     AH = status
  8566.         00h successful
  8567.         87h bad register number
  8568.     EAX, EBX, ECX, and EDX may be modified
  8569.     all other flags (except IF) may be modified
  8570. Notes:    this function may require up to 1024 byte of stack; it will not enable
  8571.       interrupts if they were disabled before making the call
  8572.     the meanings of BL and BH on entry may be exchanged in future
  8573.       implementations
  8574. SeeAlso: AX=B18Bh
  8575. --------X-1AB10C-----------------------------
  8576. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION WORD
  8577.     AX = B10Ch
  8578.     BL = bus number
  8579.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8580.     DI = register number (multiple of 2 less than 0100h)
  8581.     CX = word to write
  8582. Return: CF clear if successful
  8583.     CF set on error
  8584.     AH = status
  8585.         00h successful
  8586.         87h bad register number
  8587.     EAX, EBX, ECX, and EDX may be modified
  8588.     all other flags (except IF) may be modified
  8589. Notes:    this function may require up to 1024 byte of stack; it will not enable
  8590.       interrupts if they were disabled before making the call
  8591.     the meanings of BL and BH on entry may be exchanged in future
  8592.       implementations
  8593. SeeAlso: AX=B18Ch
  8594. --------X-1AB10D-----------------------------
  8595. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION DWORD
  8596.     AX = B10Dh
  8597.     BL = bus number
  8598.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8599.     DI = register number (multiple of 4 less than 0100h)
  8600.     ECX = dword to write
  8601. Return: CF clear if successful
  8602.     CF set on error
  8603.     AH = status
  8604.         00h successful
  8605.         87h bad register number
  8606.     EAX, EBX, ECX, and EDX may be modified
  8607.     all other flags (except IF) may be modified
  8608. Notes:    this function may require up to 1024 byte of stack; it will not enable
  8609.       interrupts if they were disabled before making the call
  8610.     the meanings of BL and BH on entry may be exchanged in future
  8611.       implementations
  8612. SeeAlso: AX=B18Dh
  8613. --------X-1AB181-----------------------------
  8614. INT 1A - Intel PCI BIOS v2.0c - INSTALLATION CHECK (32-bit)
  8615.     AX = B181h
  8616. Return: as for AX=B101h
  8617. SeeAlso: AX=B101h
  8618. --------X-1AB182-----------------------------
  8619. INT 1A - Intel PCI BIOS v2.0c - FIND PCI DEVICE (32-bit)
  8620.     AX = B182h
  8621.     CX = device ID
  8622.     DX = vendor ID
  8623.     SI = device index (0-n)
  8624. Return: as for AX=B102h
  8625. SeeAlso: AX=B102h
  8626. --------X-1AB183-----------------------------
  8627. INT 1A - Intel PCI BIOS v2.0c - FIND PCI CLASS CODE (32-bit)
  8628.     AX = B183h
  8629.     ECX = class code (bits 23-0)
  8630.     SI = device index (0-n)
  8631. Return: as for AX=B103h
  8632. SeeAlso: AX=B103h
  8633. --------X-1AB186-----------------------------
  8634. INT 1A - Intel PCI BIOS v2.0c - PCI BUS-SPECIFIC OPERATIONS (32-bit)
  8635.     AX = B186h
  8636.     BL = bus number
  8637.     EDX = Special Cycle data
  8638. Return: as for AX=B106h
  8639. SeeAlso: AX=B106h
  8640. --------X-1AB188-----------------------------
  8641. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION BYTE (32-bit)
  8642.     AX = B188h
  8643.     BL = bus number
  8644.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8645.     DI = register number (0000h-00FFh)
  8646. Return: as for AX=B108h
  8647. SeeAlso: AX=B108h
  8648. --------X-1AB189-----------------------------
  8649. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION WORD (32-bit)
  8650.     AX = B189h
  8651.     BL = bus number
  8652.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8653.     DI = register number (0000h-00FFh)
  8654. Return: as for AX=B109h
  8655. SeeAlso: AX=B109h
  8656. --------X-1AB18A-----------------------------
  8657. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION DWORD (32-bit)
  8658.     AX = B18Ah
  8659.     BL = bus number
  8660.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8661.     DI = register number (0000h-00FFh)
  8662. Return: as for AX=B10Ah
  8663. SeeAlso: AX=B10Ah
  8664. --------X-1AB18B-----------------------------
  8665. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION BYTE (32-bit)
  8666.     AX = B18Bh
  8667.     BL = bus number
  8668.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8669.     DI = register number (0000h-00FFh)
  8670.     CL = byte to write
  8671. Return: as for AX=B10Bh
  8672. SeeAlso: AX=B10Bh
  8673. --------X-1AB18C-----------------------------
  8674. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION WORD (32-bit)
  8675.     AX = B18Ch
  8676.     BL = bus number
  8677.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8678.     DI = register number (multiple of 2 less than 0100h)
  8679.     CX = word to write
  8680. Return: as for AX=B10Ch
  8681. SeeAlso: AX=B10Ch
  8682. --------X-1AB18D-----------------------------
  8683. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION DWORD (32-bit)
  8684.     AX = B18Dh
  8685.     BL = bus number
  8686.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  8687.     DI = register number (multiple of 4 less than 0100h)
  8688.     ECX = dword to write
  8689. Return: as for AX=B10Dh
  8690. SeeAlso: AX=B10Dh
  8691. --------X-1AB4-------------------------------
  8692. INT 1A - Intel Plug-and-Play BIOS Extensions - API
  8693.     AH = B4h
  8694.     AL = function (00h-07h)
  8695.     further details not yet available
  8696. --------c-1AC0-------------------------------
  8697. INT 1A U - Disk Spool II v2.07+ - ALTERNATE INSTALLATION CHECK
  8698.     AH = C0h
  8699. Return: (see AH=A0h)
  8700. Notes:    this call is identical to AH=A0h
  8701.     this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8702.       as that is a licensed version of Disk Spool II
  8703. SeeAlso: AH=A0h,AH=ABh,AH=D0h
  8704. --------U-1ACCCCBXCCCC-----------------------
  8705. INT 1A U - DATEFIX - INSTALLATION CHECK
  8706.     AX = CCCCh
  8707.     BX = CCCCh
  8708.     CX = 0000h
  8709. Return: CX = CCCCh if installed
  8710.         ES:BX -> original interrupt handler
  8711. Program: DATEFIX is a public-domain TSR to correct the date on AT&T 6300
  8712.       machines, where the realtime clock's calendar wraps after 1991
  8713. SeeAlso: AH=FEh,AH=FFh"AT&T"
  8714. --------c-1AD0-------------------------------
  8715. INT 1A U - Disk Spool II v2.07+ - FUNCTION CALLS
  8716.     AH = D0h
  8717.     AL = function code
  8718.         01h enable spooler and despooler
  8719.         02h enable spooler only
  8720.         03h enable despooler at beginning of file
  8721.         04h disable the despooler
  8722.         05h disable the despooler and spooler
  8723.         06h clear the spool file
  8724.         08h inhibit the popup menu
  8725.         09h enable the popup menu
  8726.         0Ah ??? (called by Disk Spool's INT 21 handler)
  8727.         0Bh disable the spooler
  8728.         0Ch start despooler after last successfully printed document
  8729.         0Dh start despooler at the exact point where it last left off
  8730.         0Eh pop up the menu
  8731.         0Fh ???
  8732.         11h start new spool file??? (called by Disk Spool's INT 21 handler
  8733.             when a program terminates)
  8734.         14h ???
  8735.         15h delete despool file and reset ???
  8736.         16h ??? (writes something to unknown file)
  8737.         17h ??? (writes something to despool file, then reads something
  8738.             else and ???)
  8739.         18h ??? (reads something from despool file, and then ???)
  8740.         19h ??? (creates/truncates spool file)
  8741.         20h clear file pointed to by the despooler
  8742.         21h ??? (writes something to unknown file)
  8743.         22h ??? (writes something to spool file if spooler/despooler using
  8744.             same file)
  8745.         23h ??? (opens/creates unknown file, then ???)
  8746.         30h ???
  8747.         31h ???
  8748.         32h beep
  8749.         33h append CRLF to spool file???
  8750.         34h ???
  8751.         35h ???
  8752.         36h ???
  8753.         37h append CRLF to spool file and start a new spool file???
  8754.         38h ???
  8755.         40h ??? (v4.05)
  8756.         41h ??? (v4.05)
  8757.         51h ??? (called by Disk Spool's INT 21 handler)
  8758.         52h ??? (called by Disk Spool's INT 21 handler)
  8759.         57h ???
  8760.         5Ah ??? (v4.05)
  8761.         5Bh ??? (v4.05)
  8762.         5Ch ??? (v4.05)
  8763. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8764.       as that is a licensed version of Disk Spool II
  8765. SeeAlso: AH=A0h,AH=ADh
  8766. --------c-1AE0-------------------------------
  8767. INT 1A - Disk Spool II v4.0x - ENABLE/DISABLE
  8768.     AH = E0h
  8769.     AL = subfunction
  8770.         01h enable spooler
  8771.         02h disable spooler
  8772.         03h enable despooler
  8773.         04h disable despooler
  8774.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  8775. Return: AH = status
  8776.         00h successful
  8777.         F0h printer port not managed by Disk Spool II
  8778.         FFH failed
  8779. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8780.       as that is a licensed version of Disk Spool II
  8781. SeeAlso: AH=A0h,AH=E1h,AX=E301h,AX=E401h
  8782. --------c-1AE1-------------------------------
  8783. INT 1A - Disk Spool II v4.0x - GET STATUS
  8784.     AH = E1h
  8785.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  8786. Return: AH = status
  8787.         00h successful
  8788.         CL = despooler state (00h disabled, 41h enabled)
  8789.         CH = spooler state (00h disabled, 41h enabled)
  8790.         DL = despooler activity (00h standing by, 41h printing)
  8791.         ES:BX -> ASCIZ name of current spool file (or next if AutoSpool
  8792.             or AutoDespool enabled)
  8793.         ES:SI -> ASCIZ name of current despool file
  8794.         ES:DI -> 3-byte file extension used by Disk Spool II
  8795.         F0h printer port not managed by Disk Spool II
  8796. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8797.       as that is a licensed version of Disk Spool II
  8798. SeeAlso: AH=A0h,AH=E0h,AH=E2h
  8799. --------c-1AE2-------------------------------
  8800. INT 1A - Disk Spool II v4.0x - GET SPOOL FILES
  8801.     AH = E2h
  8802.     AL = which
  8803.         01h first
  8804.         02h next (can only call after "first")
  8805.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  8806. Return: AH = status
  8807.         00h successful
  8808.         ES:BX -> ASCIZ filename
  8809.         F0h no (more) spool files
  8810.         FFh failed
  8811. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8812.       as that is a licensed version of Disk Spool II
  8813. SeeAlso: AH=E0h,AH=E1h
  8814. --------c-1AE301-----------------------------
  8815. INT 1A - Disk Spool II v4.0x - GET SPOOL FILE STATUS
  8816.     AX = E301h
  8817.     ES:BX -> ASCIZ filename (max 32 chars)
  8818. Return: AH = status
  8819.         00h successful
  8820.         ES:SI -> spool file status record (see #0482)
  8821.         F0h not a spool file
  8822.         FFh failed
  8823. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8824.       as that is a licensed version of Disk Spool II
  8825. SeeAlso: AH=E0h,AX=E302h,AX=E401h
  8826.  
  8827. Format of Disk Spool II spool file status record:
  8828. Offset    Size    Description    (Table 0482)
  8829.  00h    BYTE    hour of creation or last update
  8830.  01h    BYTE    minute of creation or last update
  8831.  02h    BYTE    year-1980 of creation or last update
  8832.  03h    BYTE    month of creation or last update
  8833.  04h    BYTE    day of creation or last update
  8834.  05h    BYTE    total number of copies to print
  8835.  06h    BYTE    number of copies already printed
  8836.  07h    BYTE    printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  8837.  08h    BYTE    save status (00h delete after printing, 01h save)
  8838.  09h    BYTE    file status
  8839.         01h done printing, but being saved
  8840.         02h on hold
  8841.         03h queued for printing
  8842.         04h being spooled
  8843.         05h being despooled (i.e. printed)
  8844.  0Ah 16 BYTEs    ASCIZ description
  8845.  1Ah  2 WORDs    file size in bytes (high,low)
  8846.  1Eh  2 WORDs    bytes left to print (high,low)
  8847. --------c-1AE302-----------------------------
  8848. INT 1A - Disk Spool II v4.0x - UPDATE SPOOL FILE
  8849.     AX = E302h
  8850.     ES:BX -> ASCIZ filename (max 32 chars)
  8851.     ES:SI -> spool file status record (see #0482)
  8852. Return: AH = status
  8853.         00h successful
  8854.         F0h not a spool file
  8855.         FFh failed
  8856. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8857.       as that is a licensed version of Disk Spool II
  8858. SeeAlso: AH=E0h,AX=E301h,AX=E401h
  8859. --------c-1AE401-----------------------------
  8860. INT 1A - Disk Spool II v4.0x - SPOOL EXISTING FILE
  8861.     AX = E401h
  8862.     ES:BX -> ASCIZ filename (max 32 chars)
  8863.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  8864. Return: AH = status
  8865.         00h successful
  8866.         FFh failed
  8867. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8868.       as that is a licensed version of Disk Spool II
  8869. SeeAlso: AH=E1h,AX=E302h,AX=E402h
  8870. --------c-1AE402-----------------------------
  8871. INT 1A U - Disk Spool II v4.0x - SPOOL EXISTING FILE???
  8872.     AX = E402h
  8873.     ES:BX -> ASCIZ filename (max 32 chars)
  8874.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  8875. Return: AH = status
  8876.         00h successful
  8877.         FFh failed
  8878. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8879.       as that is a licensed version of Disk Spool II
  8880. SeeAlso: AH=E1h,AX=E302h,AX=E401h
  8881. --------c-1AE5-------------------------------
  8882. INT 1A U - Emulaser ELSPL.COM - ???
  8883.     AH = E5h
  8884.     ???
  8885. Return: ???
  8886. Program: ELSPL.COM is a licensed version of Disk Spool II which is distributed
  8887.       as part of Vertisoft's Emulaser PostScript emulator
  8888. SeeAlso: AH=A0h,INT 17/AH=03h
  8889. --------c-1AEE-------------------------------
  8890. INT 1A U - Disk Spool II v4.05 - ???
  8891.     AH = EEh
  8892.     AL = printer port???
  8893.     ???
  8894. Return: ???
  8895. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  8896.       as that is a licensed version of Disk Spool II
  8897. SeeAlso: AH=E1h
  8898. --------U-1AF7-------------------------------
  8899. INT 1A - RighTime v1.1 - TEMPORARILY DISABLE
  8900.     AH = F7h
  8901. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  8902.       time to correct for clock drift
  8903. Note:    any AH value from F0h-F7h or F9h-FEh will perform this function in
  8904.       version 1.1, but F7h is the function called by transient portion
  8905. SeeAlso: AH=F8h,AH=FFh"RighTime"
  8906. --------U-1AF8-------------------------------
  8907. INT 1A - RighTime v1.1 - ENABLE
  8908.     AH = F8h
  8909. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  8910.       time to correct for clock drift
  8911. Note:    RighTime is TeSseRact-compatible (see INT 2F/AX=5453h) and modifies its
  8912.       TeSseRact program identifier based on its current state: "RighTime"
  8913.       when enabled, "RighTim"F7h when disabled.
  8914. SeeAlso: AH=F7h,AH=FFh"RighTime"
  8915. --------b-1AFE-------------------------------
  8916. INT 1A - AT&T 6300 - READ TIME AND DATE
  8917.     AH = FEh
  8918. Return: BX = day count (0 = Jan 1, 1984)
  8919.     CH = hour
  8920.     CL = minute
  8921.     DH = second
  8922.     DL = hundredths
  8923. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FFh"AT&T",INT 21/AH=2Ah,INT 21/AH=2Ch
  8924. --------b-1AFF-------------------------------
  8925. INT 1A - AT&T 6300 - SET TIME AND DATE
  8926.     AH = FFh
  8927.     BX = day count (0 = Jan 1, 1984)
  8928.     CH = hour
  8929.     CL = minute
  8930.     DH = second
  8931.     DL = hundredths
  8932. Return: ???
  8933. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FEh,INT 21/AH=2Bh,INT 21/AH=2Dh
  8934. --------U-1AFF-------------------------------
  8935. INT 1A - RighTime v1.1 - PERMANENTLY DISABLE
  8936.     AH = FFh
  8937. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  8938.       time to correct for clock drift
  8939. Note:    upon being permanently disabled, RighTime closes the file handle
  8940.       referencing its executable (which is updated with time correction
  8941.       information every two minutes while RighTime is enabled).
  8942. --------s-1AFF00-----------------------------
  8943. INT 1A - SND - INSTALLATION CHECK???
  8944.     AX = FF00h
  8945. Return: AL = version??? (02h)
  8946.     AH = busy flag (00h if not in a SND call, 01h if SND currently active)
  8947. Note:    the SND API is also supported by IC (Internal Commands) v2.0, a
  8948.       shareware TSR by Geoff Friesen which extends COMMAND.COM's internal
  8949.       command set
  8950. SeeAlso: AX=FF01h,AX=FF02h,AX=FF04h,AX=FF05h
  8951. --------s-1AFF01-----------------------------
  8952. INT 1A - SND - PAUSE
  8953.     AX = FF01h
  8954.     DX = number of clock ticks to delay
  8955. Return: AH = status
  8956.         00h successful
  8957.         01h SND busy
  8958. Notes:    if successful, execution returns to the caller after the delay expires;
  8959.       if SND is busy, execution returns immediately
  8960.     the IC v2.0 implementation of this API makes no special allowance for
  8961.       time rollover at midnight, which can cause the delay to be over one
  8962.       hour if this function is called just before the BIOS time count
  8963.       rolls over and the delay extends into the next day
  8964. SeeAlso: AX=FF00h,INT 15/AH=86h,INT 62/AX=0096h,INT 7F/AH=E8h,INT 80/BX=0009h
  8965. SeeAlso: INT E0/CL=BDh
  8966. --------s-1AFF02-----------------------------
  8967. INT 1A - SND - START SOUND
  8968.     AX = FF02h
  8969.     DX = frequency in Hertz (14h-FFFFh)
  8970. Return: AH = status
  8971.         00h successful
  8972.         01h SND busy
  8973. SeeAlso: AX=FF00h,AX=FF01h,AX=FF03h
  8974. --------s-1AFF03-----------------------------
  8975. INT 1A - SND - STOP SOUND
  8976.     AX = FF03h
  8977. Return: AH = status
  8978.         00h successful
  8979.         01h busy
  8980. Note:    turns off any sound currently being emitted by the PC's speaker unless
  8981.       SND is currently busy processing an API call (this includes
  8982.       background music).  Use AX=FF05h to stop the sound even if an API
  8983.       call is in progress.
  8984. SeeAlso: AX=FF00h,AX=FF02h,AX=FF05h
  8985. --------s-1AFF04-----------------------------
  8986. INT 1A - SND - PLAY MUSIC STRING IN BACKGROUND
  8987.     AX = FF04h
  8988.     DS:DX -> ASCIZ music string
  8989. Return: AH = status
  8990.         00h successful (music begins playing in background)
  8991.         01h busy
  8992. Note:    the music string accepted by SND is not the same as that accepted by
  8993.       BASIC and other programs which process music strings
  8994. SeeAlso: AX=FF00h,AX=FF05h,INT 80/BX=0006h
  8995. --------s-1AFF05-----------------------------
  8996. INT 1A - SND - UNCONDITIONALLY STOP SOUND
  8997.     AX = FF05h
  8998. Return: AH = 00h (successful)
  8999. Note:    this function is the same as AX=FF03h, but will stop the sound even if
  9000.       SND is currently busy, such as playing background music
  9001. SeeAlso: AX=FF00h,AX=FF03h,INT 80/BX=0007h
  9002. --------B-1B---------------------------------
  9003. INT 1B C - KEYBOARD - CONTROL-BREAK HANDLER
  9004. Desc:    this interrupt is automatically called when INT 09 determines that
  9005.       Control-Break has been pressed
  9006. Note:    normally points to a short routine in DOS which sets the Ctrl-C flag,
  9007.       thus invoking INT 23h the next time DOS checks for Ctrl-C.
  9008. SeeAlso: INT 23
  9009. --------B-1C---------------------------------
  9010. INT 1C - TIME - SYSTEM TIMER TICK
  9011. Desc:    this interrupt is automatically called on each clock tick by the INT 08
  9012.       handler
  9013. Notes:    this is the preferred interrupt to chain when a program needs to be
  9014.       invoked regularly
  9015.     not available on NEC 9800-series PCs
  9016. SeeAlso: INT 08,INT E2"PC Cluster"
  9017. --------B-1D---------------------------------
  9018. INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
  9019. Note:    the default parameter table (see #0483) is located at F000h:F0A4h for
  9020.       100% compatible BIOSes
  9021. SeeAlso: INT 10/AH=00h
  9022.  
  9023. Format of video parameters:
  9024. Offset    Size    Description    (Table 0483)
  9025.  00h 16 BYTEs    6845 register values for modes 00h and 01h
  9026.  10h 16 BYTEs    6845 register values for modes 02h and 03h
  9027.  20h 16 BYTEs    6845 register values for modes 04h and 05h
  9028.  30h 16 BYTEs    6845 register values for modes 06h and 07h
  9029.  40h    WORD    bytes in video buffer for modes 00h and 01h
  9030.  42h    WORD    bytes in video buffer for modes 02h and 03h
  9031.  44h    WORD    bytes in video buffer for modes 04h and 05h
  9032.  46h    WORD    bytes in video buffer for modes 06h and 07h
  9033.  48h  8 BYTEs    columns on screen for each of modes 00h through 07h
  9034.  50h  8 BYTEs    CRT controller mode bytes for each of modes 00h through 07h
  9035. --------B-1E---------------------------------
  9036. INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
  9037. Note:    the default parameter table (see #0484) is located at F000h:EFC7h for
  9038.       100% compatible BIOSes
  9039. SeeAlso: INT 13/AH=0Fh,INT 41
  9040.  
  9041. Format of diskette parameter table:
  9042. Offset    Size    Description    (Table 0484)
  9043.  00h    BYTE    first specify byte
  9044.         bits 7-4: step rate
  9045.         bits 3-0: head unload time (0Fh = 240 ms)
  9046.  01h    BYTE    second specify byte
  9047.         bits 7-1: head load time (01h = 4 ms)
  9048.         bit    0: non-DMA mode (always 0)
  9049.  02h    BYTE    delay until motor turned off (in clock ticks)
  9050.  03h    BYTE    bytes per sector (00h = 128, 01h = 256, 02h = 512, 03h = 1024)
  9051.  04h    BYTE    sectors per track
  9052.  05h    BYTE    length of gap between sectors (2Ah for 5.25", 1Bh for 3.5")
  9053.  06h    BYTE    data length (ignored if bytes-per-sector field nonzero)
  9054.  07h    BYTE    gap length when formatting (50h for 5.25", 6Ch for 3.5")
  9055.  08h    BYTE    format filler byte (default F6h)
  9056.  09h    BYTE    head settle time in milliseconds
  9057.  0Ah    BYTE    motor start time in 1/8 seconds
  9058. --------B-1F---------------------------------
  9059. INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT
  9060. Desc:    this vector points at 1024 bytes of graphics data, 8 bytes for each
  9061.       character 80h-FFh
  9062. Note:    graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100%
  9063.       compatible BIOSes
  9064. SeeAlso: INT 10/AX=5000h,INT 43
  9065. --------J-1F90-------------------------------
  9066. INT 1F - NEC PC-9801 - COPY EXTENDED MEMORY
  9067.     AH = 90h
  9068.     ES:BX -> global descriptor table (see #0336 at INT 15/AH=87h)
  9069.     CX = number of bytes to copy
  9070.     SI = 0000h
  9071.     DI = 0000h
  9072. Return: CF clear if successful
  9073.     CF set on error
  9074.     ???
  9075. SeeAlso: INT 15/AH=87h
  9076. --------!---Section--------------------------
  9077.