home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / INTER53D.ZIP / INTERRUP.P < prev    next >
Text File  |  1997-01-12  |  199KB  |  4,906 lines

  1. Interrupt List, part 16 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  3. ----------80---------------------------------
  4. INT 80 - Q-PRO4 - ???
  5. --------r-80---------------------------------
  6. INT 80 - reserved for BASIC
  7. Note:    this vector and INT 81 through INT ED are modified but not restored by
  8.       Direct Access v4.0, and may be left dangling by other programs
  9.       written with the same version of compiled BASIC
  10. SeeAlso: INT 81"BASIC",INT 86"BASIC",INT EF"BASIC"
  11. --------E-80---------------------------------
  12. INT 80 - Phar Lap 386|DOS-Extender - RELOCATED PRINT-SCREEN
  13. Note:    the extender relocates INT 05 to here by default, but can be told to
  14.       leave INT 05 alone with the commandline (or DOSX= environment
  15.       variable) flag -PRIVEC 5
  16. SeeAlso: INT 05"PRINT SCREEN"
  17. --------d-80---------------------------------
  18. INT 80 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
  19. Note:    the factory-default location for the eight bytes of scratchpad RAM
  20.       needed by the SCSI adapter is 0000h:0200h, which is interrupt
  21.       vectors 80h and 81h
  22. SeeAlso: INT 81"BusLogic"
  23. --------b-80---------------------------------
  24. INT 80 U - AMI BIOS v1.00.12.AX1T - internal - BIOS SUBSYSTEM SELECTION
  25.     AH = function
  26.         00h install and initialize BIOS subsystem
  27.         AL = ??? (00h,01h,03h)
  28.         CX:BX = subsystem ID (see #3220)
  29.         ESI = address from which to load, or 00000000h for default for
  30.             subsystem
  31.         EDI = physical address at which to install, or 0 for default
  32.         Note:    if CX=0000h on entry, this call is applied to all
  33.               subsystems whose ID has low word BX
  34.         01h get BIOS subsystem information
  35.         CX:BX = subsystem ID (see #3220)
  36.         Return: AL = ???
  37.             AH = ???
  38.             EDX = uncompressed size of subsystem in bytes
  39.             SI = offset within subsystem of initialization
  40.                 routine, or FFFFh if none
  41.             EDI = physical address of default location or 0
  42.         02h get matching subsystem identifier
  43.         AL = index into subsystem list (return ALth occurrence
  44.               matching BX)
  45.         BX = low word of subsystem identifier
  46.             (0001h,0002h,0004h,0005h,000Bh,FFFFh)
  47.         Return: CF clear if successful
  48.                 CX = high word of ALth matching subsystem
  49.             CF set on error
  50.         Note:    the system is halted if AL=00h on entry
  51.         03h set up "big real" mode (4G segment limits)
  52.         04h turn off "big real" mode (restore 64K segment limits)
  53.         05h remove BIOS subsystem
  54.         CX:BX = subsystem ID to leave out
  55.         Note:    the system is halted if an invalid (not installed)
  56.               subsystem ID is specified
  57.         06h get installed subsystem info
  58.         CX:BX = subsystem ID (see #3220)
  59.         Return:    CF clear
  60.             EDX = length of ???
  61.             EDI = linear address of start of ???
  62.         Note:    the system is halted if an invalid (not installed)
  63.               subsystem ID is specified
  64. Return: CF clear if successful
  65.     CF set on non-fatal error
  66. Note:    this interrupt vector is cleared to 0000h:0000h near the end of the
  67.       BIOS startup sequence
  68.  
  69. (Table 3220)
  70. Values for AMI BIOS subsystem ID:
  71.  00010001h    ROM BIOS @F000-FFFF
  72.  00010002h    setup??? (loaded @6000-68FF)
  73.  00010005h    APM code
  74.  0001000Bh    language-specific error message set (English)
  75.  00020002h    PnP/PCI ACFG code (loaded @F000-F1FF)
  76.  0001FFFFh
  77.  0002FFFFh    recovery code
  78.  00030004h
  79.  0003FFFFh    BIOS decompression code
  80.  0004000Bh
  81.  00060004h
  82.  0100FFFFh    ACFG data
  83.  10000000h    ROM @C000 (64K)
  84.  10000001h    HMA (48K)
  85.  10000002h    RAM @7A00 (24K)
  86.  10000003h    RAM @8000-BFFF
  87.  10000004h
  88.  10000005h    real-mode address space (0-1M)
  89.  1000000Bh    installed language-specific message set???
  90. --------s-80----BL00-------------------------
  91. INT 80 - SBSIM - "STARTSND" - START SOUND ON SPECIFIED DRIVER
  92.     BL = 00h
  93.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  94. Return: AX = initialization result (see #3221)
  95. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  96.       which provides access to multiple drivers for the SoundBlaster
  97.       board through a single interface
  98. Range:    INT 80h to INT BFh, selected automatically
  99. Note:    the SBSIM installation check consists of testing for the signature
  100.       "SBSIM" at offset 103h in the interrupt handler's segment.
  101. SeeAlso: INT 80/BL=01h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=03h"SBSIM"
  102. SeeAlso: INT 80/BX=0000h"SBSIM"
  103.  
  104. (Table 3221)
  105. Values for SBSIM error code:
  106.  01h    busy--currently in use
  107.  02h    bad driver specified
  108.  03h    invalid function
  109.  04h    voice process already active
  110.  05h    couldn't start CT-VOICE
  111.  06h    couldn't start CTVDSK
  112.  07h    invalid SBSIM handle
  113.  08h    buffer not initialized yet
  114.  09h    bad filename
  115.  0Ah    bad file handle
  116.  0Bh    driver not started yet
  117.  0Ch    XMS driver not installed
  118.  0Dh    no free SBSIM handles
  119.  0Eh    bad file type
  120.  0Fh    couldn't free XMS block
  121.  10h    invalid source selected
  122.  11h    get pan position failed
  123.  12h    set pan position failed
  124.  13h    set volume failed
  125.  14h    couldn't start fade/pan
  126.  15h    couldn't stop fade/pan
  127.  16h    couldn't pause fade/pan
  128.  17h    not a fade/pan operation
  129.  18h    bad mode for fade/pan
  130.  19h    couldn't start fade/pan
  131.  1Ah    source not fading/panning
  132.  1Bh    FM or MIDI already playing
  133.  1Ch    bad MIDI mapper format
  134. --------s-80----BL01-------------------------
  135. INT 80 - SBSIM - "PLAYSND" - PLAY MUSIC/VOICE ON SELECTED DRIVER
  136.     BL = 01h
  137.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  138. Return: AX = result (see #3221)
  139. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
  140. --------s-80----BL02-------------------------
  141. INT 80 - SBSIM - "STOPSND" - STOP MUSIC/VOICE ON SELECTED DRIVER
  142.     BL = 02h
  143.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  144. Return: nothing
  145. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
  146. --------s-80----BL03-------------------------
  147. INT 80 - SBSIM - "PAUSESND" - TEMPORARILY PAUSE PLAYBACK ON SELECTED DRIVER
  148.     BL = 03h
  149.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  150. Return: nothing
  151. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
  152. SeeAlso: INT 80/BL=05h
  153. --------s-80----BL04-------------------------
  154. INT 80 - SBSIM - "RESUMESND" - RESTART PLAYBACK ON SELECTED DRIVER
  155.     BL = 04h
  156.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  157. Return: nothing
  158. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=03h"SBSIM",INT 80/BL=05h"SBSIM"
  159. --------s-80----BL05-------------------------
  160. INT 80 - SBSIM - "GETSNDSTAT" - GET DRIVER'S STATUS
  161.     BL = 05h
  162.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  163. Return: AX = status
  164. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
  165. --------s-80----BX0000-----------------------
  166. INT 80 - SoundBlaster SBFM driver - GET VERSION
  167.     BX = 0000h
  168. Return: ???
  169. Note:    SBFM installs at a free interrupt in the range 80h through BFh
  170. SeeAlso: BX=0008h"SBFM",INT 2F/AX=FBFBh/ES=0000h
  171. --------s-80----BX0000-----------------------
  172. INT 80 - SBSIM - "QUERYVERSION" - GET VERSION
  173.     BX = 0000h
  174. Return: AX = version (AH = major, AL = minor)
  175. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  176.       which provides access to multiple drivers for the SoundBlaster
  177.       board through a single interface
  178. Range:    INT 80h to INT BFh, selected automatically
  179. Note:    the SBSIM installation check consists of testing for the signature
  180.       "SBSIM" at offset 103h in the interrupt handler's segment.
  181. SeeAlso: BX=0001h"SBSIM",BX=0005h"SBSIM",INT 21/AX=4402h"CTMMSYS"
  182. SeeAlso: INT 80/BL=00h"SBSIM"
  183. Index:    installation check;SBSIM|installation check;SoundBlaster
  184. --------s-80----BX0001-----------------------
  185. INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
  186.     BX = 0001h
  187.     DX:AX -> music status byte
  188. SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0003h"SBFM"
  189. --------s-80----BX0001-----------------------
  190. INT 80 - SBSIM - "QUERYDRIVERS" - CHECK DRIVERS INSTALLED
  191.     BX = 0001h
  192. Return: AX = bit flags for loaded drivers (see #3222)
  193. SeeAlso: BX=0000h"SBSIM",BX=0002h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
  194.  
  195. Bitfields for SBSIM loaded drivers:
  196. Bit(s)    Description    (Table 3222)
  197.  0    FM
  198.  1    double disk-buffered voice driver (DDBV)
  199.  2    memory voice driver
  200.  3    auxiliary driver (mixer)
  201.  4    MIDI
  202. --------s-80----BX0002-----------------------
  203. INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
  204.     BX = 0002h
  205.     CX = number of instruments
  206.     DX:AX -> instrument table
  207. SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0005h"SBFM"
  208. --------s-80----BX0002-----------------------
  209. INT 80 - SBSIM - GETADDRESS" - GET SELECTED DRIVER'S ENTRY POINT
  210.     BX = 0002h
  211.     AX = driver (00h = FM,01h = DDBV,02h = memvoice,03h = mixer,04h = MIDI)
  212. Return: CF clear if successful
  213.         DX:AX -> entry point
  214.     CF set on error
  215. SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
  216. --------s-80----BX0003-----------------------
  217. INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
  218.     BX = 0003h
  219.     AX = clock rate divisor (1193180 / desired frequency in Hertz)
  220.         FFFFh to restore to 18.2 Hz
  221. SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0004h"SBFM"
  222. --------s-80----BX0004-----------------------
  223. INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
  224.     BX = 0004h
  225.     AX = driver clock rate divisor (1193180 / frequency in Hertz)
  226. Note:    default frequency is 96 Hz
  227. SeeAlso: BX=0000h"SBFM",BX=0003h"SBFM"
  228. --------s-80----BX0005-----------------------
  229. INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
  230.     BX = 0005h
  231.     AX = semi-tone offset
  232. SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0006h"SBFM"
  233. --------s-80----BX0005-----------------------
  234. INT 80 - SBSIM - "GETBUFFERINFO" - GET DRIVER'S BUFFER ADDRESS
  235.     BX = 0005h
  236.     AX = driver (00h = FM, 01h = DDB Voice, 04h = MIDI)
  237. Return: CF clear if successful
  238.         DX:AX -> buffer
  239.         CX = buffer size in K
  240.     CF set on error
  241. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  242.       which provides access to multiple drivers for the SoundBlaster
  243.       board through a single interface
  244. Range:    INT 80h to INT BFh, selected automatically
  245. Note:    the SBSIM installation check consists of testing for the signature
  246.       "SBSIM" at offset 103h in the interrupt handler's segment.
  247. SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0002h"SBSIM",INT 80/BL=00h"SBSIM"
  248. --------s-80----BX0006-----------------------
  249. INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
  250.     BX = 0006h
  251.     DX:AX -> music block
  252. Return: AX = status
  253.         0000h successful
  254.         0001h music already active
  255. SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF04h
  256. --------s-80----BX0007-----------------------
  257. INT 80 - SoundBlaster SBFM driver - STOP MUSIC
  258.     BX = 0007h
  259. Return: AX = status
  260.         0000h successful
  261.         0001h music not active
  262. SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM",INT 1A/AX=FF05h
  263. --------s-80----BX0008-----------------------
  264. INT 80 - SoundBlaster SBFM driver - RESET DRIVER
  265.     BX = 0008h
  266. Return: AX = status
  267.         0000h successful
  268.         0001h music is active
  269. SeeAlso: BX=0000h"SBFM"
  270. --------s-80----BX0009-----------------------
  271. INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
  272.     BX = 0009h
  273. Return: AX = status
  274.         0000h successful
  275.         0001h no music active
  276. SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF01h
  277. --------s-80----BX000A-----------------------
  278. INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
  279.     BX = 000Ah
  280. Return: AX = status
  281.         0000h successful
  282.         0001h no music paused
  283. SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM"
  284. --------s-80----BX000B-----------------------
  285. INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
  286.     BX = 000Bh
  287.     DX:AX -> trap routine
  288. SeeAlso: BX=0000h"SBFM"
  289. --------s-80----BX0400-----------------------
  290. INT 80 - SBSIM - "GETVOLUME" - GET SOURCE'S VOLUME
  291.     BX = 0400h
  292.     AX = sound source (see #3223)
  293. Return: CF clear if successful
  294.         AX = volume
  295.     CF set on error
  296.         AX = error code (see #3221 at INT 80/BL=00h)
  297. SeeAlso: BX=0401h"SBSIM"
  298.  
  299. (Table 3223)
  300. Values for SBSIM sound source:
  301.  00h    master volume
  302.  01h    voice
  303.  02h    FM
  304.  03h    CD
  305.  04h    line in
  306.  05h    microphone
  307. --------s-80----BX0401-----------------------
  308. INT 80 - SBSIM - "SETVOLUME" - SET SOURCE'S VOLUME
  309.     BX = 0401h
  310.     AX = sound source (see #3223)
  311.     DX = new volume
  312. Return: AX = result (0000h = success) (see also INT 80/BL=00h)
  313. SeeAlso: BX=0400h"SBSIM"
  314. --------N-8001-------------------------------
  315. INT 80 - QPC Software PKTINT.COM - INITIALIZE
  316.     AH = 01h
  317. Return: AX = 0000h
  318.     CX = FFFFh
  319.     DX = FFFFh
  320. Notes:    this interrupt is the WinQVTNet protected mode interface to Windows 3.0
  321.     all buffer pointers are reset back to 0
  322. --------N-8002-------------------------------
  323. INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES
  324.     AH = 02h
  325.     BX = extra bytes to allocate per packet
  326. Return: AX = segment address of 10K buffer (for receives???)
  327.     BX = segment address of 2K buffer (for sends???)
  328. SeeAlso: AH=05h
  329. --------N-8003-------------------------------
  330. INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
  331.     AH = 03h
  332. Return: CX:DX -> receive call address
  333. Note:    the returned address can be used in the packet driver calls since it
  334.       will be a valid address in all DOS boxes
  335. SeeAlso: AH=06h
  336. --------N-8004-------------------------------
  337. INT 80 - QPC Software PKTINT.COM - ENABLE???
  338.     AH = 04h
  339.     BX = ???
  340. Return: ???
  341. SeeAlso: AH=01h
  342. --------N-8005-------------------------------
  343. INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS
  344.     AH = 05h
  345. Return: AX = amount of buffer currently in use
  346.     BX = current offset in buffer
  347.     CX = number of times receive has been called
  348. SeeAlso: AH=02h
  349. --------N-8006-------------------------------
  350. INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
  351.     AH = 06h
  352. Return: BX = next packet offset
  353.     CX = number of bytes still buffered
  354.     DX = size of packet released back into buffer pool
  355. SeeAlso: AH=03h
  356. --------r-81---------------------------------
  357. INT 81 - reserved for BASIC
  358. Note:    this vector is modified but not restored by Direct Access v4.0, and
  359.       may be left dangling by other programs written with the same version
  360.       of compiled BASIC
  361. SeeAlso: INT 80"BASIC",INT 82"BASIC"
  362. --------N-81---------------------------------
  363. INT 81 - IBM TOKEN RING ADAPTER - ???
  364. SeeAlso: INT 82"TOKEN RING",INT 91"TOKEN RING"
  365. --------d-81---------------------------------
  366. INT 81 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
  367. Note:    the factory-default location for the eight bytes of scratchpad RAM
  368.       needed by the SCSI adapter is 0000h:0200h, which is interrupt
  369.       vectors 80h and 81h
  370. SeeAlso: INT 80"BusLogic"
  371. --------b-81---------------------------------
  372. INT 81 - AMI WinBIOS - SECOND HARD DRIVE AUTODETECTION
  373. Notes:    used by WinBIOS with core version of July 1994 or later
  374.     QEMM 7.5 began using this interrupt internally after the QPAT3
  375.       maintenance release when searching for "ROM holes", causing a
  376.       lengthy delay during bootup.    Adding the QEMM parameter RH:N will
  377.       avoid the QEMM call to INT 81 and speed up the boot process
  378. --------s-810200---------------------------
  379. INT 81 - Gravis UltraSound - MegaEm - PROCESS COMMAND LINE
  380.     AX = 0200h
  381.     BX = PSP segment
  382.     SI = ??? (data area)
  383. Return: AX = status (see #3224)
  384.     BL = emulation state
  385.         bit 1   Emulation is on
  386.         bit 2   Emulation is off
  387. Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
  388.       emulator for the Gravis UltraSound
  389. Range:    INT 81 to INT FF (see INT 21/AX=FD12h), selected by scanning for an
  390.       interrupt with vector 0000h:0000h
  391. SeeAlso: AX=0202h,AX=0300h,AX=0400h,INT 21/AX=FD12h/BX=3457h
  392.  
  393. (Table 3224)
  394. Values for MegaEm status:
  395.  0000h    successful
  396.  0001h    invalid command line optie
  397.  0002h    display options
  398.  0003h    ???
  399.  0004h    invalid number of voices specified
  400.  0005h    could not load enough patches to provide acceptable emulation
  401.  0006h    to many warnings on patch loading
  402.  0007h    ??? (not used anymore)
  403.  0008h    /CO and SCSI don't work together
  404.  0009h    invalid music volume
  405.  000Ah    invalid master volume
  406.  000Bh    /SC switch is no longer valid
  407.  0100h    ??? (some error on patch loading)
  408. --------s-810202---------------------------
  409. INT 81 - Gravis UltraSound - MegaEm - ???
  410.     AX = 0202h
  411. Return: AX = ???
  412. SeeAlso: AX=0200h,AX=0300h,AX=0400h,INT 21/AX=FD12h/BX=3457h
  413. --------s-810300---------------------------
  414. INT 81 - Gravis UltraSound - MegaEm - LOAD SAMPLE ???
  415.     AX = 0300h
  416. Return: AX = ???
  417. SeeAlso: AX=0200h,AX=0202h,AX=0400h,INT 21/AX=FD12h/BX=3457h
  418. --------s-810400---------------------------
  419. INT 81 - Gravis UltraSound - MegaEm - ???
  420.     AX = 0400h
  421.     BX = ??? (segment)
  422. Return: AX = ???
  423.     BX = ???
  424. Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
  425.       emulator for the Gravis UltraSound
  426. SeeAlso: AX=0200h,AX=0202h,AX=0300h,INT 21/AX=FD12h/BX=3457h
  427. --------s-812010------------------------
  428. INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - INT 78 REDIRECT
  429.     AX = 2010h
  430.     ???
  431. Return: ???
  432. Note:    MegaEm calls this function from its INT 78 handler, and then
  433.       immediately returns (via RETF in v3.10, thus leaving the flags on
  434.       the stack); this permits it to operate while hooking only one
  435.       interrupt through the memory manager in protected mode
  436. SeeAlso: AX=2011h,AX=2012h
  437. --------s-812011------------------------
  438. INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - NMI REDIRECT
  439.     AX = 2011h
  440.     ???
  441. Return: ???
  442. Note:    MegaEm calls this function from its NMI (INT 02) handler, and then
  443.       immediately returns; this permits it to operate while hooking only
  444.       one interrupt through the memory manager in protected mode
  445. SeeAlso: AX=2010h,AX=2012h
  446. --------s-812012------------------------
  447. INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - SOUNDCARD IRQ REDIRECT
  448.     AX = 2012h
  449.     ???
  450. Return: ???
  451. Note:    MegaEm calls this function from its GUS IRQ handler, and then
  452.       immediately returns; this permits it to operate while hooking only
  453.       one interrupt through the memory manager in protected mode
  454. SeeAlso: AX=2010h,AX=2011h
  455. --------s-812015------------------------
  456. INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - ???
  457.     AX = 2015h
  458.     ???
  459. Return: ???
  460. --------r-82---------------------------------
  461. INT 82 - reserved for BASIC
  462. SeeAlso: INT 81"BASIC",INT 83"BASIC"
  463. --------N-82---------------------------------
  464. INT 82 - IBM TOKEN RING ADAPTER - ???
  465.     AH = function
  466.         00h display message???
  467.         DS:BX -> string
  468.     ???
  469. Return: ???
  470. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  471. --------r-83---------------------------------
  472. INT 83 - reserved for BASIC
  473. SeeAlso: INT 82"BASIC",INT 84"BASIC"
  474. --------s-8300-------------------------------
  475. INT 83 - JM Pro Tracker v5.0 - ???
  476.     AH = 00h
  477.     ???
  478. Return: CF clear (successful)
  479.     AX = ??? (0302h)
  480. Program: JM Pro Tracker is a public-domain resident .MOD (digital music)
  481.       player by Josha Munnik
  482.  
  483. (Table 3225)
  484. Values for JM Pro Tracker error code:
  485.  000Ah    ???
  486.  000Bh    ???
  487.  0014h    ???
  488.  001Eh    some required parameters have not yet been set
  489.  001Fh    already playing???
  490.  FExxh    busy (API call already in progress)
  491.  FFxxh    invalid function number
  492. --------s-8301-------------------------------
  493. INT 83 - JM Pro Tracker v5.0 - ???
  494.     AH = 01h
  495.     DX = ??? or FFFFh
  496.     ???
  497. Return: CF clear if successful
  498.     CF set on error
  499.         AX = error code (see #3225)
  500. --------s-8302-------------------------------
  501. INT 83 - JM Pro Tracker v5.0 - ???
  502.     AH = 02h
  503.     BX = ???
  504.     ???
  505. Return: CF clear if successful
  506.         AX = ???
  507.         BX = ???
  508.         CX = ???
  509.         DX = ???
  510.         SI = ???
  511.     CF set on error
  512.         AX = error code (000Ah,000Bh,other) (see #3225)
  513. --------s-8303-------------------------------
  514. INT 83 - JM Pro Tracker v5.0 - ???
  515.     AH = 03h
  516.     BX = ??? (only low four bits, must be nonzero)
  517.     CX = ???
  518.     ???
  519. Return: CF clear if successful
  520.     CF set on error
  521.         AX = error code (0014h) (see #3225)
  522. --------s-8304-------------------------------
  523. INT 83 - JM Pro Tracker v5.0 - SET DMA BUFFER???
  524.     AH = 04h
  525.     CX = number of bytes in suggested buffer
  526.     ES:DI -> suggested buffer for DMA transfers???
  527. Return: CF clear if successful
  528.         ES:AX -> actual buffer (filled with bytes of 80h)
  529.         CX = actual length (multiple of 4)
  530.     CF set on error
  531.         AX = error code (see #3225)
  532. Note:    the buffer must not cross a 64K DMA page boundary
  533. --------s-8305-------------------------------
  534. INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
  535.     AH = 05h
  536.     CX = length of buffer
  537.     ES:DI -> buffer for/containing ???
  538. Return: CF clear (successful)
  539. SeeAlso: AH=06h,AH=07h,AH=18h
  540. --------s-8306-------------------------------
  541. INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
  542.     AH = 06h
  543.     CX = length of buffer
  544.     ES:DI -> buffer for/containing ???
  545. Return: CF clear (successful)
  546. SeeAlso: AH=05h,AH=07h,AH=18h
  547. --------s-8307-------------------------------
  548. INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
  549.     AH = 07h
  550.     BX = ???
  551.     CX = length of buffer
  552.     ES:DI -> buffer for/containing ???
  553. Return: CF clear (successful)
  554. SeeAlso: AH=05h,AH=06h,AH=18h
  555. --------s-8308-------------------------------
  556. INT 83 - JM Pro Tracker v5.0 - START PLAYING???
  557.     AH = 08h
  558.     ???
  559. Return: CF clear if successful
  560.        ???
  561.     CF set on error
  562.         AX = error code (001Eh,001Fh) (see #3225)
  563. SeeAlso: AH=09h,AH=0Ah
  564. --------s-8309-------------------------------
  565. INT 83 - JM Pro Tracker v5.0 - PAUSE???
  566.     AH = 09h
  567.     ???
  568. Return: CF clear if successful
  569.     CF set on error
  570.         AX = error code (see #3225)
  571. SeeAlso: AH=08h,AH=0Ah
  572. --------s-830A-------------------------------
  573. INT 83 - JM Pro Tracker v5.0 - RESUME???
  574.     AH = 0Ah
  575.     ???
  576. Return: CF clear if successful
  577.     CF set on error
  578.         AX = error code (001Fh) (see #3225)
  579. SeeAlso: AH=08h,AH=09h
  580. --------s-830B-------------------------------
  581. INT 83 - JM Pro Tracker v5.0 - ???
  582.     AH = 0Bh
  583.     BX = ???
  584.     ???
  585. Return: CF clear if successful
  586.     CF set on error
  587. --------s-830C-------------------------------
  588. INT 83 - JM Pro Tracker v5.0 - ???
  589.     AH = 0Ch
  590.     DX bit 5 = ???
  591.     ???
  592. Return: CF clear if successful
  593.         BX = ??? (FFFFh)
  594.         CX = ??? (0000h)
  595.         DX = ???
  596.     CF set on error
  597.         AX = error code (see #3225)
  598. --------s-830D-------------------------------
  599. INT 83 - JM Pro Tracker v5.0 - ???
  600.     AH = 0Dh
  601.     BX = ???
  602.     ???
  603. Return: CF clear (successful)
  604. --------s-830E-------------------------------
  605. INT 83 - JM Pro Tracker v5.0 - ???
  606.     AH = 0Eh
  607.     BX = ??? (ignored if ES:DI = 0000h:0000h)
  608.     ES:DI -> ??? or 0000h:0000h
  609. Return: CF clear (successful)
  610. --------s-830F-------------------------------
  611. INT 83 - JM Pro Tracker v5.0 - ???
  612.     AH = 0Fh
  613.     ???
  614. Return: CF clear if successful
  615.         AX = ???
  616.     CF set on error
  617.         AX = error code (see #3225)
  618. --------s-8310-------------------------------
  619. INT 83 - JM Pro Tracker v5.0 - ???
  620.     AH = 10h
  621.     BL = subfunction???
  622.     CX = ???
  623.     DX = ???
  624.     ???
  625. Return: CF clear if successful
  626.         CX = DX = ???
  627.     CF set on error
  628.         AX = error code (see #3225)
  629. SeeAlso: AH=18h
  630. --------s-8311-------------------------------
  631. INT 83 - JM Pro Tracker v5.0 - ???
  632.     AH = 11h
  633.     BL = ???
  634.     CX = ???
  635. Return: CF clear (successful)
  636. --------s-8312-------------------------------
  637. INT 83 - JM Pro Tracker v5.0 - CLEAR ???
  638.     AH = 12h
  639. Return: nothing
  640. --------s-8313-------------------------------
  641. INT 83 - JM Pro Tracker v5.0 - ???
  642.     AH = 13h
  643.     BX = ???
  644. Return: CF clear (successful)
  645. --------s-8314-------------------------------
  646. INT 83 - JM Pro Tracker v5.0 - ???
  647.     AH = 14h
  648.     ???
  649. Return: CF clear (successful)
  650.     BX = ???
  651. --------s-8315-------------------------------
  652. INT 83 - JM Pro Tracker v5.0 - GET ???
  653.     AH = 15h
  654.     BX = what to get (zero/nonzero)
  655. Return: CF clear if successful
  656.         BX = ???
  657.         DX = ???
  658.     CF set on error
  659.         AX = error code (see #3225)
  660. --------s-8316-------------------------------
  661. INT 83 - JM Pro Tracker v5.0 - ???
  662.     AH = 16h
  663.     AL = subfunction
  664.         00h ???
  665.         Return: BX = ???
  666.             CX = ???
  667.             DX = ???
  668.             ES:DI -> ???
  669.             CF indicates ???
  670.         01h ???
  671.         Return: BX = ???
  672.             CX = ???
  673.             DX = ???
  674. Return: CF clear if successful
  675.     CF set on error
  676.         AX = error code (FFxxh) (see #3225)
  677. --------s-8317-------------------------------
  678. INT 83 - JM Pro Tracker v5.0 - UNHOOK API INTERRUPT
  679.     AH = 17h
  680. Return: CF clear if successful
  681.     CF set on error (hooked by another program)
  682. --------s-8318-------------------------------
  683. INT 83 - JM Pro Tracker v5.0 - SET BUFFERS
  684.     AH = 18h
  685.     ES:DI -> buffer-pointer structure (see #3226)
  686. Return: nothing
  687. SeeAlso: AH=05h,AH=06h,AH=07h,AH=10h
  688.  
  689. Format of JM Pro Tracker buffer-pointer structure:
  690. Offset    Size    Description    (Table 3226)
  691.  00h    WORD    length of ??? buffer (see AH=05h)
  692.  02h    DWORD    -> ??? buffer (see AH=05h)
  693.  06h    WORD    length of ??? buffer (see AH=06h)
  694.  08h    DWORD    -> ??? buffer (see AH=06h)
  695.  0Ch    WORD    length of ??? buffer (see AH=07h)
  696.  0Eh    DWORD    -> ??? buffer (see AH=07h)
  697.  12h    WORD    ??? (see AH=07h)
  698.  14h    WORD    ??? (see AH=10h) (subfunction 01h)
  699.  16h    WORD    ??? (see AH=10h) (subfunction 01h)
  700.  18h    WORD    ??? (see AH=10h) (subfunction 00h)
  701.  1Ah    WORD    ??? (see AH=10h) (subfunction 01h)
  702. --------r-84---------------------------------
  703. INT 84 - reserved for BASIC
  704. SeeAlso: INT 83"BASIC",INT 85"BASIC"
  705. --------r-85---------------------------------
  706. INT 85 - reserved for BASIC
  707. Note:    INT 80 through INT ED are modified but not restored by Direct Access
  708.       v4.0, and may be left dangling by other programs written with the
  709.       same version of compiled BASIC
  710. SeeAlso: INT 84"BASIC",INT 86"BASIC"
  711. --------N-86---------------------------------
  712. INT 86 - NetBIOS - ORIGINAL INT 18
  713. Note:    some implementations of NetBIOS reportedly relocate INT 18 here
  714. SeeAlso: INT 18"BOOT HOOK"
  715. --------r-86---------------------------------
  716. INT 86 - IBM ROM BASIC - used while in interpreter
  717. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  718.     BASIC.COM/BASICA.COM do not restore vector on termination
  719. SeeAlso: INT 85"BASIC",INT 87"BASIC"
  720. --------r-86---------------------------------
  721. INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
  722. SeeAlso: INT 21/AH=4Ch,INT 87"APL"
  723. --------r-87---------------------------------
  724. INT 87 - IBM ROM BASIC - used while in interpreter
  725. Notes:    called by ROM BASIC
  726.     BASIC.COM/BASICA.COM do not restore vector on termination
  727. SeeAlso: INT 86"BASIC",INT 88"BASIC"
  728. --------r-87---------------------------------
  729. INT 87 - APL*PLUS/PC - ???
  730. SeeAlso: INT 86"APL",INT 88/AL=00h
  731. --------v-87---------------------------------
  732. INT 87 - VIRUS - "ZeroHunt" - VIRAL CODE (NOT A VECTOR!)
  733. Note:    the ZeroHunt virus copies its resident code down to 0000h:021Ch and
  734.       following
  735. SeeAlso: INT 8B"VIRUS"
  736. --------r-88---------------------------------
  737. INT 88 - IBM ROM BASIC - used while in interpreter
  738. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  739.     BASIC.COM/BASICA.COM do not restore vector on termination
  740. SeeAlso: INT 87"BASIC",INT 89"BASIC"
  741. --------r-88--00-----------------------------
  742. INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
  743.     AL = 00h
  744.     BX = STPTR of the variable to be assigned
  745.     ES:SI -> model of type, rank, and shape (see #3227)
  746. Return: ES:DI -> first data byte of object
  747.     DX:CX = number of elements in the object
  748. SeeAlso: INT 88/AL=01h,INT 88/AL=08h,INT C8"APL"
  749.  
  750. Format of APL*PLUS/PC shape model:
  751. Offset    Size    Description    (Table 3227)
  752.  00h    BYTE    type
  753.         01h character (2-byte dimension sizes)
  754.         02h integer (2-byte dimension sizes)
  755.         08h floating point (2-byte dimension sizes)
  756.         11h character (4-byte dimension sizes)
  757.         12h integer (4-byte dimension sizes)
  758.         18h floating point (4-byte dimension sizes)
  759.  01h    BYTE    rank
  760.  02h    (D)WORD first dimension of shape
  761.  N    (D)WORD second dimension of shape
  762.     ...
  763. --------r-88--01-----------------------------
  764. INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
  765.     AL = 01h
  766.     AH = rank
  767.     BX = STPTR of the variable to be assigned
  768.     CX = first dimension (if any)
  769.     DX = second dimension (if any)
  770. Return: ES:DI -> object
  771.     CX = number of elements in the object
  772. Note:    each dimension must be 32767 or smaller
  773. SeeAlso: AL=00h,AL=02h,AL=08h,INT C8"APL"
  774. --------r-88--02-----------------------------
  775. INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
  776.     AL = 02h
  777.     AH = rank
  778.     BX = STPTR of the variable to be assigned
  779.     CX = first dimension (if any)
  780.     DX = second dimension (if any)
  781. Return: ES:DI -> object
  782.     CX = number of elements in the object
  783. Note:    each dimension must be 32767 or smaller
  784. SeeAlso: AL=01h,AL=08h,INT C8"APL"
  785. --------r-88--08-----------------------------
  786. INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
  787.     AL = 08h
  788.     AH = rank
  789.     BX = STPTR of the variable to be assigned
  790.     CX = first dimension (if any)
  791.     DX = second dimension (if any)
  792. Return: ES:DI -> object
  793.     CX = number of elements in the object
  794. Note:    each dimension must be 32767 or smaller
  795. SeeAlso: AL=01h,AL=02h,INT C8"APL"
  796. --------r-88--F5-----------------------------
  797. INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
  798.     AL = F5h
  799.     BX = STPTR of object
  800. SeeAlso: INT C8"APL"
  801. --------r-88--F6-----------------------------
  802. INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
  803.     AL = F6h
  804.     BX = STPTR of object
  805. SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
  806. --------r-88--F7-----------------------------
  807. INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
  808.     AL = F7h
  809.     BX = STPTR of object
  810. SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
  811. --------r-88--F8-----------------------------
  812. INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
  813.     AL = F8h
  814.     BX = STPTR of object
  815. Return: BX = name's outswapping status
  816.         0000h eligible
  817.         0001h not eligible
  818. SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
  819. --------r-88--F9-----------------------------
  820. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  821.     AL = F9h
  822.     ES:SI -> name
  823.     CX = length of name
  824. Return: CF set if name ill-formed or already in use
  825.         BX = STPTR if already in symbol table
  826.     CF clear if name is available for use
  827.         BX = 0000h
  828. Note:    does not force the name into the workspace
  829. SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
  830. --------r-88--FC-----------------------------
  831. INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
  832.     AL = FCh
  833.     BX = amount of memory needed (paragraphs)
  834. Return: CF clear if memory available
  835.     CF set if a workspace compaction is required
  836. SeeAlso: AL=FDh,INT C8"APL"
  837. --------r-88--FD-----------------------------
  838. INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
  839.     AL = FDh
  840. Return: BX = number of paragraphs available in workspace
  841. SeeAlso: AL=FCh,INT C8"APL"
  842. --------r-88--FE-----------------------------
  843. INT 88 - APL*PLUS/PC - CREATE NAME
  844.     AL = FEh
  845.     ES:SI -> name
  846.     CX = length of name
  847. Return: BX = STPTR of name
  848.     DX = interpreter's data segment
  849. SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
  850. --------r-88--FF-----------------------------
  851. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  852.     AL = FFh
  853.     ES:SI -> name
  854.     CX = length of name
  855. Return: CF set if name ill-formed or already in use
  856.         BX = STPTR if already in symbol table
  857.     CF clear if name is available for use
  858.         BX = 0000h
  859. Note:    forces the name into the workspace and makes it immune from outswapping
  860. SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
  861. --------r-89---------------------------------
  862. INT 89 - IBM ROM BASIC - used while in interpreter
  863. Notes:    called by ROM BASIC
  864.     BASIC.COM/BASICA.COM do not restore vector on termination
  865. SeeAlso: INT 88"BASIC",INT 8A"BASIC"
  866. --------r-89---------------------------------
  867. INT 89 - APL*PLUS/PC - ???
  868. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  869.       the older interrupts
  870. SeeAlso: INT C9"APL"
  871. --------r-8A---------------------------------
  872. INT 8A - IBM ROM BASIC - used while in interpreter
  873. Notes:    called by ROM BASIC
  874.     BASIC.COM/BASICA.COM do not restore vector on termination
  875. SeeAlso: INT 89"BASIC",INT 8B"BASIC"
  876. --------r-8A---------------------------------
  877. INT 8A - APL*PLUS/PC - PRINT SCREEN
  878. Note:    same as INT 05
  879. SeeAlso: INT 05"PRINT SCREEN",INT 8C"APL",INT CA"APL"
  880. --------r-8B---------------------------------
  881. INT 8B - IBM ROM BASIC - used while in interpreter
  882. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  883.     BASIC.COM/BASICA.COM do not restore vector on termination
  884. SeeAlso: INT 8A"BASIC",INT 8C"BASIC"
  885. --------r-8B---------------------------------
  886. INT 8B - APL*PLUS/PC - BEEP
  887. Note:    same as printing a ^G via INT 21/AH=02h
  888. SeeAlso: INT 21/AH=02h,INT CB"APL"
  889. --------v-8B---------------------------------
  890. INT 8B - VIRUS - "ZeroHunt" - INSTALLATION CHECK (NOT A VECTOR!)
  891. Note:    if the ZeroHunt virus is resident, this vector will contain either
  892.       EE83h:019Bh (ZH-411) or EE83h:019Fh (ZH-415)
  893. SeeAlso: INT 70"VIRUS",INT 87"VIRUS",INT 9C"VIRUS"
  894. --------r-8C---------------------------------
  895. INT 8C - IBM ROM BASIC - used while in interpreter
  896. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  897.     BASIC.COM/BASICA.COM do not restore vector on termination
  898. --------r-8C---------------------------------
  899. INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
  900.     AX = flag
  901.         0000h do not save display attributes
  902.         0001h save attributes
  903. SeeAlso: INT CC"APL"
  904. --------r-8D---------------------------------
  905. INT 8D - IBM ROM BASIC - used while in interpreter
  906. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  907.     BASIC.COM/BASICA.COM do not restore vector on termination
  908. --------r-8E---------------------------------
  909. INT 8E - IBM ROM BASIC - used while in interpreter
  910. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  911.     BASIC.COM/BASICA.COM do not restore vector on termination
  912. --------r-8F---------------------------------
  913. INT 8F - IBM ROM BASIC - used while in interpreter
  914. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  915.     BASIC.COM/BASICA.COM do not restore vector on termination
  916. --------r-90---------------------------------
  917. INT 90 - IBM ROM BASIC - used while in interpreter
  918. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  919.     BASIC.COM/BASICA.COM do not restore vector on termination
  920. --------r-90---------------------------------
  921. INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
  922. --------r-91---------------------------------
  923. INT 91 - IBM ROM BASIC - used while in interpreter
  924. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  925.     BASIC.COM/BASICA.COM do not restore vector on termination
  926. --------N-91---------------------------------
  927. INT 91 - IBM TOKEN RING ADAPTER - ???
  928. SeeAlso: INT 81"TOKEN RING",INT 82"TOKEN RING",INT 93"TOKEN RING"
  929. --------r-92---------------------------------
  930. INT 92 - IBM ROM BASIC - used while in interpreter
  931. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  932.     BASIC.COM/BASICA.COM do not restore vector on termination
  933. --------N-92---------------------------------
  934. INT 92 - Sangoma X.25 INTERFACE PROGRAM
  935.     BX:DX -> control block
  936. SeeAlso: INT 68"Sangoma"
  937. --------e-92E1-------------------------------
  938. INT 92 - Da Vinci eMail Dispatcher INTERFACE
  939.     AH = E1h
  940.     AL = function
  941.     BX = stack count (number of words to push)
  942.     CX:DX -> stack data (in word-reversed order ready to push)
  943. Return: AX = status (see #3228)
  944. Note:    preserves BP, DS, SI, DI; other registers may be destroyed
  945.  
  946. (Table 3228)
  947. Values for Da Vinci eMail function status:
  948.  0001h    success
  949.  FF97h    "ERS_NOT_AVAILABLE"
  950.  FF99h    "ERS_TOO_MANY_NAMES"
  951.  FF9Ah    "ERS_BAD_NAME_PASSWORD"
  952.  FFE3h    "ERS_NAME_NOT_FOUND"
  953.  FFF8h    "ERS_USE_STRING" (call NetGetError to get error string)
  954.  FFFFh    "ERS_NO_SUCH_FILE"
  955. --------e-92E100-----------------------------
  956. INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
  957.     AX = E100h
  958.     BX = size of parameter block in words (000Ah)
  959.     CX:DX -> parameter block (see #3229)
  960. Return: AX = 0001h success
  961. Desc:    this function is used to initialize the dispatcher
  962. SeeAlso: AX=E101h,AX=E103h
  963.  
  964. Format of Da Vinci eMail "NetInitStart" parameter block:
  965. Offset    Size    Description    (Table 3229)
  966.  00h    WORD    segment of ???
  967.  02h    WORD    offset of ???
  968.  04h    WORD    high part of long ???
  969.  06h    WORD    low part of long ???
  970.  08h    WORD    high part of long ???
  971.  0Ah    WORD    low part of long ???
  972.  0Ch    WORD    high part of long ???
  973.  0Eh    WORD    low part of long ???
  974.  10h    WORD    high part of long ???
  975.  12h    WORD    low part of long ???
  976. --------e-92E101BX0000-----------------------
  977. INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
  978.     AX = E101h
  979.     BX = 0000h
  980.     CX:DX ignored
  981. Return: AX = 0001h success
  982. SeeAlso: AX=E100h,AX=E180h
  983. --------e-92E102BX0000-----------------------
  984. INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
  985.     AX = E102h
  986.     BX = 0000h
  987.     CX:DX ignored
  988. Return: AX = 0001h success
  989. Desc:    this function is used to determine if the dispatcher is loaded
  990. SeeAlso: AX=E10Bh,AX=E180h
  991. --------e-92E103BX0000-----------------------
  992. INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
  993.     AX = E103h
  994.     BX = 0000h
  995.     CX:DX ignored
  996. Return: AX = status (see #3228)
  997. SeeAlso: AX=E100h
  998. --------e-92E104-----------------------------
  999. INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
  1000.     AX = E104h
  1001.     BX = size of parameter block in words (0006h)
  1002.     CX:DX -> parameter block (see #3230)
  1003. Return: AX = status (see #3228)
  1004. Desc:    this function is used to verify node address for usernames
  1005. SeeAlso: AX=E180h
  1006.  
  1007. Format of Da Vinci eMail "NetWhereIs" parameter block:
  1008. Offset    Size    Description    (Table 3230)
  1009.  00h    WORD    segment of node address buffer
  1010.  02h    WORD    offset of node address buffer
  1011.  04h    WORD    segment of uppercase username
  1012.  06h    WORD    offset of uppercase username
  1013.  08h    WORD    segment of "DVSEMAIL"
  1014.  0Ah    WORD    offset of "DVSEMAIL"
  1015. --------e-92E105-----------------------------
  1016. INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
  1017.     AX = E105h
  1018.     BX = size of parameter block in words (0007h)
  1019.     CX:DX -> parameter block (see #3231)
  1020. Return: AX = 0000h Error
  1021.     AX = handle
  1022. Desc:    this function is used to open a submission channel
  1023. SeeAlso: AX=E10Ah,AX=E106h,AX=E108h
  1024.  
  1025. Format of Da Vinci eMail "NetOpen" parameter block:
  1026. Offset    Size    Description    (Table 3231)
  1027.  00h    WORD    operation (1 = read, 2 = write)
  1028.  02h    WORD    segment of uppercase To: username
  1029.  04h    WORD    offset of uppercase To: username
  1030.  06h    WORD    segment of "DVSEMAIL"
  1031.  08h    WORD    offset of "DVSEMAIL"
  1032.  0Ah    WORD    segment of node address
  1033.  0Ch    WORD    offset of node address
  1034. --------e-92E106BX0004-----------------------
  1035. INT 92 - Da Vinci eMail Dispatcher - "NetRead"
  1036.     AX = E106h
  1037.     BX = 0004h
  1038.     CX:DX -> parameter block
  1039. Return: AX = 0001h
  1040. SeeAlso: AX=E108h
  1041. --------e-92E107BX0002-----------------------
  1042. INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
  1043.     AX = E107h
  1044.     BX = 0002h
  1045.     CX:DX -> parameter block
  1046. Return: AX = 0001h
  1047. SeeAlso: AX=E109h,AX=E180h
  1048. --------e-92E108-----------------------------
  1049. INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
  1050.     AX = E108h
  1051.     BX = size of parameter block in words (0004h)
  1052.     CX:DX -> parameter block (see #3232)
  1053. Return: AX = amount written
  1054. Desc:    This function is used to write transactions to the dispatcher.
  1055.       The command block is written first and then another call is used
  1056.       to write the associated data.
  1057. SeeAlso: AX=E106h
  1058.  
  1059. Format of Da Vinci eMail "NetWrite" parameter block:
  1060. Offset    Size    Description    (Table 3232)
  1061.  00h    WORD    buffer count (see #3234)
  1062.  02h    WORD    segment of command buffer (see #3233)
  1063.  04h    WORD    offset of command buffer
  1064.  06h    WORD    handle from NetOpen
  1065.  
  1066. Format of Da Vinci eMail command buffer:
  1067. Offset    Size    Description    (Table 3233)
  1068.  00h    BYTE    command
  1069.         21h '!' Protocol commands for remote control
  1070.         41h 'A' Authorization protocol element
  1071.         42h 'B' Return(back) routing information
  1072.             Associated data is the From: username
  1073.         43h 'C' Carbon Copy list
  1074.             Associated data is a comma delimitted list of usernames
  1075.         44h 'D' Distribution list
  1076.             Associated data is a comma delimitted list of usernames
  1077.         45h 'E' Mail end marker
  1078.             No associated data
  1079.         48h 'H' Mail message header
  1080.             Associated data is a message header buffer
  1081.         4Dh 'M' Mail message
  1082.             Associated data is the body of the message
  1083.         4Fh 'O' Object
  1084.         50h 'P' Paperclip attachment
  1085.         52h 'R' Routing information
  1086.             Associated data is the To: username
  1087.         53h 'S' Subject
  1088.             Associated data is the subject of the message
  1089.         54h 'T' Trail of Reply/Forwards
  1090.  01h    BYTE    subcommand
  1091.  02h    DWORD    length of associated data
  1092.  
  1093. Format of Da Vinci eMail message header buffer:
  1094. Offset    Size    Description    (Table 3234)
  1095.  00h 30 BYTEs    subject line
  1096.  1Eh 24 BYTEs    To
  1097.  36h 24 BYTEs    From
  1098.  4Eh    DWORD    Time
  1099.         BYTE    00h
  1100.         BYTE    hour
  1101.         BYTE    minute
  1102.         BYTE    second
  1103.  52h    DWORD    Date
  1104.         BYTE    00h
  1105.         BYTE    year
  1106.         BYTE    month
  1107.         BYTE    day
  1108.  56h    DWORD    serial number (00000000h)
  1109.  5Ah    WORD    mail types (see #3235)
  1110.  5Ch    WORD    special types (0)
  1111.  
  1112. Bitfields for Da Vinci eMail mail types:
  1113. Bit(s)    Description    (Table 3235)
  1114.  7    blind carbon copy
  1115.  6    carbon copy
  1116.  5    priority
  1117.  4    confidential
  1118.  3    certified
  1119.  2    bulk
  1120.  1-0    class (first, second, third, bulk)
  1121. --------e-92E109-----------------------------
  1122. INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
  1123.     AX = E109h
  1124.     BX = size of parameter block in words (0001h)
  1125.     CX:DX -> parameter block (see #3236)
  1126. Return: AX = FF97h (ERS_NOT_AVAILABLE)
  1127. SeeAlso: AX=E107h,AX=E180h
  1128.  
  1129. Format of Da Vinci eMail "NetErrorFix" parameter block:
  1130. Offset    Size    Description    (Table 3236)
  1131.  00h    WORD    ???
  1132. --------e-92E10A-----------------------------
  1133. INT 92 - Da Vinci eMail Dispatcher - "NetClose"
  1134.     AX = E10Ah
  1135.     BX = size of parameter block in words (0001h)
  1136.     CX:DX -> parameter block (see #3237)
  1137. Return: AX = 0001h
  1138. Desc:    this function is used to close a dispatcher handle
  1139. SeeAlso: AX=E105h
  1140.  
  1141. Format of Da Vinci eMail "NetClose" parameter block:
  1142. Offset    Size    Description    (Table 3237)
  1143.  00h    WORD    handle from NetOpen
  1144. --------e-92E10B-----------------------------
  1145. INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
  1146.     AX = E10Bh
  1147.     BX = size of parameter block in words (0004h)
  1148.     CX:DX -> parameter block (see #3238)
  1149. Return: AX = 0001h
  1150. SeeAlso: AX=E102h,AX=E10Ch
  1151.  
  1152. Format of Da Vinci eMail "NetCheckQueue" parameter block:
  1153. Offset    Size    Description    (Table 3238)
  1154.  00h    WORD    segment of 24-byte username buffer
  1155.  02h    WORD    offset of 24-byte username buffer
  1156.  04h    WORD    segment of 24-byte protocol buffer
  1157.  06h    WORD    offset of 24-byte protocol buffer
  1158. --------e-92E10C-----------------------------
  1159. INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
  1160.     AX = E10Ch
  1161.     BX = size of parameter block in words (0002h)
  1162.     CX:DX -> parameter block (see #3239)
  1163. Return: AX = 0001h
  1164. SeeAlso: AX=E10Bh
  1165.  
  1166. Format of Da Vinci eMail "NetReadQueue" parameter block:
  1167. Offset    Size    Description    (Table 3239)
  1168.  00h    WORD    Segment of 128 byte node address buffer
  1169.  02h    WORD    Offset of 128 byte node address buffer
  1170. --------e-92E10D-----------------------------
  1171. INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
  1172.     AX = E10Dh
  1173.     BX = size of parameter block in words (0006h)
  1174.     CX:DX -> parameter block (see #3240)
  1175. Return: AX = status (see #3228)
  1176. Desc:    this function is used to verify username/password
  1177. SeeAlso: AX=E10Eh
  1178.  
  1179. Format of Da Vinci eMail "NetSubmitName" parameter block:
  1180. Offset    Size    Description    (Table 3240)
  1181.  00h    WORD    segment of uppercase password string
  1182.  02h    WORD    offset of uppercase password string
  1183.  04h    WORD    segment of uppercase username string
  1184.  06h    WORD    offset of uppercase username string
  1185.  08h    WORD    segment of "DVSEMAIL"
  1186.  0Ah    WORD    offset of "DVSEMAIL"
  1187. --------e-92E10E-----------------------------
  1188. INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
  1189.     AX = E10Eh
  1190.     BX = size of parameter block in words (0004h)
  1191.     CX:DX -> parameter block (see #3241)
  1192. Return: AX = 0001h
  1193. Desc:    this function is used to remove a username
  1194. SeeAlso: AX=E10Dh
  1195.  
  1196. Format of Da Vinci eMail "NetRemoveName" parameter block:
  1197. Offset    Type    Description    (Table 3241)
  1198.  00h    WORD    segment of uppercase username
  1199.  02h    WORD    offset of uppercase username
  1200.  04h    WORD    segment of "DVSEMAIL"
  1201.  06h    WORD    offset of "DVSEMAIL"
  1202. --------e-92E10FBX0000-----------------------
  1203. INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
  1204.     AX = E10Fh
  1205.     BX = 0000h
  1206.     CX:DX ignored
  1207. Return: AX = 0001h
  1208. SeeAlso: AX=E180h
  1209. --------e-92E110-----------------------------
  1210. INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
  1211.     AX = E110h
  1212.     BX = size of parameter block in words (0006h)
  1213.     CX:DX -> parameter block (see #3242)
  1214. Return: AX = 0001h
  1215. SeeAlso: AX=E111h,AX=E113h
  1216.  
  1217. Format of Da Vinci eMail "NetGetAltRoute" parameter block:
  1218. Offset    Size    Description    (Table 3242)
  1219.  00h  6 WORDs    ???
  1220. --------e-92E111-----------------------------
  1221. INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
  1222.     AX = E111h
  1223.     BX = size of parameter block in words (0004h)
  1224.     CX:DX -> parameter block (see #3243)
  1225. Return: AX = 0001h
  1226. SeeAlso: AX=E110h,AX=E113h
  1227.  
  1228. Format of Da Vinci eMail "NetDeleteAltRoutes" parameter block:
  1229. Offset    Size    Description    (Table 3243)
  1230.  00h  4 WORDs    ???
  1231. --------e-92E112-----------------------------
  1232. INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
  1233.     AX = E112h
  1234.     BX = size of parameter block in words (0008h)
  1235.     CX:DX -> parameter block (see #3244)
  1236. Return: AX = 0001h
  1237. SeeAlso: AX=E180h
  1238.  
  1239. Format of Da Vinci eMail "NetChangePassword" parameter block:
  1240. Offset    Size    Description    (Table 3244)
  1241.  00h  8 WORDs    ???
  1242. --------e-92E113-----------------------------
  1243. INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
  1244.     AX = E113h
  1245.     BX = size of parameter block in words (0008h)
  1246.     CX:DX -> parameter block (see #3245)
  1247. Return: AX = 0001h
  1248. SeeAlso: AX=E110h,AX=E111h
  1249.  
  1250. Format of Da Vinci eMail "NetSetAltRoute" parameter block:
  1251. Offset    Size    Description    (Table 3245)
  1252.  00h  8 WORDs    ???
  1253. --------e-92E175-----------------------------
  1254. INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
  1255.     AX = E175h
  1256. Return: AX = 0012h
  1257.     BX = PSP
  1258. SeeAlso: AX=E180h
  1259. --------e-92E180-----------------------------
  1260. INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK
  1261.     AX = E180h
  1262. Return: AX = 0012h if installed
  1263.     ES:DX -> '$'-terminated driver information string
  1264. SeeAlso: AX=E102h,AX=E105h,AX=E10Fh,AX=E175h
  1265. --------r-93---------------------------------
  1266. INT 93 - IBM ROM BASIC - used while in interpreter
  1267. Notes:    called by ROM BASIC
  1268.     BASIC.COM/BASICA.COM do not restore vector on termination
  1269. --------N-93---------------------------------
  1270. INT 93 - IBM TOKEN RING ADAPTER - ???
  1271. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  1272. --------r-94---------------------------------
  1273. INT 94 - IBM ROM BASIC - used while in interpreter
  1274. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1275.     BASIC.COM/BASICA.COM do not restore vector on termination
  1276. --------s-94----SI0000-----------------------
  1277. INT 94 u - PCM driver - INITIALIZE SOUND
  1278.     SI = 0000h
  1279.     ES:BX -> parameters
  1280. Return: ???
  1281. Program: PCM.COM is a sound driver for Media Vision's Pro Audio Spectrum
  1282.       sound boards
  1283. Note:    the installation check consists of testing for the signature string
  1284.       "PCMDRIVER" immediately preceding the interrupt handler; the word
  1285.       preceding the signature gives the PCM driver's version
  1286. SeeAlso: SI=0001h,SI=0002h,SI=0003h,SI=0004h,SI=0005h,SI=000Ah
  1287. Index:    installation check;PCM driver|PCM.COM;installation check
  1288. Index:    PCM driver;installation check
  1289. --------s-94----SI0001-----------------------
  1290. INT 94 u - PCM driver - INITIALIZE PCM
  1291.     SI = 0001h
  1292.     ES:BX -> parameters
  1293. Return: ???
  1294. SeeAlso: SI=0000h,SI=0002h,SI=0003h,SI=000Ah
  1295. --------s-94----SI0002-----------------------
  1296. INT 94 u - PCM driver - INITIALIZE PCM INFO
  1297.     SI = 0002h
  1298.     ES:BX -> parameters (see #3246)
  1299. Return: ???
  1300. SeeAlso: SI=0000h,SI=0001h,SI=0003h,SI=000Ah
  1301.  
  1302. Format of PCM driver function 0002h parameters:
  1303. Offset    Size    Description    (Table 3246)
  1304.  00h    DWORD    rate
  1305.  04h    WORD    channel number
  1306.  06h    WORD    "comp"
  1307.  08h    WORD    "dsize"
  1308. --------s-94----SI0003-----------------------
  1309. INT 94 u - PCM driver - INITIALIZE DMA BUFFER
  1310.     SI = 0003h
  1311.     ES:BX -> parameters (see #3247)
  1312. Return: ???
  1313. SeeAlso: SI=0000h,SI=000Ah,SI=000Bh
  1314.  
  1315. Format of PCM driver function 0003h parameters:
  1316. Offset    Size    Description    (Table 3247)
  1317.  00h    DWORD    -> DMA buffer
  1318.  04h    WORD    size of DMA buffer
  1319.  06h    WORD    number of divisions
  1320. --------s-94----SI0004-----------------------
  1321. INT 94 u - PCM driver - INITIALIZE USER FUNCTION
  1322.     SI = 0004h
  1323.     ES:BX -> parameters (see #3248)
  1324. Return: ???
  1325. SeeAlso: SI=0000h,SI=0001h
  1326.  
  1327. Format of PCM driver function 0004h parameters:
  1328. Offset    Size    Description    (Table 3248)
  1329.  00h    DWORD    -> user function
  1330. --------s-94----SI0005-----------------------
  1331. INT 94 u - PCM driver - BEGIN AUDIO PLAY
  1332.     SI = 0005h
  1333. Return: ???
  1334. SeeAlso: SI=0000h,SI=0006h,SI=0007h,SI=0009h
  1335. --------s-94----SI0006-----------------------
  1336. INT 94 u - PCM driver - BEGIN AUDIO RECORD
  1337.     SI = 0006h
  1338. Return: ???
  1339. SeeAlso: SI=0005h,SI=0007h,SI=0009h
  1340. --------s-94----SI0007-----------------------
  1341. INT 94 u - PCM driver - PAUSE AUDIO PLAY/RECORD
  1342.     SI = 0007h
  1343. Return: ???
  1344. SeeAlso: SI=0005h,SI=0006h,SI=0008h
  1345. --------s-94----SI0008-----------------------
  1346. INT 94 u - PCM driver - RESUME AUDIO PLAY/RECORD
  1347.     SI = 0008h
  1348. Return: ???
  1349. SeeAlso: SI=0007h
  1350. --------s-94----SI0009-----------------------
  1351. INT 94 u - PCM driver - STOP AUDIO PLAY/RECORD
  1352.     SI = 0009h
  1353. Return: ???
  1354. SeeAlso: SI=0005h,SI=0006h,SI=0007h
  1355. --------s-94----SI000A-----------------------
  1356. INT 94 u - PCM driver - UNHOOK INTERRUPTS AND TURN OFF DMA
  1357.     SI = 000Ah
  1358. Return: ???
  1359. SeeAlso: SI=0000h,SI=0001h,SI=0003h
  1360. Index:    uninstall;PCM driver
  1361. --------s-94----SI000B-----------------------
  1362. INT 94 u - PCM driver - FIND VALID DMA BUFFER IN HUGE MEMORY BLOCK
  1363.     SI = 000Bh
  1364.     ES:BX -> parameters (see #3249)
  1365. Return: ???
  1366. SeeAlso: SI=0003h
  1367.  
  1368. Format of PCM driver functio 000Bh parameters:
  1369. Offset    Size    Description    (Table 3249)
  1370.  00h    DWORD    -> memory block to contain DMA buffer
  1371.  04h    WORD    desired size of DMA buffer
  1372. --------s-94----SI000D-----------------------
  1373. INT 94 u - Media Vision PCM.COM - GET STATUS
  1374.     SI = 000Dh
  1375. Return: AX = status (0000h = waiting) (see #3250)
  1376.  
  1377. Bitfields for PCM.COM status:
  1378. Bit(s)    Description    (Table 3250)
  1379.  0    playing
  1380.  1    recording
  1381.  2    SBplaying
  1382.  3    SBrecording
  1383.  14    SBpaused
  1384.  15    paused
  1385. --------s-94----SI8000-----------------------
  1386. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER ADDRESS
  1387.     SI = 8000h
  1388. Return: DX:AX -> DMA buffer
  1389. Program: PCM.COM is a superset of the standard PCM driver which provides
  1390.       additional functions for fine control of the driver
  1391. Note:    the installation check for the Media Vision PCM.COM "shark" functions
  1392.       consists of testing for the signature "PCM-SHARK" at offset 107h in
  1393.       the INT 94 handler's segment
  1394. SeeAlso: SI=8001h,SI=8004h
  1395. Index:    installation check;Media Vision PCM.COM|PCM.COM;installation check
  1396. Index:    Media Vision PCM.COM;"shark" functions
  1397. --------s-94----SI8001-----------------------
  1398. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER SIZE AND DIVISIONS
  1399.     SI = 8001h
  1400. Return: AX = DMA buffer size
  1401.     DX = divisions
  1402. SeeAlso: SI=8000h
  1403. --------s-94----SI8002-----------------------
  1404. INT 94 u - Media Vision PCM.COM - CHECK BOARD ADDRESS
  1405.     SI = 8002h
  1406. Return: AX = status
  1407.         0000h if board not at specified I/O address
  1408.         other if board found
  1409. Note:    the I/O address is specified by ORing the base I/O port shifted left
  1410.       four bits into SI before calling INT 94
  1411. SeeAlso: SI=8000h
  1412. --------s-94----SI8004-----------------------
  1413. INT 94 u - Media Vision PCM.COM - GET INTERNAL NOTE BUFFER
  1414.     SI = 8004h
  1415. Return: AX = offset of note buffer (segment = segment of internal DMA buffer)
  1416.     DX = size of buffer in note structures
  1417. SeeAlso: SI=8000h
  1418. --------s-94----SI8005-----------------------
  1419. INT 94 u - Media Vision PCM.COM - SINGLE-STEP QUEUE
  1420.     SI = 8005h
  1421. Return: ???
  1422. --------s-94----SI8011-----------------------
  1423. INT 94 u - Media Vision PCM.COM - INITIALIZE
  1424.     SI = 8011h
  1425.     ES:BX -> "iobf91" structure
  1426. Return: ???
  1427. --------s-94----SI8012-----------------------
  1428. INT 94 u - Media Vision PCM.COM - LOAD SOUND FOR LATER PLAY THROUGH KEYBOARD
  1429.     SI = 8012h
  1430.     ES:BX -> "i94f92buf" structure
  1431. Return: ???
  1432. SeeAlso: SI=8013h,SI=8014h
  1433. --------s-94----SI8013-----------------------
  1434. INT 94 u - Media Vision PCM.COM - GET INTERNAL SOUND USAGE
  1435.     SI = 8013h
  1436. Return: AX = number of sounds used
  1437.     DX = maximum handles
  1438. --------s-94----SI8014-----------------------
  1439. INT 94 u - Media Vision PCM.COM - GET DATA FOR SPECIFIED SOUND
  1440.     SI = 8014h
  1441.     ES:BX -> "i94f92buf" structure to be filled in
  1442.         sound number field set to desired sound
  1443. Return: AX = status
  1444.         0000h successful
  1445.         FFFFh sound number out of range
  1446. SeeAlso: SI=8012h,SI=8013h
  1447. --------s-94----SI8015-----------------------
  1448. INT 94 u - Media Vision PCM.COM - GET/SET INTERNAL DMA BUFFER
  1449.     SI = 8015h
  1450.     ES:BX -> DMA info structure (see #3251)
  1451. Return: ???
  1452.  
  1453. Format of PCM.COM DMA info structure:
  1454. Offset    Size    Description    (Table 3251)
  1455.  00h    DWORD    -> DMA buffer (offset FFFFh = return current buffer info)
  1456.  04h    WORD    DMA buffer size
  1457.  06h    WORD    divisions
  1458. --------s-94----SI8016-----------------------
  1459. INT 94 u - Media Vision PCM.COM - SIMULATE DOUBLE-SHIFT HOTKEY
  1460.     SI = 8016h
  1461.     AX = hotkey number (01h-08h)
  1462. Return: ???
  1463. SeeAlso: AL=02h/SI=8017h
  1464. --------s-94--01SI8017-----------------------
  1465. INT 94 u - Media Vision PCM.COM - CTRL-G INTERCEPT
  1466.     AL = 01h
  1467.     SI = 8017h
  1468.     AH = new state (00h off, 01h on)
  1469. Return: ???
  1470. SeeAlso: AL=02h/SI=8017h
  1471. --------s-94--02SI8017-----------------------
  1472. INT 94 u - Media Vision PCM.COM - DOUBLE-SHIFT-HOTKEY SOUND FEATURE
  1473.     AL = 02h
  1474.     SI = 8017h
  1475.     AH = new state (00h off, 01h on)
  1476. Return: ???
  1477. --------s-94--04SI8017-----------------------
  1478. INT 94 u - Media Vision PCM.COM - RANDOM SOUND FEATURE
  1479.     AL = 04h
  1480.     SI = 8017h
  1481.     AH = new state
  1482.         00h off
  1483.         01h on
  1484.         CX = minimum delay
  1485.         DX = maximum delay
  1486. Return: ???
  1487. --------s-94--08SI8017-----------------------
  1488. INT 94 u - Media Vision PCM.COM - NO ACTIVITY FEATURE
  1489.     AL = 08h
  1490.     SI = 8017h
  1491.     AH = new state
  1492.         00h off
  1493.         01h on
  1494.         DX:CX = delay
  1495. Return: ???
  1496. SeeAlso: AL=10h/SI=8017h
  1497. --------s-94--10SI8017-----------------------
  1498. INT 94 u - Media Vision PCM.COM - TIMER CONTROL
  1499.     AL = 10h
  1500.     SI = 8017h
  1501.     AH = timer options (see #3252)
  1502.     DX:CX = delay if AH bit 7 set (one-shot if DX bit 15 set)
  1503. Return: ???
  1504. SeeAlso: AL=08h/SI=8017h
  1505.  
  1506. Bitfields for PCM.COM timer options:
  1507. Bit(s)    Description    (Table 3252)
  1508.  7    set timer
  1509.  6    timer active (timer turned off if clear)
  1510.  5-0    timer number
  1511. --------s-94----SI8018-----------------------
  1512. INT 94 u - Media Vision PCM.COM - GET INFO
  1513.     SI = 8018h
  1514.     AL = what to get
  1515.         00h "F92state"
  1516.         01h "F92bkgd"
  1517.         02h "I10timer"
  1518.         03h "I08state"
  1519. Return: DX:AX -> desired information
  1520. --------r-95---------------------------------
  1521. INT 95 - IBM ROM BASIC - used while in interpreter
  1522. Notes:    called by ROM BASIC
  1523.     BASIC.COM/BASICA.COM do not restore vector on termination
  1524. --------r-95---------------------------------
  1525. INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
  1526. Note:    use only when the R= option is invoked on entering APL
  1527. --------r-96---------------------------------
  1528. INT 96 - IBM ROM BASIC - used while in interpreter
  1529. Notes:    called by ROM BASIC
  1530.     BASIC.COM/BASICA.COM do not restore vector on termination
  1531. --------U-96---------------------------------
  1532. INT 96 U - KILL.COM, QKILL.COM - POP UP
  1533. Program: KILL.COM is a TSR utility that allows you to terminate programs
  1534.      by calling INT 21/AH=4Ch or reboot the computer (author unknown);
  1535.      QKILL.COM is a modification of KILL.COM by Solar Designer that
  1536.      supports QEMM's Quick Boot feature
  1537. Notes:    This interrupt is intercepted but not chained by KILL.COM; it is never
  1538.       called by KILL.COM itself. It points into the middle of KILL.COM's
  1539.       INT 09 handler and assumes specific values have been placed on the
  1540.       stack (thus it can't be called as an interrupt).
  1541.     To invoke KILL, use the following code:
  1542.         pushf
  1543.         push cs
  1544.         push offset $+0Dh
  1545.         push ax
  1546.         push es
  1547.         push 0
  1548.         pop  es
  1549.         jmp  dword ptr es:[96h*4]
  1550. --------r-97---------------------------------
  1551. INT 97 - IBM ROM BASIC - used while in interpreter
  1552. Notes:    called by ROM BASIC
  1553.     BASIC.COM/BASICA.COM do not restore vector on termination
  1554. --------r-98---------------------------------
  1555. INT 98 - IBM ROM BASIC - used while in interpreter
  1556. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1557.     BASIC.COM/BASICA.COM do not restore vector on termination
  1558. --------r-99---------------------------------
  1559. INT 99 - IBM ROM BASIC - used while in interpreter
  1560. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1561.     BASIC.COM/BASICA.COM do not restore vector on termination
  1562. --------r-9A---------------------------------
  1563. INT 9A - IBM ROM BASIC - used while in interpreter
  1564. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1565.     BASIC.COM/BASICA.COM do not restore vector on termination
  1566. SeeAlso: INT 80"BASIC",INT 99,INT 9B
  1567. --------r-9B---------------------------------
  1568. INT 9B - IBM ROM BASIC - used while in interpreter
  1569. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1570.     BASIC.COM/BASICA.COM do not restore vector on termination
  1571. SeeAlso: INT 80"BASIC",INT 9A,INT 9C"BASIC"
  1572. --------r-9C---------------------------------
  1573. INT 9C - IBM ROM BASIC - used while in interpreter
  1574. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1575.     BASIC.COM/BASICA.COM do not restore vector on termination
  1576. SeeAlso: INT 80"BASIC",INT 9B,INT 9D"BASIC"
  1577. --------v-9C---------------------------------
  1578. INT 9C - VIRUS - "INT13" - ORIGINAL INT 13h VECTOR
  1579. SeeAlso: INT 8B"VIRUS",INT 9D"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  1580. --------r-9D---------------------------------
  1581. INT 9D - IBM ROM BASIC - used while in interpreter
  1582. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1583.     BASIC.COM/BASICA.COM do not restore vector on termination
  1584. SeeAlso: INT 80"BASIC",INT 9C"BASIC",INT 9E"BASIC"
  1585. --------v-9D---------------------------------
  1586. INT 9D - VIRUS - "INT13" - ROM INT 13h ENTRY POINT
  1587. Note:    this vector is used by the virus to store the result of a call to
  1588.       INT 2F/AH=13h
  1589. SeeAlso: INT 2F/AH=13h,INT 9C"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  1590. --------r-9E---------------------------------
  1591. INT 9E - IBM ROM BASIC - used while in interpreter
  1592. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1593.     BASIC.COM/BASICA.COM do not restore vector on termination
  1594. SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT 9F"BASIC"
  1595. --------v-9E---------------------------------
  1596. INT 9E - VIRUS - "INT13" - ORIGINAL INT 21h VECTOR
  1597. SeeAlso: INT 70"VIRUS",INT 9C"VIRUS",INT 9D"VIRUS",INT E0"VIRUS"
  1598. --------r-9F---------------------------------
  1599. INT 9F - IBM ROM BASIC - used while in interpreter
  1600. Notes:    called by ROM BASIC
  1601.     BASIC.COM/BASICA.COM do not restore vector on termination
  1602. SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT A0"BASIC"
  1603. --------v-9F---------------------------------
  1604. INT 9F - VIRUS - "INT13" - STORAGE FOR USER INT 13h VECTOR
  1605. Note:    while it is infecting a file, the INT13 virus grabs INT 13 and uses
  1606.       this interrupt to store the existing INT 13 vector for later
  1607.       restoration
  1608. SeeAlso: INT 9C"VIRUS",INT 9D"VIRUS",INT D3"VIRUS"
  1609. --------r-A0---------------------------------
  1610. INT A0 - IBM ROM BASIC - used while in interpreter
  1611. Notes:    called by ROM BASIC
  1612.     BASIC.COM/BASICA.COM do not restore vector on termination
  1613. SeeAlso: INT 80"BASIC",INT 9F"BASIC",INT A1"BASIC"
  1614. --------r-A0---------------------------------
  1615. INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
  1616. SeeAlso: INT 59"GSS"
  1617. --------r-A1---------------------------------
  1618. INT A1 - IBM ROM BASIC - used while in interpreter
  1619. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1620.     BASIC.COM/BASICA.COM do not restore vector on termination
  1621. SeeAlso: INT 80"BASIC",INT A0"BASIC",INT A2"BASIC"
  1622. --------r-A2---------------------------------
  1623. INT A2 - IBM ROM BASIC - used while in interpreter
  1624. Notes:    called by ROM BASIC
  1625.     BASIC.COM/BASICA.COM do not restore vector on termination
  1626. SeeAlso: INT 80"BASIC",INT A1"BASIC",INT A3"BASIC"
  1627. --------r-A3---------------------------------
  1628. INT A3 - IBM ROM BASIC - used while in interpreter
  1629. Notes:    called by ROM BASIC
  1630.     BASIC.COM/BASICA.COM do not restore vector on termination
  1631. SeeAlso: INT 80"BASIC",INT A2"BASIC",INT A4"BASIC"
  1632. --------r-A4---------------------------------
  1633. INT A4 - IBM ROM BASIC - used while in interpreter
  1634. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1635.     BASIC.COM/BASICA.COM do not restore vector on termination
  1636. SeeAlso: INT 80"BASIC",INT A3"BASIC",INT A5"BASIC"
  1637. --------U-A4---------------------------------
  1638. INT A4 U - Right Hand Man - API
  1639.     AH = function number (v3.3 supports functions 00h-52h)
  1640. Return: CF set on error
  1641.     CF clear if successful
  1642. Program: Right Hand Man is a TSR desk-top utility originally by Red E Products
  1643.       which has evolved into Futurus Team
  1644. Note:    this interrupt is only hooked while popped up
  1645. SeeAlso: INT 2F/AX=A4E0h
  1646. --------r-A5---------------------------------
  1647. INT A5 - IBM ROM BASIC - used while in interpreter
  1648. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1649.     BASIC.COM/BASICA.COM do not restore vector on termination
  1650. SeeAlso: INT 80"BASIC",INT A4"BASIC",INT A6"BASIC"
  1651. --------r-A6---------------------------------
  1652. INT A6 - IBM ROM BASIC - used while in interpreter
  1653. Notes:    called by ROM BASIC
  1654.     BASIC.COM/BASICA.COM do not restore vector on termination
  1655. SeeAlso: INT 80"BASIC",INT A5"BASIC",INT A7"BASIC"
  1656. --------r-A7---------------------------------
  1657. INT A7 - IBM ROM BASIC - used while in interpreter
  1658. Notes:    called by ROM BASIC
  1659.     BASIC.COM/BASICA.COM do not restore vector on termination
  1660. --------r-A8---------------------------------
  1661. INT A8 - IBM ROM BASIC - used while in interpreter
  1662. Notes:    called by ROM BASIC
  1663.     BASIC.COM/BASICA.COM do not restore vector on termination
  1664. --------r-A9---------------------------------
  1665. INT A9 - IBM ROM BASIC - used while in interpreter
  1666. Notes:    called by ROM BASIC
  1667.     BASIC.COM/BASICA.COM do not restore vector on termination
  1668. --------r-AA---------------------------------
  1669. INT AA - IBM ROM BASIC - used while in interpreter
  1670. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1671.     BASIC.COM/BASICA.COM do not restore vector on termination
  1672. --------r-AB---------------------------------
  1673. INT AB - IBM ROM BASIC - used while in interpreter
  1674. Notes:    called by ROM BASIC
  1675.     BASIC.COM/BASICA.COM do not restore vector on termination
  1676. --------r-AC---------------------------------
  1677. INT AC - IBM ROM BASIC - used while in interpreter
  1678. Notes:    called by ROM BASIC
  1679.     BASIC.COM/BASICA.COM do not restore vector on termination
  1680. --------r-AD---------------------------------
  1681. INT AD - IBM ROM BASIC - used while in interpreter
  1682. Notes:    called by ROM BASIC
  1683.     BASIC.COM/BASICA.COM do not restore vector on termination
  1684. --------r-AE---------------------------------
  1685. INT AE - IBM ROM BASIC - used while in interpreter
  1686. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1687.     BASIC.COM/BASICA.COM do not restore vector on termination
  1688. --------r-AF---------------------------------
  1689. INT AF - IBM ROM BASIC - used while in interpreter
  1690. Notes:    called by ROM BASIC
  1691.     BASIC.COM/BASICA.COM do not restore vector on termination
  1692. --------r-B0---------------------------------
  1693. INT B0 - IBM ROM BASIC - used while in interpreter
  1694. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1695.     BASIC.COM/BASICA.COM do not restore vector on termination
  1696. --------r-B1---------------------------------
  1697. INT B1 - IBM ROM BASIC - used while in interpreter
  1698. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1699.     BASIC.COM/BASICA.COM do not restore vector on termination
  1700. --------r-B2---------------------------------
  1701. INT B2 - IBM ROM BASIC - used while in interpreter
  1702. Notes:    called by ROM BASIC
  1703.     BASIC.COM/BASICA.COM do not restore vector on termination
  1704. --------r-B3---------------------------------
  1705. INT B3 - IBM ROM BASIC - used while in interpreter
  1706. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1707.     BASIC.COM/BASICA.COM do not restore vector on termination
  1708. --------U-B370-------------------------------
  1709. INT B3 - ZIPKEY - GET VERSION
  1710.     AH = 70h
  1711. Return: AH = major version
  1712.     AL = minor version
  1713.     CL = number of states and territories in current database
  1714.     DH = year of current database - 1900
  1715.     DL = month of current database's file date
  1716. Program: ZIPKEY is a resident ZIPCODE database by Eric Isaacson
  1717. Note:    if installed, the string "ZIPKEY" is present at offset 75h in the
  1718.       interrupt handler's segment, and the byte at 7Bh contains the API
  1719.       version number (00h for v1.x, 01h for v2.0)
  1720. --------U-B371-------------------------------
  1721. INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
  1722.     AH = 71h
  1723.     BX = abbreviation, in either case (first letter in BL)
  1724. Return: CF set on error
  1725.         AL = FFh
  1726.     CF clear if successful
  1727.         AL = ZIPKEY state code
  1728. SeeAlso: AH=72h
  1729. --------U-B372-------------------------------
  1730. INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
  1731.     AH = 72h
  1732.     BL = ZIPKEY state code
  1733. Return: CF set on error
  1734.         AX destroyed
  1735.     CF clear if successful
  1736.         AX = abbreviation, in upper case
  1737. SeeAlso: AH=71h,AH=73h
  1738. --------U-B373-------------------------------
  1739. INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
  1740.     AH = 73h
  1741.     BL = ZIPKEY state code
  1742.     ES:DI -> buffer for name
  1743. Return: CF set on error
  1744.         AX destroyed
  1745.     CF clear if successful
  1746.         ES:DI points one byte beyond end of name
  1747. SeeAlso: AH=72h
  1748. --------U-B374-------------------------------
  1749. INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
  1750.     AH = 74h
  1751.     DX = zipcode region (0-999)
  1752.     CH = last two digits of zipcode (0-99)
  1753.     ES:DI -> buffer
  1754. Return: CF set on error
  1755.         AX destroyed
  1756.     CF clear if successful
  1757.         ES:DI points one byte beyond end of digit string
  1758. --------U-B375-------------------------------
  1759. INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
  1760.     AH = 75h
  1761.     DX = zipcode region (0-999)
  1762.     CH = last two digits of zipcode (0-99)
  1763. Return: CF set on error (zipcode not found)
  1764.         AL = suggested state code, FFh if none
  1765.     CF clear if successful
  1766.         AL = ZIPKEY state code
  1767.         BX = area code (v2.0+)
  1768. SeeAlso: AH=76h,AH=79h
  1769. --------U-B376-------------------------------
  1770. INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
  1771.     AH = 76h
  1772.     DX = zipcode region (0-999)
  1773.     CH = last two digits of zipcode (0-99)
  1774.     ES:DI -> buffer for name
  1775. Return: CF set on error
  1776.         AL = suggested state code, FFh if none
  1777.         ES:DI buffer filled with suggested city name
  1778.     CF clear if successful
  1779.         AL = ZIPKEY state code
  1780.         BX = area code (v2.0+)
  1781.         ES:DI points one byte beyond end of name
  1782. SeeAlso: AH=75h,AH=78h,AH=7Eh
  1783. --------U-B377-------------------------------
  1784. INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
  1785.     AH = 77h
  1786.     DX = zipcode region (0-999)
  1787.     CH = last two digits of zipcode (0-99)
  1788.     BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
  1789. Return: CF set on error
  1790.         AX destroyed
  1791.     CF clear if successful
  1792.         zipcode specification as defined by the BX keystroke is placed in
  1793.           keyboard buffer, as if the user had popped up ZIPKEY and exited
  1794.           by pressing the key specified by BX
  1795. --------U-B378-------------------------------
  1796. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
  1797.     AH = 78h
  1798.     BL = ZIPKEY state code
  1799.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  1800. Return: BH = number of matching entries (set to 51 if more than 50)
  1801.     DX = zipcode region of first match (0-999)
  1802.     CL = last two digits of first zipcode in the range (0-99)
  1803.     CH = last two digits of last zipcode in the range (0-99)
  1804.     AX destroyed
  1805. SeeAlso: AH=79h,AH=7Ah
  1806. --------U-B379-------------------------------
  1807. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
  1808.     AH = 79h
  1809.     BL = ZIPKEY state code of first state to search
  1810.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  1811. Return: AL = ZIPKEY state code of first matching state
  1812.     BH = number of matching entries (set to 51 if more than 50)
  1813.     DX = zipcode region of first match (0-999)
  1814.     CL = last two digits of first zipcode in first range (0-99)
  1815.     CH = last two digits of last zipcode in first range (0-99)
  1816. Note:    to find all matching cities, repeat search with BL set to one more than
  1817.       the returned AL
  1818. SeeAlso: AH=78h,AH=7Ah
  1819. --------U-B37A-------------------------------
  1820. INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
  1821.     AH = 7Ah
  1822.     BL = case number (0 to one less than value returned in BH by lookup)
  1823. Return: AL = ZIPKEY state code
  1824.     DX = zipcode region (0-999)
  1825.     CL = last two digits of first zipcode in the range (0-99)
  1826.     CH = last two digits of last zipcode in the range (0-99)
  1827. SeeAlso: AH=78h,AH=79h
  1828. --------U-B37B-------------------------------
  1829. INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
  1830.     AH = 7Bh
  1831. Return: BL = maximum number of characters for a city name
  1832.     BH = ZIPKEY state code for last city-name search, or FFh if none
  1833.     CX:DX = internal code identifying last city search
  1834.     AX destroyed
  1835. SeeAlso: AH=7Ch
  1836. --------U-B37C-------------------------------
  1837. INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
  1838.     AH = 7Ch
  1839.     BL = maximum number of characters for a city name
  1840.     BH = ZIPKEY state code for last city-name search, or FFh if none
  1841.     CX:DX = internal code returned by AH=7Bh
  1842. Return: CF set on error
  1843.     CF clear if successful
  1844.     AX destroyed
  1845. SeeAlso: AH=7Bh
  1846. --------U-B37D-------------------------------
  1847. INT B3 - ZIPKEY - REQUEST POP UP
  1848.     AH = 7Dh
  1849.     BL = index number to simulate pressing a hotkey
  1850.         FFh for immediate popup with no playback on return
  1851. Return: CF set on error
  1852.         AL = error code
  1853.         FDh already busy with another request
  1854.         FEh illegal function
  1855.     CF clear if successful
  1856.         AX destroyed
  1857.         window popped up and was closed by the user
  1858. SeeAlso: AH=70h
  1859. --------U-B37E-------------------------------
  1860. INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
  1861.     AH = 7Eh
  1862.     DX = zipcode region (0-999)
  1863.     ES:DI -> buffer for name
  1864. Return: CF set on error
  1865.         AL = FFh region does not exist
  1866.     CF clear if successful
  1867.         AL = ZIPKEY state code
  1868.         ES:DI points one byte beyond end of name
  1869. SeeAlso: AH=76h
  1870. --------U-B37F-------------------------------
  1871. INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
  1872.     AH = 7Fh
  1873.     BL = function
  1874.         00h turn off hotkeys
  1875.         01h turn on hotkeys
  1876.         02h return hotkey status
  1877.         03h toggle hotkey status
  1878. Return: AL = hotkey status
  1879.         00h off
  1880.         01h on
  1881. --------U-B380-------------------------------
  1882. INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
  1883.     AH = 80h
  1884.     BX = telephone area code (decimal)
  1885. Return: CF clear if successful
  1886.         AL = ZIPKEY state code
  1887.         DX = first ZIP region for state (03E8h if Canada)
  1888.         CX = number of ZIP regions in state
  1889.     CF set on error
  1890.         AL = FFh
  1891.         DX = 03E9h
  1892. --------r-B4---------------------------------
  1893. INT B4 - IBM ROM BASIC - used while in interpreter
  1894. Notes:    called by ROM BASIC
  1895.     BASIC.COM/BASICA.COM do not restore vector on termination
  1896. --------r-B4---------------------------------
  1897. INT B4 - StackMan - REQUEST NEW STACK
  1898. Return: SS:SP -> new stack
  1899. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  1900.       which functions as a replacement for the DOS STACK= command as well
  1901.       as permitting multiple TSRs to share a pool of stack space
  1902. Note:    the installation check consists of testing for the string "STACKXXX" at
  1903.       offset 0Ah from the interrupt handler
  1904. SeeAlso: INT 2F/AX=C9FFh,INT B5"STACKMAN"
  1905. Index:    installation check;STACKMAN
  1906. --------r-B5---------------------------------
  1907. INT B5 - IBM ROM BASIC - used while in interpreter
  1908. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1909.     BASIC.COM/BASICA.COM do not restore vector on termination
  1910. SeeAlso: INT 80"BASIC",INT B4"BASIC",INT B6"BASIC"
  1911. --------r-B5---------------------------------
  1912. INT B5 - StackMan - RESTORE ORIGINAL STACK
  1913.     SS:SP -> stack returned by INT B4
  1914. Return: SS:SP restored to value before INT B4
  1915. SeeAlso: INT 2F/AX=C9FFh,INT B4"StackMan"
  1916. --------m-B5---------------------------------
  1917. INT B5 U - Netroom NETSWAP4 - ???
  1918.     ???
  1919. Return: ???
  1920. SeeAlso: INT 31/AH=57h
  1921. --------r-B6---------------------------------
  1922. INT B6 - IBM ROM BASIC - used while in interpreter
  1923. Notes:    called by ROM BASIC
  1924.     BASIC.COM/BASICA.COM do not restore vector on termination
  1925. SeeAlso: INT 80"BASIC",INT B5"BASIC",INT B7"BASIC"
  1926. --------y-B6---------------------------------
  1927. INT B6 - (NOT A VECTOR!) - USED BY TBFENCE
  1928. Program: TBFence is a security program by ESaSS B.V. which transparently
  1929.       encrypts floppies and optionally allows only encrypted diskettes to
  1930.       be accessed
  1931. Note:    the low word of this vector (0000h:02D8h) contains the segment of the
  1932.       TBFence INT 13h code, which starts with the signature word E487h;
  1933.       this forms the installation check
  1934.     the highest byte of this vector contains the start of a FAR JMP
  1935.       instruction to ???
  1936. SeeAlso: INT B7"TBFENCE"
  1937. Index:    installation check;TBFence
  1938. --------r-B7---------------------------------
  1939. INT B7 - IBM ROM BASIC - used while in interpreter
  1940. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1941.     BASIC.COM/BASICA.COM do not restore vector on termination
  1942. SeeAlso: INT 80"BASIC",INT B6"BASIC",INT B8"BASIC"
  1943. --------y-B7---------------------------------
  1944. INT B7 - TBFENCE - ???
  1945. SeeAlso: INT B6"TBFENCE"
  1946. --------r-B8---------------------------------
  1947. INT B8 - IBM ROM BASIC - used while in interpreter
  1948. Notes:    called by ROM BASIC
  1949.     BASIC.COM/BASICA.COM do not restore vector on termination
  1950. SeeAlso: INT 80"BASIC",INT B7"BASIC",INT B9"BASIC"
  1951. --------r-B9---------------------------------
  1952. INT B9 - IBM ROM BASIC - used while in interpreter
  1953. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1954.     BASIC.COM/BASICA.COM do not restore vector on termination
  1955. --------r-BA---------------------------------
  1956. INT BA - IBM ROM BASIC - used while in interpreter
  1957. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1958.     BASIC.COM/BASICA.COM do not restore vector on termination
  1959. --------r-BB---------------------------------
  1960. INT BB - IBM ROM BASIC - used while in interpreter
  1961. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1962.     BASIC.COM/BASICA.COM do not restore vector on termination
  1963. --------r-BC---------------------------------
  1964. INT BC - IBM ROM BASIC - used while in interpreter
  1965. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1966.     BASIC.COM/BASICA.COM do not restore vector on termination
  1967. --------r-BD---------------------------------
  1968. INT BD - IBM ROM BASIC - used while in interpreter
  1969. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1970.     BASIC.COM/BASICA.COM do not restore vector on termination
  1971. --------r-BE---------------------------------
  1972. INT BE - IBM ROM BASIC - used while in interpreter
  1973. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1974.     BASIC.COM/BASICA.COM do not restore vector on termination
  1975. SeeAlso: INT 80"BASIC",INT BD"BASIC",INT BF"BASIC"
  1976. --------Q-BE---------------------------------
  1977. INT BE - DESQview/X - ???
  1978. Note:    points at an IRET
  1979. SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview"
  1980. --------r-BF---------------------------------
  1981. INT BF - IBM ROM BASIC - used while in interpreter
  1982. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1983.     BASIC.COM/BASICA.COM do not restore vector on termination
  1984. SeeAlso: INT 80"BASIC",INT BE"BASIC",INT C0"BASIC"
  1985. --------r-C0---------------------------------
  1986. INT C0 - IBM ROM BASIC - used while in interpreter
  1987. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1988.     BASIC.COM/BASICA.COM do not restore vector on termination
  1989. SeeAlso: INT 80"BASIC",INT BF"BASIC",INT C1"BASIC"
  1990. --------d-C0---------------------------------
  1991. INT C0 - AMI BIOS - DRIVE 0 DATA
  1992. Note:    this vector is used by some AMI BIOSes to store the first four bytes
  1993.       of the hard disk parameter table
  1994. SeeAlso: INT 41"HARD DISK 0",INT 60"Adaptec",INT C1"AMI",INT C2"AMI"
  1995. SeeAlso: INT C3"AMI",INT C4"AMI"
  1996. --------r-C1---------------------------------
  1997. INT C1 - IBM ROM BASIC - used while in interpreter
  1998. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1999.     BASIC.COM/BASICA.COM do not restore vector on termination
  2000. SeeAlso: INT 80"BASIC",INT C0"BASIC",INT C2"BASIC"
  2001. --------d-C1---------------------------------
  2002. INT C1 - AMI BIOS - DRIVE 0 DATA
  2003. Note:    this vector is used by some AMI BIOSes to store the second four bytes
  2004.       of the hard disk parameter table
  2005. SeeAlso: INT 41"HARD DISK 0",INT 60"Adaptec",INT C0"AMI",INT C2"AMI"
  2006. SeeAlso: INT C3"AMI"
  2007. --------r-C2---------------------------------
  2008. INT C2 - IBM ROM BASIC - used while in interpreter
  2009. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2010.     BASIC.COM/BASICA.COM do not restore vector on termination
  2011. SeeAlso: INT 80"BASIC",INT C1"BASIC",INT C3"BASIC"
  2012. --------d-C2---------------------------------
  2013. INT C2 - AMI BIOS - DRIVE 0 DATA
  2014. Note:    this vector is used by some AMI BIOSes to store the third four bytes
  2015.       of the hard disk parameter table
  2016. SeeAlso: INT 41"DISK 0",INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C3"AMI"
  2017. --------r-C3---------------------------------
  2018. INT C3 - IBM ROM BASIC - used while in interpreter
  2019. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2020.     BASIC.COM/BASICA.COM do not restore vector on termination
  2021. SeeAlso: INT 80"BASIC",INT C2"BASIC",INT C4"BASIC"
  2022. --------d-C3---------------------------------
  2023. INT C3 - AMI BIOS - DRIVE 0 DATA
  2024. Note:    this vector is used by some AMI BIOSes to store the final four bytes
  2025.       of the hard disk parameter table
  2026. SeeAlso: INT 41"DISK 0",INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C2"AMI"
  2027. --------r-C4---------------------------------
  2028. INT C4 - IBM ROM BASIC - used while in interpreter
  2029. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2030.     BASIC.COM/BASICA.COM do not restore vector on termination
  2031. SeeAlso: INT 80"BASIC",INT C3"BASIC",INT C5"BASIC"
  2032. --------d-C4---------------------------------
  2033. INT C4 - AMI BIOS - DRIVE 1 DATA
  2034. Note:    this vector is used by some AMI BIOSes to store the first four bytes
  2035.       of the second hard disk's parameter table
  2036. SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C5"AMI"
  2037. SeeAlso: INT C6"AMI",INT C7"AMI"
  2038. --------r-C5---------------------------------
  2039. INT C5 - IBM ROM BASIC - used while in interpreter
  2040. Notes:    called by ROM BASIC
  2041.     BASIC.COM/BASICA.COM do not restore vector on termination
  2042. SeeAlso: INT 80"BASIC",INT C4"BASIC",INT C6"BASIC"
  2043. --------d-C5---------------------------------
  2044. INT C5 - AMI BIOS - DRIVE 1 DATA
  2045. Note:    this vector is used by some AMI BIOSes to store the second four bytes
  2046.       of the second hard disk's parameter table
  2047. SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
  2048. SeeAlso: INT C6"AMI",INT C7"AMI"
  2049. --------r-C6---------------------------------
  2050. INT C6 - IBM ROM BASIC - used while in interpreter
  2051. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2052.     BASIC.COM/BASICA.COM do not restore vector on termination
  2053. SeeAlso: INT 80"BASIC",INT C5"BASIC",INT C7"BASIC"
  2054. --------r-C6---------------------------------
  2055. INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
  2056. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  2057.       the older interrupts
  2058. SeeAlso: INT 86"APL"
  2059. --------d-C6---------------------------------
  2060. INT C6 - AMI BIOS - DRIVE 1 DATA
  2061. Note:    this vector is used by some AMI BIOSes to store the third four bytes
  2062.       of the second hard disk's parameter table
  2063. SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
  2064. SeeAlso: INT C5"AMI",INT C7"AMI"
  2065. --------r-C7---------------------------------
  2066. INT C7 - IBM ROM BASIC - used while in interpreter
  2067. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2068.     BASIC.COM/BASICA.COM do not restore vector on termination
  2069. SeeAlso: INT 80"BASIC",INT C6"BASIC",INT C8"BASIC"
  2070. --------r-C7---------------------------------
  2071. INT C7 - APL*PLUS/PC - ???
  2072. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  2073.       the older interrupts
  2074. SeeAlso: INT 87"APL"
  2075. --------d-C7---------------------------------
  2076. INT C7 - AMI BIOS - DRIVE 1 DATA
  2077. Note:    this vector is used by some AMI BIOSes to store the final four bytes
  2078.       of the second hard disk's parameter table
  2079. SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
  2080. SeeAlso: INT C5"AMI",INT C6"AMI"
  2081. --------r-C8---------------------------------
  2082. INT C8 - IBM ROM BASIC - used while in interpreter
  2083. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2084.     BASIC.COM/BASICA.COM do not restore vector on termination
  2085. SeeAlso: INT 80"BASIC",INT C7"BASIC",INT C9"BASIC"
  2086. --------r-C8---------------------------------
  2087. INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
  2088. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  2089.       the older interrupts
  2090. SeeAlso: INT 88/AL=00h"APL",INT 88/AL=08h"APL"
  2091. --------r-C9---------------------------------
  2092. INT C9 - IBM ROM BASIC - used while in interpreter
  2093. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2094.     BASIC.COM/BASICA.COM do not restore vector on termination
  2095. SeeAlso: INT 80"BASIC",INT C8"BASIC",INT CA"BASIC"
  2096. --------r-C9---------------------------------
  2097. INT C9 - APL*PLUS/PC - ???
  2098. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  2099.       the older interrupts
  2100. SeeAlso: INT 89"APL"
  2101. --------r-CA---------------------------------
  2102. INT CA - IBM ROM BASIC - used while in interpreter
  2103. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2104.     BASIC.COM/BASICA.COM do not restore vector on termination
  2105. SeeAlso: INT 80"BASIC",INT C9"BASIC",INT CB"BASIC"
  2106. --------r-CA---------------------------------
  2107. INT CA - APL*PLUS/PC - PRINT SCREEN
  2108. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  2109.       the older interrupts
  2110. SeeAlso: INT 8A"APL"
  2111. --------r-CB---------------------------------
  2112. INT CB - IBM ROM BASIC - used while in interpreter
  2113. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2114.     BASIC.COM/BASICA.COM do not restore vector on termination
  2115. SeeAlso: INT 80"BASIC",INT CA"BASIC",INT CC"BASIC"
  2116. --------r-CB---------------------------------
  2117. INT CB - APL*PLUS/PC - BEEP
  2118. Notes:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  2119.       the older interrupts
  2120.     same as printing a ^G via INT 21/AH=02h
  2121. SeeAlso: INT 8B"APL"
  2122. --------r-CC---------------------------------
  2123. INT CC - IBM ROM BASIC - used while in interpreter
  2124. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2125.     BASIC.COM/BASICA.COM do not restore vector on termination
  2126. SeeAlso: INT 80"BASIC",INT CB"BASIC",INT CD"BASIC"
  2127. --------r-CC---------------------------------
  2128. INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
  2129.     AX = flag
  2130.         0000h do not save display attributes
  2131.         0001h save attributes
  2132. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  2133.       the older interrupts
  2134. SeeAlso: INT 8C"APL"
  2135. --------r-CD---------------------------------
  2136. INT CD - IBM ROM BASIC - used while in interpreter
  2137. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2138.     BASIC.COM/BASICA.COM do not restore vector on termination
  2139. SeeAlso: INT 80"BASIC",INT CC"BASIC",INT CE"BASIC"
  2140. --------r-CD---------------------------------
  2141. INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2142. --------r-CE---------------------------------
  2143. INT CE - IBM ROM BASIC - used while in interpreter
  2144. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2145.     BASIC.COM/BASICA.COM do not restore vector on termination
  2146. SeeAlso: INT 80"BASIC",INT CD"BASIC",INT CF"BASIC"
  2147. --------r-CE---------------------------------
  2148. INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2149. --------r-CF---------------------------------
  2150. INT CF - IBM ROM BASIC - used while in interpreter
  2151. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2152.     BASIC.COM/BASICA.COM do not restore vector on termination
  2153. SeeAlso: INT 80"BASIC",INT CE"BASIC",INT D0"BASIC"
  2154. --------r-CF---------------------------------
  2155. INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
  2156. SeeAlso: INT E0"APL"
  2157. --------r-D0---------------------------------
  2158. INT D0 - IBM ROM BASIC - used while in interpreter
  2159. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2160.     BASIC.COM/BASICA.COM do not restore vector on termination
  2161. SeeAlso: INT 80"BASIC",INT CF"BASIC",INT D1"BASIC"
  2162. --------r-D0---------------------------------
  2163. INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2164. --------U-D0---------------------------------
  2165. INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR
  2166. Program: NJFRERAM is a resident free-memory display utility by Mike "Nifty
  2167.       James" Blaszczak
  2168. Note:    if NJFRERAM is installed, this vector points at the signature "NJ"
  2169. Index:    installation check;NJFRERAM
  2170. --------r-D1---------------------------------
  2171. INT D1 - IBM ROM BASIC - used while in interpreter
  2172. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2173.     BASIC.COM/BASICA.COM do not restore vector on termination
  2174. SeeAlso: INT 80"BASIC",INT D0"BASIC",INT D2"BASIC"
  2175. --------r-D1---------------------------------
  2176. INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2177. --------r-D2---------------------------------
  2178. INT D2 - IBM ROM BASIC - used while in interpreter
  2179. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2180.     BASIC.COM/BASICA.COM do not restore vector on termination
  2181. SeeAlso: INT 80"BASIC",INT D1"BASIC",INT D3"BASIC"
  2182. --------r-D2---------------------------------
  2183. INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2184. --------r-D3---------------------------------
  2185. INT D3 - IBM ROM BASIC - used while in interpreter
  2186. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2187.     BASIC.COM/BASICA.COM do not restore vector on termination
  2188. SeeAlso: INT 80"BASIC",INT D2"BASIC",INT D4"BASIC"
  2189. --------r-D3---------------------------------
  2190. INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2191. --------v-D3---------------------------------
  2192. INT D3 - VIRUS - "Antiexe" - RELOCATED INT 13
  2193. SeeAlso: INT 9F"VIRUS"
  2194. --------r-D4---------------------------------
  2195. INT D4 - IBM ROM BASIC - used while in interpreter
  2196. Notes:    called by ROM BASIC
  2197.     BASIC.COM/BASICA.COM do not restore vector on termination
  2198. SeeAlso: INT 80"BASIC",INT D3"BASIC",INT D5"BASIC"
  2199. --------r-D4---------------------------------
  2200. INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2201. --------O-D400-------------------------------
  2202. INT D4 O - PC-MOS/386 v5.01 - OBSOLETE FUNCTIONS
  2203.     AH = 00h and 01h
  2204. Return: nothing
  2205. Desc:    PC-MOS/386 v5.01 reports that these functions are no longer supported
  2206.       and enters an endless loop
  2207. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2208.       system by The Software Link, Inc.
  2209. --------O-D402-------------------------------
  2210. INT D4 - PC-MOS/386 v3.0+ - GET SYSTEM CONTROL BLOCK POINTER
  2211.     AH = 02h
  2212. Return: AX = 0000h
  2213.     ES:BX -> System Control Block in V86 mode (see #3253)
  2214.     ES:EBX -> System Control Block in native mode (see #3253)
  2215. Note:    superseded by AH=26h
  2216. SeeAlso: AH=04h,AH=10h,AH=26h,AH=28h,AH=29h,AH=2Ah,INT 21/AX=3000h,INT 38
  2217.  
  2218. Format of PC-MOS/386 System Control Block:
  2219. Offset    Size    Description    (Table 3253)
  2220.  00h    WORD    pointer to first TCB in chain
  2221.  02h 17 BYTEs    reserved
  2222.  13h    WORD    pointer to current task's TCB
  2223.  15h    WORD    pointer to TCB of visible (console) task
  2224. --------O-D403-------------------------------
  2225. INT D4 - PC-MOS/386 v5.01 - GET/SET EXTENDED DIRECTORY INFORMATION
  2226.     AH = 03h
  2227.     AL = subfunction (00h get, 01h set)
  2228.     DS:(E)DX -> pathname
  2229.     ES:(E)BX -> 10-byte buffer for directory information (see #3254)
  2230. Return: CF clear if successful
  2231.         AL = permitted access level for file (00h-03h)
  2232.         ES:(E)BX -> modified buffer (AL=01h on entry)
  2233.     CF set on error
  2234.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2235. Notes:    BX/DX are used in V86 mode, EBX/EDX in native mode
  2236.     the file class cannot be changed for files because it affects the
  2237.       encryption method, but directories can have their classes changed
  2238.  
  2239. Format of PC-MOS/386 directory information:
  2240. Offset    Size    Description    (Table 3254)
  2241.  00h    BYTE    reserved (0)
  2242.  01h    BYTE    file class ('A'-'Z' or 00h)
  2243.  02h    DWORD    user ID of file creator
  2244.  06h    WORD    file creation time (see #1005 at INT 21/AX=5700h)
  2245.  08h    WORD    file creation date (see #1006 at INT 21/AX=5700h)
  2246. --------O-D404-------------------------------
  2247. INT D4 - PC-MOS/386 v3.0+ - GET TASK CONTROL BLOCK
  2248.     AH = 04h
  2249.     BX = task ID or FFFFh for calling task
  2250. Return: CF clear if successful
  2251.         ES = segment of Task Control Block (TCB) (see #3255)
  2252.     CF set on error
  2253.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2254. Note:    superseded by AH=27h
  2255. SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah,INT 38
  2256.  
  2257. Format of PC-MOS/386 Task Control Block:
  2258. Offset    Size    Description    (Table 3255)
  2259.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2260.  01h    BYTE    header block ID, "T" = TCB
  2261.  02h    WORD    length of block in paragraphs
  2262.  04h    WORD    segment address of next header block (0000h if last)
  2263.  06h    WORD    segment address of previous header block (0000h if first)
  2264.  08h    WORD    pointer to next TCB
  2265.  0Ah    WORD    pointer to previous TCB
  2266.  0Ch    WORD    pointer to associated TCB (if applicable)
  2267.  0Eh    WORD    reserved
  2268. ---TCB---
  2269.  10h    WORD    TCB task ID
  2270.  12h    WORD    native context save area
  2271.  14h    WORD    start address of task
  2272.  16h    WORD    end address of task
  2273.  18h    BYTE    task priority
  2274.  19h    BYTE    task time slice
  2275.  1Ah    BYTE    "TCBWAIT" run status of task
  2276.  1Bh    BYTE    "TCBSTAT" what the task is waiting for
  2277.  1Ch    DWORD    address of polling routine
  2278.  20h    BYTE    error code from last function call
  2279.  21h 11 BYTEs    name of currently executing task
  2280.  2Ch  4 BYTEs    ???
  2281.  30h    BYTE    keyboard disabled if bit 1 set
  2282.  31h    BYTE    current shift state and toggles
  2283.  32h  2 BYTEs    ???
  2284.  34h    BYTE    current video mode
  2285.  35h    BYTE    current video page
  2286.  36h    BYTE    number of text columns per screen
  2287.  37h    BYTE    number of text rows per screen
  2288.  38h    WORD    length of video buffer
  2289.  3Ah    WORD    video page length
  2290.  3Ch    WORD    apge start address in video RAM
  2291.  3Eh  4 WORDs    current cursor positions for four screen pages
  2292.  46h  8 BYTEs    ???
  2293.  4Eh    WORD    current cursor type
  2294.  50h    BYTE    current palette setting
  2295.  51h    BYTE    original video mode
  2296.  52h    BYTE    start CRT row (00h or 01h)
  2297.  53h    BYTE    video RAM in task active
  2298.  54h    WORD    handle of video save area
  2299.  56h    WORD    page count of video save area
  2300.  58h    WORD    segment address of video save area
  2301.  5Ah    WORD    poitner to first Task File Block (see #3258)
  2302.  5Ch    WORD    pointer to first Current Directory Block (see #3261)
  2303.  5Eh    WORD    pointer to active Current Directory Block (see #3261)
  2304.  60h    BYTE    number of drives
  2305.  61h    BYTE    current drive (0=A:, etc.)
  2306.  62h    DWORD    disk transfer address
  2307.  66h  4 BYTEs    ???
  2308.  6Ah    BYTE    verify flag (nonzero = on)
  2309.  6Bh    BYTE    break flag (nonzero = on)
  2310.  6Ch    WORD    share/lock retry count
  2311.  6Eh    WORD    ticks between share/lock retries
  2312.  70h    BYTE    remote printer flags (see #3256)
  2313.  71h    BYTE    ETX/ACK delay count
  2314.  72h    WORD    spooler segment address
  2315.  74h  2 BYTEs    ???
  2316.  76h  3 BYTEs    remote printer redirection for LPT1 through LPT3 (see #3257)
  2317.  79h  2 BYTEs    ???
  2318.  7Bh    DWORD    offset of username in TCB
  2319.  7Fh    BYTE    current output class
  2320.  80h  7 BYTEs    protection access rights, 2 bits per class (writeable!)
  2321.  87h 122 BYTEs    ???
  2322. 101h    BYTE    TCB sleep downcounter value
  2323. 102h 20 BYTEs    ???
  2324. 116h    BYTE    last scan code
  2325.     ...
  2326. 5D0h    DWORD    far pointer to Device Driver Terminal's entry point
  2327. 5D4h    WORD    offset of logical screen
  2328. 5D6h    WORD    segment of logical screen
  2329. 5D8h    WORD    cursor offset within page
  2330. 5DAh    BYTE    screen columns
  2331. 5DBh    WORD    async port number (0000h = none)
  2332. 5DDh    DWORD    physical baudrate
  2333. 5E1h 19 BYTEs    reserved for Device Driver Terminal (DDT)
  2334.     ...
  2335. 7A6h    DWORD    far pointer to unregister calling chain
  2336.  
  2337. Bitfields for PC-MOS/386 remote printer flags:
  2338. Bit(s)    Description    (Table 3256)
  2339.  0    LPT1 to terminal
  2340.  1    LPT2 to terminal
  2341.  2    LPT3 to terminal
  2342.  3    escape to printer pending
  2343.  4    use XON/XOFF
  2344.  5    use ETX/ACK
  2345.  6    waiting for ACK or XON
  2346.  7    transparent printing on
  2347.  
  2348. (Table 3257)
  2349. Values for PC-MOS/386 remote printer redirection:
  2350.  00h    not redirected
  2351.  01h    redirected to COM1
  2352.  ...
  2353.  18h    redirected to COM24
  2354.  51h    redirected to LPT1
  2355.  52h    redirected to LPT2
  2356.  53h    redirected to LPT3
  2357.  
  2358. Format of PC-MOS/386 Task File Block:
  2359. Offset    Size    Description    (Table 3258)
  2360.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2361.  01h    BYTE    header block ID, "F" = task file block
  2362.  02h    WORD    length of block in paragraphs
  2363.  04h    WORD    segment address of next header block (0000h if last)
  2364.  06h    WORD    segment address of previous header block (0000h if first)
  2365.  08h    WORD    pointer to next TCB
  2366.  0Ah    WORD    pointer to previous TCB
  2367.  0Ch    WORD    pointer to associated TCB (if applicable)
  2368.  0Eh    WORD    reserved
  2369. ---TFB---
  2370.  10h    WORD    segment address of next TFB
  2371.  12h    WORD    segment address of previous TFB
  2372.  14h    WORD    segment address of TFB's Global File Block (see #3260)
  2373.  16h    WORD    segment address of owner's PSP
  2374.  18h    WORD    file handle
  2375.  1Ah  3 BYTEs    ???
  2376.  1Dh    DWORD    file position
  2377.  21h  4 BYTEs    ???
  2378.  25h    BYTE    IOCTL flags (see #3259)
  2379.  26h  2 BYTEs    ???
  2380.  
  2381. Bitfields for PC-MOS/386 IOCTL flags:
  2382. Bit(s)    Description    (Table 3259)
  2383.  0    stdin
  2384.  1    stdout
  2385.  2    null device
  2386.  3    clock device
  2387.  4    reserved
  2388.  5    ASCII mode instead of binary
  2389.  6    EOF encountered on input
  2390.  7    device rather than file
  2391.  
  2392. Format of PC-MOS/386 Global File Block:
  2393. Offset    Size    Description    (Table 3260)
  2394.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2395.  01h    BYTE    header block ID, "G" = global file block
  2396.  02h    WORD    length of block in paragraphs
  2397.  04h    WORD    segment address of next header block (0000h if last)
  2398.  06h    WORD    segment address of previous header block (0000h if first)
  2399.  08h    WORD    pointer to next TCB
  2400.  0Ah    WORD    pointer to previous TCB
  2401.  0Ch    WORD    pointer to associated TCB (if applicable)
  2402.  0Eh    WORD    reserved
  2403. ---GFB---
  2404.  10h 10 BYTEs    ???
  2405.  1Ah    WORD    file attribute
  2406.  1Ch    BYTE    ???
  2407.  1Dh    DWORD    address of device driver
  2408.  21h    WORD    first cluster
  2409.  23h    WORD    time of last modification
  2410.  25h    WORD    date of last modification
  2411.  27h    DWORD    size of file in bytes
  2412.  2Bh 11 BYTEs    ???
  2413.  36h 11 BYTEs    device name or FCB-format filename
  2414.  41h    WORD    segment address of TFB list
  2415.  43h    WORD    segment address of first RLB (see #3263) (0000h = none)
  2416.  45h    BYTE    flag: nonzero if GFB refers to character device
  2417.  46h    WORD    address of Block Device Block (see #3262)
  2418.  48h    WORD    sector of file's directory entry (see #0700)
  2419.  4Ah    WORD    high word of file's directory entry
  2420.  4Ch    WORD    ofsset of directory entry within sector
  2421.  
  2422. Format of PC-MOS/386 Current Directory Block:
  2423. Offset    Size    Description    (Table 3261)
  2424.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2425.  01h    BYTE    header block ID, "C" = current directory block
  2426.  02h    WORD    length of block in paragraphs
  2427.  04h    WORD    segment address of next header block (0000h if last)
  2428.  06h    WORD    segment address of previous header block (0000h if first)
  2429.  08h    WORD    pointer to next TCB
  2430.  0Ah    WORD    pointer to previous TCB
  2431.  0Ch    WORD    pointer to associated TCB (if applicable)
  2432.  0Eh    WORD    reserved
  2433. ---CDB---
  2434.  10h    BYTE    drive number
  2435.  11h    BYTE    ???
  2436.  12h 64 BYTEs    directory name
  2437.  52h    WORD    first directory cluster (0000h = root)
  2438.  
  2439. Format of PC-MOS/386 Block Device Block:
  2440. Offset    Size    Description    (Table 3262)
  2441.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2442.  01h    BYTE    header block ID, "B" = block device block
  2443.  02h    WORD    length of block in paragraphs
  2444.  04h    WORD    segment address of next header block (0000h if last)
  2445.  06h    WORD    segment address of previous header block (0000h if first)
  2446.  08h    WORD    pointer to next TCB
  2447.  0Ah    WORD    pointer to previous TCB
  2448.  0Ch    WORD    pointer to associated TCB (if applicable)
  2449.  0Eh    WORD    reserved
  2450. ---BDB---
  2451.  10h    BYTE    logical drive
  2452.  11h    BYTE    unit passed to driver
  2453.  12h    WORD    sector size
  2454.  14h    BYTE    cluster mask
  2455.  15h    BYTE    cluster shift count
  2456.  16h    WORD    starting sector of first FAT
  2457.  18h    BYTE    number of FATs
  2458.  19h    WORD    number of root directories
  2459.  1Bh    WORD    sector number of first data sector (cluster 0002h)
  2460.  1Dh    WORD    number of clusters + 1 (number of highest data cluster)
  2461.  1Fh    BYTE    number of sectors in FAT
  2462.  20h    WORD    beginning root directory sector number
  2463.  22h    DWORD    device driver address
  2464.  26h    BYTE    media descriptor byte
  2465.  27h  5 BYTEs    ???
  2466.  2Ch    BYTE    flag: volume > 32MB
  2467.  2Dh    BYTE    ???
  2468.  2Eh    BYTE    number of sectors per cluster
  2469.  2Fh    WORD    number of clusters on device
  2470.  31h    WORD    number of free clusters (FFFFh = unknown)
  2471.  33h    WORD    root directory cluster number
  2472.  35h    WORD    pointer to alias/subst string
  2473.  37h    WORD    TCB segment address of owner (0000h = none)
  2474.  
  2475. Format of PC-MOS/386 Record Lock Block:
  2476. Offset    Size    Description    (Table 3263)
  2477.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2478.  01h    BYTE    header block ID, "R" = record lock block
  2479.  02h    WORD    length of block in paragraphs
  2480.  04h    WORD    segment address of next header block (0000h if last)
  2481.  06h    WORD    segment address of previous header block (0000h if first)
  2482.  08h    WORD    pointer to next TCB
  2483.  0Ah    WORD    pointer to previous TCB
  2484.  0Ch    WORD    pointer to associated TCB (if applicable)
  2485.  0Eh    WORD    reserved
  2486. ---RLB---
  2487.  10h    WORD    segment address of owner's PSP
  2488.  12h    WORD    segment address of Global File Block (see #3260)
  2489.  14h    WORD    segment address of owner's Task File Block (see #3258)
  2490.  16h    DWORD    file offset of locked region start
  2491.  1Ah    DWORD    length of locked region
  2492.  1Eh    WORD    owner's handle for file
  2493. --------O-D407-------------------------------
  2494. INT D4 - PC-MOS/386 v3.0+ - WAIT FOR EVENT
  2495.     AH = 07h
  2496.     AL = events to monitor (see #3264)
  2497.     BX = number of timer ticks until timeout if AL bit 1 set
  2498.     CX = bitmap of IRQs to monitor if AL bit 2 set
  2499.         (bit 0 = IRQ0 .. bit 15 = IRQ15)
  2500.     DX = port to monitor if AL bit 3 set
  2501. Return: CF clear if successful
  2502.         AL = type of event which woke up task (see #3264)
  2503.         CX = IRQ (if any) which awakened task
  2504.         DX = port (if any) which awakened task
  2505.     CF set on error
  2506.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2507. Note:    a device driver may make this call with AL=00h, which indicates that
  2508.       the driver is responsible for setting and clearing the TCBWAIT field
  2509.       in the TCB.  To put task to sleep, set TCBWAIT bits 2-0 to 001; to
  2510.       reawaken it, set bit 1 (leaving other bits unchanged)
  2511. SeeAlso: AH=04h,INT 16/AH=00h,INT 38
  2512.  
  2513. Bitfields for PC-MOS/386 events to monitor:
  2514. Bit(s)    Description    (Table 3264)
  2515.  0    keystroke
  2516.  1    timeout
  2517.  2    IRQ
  2518.  3    port access
  2519.  7    return status of user poll routine (other ignored if set)
  2520. --------O-D410-------------------------------
  2521. INT D4 - PC-MOS/386 v3.0+ - ENTER/LEAVE NATIVE 386 EXECUTION MODE
  2522.     AH = 10h
  2523.     AL = direction (00h return to V86 mode, 01h enter native mode)
  2524.     CX = length in bytes of Native Context Area ( >=1024 )
  2525.     DX = segment of Native Context Area
  2526. Return: CF clear if successful
  2527.         running in desired mode at instruction following INT D4 call
  2528.         all segment registers converted to appropriate selectors/segments
  2529.     CF set on error
  2530.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2531. Note:    MS-DOS calls are available in protected mode
  2532. SeeAlso: AH=11h,AH=12h,AH=13h,INT 2F/AX=1687h,INT 67/AX=DE0Ch,INT 38
  2533. --------O-D411-------------------------------
  2534. INT D4 - PC-MOS/386 v3.0+ - ALLOCATE NATIVE MODE MEMORY BLOCK
  2535.     AH = 11h
  2536.     EBX = block length in bytes
  2537. Return: CF clear if successful
  2538.         EBX = number of bytes actually allocated
  2539.         ES = selector for allocated block
  2540.     CF set on error
  2541.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2542. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2543.       system by The Software Link, Inc.
  2544. Note:    the memory must be released before the program terminates
  2545. SeeAlso: AH=10h,AH=12h,INT 38
  2546. --------O-D412-------------------------------
  2547. INT D4 - PC-MOS/386 v3.0+ - FREE NATIVE MODE MEMORY BLOCK
  2548.     AH = 12h
  2549.     ES = selector for block to free
  2550. Return: CF clear if successful
  2551.     CF set on error
  2552.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2553. SeeAlso: AH=10h,AH=11h,AH=13h,INT 38
  2554. --------O-D413-------------------------------
  2555. INT D4 - PC-MOS/386 v5.01 - GET ALIAS FOR SELECTOR (NATIVE MODE ONLY)
  2556.     AH = 13h
  2557.     AL = type of alias selector (00h data, 01h stack, 02h code)
  2558.     BX = selector
  2559. Return: CF clear if successful
  2560.         AX = new selector or 0000h if BX selector not found
  2561.     CF set on error
  2562.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2563. SeeAlso: AH=11h,AH=12h
  2564. --------O-D416-------------------------------
  2565. INT D4 - PC-MOS/386 v5.01 - SET/CLEAR IRQ RESERVATION
  2566.     AH = 16h
  2567.     AL = function (00h clear, 01h set reservation)
  2568.     CX = IRQ number
  2569. Return: AX = status
  2570.         (0000h successful, 0001h currently reserved by another task)
  2571. SeeAlso: AH=07h,INT 14/AH=11h"PC-MOS"
  2572. --------O-D419-------------------------------
  2573. INT D4 - PC-MOS/386 v5.01 - GET TASK ID
  2574.     AH = 19h
  2575. Return: BX = caller's task ID
  2576. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2577.       system by The Software Link, Inc.
  2578. SeeAlso: AH=1Dh,AH=1Eh
  2579. --------O-D41A-------------------------------
  2580. INT D4 - PC-MOS/386 v5.01 - GET/SET TASK PRIORITY
  2581.     AH = 1Ah
  2582.     AL = subfunction (00h read, 01h set, 02h get and set)
  2583.     BX = task ID (FFFFh for current task)
  2584.     CL = new priority value
  2585. Return: CF clear if successful
  2586.         CL = current priority value
  2587.     CF set on error
  2588.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2589. SeeAlso: AH=1Bh,AH=1Ch
  2590. --------O-D41B-------------------------------
  2591. INT D4 - PC-MOS/386 v5.01 - GET/SET TIME SLICE
  2592.     AH = 1Bh
  2593.     AL = subfunction (00h read, 01h set, 02h get and set)
  2594.     BX = task ID (FFFFh for current task) (see AH=19h)
  2595.     CL = new time slice value
  2596. Return: CF clear if successful
  2597.         CL = current time slice value
  2598.     CF set on error
  2599.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2600. SeeAlso: AH=1Ah,AH=1Ch
  2601. --------O-D41C-------------------------------
  2602. INT D4 - PC-MOS/386 v5.01 - GET/SET KEYBOARD MODE
  2603.     AH = 1Ch
  2604.     AL = subfunction (00h enable, 01h disable, 02h get mode)
  2605.     BX = task ID (FFFFh for current task)
  2606. Return: CF clear if successful
  2607.         CL = current keyboard state
  2608.     CF set on error
  2609.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2610. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2611.       system by The Software Link, Inc.
  2612. SeeAlso: AH=1Ah,AH=1Bh
  2613. --------O-D41D-------------------------------
  2614. INT D4 - PC-MOS/386 v5.01 - GET CURRENT PROGRAM NAME
  2615.     AH = 1Dh
  2616.     BX = task ID (FFFFh for current task) (see AH=19h)
  2617.     ES:DI -> buffer for program name (see #3265)
  2618. Return: CF clear if successful
  2619.         ES:DI buffer filled
  2620.     CF set on error
  2621.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2622. SeeAlso: AH=19h,AH=1Eh
  2623.  
  2624. Format of PC-MOS/386 program name buffer:
  2625. Offset    Size    Description    (Table 3265)
  2626.  00h  8 BYTEs    filename
  2627.  08h  3 BYTEs    extension
  2628. --------O-D41E-------------------------------
  2629. INT D4 - PC-MOS/386 v5.01 - GET CURRENT USERNAME AND SECURITY CLASS
  2630.     AH = 1Eh
  2631.     BX = task ID (FFFFh for current task)
  2632.     ES:DI -> 4-byte buffer for username
  2633. Return: CF clear if successful
  2634.         CL = security class
  2635.         20h (' ') none
  2636.         41h-5Ah ('A'-'Z') security level
  2637.         ES:DI buffer filled
  2638.     CF set on error
  2639.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2640. SeeAlso: AH=19h,AH=1Dh
  2641. --------O-D41F-------------------------------
  2642. INT D4 - PC-MOS/386 v5.01 - GET TASK PARTITION INFORMATION
  2643.     AH = 1Fh
  2644.     BX = task ID (FFFFh for current task) (see AH=19h)
  2645. Return: CF clear if successful
  2646.         CX = start segment of task
  2647.         DX = ending segment of task
  2648.     CF set on error
  2649.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2650. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2651.       system by The Software Link, Inc.
  2652. SeeAlso: AH=2Dh
  2653. --------O-D420-------------------------------
  2654. INT D4 - PC-MOS/386 v5.01 - GET PORT AND BAUDRATE INFORMATION
  2655.     AH = 20h
  2656.     BX = task ID (FFFFh for current task) (see AH=19h)
  2657. Return: CF clear if successful
  2658.         CX = port number (0000h if none)
  2659.         DI:SI = baudrate (if CX nonzero)
  2660.     CF set on error
  2661.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2662. SeeAlso: INT 14/AH=0Ch"FOSSIL"
  2663. --------O-D421-------------------------------
  2664. INT D4 - PC-MOS/386 v5.01 - REMOVE A TASK
  2665.     AH = 21h
  2666.     BX = task ID (FFFFh for current task) (see AH=19h)
  2667. Return: CF clear if successful
  2668.         AX = ASCII percentage of System Memory Pool used
  2669.         (AH = tens digit, AL = ones digit)
  2670.         DS,SI destroyed
  2671.     CF set on error
  2672.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2673. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2674.       system by The Software Link, Inc.
  2675. SeeAlso: AH=22h
  2676. --------O-D422-------------------------------
  2677. INT D4 - PC-MOS/386 v5.01 - ADD A TASK TO THE SYSTEM
  2678.     AH = 22h
  2679.     DS:SI -> addtask data structure (see #3267)
  2680. Return: CF clear if successful
  2681.         ES = segment address of the new task's TCB data structure
  2682.     CF set on error
  2683.         AX = error code (see #3266)
  2684. SeeAlso: AH=21h
  2685.  
  2686. (Table 3266)
  2687. Values for PC-MOS/386 error code:
  2688.  08h    insufficient memory
  2689.  0Bh    invalid addtask structure format
  2690.  12h    insufficient available space in system memory pool
  2691.  1Fh    general failure
  2692.  55h    already allocated
  2693.  57h    if task already in use or invalid parameter
  2694.  
  2695. Format of PC-MOS/386 addtask data structure:
  2696. Offset    Size    Description    (Table 3267)
  2697.  00h    WORD    task size in KB (min 16KB)
  2698.  02h    WORD    task ID (0000h for automatic selection)
  2699.  04h    BYTE    task class (' ' or 'A'-'Z')
  2700.  05h    DWORD    -> ASCIZ name of task startup batchfile
  2701.  09h    DWORD    -> task's terminal driver (0000000h = background task)
  2702.  0Dh    WORD    task port
  2703.  0Fh    DWORD    task baud rate
  2704.  13h    DWORD    (ret) total extended memory
  2705.  17h    DWORD    (ret) number of 4K extended memory pages allocated
  2706.  1Bh    WORD    (ret) paragraphs of system memory pool allocated
  2707.  1Dh    WORD    (ret) system memory pool size in paragraphs
  2708.  1Fh    WORD    (ret) ASCII task percentage of system memory pool
  2709.  21h  3 BYTEs    reserved
  2710. --------O-D423-------------------------------
  2711. INT D4 - PC-MOS/386 v5.01 - CHANGE TERMINAL DRIVER
  2712.     AH = 23h
  2713.     BX = task ID (FFFFh for current task)
  2714.     DS:SI -> entry point of the new Device Driver Terminal
  2715. Return: CF clear if successful
  2716.     CF set on error
  2717.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2718. --------O-D424-------------------------------
  2719. INT D4 U - PC-MOS/386 v5.01 - GET OPERATING SYSTEM SERIAL NUMBER
  2720.     AH = 24h
  2721. Return: DS:DX -> '$'-terminated string containing the serial number
  2722. --------O-D425-------------------------------
  2723. INT D4 - PC-MOS/386 v5.01 - IDENTIFY LOAD ADDRESS OF DEVICE DRIVER LOCATION
  2724.     AH = 25h
  2725.     DX = driver's CS value
  2726. Return: AX = segment address of driver in system memory pool
  2727.         (0000h if the driver is not within the system memory pool)
  2728. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2729.       system by The Software Link, Inc.
  2730. --------O-D426-------------------------------
  2731. INT D4 - PC-MOS/386 v5.01 - GET SYSTEM CONTROL BLOCK SEGMENT/SELECTOR
  2732.     AH = 26h
  2733. Return: DX = segment/selector of the System Control Block (see #3253)
  2734. Note:    this function supersedes AH=02h
  2735. SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah
  2736. --------O-D427-------------------------------
  2737. INT D4 - PC-MOS/386 v5.01 - GET TASK CONTROL BLOCK SEGMENT/SELECTOR
  2738.     AH = 27h
  2739.     BX = task ID (FFFFh if current task) (see AH=19h)
  2740. Return: CF clear if successful
  2741.         DX = segment/selector for the Task Control Block (see #3255)
  2742.     CF set on error
  2743.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2744. Note:    this function supersedes AH=04h
  2745. SeeAlso: AH=26h,AH=28h,AH=29h,AH=2Ah
  2746. --------O-D428-------------------------------
  2747. INT D4 - PC-MOS/386 v5.01 - GET CONTROL BLOCK DATA FROM SCB OR TCB
  2748.     AH = 28h
  2749.     BX = offset into control block at which to start reading
  2750.     CX = number of bytes to read
  2751.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  2752.     ES:DI -> buffer for data
  2753. Return: CF clear if successful
  2754.     CF set on error
  2755.         AX = error code (see also #1020 at INT 21/AH=59h/BX=0000h)
  2756.         05h access denied due to an invalid segment/selector
  2757. SeeAlso: AH=26h,AH=27h,AH=29h,AH=2Ah
  2758. --------O-D429-------------------------------
  2759. INT D4 - PC-MOS/386 v5.01 - WRITE CONTROL BLOCK DATA INTO SCB OR TCB
  2760.     AH = 29h
  2761.     BX = offset into control block at which to start writing
  2762.     CX = number of bytes to write
  2763.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  2764.     DS:SI -> buffer containing data to be written
  2765. Return: CF clear if successful
  2766.     CF set on errro
  2767.         AX = error code (see also #1020 at INT 21/AH=59h/BX=0000h)
  2768.         05h access denied due to an invalid segment/selector
  2769. Note:     this function performs no bounds checking
  2770. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2771.       system by The Software Link, Inc.
  2772. SeeAlso: AH=26h,AH=27h,AH=28h,AH=2Ah
  2773. --------O-D42A-------------------------------
  2774. INT D4 - PC-MOS/386 v5.01 - SWAP CONTROL BLOCK DATA OF SCB OR TCB
  2775.     AH = 2Ah
  2776.     BX = offset into control block at which to start swap
  2777.     CX = number of bytes to swap
  2778.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  2779.     DS:SI -> buffer containing new data and to receive current data
  2780. Return: CF clear if successful
  2781.     CF set on error
  2782.         AX = error code (see also #1020 at INT 21/AH=59h/BX=0000h)
  2783.         05h access denied due to an invalid segment/selector
  2784. Note:    the interrupts are disabled during the swap to prevent corruption
  2785. SeeAlso: AH=26h,AH=27h,AH=28h,AH=29h
  2786. --------O-D42C-------------------------------
  2787. INT D4 - PC-MOS/386 v5.01 - GET/SET SPOOLER PARAMETERS
  2788.     AH = 2Ch
  2789.     AL = function
  2790.         00h set spooler timeout
  2791.         CX = timout value in seconds
  2792.         01h get spooler timeout
  2793.         Return: CX = current timeout in seconds
  2794.         02h get spooler parameters
  2795.         Return: CH = priority (00h-09h)
  2796.             CL = disposition (d, h, i, n, s)
  2797.             SI = class (a - z)
  2798.         03h set spooler parameters
  2799.         CH = priority (00h-09h)
  2800.         CL = disposition (d, h, i, n, s)
  2801.         SI = class (a - z)
  2802.         BX = task ID (FFFFh for current task)
  2803.         DX = LPT number
  2804. Return: CF clear if successful
  2805.     CF set on error
  2806.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2807. SeeAlso: AH=00h,AH=02h,AH=03h
  2808. --------O-D42D-------------------------------
  2809. INT D4 - PC-MOS/386 v5.01 - GET MAXIMUM TASK SIZE
  2810.     AH = 2Dh
  2811. Return: DX = maximum task size in paragraphs
  2812.     BX = start address of task space
  2813. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2814.       system by The Software Link, Inc.
  2815. SeeAlso: AH=1Fh,AH=22h
  2816. --------r-D5---------------------------------
  2817. INT D5 - IBM ROM BASIC - used while in interpreter
  2818. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2819.     BASIC.COM/BASICA.COM do not restore vector on termination
  2820. SeeAlso: INT 80"BASIC",INT D4"BASIC",INT D6"BASIC"
  2821. --------r-D5---------------------------------
  2822. INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2823. --------r-D6---------------------------------
  2824. INT D6 - IBM ROM BASIC - used while in interpreter
  2825. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2826.     BASIC.COM/BASICA.COM do not restore vector on termination
  2827. SeeAlso: INT 80"BASIC",INT D5"BASIC",INT D7"BASIC"
  2828. --------r-D6---------------------------------
  2829. INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2830. --------r-D7---------------------------------
  2831. INT D7 - IBM ROM BASIC - used while in interpreter
  2832. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2833.     BASIC.COM/BASICA.COM do not restore vector on termination
  2834. SeeAlso: INT 80"BASIC",INT D6"BASIC",INT D8"BASIC"
  2835. --------r-D7---------------------------------
  2836. INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2837. --------r-D8---------------------------------
  2838. INT D8 - IBM ROM BASIC - used while in interpreter
  2839. Notes:    called by ROM BASIC
  2840.     BASIC.COM/BASICA.COM do not restore vector on termination
  2841. SeeAlso: INT 80"BASIC",INT D7"BASIC",INT D9"BASIC"
  2842. --------r-D8---------------------------------
  2843. INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2844. --------H-D8---------------------------------
  2845. INT D8 - Screen Thief v1.00 - RELOCATED IRQ0
  2846. Range:    INT 78h to INT E0h, selected by commandline switch
  2847. Note:    Screen Thief relocates IRQs 0 through 7 to INT D8 to INT DF by default,
  2848.       but may be directed via a commandline switch to use any range
  2849.       starting at a multiple of 8 between 78h and E0h
  2850. SeeAlso: INT 08"IRQ0",INT 2D/AL=10h"Screen Thief",INT 50"DESQview"
  2851. SeeAlso: INT D9"Screen Thief"
  2852. --------r-D9---------------------------------
  2853. INT D9 - IBM ROM BASIC - used while in interpreter
  2854. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2855.     BASIC.COM/BASICA.COM do not restore vector on termination
  2856. SeeAlso: INT 80"BASIC",INT D8"BASIC",INT DA"BASIC"
  2857. --------r-D9---------------------------------
  2858. INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2859. --------H-D9---------------------------------
  2860. INT D9 - Screen Thief v1.00 - RELOCATED IRQ1
  2861. Range:    INT 79h to INT E1h, selected by commandline switch
  2862. Note:    (see INT D8"Screen Thief")
  2863. SeeAlso: INT 09"IRQ1",INT D8"Screen Thief",INT DA"Screen Thief"
  2864. --------r-DA---------------------------------
  2865. INT DA - IBM ROM BASIC - used while in interpreter
  2866. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2867.     BASIC.COM/BASICA.COM do not restore vector on termination
  2868. SeeAlso: INT 80"BASIC",INT D9"BASIC",INT DB"BASIC"
  2869. --------r-DA---------------------------------
  2870. INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2871. --------H-DA---------------------------------
  2872. INT DA - Screen Thief v1.00 - RELOCATED IRQ2
  2873. Range:    INT 7Ah to INT E2h, selected by commandline switch
  2874. Note:    (see INT D8"Screen Thief")
  2875. SeeAlso: INT 0A"IRQ2",INT D9"Screen Thief",INT DB"Screen Thief"
  2876. --------r-DB---------------------------------
  2877. INT DB - IBM ROM BASIC - used while in interpreter
  2878. Notes:    called by ROM BASIC
  2879.     BASIC.COM/BASICA.COM do not restore vector on termination
  2880. SeeAlso: INT 80"BASIC",INT DA"BASIC",INT DC"BASIC"
  2881. --------r-DB---------------------------------
  2882. INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2883. --------H-DB---------------------------------
  2884. INT DB - Screen Thief v1.00 - RELOCATED IRQ3
  2885. Range:    INT 7Bh to INT E3h, selected by commandline switch
  2886. Note:    (see INT D8"Screen Thief")
  2887. SeeAlso: INT 0B"IRQ3",INT DA"Screen Thief",INT DC"Screen Thief"
  2888. --------u-DC---------------------------------
  2889. INT DC - PC/370 v4.1- - API
  2890. SeeAlso: INT 60"PC/370"
  2891. --------r-DC---------------------------------
  2892. INT DC - IBM ROM BASIC - used while in interpreter
  2893. Notes:    called by ROM BASIC
  2894.     BASIC.COM/BASICA.COM do not restore vector on termination
  2895. SeeAlso: INT 80"BASIC",INT DB"BASIC",INT DD"BASIC"
  2896. --------r-DC---------------------------------
  2897. INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2898. --------H-DC---------------------------------
  2899. INT DC - Screen Thief v1.00 - RELOCATED IRQ4
  2900. Range:    INT 7Ch to INT E4h, selected by commandline switch
  2901. Note:    (see INT D8"Screen Thief")
  2902. SeeAlso: INT 0C"IRQ4",INT DB"Screen Thief",INT DD"Screen Thief"
  2903. --------r-DD---------------------------------
  2904. INT DD - IBM ROM BASIC - used while in interpreter
  2905. Notes:    called by ROM BASIC
  2906.     BASIC.COM/BASICA.COM do not restore vector on termination
  2907. SeeAlso: INT 80"BASIC",INT DC"BASIC",INT DE"BASIC"
  2908. --------r-DD---------------------------------
  2909. INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER
  2910.     BX = where to place keystrokes
  2911.         FFFFh insert before current buffer contents
  2912.         0000h replace current contents
  2913.         0001h insert after current contents
  2914.     CX = number of keystroke events to insert
  2915.     ES:SI -> data to be placed into buffer (list of WORD key codes)
  2916.         4000h + N = normal ASCII keystroke N (N = 00h to FFh)
  2917.         4100h + N = extended ASCII keystroke N (N = 03h to 84h)
  2918. Return: nothing
  2919. SeeAlso: INT 16/AH=05h
  2920. --------H-DD---------------------------------
  2921. INT DD - Screen Thief v1.00 - RELOCATED IRQ5
  2922. Range:    INT 7Dh to INT E5h, selected by commandline switch
  2923. Note:    (see INT D8"Screen Thief")
  2924. SeeAlso: INT 0D"IRQ5",INT DC"Screen Thief",INT DE"Screen Thief"
  2925. --------r-DE---------------------------------
  2926. INT DE - IBM ROM BASIC - used while in interpreter
  2927. Notes:    called by ROM BASIC
  2928.     BASIC.COM/BASICA.COM do not restore vector on termination
  2929. SeeAlso: INT 80"BASIC",INT DD"BASIC",INT DF"BASIC"
  2930. --------r-DE---------------------------------
  2931. INT DE - APL*PLUS/PC - ???
  2932. Note:    appears to be the same as INT 16
  2933. --------H-DE---------------------------------
  2934. INT DE - Screen Thief v1.00 - RELOCATED IRQ6
  2935. Range:    INT 7Eh to INT E6h, selected by commandline switch
  2936. Note:    (see INT D8"Screen Thief")
  2937. SeeAlso: INT 0E"IRQ6",INT DD"Screen Thief",INT DF"Screen Thief"
  2938. --------b-DF---------------------------------
  2939. INT DF - Victor 9000/Sirius 1 - SuperBIOS
  2940. SeeAlso: INT 21/AH=EAh"NetWare"
  2941. --------r-DF---------------------------------
  2942. INT DF - IBM ROM BASIC - used while in interpreter
  2943. Notes:    called by ROM BASIC
  2944.     BASIC.COM/BASICA.COM do not restore vector on termination
  2945. SeeAlso: INT 80"BASIC",INT DE"BASIC",INT E0"BASIC"
  2946. --------r-DF---------------------------------
  2947. INT DF - APL*PLUS/PC - SAME AS INT 10
  2948. SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh
  2949. --------H-DF---------------------------------
  2950. INT DF - Screen Thief v1.00 - RELOCATED IRQ7
  2951. Range:    INT 7Fh to INT E7h, selected by commandline switch
  2952. Note:    (see INT D8"Screen Thief")
  2953. SeeAlso: INT 0F"IRQ7",INT DE"Screen Thief"
  2954. --------r-E0---------------------------------
  2955. INT E0 - IBM ROM BASIC - used while in interpreter
  2956. Notes:    called by ROM BASIC
  2957.     BASIC.COM/BASICA.COM do not restore vector on termination
  2958. SeeAlso: INT 80"BASIC",INT DF"BASIC",INT E1"BASIC"
  2959. --------r-E0---------------------------------
  2960. INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
  2961. SeeAlso: INT CF"APL"
  2962. --------v-E0---------------------------------
  2963. INT E0 - VIRUS - "Micro-128" - ???
  2964. Note:    Micro-128 also overwrites the upper half of the interrupt table
  2965. SeeAlso: INT 9E"VIRUS",INT F1"VIRUS"
  2966. ----------E0---------------------------------
  2967. INT E0 - DeskMate (Tandy) - DESK EXECUTIVE API
  2968.     AX = function code (numerous)
  2969.     parameters passed in BX, DX, ES, DI, and/or BP
  2970. Return: AX = return from function
  2971. Program: DeskMate is a proprietary GUI from Tandy distributed with several
  2972.       models of the Tandy 1000's, 2500's, 3000's, and laptops.  Retail
  2973.       and runtime versions also exist.  Some Tandy's are designed to
  2974.       boot directly into DeskMate.
  2975. SeeAlso: INT 15/AX=7002h,INT E1"DeskMate"
  2976. --------O-E0---------------------------------
  2977. INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS
  2978.     CL = function number (see #3268,#3269)
  2979.     DS,DX = parameters
  2980. Return: as appropriate for function
  2981.     CX is often the error code (see #3270)
  2982. Notes:    several functions are covered in more detail in following entries
  2983.     most of these calls are also supported by Digital Research's DOS Plus
  2984.       v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch,
  2985.       90h-92h,94h-97h,9Bh-ABh, and AEh-FFh
  2986. SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus"
  2987.  
  2988. (Table 3268)
  2989. Values for CP/M-86,DR Multiuser DOS function number:
  2990.  00h    terminate calling process (see also INT 21/AH=00h)
  2991.  01h    read a character
  2992.  02h    write character to default console (see also INT 21/AH=02h)
  2993.  03h    read character from default AUX (see also INT 21/AH=03h)
  2994.  04h    write character to default AUX (see also INT 21/AH=04h)
  2995.  05h    write character to default list device (see also INT 21/AH=05h)
  2996.  06h    perform raw I/O on default console (see also INT 21/AH=06h)
  2997.  07h    return default AUX input status
  2998.  08h    return default AUX output status
  2999.  09h    write string to default console (see also INT 21/AH=09h)
  3000.  0Ah    read string from default console (see also INT 21/AH=0Ah)
  3001.  0Bh    return default console input status (see also INT 21/AH=0Bh)
  3002.  0Ch    get BDOS release ID
  3003.  0Dh    reset all disk drives (see also INT 21/AH=0Dh)
  3004.  0Eh    set default drive (see also INT 21/AH=0Eh"DOS 1+")
  3005.  0Fh    open file via FCB (see also INT 21/AH=0Fh,#0693)
  3006.  10h    close file via FCB (see also INT 21/AH=10h)
  3007.  11h    search for first matching file with FCB (see also INT 21/AH=11h)
  3008.  12h    search for next matching file with FCB (see also INT 21/AH=12h)
  3009.  13h    delete file via FCB (see also INT 21/AH=13h)
  3010.  14h    sequential read via FCB (see also INT 21/AH=14h)
  3011.  15h    sequential write via FCB (see also INT 21/AH=15h)
  3012.  16h    create file via FCB (see also INT 21/AH=16h)
  3013.  17h    rename file via FCB (see also INT 21/AH=17h)
  3014.  18h    get bit map of logged drives
  3015.  19h    get default drive (see also INT 21/AH=19h)
  3016.  1Ah    set DMA address offset
  3017.  1Bh    get default disk allocation vector (see also INT 21/AH=1Bh)
  3018.  1Ch    set default drive to read-only
  3019.  1Dh    get bit map of read-only drives
  3020.  1Eh    set file attributes via FCB (see also INT 21/AX=4301h)
  3021.  1Fh    get address of disk parameter block (see also INT 21/AH=1Fh)
  3022.  20h    get/set default user number
  3023.  21h    read random record via FCB (see also INT 21/AH=21h)
  3024.  22h    write random record via FCB (see also INT 21/AH=22h)
  3025.  23h    compute file size with FCB (see also INT 21/AH=23h)
  3026.  24h    get FCB random record number (see also INT 21/AH=24h)
  3027.  25h    reset specified drives
  3028.  26h    access specified drives (not in DR DOS Plus v2.1)
  3029.  27h    free specified drives
  3030.  28h    write random with FCB, zero fill (see also INT 21/AH=28h)
  3031.  2Ah    lock records in FCB file (see also INT 21/AH=5Ch)
  3032.  2Bh    unlock records in FCB file (see also INT 21/AH=5Ch)
  3033.  2Ch    set BDOS multisector count
  3034.  2Dh    set BDOS error mode
  3035.  2Eh    get free space on disk
  3036.  2Fh    load, initialize, and jump to process (see also INT 21/AH=4Bh)
  3037.  30h    flush write-deferred buffers
  3038.  31h    get/set system variable (DOS Plus v2.1)
  3039.  32h    call BIOS (XIOS) character routine (see #3269)
  3040.  33h    set DMA address segment
  3041.  34h    get DMA buffer address
  3042.  35h    CP/M-86 allocate maximum memory
  3043.  36h    allocate maximum memory at specified segment
  3044.  37h    CP/M-86 allocate memory segment (see also INT 21/AH=48h)
  3045.  38h    allocate memory at specified segment
  3046.  39h    CP/M-86 free specified memory segment (see also INT 21/AH=49h)
  3047.  3Ah    CP/M-86 free all memory (not in DOS Plus v2.1)
  3048.  3Bh    load .CMD file into memory
  3049.  3Ch    (DOS Plus v2.1) call RSX program
  3050.  40h    (DR-NET) log on a server
  3051.  41h    (DR-NET) log off a server
  3052.  42h    (DR-NET) send a message
  3053.  43h    (DR-NET) receive a message
  3054.  44h    (DR-NET) get network status
  3055.  45h    (DR-NET) get requestor configuration table
  3056.  46h    (DR-NET) set compatibility attributes
  3057.  47h    (DR-NET) get server configuration table
  3058.  48h    (DR-NET) set network error mode
  3059.  49h    (DR-NET) attach network
  3060.  4Ah    (DR-NET) detach network
  3061.  4Bh    (DR-NET) set default password
  3062.  4Ch    (DR-NET) get-set long timeout
  3063.  4Dh    (DR-NET) get parameter table
  3064.  50h    (DR-NET) get network information
  3065.  53h    get current time (see also INT 21/AH=2Ch)
  3066.  54h    set current time (see also INT 21/AH=2Dh)
  3067.  55h    get binary system date (see also INT 21/AH=2Ah)
  3068.  56h    set system date (see also INT 21/AH=2Bh"DATE")
  3069.  57h    allocate system flag
  3070.  58h    deallocate system flag
  3071.  59h    reserve memory in global area
  3072.  5Ah    lock physical drive
  3073.  5Bh    unlock physical drive
  3074.  5Ch    search path for executable file
  3075.  5Dh    load and execute command (see also INT 21/AH=4Bh)
  3076.  5Eh    get/set process exit code
  3077.  5Fh    set country information
  3078.  60h    get country information
  3079.  63h    truncate FCB file (see also INT 21/AH=28h)
  3080.  64h    create/update directory label
  3081.  65h    get directory label
  3082.  66h    get FCB date stamp and password mode
  3083.  67h    write extended FCB
  3084.  68h    set system date and time
  3085.  69h    get system date and time in binary
  3086.  6Ah    establish password for file access
  3087.  6Bh    get OS serial number
  3088.  6Ch    (DOS Plus v2.1) get/set program return code
  3089.  6Dh    get/set console mode
  3090.  6Eh    get/set string delimiter
  3091.  6Fh    write block to default console
  3092.  70h    write block to default list device
  3093.  71h    execute DOS-compatible function
  3094.  74h    set FCB time and date stamps
  3095.  80h    allocate memory
  3096.  82h    deallocate memory
  3097.  83h    poll I/O device
  3098.  84h    wait on system flag
  3099.  85h    set system flag
  3100.  86h    create message queue
  3101.  87h    open message queue
  3102.  88h    delete message queue
  3103.  89h    read from message queue
  3104.  8Ah    conditionally read from message queue
  3105.  8Bh    write to message queue
  3106.  8Ch    conditionally write to message queue
  3107.  8Dh    delay calling process
  3108.  8Eh    call process dispatcher (yield CPU)
  3109.  8Fh    terminate calling process (same as function 00h)
  3110.  90h    create a process
  3111.  91h    set calling process' priority
  3112.  92h    attach to default console
  3113.  93h    detach from default console
  3114.  95h    assign default console to process
  3115.  96h    interpret and execute commandline
  3116.  97h    resident procedure library
  3117.  98h    parse ASCII string into FCB (see also INT 21/AH=29h)
  3118.  99h    return default console
  3119.  9Ah    get address of system data (SYSDAT)
  3120.  9Bh    get system time and date
  3121.  9Ch    return calling process' descriptor
  3122.  9Dh    terminate process by name or PD address
  3123.  9Eh    attach to default list device
  3124.  9Fh    detach from default list device
  3125.  A0h    select default list device
  3126.  A1h    conditionally attach to default list device
  3127.  A2h    conditionally attach to default console
  3128.  A3h    get OS version number
  3129.  A4h    get default list device
  3130.  A5h    attach to default AUX
  3131.  A6h    detach from default AUX
  3132.  A7h    conditionally attach to default AUX
  3133.  A8h    set default AUX
  3134.  A9h    return default AUX
  3135.  ACh    read block from default AUX
  3136.  ADh    (DOS Plus v2.1) write block to default AUX
  3137.  B0h    configure default AUX
  3138.  B1h    get/set device control parameters
  3139.  B2h    send Break through default AUX
  3140.  B3h    allocate physical memory
  3141.  B4h    free physical memory
  3142.  B5h    map physical memory
  3143.  B6h    nondestructive message queue read
  3144.  B7h    timed wait on system flag
  3145.  B8h    get/set I/O port mapping
  3146.  B9h    set list device timeout
  3147.  BAh    set AUX timeout value
  3148.  BBh    execute XIOS service
  3149.  BDh    (DR Multiuser DOS) delay
  3150.  FFh    return 80386 to native mode
  3151.  
  3152. (Table 3269)
  3153. Values for DOS Plus v2.1 XIOS functions:
  3154.  00h    terminate program
  3155.  01h    ???
  3156.  02h    check for console input status
  3157.  03h    read character from console
  3158.  04h    write character to console
  3159.  05h    write character to list device
  3160.  06h    write character to auxiliary device
  3161.  07h    read character from auxiliary device
  3162.  0Fh    get list device status
  3163.  10h-14h reserved
  3164.  15h    device initialization
  3165.  16h    check console output status
  3166.  17h-7Fh reserved
  3167. ---BBC Acorn---
  3168.  80h    get XIOS version
  3169.  81h    get Tube semaphore
  3170.  82h    release Tube semaphore
  3171.  83h    select text/graphics
  3172.  84h    update B&W graphics rectangle
  3173.  85h    update color graphics rectangle
  3174.  86h    get/release/update mouse
  3175.  87h    get system error info
  3176.  88h    entry in CLOCK called by WatchDog RSP
  3177.  89h    BBC OSBYTE function
  3178.  8Ah    BBC OSWORD function
  3179.  
  3180. (Table 3270)
  3181. Values for DR Multiuser DOS Error Return Code:
  3182.  00h    no error
  3183.  01h    system call not implemented
  3184.  02h    illegal system call number
  3185.  03h    cannot find memory
  3186.  04h    illegal flag number
  3187.  05h    flag overrun
  3188.  06h    flag underrun
  3189.  07h    no unused Queue Descriptors
  3190.  08h    no free queue buffer
  3191.  09h    cannot find queue
  3192.  0Ah    queue in use
  3193.  0Ch    no free Process Descriptors
  3194.  0Dh    no queue access
  3195.  0Eh    empty queue
  3196.  0Fh    full queue
  3197.  10h    CLI queue missing
  3198.  11h    no 8087 in system
  3199.  12h    no unused Memory Descriptors
  3200.  13h    illegal console number
  3201.  14h    no Process Descriptor match
  3202.  15h    no console match
  3203.  16h    no CLI process
  3204.  17h    illegal disk number
  3205.  18h    illegal filename
  3206.  19h    illegal filetype
  3207.  1Ah    character not ready
  3208.  1Bh    illegal Memory Descriptor
  3209.  1Ch    bad return from BDOS load
  3210.  1Dh    bad return from BDOS read
  3211.  1Eh    bad return from BDOS open
  3212.  1Fh    null command
  3213.  20h    not owner of resource
  3214.  21h    no CSEG in load file
  3215.  22h    process Descriptor exists on Thread Root
  3216.  23h    could not terminate process
  3217.  24h    cannot attach to process
  3218.  25h    illegal list device number
  3219.  26h    illegal password
  3220.  28h    external termination occurred
  3221.  29h    fixup error upon load
  3222.  2Ah    flag set ignored
  3223.  2Bh    illegal auxilliary device number
  3224. --------O-E0----CL03-------------------------
  3225. INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM AUX DEVICE
  3226.     CL = 03h
  3227. Return: AL = ASCII character
  3228. Notes:    A_READ reads the next 8-bit character from the logical auxilliary
  3229.       input device (AUXn:); control is not returned to the calling
  3230.       process until a character has been read.
  3231.     if another process owns AUX, this call blocks until the device becomes
  3232.       available
  3233. SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh
  3234. --------O-E0----CL04-------------------------
  3235. INT E0 - DR Multiuser DOS - "A_WRITE" - WRITE CHARACTER TO AUX DEVICE
  3236.     CL = 04h
  3237.     DL = ASCII character
  3238. Return: nothing
  3239. Note:    if another process owns AUX, this call blocks until the device becomes
  3240.       available
  3241. SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh
  3242. --------O-E0----CL07-------------------------
  3243. INT E0 - DR Multiuser DOS - "A_STATIN" - GET INPUT STATUS OF AUX DEVICE
  3244.     CL = 07h
  3245. Return: AL = status
  3246.         00h not ready
  3247.         FFh character available
  3248. Desc:    determine whether the current AUX device has input available
  3249. SeeAlso: INT E0/CL=03h,INT E0/CL=08h
  3250. --------O-E0----CL08-------------------------
  3251. INT E0 - DR Multiuser DOS - "A_STATOUT" - GET OUTPUT STATUS OF AUX DEVICE
  3252.     CL = 08h
  3253. Return: AL = status
  3254.         00h not ready
  3255.         FFh ready for output
  3256. Desc:    determine whether the current AUX device is able to accept more output
  3257. SeeAlso: INT E0/CL=04h,INT E0/CL=07h
  3258. --------O-E0----CL59-------------------------
  3259. INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA
  3260.     CL = 59h
  3261.     DX = size in bytes
  3262. Return: AX = status
  3263.         FFFFh failed
  3264.         other successful
  3265.         ES:BX -> reserved memory
  3266. --------O-E0----CL86-------------------------
  3267. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
  3268.     CL = 86h
  3269.     DS:DX -> queue descriptor (see #3271)
  3270. Return: AX = status (0000h success, FFFFh failure)
  3271.     CX = error code (see #3270)
  3272. SeeAlso: INT E0/CL=87h
  3273.  
  3274. Format of DR Multiuser DOS queue descriptor:
  3275. Offset    Size    Description    (Table 3271)
  3276.  00h  2 WORDs    internal use, initialize to zeros
  3277.  04h    WORD    flags
  3278.  06h  8 BYTEs    queue name
  3279.  0Eh    WORD    length of message
  3280.  10h    WORD    number of messages
  3281.  12h  4 WORDs    internal use, initialize to zeros
  3282.  1Ah    WORD    offset in system area of buffer for messages
  3283. --------O-E0----CL87-------------------------
  3284. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE
  3285.     CL = 87h
  3286.     DS:DX -> queue parameter block (see #3272)
  3287. Return: AX = status (0000h success, FFFFh failure)
  3288.     CX = error code (see #3270)
  3289. SeeAlso: INT E0/CL=86h,INT E0/CL=89h
  3290.  
  3291. Format of DR Multiuser DOS queue parameter block:
  3292. Offset    Size    Description    (Table 3272)
  3293.  00h    WORD    internal use, initialize to zero
  3294.  02h    WORD    queue ID (set by INT E0/CL=87h)
  3295.  04h    WORD    internal use, initialize to zero
  3296.  06h    WORD    offset of queue message buffer
  3297.  08h  8 BYTEs    queue name
  3298. --------O-E0----CL89-------------------------
  3299. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE
  3300.     CL = 89h
  3301.     DS:DX -> queue parameter block (see #3272)
  3302. Return: AX = status (0000h success, FFFFh failure)
  3303.     CX = error code (see #3270)
  3304. SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh
  3305. --------O-E0----CL8A-------------------------
  3306. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE
  3307.     CL = 8Ah
  3308.     DS:DX -> queue parameter block (see #3272)
  3309. Return: AX = status (0000h success, FFFFh failure)
  3310.     CX = error code (see #3270)
  3311. SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch
  3312. --------O-E0----CL8B-------------------------
  3313. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE
  3314.     CL = 8Bh
  3315.     DS:DX -> queue parameter block (see #3272)
  3316. Return: AX = status (0000h success, FFFFh failure)
  3317.     CX = error code (see #3270)
  3318. SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch
  3319. --------O-E0----CL8C-------------------------
  3320. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE
  3321.     CL = 8Ch
  3322.     DS:DX -> queue parameter block (see #3272)
  3323. Return: AX = status (0000h success, FFFFh failure)
  3324.     CX = error code (see #3270)
  3325. SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh
  3326. --------O-E0----CL8E-------------------------
  3327. INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER
  3328.     CL = 8Eh
  3329.     DX = FFFFh (optional) to force dispatch
  3330. Return: nothing
  3331. Desc:    allow other processes of the same or higher priority to run if they
  3332.       are ready
  3333. Note:    if DX=FFFFh, a dispatch is forced even if no other process is ready
  3334. SeeAlso: INT E0/CL=91h
  3335. --------O-E0----CL91-------------------------
  3336. INT E0 - ConcCP/M,DR Multiuser DOS - "P_PRIORITY" - SET PROCESS PRIORITY
  3337.     CL = 91h
  3338.     DL = new priority (00h highest to FFh lowest)
  3339. Return: nothing
  3340. Note:    sets priority of calling process; transient processes are initialized
  3341.       to priority C8h
  3342. SeeAlso: INT E0/CL=8Eh
  3343. --------O-E0----CL93-------------------------
  3344. INT E0 - ConcCP/M,DR Multiuser DOS - "C_DETACH" - DETACH FROM DEFAULT CONSOLE
  3345.     CL = 93h
  3346. Return: AX = status
  3347.         0000h successfully detached
  3348.         FFFFh detach failed
  3349. SeeAlso: INT E0/CL=A6h
  3350. --------O-E0----CLA5-------------------------
  3351. INT E0 - DR Multiuser DOS - "A_ATTACH" - ATTACH AUX DEVICE
  3352.     CL = A5h
  3353. Return: nothing
  3354. Desc:    attaches the default auxiliary device to the calling process unless
  3355.       it is already attached to another process, in which case the call
  3356.       blocks until the device becomes available
  3357. Note:    this call should be used before attempting to read or write from
  3358.       the AUX device; however, the I/O calls internally call this function
  3359.       to ensure device ownership
  3360. SeeAlso: INT E0/CL=03h,INT E0/CL=04h,INT E0/CL=A6h,INT E0/CL=A7h,INT E0/CL=A8h
  3361. SeeAlso: INT E0/CL=ACh,INT E0/CL=ADh,INT E0/CL=B0h
  3362. --------O-E0----CLA6-------------------------
  3363. INT E0 - DR Multiuser DOS - "A_DETACH" - DETACH FROM AUX DEVICE
  3364.     CL = A6h
  3365. Return: AX = status
  3366.         0000h successfully detached
  3367.         FFFFh detach failed
  3368.     CX = error code
  3369. SeeAlso: INT E0/CL=93h,INT E0/CL=A5h,INT E0/CL=A7h
  3370. --------O-E0----CLA7-------------------------
  3371. INT E0 - DR Multiuser DOS - "A_CATTACH" - CONDITIONALLY ATTACH TO AUX DEVICE
  3372.     CL = A7h
  3373. Return: AX = status
  3374.         0000h attached
  3375.         FFFFh unable to attach
  3376. Desc:    attaches the default auxiliary device to the calling process if it is
  3377.       available
  3378. Note:    does not block if the device is already in use
  3379. SeeAlso: INT E0/CL=A5h,INT E0/CL=A6h,INT E0/CL=A8h,INT E0/CL=B0h
  3380. --------O-E0----CLA8-------------------------
  3381. INT E0 - DR Multiuser DOS - "A_SET" - SET DEFAULT AUX DEVICE NUMBER
  3382.     CL = A8h
  3383.     DL = auxiliary device number
  3384. Return: AX = status
  3385.         0000h successful
  3386.         FFFFh failed
  3387.     CX = error code
  3388. Desc:    specify which physical device will become AUX
  3389. SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h
  3390. --------O-E0----CLA9-------------------------
  3391. INT E0 - DR Multiuser DOS - "A_GET" - GET DEFAULT AUX DEVICE NUMBER
  3392.     CL = A9h
  3393. Return: AL = current default auxiliary device number
  3394. Desc:    determine which physical device is currently AUX
  3395. SeeAlso: INT E0/CL=A8h
  3396. --------O-E0----CLAC-------------------------
  3397. INT E0 - DR Multiuser DOS - "A_READBLK" - READ STRING FROM AUX DEVICE
  3398.     CL = ACh
  3399.     DS:DX -> character control block (CHCB) (see #3273)
  3400. Return: AX = number of characters read
  3401. Desc:    read characters from the default auxiliary (AUXn:) device into a buffer
  3402.       until the buffer is full or the device is no longer ready
  3403. Notes:    if the device is initially not ready, blocks until at least one
  3404.       character has been read
  3405.     if another process owns AUX, this call blocks until the device becomes
  3406.       available
  3407. SeeAlso: INT E0/CL=03h,INT E0/CL=A5h,INT E0/CL=ADh
  3408.  
  3409. Format of DR Multiuser DOS character control block (CHCB):
  3410. Offset    Size    Description    (Table 3273)
  3411.  00h    DWORD    pointer to character buffer
  3412.  04h    WORD    length of character buffer
  3413. --------O-E0----CLAD-------------------------
  3414. INT E0 - DR Multiuser DOS - "A_WRITEBLK" - WRITE STRING TO AUX DEVICE
  3415.     CL = ADh
  3416.     DS:DX -> character control block (see #3273)
  3417. Return: AX = number of characters written
  3418. Note:    does not return until at least one character has been written
  3419. SeeAlso: INT E0/CL=04h,INT E0/CL=A5h,INT E0/CL=ACh
  3420. --------O-E0----CLB0-------------------------
  3421. INT E0 - DR Multiuser DOS - "A_CONFIG" - GET/SET AUX DEVICE PARAMETERS
  3422.     CL = B0h
  3423.     DX:DX -> AUX device parameter block (see #3274)
  3424. Return: AX = status
  3425.         0000h successful
  3426.         parameter block updated
  3427.         FFFFh failed
  3428.         CX = error code
  3429. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  3430.  
  3431. Format of DR Multiuser DOS AUX device parameter block:
  3432. Offset    Size    Description    (Table 3274)
  3433.  00h    BYTE    function (00h get, 01h set)
  3434.  01h    BYTE    baud rate (see #3276) FFh = don't change/unknown
  3435.  02h    BYTE    parity (see #3275)
  3436.  03h    BYTE    stop bits (00h one, 01h 1.5, 02h two, FFh unknown/don't change)
  3437.  04h    BYTE    data bits (05h-08h or FFh unknown/don't change)
  3438.  05h    BYTE    handshake (00h none, 01h DTS/DSR, 02h RTS/CTS, 04h XON/XOFF,
  3439.         FFh unknown/don't change)
  3440.  06h    BYTE    XON character, FFh unknown/don't change
  3441.  07h    BYTE    XOFF character, FFh unknown/don't change
  3442.  
  3443. (Table 3275)
  3444. Values for DR Multiuser DOS AUX parity:
  3445.  00h    none
  3446.  01h    odd
  3447.  02h    none
  3448.  03h    even
  3449.  04h    stick parity bit
  3450.  FFh    don't change/unknown
  3451. SeeAlso: #3274,#3276
  3452.  
  3453. (Table 3276)
  3454. Values for DR Multiuser DOS AUX baud rate:
  3455.  00h    50 baud
  3456.  01h    62.5 baud
  3457.  02h    75 baud
  3458.  03h    110 baud
  3459.  04h    134.5 baud
  3460.  05h    150 baud
  3461.  06h    200 baud
  3462.  07h    300 baud
  3463.  08h    600 baud
  3464.  09h    1200 baud
  3465.  0Ah    1800 baud
  3466.  0Bh    2000 baud
  3467.  0Ch    2400 baud
  3468.  0Dh    3600 baud
  3469.  0Eh    4800 baud
  3470.  0Fh    7200 baud
  3471.  10h    9600 baud
  3472.  11h    19200 baud
  3473.  12h    38400 baud
  3474.  13h    56000 baud
  3475.  14h    76800 baud
  3476.  15h    115200 baud
  3477. SeeAlso: #3274,#3275
  3478. --------O-E0----CLB1-------------------------
  3479. INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
  3480.     CL = B1h
  3481.     DS:DX -> AUX device control block (see #3277)
  3482. Return: AX = status
  3483.         0000h successful
  3484.         control block updated
  3485.         FFFFh failed
  3486.         CX = error code
  3487. SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h
  3488.  
  3489. Format of DR Multiuser DOS AUX device control block:
  3490. Offset    Size    Description    (Table 3277)
  3491.  00h    BYTE    function (00h get, 01h set)
  3492.  01h    BYTE    DTR state (00h low, 01h high, FFh unknown/don't change)
  3493.  02h    BYTE    RTS state (00h low, 01h high, FFh unknown/don't change)
  3494.  03h    BYTE    DSR state (00h low, 01h high, FFh unknown/don't change)
  3495.  04h    BYTE    CTS state (00h low, 01h high, FFh unknown/don't change)
  3496.  05h    BYTE    DCD state (00h low, 01h high, FFh unknown/don't change)
  3497.  06h    BYTE    RI state (00h inactive, 01h active, FFh unknown/don't change)
  3498. --------O-E0----CLB2-------------------------
  3499. INT E0 - DR Multiuser DOS - "A_BREAK" - SEND BREAK TO AUX DEVICE
  3500.     CL = B2h
  3501.     DX = duration of break in system ticks (0001h-FFFFh)
  3502. Return: AX = status
  3503.         0000h successful
  3504.         break signal completed
  3505.         FFFFh failed
  3506.         CX = error code
  3507. Note:    if the AUX device is currently owned by another process, this call will
  3508.       block until the device becomes available
  3509. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  3510. --------O-E0----CLBD-------------------------
  3511. INT E0 - DR Multiuser DOS - "P_DELAY" - DELAY EXECUTION
  3512.     CL = BDh
  3513.     DX = delay in system ticks
  3514. Return: after the delay elapses
  3515. Notes:    the length of a system tick is installation-dependent (typically
  3516.       1/50 or 1/60 second); the length may be determined by reading the
  3517.       TICKSPERSEC value from the system data segment
  3518.     the actual delay before the process is rescheduled to run may be up to
  3519.       one tick longer than requested; the delay between rescheduling and
  3520.       actual execution cannot be predicted if higher-priority processes
  3521.       are awaiting a turn at the CPU
  3522. SeeAlso: INT 15/AH=86h,INT 1A/AX=FF01h,INT 2F/AX=1224h,INT 62/AX=0096h
  3523. --------g-E00000-----------------------------
  3524. INT E0 - PCROBOTS v1.41 - "SWAPTASK" - END CURRENT ROBOT'S TURN
  3525.     AX = 0000h
  3526. Return: nothing
  3527. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3528.       which specially-written .COM or .EXE programs form robots battling
  3529.       each other in a user-defined arena
  3530. --------g-E00001-----------------------------
  3531. INT E0 - PCROBOTS v1.41 - "MOVEMENT" - START MOVING
  3532.     AX = 0001h
  3533.     BX = speed (0-maximum for robot)
  3534.     CX = direction (0-359 degrees)
  3535. Return: nothing
  3536. Notes:    the speed will change to the specified value at the maximum
  3537.       acceleration the robot is capable of; if the robot is already moving
  3538.       faster than its maximum maneuverability speed, it will not be able
  3539.       to change direction
  3540.     this call also terminates the current robot's turn
  3541. SeeAlso: AX=0000h,AX=0002h,AX=0003h
  3542. --------g-E00002-----------------------------
  3543. INT E0 - PCROBOTS v1.41 - "SCAN" - SCAN FOR OTHER ROBOTS IN THE GIVEN DIRECTION
  3544.     AX = 0002h
  3545.     BX = direction (0-359 degrees)
  3546.     CX = resolution (0-45 degrees)
  3547. Return: AX = status
  3548.         FFFFh if nothing detected
  3549.         else robot ID (0-19)
  3550.         BX = range to detected robot
  3551. Notes:    the scan searches within CX degrees to either side of the specified
  3552.       direction
  3553.     the scanner will see right through walls, but shells will not pass
  3554.       through walls
  3555.     this call also terminates the current robot's turn
  3556. SeeAlso: AX=0000h,AX=0001h,AX=0003h
  3557. --------g-E00003-----------------------------
  3558. INT E0 - PCROBOTS v1.41 - "SHOOT" - FIRE A SHELL AT ANOTHER ROBOT
  3559.     AX = 0003h
  3560.     BX = direction (0-359 degrees)
  3561.     CX = range (0-700)
  3562. Return: AX = status (0000h not fired, else ID of shell fired)
  3563. Notes:    up to seven shells may be in flight for a robot at one time; the cannon
  3564.       takes 50 ticks to reload
  3565.     this call also terminates the current robot's turn
  3566. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=002Ch
  3567. --------g-E00010-----------------------------
  3568. INT E0 - PCROBOTS v1.41 - "GETXY" - GET ROBOT'S CURRENT POSITION
  3569.     AX = 0010h
  3570. Return: BX = current X coordinate (0-999)
  3571.     CX = current Y coordinate (0-999)
  3572. --------g-E00011-----------------------------
  3573. INT E0 - PCROBOTS v1.41 - "TRANSMIT" - SEND DATA TO ANOTHER ROBOT
  3574.     AX = 0011h
  3575.     BX = target robot ID
  3576.     CX = data to be sent
  3577. Return: AX = status (0000h data could not be sent, 0001h data sent)
  3578. Note:    this call costs one unit of battery power
  3579. --------g-E00012-----------------------------
  3580. INT E0 - PCROBOTS v1.41 - "RECEIVE" - GET DATA FROM OTHER ROBOTS
  3581.     AX = 0012h
  3582. Return: AX = status
  3583.         0000h no data available
  3584.         0001h data retrieved
  3585.         BX = sender's ID
  3586.         CX = data
  3587. Note:    each robot has a 20-word receive FIFO; if the FIFO is full, other
  3588.       robots will be unable to send more data until some is read
  3589. --------g-E00013-----------------------------
  3590. INT E0 - PCROBOTS v1.41 - "DAMAGE" - DETERMINE HOW MUCH DAMAGE SUSTAINED
  3591.     AX = 0013h
  3592. Return: BX = damage status
  3593. Note:    the initial value depends on configuration, but is typically 100; as
  3594.       the robot is damaged, it decreases
  3595. --------g-E00014-----------------------------
  3596. INT E0 - PCROBOTS v1.41 - "SPEED" - DETERMINE HOW FAST ROBOT IS MOVING
  3597.     AX = 0014h
  3598. Return: BX = current speed
  3599. --------g-E00015-----------------------------
  3600. INT E0 - PCROBOTS v1.41 - "BATTERY" - DETERMINE HOW MUCH BATTERY POWER LEFT
  3601.     AX = 0015h
  3602. Return: BX = current battery charge
  3603. Note:    the battery starts off with 1000 units of charge, and is constantly
  3604.       being charged by solar panels and constantly discharged by motion;
  3605.       the battery is charged at 4 units per turn and discharged at
  3606.       0.1*speed units per turn.
  3607. --------g-E00016-----------------------------
  3608. INT E0 - PCROBOTS v1.41 - "TICKS" - DETERMINE HOW LONG SINCE GAME STARTED
  3609.     AX = 0016h
  3610. Return: BX:CX = number of game ticks elapsed (not related to real time)
  3611. --------g-E00017-----------------------------
  3612. INT E0 - PCROBOTS v1.41 - "L_SIN" - GET SCALED SINE OF AN ANGLE
  3613.     AX = 0017h
  3614.     BX = angle (0-359 degrees)
  3615. Return: BX:CX = 100000*sine of angle
  3616. SeeAlso: AX=0018h,AX=0019h,AX=001Ah,AX=001Bh
  3617. --------g-E00018-----------------------------
  3618. INT E0 - PCROBOTS v1.41 - "L_COS" - GET SCALED COSINE OF AN ANGLE
  3619.     AX = 0018h
  3620.     BX = angle (0-359 degrees)
  3621. Return: BX:CX = 100000*cosine of angle
  3622. SeeAlso: AX=0017h,AX=0019h,AX=001Ah
  3623. --------g-E00019-----------------------------
  3624. INT E0 - PCROBOTS v1.41 - "L_TAN" - GET SCALED TANGENT OF AN ANGLE
  3625.     AX = 0019h
  3626.     BX = angle (0-359 degrees)
  3627. Return: BX:CX = 100000*tangent of angle
  3628. SeeAlso: AX=0017h,AX=0018h,AX=001Ah
  3629. --------g-E0001A-----------------------------
  3630. INT E0 - PCROBOTS v1.41 - "L_ATAN" - GET ANGLE GIVEN SCALED TANGENT
  3631.     AX = 001Ah
  3632.     BX:CX = 100000*tangent of an angle
  3633. Return: AX = angle (-90 to +90 degrees)
  3634. SeeAlso: AX=0017h,AX=0018h,AX=0019h
  3635. --------g-E0001B-----------------------------
  3636. INT E0 - PCROBOTS v1.41 - "SQRT" - DETERMINE SQUARE ROOT OF A NUMBER
  3637.     AX = 001Bh
  3638.     BX:CX = value
  3639. Return: BX:CX = square root
  3640. SeeAlso: AX=0017h
  3641. --------g-E0001C-----------------------------
  3642. INT E0 - PCROBOTS v1.41 - "SET_PATTERN" - SPECIFY ROBOT'S DISPLAY IMAGE
  3643.     AX = 001Ch
  3644.     BX:CX -> pattern array
  3645. Return: nothing
  3646. Note:    the pattern array consists of five bytes, the low five bits of each
  3647.       specifying the bit pattern for one line of the robot's screen display
  3648. --------g-E0001D-----------------------------
  3649. INT E0 - PCROBOTS v1.41 - "DEBUG_FLAG" - SET/CLEAR MARKERS NEXT TO ROBOT'S NAME
  3650.     AX = 001Dh
  3651.     BX = flag number (0 or 1)
  3652.     CX = new value (0 reset, 1 set)
  3653. Return: nothing
  3654. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3655.       which specially-written .COM or .EXE programs form robots battling
  3656.       each other in a user-defined arena
  3657. Note:    the two flag markers may be used for any purpose, typically for
  3658.       debugging to provide a visual display of progress
  3659. --------g-E0001E-----------------------------
  3660. INT E0 - PCROBOTS v1.41 - "BUY_ARMOUR" - BUY OR SELL ARMOR FOR ROBOT
  3661.     AX = 001Eh
  3662.     BX = number of armor units to buy (negative to sell)
  3663. Return: nothing
  3664. Note:    each armor unit is worth 50 battery units; the robot's armor rating
  3665.       will not go above its initial rating, so attempts to purchase more
  3666.       will waste battery units
  3667. SeeAlso: AX=001Fh
  3668. --------g-E0001F-----------------------------
  3669. INT E0 - PCROBOTS v1.41 - "BUY_SHELLS" - BUY ADDITIONAL CANNON SHELLS
  3670.     AX = 001Fh
  3671.     BX = number of shells to buy
  3672. Return: nothing
  3673. Note:    each shell costs ten battery units
  3674. SeeAlso: AX=001Eh,AX=0020h
  3675. --------g-E00020-----------------------------
  3676. INT E0 - PCROBOTS v1.41 - "SHELLS LEFT" - DETERMINE HOW MANY SHELLS ROBOT HAS
  3677.     AX = 0020h
  3678. Return: BX = number of shells remaining
  3679. SeeAlso: AX=001Fh
  3680. --------g-E00021-----------------------------
  3681. INT E0 - PCROBOTS v1.41 - "GET LOCAL MAP"
  3682.     AX = 0021h
  3683.     BX:CX -> 81-byte buffer for map (see #3278)
  3684. Return: buffer filled with 9x9 area of map centered on robot's position
  3685.  
  3686. (Table 3278)
  3687. Values for PCROBOTS map squares:
  3688.  2Eh '.' empty square
  3689.  44h 'D' damaging trap
  3690.  52h 'R' refueling point
  3691.  58h 'X' wall
  3692. --------g-E00022-----------------------------
  3693. INT E0 - PCROBOTS v1.41 - "INVISIBILITY" - CONTROL ROBOT'S INVISIBILITY DEVICE
  3694.     AX = 0022h
  3695.     BX = new state (0000h become visible, 0001h become invisible)
  3696. Return: nothing
  3697. Notes:    this function has no effect if the robot is not capable of invisibility
  3698.     the robot can only stay invisible for 100 turns, after which it will
  3699.       automatically become visible; it must also be remain visible for
  3700.       as many turns as it was invisible before it can turn invisible
  3701.       again
  3702. SeeAlso: AX=0024h,AX=0080h
  3703. --------g-E00023-----------------------------
  3704. INT E0 - PCROBOTS v1.41 - "GET_SHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
  3705.     AX = 0023h
  3706. Return: BX = status of last shell to land
  3707.         0000h missed completely
  3708.         0001h hit a wall
  3709.         0002h hit a robot within 50-square radius
  3710.         0003h hit a robot within 25-square radius
  3711.         0004h hit a robot within 5-square radius
  3712. --------g-E00024-----------------------------
  3713. INT E0 - PCROBOTS v1.41 - "IS_INVISIBLE" - DETERMINE WHETHER ROBOT IS INVISIBLE
  3714.     AX = 0024h
  3715. Return: BX = visibility (0000h visible, 0001h invisible)
  3716. SeeAlso: AX=0022h,AX=0080h
  3717. --------g-E00025-----------------------------
  3718. INT E0 - PCROBOTS v1.41 - "L_ATAN2" - GET ARCTANGENT
  3719.     AX = 0025h
  3720.     BX = Y
  3721.     CX = X
  3722. Return: AX = angle (arctangent of Y/X)
  3723. --------g-E00026-----------------------------
  3724. INT E0 - PCROBOTS v1.41 - "GET_ROBOT_ID" - DETERMINE CURRENT ROBOT'S IDENTIFIER
  3725.     AX = 0026h
  3726. Return: AX = robot ID
  3727. --------g-E00027-----------------------------
  3728. INT E0 - PCROBOTS v1.41 - "REGISTER_IFF" - REGISTER FRIEND/FOE IDENT STRING
  3729.     AX = 0027h
  3730.     BX:CX = ASCIZ IFF string
  3731. Return: nothing
  3732. Note:    the IFF string may only be set once
  3733. SeeAlso: AX=0028h,AX=0029h
  3734. --------g-E00028-----------------------------
  3735. INT E0 - PCROBOTS v1.41 - "CHECK_IFF" - QUERY FRIEND/FOE IDENTIFICATION STRING
  3736.     AX = 0028h
  3737.     BX = robot ID to test
  3738. Return: AX = status
  3739.         0000h IFF strings match
  3740.         0001h IFF strings differ or invalid robot ID
  3741. SeeAlso: AX=0027h
  3742. --------g-E00029-----------------------------
  3743. INT E0 - PCROBOTS v1.41 - "REGISTER_NAME" - SPECIFY ROBOT'S NAME
  3744.     AX = 0029h
  3745.     BX:CX -> ASCIZ name string
  3746. Return: nothing
  3747. Note:    the name may only be set once
  3748. SeeAlso: AX=0027h,AX=002Ah
  3749. --------g-E0002A-----------------------------
  3750. INT E0 - PCROBOTS v1.41 - "FIND_NAME" - SEARCH FOR ROBOT WITH GIVEN NAME
  3751.     AX = 002Ah
  3752.     BX:CX -> ASCIZ name string
  3753.     DX = first ID to check
  3754. Return: AX = robot ID or FFFFh if no robot with specified name
  3755. SeeAlso: AX=0028h,AX=0029h,AX=002Bh
  3756. --------g-E0002B-----------------------------
  3757. INT E0 - PCROBOTS v1.41 - "GET_TEAM_ID" - DETERMINE TEAM MEMBERSHIP OF ROBOT
  3758.     AX = 002Bh
  3759. Return: AX = team ID (0-2) or FFFFh if 'loner'
  3760. SeeAlso: AX=0029h
  3761. --------g-E0002C-----------------------------
  3762. INT E0 - PCROBOTS v1.41 - "GET_ASHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
  3763.     AX = 002Ch
  3764.     BX = shell ID
  3765. Return: AX = status
  3766.         0000h missed completely
  3767.         0001h hit a wall
  3768.         0002h hit a robot within a 50-square radius
  3769.         0003h hit a robot within a 25-square radius
  3770.         0004h hit a robot within a 5-square radius
  3771.         0005h shell not known (too old or not yet fired)
  3772.         0006h shell still in flight
  3773. SeeAlso: AX=0003h
  3774. --------g-E0002D-----------------------------
  3775. INT E0 - PCROBOTS v1.41 - "REGISTER_X" - SELECT AUTOMATIC X POSITION UPDATES
  3776.     AX = 002Dh
  3777.     BX:CX -> X word variable
  3778. Return: AX = status (0001h OK, 0000h problem with address)
  3779. Note:    after this call, PCROBOTS will automatically update the specified
  3780.       word whenever the robot moves
  3781. SeeAlso: AX=002Eh
  3782. --------g-E0002E-----------------------------
  3783. INT E0 - PCROBOTS v1.41 - "REGISTER_Y" - SELECT AUTOMATIC Y POSITION UPDATES
  3784.     AX = 002Eh
  3785.     BX:CX -> Y word variable
  3786. Return: AX = status (0001h OK, 0000h problem with address)
  3787. Note:    after this call, PCROBOTS will automatically update the specified
  3788.       word whenever the robot moves
  3789. SeeAlso: AX=002Dh
  3790. --------g-E00080-----------------------------
  3791. INT E0 - PCROBOTS v1.41 - "CONFIGURE" - CUSTOMIZE ROBOT
  3792.     AX = 0080h
  3793.     BX = basic configuration (see #3279)
  3794.     CX = advanced configuration (see #3280)
  3795. Return: AX = status (0001h OK, 0000h not first call in program)
  3796. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3797.       which specially-written .COM or .EXE programs form robots battling
  3798.       each other in a user-defined arena
  3799. Notes:    a maximum of ten points may be allocated to the robot; if you attempt
  3800.       to allocate more, some items will be given a value of zero.  If this
  3801.       function is not called, each attribute is set to the default value
  3802.       of 2.
  3803.     if the invisibility option is chosen, the robot will start with only
  3804.       900 cannon shells instead of the default 1000
  3805.  
  3806. Bitfields for PCROBOTS basic configuration:
  3807. Bit(s)    Description    (Table 3279)
  3808.  0-3    maximum speed (0-4 = 50,75,100,150,200)
  3809.  4-7    maneuverability (0-4 = 20%,35%,50%,75%,100%)
  3810.  8-11    cannon range (0-4 = 300,500,700,1000,1500)
  3811.  12-15    robot armor (0-4 = 50,75,100,150,200)
  3812.  
  3813. Bitfields for PCROBOTS advanced configuration:
  3814. Bit(s)    Description    (Table 3280)
  3815.  0-2    robot acceleration (0-4 = 5,7,10,15,20)
  3816.  3    capable of invisibility
  3817. --------r-E1---------------------------------
  3818. INT E1 - IBM ROM BASIC - used while in interpreter
  3819. Notes:    called by ROM BASIC
  3820.     BASIC.COM/BASICA.COM do not restore vector on termination
  3821. --------N-E1---------------------------------
  3822. INT E1 - PC Cluster Disk Server Information (NOT A VECTOR!)
  3823. Desc:    points at a data table
  3824. SeeAlso: INT E2
  3825. --------O-E1---------------------------------
  3826. INT E1 - MP/M-86, - ALTERNATE CP/M-86 FUNCTION CALLS
  3827.     CL = function number (see #3268,#3269)
  3828.     DS,DX = parameters
  3829. Return: as appropriate for function
  3830.     CX is often the error code (see #3270)
  3831. Desc:    used by some applications which alter CP/M functions while running a
  3832.       child program, to store the original INT E0 vector before
  3833.       intercepting INT E0
  3834. SeeAlso: #3268 at INT E0"CP/M"
  3835. ----------E1---------------------------------
  3836. INT E1 - DeskMate (Tandy) - TASK DATA SEGMENTS (NOT A VECTOR!)
  3837. Desc:    used to store data; the    low word of the vector is the data segment for
  3838.       the first task; the high word is the data segment of the second task
  3839.       (DeskMate supports 2-way task switching between small- or
  3840.       medium-model applications)
  3841. Program: DeskMate is a proprietary GUI from Tandy distributed with several
  3842.       models of the Tandy 1000's, 2500's, 3000's, and laptops.  Retail
  3843.       and runtime versions also exist.  Some Tandy's are designed to
  3844.       boot directly into DeskMate.
  3845. SeeAlso: INT E0"DeskMate"
  3846. --------r-E2---------------------------------
  3847. INT E2 - IBM ROM BASIC - used while in interpreter
  3848. Notes:    called by ROM BASIC
  3849.     BASIC.COM/BASICA.COM do not restore vector on termination
  3850. --------N-E2---------------------------------
  3851. INT E2 - PC Cluster Program - RELOCATED INT 1C
  3852. SeeAlso: INT 1C
  3853. --------r-E3---------------------------------
  3854. INT E3 - IBM ROM BASIC - used while in interpreter
  3855. Notes:    called by ROM BASIC
  3856.     BASIC.COM/BASICA.COM do not restore vector on termination
  3857. --------r-E40005-----------------------------
  3858. INT E4 - Logitech Modula v2.0 - MonitorEntry
  3859.     AX = 0005h
  3860.     BX = priority
  3861. Return: nothing
  3862. SeeAlso: AX=0006h
  3863. --------r-E40006-----------------------------
  3864. INT E4 - Logitech Modula v2.0 - MonitorExit
  3865.     AX = 0006h
  3866. Return: nothing
  3867. SeeAlso: AX=0005h
  3868. --------r-E4---------------------------------
  3869. INT E4 - IBM ROM BASIC - used while in interpreter
  3870. Notes:    called by ROM BASIC
  3871.     BASIC.COM/BASICA.COM do not restore vector on termination
  3872. --------r-E5---------------------------------
  3873. INT E5 - IBM ROM BASIC - used while in interpreter
  3874. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3875.     BASIC.COM/BASICA.COM do not restore vector on termination
  3876. --------r-E6---------------------------------
  3877. INT E6 - IBM ROM BASIC - used while in interpreter
  3878. Notes:    called by ROM BASIC
  3879.     BASIC.COM/BASICA.COM do not restore vector on termination
  3880. --------O-E600-------------------------------
  3881. INT E6 - Linux DOSEMU - INSTALLATION CHECK
  3882.     AH = 00h
  3883. Return: AX = AA55h if installed
  3884.         BH = major version number
  3885.         BL = minor version number
  3886.         CX = patchlevel
  3887. Notes:    check for the BIOS date string "02/25/93" at F000:FFF5 before
  3888.       calling this function.  In addition, the segment address of this
  3889.       vector should be F000h (for existing versions of DOSemu, the
  3890.       vector is F000h:0E60h)
  3891. SeeAlso: AH=FFh
  3892. --------O-E601-------------------------------
  3893. INT E6 - Linux DOSEMU - REGISTER DUMP
  3894.     AH = 01h
  3895. Return: nothing
  3896. SeeAlso: AH=00h
  3897. --------O-E602-------------------------------
  3898. INT E6 - Linux DOSEMU - SET I/O PORT PERMISSIONS
  3899.     AH = 02h
  3900.     BX = base I/O port address
  3901.     CX = number of consecutive I/O ports
  3902.     CF set to allow DOS to use ports
  3903.     CF clear if DOS should not be allowed to use ports
  3904. Return: nothing
  3905. SeeAlso: AH=00h
  3906. --------O-E605-------------------------------
  3907. INT E6 - Linux DOSEMU - STARTUP BANNER
  3908.     AH = 05h
  3909. Return: nothing
  3910. SeeAlso: AH=00h
  3911. --------O-E612-------------------------------
  3912. INT E6 - Linux DOSEMU - SET "HOGTHRESHOLD"
  3913.     AH = 12h
  3914.     BX = new "hogthreshold" (00h-99h)
  3915. Return: nothing
  3916. Desc:    specify how much CPU time DOSEMU may use
  3917. SeeAlso: AH=00h
  3918. --------O-E622-------------------------------
  3919. INT E6 - Linux DOSEMU - GET EMS STATUS
  3920.     AH = 22h
  3921. Return: ???
  3922. SeeAlso: AH=00h
  3923. --------O-E630-------------------------------
  3924. INT E6 - Linux DOSEMU - SET BOOTDISK FLAG
  3925.     AH = 30h
  3926.     BX = new flag state (0 = false, 1 = true)
  3927. Return: nothing
  3928. SeeAlso: AH=00h
  3929. --------O-E650-------------------------------
  3930. INT E6 - Linux DOSEMU - EXECUTE UNIX COMMAND
  3931.     AH = 50h
  3932.     ES:DX -> ASCIZ Unix command
  3933. SeeAlso: AH=00h,AH=51h
  3934. --------O-E651-------------------------------
  3935. INT E6 - Linux DOSEMU - EXECUTE DOS COMMAND FROM UNIX
  3936.     AH = 51h
  3937.     ES:DX -> ASCIZ DOS command
  3938. SeeAlso: AH=00h,AH=50h
  3939. --------O-E680-------------------------------
  3940. INT E6 - Linux DOSEMU - GET CURRENT UNIX DIRECTORY
  3941.     AH = 80h
  3942. Return: ES:DX -> current Unix directory
  3943.     AX = length of current directory name
  3944. SeeAlso: AH=00h,AH=81h
  3945. --------O-E681-------------------------------
  3946. INT E6 - Linux DOSEMU - CHANGE CURRENT UNIX DIRECTORY
  3947.     AH = 81h
  3948.     ES:DX -> ASCIZ directory name
  3949. Return: nothing
  3950. SeeAlso: AH=00h,AH=80h
  3951. --------O-E6FF-------------------------------
  3952. INT E6 - Linux DOSEMU - TERMINATE
  3953.     AH = FFh
  3954. SeeAlso: AH=00h
  3955. --------r-E7---------------------------------
  3956. INT E7 - IBM ROM BASIC - used while in interpreter
  3957. Notes:    called by ROM BASIC
  3958.     BASIC.COM/BASICA.COM do not restore vector on termination
  3959. --------r-E8---------------------------------
  3960. INT E8 - IBM ROM BASIC - used while in interpreter
  3961. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3962.     BASIC.COM/BASICA.COM do not restore vector on termination
  3963. --------r-E9---------------------------------
  3964. INT E9 - IBM ROM BASIC - used while in interpreter
  3965. Notes:    called by ROM BASIC
  3966.     BASIC.COM/BASICA.COM do not restore vector on termination
  3967. --------r-EA---------------------------------
  3968. INT EA - IBM ROM BASIC - used while in interpreter
  3969. Notes:    called by ROM BASIC
  3970.     BASIC.COM/BASICA.COM do not restore vector on termination
  3971. --------r-EB---------------------------------
  3972. INT EB - IBM ROM BASIC - used while in interpreter
  3973. Notes:    called by ROM BASIC
  3974.     BASIC.COM/BASICA.COM do not restore vector on termination
  3975. --------r-EC---------------------------------
  3976. INT EC - IBM ROM BASIC - used while in interpreter
  3977. Notes:    called by ROM BASIC
  3978.     BASIC.COM/BASICA.COM do not restore vector on termination
  3979. --------N-EC---------------------------------
  3980. INT EC - used by Alloy NTNX
  3981. --------r-EC---------------------------------
  3982. INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
  3983.     AX = function number (0000h to 0140h)
  3984.     STACK:    DWORD address to return to
  3985.         any arguments required by function
  3986. Return: STACK:    return address popped, but otherwise unchanged
  3987. Desc:    this is the interface from applications to the runtime system by Exact
  3988.       Automatisering B.V. of the Netherlands.  By using this interrupt,
  3989.       it can provide DLL-style capabilities under MS-DOS.
  3990. Note:    the interrupt handler removes the return address and flags placed on
  3991.       the stack by the INT EC, then jumps to the appropriate function
  3992. --------r-ED---------------------------------
  3993. INT ED - IBM ROM BASIC - used while in interpreter
  3994. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3995.     BASIC.COM/BASICA.COM do not restore vector on termination
  3996.     INT 80 through INT ED are modified but not restored by Direct Access
  3997.       v4.0, and may be left dangling by other programs written with the
  3998.       same version of compiled BASIC
  3999. SeeAlso: INT EC"BASIC",INT EE"BASIC"
  4000. --------r-EE---------------------------------
  4001. INT EE - IBM ROM BASIC - used while in interpreter
  4002. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  4003.     BASIC.COM/BASICA.COM do not restore vector on termination
  4004. SeeAlso: INT ED"BASIC",INT EE"BASIC"
  4005. --------r-EF---------------------------------
  4006. INT EF - BASIC - ORIGINAL INT 09 VECTOR
  4007. Note:    BASIC.COM/BASICA.COM do not restore vector on termination
  4008. SeeAlso: INT EE"BASIC",INT F0"BASIC"
  4009. --------O-EF----CX0473-----------------------
  4010. INT EF - GEM - INTERFACE
  4011.     CX = 0473h
  4012.     DS:DX -> GEM parameter block
  4013. --------r-F0---------------------------------
  4014. INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
  4015. Note:    BASICA.COM does not restore vector on termination
  4016. SeeAlso: INT EF"BASIC"
  4017. --------*-F1---------------------------------
  4018. INT F1 - reserved for user interrupt
  4019. --------s-F1---------------------------------
  4020. INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
  4021.     DS:BX -> '$'-terminated text string
  4022. Return: nothing
  4023. Program: SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
  4024. --------s-F1---------------------------------
  4025. INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
  4026. SeeAlso: INT F2"SPEECH"
  4027. --------U-F1---------------------------------
  4028. INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
  4029. Return: AX:BX -> data area
  4030. Program: AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
  4031.       and COM2 in software
  4032. Note:    The installation check consists of testing for the following signature
  4033.       immediately preceding the interrupt handler: "JWBtvv" where 't' is
  4034.       either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
  4035.       version number
  4036. Index:    installation check;AQUEDUCT|installation check;PIPELINE
  4037. --------N-F1---------------------------------
  4038. INT F1 - NetWare Remote Boot - INSTALLATION CHECK (NOT A VECTOR!)
  4039. Note:    if this vector contains the value 5774654Eh ("NetW"), the remote boot
  4040.       BIOS extension is active, and access to the floppy disk is redirected
  4041.       to an image file in the server's SYS:LOGIN directory
  4042. SeeAlso: INT F2"NetWare",INT F3"NetWare",INT F4"NetWare"
  4043. --------v-F1---------------------------------
  4044. INT F1 - VIRUS - "Violetta" - ???
  4045. Note:    used but not chained by virus
  4046. SeeAlso: INT E0"VIRUS",INT FF"VIRUS"
  4047. ----------F101-------------------------------
  4048. INT F1 - Common ISDN API (CAPI) v1.1 - "API-REGISTER" - INITIALIZE CAPI
  4049.     AH = 01h
  4050.     ES:BX -> buffer for CAPI's use (refer to note below)
  4051.     CX = minimum number of pending messages
  4052.     DX = maximum simultaneous Level 3 connections
  4053.     SI = maximum concurrent received B3 data blocks
  4054.     DI = maximum B3 data block size
  4055. Return: AX = CAPI-assigned application ID
  4056.         0000h on error
  4057.         BX = error number
  4058.             1001h registration error
  4059. Range:    INT 00 to INT FF, selectable by program parameter
  4060. Notes:    the caller is required to provide at least 512 bytes of stack space
  4061.     the CAPI interrupt handler begins with a header which is nearly
  4062.       identical to the IBM Interrupt Sharing Protocol header
  4063.       (see #1903 at INT 2D"AMIS"), except that the short jump instruction
  4064.       to a hardware reset handler at offset 09h is replaced by the
  4065.       signature bytes "IA"
  4066.     the maximum length of a message is fixed at 180 bytes; the standard
  4067.       document suggests using CX=10, DI=1, SI=7, and DI=130 for
  4068.       applications which use only a single connection and standard
  4069.       protocols
  4070.     the total size of the application-provided buffer must be at least
  4071.       180*CX + DX*SI*DI bytes
  4072. SeeAlso: AH=02h,INT F1/AL=01h
  4073. Index:    installation check;Common ISDN API
  4074. ----------F1--01-----------------------------
  4075. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_REGISTER" - INITIALIZE CAPI
  4076.     AL = 01h
  4077.     AH = CAPI version number * 10 (14h for v2.0)
  4078.     ES:BX -> buffer for CAPI's use (refer to note below)
  4079.     CX = number of bytes for message buffer
  4080.     DX = maximum simultaneous logical (Level 3) connections
  4081.     SI = maximum concurrent received B3 data blocks (min. 2)
  4082.     DI = maximum B3 data block size (up to 2048 bytes)
  4083. Return: AX = CAPI-assigned application ID
  4084.         0000h on error
  4085.         BX = error number
  4086.             1001h registration error
  4087. Range:    INT 00 to INT FF, selectable by program parameter
  4088. Notes:    the caller is required to provide at least 512 bytes of stack space
  4089.     the CAPI interrupt handler begins with a header (see #3281) which is
  4090.       nearly identical to the IBM Interrupt Sharing Protocol header
  4091.       (see #1903 at INT 2D"AMIS"), except that the short jump instruction
  4092.       to a hardware reset handler at offset 09h is zeroed out and the
  4093.       entire header is inexplicably shortened by one byte
  4094.     the standard document suggests using 1024 + (1024*DX) bytes for the
  4095.       message buffer for typical applications
  4096.     the total size of the application-provided buffer must be at least
  4097.       CX + DX*SI*DI bytes
  4098. SeeAlso: AH=01h,INT F1/AL=02h
  4099. Index:    installation check;Common ISDN API
  4100.  
  4101. Format of CAPI v2.0 interrupt handler entry point:
  4102. Offset    Size    Description    (Table 3281)
  4103.  00h  2 BYTEs    short jump to actual start of interrupt handler, immediately
  4104.           following this data block (EBh 0Fh)
  4105.  02h    DWORD    address of next handler in chain
  4106.  06h    WORD    signature 424Bh
  4107.  08h    BYTE    EOI flag (80h)
  4108.         80h primary hardware interrupt handler (will issue EOI)
  4109.  09h  2 BYTEs    reserved (0)
  4110.         (is short jump to hardware reset routine in ISP header)
  4111.  0Bh  4 BYTEs    signature "CAPI"
  4112.  0Fh  2 BYTEs    two-digit CAPI version number in ASCII ('20')
  4113. SeeAlso: #1903 at INT 2D
  4114. ----------F102-------------------------------
  4115. INT F1 - Common ISDN API (CAPI) v1.1 - "API-RELEASE" - UNREGISTER FROM CAPI
  4116.     AH = 02h
  4117.     DX = application ID (see AH=01h)
  4118. Return: AX = status (0000h,1002h) (see #3282)
  4119. Notes:    the caller is required to provide at least 512 bytes of stack space
  4120. SeeAlso: AH=01h,INT F1/AL=02h
  4121.  
  4122. (Table 3282)
  4123. Values for CAPI v1.1 error code:
  4124.  0000h    successful
  4125.  1001h    registration error
  4126.  1002h    invalid application ID
  4127.  1003h    message too small or incorrectly coded message number
  4128.  1004h    invalid command or subcommand
  4129.  1005h    message queue full
  4130.  1006h    message queue empty
  4131.  1007h    message(s) lost due to queue overflow
  4132.  1008h    error uninstalling
  4133. SeeAlso: #3283
  4134. ----------F1--02-----------------------------
  4135. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_RELEASE" - UNREGISTER FROM CAPI
  4136.     AL = 02h
  4137.     AH = CAPI version number * 10 (14h for v2.0)
  4138.     DX = application ID (see INT F1/AL=01h)
  4139. Return: AX = status (0000h,11xxh) (see #3283)
  4140. Notes:    the caller is required to provide at least 512 bytes of stack space
  4141. SeeAlso: AH=02h,INT F1/AL=01h,INT F1/AL=03h
  4142.  
  4143. (Table 3283)
  4144. Values for CAPI v2.0 error code:
  4145.  0000h    successful
  4146.  1001h    too many applications
  4147.  1002h    logical block size too small (must be at least 128 bytes)
  4148.  1003h    buffer > 64K
  4149.  1004h    message buffer too small (minimum 1024 bytes)
  4150.  1005h    too many logical connections requested
  4151.  1006h    reserved
  4152.  1007h    could not register because CAPI busy, try again
  4153.  1008h    OS resource unavailable (out of memory, etc.)
  4154.  1009h    COMMON-ISDN-API not installed
  4155.  100Ah    controller does not support external equipment
  4156.  100Bh    controller supports only external equipment
  4157.  1101h    invalid application ID
  4158.  1102h    illegal command or subcommand, or message too short
  4159.  1103h    message queue full
  4160.  1104h    queue empty
  4161.  1105h    queue overflowed (message lost)
  4162.  1106h    unknown notification parameter
  4163.  1107h    could not accept message because CAPI busy, try again
  4164.  1108h    OS resource unavailable (out of memory, etc.)
  4165.  1109h    COMMON-ISDN-API not installed
  4166.  110Ah    controller does not support external equipment
  4167.  110Bh    controller supports only external equipment
  4168.  2001h    message not supported in current state
  4169.  2002h    illegal controller/PLCI/NCCI
  4170.  2003h    out of PLCI
  4171.  2004h    out of NCCI
  4172.  2005h    out of LISTEN
  4173.  2006h    out of FAX resources (T.30 protocol)
  4174.  2007h    illegal message parameter coding
  4175.  3001h    unsupported B1 protocol
  4176.  3002h    unsupported B2 protocol
  4177.  3003h    unsupported B3 protocol
  4178.  3004h    unsupported B1 protocol parameter
  4179.  3005h    unsupported B2 protocol parameter
  4180.  3006h    unsupported B3 protocol parameter
  4181.  3007h    unsupported B protocol combination
  4182.  3008h    NCPI not supported
  4183.  3009h    unknown CIP value
  4184.  300Ah    unsupported flags (reserved bits set)
  4185.  300Bh    unsupported facility
  4186.  300Ch    data length not supported by current protocol
  4187.  300Dh    reset procedure not supported by current protocol
  4188. SeeAlso: #3282
  4189. ----------F103-------------------------------
  4190. INT F1 - Common ISDN API (CAPI) v1.1 - "API-PUT-MESSAGE"
  4191.     AH = 03h
  4192.     DX = application ID (see AH=01h)
  4193.     ES:BX -> message to be sent (see #3284)
  4194. Return: AX = status (0000h,1002h,1003h,1004h,1005h) (see #3282)
  4195. Notes:    the caller is required to provide at least 512 bytes of stack space
  4196.     the message buffer may be reused as soon as this call returns
  4197. SeeAlso: AH=01h,AH=04h,INT F1/AL=03h
  4198.  
  4199. Format of CAPI message:
  4200. Offset    Size    Description    (Table 3284)
  4201.  00h    WORD    total message length, including header
  4202.  02h    WORD    application ID (see AH=01h)
  4203.  04h    BYTE    command (see #3285,#3286)
  4204.  05h    BYTE    subcommand (see #3285,#3286)
  4205.  06h    WORD    message sequence number
  4206.         0000h-7FFFh messages from application to CAPI (and replies)
  4207.         8000h-FFFFh messages from CAPI to application (and replies)
  4208.  08h    var    message data (max 172 bytes for v1.1 only)
  4209.  
  4210. (Table 3285)
  4211. Values for CAPI v1.1 message command/subcommand:
  4212. Cmd/SubCmd    Name            Description
  4213.  01h/00h    RESET-B3-REQ    request resetting of a Level 3 connection
  4214.  01h/01h    RESET-B3-CONF    confirm Level 3 connection reset
  4215.  01h/02h    RESET-B3-IND    indication from CAPI that Level 3 conn. reset
  4216.  01h/03h    RESET-B3-RESP    confirm receipt of RESET-B3-IND
  4217.  02h/00h    CONNECT-REQ        establish B-channel connection
  4218.  02h/01h    CONNECT-CONF    confirm start of connection establishment
  4219.  02h/02h    CONNECT-IND        indication from CAPI of incoming connection
  4220.  02h/03h    CONNECT-RESP    accept incoming connection
  4221.  03h/02h    CONNECT-ACTIVE-IND    indication that B-channel connection complete
  4222.  03h/03h    CONNECT-ACTIVE-RESP    confirm connection-complete indication
  4223.  04h/00h    DISCONNECT-REQ    request shutdown of B-channel connection
  4224.  04h/01h    DISCONNECT-CONF    confirm shutdown of B-channel connection
  4225.  04h/02h    DISCONNECT-IND    indication that B-channel is shutting down
  4226.  04h/03h    DISCONNECT-RESP    confirm that application knows of shutdown
  4227.  05h/00h    LISTEN-REQ        enable indication of incoming connections
  4228.  05h/01h    LISTEN-CONF        confirm enabling of incoming conn. indication
  4229.  06h/00h    GET-PARAMS-REQ    request B-channel parameters
  4230.  06h/01h    GET-PARAMS-CONF    return B-channel parameters
  4231.  07h/00h    INFO-REQ        set B-channel info to be signalled to app
  4232.  07h/01h    INFO-CONF        confirm B-channel info signalling
  4233.  07h/02h    INFO-IND        signal B-channel events to application
  4234.  07h/03h    INFO-CONF        confirm receipt of INFO-IND
  4235.  08h/00h    DATA-REQ        send D-channel data
  4236.  08h/01h    DATA-CONF        confirm receipt of DATA-REQ
  4237.  08h/02h    DATA-IND        receive D-channel data
  4238.  08h/03h    DATA-RESP        confirm receipt fo DATA-IND
  4239.  09h/00h    CONNECT-INFO-REQ    request connection information
  4240.  09h/01h    CONNECT-INFO-CONF    return connection information
  4241.  40h/00h    SELECT-B2-PROTOCOL-REQ  select Level 2 protocol
  4242.  40h/01h    SELECT-B2-PROTOCOL-CONF confirm receipt of SELECT-B2-PROTOCOL-REQ
  4243.  80h/00h    SELECT-B3-PROTOCOL-REQ  select Level 3 protocol
  4244.  80h/01h    SELECT-B3-PROTOCOL-CONF confirm receipt of SELECT-B3-PROTOCOL-REQ
  4245.  81h/00h    LISTEN-B3-REQ    enable notification of incoming Level 3 calls
  4246.  81h/01h    LISTEN-B3-CONF    confirm receipt of LISTEN-B3-REQ
  4247.  82h/00h    CONNECT-B3-REQ    establish Level 3 connection
  4248.  82h/01h    CONNECT-B3-CONF    confirm start of connection establishment
  4249.  82h/02h    CONNECT-B3-IND    indication of incoming Level 3 connection
  4250.  82h/03h    CONNECT-B3-RESP    accept incoming connection
  4251.  83h/02h    CONNECT-B3-ACTIVE-IND  indication that Level 3 connection complete
  4252.  83h/03h    CONNECT-B3-ACTIVE-RESP confirm connection-complete indication
  4253.  84h/00h    DISCONNECT-B3-REQ    request shutdown of Level 3 connection
  4254.  84h/01h    DISCONNECT-B3-CONF    confirm shutdown of Level 3 connection
  4255.  84h/02h    DISCONNECT-B3-IND    indication that Level 3 is shutting down
  4256.  84h/03h    DISCONNECT-B3-RESP    confirm that application knows of shutdown
  4257.  85h/00h    GET-B3-PARAMS-REQ    request Level 3 parameters
  4258.  85h/01h    GET-B3-PARAMS-CONF    return Level 3 parameters
  4259.  86h/00h    DATA-B3-REQ        send data on Level 3
  4260.  86h/01h    DATA-B3-CONF    confirm sending of Level 3 data
  4261.  86h/02h    DATA-B3-IND        indication of incoming Level 3 data
  4262.  86h/03h    DATA-B3-RESP    confirm receipt of Level 3 data
  4263.  87h/02h    HANDSET-IND        indication of Handset events
  4264.  87h/03h    HANDSET-RESP    confirm receipt of Handset event
  4265.  FFh/00h    MANUFACTURER-REQ    vendor-specific request
  4266.  FFh/01h    MANUFACTURER-CONF    vendor-specific request confirmation
  4267.  FFh/02h    MANUFACTURER-IND    vendor-specific notification
  4268.  FFh/03h    MANUFACTURER-RESP    vendor-specific notification confirmation
  4269. SeeAlso: #3284,#3286
  4270. ----------F1--03-----------------------------
  4271. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_PUT_MESSAGE"
  4272.     AL = 03h
  4273.     AH = CAPI version number * 10 (14h for v2.0)
  4274.     DX = application ID (see INT F1/AL=01h)
  4275.     ES:BX -> message to be sent (see #3284)
  4276. Return: AX = status (0000h,11xxh) (see #3283)
  4277. Notes:    the caller is required to provide at least 512 bytes of stack space
  4278.     the message buffer may be reused as soon as this call returns
  4279. SeeAlso: AH=03h,INT F1/AL=01h,INT F1/AL=04h
  4280.  
  4281. (Table 3286)
  4282. Values for CAPI v2.0 message command/subcommand:
  4283. Cmd/SubCmd    Name            Description
  4284.  01h/80h    ALERT_REQ        indicate compatibility with incoming calls
  4285.  01h/81h    ALERT_CONF        confirm receipt of ALERT_REQ
  4286.  02h/80h    CONNECT_REQ        establish B-channel connection
  4287.  02h/81h    CONNECT_CONF    confirm start of connection establishment
  4288.  02h/82h    CONNECT_IND        indication from CAPI of incoming connection
  4289.  02h/83h    CONNECT_RESP    accept incoming connection
  4290.  03h/82h    CONNECT_ACTIVE_IND    indication that B-channel connection complete
  4291.  03h/83h    CONNECT_ACTIVE_RESP    confirm connection-complete indication
  4292.  04h/80h    DISCONNECT_REQ    request shutdown of B-channel connection
  4293.  04h/81h    DISCONNECT_CONF    confirm shutdown of B-channel connection
  4294.  04h/82h    DISCONNECT_IND    indication that B-channel is shutting down
  4295.  04h/83h    DISCONNECT_RESP    confirm that application knows of shutdown
  4296.  05h/80h    LISTEN_REQ        enable signalling on incoming events
  4297.  05h/81h    LISTEN_CONF        confirm enabling of incoming event signalling
  4298.  08h/80h    INFO_REQ        send protocol information for physical connect
  4299.  08h/81h    INFO_CONF        confirm INFO_REQ
  4300.  08h/82h    INFO_IND        indicate event for physical connection
  4301.  08h/83h    INFO_CONF        confirm receipt of INFO_IND
  4302.  41h/80h    SELECT_B_PROTOCOL_REQ   change protocol on already-active connect
  4303.  41h/81h    SELECT_B_PROTOCOL_CONF  confirm receipt of SELECT_B_PROTOCOL_REQ
  4304.  80h/80h    FACILITY_REQ    control optional facilities
  4305.  80h/81h    FACILITY_CONF    confirm acceptance of FACILITY_REQ
  4306.  80h/82h    FACILITY_IND    indicate facility-dependent event
  4307.  80h/83h    FACILITY_RESP    confirm receipt of FACILITY_IND
  4308.  82h/80h    CONNECT_B3_REQ    establish Level 3 connection
  4309.  82h/81h    CONNECT_B3_CONF    confirm start of connection establishment
  4310.  82h/82h    CONNECT_B3_IND    indication of incoming Level 3 connection
  4311.  82h/83h    CONNECT_B3_RESP    accept incoming connection
  4312.  83h/82h    CONNECT_B3_ACTIVE_IND  indication that Level 3 connection complete
  4313.  83h/83h    CONNECT_B3_ACTIVE_RESP confirm connection-complete indication
  4314.  84h/80h    DISCONNECT_B3_REQ    request shutdown of Level 3 connection
  4315.  84h/81h    DISCONNECT_B3_CONF    confirm shutdown of Level 3 connection
  4316.  84h/82h    DISCONNECT_B3_IND    indication that Level 3 is shutting down
  4317.  84h/83h    DISCONNECT_B3_RESP    confirm that application knows of shutdown
  4318.  85h/80h    GET_B3_PARAMS_REQ    request Level 3 parameters
  4319.  85h/81h    GET_B3_PARAMS_CONF    return Level 3 parameters
  4320.  86h/80h    DATA_B3_REQ        send data on Level 3
  4321.  86h/81h    DATA_B3_CONF    confirm sending of Level 3 data
  4322.  86h/82h    DATA_B3_IND        indication of incoming Level 3 data
  4323.  86h/83h    DATA_B3_RESP    confirm receipt of Level 3 data
  4324.  87h/80h    RESET_B3_REQ    request resetting of a logical connection
  4325.  87h/81h    RESET_B3_CONF    confirm logical connection reset
  4326.  87h/82h    RESET_B3_IND    indication from CAPI that logical conn. reset
  4327.  87h/83h    RESET_B3_RESP    confirm receipt of RESET_B3_IND
  4328.  88h/82h    CONNECT_B3_T90_ACTIVE_IND  indicate switch from T.70 to T.90
  4329.  88h/83h    CONNECT_B3_T90_ACTIVE_RESP confirm receipt of T90_ACTIVE_IND
  4330.  FFh/80h    MANUFACTURER_REQ    vendor-specific request
  4331.  FFh/81h    MANUFACTURER_CONF    vendor-specific request confirmation
  4332.  FFh/82h    MANUFACTURER_IND    vendor-specific notification
  4333.  FFh/83h    MANUFACTURER_RESP    vendor-specific notification confirmation
  4334. SeeAlso: #3284,#3285
  4335. ----------F104-------------------------------
  4336. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-MESSAGE"
  4337.     AH = 04h
  4338.     DX = application ID (see AH=01h)
  4339. Return: AX = status (0000h,1002h,1006h,1007h) (see #3282)
  4340.     ES:BX -> message if successful (see #3284)
  4341. Range:    INT 00 to INT FF, selectable by program parameter
  4342. Notes:    the caller is required to provide at least 512 bytes of stack space
  4343.     the returned message may be overwritten by the next call to this
  4344.       function
  4345. SeeAlso: AH=03h
  4346. ----------F1--04-----------------------------
  4347. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_MESSAGE"
  4348.     AL = 04h
  4349.     AH = CAPI version number * 10 (14h for v2.0)
  4350.     DX = application ID (see AH=01h)
  4351. Return: AX = status (0000h,11xxh) (see #3283)
  4352.     ES:BX -> message if successful (see #3284)
  4353. Range:    INT 00 to INT FF, selectable by program parameter
  4354. Notes:    the caller is required to provide at least 512 bytes of stack space
  4355.     the returned message may be overwritten by the next call to this
  4356.       function
  4357. SeeAlso: AH=04h,INT F1/AL=03h
  4358. ----------F105-------------------------------
  4359. INT F1 - Common ISDN API (CAPI) v1.1 - "API-SET-SIGNAL" - SIGNAL HANDLING
  4360.     AH = 05h
  4361.     DX = application ID (see AH=01h)
  4362.     ES:BX -> signal handler or 0000h:0000h to disable
  4363. Return: AX = status (0000h,1002h) (see #3282)
  4364. Notes:    the caller is required to provide at least 512 bytes of stack space
  4365.     the signal handler is called as though it were an interrupt, with
  4366.       interrupts disabled; the handler must preserve all registers and
  4367.       return with an IRET
  4368. SeeAlso: AH=01h
  4369. ----------F1--05-----------------------------
  4370. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_SET_SIGNAL" - SIGNAL HANDLING
  4371.     AL = 05h
  4372.     AH = CAPI version number * 10 (14h for v2.0)
  4373.     DX = application ID (see AH=01h)
  4374.     ES:BX -> signal handler or 0000h:0000h to disable
  4375.     SI:DI = parameter to pass to signal handler
  4376. Return: AX = status (0000h,11xxh) (see #3283)
  4377. Notes:    the caller is required to provide at least 512 bytes of stack space
  4378.     the signal handler is called as though it were an interrupt, with
  4379.       interrupts disabled and DX,SI,DI set as they were when this function
  4380.       was called; the handler must preserve all registers and return with
  4381.       an IRET
  4382.     the signal handler may call CAPI_PUT_MESSAGE, CAPI_GET_MESSAGE, and
  4383.       CAPI_SET_SIGNAL
  4384. SeeAlso: INT F1/AL=01h
  4385. ----------F106-------------------------------
  4386. INT F1 - Common ISDN API (CAPI) v1.1 - "API-DEINSTALL" - UNINSTALL
  4387.     AH = 06h
  4388.     BX = force flag
  4389.         0000h normal uninstall
  4390.         0001h forced uninstall
  4391. Return: AX = status (0000h,1008h) (see #3282)
  4392. Desc:    reset ISDN controller, close all ISDN Level 1 connections except for
  4393.       telephone connections
  4394. Notes:    the caller is required to provide at least 512 bytes of stack space
  4395. SeeAlso: INT F1/AL=01h,INT F1/AH=01h
  4396. ----------F1F0-------------------------------
  4397. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-MANUFACTURER"
  4398.     AH = F0h
  4399.     ES:BX -> 64-byte buffer for manufacturer identification information
  4400. Return: ES:BX buffer filled with ASCIZ idnetification string
  4401. Range:    INT 00 to INT FF, selectable by program parameter
  4402. Notes:    the caller is required to provide at least 512 bytes of stack space
  4403. SeeAlso: AH=01h,AH=F1h,AH=F2h,AH=FFh,INT F1/AL=F0h
  4404. ----------F1--F0-----------------------------
  4405. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_MANUFACTURER"
  4406.     AL = F0h
  4407.     AH = CAPI version number * 10 (14h for v2.0)
  4408.     ES:BX -> 64-byte buffer for manufacturer identification information
  4409. Return: ES:BX buffer filled with ASCIZ idnetification string
  4410. Range:    INT 00 to INT FF, selectable by program parameter
  4411. Notes:    the caller is required to provide at least 512 bytes of stack space
  4412. SeeAlso: AH=F0h,INT F1/AL=01h,INT F1/AL=F1h,INT F1/AL=F2h,INT F1/AL=FFh
  4413. ----------F1F1-------------------------------
  4414. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-VERSION"
  4415.     AH = F1h
  4416.     ES:BX -> 64-byte buffer for CAPI version number
  4417. Return: ES:BX buffer filled with ASCIZ version string
  4418. Notes:    the caller is required to provide at least 512 bytes of stack space
  4419. SeeAlso: AH=01h,AH=F0h,AH=F2h,AH=FFh
  4420. ----------F1--F1-----------------------------
  4421. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_VERSION"
  4422.     AL = F1h
  4423.     AH = CAPI version number * 10 (14h for v2.0)
  4424. Return: AH = CAPI major version number
  4425.     AL = CAPI minor version number
  4426.     DH = vendor-specific major version
  4427.     DL = vendor-specific minor version
  4428. Notes:    the caller is required to provide at least 512 bytes of stack space
  4429. SeeAlso: AH=F1h,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F2h,INT F1/AL=FFh
  4430. ----------F1F2-------------------------------
  4431. INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-SERIAL-NUMBER"
  4432.     AH = F2h
  4433.     ES:BX -> 64-byte buffer for CAPI serial number
  4434. Return: ES:BX buffer filled with ASCIZ serial number (seven digits), empty
  4435.           string if no serial number
  4436. Notes:    the caller is required to provide at least 512 bytes of stack space
  4437. SeeAlso: AH=01h,AH=F0h,AH=F1h,AH=FFh
  4438. ----------F1--F2-----------------------------
  4439. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_SERIAL_NUMBER"
  4440.     AL = F2h
  4441.     AH = CAPI version number * 10 (14h for v2.0)
  4442.     ES:BX -> 64-byte buffer for CAPI serial number
  4443. Return: ES:BX buffer filled with ASCIZ serial number (seven digits), empty
  4444.           string if no serial number
  4445. Notes:    the caller is required to provide at least 512 bytes of stack space
  4446. SeeAlso: AH=F2h,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F1h,INT F1/AL=F3h
  4447. ----------F1--F3-----------------------------
  4448. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_PROFILE" - GET CAPABILITIES
  4449.     AL = F3h
  4450.     AH = CAPI version number * 10 (14h for v2.0)
  4451.     ES:BX -> 64-byte buffer for CAPI capabilities (see #3287)
  4452.     CX = controller number (01h-06h) or 0000h to get number of controllers
  4453. Return: AX = status (0000h,11xxh) (see #3283)
  4454.     ES:BX buffer filled if successful
  4455. Notes:    the caller is required to provide at least 512 bytes of stack space
  4456. SeeAlso: INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F2h,INT F1/AH=FFh
  4457.  
  4458. Format of CAPI v2.0 capabilities:
  4459. Offset    Size    Description    (Table 3287)
  4460.  00h    WORD    number of installed controllers
  4461.  02h    WORD    number of supported B channels
  4462.  04h    DWORD    global options (see #3288)
  4463.  08h    DWORD    B1 protocol support flags (see #3289)
  4464.  0Ch    DWORD    B2 protocol support flags (see #3290)
  4465.  10h    DWORD    B3 protocol support flags (see #3291)
  4466.  14h 24 BYTEs    reserved for CAPI use
  4467.  2Ch 20 BYTEs    vendor-specific information
  4468.  
  4469. Bitfields for CAPI v2.0 global options:
  4470. Bit(s)    Description    (Table 3288)
  4471.  0    internal controller supported
  4472.  1    external controller supported
  4473.  2    handset supported (only if bit 1 also set)
  4474.  3    DTMF supported
  4475.  4-31    reserved (0)
  4476. SeeAlso: #3287
  4477.  
  4478. Bitfields for CAPI v2.0 B1 protocol support:
  4479. Bit(s)    Description    (Table 3289)
  4480.  0    64k bps with HDLC framing (required, always set)
  4481.  1    64k bps bit-transparent operation with network byte framing
  4482.  2    V.110 asynchronous with start/stop byte framing
  4483.  3    V.110 synchronous with HDLC framing
  4484.  4    T.30 modem for group 3 FAX
  4485.  5    64k bps inverted with HDLC framing
  4486.  6    56k bps bit-transparent operation with network byte framing
  4487.  7-31    reserved (0)
  4488. SeeAlso: #3287
  4489.  
  4490. Bitfields for CAPI v2.0 B2 protocol support:
  4491. Bit(s)    Description    (Table 3290)
  4492.  0    ISO 7776 (X.75 SLP) (required, always set)
  4493.  1    transparent
  4494.  2    SDLC
  4495.  3    Q.921 LAPD (D-channel X.25)
  4496.  4    T.30 for group 3 FAX
  4497.  5    point-to-point protocol (PPP)
  4498.  6    transparent (ignoring B1 framing errors)
  4499.  7-31    reserved (0)
  4500. SeeAlso: #3287
  4501.  
  4502. Bitfields for CAPI v2.0 B3 protocol support:
  4503. Bit(s)    Description    (Table 3291)
  4504.  0    transparent (required, always set)
  4505.  1    T.90NL with T.70NL compatibility
  4506.  2    ISO 8208 (X.25 DTE-DTE)
  4507.  3    X.25 DCE
  4508.  4    T.30 for group 3 FAX
  4509.  5-31    reserved (0)
  4510. SeeAlso: #3287
  4511. ----------F1FF-------------------------------
  4512. INT F1 - Common ISDN API (CAPI) v1.1 - "API-MANUFACTURER" - VENDOR-SPECIFIC
  4513.     AH = FFh
  4514.     other registers vendor-specific
  4515. Return: registers vendor-specific
  4516. Range:    INT 00 to INT FF, selectable by program parameter
  4517. Notes:    the caller is required to provide at least 512 bytes of stack space
  4518. SeeAlso: AH=01h,AH=F0h,AH=F1h,AH=F2h,INT F1/AH=FFh
  4519. ----------F1--FF-----------------------------
  4520. INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_MANUFACTURER" - VENDOR-SPECIFIC
  4521.     AL = FFh
  4522.     AH = CAPI version number * 10 (14h for v2.0)
  4523.     other registers vendor-specific
  4524. Return: registers vendor-specific
  4525. Range:    INT 00 to INT FF, selectable by program parameter
  4526. Notes:    the caller is required to provide at least 512 bytes of stack space
  4527. SeeAlso: AH=FFh,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F1h,INT F1/AL=F2h
  4528. --------*-F2---------------------------------
  4529. INT F2 - reserved for user interrupt
  4530. --------s-F2---------------------------------
  4531. INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
  4532. SeeAlso: INT F1"SPEECH"
  4533. --------N-F2---------------------------------
  4534. INT F2 - NetWare Remote Boot - ORIGINAL INT 13
  4535. SeeAlso: INT F1"NetWare",INT F3"NetWare",INT F4"NetWare"
  4536. ----------F2---------------------------------
  4537. INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API
  4538.     AH = function number (see #3292)
  4539.     ???
  4540. Return: ???
  4541. Program: ImageCapture is a product of International Computers
  4542. SeeAlso: INT F3"ICCTSR"
  4543.  
  4544. (Table 3292)
  4545. Values for ImageCapture function:
  4546.  01h    power up
  4547.  02h    power down
  4548.  03h    set controls
  4549.  04h    capture image
  4550.  05h    display image
  4551.  06h    read file
  4552.  07h    write file
  4553.  08h    write array
  4554.  09h    read pixel
  4555.  0Ah    write pixel
  4556.  0Bh    check if VGA present
  4557.  0Ch    set video mode
  4558.  0Dh    check for keystroke
  4559.  0Eh    delay
  4560. --------*-F3---------------------------------
  4561. INT F3 - reserved for user interrupt
  4562. SeeAlso: INT F2"user",INT F4"user"
  4563. --------s-F3---------------------------------
  4564. INT F3 - SoundBlaster - POINTER TO ECHO VALUE
  4565. Note:    this is not a vector, but a pointer to a DWORD containing the echo
  4566.       value selected with SET-ECHO.EXE
  4567. SeeAlso: INT 2F/AX=FBFBh/ES=0000h
  4568. ----------F3---------------------------------
  4569. INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR
  4570. Program: ImageCapture is a product of International Computers
  4571. SeeAlso: INT F2"ICCTSR"
  4572. --------N-F3---------------------------------
  4573. INT F3 - NetWare Remote Boot - BOOT ROM'S INT 13 HANDLER
  4574. SeeAlso: INT F1"NetWare",INT F2"NetWare",INT F4"NetWare"
  4575. --------*-F4---------------------------------
  4576. INT F4 - reserved for user interrupt
  4577. SeeAlso: INT F3"user",INT F5"user"
  4578. --------T-F4---------------------------------
  4579. INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
  4580. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F5"DoubleDOS",INT FE"DoubleDOS"
  4581. --------N-F4---------------------------------
  4582. INT F4 - NetWare Remote Boot - ???
  4583. SeeAlso: INT F1"NetWare",INT F2"NetWare",INT F3"NetWare"
  4584. --------*-F5---------------------------------
  4585. INT F5 - reserved for user interrupt
  4586. SeeAlso: INT F4"user",INT F6"user"
  4587. --------T-F5---------------------------------
  4588. INT F5 - DoubleDOS - ???
  4589. SeeAlso: INT F4"DoubleDOS",INT F6"DoubleDOS"
  4590. --------*-F6---------------------------------
  4591. INT F6 - reserved for user interrupt
  4592. SeeAlso: INT F5"user",INT F7"user"
  4593. --------T-F6---------------------------------
  4594. INT F6 - DoubleDOS - ???
  4595. SeeAlso: INT F5"DoubleDOS",INT F7"DoubleDOS"
  4596. --------*-F7---------------------------------
  4597. INT F7 - reserved for user interrupt
  4598. SeeAlso: INT F6"user"
  4599. --------T-F7---------------------------------
  4600. INT F7 - DoubleDOS - ???
  4601. SeeAlso: INT F6"DoubleDOS"
  4602. ----------F700-------------------------------
  4603. INT F7 - FSBBS 2.0 - CONFIGURATION RECORD
  4604.     AH = 00h
  4605.     AL = function
  4606.         00h get configuration record
  4607.         Return: DS:DX -> configuration record
  4608.         01h set configuration record
  4609.         Return: nothing
  4610.         02h get path for option
  4611.         DS:DX -> option name
  4612.         Return: DS:DX -> path
  4613.         03h determine whether configuration record set
  4614.         Return: AX = status
  4615.                 0000h set
  4616.                 0001h not yet set
  4617.         04h get link state
  4618.         Return: AX = state
  4619.                 0000h unlinked
  4620.                 0001h linked
  4621. Notes:    this information is preliminary and still subject to change
  4622.     all of the INT F7 calls for FSBBS are used for interprogram
  4623.       communication between the BBS kernel and the programs it spawns
  4624. SeeAlso: AH=01h
  4625. ----------F701-------------------------------
  4626. INT F7 - FSBBS 2.0 - USER RECORD
  4627.     AH = 01h
  4628.     AL = function
  4629.         00h get user record for user currently online
  4630.         Return: DS:DX -> user record
  4631.         01h set user record
  4632.         DS:DX -> user record
  4633.         Return: nothing
  4634. SeeAlso: AH=00h,AH=02h
  4635. ----------F702-------------------------------
  4636. INT F7 - FSBBS 2.0 - GET ACCOUNT NAME
  4637.     AH = 02h
  4638. Return: DS:DX -> 8-character blank-padded account name
  4639. SeeAlso: AH=01h
  4640. ----------F703-------------------------------
  4641. INT F7 - FSBBS 2.0 - TERMINAL NUMBER
  4642.     AH = 03h
  4643.     AL = function
  4644.         00h get terminal index number
  4645.         Return: DX = index number
  4646.         01h set terminal index number
  4647.         DX = terminal index
  4648.         Return: nothing
  4649. ----------F704-------------------------------
  4650. INT F7 - FSBBS 2.0 - PASSDATA BUFFER
  4651.     AH = 04h
  4652.     AL = function
  4653.         00h get PassData buffer contents
  4654.         DS:DX -> buffer for PassData contents
  4655.         Return: DS:DX buffer filled
  4656.         01h set PassData contents
  4657.         DS:DX -> buffer containing new PassData
  4658.         CH = length of data in buffer
  4659.         Return: nothing
  4660. ----------F705-------------------------------
  4661. INT F7 - FSBBS 2.0 - TIMER FUNCTIONS
  4662.     AH = 05h
  4663.     AL = function
  4664.         00h get time remaining
  4665.         Return: DX = number of minutes remaining
  4666.         01h get current time
  4667.         Return: DS:DX -> 8-character time string
  4668.         02h increment time
  4669.         DX = number of additional minutes
  4670.         03h decrement time
  4671.         DX = number of minutes
  4672. SeeAlso: AH=06h
  4673. ----------F706-------------------------------
  4674. INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY
  4675.     AH = 06h
  4676.     AL = function
  4677.         00h determine whether function is available
  4678.         DX = index of function
  4679.         01h set function availability
  4680.         DX = index of function
  4681.         ???
  4682. Return: nothing
  4683. SeeAlso: AH=05h,AH=07h
  4684. ----------F707-------------------------------
  4685. INT F7 - FSBBS 2.0 - DUMP FUNCTIONS
  4686.     AH = 07h
  4687.     AL = function
  4688.         00h get current dump mode
  4689.         Return: DL = mode
  4690.         01h set dump mode
  4691.         DL = mode
  4692. SeeAlso: AH=06h
  4693. --------*-F8---------------------------------
  4694. INT F8 - reserved for user interrupt
  4695. --------h-F8---------------------------------
  4696. INT F8 - Sanyo MBC-550/555 - IRQ0 - 100 HZ INTERRUPT
  4697. Note:    normally masked off at 8259 interrupt controller
  4698. SeeAlso: INT 08"IRQ0",INT F9"Sanyo",INT FA"Sanyo"
  4699. --------T-F8---------------------------------
  4700. INT F8 - DoubleDOS - ???
  4701. --------*-F9---------------------------------
  4702. INT F9 - reserved for user interrupt
  4703. --------T-F9---------------------------------
  4704. INT F9 - DoubleDOS - ???
  4705. --------h-F9---------------------------------
  4706. INT F9 - Sanyo MBC-550/555 - IRQ1 - ???
  4707. Note:    documented as "for system use only"; normally enabled at the 8259
  4708. SeeAlso: INT 09"IRQ1",INT F8"Sanyo",INT FA"Sanyo"
  4709. --------*-FA---------------------------------
  4710. INT FA - reserved for user interrupt
  4711. --------h-FA---------------------------------
  4712. INT FA - Sanyo MBC-550/555 - IRQ2 - SERIAL PORT USART INTERRUPT
  4713. Note:    this vector is not used on the Tandy 1000TL
  4714. SeeAlso: INT 0A"IRQ2",INT F9"Sanyo",INT FB"Sanyo"
  4715. --------T-FA---------------------------------
  4716. INT FA - DoubleDOS - TURN OFF TIMESHARING
  4717. SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
  4718. ----------FA---------------------------------
  4719. INT FA P - ASM Edit - INSTALLATION CHECK
  4720. Program: ASM Edit is a shareware programmer's editor
  4721. Note:    ASM Edit hooks this vector in protected mode to allow DPMI programs
  4722.       to detect whether they were run while shelled to DOS from ASM Edit
  4723.  
  4724. Format of ASM Edit signature block:
  4725. Offset    Size    Description    (Table 3293)
  4726.  00h    BYTE    CFh (IRET)
  4727.  01h  8 BYTEs    signature "ASM Edit" (no trailing NUL)
  4728. --------*-FB---------------------------------
  4729. INT FB - reserved for user interrupt
  4730. --------h-FB---------------------------------
  4731. INT FB - Sanyo MBC-550/555 - IRQ3 - KEYBOARD USART RECEIVE INTERRUPT
  4732. SeeAlso: INT 0B"IRQ3",INT FA"Sanyo",INT FC"Sanyo"
  4733. --------T-FB---------------------------------
  4734. INT FB - DoubleDOS - TURN ON TIMESHARING
  4735. SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
  4736. --------*-FC---------------------------------
  4737. INT FC - reserved for user interrupt
  4738. --------T-FC---------------------------------
  4739. INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
  4740. Return: ES = segment of display buffer
  4741. Desc:    determine the address of the virtual screen to which the program
  4742.       should write instead of the actual video memory, so that the
  4743.       multitasked programs do not interfere with each other's output
  4744. Note:    the display buffer may be moved if multitasking is enabled
  4745. SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
  4746. --------h-FC---------------------------------
  4747. INT FC - Sanyo MBC-550/555 - IRQ4 - PRINTER READY INTERRUPT
  4748. Note:    normally masked off at the 8259 interrupt controller
  4749. SeeAlso: INT 0C"IRQ4",INT FB"Sanyo",INT FD"Sanyo"
  4750. --------*-FD---------------------------------
  4751. INT FD - reserved for user interrupt
  4752. --------T-FD---------------------------------
  4753. INT FD - DoubleDOS - ???
  4754. --------h-FD---------------------------------
  4755. INT FD - Sanyo MBC-550/555 - IRQ5 - FLOPPY DISK CONTROLLER
  4756. SeeAlso: INT 0D"IRQ5",INT FC"Sanyo",INT FE"Sanyo"
  4757. --------S-FD---------------------------------
  4758. INT FD - TFPCX - INSTALLATION CHECK
  4759.     AH = function (also see separate entries below)
  4760. Program: TFPCX is an interface between modem and terminal program for packet-
  4761.       radio communications
  4762. Notes:    the installation check consists of testing for the string "N5NX" three
  4763.       bytes beyond the interrupt handler; INT FD is the default, but may
  4764.       be changed, so the full installation check consists of scanning
  4765.       for the signature
  4766.     TFPCX returns AX=FFFFh on any unsupported function call
  4767. SeeAlso: AH=01h,AH=03h,AH=FEh
  4768. --------S-FD01-------------------------------
  4769. INT FD - TFPCX - TEST FOR CHARACTER WAITING
  4770.     AH = 01h
  4771. Return: AX = status
  4772.         0000h no characters waiting
  4773.         0001h character available for input
  4774. Program: TFPCX is an interface between modem and terminal program for packet-
  4775.       radio communications
  4776. SeeAlso: AH=02h
  4777. --------S-FD02-------------------------------
  4778. INT FD - TFPCX - GET CHARACTER
  4779.     AH = 02h
  4780. Return: AL = character
  4781. Notes:    this call is only allowed if AH=01h indicated that a character is
  4782.       available
  4783.     all available characters should be read before sending any additional
  4784.       characters
  4785. SeeAlso: AH=01h,AH=03h
  4786. --------S-FD03-------------------------------
  4787. INT FD - TFPCX - OUTPUT CHARACTER
  4788.     AH = 03h
  4789.     AL = character to send
  4790. Return: nothing
  4791. SeeAlso: AH=02h
  4792. --------S-FDFE-------------------------------
  4793. INT FD - TFPCX - GET VERSION
  4794.     AH = FEh
  4795. Return: AH = major version
  4796.     AL = minor version
  4797. Program: TFPCX is an interface between modem and terminal program for packet-
  4798.       radio communications
  4799. SeeAlso: AH=01h,AH=03h
  4800. --------B-FE---------------------------------
  4801. INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
  4802. Note:    the ROM BIOS uses 0030h:0100h as the initial stack on startup, which
  4803.       is the last fourth of the interrupt vector table.  If the processor
  4804.       is returned to real mode via a hardware reset (the only possibility
  4805.       on an 80286, though there are a number of ways of generating one),
  4806.       then the BIOS startup code stacks three words on its scratch stack
  4807.       before determining that a return to real mode has been requested.
  4808.       As a result, INT FE and INT FF are corrupted.
  4809. SeeAlso: INT FF"XT286"
  4810. --------T-FE---------------------------------
  4811. INT FE - DoubleDOS - GIVE UP TIME
  4812.     AL = number of 55ms time slices to give away
  4813. Return: after other program (if active) has run
  4814. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
  4815. --------G-FE---------------------------------
  4816. INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER
  4817. SeeAlso: INT 3F
  4818. --------h-FE---------------------------------
  4819. INT FE - Sanyo MBC-550/555 - IRQ6 - 8087 COPROCESSOR INTERRUPT
  4820. Note:    normally masked off at the 8259 interrupt controller
  4821. SeeAlso: INT 0E"IRQ6",INT FD"Sanyo",INT FF"Sanyo"
  4822. --------B-FF---------------------------------
  4823. INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
  4824. Note:    (see INT FE"XT286")
  4825. SeeAlso: INT FE"XT286"
  4826. --------b-FF---------------------------------
  4827. INT FF - Z100 - WARM BOOT
  4828. SeeAlso: INT 40"Z100"
  4829. --------h-FF---------------------------------
  4830. INT FF - Sanyo MBC-550/555 - IRQ7 - USER INTERRUPT FOR EXTERNAL INTERRUPT
  4831. Note:    normally masked off at the 8259 interrupt controller
  4832. SeeAlso: INT 0F"IRQ7",INT FE"Sanyo"
  4833. --------Q-FF---------------------------------
  4834. INT FF U - QEMM-386.SYS v6.0+ - internal
  4835. Notes:    requires that a byte in the conventional-memory stub be set to the
  4836.       desired function number (00h through 0Ch)
  4837. SeeAlso: #3294
  4838.  
  4839. (Table 3294)
  4840. Values for QEMM internal functions:
  4841.  00h    reflect back to Virtual86-mode interrupt handler (default)
  4842.  01h    ???
  4843.  02h    access DR7???
  4844.  03h    QPI upcall (see INT 67/AH=3Fh)
  4845.  04h    ???
  4846.  05h    ???
  4847.  06h    INT 15/AH=87h
  4848.  07h    EMS services (see INT 67/AH=40h,INT 67/AH=5Dh)
  4849.  08h    ???
  4850.  09h    QEMM exception handler
  4851.  0Ah    XMS services (see INT 2F/AX=4310h"XMS")
  4852.  0Bh    Virtual DMA Services (see INT 4B/AX=8102h)
  4853.  0Ch    ???
  4854. --------v-FF---------------------------------
  4855. INT FF - VIRUS - "Violetta" - ???
  4856. Note:    used but not chained by virus
  4857. SeeAlso: INT E0"VIRUS",INT F1"VIRUS"
  4858. --------V-FF----BX0000-----------------------
  4859. INT FF - PC/FORTH - GRAPHICS API - VIDEO STATUS CHANGE
  4860.     BX = 0000h
  4861.     DS:SI -> FORTH program counter
  4862.     SS:BP -> FORTH parameter stack
  4863.     SS:SP -> FORTH return stack
  4864.     DS:DX -> FORTH video parameter area
  4865. Desc:    called to inform graphics driver of any status changes such as video
  4866.       mode changes, character color changes, graphics XOR mode turned on
  4867.       or off, etc.; also used as an installation check
  4868. Index:    installation check;PC/FORTH
  4869. --------V-FF---------------------------------
  4870. INT FF - PC/FORTH - GRAPHICS API
  4871.     BX = function number
  4872.         0001h function REDRAW
  4873.         0002h function !PEL
  4874.         0003h function @PEL
  4875.         0004h function LINE
  4876.         0005h function ARC
  4877.         0006h function @BLOCK
  4878.         0007h function !BLOCK
  4879.         0008h function FLOOD
  4880.     DS:SI -> FORTH program counter
  4881.     SS:BP -> FORTH parameter stack
  4882.     SS:SP -> FORTH return stack
  4883.     details of parameters not available
  4884. Return:    AX,BX,CX,DX,ES,DI may be destroyed
  4885. Note:    these functions all display an error message if the graphics routines
  4886.       are not resident
  4887. --------!---Admin----------------------------
  4888. Highest Table Number = 3521
  4889. --------!---FILELIST-------------------------
  4890. Please redistribute all of the files comprising the interrupt list (listed at
  4891. the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
  4892. quartet of archives named INTER53A through INTER53D (preferably the original
  4893. authenticated PKZIP archives), the utility programs in a fifth archive
  4894. called INTER53E.ZIP, the WinHelp-related programs in a sixth archive
  4895. named INTER53F.ZIP, and the non-WinHelp hypertext programs in a seventh archive
  4896. names INTER53G.ZIP.
  4897.  
  4898. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  4899. --------!---CONTACT_INFO---------------------
  4900. Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com)
  4901. UUCP: {uunet,harvard}!pobox.com!ralf
  4902. FIDO: Ralf Brown 1:129/26.1
  4903.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  4904.     unless you address it to me)
  4905. CIS:  >INTERNET:ralf@pobox.com
  4906.