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

  1. Interrupt List, part 12 of 12
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 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. --------s-80----BL00-------------------------
  12. INT 80 - SBSIM - "STARTSND" - START SOUND ON SPECIFIED DRIVER
  13.     BL = 00h
  14.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  15. Return: AX = initialization result (see #2150)
  16. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  17.       which provides access to multiple drivers for the SoundBlaster
  18.       board through a single interface
  19. Range:    INT 80h to INT BFh, selected automatically
  20. Note:    the SBSIM installation check consists of testing for the signature
  21.       "SBSIM" at offset 103h in the interrupt handler's segment.
  22. SeeAlso: INT 80/BL=01h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=03h"SBSIM"
  23. SeeAlso: INT 80/BX=0000h"SBSIM"
  24.  
  25. (Table 2150)
  26. Values for SBSIM error code:
  27.  01h    busy--currently in use
  28.  02h    bad driver specified
  29.  03h    invalid function
  30.  04h    voice process already active
  31.  05h    couldn't start CT-VOICE
  32.  06h    couldn't start CTVDSK
  33.  07h    invalid SBSIM handle
  34.  08h    buffer not initialized yet
  35.  09h    bad filename
  36.  0Ah    bad file handle
  37.  0Bh    driver not started yet
  38.  0Ch    XMS driver not installed
  39.  0Dh    no free SBSIM handles
  40.  0Eh    bad file type
  41.  0Fh    couldn't free XMS block
  42.  10h    invalid source selected
  43.  11h    get pan position failed
  44.  12h    set pan position failed
  45.  13h    set volume failed
  46.  14h    couldn't start fade/pan
  47.  15h    couldn't stop fade/pan
  48.  16h    couldn't pause fade/pan
  49.  17h    not a fade/pan operation
  50.  18h    bad mode for fade/pan
  51.  19h    couldn't start fade/pan
  52.  1Ah    source not fading/panning
  53.  1Bh    FM or MIDI already playing
  54.  1Ch    bad MIDI mapper format
  55. --------s-80----BL01-------------------------
  56. INT 80 - SBSIM - "PLAYSND" - PLAY MUSIC/VOICE ON SELECTED DRIVER
  57.     BL = 01h
  58.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  59. Return: AX = result (see #2150)
  60. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
  61. --------s-80----BL02-------------------------
  62. INT 80 - SBSIM - "STOPSND" - STOP MUSIC/VOICE ON SELECTED DRIVER
  63.     BL = 02h
  64.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  65. Return: nothing
  66. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
  67. --------s-80----BL03-------------------------
  68. INT 80 - SBSIM - "PAUSESND" - TEMPORARILY PAUSE PLAYBACK ON SELECTED DRIVER
  69.     BL = 03h
  70.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  71. Return: nothing
  72. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
  73. SeeAlso: INT 80/BL=05h
  74. --------s-80----BL04-------------------------
  75. INT 80 - SBSIM - "RESUMESND" - RESTART PLAYBACK ON SELECTED DRIVER
  76.     BL = 04h
  77.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  78. Return: nothing
  79. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=03h"SBSIM",INT 80/BL=05h"SBSIM"
  80. --------s-80----BL05-------------------------
  81. INT 80 - SBSIM - "GETSNDSTAT" - GET DRIVER'S STATUS
  82.     BL = 05h
  83.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  84. Return: AX = status
  85. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
  86. --------s-80----BX0000-----------------------
  87. INT 80 - SoundBlaster SBFM driver - GET VERSION
  88.     BX = 0000h
  89. Return: ???
  90. Note:    SBFM installs at a free interrupt in the range 80h through BFh
  91. SeeAlso: BX=0008h"SBFM",INT 2F/AX=FBFBh
  92. --------s-80----BX0000-----------------------
  93. INT 80 - SBSIM - "QUERYVERSION" - GET VERSION
  94.     BX = 0000h
  95. Return: AX = version (AH = major, AL = minor)
  96. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  97.       which provides access to multiple drivers for the SoundBlaster
  98.       board through a single interface
  99. Range:    INT 80h to INT BFh, selected automatically
  100. Note:    the SBSIM installation check consists of testing for the signature
  101.       "SBSIM" at offset 103h in the interrupt handler's segment.
  102. SeeAlso: BX=0001h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
  103. Index:    installation check;SBSIM|installation check;SoundBlaster
  104. --------s-80----BX0001-----------------------
  105. INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
  106.     BX = 0001h
  107.     DX:AX -> music status byte
  108. SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0003h"SBFM"
  109. --------s-80----BX0001-----------------------
  110. INT 80 - SBSIM - "QUERYDRIVERS" - CHECK DRIVERS INSTALLED
  111.     BX = 0001h
  112. Return: AX = bit flags for loaded drivers (see #2151)
  113. SeeAlso: BX=0000h"SBSIM",BX=0002h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
  114.  
  115. Bitfields for SBSIM loaded drivers:
  116. Bit(s)    Description    (Table 2151)
  117.  0    FM
  118.  1    double disk-buffered voice driver (DDBV)
  119.  2    memory voice driver
  120.  3    auxiliary driver (mixer)
  121.  4    MIDI
  122. --------s-80----BX0002-----------------------
  123. INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
  124.     BX = 0002h
  125.     CX = number of instruments
  126.     DX:AX -> instrument table
  127. SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0005h"SBFM"
  128. --------s-80----BX0002-----------------------
  129. INT 80 - SBSIM - GETADDRESS" - GET SELECTED DRIVER'S ENTRY POINT
  130.     BX = 0002h
  131.     AX = driver (00h = FM,01h = DDBV,02h = memvoice,03h = mixer,04h = MIDI)
  132. Return: CF clear if successful
  133.         DX:AX -> entry point
  134.     CF set on error
  135. SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
  136. --------s-80----BX0003-----------------------
  137. INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
  138.     BX = 0003h
  139.     AX = clock rate divisor (1193180 / desired frequency in Hertz)
  140.         FFFFh to restore to 18.2 Hz
  141. SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0004h"SBFM"
  142. --------s-80----BX0004-----------------------
  143. INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
  144.     BX = 0004h
  145.     AX = driver clock rate divisor (1193180 / frequency in Hertz)
  146. Note:    default frequency is 96 Hz
  147. SeeAlso: BX=0000h"SBFM",BX=0003h"SBFM"
  148. --------s-80----BX0005-----------------------
  149. INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
  150.     BX = 0005h
  151.     AX = semi-tone offset
  152. SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0006h"SBFM"
  153. --------s-80----BX0005-----------------------
  154. INT 80 - SBSIM - "GETBUFFERINFO" - GET DRIVER'S BUFFER ADDRESS
  155.     BX = 0005h
  156.     AX = driver (00h = FM, 01h = DDB Voice, 04h = MIDI)
  157. Return: CF clear if successful
  158.         DX:AX -> buffer
  159.         CX = buffer size in K
  160.     CF set on error
  161. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  162.       which provides access to multiple drivers for the SoundBlaster
  163.       board through a single interface
  164. Range:    INT 80h to INT BFh, selected automatically
  165. Note:    the SBSIM installation check consists of testing for the signature
  166.       "SBSIM" at offset 103h in the interrupt handler's segment.
  167. SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0002h"SBSIM",INT 80/BL=00h"SBSIM"
  168. --------s-80----BX0006-----------------------
  169. INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
  170.     BX = 0006h
  171.     DX:AX -> music block
  172. Return: AX = status
  173.         0000h successful
  174.         0001h music already active
  175. SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF04h
  176. --------s-80----BX0007-----------------------
  177. INT 80 - SoundBlaster SBFM driver - STOP MUSIC
  178.     BX = 0007h
  179. Return: AX = status
  180.         0000h successful
  181.         0001h music not active
  182. SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM",INT 1A/AX=FF05h
  183. --------s-80----BX0008-----------------------
  184. INT 80 - SoundBlaster SBFM driver - RESET DRIVER
  185.     BX = 0008h
  186. Return: AX = status
  187.         0000h successful
  188.         0001h music is active
  189. SeeAlso: BX=0000h"SBFM"
  190. --------s-80----BX0009-----------------------
  191. INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
  192.     BX = 0009h
  193. Return: AX = status
  194.         0000h successful
  195.         0001h no music active
  196. SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF01h
  197. --------s-80----BX000A-----------------------
  198. INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
  199.     BX = 000Ah
  200. Return: AX = status
  201.         0000h successful
  202.         0001h no music paused
  203. SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM"
  204. --------s-80----BX000B-----------------------
  205. INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
  206.     BX = 000Bh
  207.     DX:AX -> trap routine
  208. SeeAlso: BX=0000h"SBFM"
  209. --------s-80----BX0400-----------------------
  210. INT 80 - SBSIM - "GETVOLUME" - GET SOURCE'S VOLUME
  211.     BX = 0400h
  212.     AX = sound source (see #2152)
  213. Return: CF clear if successful
  214.         AX = volume
  215.     CF set on error
  216.         AX = error code (see INT 80/BL=00h)
  217. SeeAlso: BX=0401h"SBSIM"
  218.  
  219. (Table 2152)
  220. Values for SBSIM sound source:
  221.  00h    master volume
  222.  01h    voice
  223.  02h    FM
  224.  03h    CD
  225.  04h    line in
  226.  05h    microphone
  227. --------s-80----BX0401-----------------------
  228. INT 80 - SBSIM - "SETVOLUME" - SET SOURCE'S VOLUME
  229.     BX = 0401h
  230.     AX = sound source (see INT 80/BX=0400h)
  231.     DX = new volume
  232. Return: AX = result (0000h = success) (see also INT 80/BL=00h)
  233. SeeAlso: BX=0400h"SBSIM"
  234. --------N-8001-------------------------------
  235. INT 80 - QPC Software PKTINT.COM - INITIALIZE
  236.     AH = 01h
  237. Return: AX = 0000h
  238.     CX = FFFFh
  239.     DX = FFFFh
  240. Notes:    this interrupt is the WinQVTNet protected mode interface to Windows 3.0
  241.     all buffer pointers are reset back to 0
  242. --------N-8002-------------------------------
  243. INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES
  244.     AH = 02h
  245.     BX = extra bytes to allocate per packet
  246. Return: AX = segment address of 10K buffer (for receives???)
  247.     BX = segment address of 2K buffer (for sends???)
  248. SeeAlso: AH=05h
  249. --------N-8003-------------------------------
  250. INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
  251.     AH = 03h
  252. Return: CX:DX -> receive call address
  253. Note:    the returned address can be used in the packet driver calls since it
  254.       will be a valid address in all DOS boxes
  255. SeeAlso: AH=06h
  256. --------N-8004-------------------------------
  257. INT 80 - QPC Software PKTINT.COM - ENABLE???
  258.     AH = 04h
  259.     BX = ???
  260. Return: ???
  261. SeeAlso: AH=01h
  262. --------N-8005-------------------------------
  263. INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS
  264.     AH = 05h
  265. Return: AX = amount of buffer currently in use
  266.     BX = current offset in buffer
  267.     CX = number of times receive has been called
  268. SeeAlso: AH=02h
  269. --------N-8006-------------------------------
  270. INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
  271.     AH = 06h
  272. Return: BX = next packet offset
  273.     CX = number of bytes still buffered
  274.     DX = size of packet released back into buffer pool
  275. SeeAlso: AH=03h
  276. --------r-81---------------------------------
  277. INT 81 - reserved for BASIC
  278. Note:    this vector is modified but not restored by Direct Access v4.0, and
  279.       may be left dangling by other programs written with the same version
  280.       of compiled BASIC
  281. SeeAlso: INT 80"BASIC",INT 82"BASIC"
  282. --------N-81---------------------------------
  283. INT 81 - IBM TOKEN RING ADAPTER - ???
  284. SeeAlso: INT 82"TOKEN RING",INT 91"TOKEN RING"
  285. --------r-82---------------------------------
  286. INT 82 - reserved for BASIC
  287. SeeAlso: INT 81"BASIC",INT 83"BASIC"
  288. --------N-82---------------------------------
  289. INT 82 - IBM TOKEN RING ADAPTER - ???
  290.     AH = function
  291.         00h display message???
  292.         DS:BX -> string
  293.     ???
  294. Return: ???
  295. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  296. --------r-83---------------------------------
  297. INT 83 - reserved for BASIC
  298. SeeAlso: INT 82"BASIC",INT 84"BASIC"
  299. --------r-84---------------------------------
  300. INT 84 - reserved for BASIC
  301. SeeAlso: INT 83"BASIC",INT 85"BASIC"
  302. --------r-85---------------------------------
  303. INT 85 - reserved for BASIC
  304. Note:    INT 80 through INT ED are modified but not restored by Direct Access
  305.       v4.0, and may be left dangling by other programs written with the
  306.       same version of compiled BASIC
  307. SeeAlso: INT 84"BASIC",INT 86"BASIC"
  308. --------N-86---------------------------------
  309. INT 86 - NetBIOS - ORIGINAL INT 18
  310. Note:    some implementations of NetBIOS reportedly relocate INT 18 here
  311. SeeAlso: INT 18
  312. --------r-86---------------------------------
  313. INT 86 - IBM ROM BASIC - used while in interpreter
  314. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  315.     BASIC.COM/BASICA.COM do not restore vector on termination
  316. SeeAlso: INT 85"BASIC",INT 87"BASIC"
  317. --------r-86---------------------------------
  318. INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
  319. SeeAlso: INT 21/AH=4Ch,INT 87"APL"
  320. --------r-87---------------------------------
  321. INT 87 - IBM ROM BASIC - used while in interpreter
  322. Notes:    called by ROM BASIC
  323.     BASIC.COM/BASICA.COM do not restore vector on termination
  324. SeeAlso: INT 86"BASIC",INT 88"BASIC"
  325. --------r-87---------------------------------
  326. INT 87 - APL*PLUS/PC - ???
  327. SeeAlso: INT 86"APL",INT 88/AL=00h
  328. --------v-87---------------------------------
  329. INT 87 - VIRUS - "ZeroHunt" - VIRAL CODE (NOT A VECTOR!)
  330. Note:    the ZeroHunt virus copies its resident code down to 0000h:021Ch and
  331.       following
  332. SeeAlso: INT 8B"VIRUS"
  333. --------r-88---------------------------------
  334. INT 88 - IBM ROM BASIC - used while in interpreter
  335. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  336.     BASIC.COM/BASICA.COM do not restore vector on termination
  337. SeeAlso: INT 87"BASIC",INT 89"BASIC"
  338. --------r-88--00-----------------------------
  339. INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
  340.     AL = 00h
  341.     BX = STPTR of the variable to be assigned
  342.     ES:SI -> model of type, rank, and shape (see #2153)
  343. Return: ES:DI -> first data byte of object
  344.     DX:CX = number of elements in the object
  345. SeeAlso: INT C8"APL"
  346.  
  347. Format of APL*PLUS/PC shape model:
  348. Offset    Size    Description    (Table 2153)
  349.  00h    BYTE    type
  350.         01h character (2-byte dimension sizes)
  351.         02h integer (2-byte dimension sizes)
  352.         08h floating point (2-byte dimension sizes)
  353.         11h character (4-byte dimension sizes)
  354.         12h integer (4-byte dimension sizes)
  355.         18h floating point (4-byte dimension sizes)
  356.  01h    BYTE    rank
  357.  02h    (D)WORD first dimension of shape
  358.  N    (D)WORD second dimension of shape
  359.     ...
  360. --------r-88--01-----------------------------
  361. INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
  362.     AL = 01h
  363.     AH = rank
  364.     BX = STPTR of the variable to be assigned
  365.     CX = first dimension (if any)
  366.     DX = second dimension (if any)
  367. Return: ES:DI -> object
  368.     CX = number of elements in the object
  369. Note:    each dimension must be 32767 or smaller
  370. SeeAlso: AL=02h,AL=08h,INT C8"APL"
  371. --------r-88--02-----------------------------
  372. INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
  373.     AL = 02h
  374.     AH = rank
  375.     BX = STPTR of the variable to be assigned
  376.     CX = first dimension (if any)
  377.     DX = second dimension (if any)
  378. Return: ES:DI -> object
  379.     CX = number of elements in the object
  380. Note:    each dimension must be 32767 or smaller
  381. SeeAlso: AL=01h,AL=08h,INT C8"APL"
  382. --------r-88--08-----------------------------
  383. INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
  384.     AL = 08h
  385.     AH = rank
  386.     BX = STPTR of the variable to be assigned
  387.     CX = first dimension (if any)
  388.     DX = second dimension (if any)
  389. Return: ES:DI -> object
  390.     CX = number of elements in the object
  391. Note:    each dimension must be 32767 or smaller
  392. SeeAlso: AL=01h,AL=02h,INT C8"APL"
  393. --------r-88--F5-----------------------------
  394. INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
  395.     AL = F5h
  396.     BX = STPTR of object
  397. SeeAlso: INT C8"APL"
  398. --------r-88--F6-----------------------------
  399. INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
  400.     AL = F6h
  401.     BX = STPTR of object
  402. SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
  403. --------r-88--F7-----------------------------
  404. INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
  405.     AL = F7h
  406.     BX = STPTR of object
  407. SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
  408. --------r-88--F8-----------------------------
  409. INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
  410.     AL = F8h
  411.     BX = STPTR of object
  412. Return: BX = name's outswapping status
  413.         0000h eligible
  414.         0001h not eligible
  415. SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
  416. --------r-88--F9-----------------------------
  417. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  418.     AL = F9h
  419.     ES:SI -> name
  420.     CX = length of name
  421. Return: CF set if name ill-formed or already in use
  422.         BX = STPTR if already in symbol table
  423.     CF clear if name is available for use
  424.         BX = 0000h
  425. Note:    does not force the name into the workspace
  426. SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
  427. --------r-88--FC-----------------------------
  428. INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
  429.     AL = FCh
  430.     BX = amount of memory needed (paragraphs)
  431. Return: CF clear if memory available
  432.     CF set if a workspace compaction is required
  433. SeeAlso: AL=FDh,INT C8"APL"
  434. --------r-88--FD-----------------------------
  435. INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
  436.     AL = FDh
  437. Return: BX = number of paragraphs available in workspace
  438. SeeAlso: AL=FCh,INT C8"APL"
  439. --------r-88--FE-----------------------------
  440. INT 88 - APL*PLUS/PC - CREATE NAME
  441.     AL = FEh
  442.     ES:SI -> name
  443.     CX = length of name
  444. Return: BX = STPTR of name
  445.     DX = interpreter's data segment
  446. SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
  447. --------r-88--FF-----------------------------
  448. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  449.     AL = FFh
  450.     ES:SI -> name
  451.     CX = length of name
  452. Return: CF set if name ill-formed or already in use
  453.         BX = STPTR if already in symbol table
  454.     CF clear if name is available for use
  455.         BX = 0000h
  456. Note:    forces the name into the workspace and makes it immune from outswapping
  457. SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
  458. --------r-89---------------------------------
  459. INT 89 - IBM ROM BASIC - used while in interpreter
  460. Notes:    called by ROM BASIC
  461.     BASIC.COM/BASICA.COM do not restore vector on termination
  462. SeeAlso: INT 88"BASIC",INT 8A"BASIC"
  463. --------r-8A---------------------------------
  464. INT 8A - IBM ROM BASIC - used while in interpreter
  465. Notes:    called by ROM BASIC
  466.     BASIC.COM/BASICA.COM do not restore vector on termination
  467. SeeAlso: INT 89"BASIC",INT 8B"BASIC"
  468. --------r-8A---------------------------------
  469. INT 8A - APL*PLUS/PC - PRINT SCREEN
  470. Note:    same as INT 05
  471. SeeAlso: INT 05,INT 8C"APL",INT CA"APL"
  472. --------r-8B---------------------------------
  473. INT 8B - IBM ROM BASIC - used while in interpreter
  474. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  475.     BASIC.COM/BASICA.COM do not restore vector on termination
  476. SeeAlso: INT 8A"BASIC",INT 8C"BASIC"
  477. --------r-8B---------------------------------
  478. INT 8B - APL*PLUS/PC - BEEP
  479. Note:    same as printing a ^G via INT 21/AH=02h
  480. SeeAlso: INT 21/AH=02h,INT CB"APL"
  481. --------v-8B---------------------------------
  482. INT 8B - VIRUS - "ZeroHunt" - INSTALLATION CHECK (NOT A VECTOR!)
  483. Note:    if the ZeroHunt virus is resident, this vector will contain either
  484.       EE83h:019Bh (ZH-411) or EE83h:019Fh (ZH-415)
  485. SeeAlso: INT 70"VIRUS",INT 87"VIRUS",INT 9C"VIRUS"
  486. --------r-8C---------------------------------
  487. INT 8C - IBM ROM BASIC - used while in interpreter
  488. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  489.     BASIC.COM/BASICA.COM do not restore vector on termination
  490. --------r-8C---------------------------------
  491. INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
  492.     AX = flag
  493.         0000h do not save display attributes
  494.         0001h save attributes
  495. SeeAlso: INT CC"APL"
  496. --------r-8D---------------------------------
  497. INT 8D - IBM ROM BASIC - used while in interpreter
  498. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  499.     BASIC.COM/BASICA.COM do not restore vector on termination
  500. --------r-8E---------------------------------
  501. INT 8E - IBM ROM BASIC - used while in interpreter
  502. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  503.     BASIC.COM/BASICA.COM do not restore vector on termination
  504. --------r-8F---------------------------------
  505. INT 8F - IBM ROM BASIC - used while in interpreter
  506. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  507.     BASIC.COM/BASICA.COM do not restore vector on termination
  508. --------r-90---------------------------------
  509. INT 90 - IBM ROM BASIC - used while in interpreter
  510. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  511.     BASIC.COM/BASICA.COM do not restore vector on termination
  512. --------r-90---------------------------------
  513. INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
  514. --------r-91---------------------------------
  515. INT 91 - IBM ROM BASIC - used while in interpreter
  516. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  517.     BASIC.COM/BASICA.COM do not restore vector on termination
  518. --------N-91---------------------------------
  519. INT 91 - IBM TOKEN RING ADAPTER - ???
  520. SeeAlso: INT 81"TOKEN RING",INT 82"TOKEN RING",INT 93"TOKEN RING"
  521. --------r-92---------------------------------
  522. INT 92 - IBM ROM BASIC - used while in interpreter
  523. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  524.     BASIC.COM/BASICA.COM do not restore vector on termination
  525. --------N-92---------------------------------
  526. INT 92 - Sangoma X.25 INTERFACE PROGRAM
  527.     BX:DX -> control block
  528. SeeAlso: INT 68"Sangoma"
  529. --------e-92E1-------------------------------
  530. INT 92 - Da Vinci eMail Dispatcher INTERFACE
  531.     AH = E1h
  532.     AL = function
  533.     BX = stack count (number of words to push)
  534.     CX:DX -> stack data (in word-reversed order ready to push)
  535. Return: AX = status (see #2154)
  536. Note:    preserves BP, DS, SI, DI; other registers may be destroyed
  537.  
  538. (Table 2154)
  539. Values for Da Vinci eMail function status:
  540.  0001h    success
  541.  FF97h    "ERS_NOT_AVAILABLE"
  542.  FF99h    "ERS_TOO_MANY_NAMES"
  543.  FF9Ah    "ERS_BAD_NAME_PASSWORD"
  544.  FFE3h    "ERS_NAME_NOT_FOUND"
  545.  FFF8h    "ERS_USE_STRING" (call NetGetError to get error string)
  546.  FFFFh    "ERS_NO_SUCH_FILE"
  547. --------e-92E100-----------------------------
  548. INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
  549.     AX = E100h
  550.     BX = size of parameter block in words (000Ah)
  551.     CX:DX -> parameter block (see #2155)
  552. Return: AX = 0001h success
  553. Desc:    this function is used to initialize the dispatcher
  554. SeeAlso: AX=E101h,AX=E103h
  555.  
  556. Format of Da Vinci eMail "NetInitStart" parameter block:
  557. Offset    Size    Description    (Table 2155)
  558.  00h    WORD    segment of ???
  559.  02h    WORD    offset of ???
  560.  04h    WORD    high part of long ???
  561.  06h    WORD    low part of long ???
  562.  08h    WORD    high part of long ???
  563.  0Ah    WORD    low part of long ???
  564.  0Ch    WORD    high part of long ???
  565.  0Eh    WORD    low part of long ???
  566.  10h    WORD    high part of long ???
  567.  12h    WORD    low part of long ???
  568. --------e-92E101BX0000-----------------------
  569. INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
  570.     AX = E101h
  571.     BX = 0000h
  572.     CX:DX ignored
  573. Return: AX = 0001h success
  574. SeeAlso: AX=E100h,AX=E180h
  575. --------e-92E102BX0000-----------------------
  576. INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
  577.     AX = E102h
  578.     BX = 0000h
  579.     CX:DX ignored
  580. Return: AX = 0001h success
  581. Desc:    this function is used to determine if the dispatcher is loaded
  582. SeeAlso: AX=E10Bh,AX=E180h
  583. --------e-92E103BX0000-----------------------
  584. INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
  585.     AX = E103h
  586.     BX = 0000h
  587.     CX:DX ignored
  588. Return: AX = status (see #2154)
  589. SeeAlso: AX=E100h
  590. --------e-92E104-----------------------------
  591. INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
  592.     AX = E104h
  593.     BX = size of parameter block in words (0006h)
  594.     CX:DX -> parameter block (see #2156)
  595. Return: AX = status (see #2154)
  596. Desc:    this function is used to verify node address for usernames
  597. SeeAlso: AX=E180h
  598.  
  599. Format of Da Vinci eMail "NetWhereIs" parameter block:
  600. Offset    Size    Description    (Table 2156)
  601.  00h    WORD    segment of node address buffer
  602.  02h    WORD    offset of node address buffer
  603.  04h    WORD    segment of uppercase username
  604.  06h    WORD    offset of uppercase username
  605.  08h    WORD    segment of "DVSEMAIL"
  606.  0Ah    WORD    offset of "DVSEMAIL"
  607. --------e-92E105-----------------------------
  608. INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
  609.     AX = E105h
  610.     BX = size of parameter block in words (0007h)
  611.     CX:DX -> parameter block (see #2157)
  612. Return: AX = 0000h Error
  613.     AX = handle
  614. Desc:    this function is used to open a submission channel
  615. SeeAlso: AX=E10Ah,AX=E106h,AX=E108h
  616.  
  617. Format of Da Vinci eMail "NetOpen" parameter block:
  618. Offset    Size    Description    (Table 2157)
  619.  00h    WORD    operation (1 = read, 2 = write)
  620.  02h    WORD    segment of uppercase To: username
  621.  04h    WORD    offset of uppercase To: username
  622.  06h    WORD    segment of "DVSEMAIL"
  623.  08h    WORD    offset of "DVSEMAIL"
  624.  0Ah    WORD    segment of node address
  625.  0Ch    WORD    offset of node address
  626. --------e-92E106BX0004-----------------------
  627. INT 92 - Da Vinci eMail Dispatcher - "NetRead"
  628.     AX = E106h
  629.     BX = 0004h
  630.     CX:DX -> parameter block
  631. Return: AX = 0001h
  632. SeeAlso: AX=E108h
  633. --------e-92E107BX0002-----------------------
  634. INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
  635.     AX = E107h
  636.     BX = 0002h
  637.     CX:DX -> parameter block
  638. Return: AX = 0001h
  639. SeeAlso: AX=E109h,AX=E180h
  640. --------e-92E108-----------------------------
  641. INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
  642.     AX = E108h
  643.     BX = size of parameter block in words (0004h)
  644.     CX:DX -> parameter block (see #2158)
  645. Return: AX = amount written
  646. Desc:    This function is used to write transactions to the dispatcher.
  647.       The command block is written first and then another call is used
  648.       to write the associated data.
  649. SeeAlso: AX=E106h
  650.  
  651. Format of Da Vinci eMail "NetWrite" parameter block:
  652. Offset    Size    Description    (Table 2158)
  653.  00h    WORD    buffer count (see #2160)
  654.  02h    WORD    segment of command buffer (see #2159)
  655.  04h    WORD    offset of command buffer
  656.  06h    WORD    handle from NetOpen
  657.  
  658. Format of Da Vinci eMail command buffer:
  659. Offset    Size    Description    (Table 2159)
  660.  00h    BYTE    command
  661.         21h '!' Protocol commands for remote control
  662.         41h 'A' Authorization protocol element
  663.         42h 'B' Return(back) routing information
  664.             Associated data is the From: username
  665.         43h 'C' Carbon Copy list
  666.             Associated data is a comma delimitted list of usernames
  667.         44h 'D' Distribution list
  668.             Associated data is a comma delimitted list of usernames
  669.         45h 'E' Mail end marker
  670.             No associated data
  671.         48h 'H' Mail message header
  672.             Associated data is a message header buffer
  673.         4Dh 'M' Mail message
  674.             Associated data is the body of the message
  675.         4Fh 'O' Object
  676.         50h 'P' Paperclip attachment
  677.         52h 'R' Routing information
  678.             Associated data is the To: username
  679.         53h 'S' Subject
  680.             Associated data is the subject of the message
  681.         54h 'T' Trail of Reply/Forwards
  682.  01h    BYTE    subcommand
  683.  02h    DWORD    length of associated data
  684.  
  685. Format of Da Vinci eMail message header buffer:
  686. Offset    Size    Description    (Table 2160)
  687.  00h 30 BYTEs    subject line
  688.  1Eh 24 BYTEs    To
  689.  36h 24 BYTEs    From
  690.  4Eh    DWORD    Time
  691.         BYTE    00h
  692.         BYTE    hour
  693.         BYTE    minute
  694.         BYTE    second
  695.  52h    DWORD    Date
  696.         BYTE    00h
  697.         BYTE    year
  698.         BYTE    month
  699.         BYTE    day
  700.  56h    DWORD    serial number (00000000h)
  701.  5Ah    WORD    mail types (see #2161)
  702.  5Ch    WORD    special types (0)
  703.  
  704. Bitfields for Da Vinci eMail mail types:
  705. Bit(s)    Description    (Table 2161)
  706.  7    blind carbon copy
  707.  6    carbon copy
  708.  5    priority
  709.  4    confidential
  710.  3    certified
  711.  2    bulk
  712.  1-0    class (first, second, third, bulk)
  713. --------e-92E109-----------------------------
  714. INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
  715.     AX = E109h
  716.     BX = size of parameter block in words (0001h)
  717.     CX:DX -> parameter block (see #2162)
  718. Return: AX = FF97h (ERS_NOT_AVAILABLE)
  719. SeeAlso: AX=E107h,AX=E180h
  720.  
  721. Format of Da Vinci eMail "NetErrorFix" parameter block:
  722. Offset    Size    Description    (Table 2162)
  723.  00h    WORD    ???
  724. --------e-92E10A-----------------------------
  725. INT 92 - Da Vinci eMail Dispatcher - "NetClose"
  726.     AX = E10Ah
  727.     BX = size of parameter block in words (0001h)
  728.     CX:DX -> parameter block (see #2163)
  729. Return: AX = 0001h
  730. Desc:    this function is used to close a dispatcher handle
  731. SeeAlso: AX=E105h
  732.  
  733. Format of Da Vinci eMail "NetClose" parameter block:
  734. Offset    Size    Description    (Table 2163)
  735.  00h    WORD    handle from NetOpen
  736. --------e-92E10B-----------------------------
  737. INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
  738.     AX = E10Bh
  739.     BX = size of parameter block in words (0004h)
  740.     CX:DX -> parameter block (see #2164)
  741. Return: AX = 0001h
  742. SeeAlso: AX=E102h,AX=E10Ch
  743.  
  744. Format of Da Vinci eMail "NetCheckQueue" parameter block:
  745. Offset    Size    Description    (Table 2164)
  746.  00h    WORD    segment of 24-byte username buffer
  747.  02h    WORD    offset of 24-byte username buffer
  748.  04h    WORD    segment of 24-byte protocol buffer
  749.  06h    WORD    offset of 24-byte protocol buffer
  750. --------e-92E10C-----------------------------
  751. INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
  752.     AX = E10Ch
  753.     BX = size of parameter block in words (0002h)
  754.     CX:DX -> parameter block (see #2165)
  755. Return: AX = 0001h
  756. SeeAlso: AX=E10Bh
  757.  
  758. Format of Da Vinci eMail "NetReadQueue" parameter block:
  759. Offset    Size    Description    (Table 2165)
  760.  00h    WORD    Segment of 128 byte node address buffer
  761.  02h    WORD    Offset of 128 byte node address buffer
  762. --------e-92E10D-----------------------------
  763. INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
  764.     AX = E10Dh
  765.     BX = size of parameter block in words (0006h)
  766.     CX:DX -> parameter block (see #2166)
  767. Return: AX = status (see #2154)
  768. Desc:    this function is used to verify username/password
  769. SeeAlso: AX=E10Eh
  770.  
  771. Format of Da Vinci eMail "NetSubmitName" parameter block:
  772. Offset    Size    Description    (Table 2166)
  773.  00h    WORD    segment of uppercase password string
  774.  02h    WORD    offset of uppercase password string
  775.  04h    WORD    segment of uppercase username string
  776.  06h    WORD    offset of uppercase username string
  777.  08h    WORD    segment of "DVSEMAIL"
  778.  0Ah    WORD    offset of "DVSEMAIL"
  779. --------e-92E10E-----------------------------
  780. INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
  781.     AX = E10Eh
  782.     BX = size of parameter block in words (0004h)
  783.     CX:DX -> parameter block (see #2167)
  784. Return: AX = 0001h
  785. Desc:    this function is used to remove a username
  786. SeeAlso: AX=E10Dh
  787.  
  788. Format of Da Vinci eMail "NetRemoveName" parameter block:
  789. Offset    Type    Description    (Table 2167)
  790.  00h    WORD    segment of uppercase username
  791.  02h    WORD    offset of uppercase username
  792.  04h    WORD    segment of "DVSEMAIL"
  793.  06h    WORD    offset of "DVSEMAIL"
  794. --------e-92E10FBX0000-----------------------
  795. INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
  796.     AX = E10Fh
  797.     BX = 0000h
  798.     CX:DX ignored
  799. Return: AX = 0001h
  800. SeeAlso: AX=E180h
  801. --------e-92E110-----------------------------
  802. INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
  803.     AX = E110h
  804.     BX = size of parameter block in words (0006h)
  805.     CX:DX -> parameter block (see #2168)
  806. Return: AX = 0001h
  807. SeeAlso: AX=E111h,AX=E113h
  808.  
  809. Format of Da Vinci eMail "NetGetAltRoute" parameter block:
  810. Offset    Size    Description    (Table 2168)
  811.  00h  6 WORDs    ???
  812. --------e-92E111-----------------------------
  813. INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
  814.     AX = E111h
  815.     BX = size of parameter block in words (0004h)
  816.     CX:DX -> parameter block (see #2169)
  817. Return: AX = 0001h
  818. SeeAlso: AX=E110h,AX=E113h
  819.  
  820. Format of Da Vinci eMail "NetDeleteAltRoutes" parameter block:
  821. Offset    Size    Description    (Table 2169)
  822.  00h  4 WORDs    ???
  823. --------e-92E112-----------------------------
  824. INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
  825.     AX = E112h
  826.     BX = size of parameter block in words (0008h)
  827.     CX:DX -> parameter block (see #2170)
  828. Return: AX = 0001h
  829. SeeAlso: AX=E180h
  830.  
  831. Format of Da Vinci eMail "NetChangePassword" parameter block:
  832. Offset    Size    Description    (Table 2170)
  833.  00h  8 WORDs    ???
  834. --------e-92E113-----------------------------
  835. INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
  836.     AX = E113h
  837.     BX = size of parameter block in words (0008h)
  838.     CX:DX -> parameter block (see #2171)
  839. Return: AX = 0001h
  840. SeeAlso: AX=E110h,AX=E111h
  841.  
  842. Format of Da Vinci eMail "NetSetAltRoute" parameter block:
  843. Offset    Size    Description    (Table 2171)
  844.  00h  8 WORDs    ???
  845. --------e-92E175-----------------------------
  846. INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
  847.     AX = E175h
  848. Return: AX = 0012h
  849.     BX = PSP
  850. SeeAlso: AX=E180h
  851. --------e-92E180-----------------------------
  852. INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK
  853.     AX = E180h
  854. Return: AX = 0012h if installed
  855.     ES:DX -> '$'-terminated driver information string
  856. SeeAlso: AX=E102h,AX=E105h,AX=E10Fh,AX=E175h
  857. --------r-93---------------------------------
  858. INT 93 - IBM ROM BASIC - used while in interpreter
  859. Notes:    called by ROM BASIC
  860.     BASIC.COM/BASICA.COM do not restore vector on termination
  861. --------N-93---------------------------------
  862. INT 93 - IBM TOKEN RING ADAPTER - ???
  863. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  864. --------r-94---------------------------------
  865. INT 94 - IBM ROM BASIC - used while in interpreter
  866. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  867.     BASIC.COM/BASICA.COM do not restore vector on termination
  868. --------s-94----SI0000-----------------------
  869. INT 94 u - PCM driver - INITIALIZE SOUND
  870.     SI = 0000h
  871.     ES:BX -> parameters
  872. Return: ???
  873. Program: PCM.COM is a sound driver for Media Vision's Pro Audio Spectrum
  874.       sound boards
  875. Note:    the installation check consists of testing for the signature string
  876.       "PCMDRIVER" immediately preceding the interrupt handler; the word
  877.       preceding the signature gives the PCM driver's version
  878. SeeAlso: SI=0001h,SI=0002h,SI=0003h,SI=0004h,SI=0005h,SI=000Ah
  879. Index:    installation check;PCM driver|PCM.COM;installation check
  880. Index:    PCM driver;installation check
  881. --------s-94----SI0001-----------------------
  882. INT 94 u - PCM driver - INITIALIZE PCM
  883.     SI = 0001h
  884.     ES:BX -> parameters
  885. Return: ???
  886. SeeAlso: SI=0000h,SI=0002h,SI=0003h,SI=000Ah
  887. --------s-94----SI0002-----------------------
  888. INT 94 u - PCM driver - INITIALIZE PCM INFO
  889.     SI = 0002h
  890.     ES:BX -> parameters (see #2172)
  891. Return: ???
  892. SeeAlso: SI=0000h,SI=0001h,SI=0003h,SI=000Ah
  893.  
  894. Format of PCM driver parameters:
  895. Offset    Size    Description    (Table 2172)
  896.  00h    DWORD    rate
  897.  04h    WORD    channel number
  898.  06h    WORD    "comp"
  899.  08h    WORD    "dsize"
  900. --------s-94----SI0003-----------------------
  901. INT 94 u - PCM driver - INITIALIZE DMA BUFFER
  902.     SI = 0003h
  903.     ES:BX -> parameters (see #2173)
  904. Return: ???
  905. SeeAlso: SI=0000h,SI=000Ah,SI=000Bh
  906.  
  907. Format of PCM driver parameters:
  908. Offset    Size    Description    (Table 2173)
  909.  00h    DWORD    -> DMA buffer
  910.  04h    WORD    size of DMA buffer
  911.  06h    WORD    number of divisions
  912. --------s-94----SI0004-----------------------
  913. INT 94 u - PCM driver - INITIALIZE USER FUNCTION
  914.     SI = 0004h
  915.     ES:BX -> parameters (see #2174)
  916. Return: ???
  917. SeeAlso: SI=0000h,SI=0001h
  918.  
  919. Format of PCM driver parameters:
  920. Offset    Size    Description    (Table 2174)
  921.  00h    DWORD    -> user function
  922. --------s-94----SI0005-----------------------
  923. INT 94 u - PCM driver - BEGIN AUDIO PLAY
  924.     SI = 0005h
  925. Return: ???
  926. SeeAlso: SI=0000h,SI=0006h,SI=0007h,SI=0009h
  927. --------s-94----SI0006-----------------------
  928. INT 94 u - PCM driver - BEGIN AUDIO RECORD
  929.     SI = 0006h
  930. Return: ???
  931. SeeAlso: SI=0005h,SI=0007h,SI=0009h
  932. --------s-94----SI0007-----------------------
  933. INT 94 u - PCM driver - PAUSE AUDIO PLAY/RECORD
  934.     SI = 0007h
  935. Return: ???
  936. SeeAlso: SI=0005h,SI=0006h,SI=0008h
  937. --------s-94----SI0008-----------------------
  938. INT 94 u - PCM driver - RESUME AUDIO PLAY/RECORD
  939.     SI = 0008h
  940. Return: ???
  941. SeeAlso: SI=0007h
  942. --------s-94----SI0009-----------------------
  943. INT 94 u - PCM driver - STOP AUDIO PLAY/RECORD
  944.     SI = 0009h
  945. Return: ???
  946. SeeAlso: SI=0005h,SI=0006h,SI=0007h
  947. --------s-94----SI000A-----------------------
  948. INT 94 u - PCM driver - UNHOOK INTERRUPTS AND TURN OFF DMA
  949.     SI = 000Ah
  950. Return: ???
  951. SeeAlso: SI=0000h,SI=0001h,SI=0003h
  952. Index:    uninstall;PCM driver
  953. --------s-94----SI000B-----------------------
  954. INT 94 u - PCM driver - FIND VALID DMA BUFFER IN HUGE MEMORY BLOCK
  955.     SI = 000Bh
  956.     ES:BX -> parameters (see #2175)
  957. Return: ???
  958. SeeAlso: SI=0003h
  959.  
  960. Format of PCM driver parameters:
  961. Offset    Size    Description    (Table 2175)
  962.  00h    DWORD    -> memory block to contain DMA buffer
  963.  04h    WORD    desired size of DMA buffer
  964. --------s-94----SI000D-----------------------
  965. INT 94 u - Media Vision PCM.COM - GET STATUS
  966.     SI = 000Dh
  967. Return: AX = status (0000h = waiting) (see #2176)
  968.  
  969. Bitfields for PCM.COM status:
  970. Bit(s)    Description    (Table 2176)
  971.  0    playing
  972.  1    recording
  973.  2    SBplaying
  974.  3    SBrecording
  975.  14    SBpaused
  976.  15    paused
  977. --------s-94----SI8000-----------------------
  978. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER ADDRESS
  979.     SI = 8000h
  980. Return: DX:AX -> DMA buffer
  981. Program: PCM.COM is a superset of the standard PCM driver which provides
  982.       additional functions for fine control of the driver
  983. Note:    the installation check for the Media Vision PCM.COM "shark" functions
  984.       consists of testing for the signature "PCM-SHARK" at offset 107h in
  985.       the INT 94 handler's segment
  986. SeeAlso: SI=8001h,SI=8004h
  987. Index:    installation check;Media Vision PCM.COM|PCM.COM;installation check
  988. Index:    Media Vision PCM.COM;"shark" functions
  989. --------s-94----SI8001-----------------------
  990. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER SIZE AND DIVISIONS
  991.     SI = 8001h
  992. Return: AX = DMA buffer size
  993.     DX = divisions
  994. SeeAlso: SI=8000h
  995. --------s-94----SI8002-----------------------
  996. INT 94 u - Media Vision PCM.COM - CHECK BOARD ADDRESS
  997.     SI = 8002h
  998. Return: AX = status
  999.         0000h if board not at specified I/O address
  1000.         other if board found
  1001. Note:    the I/O address is specified by ORing the base I/O port shifted left
  1002.       four bits into SI before calling INT 94
  1003. SeeAlso: SI=8000h
  1004. --------s-94----SI8004-----------------------
  1005. INT 94 u - Media Vision PCM.COM - GET INTERNAL NOTE BUFFER
  1006.     SI = 8004h
  1007. Return: AX = offset of note buffer (segment = segment of internal DMA buffer)
  1008.     DX = size of buffer in note structures
  1009. SeeAlso: SI=8000h
  1010. --------s-94----SI8005-----------------------
  1011. INT 94 u - Media Vision PCM.COM - SINGLE-STEP QUEUE
  1012.     SI = 8005h
  1013. Return: ???
  1014. --------s-94----SI8011-----------------------
  1015. INT 94 u - Media Vision PCM.COM - INITIALIZE
  1016.     SI = 8011h
  1017.     ES:BX -> "iobf91" structure
  1018. Return: ???
  1019. --------s-94----SI8012-----------------------
  1020. INT 94 u - Media Vision PCM.COM - LOAD SOUND FOR LATER PLAY THROUGH KEYBOARD
  1021.     SI = 8012h
  1022.     ES:BX -> "i94f92buf" structure
  1023. Return: ???
  1024. SeeAlso: SI=8013h,SI=8014h
  1025. --------s-94----SI8013-----------------------
  1026. INT 94 u - Media Vision PCM.COM - GET INTERNAL SOUND USAGE
  1027.     SI = 8013h
  1028. Return: AX = number of sounds used
  1029.     DX = maximum handles
  1030. --------s-94----SI8014-----------------------
  1031. INT 94 u - Media Vision PCM.COM - GET DATA FOR SPECIFIED SOUND
  1032.     SI = 8014h
  1033.     ES:BX -> "i94f92buf" structure to be filled in
  1034.         sound number field set to desired sound
  1035. Return: AX = status
  1036.         0000h successful
  1037.         FFFFh sound number out of range
  1038. SeeAlso: SI=8012h,SI=8013h
  1039. --------s-94----SI8015-----------------------
  1040. INT 94 u - Media Vision PCM.COM - GET/SET INTERNAL DMA BUFFER
  1041.     SI = 8015h
  1042.     ES:BX -> DMA info structure (see #2177)
  1043. Return: ???
  1044.  
  1045. Format of PCM.COM DMA info structure:
  1046. Offset    Size    Description    (Table 2177)
  1047.  00h    DWORD    -> DMA buffer (offset FFFFh = return current buffer info)
  1048.  04h    WORD    DMA buffer size
  1049.  06h    WORD    divisions
  1050. --------s-94----SI8016-----------------------
  1051. INT 94 u - Media Vision PCM.COM - SIMULATE DOUBLE-SHIFT HOTKEY
  1052.     SI = 8016h
  1053.     AX = hotkey number (01h-08h)
  1054. Return: ???
  1055. SeeAlso: AL=02h/SI=8017h
  1056. --------s-94--01SI8017-----------------------
  1057. INT 94 u - Media Vision PCM.COM - CTRL-G INTERCEPT
  1058.     AL = 01h
  1059.     SI = 8017h
  1060.     AH = new state (00h off, 01h on)
  1061. Return: ???
  1062. SeeAlso: AL=02h/SI=8017h
  1063. --------s-94--02SI8017-----------------------
  1064. INT 94 u - Media Vision PCM.COM - DOUBLE-SHIFT-HOTKEY SOUND FEATURE
  1065.     AL = 02h
  1066.     SI = 8017h
  1067.     AH = new state (00h off, 01h on)
  1068. Return: ???
  1069. --------s-94--04SI8017-----------------------
  1070. INT 94 u - Media Vision PCM.COM - RANDOM SOUND FEATURE
  1071.     AL = 04h
  1072.     SI = 8017h
  1073.     AH = new state
  1074.         00h off
  1075.         01h on
  1076.         CX = minimum delay
  1077.         DX = maximum delay
  1078. Return: ???
  1079. --------s-94--08SI8017-----------------------
  1080. INT 94 u - Media Vision PCM.COM - NO ACTIVITY FEATURE
  1081.     AL = 08h
  1082.     SI = 8017h
  1083.     AH = new state
  1084.         00h off
  1085.         01h on
  1086.         DX:CX = delay
  1087. Return: ???
  1088. SeeAlso: AL=10h/SI=8017h
  1089. --------s-94--10SI8017-----------------------
  1090. INT 94 u - Media Vision PCM.COM - TIMER CONTROL
  1091.     AL = 10h
  1092.     SI = 8017h
  1093.     AH bit 7: set timer
  1094.     AH bit 6: timer active (timer turned off if clear)
  1095.     AH bits 5-0: timer number
  1096.     DX:CX = delay if AH bit 7 set (one-shot if DX bit 15 set)
  1097. Return: ???
  1098. SeeAlso: AL=08h/SI=8017h
  1099. --------s-94----SI8018-----------------------
  1100. INT 94 u - Media Vision PCM.COM - GET INFO
  1101.     SI = 8018h
  1102.     AL = what to get
  1103.         00h "F92state"
  1104.         01h "F92bkgd"
  1105.         02h "I10timer"
  1106.         03h "I08state"
  1107. Return: DX:AX -> desired information
  1108. --------r-95---------------------------------
  1109. INT 95 - IBM ROM BASIC - used while in interpreter
  1110. Notes:    called by ROM BASIC
  1111.     BASIC.COM/BASICA.COM do not restore vector on termination
  1112. --------r-95---------------------------------
  1113. INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
  1114. Note:    use only when the R= option is invoked on entering APL
  1115. --------r-96---------------------------------
  1116. INT 96 - IBM ROM BASIC - used while in interpreter
  1117. Notes:    called by ROM BASIC
  1118.     BASIC.COM/BASICA.COM do not restore vector on termination
  1119. --------r-97---------------------------------
  1120. INT 97 - IBM ROM BASIC - used while in interpreter
  1121. Notes:    called by ROM BASIC
  1122.     BASIC.COM/BASICA.COM do not restore vector on termination
  1123. --------r-98---------------------------------
  1124. INT 98 - IBM ROM BASIC - used while in interpreter
  1125. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1126.     BASIC.COM/BASICA.COM do not restore vector on termination
  1127. --------r-99---------------------------------
  1128. INT 99 - IBM ROM BASIC - used while in interpreter
  1129. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1130.     BASIC.COM/BASICA.COM do not restore vector on termination
  1131. --------r-9A---------------------------------
  1132. INT 9A - IBM ROM BASIC - used while in interpreter
  1133. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1134.     BASIC.COM/BASICA.COM do not restore vector on termination
  1135. SeeAlso: INT 80"BASIC",INT 99,INT 9B
  1136. --------r-9B---------------------------------
  1137. INT 9B - IBM ROM BASIC - used while in interpreter
  1138. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1139.     BASIC.COM/BASICA.COM do not restore vector on termination
  1140. SeeAlso: INT 80"BASIC",INT 9A,INT 9C"BASIC"
  1141. --------r-9C---------------------------------
  1142. INT 9C - IBM ROM BASIC - used while in interpreter
  1143. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1144.     BASIC.COM/BASICA.COM do not restore vector on termination
  1145. SeeAlso: INT 80"BASIC",INT 9B,INT 9D"BASIC"
  1146. --------v-9C---------------------------------
  1147. INT 9C - VIRUS - "INT13" - ORIGINAL INT 13h VECTOR
  1148. SeeAlso: INT 8B"VIRUS",INT 9D"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  1149. --------r-9D---------------------------------
  1150. INT 9D - IBM ROM BASIC - used while in interpreter
  1151. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1152.     BASIC.COM/BASICA.COM do not restore vector on termination
  1153. SeeAlso: INT 80"BASIC",INT 9C"BASIC",INT 9E"BASIC"
  1154. --------v-9D---------------------------------
  1155. INT 9D - VIRUS - "INT13" - ROM INT 13h ENTRY POINT
  1156. Note:    this vector is used by the virus to store the result of a call to
  1157.       INT 2F/AH=13h
  1158. SeeAlso: INT 2F/AH=13h,INT 9C"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  1159. --------r-9E---------------------------------
  1160. INT 9E - IBM ROM BASIC - used while in interpreter
  1161. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1162.     BASIC.COM/BASICA.COM do not restore vector on termination
  1163. SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT 9F"BASIC"
  1164. --------v-9E---------------------------------
  1165. INT 9E - VIRUS - "INT13" - ORIGINAL INT 21h VECTOR
  1166. SeeAlso: INT 70"VIRUS",INT 9C"VIRUS",INT 9D"VIRUS",INT E0"VIRUS"
  1167. --------r-9F---------------------------------
  1168. INT 9F - IBM ROM BASIC - used while in interpreter
  1169. Notes:    called by ROM BASIC
  1170.     BASIC.COM/BASICA.COM do not restore vector on termination
  1171. SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT A0"BASIC"
  1172. --------v-9F---------------------------------
  1173. INT 9F - VIRUS - "INT13" - STORAGE FOR USER INT 13h VECTOR
  1174. Note:    while it is infecting a file, the INT13 virus grabs INT 13 and uses
  1175.       this interrupt to store the existing INT 13 vector for later
  1176.       restoration
  1177. SeeAlso: INT 9C"VIRUS",INT 9D"VIRUS"
  1178. --------r-A0---------------------------------
  1179. INT A0 - IBM ROM BASIC - used while in interpreter
  1180. Notes:    called by ROM BASIC
  1181.     BASIC.COM/BASICA.COM do not restore vector on termination
  1182. SeeAlso: INT 80"BASIC",INT 9F"BASIC",INT A1"BASIC"
  1183. --------r-A0---------------------------------
  1184. INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
  1185. SeeAlso: INT 59
  1186. --------r-A1---------------------------------
  1187. INT A1 - IBM ROM BASIC - used while in interpreter
  1188. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1189.     BASIC.COM/BASICA.COM do not restore vector on termination
  1190. SeeAlso: INT 80"BASIC",INT A0"BASIC",INT A2"BASIC"
  1191. --------r-A2---------------------------------
  1192. INT A2 - IBM ROM BASIC - used while in interpreter
  1193. Notes:    called by ROM BASIC
  1194.     BASIC.COM/BASICA.COM do not restore vector on termination
  1195. SeeAlso: INT 80"BASIC",INT A1"BASIC",INT A3"BASIC"
  1196. --------r-A3---------------------------------
  1197. INT A3 - IBM ROM BASIC - used while in interpreter
  1198. Notes:    called by ROM BASIC
  1199.     BASIC.COM/BASICA.COM do not restore vector on termination
  1200. SeeAlso: INT 80"BASIC",INT A2"BASIC",INT A4"BASIC"
  1201. --------r-A4---------------------------------
  1202. INT A4 - IBM ROM BASIC - used while in interpreter
  1203. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1204.     BASIC.COM/BASICA.COM do not restore vector on termination
  1205. SeeAlso: INT 80"BASIC",INT A3"BASIC",INT A5"BASIC"
  1206. --------U-A4---------------------------------
  1207. INT A4 U - Right Hand Man - API
  1208.     AH = function number (v3.3 supports functions 00h-52h)
  1209. Return: CF set on error
  1210.     CF clear if successful
  1211. Program: Right Hand Man is a TSR desk-top utility originally by Red E Products
  1212.       which has evolved into Futurus Team
  1213. Note:    this interrupt is only hooked while popped up
  1214. SeeAlso: INT 2F/AX=A4E0h
  1215. --------r-A5---------------------------------
  1216. INT A5 - IBM ROM BASIC - used while in interpreter
  1217. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1218.     BASIC.COM/BASICA.COM do not restore vector on termination
  1219. SeeAlso: INT 80"BASIC",INT A4"BASIC",INT A6"BASIC"
  1220. --------r-A6---------------------------------
  1221. INT A6 - IBM ROM BASIC - used while in interpreter
  1222. Notes:    called by ROM BASIC
  1223.     BASIC.COM/BASICA.COM do not restore vector on termination
  1224. SeeAlso: INT 80"BASIC",INT A5"BASIC",INT A7"BASIC"
  1225. --------r-A7---------------------------------
  1226. INT A7 - IBM ROM BASIC - used while in interpreter
  1227. Notes:    called by ROM BASIC
  1228.     BASIC.COM/BASICA.COM do not restore vector on termination
  1229. --------r-A8---------------------------------
  1230. INT A8 - IBM ROM BASIC - used while in interpreter
  1231. Notes:    called by ROM BASIC
  1232.     BASIC.COM/BASICA.COM do not restore vector on termination
  1233. --------r-A9---------------------------------
  1234. INT A9 - IBM ROM BASIC - used while in interpreter
  1235. Notes:    called by ROM BASIC
  1236.     BASIC.COM/BASICA.COM do not restore vector on termination
  1237. --------r-AA---------------------------------
  1238. INT AA - IBM ROM BASIC - used while in interpreter
  1239. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1240.     BASIC.COM/BASICA.COM do not restore vector on termination
  1241. --------r-AB---------------------------------
  1242. INT AB - IBM ROM BASIC - used while in interpreter
  1243. Notes:    called by ROM BASIC
  1244.     BASIC.COM/BASICA.COM do not restore vector on termination
  1245. --------r-AC---------------------------------
  1246. INT AC - IBM ROM BASIC - used while in interpreter
  1247. Notes:    called by ROM BASIC
  1248.     BASIC.COM/BASICA.COM do not restore vector on termination
  1249. --------r-AD---------------------------------
  1250. INT AD - IBM ROM BASIC - used while in interpreter
  1251. Notes:    called by ROM BASIC
  1252.     BASIC.COM/BASICA.COM do not restore vector on termination
  1253. --------r-AE---------------------------------
  1254. INT AE - IBM ROM BASIC - used while in interpreter
  1255. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1256.     BASIC.COM/BASICA.COM do not restore vector on termination
  1257. --------r-AF---------------------------------
  1258. INT AF - IBM ROM BASIC - used while in interpreter
  1259. Notes:    called by ROM BASIC
  1260.     BASIC.COM/BASICA.COM do not restore vector on termination
  1261. --------r-B0---------------------------------
  1262. INT B0 - IBM ROM BASIC - used while in interpreter
  1263. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1264.     BASIC.COM/BASICA.COM do not restore vector on termination
  1265. --------r-B1---------------------------------
  1266. INT B1 - IBM ROM BASIC - used while in interpreter
  1267. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1268.     BASIC.COM/BASICA.COM do not restore vector on termination
  1269. --------r-B2---------------------------------
  1270. INT B2 - IBM ROM BASIC - used while in interpreter
  1271. Notes:    called by ROM BASIC
  1272.     BASIC.COM/BASICA.COM do not restore vector on termination
  1273. --------r-B3---------------------------------
  1274. INT B3 - IBM ROM BASIC - used while in interpreter
  1275. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1276.     BASIC.COM/BASICA.COM do not restore vector on termination
  1277. --------U-B370-------------------------------
  1278. INT B3 - ZIPKEY - GET VERSION
  1279.     AH = 70h
  1280. Return: AH = major version
  1281.     AL = minor version
  1282.     CL = number of states and territories in current database
  1283.     DH = year of current database - 1900
  1284.     DL = month of current database's file date
  1285. Program: ZIPKEY is a resident ZIPCODE database by Eric Isaacson
  1286. Note:    if installed, the string "ZIPKEY" is present at offset 75h in the
  1287.       interrupt handler's segment, and the byte at 7Bh contains the API
  1288.       version number (00h for v1.x, 01h for v2.0)
  1289. --------U-B371-------------------------------
  1290. INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
  1291.     AH = 71h
  1292.     BX = abbreviation, in either case (first letter in BL)
  1293. Return: CF set on error
  1294.         AL = FFh
  1295.     CF clear if successful
  1296.         AL = ZIPKEY state code
  1297. SeeAlso: AH=72h
  1298. --------U-B372-------------------------------
  1299. INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
  1300.     AH = 72h
  1301.     BL = ZIPKEY state code
  1302. Return: CF set on error
  1303.         AX destroyed
  1304.     CF clear if successful
  1305.         AX = abbreviation, in upper case
  1306. SeeAlso: AH=71h,AH=73h
  1307. --------U-B373-------------------------------
  1308. INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
  1309.     AH = 73h
  1310.     BL = ZIPKEY state code
  1311.     ES:DI -> buffer for name
  1312. Return: CF set on error
  1313.         AX destroyed
  1314.     CF clear if successful
  1315.         ES:DI points one byte beyond end of name
  1316. SeeAlso: AH=72h
  1317. --------U-B374-------------------------------
  1318. INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
  1319.     AH = 74h
  1320.     DX = zipcode region (0-999)
  1321.     CH = last two digits of zipcode (0-99)
  1322.     ES:DI -> buffer
  1323. Return: CF set on error
  1324.         AX destroyed
  1325.     CF clear if successful
  1326.         ES:DI points one byte beyond end of digit string
  1327. --------U-B375-------------------------------
  1328. INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
  1329.     AH = 75h
  1330.     DX = zipcode region (0-999)
  1331.     CH = last two digits of zipcode (0-99)
  1332. Return: CF set on error (zipcode not found)
  1333.         AL = suggested state code, FFh if none
  1334.     CF clear if successful
  1335.         AL = ZIPKEY state code
  1336.         BX = area code (v2.0+)
  1337. SeeAlso: AH=76h,AH=79h
  1338. --------U-B376-------------------------------
  1339. INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
  1340.     AH = 76h
  1341.     DX = zipcode region (0-999)
  1342.     CH = last two digits of zipcode (0-99)
  1343.     ES:DI -> buffer for name
  1344. Return: CF set on error
  1345.         AL = suggested state code, FFh if none
  1346.         ES:DI buffer filled with suggested city name
  1347.     CF clear if successful
  1348.         AL = ZIPKEY state code
  1349.         BX = area code (v2.0+)
  1350.         ES:DI points one byte beyond end of name
  1351. SeeAlso: AH=75h,AH=78h,AH=7Eh
  1352. --------U-B377-------------------------------
  1353. INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
  1354.     AH = 77h
  1355.     DX = zipcode region (0-999)
  1356.     CH = last two digits of zipcode (0-99)
  1357.     BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
  1358. Return: CF set on error
  1359.         AX destroyed
  1360.     CF clear if successful
  1361.         zipcode specification as defined by the BX keystroke is placed in
  1362.           keyboard buffer, as if the user had popped up ZIPKEY and exited
  1363.           by pressing the key specified by BX
  1364. --------U-B378-------------------------------
  1365. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
  1366.     AH = 78h
  1367.     BL = ZIPKEY state code
  1368.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  1369. Return: BH = number of matching entries (set to 51 if more than 50)
  1370.     DX = zipcode region of first match (0-999)
  1371.     CL = last two digits of first zipcode in the range (0-99)
  1372.     CH = last two digits of last zipcode in the range (0-99)
  1373.     AX destroyed
  1374. SeeAlso: AH=79h,AH=7Ah
  1375. --------U-B379-------------------------------
  1376. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
  1377.     AH = 79h
  1378.     BL = ZIPKEY state code of first state to search
  1379.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  1380. Return: AL = ZIPKEY state code of first matching state
  1381.     BH = number of matching entries (set to 51 if more than 50)
  1382.     DX = zipcode region of first match (0-999)
  1383.     CL = last two digits of first zipcode in first range (0-99)
  1384.     CH = last two digits of last zipcode in first range (0-99)
  1385. Note:    to find all matching cities, repeat search with BL set to one more than
  1386.       the returned AL
  1387. SeeAlso: AH=78h,AH=7Ah
  1388. --------U-B37A-------------------------------
  1389. INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
  1390.     AH = 7Ah
  1391.     BL = case number (0 to one less than value returned in BH by lookup)
  1392. Return: AL = ZIPKEY state code
  1393.     DX = zipcode region (0-999)
  1394.     CL = last two digits of first zipcode in the range (0-99)
  1395.     CH = last two digits of last zipcode in the range (0-99)
  1396. SeeAlso: AH=78h,AH=79h
  1397. --------U-B37B-------------------------------
  1398. INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
  1399.     AH = 7Bh
  1400. Return: BL = maximum number of characters for a city name
  1401.     BH = ZIPKEY state code for last city-name search, or FFh if none
  1402.     CX:DX = internal code identifying last city search
  1403.     AX destroyed
  1404. SeeAlso: AH=7Ch
  1405. --------U-B37C-------------------------------
  1406. INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
  1407.     AH = 7Ch
  1408.     BL = maximum number of characters for a city name
  1409.     BH = ZIPKEY state code for last city-name search, or FFh if none
  1410.     CX:DX = internal code returned by AH=7Bh
  1411. Return: CF set on error
  1412.     CF clear if successful
  1413.     AX destroyed
  1414. SeeAlso: AH=7Bh
  1415. --------U-B37D-------------------------------
  1416. INT B3 - ZIPKEY - REQUEST POP UP
  1417.     AH = 7Dh
  1418.     BL = index number to simulate pressing a hotkey
  1419.         FFh for immediate popup with no playback on return
  1420. Return: CF set on error
  1421.         AL = error code
  1422.         FDh already busy with another request
  1423.         FEh illegal function
  1424.     CF clear if successful
  1425.         AX destroyed
  1426.         window popped up and was closed by the user
  1427. SeeAlso: AH=70h
  1428. --------U-B37E-------------------------------
  1429. INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
  1430.     AH = 7Eh
  1431.     DX = zipcode region (0-999)
  1432.     ES:DI -> buffer for name
  1433. Return: CF set on error
  1434.         AL = FFh region does not exist
  1435.     CF clear if successful
  1436.         AL = ZIPKEY state code
  1437.         ES:DI points one byte beyond end of name
  1438. SeeAlso: AH=76h
  1439. --------U-B37F-------------------------------
  1440. INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
  1441.     AH = 7Fh
  1442.     BL = function
  1443.         00h turn off hotkeys
  1444.         01h turn on hotkeys
  1445.         02h return hotkey status
  1446.         03h toggle hotkey status
  1447. Return: AL = hotkey status
  1448.         00h off
  1449.         01h on
  1450. --------U-B380-------------------------------
  1451. INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
  1452.     AH = 80h
  1453.     BX = telephone area code (decimal)
  1454. Return: CF clear if successful
  1455.         AL = ZIPKEY state code
  1456.         DX = first ZIP region for state (03E8h if Canada)
  1457.         CX = number of ZIP regions in state
  1458.     CF set on error
  1459.         AL = FFh
  1460.         DX = 03E9h
  1461. --------r-B4---------------------------------
  1462. INT B4 - IBM ROM BASIC - used while in interpreter
  1463. Notes:    called by ROM BASIC
  1464.     BASIC.COM/BASICA.COM do not restore vector on termination
  1465. --------r-B4---------------------------------
  1466. INT B4 - StackMan - REQUEST NEW STACK
  1467. Return: SS:SP -> new stack
  1468. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  1469.       which functions as a replacement for the DOS STACK= command as well
  1470.       as permitting multiple TSRs to share a pool of stack space
  1471. Note:    the installation check consists of testing for the string "STACKXXX" at
  1472.       offset 0Ah from the interrupt handler
  1473. SeeAlso: INT 2F/AX=C9FFh,INT B5"STACKMAN"
  1474. Index:    installation check;STACKMAN
  1475. --------r-B5---------------------------------
  1476. INT B5 - IBM ROM BASIC - used while in interpreter
  1477. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1478.     BASIC.COM/BASICA.COM do not restore vector on termination
  1479. SeeAlso: INT 80"BASIC",INT B4"BASIC",INT B6"BASIC"
  1480. --------r-B5---------------------------------
  1481. INT B5 - StackMan - RESTORE ORIGINAL STACK
  1482.     SS:SP -> stack returned by INT B4
  1483. Return: SS:SP restored to value before INT B4
  1484. SeeAlso: INT 2F/AX=C9FFh,INT B4"StackMan"
  1485. --------m-B5---------------------------------
  1486. INT B5 U - Netroom NETSWAP4 - ???
  1487.     ???
  1488. Return: ???
  1489. SeeAlso: INT 31/AH=57h
  1490. --------r-B6---------------------------------
  1491. INT B6 - IBM ROM BASIC - used while in interpreter
  1492. Notes:    called by ROM BASIC
  1493.     BASIC.COM/BASICA.COM do not restore vector on termination
  1494. SeeAlso: INT 80"BASIC",INT B5"BASIC",INT B7"BASIC"
  1495. --------y-B6---------------------------------
  1496. INT B6 - (NOT A VECTOR!) - USED BY TBFENCE
  1497. Program: TBFence is a security program by ESaSS B.V. which transparently
  1498.       encrypts floppies and optionally allows only encrypted diskettes to
  1499.       be accessed
  1500. Note:    the low word of this vector (0000h:02D8h) contains the segment of the
  1501.       TBFence INT 13h code, which starts with the signature word E487h;
  1502.       this forms the installation check
  1503.     the highest byte of this vector contains the start of a FAR JMP
  1504.       instruction to ???
  1505. SeeAlso: INT B7"TBFENCE"
  1506. Index:    installation check;TBFence
  1507. --------r-B7---------------------------------
  1508. INT B7 - IBM ROM BASIC - used while in interpreter
  1509. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1510.     BASIC.COM/BASICA.COM do not restore vector on termination
  1511. SeeAlso: INT 80"BASIC",INT B6"BASIC",INT B8"BASIC"
  1512. --------y-B7---------------------------------
  1513. INT B7 - TBFENCE - ???
  1514. SeeAlso: INT B6"TBFENCE"
  1515. --------r-B8---------------------------------
  1516. INT B8 - IBM ROM BASIC - used while in interpreter
  1517. Notes:    called by ROM BASIC
  1518.     BASIC.COM/BASICA.COM do not restore vector on termination
  1519. SeeAlso: INT 80"BASIC",INT B7"BASIC",INT B9"BASIC"
  1520. --------r-B9---------------------------------
  1521. INT B9 - IBM ROM BASIC - used while in interpreter
  1522. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1523.     BASIC.COM/BASICA.COM do not restore vector on termination
  1524. --------r-BA---------------------------------
  1525. INT BA - IBM ROM BASIC - used while in interpreter
  1526. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1527.     BASIC.COM/BASICA.COM do not restore vector on termination
  1528. --------r-BB---------------------------------
  1529. INT BB - IBM ROM BASIC - used while in interpreter
  1530. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1531.     BASIC.COM/BASICA.COM do not restore vector on termination
  1532. --------r-BC---------------------------------
  1533. INT BC - IBM ROM BASIC - used while in interpreter
  1534. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1535.     BASIC.COM/BASICA.COM do not restore vector on termination
  1536. --------r-BD---------------------------------
  1537. INT BD - IBM ROM BASIC - used while in interpreter
  1538. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1539.     BASIC.COM/BASICA.COM do not restore vector on termination
  1540. --------r-BE---------------------------------
  1541. INT BE - IBM ROM BASIC - used while in interpreter
  1542. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1543.     BASIC.COM/BASICA.COM do not restore vector on termination
  1544. SeeAlso: INT 80"BASIC",INT BD"BASIC",INT BF"BASIC"
  1545. --------Q-BE---------------------------------
  1546. INT BE - DESQview/X - ???
  1547. Note:    points at an IRET
  1548. SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview"
  1549. --------r-BF---------------------------------
  1550. INT BF - IBM ROM BASIC - used while in interpreter
  1551. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1552.     BASIC.COM/BASICA.COM do not restore vector on termination
  1553. SeeAlso: INT 80"BASIC",INT BE"BASIC",INT C0"BASIC"
  1554. --------r-C0---------------------------------
  1555. INT C0 - 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. SeeAlso: INT 80"BASIC",INT BF"BASIC",INT C1"BASIC"
  1559. --------d-C0---------------------------------
  1560. INT C0 - AMI BIOS - DRIVE 0 DATA
  1561. Note:    this vector is used by some AMI BIOSes to store the first four bytes
  1562.       of the hard disk parameter table
  1563. SeeAlso: INT 41,INT 60"Adaptec",INT C1"AMI",INT C2"AMI",INT C3"AMI",INT C4"AMI"
  1564. --------r-C1---------------------------------
  1565. INT C1 - IBM ROM BASIC - used while in interpreter
  1566. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1567.     BASIC.COM/BASICA.COM do not restore vector on termination
  1568. SeeAlso: INT 80"BASIC",INT C0"BASIC",INT C2"BASIC"
  1569. --------d-C1---------------------------------
  1570. INT C1 - AMI BIOS - DRIVE 0 DATA
  1571. Note:    this vector is used by some AMI BIOSes to store the second four bytes
  1572.       of the hard disk parameter table
  1573. SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C2"AMI",INT C3"AMI"
  1574. --------r-C2---------------------------------
  1575. INT C2 - IBM ROM BASIC - used while in interpreter
  1576. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1577.     BASIC.COM/BASICA.COM do not restore vector on termination
  1578. SeeAlso: INT 80"BASIC",INT C1"BASIC",INT C3"BASIC"
  1579. --------d-C2---------------------------------
  1580. INT C2 - AMI BIOS - DRIVE 0 DATA
  1581. Note:    this vector is used by some AMI BIOSes to store the third four bytes
  1582.       of the hard disk parameter table
  1583. SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C3"AMI"
  1584. --------r-C3---------------------------------
  1585. INT C3 - IBM ROM BASIC - used while in interpreter
  1586. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1587.     BASIC.COM/BASICA.COM do not restore vector on termination
  1588. SeeAlso: INT 80"BASIC",INT C2"BASIC",INT C4"BASIC"
  1589. --------d-C3---------------------------------
  1590. INT C3 - AMI BIOS - DRIVE 0 DATA
  1591. Note:    this vector is used by some AMI BIOSes to store the final four bytes
  1592.       of the hard disk parameter table
  1593. SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C2"AMI"
  1594. --------r-C4---------------------------------
  1595. INT C4 - IBM ROM BASIC - used while in interpreter
  1596. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1597.     BASIC.COM/BASICA.COM do not restore vector on termination
  1598. SeeAlso: INT 80"BASIC",INT C3"BASIC",INT C5"BASIC"
  1599. --------d-C4---------------------------------
  1600. INT C4 - AMI BIOS - DRIVE 1 DATA
  1601. Note:    this vector is used by some AMI BIOSes to store the first four bytes
  1602.       of the second hard disk's parameter table
  1603. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C5"AMI",INT C6"AMI",INT C7"AMI"
  1604. --------r-C5---------------------------------
  1605. INT C5 - IBM ROM BASIC - used while in interpreter
  1606. Notes:    called by ROM BASIC
  1607.     BASIC.COM/BASICA.COM do not restore vector on termination
  1608. SeeAlso: INT 80"BASIC",INT C4"BASIC",INT C6"BASIC"
  1609. --------d-C5---------------------------------
  1610. INT C5 - AMI BIOS - DRIVE 1 DATA
  1611. Note:    this vector is used by some AMI BIOSes to store the second four bytes
  1612.       of the second hard disk's parameter table
  1613. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C6"AMI",INT C7"AMI"
  1614. --------r-C6---------------------------------
  1615. INT C6 - IBM ROM BASIC - used while in interpreter
  1616. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1617.     BASIC.COM/BASICA.COM do not restore vector on termination
  1618. SeeAlso: INT 80"BASIC",INT C5"BASIC",INT C7"BASIC"
  1619. --------r-C6---------------------------------
  1620. INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
  1621. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1622.       the older interrupts
  1623. SeeAlso: INT 86"APL"
  1624. --------d-C6---------------------------------
  1625. INT C6 - AMI BIOS - DRIVE 1 DATA
  1626. Note:    this vector is used by some AMI BIOSes to store the third four bytes
  1627.       of the second hard disk's parameter table
  1628. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C5"AMI",INT C7"AMI"
  1629. --------r-C7---------------------------------
  1630. INT C7 - IBM ROM BASIC - used while in interpreter
  1631. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1632.     BASIC.COM/BASICA.COM do not restore vector on termination
  1633. SeeAlso: INT 80"BASIC",INT C6"BASIC",INT C8"BASIC"
  1634. --------r-C7---------------------------------
  1635. INT C7 - APL*PLUS/PC - ???
  1636. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1637.       the older interrupts
  1638. SeeAlso: INT 87"APL"
  1639. --------d-C7---------------------------------
  1640. INT C7 - AMI BIOS - DRIVE 1 DATA
  1641. Note:    this vector is used by some AMI BIOSes to store the final four bytes
  1642.       of the second hard disk's parameter table
  1643. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C5"AMI",INT C6"AMI"
  1644. --------r-C8---------------------------------
  1645. INT C8 - IBM ROM BASIC - used while in interpreter
  1646. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1647.     BASIC.COM/BASICA.COM do not restore vector on termination
  1648. SeeAlso: INT 80"BASIC",INT C7"BASIC",INT C9"BASIC"
  1649. --------r-C8---------------------------------
  1650. INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
  1651. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1652.       the older interrupts
  1653. SeeAlso: INT 88"APL"
  1654. --------r-C9---------------------------------
  1655. INT C9 - IBM ROM BASIC - used while in interpreter
  1656. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1657.     BASIC.COM/BASICA.COM do not restore vector on termination
  1658. SeeAlso: INT 80"BASIC",INT C8"BASIC",INT CA"BASIC"
  1659. --------r-C9---------------------------------
  1660. INT C9 - APL*PLUS/PC - ???
  1661. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1662.       the older interrupts
  1663. SeeAlso: INT 89"APL"
  1664. --------r-CA---------------------------------
  1665. INT CA - IBM ROM BASIC - used while in interpreter
  1666. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1667.     BASIC.COM/BASICA.COM do not restore vector on termination
  1668. SeeAlso: INT 80"BASIC",INT C9"BASIC",INT CB"BASIC"
  1669. --------r-CA---------------------------------
  1670. INT CA - APL*PLUS/PC - PRINT SCREEN
  1671. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1672.       the older interrupts
  1673. SeeAlso: INT 8A"APL"
  1674. --------r-CB---------------------------------
  1675. INT CB - IBM ROM BASIC - used while in interpreter
  1676. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1677.     BASIC.COM/BASICA.COM do not restore vector on termination
  1678. SeeAlso: INT 80"BASIC",INT CA"BASIC",INT CC"BASIC"
  1679. --------r-CB---------------------------------
  1680. INT CB - APL*PLUS/PC - BEEP
  1681. Notes:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1682.       the older interrupts
  1683.     same as printing a ^G via INT 21/AH=02h
  1684. SeeAlso: INT 8B"APL"
  1685. --------r-CC---------------------------------
  1686. INT CC - IBM ROM BASIC - used while in interpreter
  1687. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1688.     BASIC.COM/BASICA.COM do not restore vector on termination
  1689. SeeAlso: INT 80"BASIC",INT CB"BASIC",INT CD"BASIC"
  1690. --------r-CC---------------------------------
  1691. INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
  1692.     AX = flag
  1693.         0000h do not save display attributes
  1694.         0001h save attributes
  1695. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  1696.       the older interrupts
  1697. SeeAlso: INT 8C"APL"
  1698. --------r-CD---------------------------------
  1699. INT CD - IBM ROM BASIC - used while in interpreter
  1700. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1701.     BASIC.COM/BASICA.COM do not restore vector on termination
  1702. SeeAlso: INT 80"BASIC",INT CC"BASIC",INT CE"BASIC"
  1703. --------r-CD---------------------------------
  1704. INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1705. --------r-CE---------------------------------
  1706. INT CE - IBM ROM BASIC - used while in interpreter
  1707. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1708.     BASIC.COM/BASICA.COM do not restore vector on termination
  1709. SeeAlso: INT 80"BASIC",INT CD"BASIC",INT CF"BASIC"
  1710. --------r-CE---------------------------------
  1711. INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1712. --------r-CF---------------------------------
  1713. INT CF - IBM ROM BASIC - used while in interpreter
  1714. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1715.     BASIC.COM/BASICA.COM do not restore vector on termination
  1716. SeeAlso: INT 80"BASIC",INT CE"BASIC",INT D0"BASIC"
  1717. --------r-CF---------------------------------
  1718. INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
  1719. SeeAlso: INT E0"APL"
  1720. --------r-D0---------------------------------
  1721. INT D0 - IBM ROM BASIC - used while in interpreter
  1722. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1723.     BASIC.COM/BASICA.COM do not restore vector on termination
  1724. SeeAlso: INT 80"BASIC",INT CF"BASIC",INT D1"BASIC"
  1725. --------r-D0---------------------------------
  1726. INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1727. --------U-D0---------------------------------
  1728. INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR
  1729. Program: NJFRERAM is a resident free-memory display utility by Mike "Nifty
  1730.       James" Blaszczak
  1731. Note:    if NJFRERAM is installed, this vector points at the signature "NJ"
  1732. Index:    installation check;NJFRERAM
  1733. --------r-D1---------------------------------
  1734. INT D1 - IBM ROM BASIC - used while in interpreter
  1735. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1736.     BASIC.COM/BASICA.COM do not restore vector on termination
  1737. SeeAlso: INT 80"BASIC",INT D0"BASIC",INT D2"BASIC"
  1738. --------r-D1---------------------------------
  1739. INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1740. --------r-D2---------------------------------
  1741. INT D2 - IBM ROM BASIC - used while in interpreter
  1742. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1743.     BASIC.COM/BASICA.COM do not restore vector on termination
  1744. SeeAlso: INT 80"BASIC",INT D1"BASIC",INT D3"BASIC"
  1745. --------r-D2---------------------------------
  1746. INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1747. --------r-D3---------------------------------
  1748. INT D3 - IBM ROM BASIC - used while in interpreter
  1749. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  1750.     BASIC.COM/BASICA.COM do not restore vector on termination
  1751. SeeAlso: INT 80"BASIC",INT D2"BASIC",INT D4"BASIC"
  1752. --------r-D3---------------------------------
  1753. INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1754. --------r-D4---------------------------------
  1755. INT D4 - IBM ROM BASIC - used while in interpreter
  1756. Notes:    called by ROM BASIC
  1757.     BASIC.COM/BASICA.COM do not restore vector on termination
  1758. SeeAlso: INT 80"BASIC",INT D3"BASIC",INT D5"BASIC"
  1759. --------r-D4---------------------------------
  1760. INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  1761. --------O-D400-------------------------------
  1762. INT D4 O - PC-MOS/386 v5.01 - OBSOLETE FUNCTIONS
  1763.     AH = 00h and 01h
  1764. Return: nothing
  1765. Desc:    PC-MOS/386 v5.01 reports that these functions are no longer supported
  1766.       and enters an endless loop
  1767. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  1768.       system by The Software Link, Inc.
  1769. --------O-D402-------------------------------
  1770. INT D4 - PC-MOS/386 v3.0+ - GET SYSTEM CONTROL BLOCK POINTER
  1771.     AH = 02h
  1772. Return: AX = 0000h
  1773.     ES:BX -> System Control Block in V86 mode (see #2178)
  1774.     ES:EBX -> System Control Block in native mode (see #2178)
  1775. Note:    superseded by AH=26h
  1776. SeeAlso: AH=04h,AH=10h,AH=26h,AH=28h,AH=29h,AH=2Ah,INT 21/AX=3000h,INT 38
  1777.  
  1778. Format of PC-MOS/386 System Control Block:
  1779. Offset    Size    Description    (Table 2178)
  1780.  00h    WORD    pointer to first TCB in chain
  1781.  02h 17 BYTEs    reserved
  1782.  13h    WORD    pointer to current task's TCB
  1783.  15h    WORD    pointer to TCB of visible (console) task
  1784. --------O-D403-------------------------------
  1785. INT D4 - PC-MOS/386 v5.01 - GET/SET EXTENDED DIRECTORY INFORMATION
  1786.     AH = 03h
  1787.     AL = subfunction (00h get, 01h set)
  1788.     DS:(E)DX -> pathname
  1789.     ES:(E)BX -> 10-byte buffer for directory information (see #2179)
  1790. Return: CF clear if successful
  1791.         AL = permitted access level for file (00h-03h)
  1792.         ES:(E)BX -> modified buffer (AL=01h on entry)
  1793.     CF set on error
  1794.         AX = error code (see #0789 at INT 21/AH=59h)
  1795. Notes:    BX/DX are used in V86 mode, EBX/EDX in native mode
  1796.     the file class cannot be changed for files because it affects the
  1797.       encryption method, but directories can have their classes changed
  1798.  
  1799. Format of PC-MOS/386 directory information:
  1800. Offset    Size    Description    (Table 2179)
  1801.  00h    BYTE    reserved (0)
  1802.  01h    BYTE    file class ('A'-'Z' or 00h)
  1803.  02h    DWORD    user ID of file creator
  1804.  06h    WORD    file creation time (see #0780 at INT 21/AX=5700h)
  1805.  08h    WORD    file creation date (see #0781 at INT 21/AX=5700h)
  1806. --------O-D404-------------------------------
  1807. INT D4 - PC-MOS/386 v3.0+ - GET TASK CONTROL BLOCK
  1808.     AH = 04h
  1809.     BX = task ID or FFFFh for calling task
  1810. Return: CF clear if successful
  1811.         ES = segment of Task Control Block (TCB) (see #2180)
  1812.     CF set on error
  1813.         AX = error code (see #0789 at INT 21/AH=59h)
  1814. Note:    superseded by AH=27h
  1815. SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah,INT 38
  1816.  
  1817. Format of PC-MOS/386 Task Control Block:
  1818. Offset    Size    Description    (Table 2180)
  1819.  00h    BYTE    signature byte "H" if allocated from system memory pool
  1820.  01h    BYTE    header block ID, "T" = TCB
  1821.  02h    WORD    length of block in paragraphs
  1822.  04h    WORD    segment address of next header block (0000h if last)
  1823.  06h    WORD    segment address of previous header block (0000h if first)
  1824.  08h    WORD    pointer to next TCB
  1825.  0Ah    WORD    pointer to previous TCB
  1826.  0Ch    WORD    pointer to associated TCB (if applicable)
  1827.  0Eh    WORD    reserved
  1828. ---TCB---
  1829.  10h    WORD    TCB task ID
  1830.  12h    WORD    native context save area
  1831.  14h    WORD    start address of task
  1832.  16h    WORD    end address of task
  1833.  18h    BYTE    task priority
  1834.  19h    BYTE    task time slice
  1835.  1Ah    BYTE    "TCBWAIT" run status of task
  1836.  1Bh    BYTE    "TCBSTAT" what the task is waiting for
  1837.  1Ch    DWORD    address of polling routine
  1838.  20h    BYTE    error code from last function call
  1839.  21h 11 BYTEs    name of currently executing task
  1840.  2Ch  4 BYTEs    ???
  1841.  30h    BYTE    keyboard disabled if bit 1 set
  1842.  31h    BYTE    current shift state and toggles
  1843.  32h  2 BYTEs    ???
  1844.  34h    BYTE    current video mode
  1845.  35h    BYTE    current video page
  1846.  36h    BYTE    number of text columns per screen
  1847.  37h    BYTE    number of text rows per screen
  1848.  38h    WORD    length of video buffer
  1849.  3Ah    WORD    video page length
  1850.  3Ch    WORD    apge start address in video RAM
  1851.  3Eh  4 WORDs    current cursor positions for four screen pages
  1852.  46h  8 BYTEs    ???
  1853.  4Eh    WORD    current cursor type
  1854.  50h    BYTE    current palette setting
  1855.  51h    BYTE    original video mode
  1856.  52h    BYTE    start CRT row (00h or 01h)
  1857.  53h    BYTE    video RAM in task active
  1858.  54h    WORD    handle of video save area
  1859.  56h    WORD    page count of video save area
  1860.  58h    WORD    segment address of video save area
  1861.  5Ah    WORD    poitner to first Task File Block (see #2183)
  1862.  5Ch    WORD    pointer to first Current Directory Block (see #2186)
  1863.  5Eh    WORD    pointer to active Current Directory Block (see #2186)
  1864.  60h    BYTE    number of drives
  1865.  61h    BYTE    current drive (0=A:, etc.)
  1866.  62h    DWORD    disk transfer address
  1867.  66h  4 BYTEs    ???
  1868.  6Ah    BYTE    verify flag (nonzero = on)
  1869.  6Bh    BYTE    break flag (nonzero = on)
  1870.  6Ch    WORD    share/lock retry count
  1871.  6Eh    WORD    ticks between share/lock retries
  1872.  70h    BYTE    remote printer flags (see #2181)
  1873.  71h    BYTE    ETX/ACK delay count
  1874.  72h    WORD    spooler segment address
  1875.  74h  2 BYTEs    ???
  1876.  76h  3 BYTEs    remote printer redirection for LPT1 through LPT3 (see #2182)
  1877.  79h  2 BYTEs    ???
  1878.  7Bh    DWORD    offset of username in TCB
  1879.  7Fh    BYTE    current output class
  1880.  80h  7 BYTEs    protection access rights, 2 bits per class (writeable!)
  1881.  87h 122 BYTEs    ???
  1882. 101h    BYTE    TCB sleep downcounter value
  1883. 102h 20 BYTEs    ???
  1884. 116h    BYTE    last scan code
  1885.     ...
  1886. 5D0h    DWORD    far pointer to Device Driver Terminal's entry point
  1887. 5D4h    WORD    offset of logical screen
  1888. 5D6h    WORD    segment of logical screen
  1889. 5D8h    WORD    cursor offset within page
  1890. 5DAh    BYTE    screen columns
  1891. 5DBh    WORD    async port number (0000h = none)
  1892. 5DDh    DWORD    physical baudrate
  1893. 5E1h 19 BYTEs    reserved for Device Driver Terminal (DDT)
  1894.     ...
  1895. 7A6h    DWORD    far pointer to unregister calling chain
  1896.  
  1897. Bitfields for PC-MOS/386 remote printer flags:
  1898. Bit(s)    Description    (Table 2181)
  1899.  0    LPT1 to terminal
  1900.  1    LPT2 to terminal
  1901.  2    LPT3 to terminal
  1902.  3    escape to printer pending
  1903.  4    use XON/XOFF
  1904.  5    use ETX/ACK
  1905.  6    waiting for ACK or XON
  1906.  7    transparent printing on
  1907.  
  1908. (Table 2182)
  1909. Values for PC-MOS/386 remote printer redirection:
  1910.  00h    not redirected
  1911.  01h    redirected to COM1
  1912.  ...
  1913.  18h    redirected to COM24
  1914.  51h    redirected to LPT1
  1915.  52h    redirected to LPT2
  1916.  53h    redirected to LPT3
  1917.  
  1918. Format of PC-MOS/386 Task File Block:
  1919. Offset    Size    Description    (Table 2183)
  1920.  00h    BYTE    signature byte "H" if allocated from system memory pool
  1921.  01h    BYTE    header block ID, "F" = task file block
  1922.  02h    WORD    length of block in paragraphs
  1923.  04h    WORD    segment address of next header block (0000h if last)
  1924.  06h    WORD    segment address of previous header block (0000h if first)
  1925.  08h    WORD    pointer to next TCB
  1926.  0Ah    WORD    pointer to previous TCB
  1927.  0Ch    WORD    pointer to associated TCB (if applicable)
  1928.  0Eh    WORD    reserved
  1929. ---TFB---
  1930.  10h    WORD    segment address of next TFB
  1931.  12h    WORD    segment address of previous TFB
  1932.  14h    WORD    segment address of TFB's Global File Block (see #2185)
  1933.  16h    WORD    segment address of owner's PSP
  1934.  18h    WORD    file handle
  1935.  1Ah  3 BYTEs    ???
  1936.  1Dh    DWORD    file position
  1937.  21h  4 BYTEs    ???
  1938.  25h    BYTE    IOCTL flags (see #2184)
  1939.  26h  2 BYTEs    ???
  1940.  
  1941. Bitfields for PC-MOS/386 IOCTL flags:
  1942. Bit(s)    Description    (Table 2184)
  1943.  0    stdin
  1944.  1    stdout
  1945.  2    null device
  1946.  3    clock device
  1947.  4    reserved
  1948.  5    ASCII mode instead of binary
  1949.  6    EOF encountered on input
  1950.  7    device rather than file
  1951.  
  1952. Format of PC-MOS/386 Global File Block:
  1953. Offset    Size    Description    (Table 2185)
  1954.  00h    BYTE    signature byte "H" if allocated from system memory pool
  1955.  01h    BYTE    header block ID, "G" = global file block
  1956.  02h    WORD    length of block in paragraphs
  1957.  04h    WORD    segment address of next header block (0000h if last)
  1958.  06h    WORD    segment address of previous header block (0000h if first)
  1959.  08h    WORD    pointer to next TCB
  1960.  0Ah    WORD    pointer to previous TCB
  1961.  0Ch    WORD    pointer to associated TCB (if applicable)
  1962.  0Eh    WORD    reserved
  1963. ---GFB---
  1964.  10h 10 BYTEs    ???
  1965.  1Ah    WORD    file attribute
  1966.  1Ch    BYTE    ???
  1967.  1Dh    DWORD    address of device driver
  1968.  21h    WORD    first cluster
  1969.  23h    WORD    time of last modification
  1970.  25h    WORD    date of last modification
  1971.  27h    DWORD    size of file in bytes
  1972.  2Bh 11 BYTEs    ???
  1973.  36h 11 BYTEs    device name or FCB-format filename
  1974.  41h    WORD    segment address of TFB list
  1975.  43h    WORD    segment address of first RLB (see #2188) (0000h = none)
  1976.  45h    BYTE    flag: nonzero if GFB refers to character device
  1977.  46h    WORD    address of Block Device Block (see #2187)
  1978.  48h    WORD    sector of file's directory entry
  1979.  4Ah    WORD    high word of file's directory entry
  1980.  4Ch    WORD    ofsset of directory entry within sector
  1981.  
  1982. Format of PC-MOS/386 Current Directory Block:
  1983. Offset    Size    Description    (Table 2186)
  1984.  00h    BYTE    signature byte "H" if allocated from system memory pool
  1985.  01h    BYTE    header block ID, "C" = current directory block
  1986.  02h    WORD    length of block in paragraphs
  1987.  04h    WORD    segment address of next header block (0000h if last)
  1988.  06h    WORD    segment address of previous header block (0000h if first)
  1989.  08h    WORD    pointer to next TCB
  1990.  0Ah    WORD    pointer to previous TCB
  1991.  0Ch    WORD    pointer to associated TCB (if applicable)
  1992.  0Eh    WORD    reserved
  1993. ---CDB---
  1994.  10h    BYTE    drive number
  1995.  11h    BYTE    ???
  1996.  12h 64 BYTEs    directory name
  1997.  52h    WORD    first directory cluster (0000h = root)
  1998.  
  1999. Format of PC-MOS/386 Block Device Block:
  2000. Offset    Size    Description    (Table 2187)
  2001.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2002.  01h    BYTE    header block ID, "B" = block device block
  2003.  02h    WORD    length of block in paragraphs
  2004.  04h    WORD    segment address of next header block (0000h if last)
  2005.  06h    WORD    segment address of previous header block (0000h if first)
  2006.  08h    WORD    pointer to next TCB
  2007.  0Ah    WORD    pointer to previous TCB
  2008.  0Ch    WORD    pointer to associated TCB (if applicable)
  2009.  0Eh    WORD    reserved
  2010. ---BDB---
  2011.  10h    BYTE    logical drive
  2012.  11h    BYTE    unit passed to driver
  2013.  12h    WORD    sector size
  2014.  14h    BYTE    cluster mask
  2015.  15h    BYTE    cluster shift count
  2016.  16h    WORD    starting sector of first FAT
  2017.  18h    BYTE    number of FATs
  2018.  19h    WORD    number of root directories
  2019.  1Bh    WORD    sector number of first data sector (cluster 0002h)
  2020.  1Dh    WORD    number of clusters + 1 (number of highest data cluster)
  2021.  1Fh    BYTE    number of sectors in FAT
  2022.  20h    WORD    beginning root directory sector number
  2023.  22h    DWORD    device driver address
  2024.  26h    BYTE    media descriptor byte
  2025.  27h  5 BYTEs    ???
  2026.  2Ch    BYTE    flag: volume > 32MB
  2027.  2Dh    BYTE    ???
  2028.  2Eh    BYTE    number of sectors per cluster
  2029.  2Fh    WORD    number of clusters on device
  2030.  31h    WORD    number of free clusters (FFFFh = unknown)
  2031.  33h    WORD    root directory cluster number
  2032.  35h    WORD    pointer to alias/subst string
  2033.  37h    WORD    TCB segment address of owner (0000h = none)
  2034.  
  2035. Format of PC-MOS/386 Record Lock Block:
  2036. Offset    Size    Description    (Table 2188)
  2037.  00h    BYTE    signature byte "H" if allocated from system memory pool
  2038.  01h    BYTE    header block ID, "R" = record lock block
  2039.  02h    WORD    length of block in paragraphs
  2040.  04h    WORD    segment address of next header block (0000h if last)
  2041.  06h    WORD    segment address of previous header block (0000h if first)
  2042.  08h    WORD    pointer to next TCB
  2043.  0Ah    WORD    pointer to previous TCB
  2044.  0Ch    WORD    pointer to associated TCB (if applicable)
  2045.  0Eh    WORD    reserved
  2046. ---RLB---
  2047.  10h    WORD    segment address of owner's PSP
  2048.  12h    WORD    segment address of Global File Block (see #2185)
  2049.  14h    WORD    segment address of owner's Task File Block (see #2183)
  2050.  16h    DWORD    file offset of locked region start
  2051.  1Ah    DWORD    length of locked region
  2052.  1Eh    WORD    owner's handle for file
  2053. --------O-D407-------------------------------
  2054. INT D4 - PC-MOS/386 v3.0+ - WAIT FOR EVENT
  2055.     AH = 07h
  2056.     AL = events to monitor (see #2189)
  2057.     BX = number of timer ticks until timeout if AL bit 1 set
  2058.     CX = bitmap of IRQs to monitor if AL bit 2 set
  2059.         (bit 0 = IRQ0 .. bit 15 = IRQ15)
  2060.     DX = port to monitor if AL bit 3 set
  2061. Return: CF clear if successful
  2062.         AL = type of event which woke up task (see above)
  2063.         CX = IRQ (if any) which awakened task
  2064.         DX = port (if any) which awakened task
  2065.     CF set on error
  2066.         AX = error code (see #0789 at INT 21/AH=59h)
  2067. Note:    a device driver may make this call with AL=00h, which indicates that
  2068.       the driver is responsible for setting and clearing the TCBWAIT field
  2069.       in the TCB.  To put task to sleep, set TCBWAIT bits 2-0 to 001; to
  2070.       reawaken it, set bit 1 (leaving other bits unchanged)
  2071. SeeAlso: AH=04h,INT 16/AH=00h,INT 38
  2072.  
  2073. Bitfields for PC-MOS/386 events to monitor:
  2074. Bit(s)    Description    (Table 2189)
  2075.  0    keystroke
  2076.  1    timeout
  2077.  2    IRQ
  2078.  3    port access
  2079.  7    return status of user poll routine (other ignored if set)
  2080. --------O-D410-------------------------------
  2081. INT D4 - PC-MOS/386 v3.0+ - ENTER/LEAVE NATIVE 386 EXECUTION MODE
  2082.     AH = 10h
  2083.     AL = direction (00h return to V86 mode, 01h enter native mode)
  2084.     CX = length in bytes of Native Context Area ( >=1024 )
  2085.     DX = segment of Native Context Area
  2086. Return: CF clear if successful
  2087.         running in desired mode at instruction following INT D4 call
  2088.         all segment registers converted to appropriate selectors/segments
  2089.     CF set on error
  2090.         AX = error code (see #0789 at INT 21/AH=59h)
  2091. Note:    MS-DOS calls are available in protected mode
  2092. SeeAlso: AH=11h,AH=12h,AH=13h,INT 2F/AX=1687h,INT 67/AX=DE0Ch,INT 38
  2093. --------O-D411-------------------------------
  2094. INT D4 - PC-MOS/386 v3.0+ - ALLOCATE NATIVE MODE MEMORY BLOCK
  2095.     AH = 11h
  2096.     EBX = block length in bytes
  2097. Return: CF clear if successful
  2098.         EBX = number of bytes actually allocated
  2099.         ES = selector for allocated block
  2100.     CF set on error
  2101.         AX = error code (see #0789 at INT 21/AH=59h)
  2102. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2103.       system by The Software Link, Inc.
  2104. Note:    the memory must be released before the program terminates
  2105. SeeAlso: AH=10h,AH=12h,INT 38
  2106. --------O-D412-------------------------------
  2107. INT D4 - PC-MOS/386 v3.0+ - FREE NATIVE MODE MEMORY BLOCK
  2108.     AH = 12h
  2109.     ES = selector for block to free
  2110. Return: CF clear if successful
  2111.     CF set on error
  2112.         AX = error code (see #0789 at INT 21/AH=59h)
  2113. SeeAlso: AH=10h,AH=11h,AH=13h,INT 38
  2114. --------O-D413-------------------------------
  2115. INT D4 - PC-MOS/386 v5.01 - GET ALIAS FOR SELECTOR (NATIVE MODE ONLY)
  2116.     AH = 13h
  2117.     AL = type of alias selector (00h data, 01h stack, 02h code)
  2118.     BX = selector
  2119. Return: CF clear if successful
  2120.         AX = new selector or 0000h if BX selector not found
  2121.     CF set on error
  2122.         AX = error code (see #0789 at INT 21/AH=59h)
  2123. SeeAlso: AH=11h,AH=12h
  2124. --------O-D416-------------------------------
  2125. INT D4 - PC-MOS/386 v5.01 - SET/CLEAR IRQ RESERVATION
  2126.     AH = 16h
  2127.     AL = function (00h clear, 01h set reservation)
  2128.     CX = IRQ number
  2129. Return: AX = status
  2130.         (0000h successful, 0001h currently reserved by another task)
  2131. SeeAlso: AH=07h,INT 14/AH=11h"PC-MOS"
  2132. --------O-D419-------------------------------
  2133. INT D4 - PC-MOS/386 v5.01 - GET TASK ID
  2134.     AH = 19h
  2135. Return: BX = caller's task ID
  2136. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2137.       system by The Software Link, Inc.
  2138. SeeAlso: AH=1Dh,AH=1Eh
  2139. --------O-D41A-------------------------------
  2140. INT D4 - PC-MOS/386 v5.01 - GET/SET TASK PRIORITY
  2141.     AH = 1Ah
  2142.     AL = subfunction (00h read, 01h set, 02h get and set)
  2143.     BX = task ID (FFFFh for current task)
  2144.     CL = new priority value
  2145. Return: CF clear if successful
  2146.         CL = current priority value
  2147.     CF set on error
  2148.         AX = error code (see #0789 at INT 21/AH=59h)
  2149. SeeAlso: AH=1Bh,AH=1Ch
  2150. --------O-D41B-------------------------------
  2151. INT D4 - PC-MOS/386 v5.01 - GET/SET TIME SLICE
  2152.     AH = 1Bh
  2153.     AL = subfunction (00h read, 01h set, 02h get and set)
  2154.     BX = task ID (FFFFh for current task) (see AH=19h)
  2155.     CL = new time slice value
  2156. Return: CF clear if successful
  2157.         CL = current time slice value
  2158.     CF set on error
  2159.         AX = error code (see #0789 at INT 21/AH=59h)
  2160. SeeAlso: AH=1Ah,AH=1Ch
  2161. --------O-D41C-------------------------------
  2162. INT D4 - PC-MOS/386 v5.01 - GET/SET KEYBOARD MODE
  2163.     AH = 1Ch
  2164.     AL = subfunction (00h enable, 01h disable, 02h get mode)
  2165.     BX = task ID (FFFFh for current task)
  2166. Return: CF clear if successful
  2167.         CL = current keyboard state
  2168.     CF set on error
  2169.         AX = error code (INT 21/AH=59h)
  2170. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2171.       system by The Software Link, Inc.
  2172. SeeAlso: AH=1Ah,AH=1Bh
  2173. --------O-D41D-------------------------------
  2174. INT D4 - PC-MOS/386 v5.01 - GET CURRENT PROGRAM NAME
  2175.     AH = 1Dh
  2176.     BX = task ID (FFFFh for current task) (see AH=19h)
  2177.     ES:DI -> buffer for program name (see #2190)
  2178. Return: CF clear if successful
  2179.         ES:DI buffer filled
  2180.     CF set on error
  2181.         AX = error code (see #0789 at INT 21/AH=59h)
  2182. SeeAlso: AH=19h,AH=1Eh
  2183.  
  2184. Format of PC-MOS/386 program name buffer:
  2185. Offset    Size    Description    (Table 2190)
  2186.  00h  8 BYTEs    filename
  2187.  08h  3 BYTEs    extension
  2188. --------O-D41E-------------------------------
  2189. INT D4 - PC-MOS/386 v5.01 - GET CURRENT USERNAME AND SECURITY CLASS
  2190.     AH = 1Eh
  2191.     BX = task ID (FFFFh for current task)
  2192.     ES:DI -> 4-byte buffer for username
  2193. Return: CF clear if successful
  2194.         CL = security class
  2195.         20h (' ') none
  2196.         41h-5Ah ('A'-'Z') security level
  2197.         ES:DI buffer filled
  2198.     CF set on error
  2199.         AX = error code (see #0789 at INT 21/AH=59h)
  2200. SeeAlso: AH=19h,AH=1Dh
  2201. --------O-D41F-------------------------------
  2202. INT D4 - PC-MOS/386 v5.01 - GET TASK PARTITION INFORMATION
  2203.     AH = 1Fh
  2204.     BX = task ID (FFFFh for current task) (see AH=19h)
  2205. Return: CF clear if successful
  2206.         CX = start segment of task
  2207.         DX = ending segment of task
  2208.     CF set on error
  2209.         AX = error code (see #0789 at INT 21/AH=59h)
  2210. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2211.       system by The Software Link, Inc.
  2212. SeeAlso: AH=2Dh
  2213. --------O-D420-------------------------------
  2214. INT D4 - PC-MOS/386 v5.01 - GET PORT AND BAUDRATE INFORMATION
  2215.     AH = 20h
  2216.     BX = task ID (FFFFh for current task) (see AH=19h)
  2217. Return: CF clear if successful
  2218.         CX = port number (0000h if none)
  2219.         DI:SI = baudrate (if CX nonzero)
  2220.     CF set on error
  2221.         AX = error code (see #0789 at INT 21/AH=59h)
  2222. SeeAlso: INT 14/AH=0Ch"FOSSIL"
  2223. --------O-D421-------------------------------
  2224. INT D4 - PC-MOS/386 v5.01 - REMOVE A TASK
  2225.     AH = 21h
  2226.     BX = task ID (FFFFh for current task) (see AH=19h)
  2227. Return: CF clear if successful
  2228.         AX = ASCII percentage of System Memory Pool used
  2229.         (AH = tens digit, AL = ones digit)
  2230.         DS,SI destroyed
  2231.     CF set on error
  2232.         AX = error code (see #0789 at INT 21/AH=59h)
  2233. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2234.       system by The Software Link, Inc.
  2235. SeeAlso: AH=22h
  2236. --------O-D422-------------------------------
  2237. INT D4 - PC-MOS/386 v5.01 - ADD A TASK TO THE SYSTEM
  2238.     AH = 22h
  2239.     DS:SI -> addtask data structure (see #2192)
  2240. Return: CF clear if successful
  2241.         ES = segment address of the new task's TCB data structure
  2242.     CF set on error
  2243.         AX = error code (see #2191)
  2244. SeeAlso: AH=21h
  2245.  
  2246. (Table 2191)
  2247. Values for PC-MOS/386 error code:
  2248.  08h    insufficient memory
  2249.  0Bh    invalid addtask structure format
  2250.  12h    insufficient available space in system memory pool
  2251.  1Fh    general failure
  2252.  55h    already allocated
  2253.  57h    if task already in use or invalid parameter
  2254.  
  2255. Format of PC-MOS/386 addtask data structure:
  2256. Offset    Size    Description    (Table 2192)
  2257.  00h    WORD    task size in KB (min 16KB)
  2258.  02h    WORD    task ID (0000h for automatic selection)
  2259.  04h    BYTE    task class (' ' or 'A'-'Z')
  2260.  05h    DWORD    -> ASCIZ name of task startup batchfile
  2261.  09h    DWORD    -> task's terminal driver (0000000h = background task)
  2262.  0Dh    WORD    task port
  2263.  0Fh    DWORD    task baud rate
  2264.  13h    DWORD    (return) total extended memory
  2265.  17h    DWORD    (return) number of 4K extended memory pages allocated
  2266.  1Bh    WORD    (return) paragraphs of system memory pool allocated
  2267.  1Dh    WORD    (return) system memory pool size in paragraphs
  2268.  1Fh    WORD    (return) ASCII task percentage of system memory pool
  2269.  21h  3 BYTEs    reserved
  2270. --------O-D423-------------------------------
  2271. INT D4 - PC-MOS/386 v5.01 - CHANGE TERMINAL DRIVER
  2272.     AH = 23h
  2273.     BX = task ID (FFFFh for current task)
  2274.     DS:SI -> entry point of the new Device Driver Terminal
  2275. Return: CF clear if successful
  2276.     CF set on error
  2277.         AX = error code (see #0789 at INT 21/AH=59h)
  2278. --------O-D424-------------------------------
  2279. INT D4 U - PC-MOS/386 v5.01 - GET OPERATING SYSTEM SERIAL NUMBER
  2280.     AH = 24h
  2281. Return: DS:DX -> '$'-terminated string containing the serial number
  2282. --------O-D425-------------------------------
  2283. INT D4 - PC-MOS/386 v5.01 - IDENTIFY LOAD ADDRESS OF DEVICE DRIVER LOCATION
  2284.     AH = 25h
  2285.     DX = driver's CS value
  2286. Return: AX = segment address of driver in system memory pool
  2287.         (0000h if the driver is not within the system memory pool)
  2288. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2289.       system by The Software Link, Inc.
  2290. --------O-D426-------------------------------
  2291. INT D4 - PC-MOS/386 v5.01 - GET SYSTEM CONTROL BLOCK SEGMENT/SELECTOR
  2292.     AH = 26h
  2293. Return: DX = segment/selector of the System Control Block (see #2178)
  2294. Note:    this function supersedes AH=02h
  2295. SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah
  2296. --------O-D427-------------------------------
  2297. INT D4 - PC-MOS/386 v5.01 - GET TASK CONTROL BLOCK SEGMENT/SELECTOR
  2298.     AH = 27h
  2299.     BX = task ID (FFFFh if current task) (see AH=19h)
  2300. Return: CF clear if successful
  2301.         DX = segment/selector for the Task Control Block (see #2180)
  2302.     CF set on error
  2303.         AX = error code (INT 21/AH=59h)
  2304. Note:    this function supersedes AH=04h
  2305. SeeAlso: AH=26h,AH=28h,AH=29h,AH=2Ah
  2306. --------O-D428-------------------------------
  2307. INT D4 - PC-MOS/386 v5.01 - GET CONTROL BLOCK DATA FROM SCB OR TCB
  2308.     AH = 28h
  2309.     BX = offset into control block at which to start reading
  2310.     CX = number of bytes to read
  2311.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  2312.     ES:DI -> buffer for data
  2313. Return: CF clear if successful
  2314.     CF set on error
  2315.         AX = error code (see also INT 21/AH=59h)
  2316.         05h access denied due to an invalid segment/selector
  2317. SeeAlso: AH=26h,AH=27h,AH=29h,AH=2Ah
  2318. --------O-D429-------------------------------
  2319. INT D4 - PC-MOS/386 v5.01 - WRITE CONTROL BLOCK DATA INTO SCB OR TCB
  2320.     AH = 29h
  2321.     BX = offset into control block at which to start writing
  2322.     CX = number of bytes to write
  2323.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  2324.     DS:SI -> buffer containing data to be written
  2325. Return: CF clear if successful
  2326.     CF set on errro
  2327.         AX = error code (see also INT 21/AH=59h)
  2328.         05h access denied due to an invalid segment/selector
  2329. Note:     this function performs no bounds checking
  2330. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2331.       system by The Software Link, Inc.
  2332. SeeAlso: AH=26h,AH=27h,AH=28h,AH=2Ah
  2333. --------O-D42A-------------------------------
  2334. INT D4 - PC-MOS/386 v5.01 - SWAP CONTROL BLOCK DATA OF SCB OR TCB
  2335.     AH = 2Ah
  2336.     BX = offset into control block at which to start swap
  2337.     CX = number of bytes to swap
  2338.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  2339.     DS:SI -> buffer containing new data and to receive current data
  2340. Return: CF clear if successful
  2341.     CF set on error
  2342.         AX = error code (see also INT 21/AH=59h)
  2343.         05h access denied due to an invalid segment/selector
  2344. Note:    the interrupts are disabled during the swap to prevent corruption
  2345. SeeAlso: AH=26h,AH=27h,AH=28h,AH=29h
  2346. --------O-D42C-------------------------------
  2347. INT D4 - PC-MOS/386 v5.01 - GET/SET SPOOLER PARAMETERS
  2348.     AH = 2Ch
  2349.     AL = function
  2350.         00h set spooler timeout
  2351.         CX = timout value in seconds
  2352.         01h get spooler timeout
  2353.         Return: CX = current timeout in seconds
  2354.         02h get spooler parameters
  2355.         Return: CH = priority (00h-09h)
  2356.             CL = disposition (d, h, i, n, s)
  2357.             SI = class (a - z)
  2358.         03h set spooler parameters
  2359.         CH = priority (00h-09h)
  2360.         CL = disposition (d, h, i, n, s)
  2361.         SI = class (a - z)
  2362.         BX = task ID (FFFFh for current task)
  2363.         DX = LPT number
  2364. Return: CF clear if successful
  2365.     CF set on error
  2366.         AX = error code (see #0789 at INT 21/AH=59h)
  2367. SeeAlso: AH=00h,AH=02h,AH=03h
  2368. --------O-D42D-------------------------------
  2369. INT D4 - PC-MOS/386 v5.01 - GET MAXIMUM TASK SIZE
  2370.     AH = 2Dh
  2371. Return: DX = maximum task size in paragraphs
  2372.     BX = start address of task space
  2373. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  2374.       system by The Software Link, Inc.
  2375. SeeAlso: AH=1Fh,AH=22h
  2376. --------r-D5---------------------------------
  2377. INT D5 - IBM ROM BASIC - used while in interpreter
  2378. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2379.     BASIC.COM/BASICA.COM do not restore vector on termination
  2380. SeeAlso: INT 80"BASIC",INT D4"BASIC",INT D6"BASIC"
  2381. --------r-D5---------------------------------
  2382. INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2383. --------r-D6---------------------------------
  2384. INT D6 - IBM ROM BASIC - used while in interpreter
  2385. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2386.     BASIC.COM/BASICA.COM do not restore vector on termination
  2387. SeeAlso: INT 80"BASIC",INT D5"BASIC",INT D7"BASIC"
  2388. --------r-D6---------------------------------
  2389. INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2390. --------r-D7---------------------------------
  2391. INT D7 - IBM ROM BASIC - used while in interpreter
  2392. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2393.     BASIC.COM/BASICA.COM do not restore vector on termination
  2394. SeeAlso: INT 80"BASIC",INT D6"BASIC",INT D8"BASIC"
  2395. --------r-D7---------------------------------
  2396. INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2397. --------r-D8---------------------------------
  2398. INT D8 - IBM ROM BASIC - used while in interpreter
  2399. Notes:    called by ROM BASIC
  2400.     BASIC.COM/BASICA.COM do not restore vector on termination
  2401. SeeAlso: INT 80"BASIC",INT D7"BASIC",INT D9"BASIC"
  2402. --------r-D8---------------------------------
  2403. INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2404. --------H-D8---------------------------------
  2405. INT D8 - Screen Thief v1.00 - RELOCATED IRQ0
  2406. Range:    INT 78h to INT E0h, selected by commandline switch
  2407. Note:    Screen Thief relocates IRQs 0 through 7 to INT D8 to INT DF by default,
  2408.       but may be directed via a commandline switch to use any range
  2409.       starting at a multiple of 8 between 78h and E0h
  2410. SeeAlso: INT 08"IRQ0",INT 2D/AL=10h"Screen Thief",INT 50"DESQview"
  2411. SeeAlso: INT D9"Screen Thief"
  2412. --------r-D9---------------------------------
  2413. INT D9 - IBM ROM BASIC - used while in interpreter
  2414. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2415.     BASIC.COM/BASICA.COM do not restore vector on termination
  2416. SeeAlso: INT 80"BASIC",INT D8"BASIC",INT DA"BASIC"
  2417. --------r-D9---------------------------------
  2418. INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2419. --------H-D9---------------------------------
  2420. INT D9 - Screen Thief v1.00 - RELOCATED IRQ1
  2421. Range:    INT 79h to INT E1h, selected by commandline switch
  2422. Note:    (see INT D8"Screen Thief")
  2423. SeeAlso: INT 09"IRQ1",INT D8"Screen Thief",INT DA"Screen Thief"
  2424. --------r-DA---------------------------------
  2425. INT DA - IBM ROM BASIC - used while in interpreter
  2426. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  2427.     BASIC.COM/BASICA.COM do not restore vector on termination
  2428. SeeAlso: INT 80"BASIC",INT D9"BASIC",INT DB"BASIC"
  2429. --------r-DA---------------------------------
  2430. INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2431. --------H-DA---------------------------------
  2432. INT DA - Screen Thief v1.00 - RELOCATED IRQ2
  2433. Range:    INT 7Ah to INT E2h, selected by commandline switch
  2434. Note:    (see INT D8"Screen Thief")
  2435. SeeAlso: INT 0A"IRQ2",INT D9"Screen Thief",INT DB"Screen Thief"
  2436. --------r-DB---------------------------------
  2437. INT DB - IBM ROM BASIC - used while in interpreter
  2438. Notes:    called by ROM BASIC
  2439.     BASIC.COM/BASICA.COM do not restore vector on termination
  2440. SeeAlso: INT 80"BASIC",INT DA"BASIC",INT DC"BASIC"
  2441. --------r-DB---------------------------------
  2442. INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2443. --------H-DB---------------------------------
  2444. INT DB - Screen Thief v1.00 - RELOCATED IRQ3
  2445. Range:    INT 7Bh to INT E3h, selected by commandline switch
  2446. Note:    (see INT D8"Screen Thief")
  2447. SeeAlso: INT 0B"IRQ3",INT DA"Screen Thief",INT DC"Screen Thief"
  2448. --------u-DC---------------------------------
  2449. INT DC - PC/370 v4.1- - API
  2450. SeeAlso: INT 60"PC/370"
  2451. --------r-DC---------------------------------
  2452. INT DC - IBM ROM BASIC - used while in interpreter
  2453. Notes:    called by ROM BASIC
  2454.     BASIC.COM/BASICA.COM do not restore vector on termination
  2455. SeeAlso: INT 80"BASIC",INT DB"BASIC",INT DD"BASIC"
  2456. --------r-DC---------------------------------
  2457. INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  2458. --------H-DC---------------------------------
  2459. INT DC - Screen Thief v1.00 - RELOCATED IRQ4
  2460. Range:    INT 7Ch to INT E4h, selected by commandline switch
  2461. Note:    (see INT D8"Screen Thief")
  2462. SeeAlso: INT 0C"IRQ4",INT DB"Screen Thief",INT DD"Screen Thief"
  2463. --------r-DD---------------------------------
  2464. INT DD - IBM ROM BASIC - used while in interpreter
  2465. Notes:    called by ROM BASIC
  2466.     BASIC.COM/BASICA.COM do not restore vector on termination
  2467. SeeAlso: INT 80"BASIC",INT DC"BASIC",INT DE"BASIC"
  2468. --------r-DD---------------------------------
  2469. INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER
  2470.     BX = where to place keystrokes
  2471.         FFFFh insert before current buffer contents
  2472.         0000h replace current contents
  2473.         0001h insert after current contents
  2474.     CX = number of keystroke events to insert
  2475.     ES:SI -> data to be placed into buffer (list of WORD key codes)
  2476.         4000h + N = normal ASCII keystroke N (N = 00h to FFh)
  2477.         4100h + N = extended ASCII keystroke N (N = 03h to 84h)
  2478. SeeAlso: INT 16/AH=05h
  2479. --------H-DD---------------------------------
  2480. INT DD - Screen Thief v1.00 - RELOCATED IRQ5
  2481. Range:    INT 7Dh to INT E5h, selected by commandline switch
  2482. Note:    (see INT D8"Screen Thief")
  2483. SeeAlso: INT 0D"IRQ5",INT DC"Screen Thief",INT DE"Screen Thief"
  2484. --------r-DE---------------------------------
  2485. INT DE - IBM ROM BASIC - used while in interpreter
  2486. Notes:    called by ROM BASIC
  2487.     BASIC.COM/BASICA.COM do not restore vector on termination
  2488. SeeAlso: INT 80"BASIC",INT DD"BASIC",INT DF"BASIC"
  2489. --------r-DE---------------------------------
  2490. INT DE - APL*PLUS/PC - ???
  2491. Note:    appears to be the same as INT 16
  2492. --------H-DE---------------------------------
  2493. INT DE - Screen Thief v1.00 - RELOCATED IRQ6
  2494. Range:    INT 7Eh to INT E6h, selected by commandline switch
  2495. Note:    (see INT D8"Screen Thief")
  2496. SeeAlso: INT 0E"IRQ6",INT DD"Screen Thief",INT DF"Screen Thief"
  2497. --------b-DF---------------------------------
  2498. INT DF - Victor 9000 - SuperBIOS
  2499. --------r-DF---------------------------------
  2500. INT DF - IBM ROM BASIC - used while in interpreter
  2501. Notes:    called by ROM BASIC
  2502.     BASIC.COM/BASICA.COM do not restore vector on termination
  2503. SeeAlso: INT 80"BASIC",INT DE"BASIC",INT E0"BASIC"
  2504. --------r-DF---------------------------------
  2505. INT DF - APL*PLUS/PC - SAME AS INT 10
  2506. SeeAlso: INT 10
  2507. --------H-DF---------------------------------
  2508. INT DF - Screen Thief v1.00 - RELOCATED IRQ7
  2509. Range:    INT 7Fh to INT E7h, selected by commandline switch
  2510. Note:    (see INT D8"Screen Thief")
  2511. SeeAlso: INT 0F"IRQ7",INT DE"Screen Thief"
  2512. --------r-E0---------------------------------
  2513. INT E0 - IBM ROM BASIC - used while in interpreter
  2514. Notes:    called by ROM BASIC
  2515.     BASIC.COM/BASICA.COM do not restore vector on termination
  2516. SeeAlso: INT 80"BASIC",INT DF"BASIC",INT E1"BASIC"
  2517. --------r-E0---------------------------------
  2518. INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
  2519. SeeAlso: INT CF"APL"
  2520. --------v-E0---------------------------------
  2521. INT E0 - VIRUS - "Micro-128" - ???
  2522. Note:    Micro-128 also overwrites the upper half of the interrupt table
  2523. SeeAlso: INT 9E"VIRUS",INT F1"VIRUS"
  2524. --------O-E0---------------------------------
  2525. INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS
  2526.     CL = function number
  2527.     DS,DX = parameters
  2528. Return: as appropriate for function
  2529. Notes:    several functions are covered in more detail in following entries
  2530.     most of these calls are also supported by Digital Research's DOS Plus
  2531.       v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch,
  2532.       90h-92h,94h-97h,9Bh-ABh, and AEh-FFh
  2533. SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus"
  2534.  
  2535. (Table 2193)
  2536. Values for CP/M-86,DR Multiuser DOS function number:
  2537.  00h    terminate calling process (see also INT 21/AH=00h)
  2538.  01h    read a character
  2539.  02h    write character to default console (see also INT 21/AH=02h)
  2540.  03h    read character from default AUX (see also INT 21/AH=03h)
  2541.  04h    write character to default AUX (see also INT 21/AH=04h)
  2542.  05h    write character to default list device (see also INT 21/AH=05h)
  2543.  06h    perform raw I/O on default console (see also INT 21/AH=06h)
  2544.  07h    return default AUX input status
  2545.  08h    return default AUX output status
  2546.  09h    write string to default console (see also INT 21/AH=09h)
  2547.  0Ah    read string from default console (see also INT 21/AH=0Ah)
  2548.  0Bh    return default console input status (see also INT 21/AH=0Bh)
  2549.  0Ch    get BDOS release ID
  2550.  0Dh    reset all disk drives (see also INT 21/AH=0Dh)
  2551.  0Eh    set default drive (see also INT 21/AH=0Eh)
  2552.  0Fh    open file via FCB (see also INT 21/AH=0Fh,#0486)
  2553.  10h    close file via FCB (see also INT 21/AH=10h)
  2554.  11h    search for first matching file with FCB (see also INT 21/AH=11h)
  2555.  12h    search for next matching file with FCB (see also INT 21/AH=12h)
  2556.  13h    delete file via FCB (see also INT 21/AH=13h)
  2557.  14h    sequential read via FCB (see also INT 21/AH=14h)
  2558.  15h    sequential write via FCB (see also INT 21/AH=15h)
  2559.  16h    create file via FCB (see also INT 21/AH=16h)
  2560.  17h    rename file via FCB (see also INT 21/AH=17h)
  2561.  18h    get bit map of logged drives
  2562.  19h    get default drive (see also INT 21/AH=19h)
  2563.  1Ah    set DMA address offset
  2564.  1Bh    get default disk allocation vector (see also INT 21/AH=1Bh)
  2565.  1Ch    set default drive to read-only
  2566.  1Dh    get bit map of read-only drives
  2567.  1Eh    set file attributes via FCB (see also INT 21/AX=4301h)
  2568.  1Fh    get address of disk parameter block (see also INT 21/AH=1Fh)
  2569.  20h    get/set default user number
  2570.  21h    read random record via FCB (see also INT 21/AH=21h)
  2571.  22h    write random record via FCB (see also INT 21/AH=22h)
  2572.  23h    compute file size with FCB (see also INT 21/AH=23h)
  2573.  24h    get FCB random record number (see also INT 21/AH=24h)
  2574.  25h    reset specified drives
  2575.  26h    access specified drives (not in DR DOS Plus v2.1)
  2576.  27h    free specified drives
  2577.  28h    write random with FCB, zero fill (see also also INT 21/AH=28h)
  2578.  2Ah    lock records in FCB file (see also INT 21/AH=5Ch)
  2579.  2Bh    unlock records in FCB file (see also INT 21/AH=5Ch)
  2580.  2Ch    set BDOS multisector count
  2581.  2Dh    set BDOS error mode
  2582.  2Eh    get free space on disk
  2583.  2Fh    load, initialize, and jump to process (see also INT 21/AH=4Bh)
  2584.  30h    flush write-deferred buffers
  2585.  31h    get/set system variable (DOS Plus v2.1)
  2586.  32h    call BIOS (XIOS) character routine (see #2194)
  2587.  33h    set DMA address segment
  2588.  34h    get DMA buffer address
  2589.  35h    CP/M-86 allocate maximum memory
  2590.  36h    allocate maximum memory at specified segment
  2591.  37h    CP/M-86 allocate memory segment (see also INT 21/AH=48h)
  2592.  38h    allocate memory at specified segment
  2593.  39h    CP/M-86 free specified memory segment (see also INT 21/AH=49h)
  2594.  3Ah    CP/M-86 free all memory (not in DOS Plus v2.1)
  2595.  3Bh    load .CMD file into memory
  2596.  3Ch    (DOS Plus v2.1) call RSX program
  2597.  40h    (DR-NET) log on a server
  2598.  41h    (DR-NET) log off a server
  2599.  42h    (DR-NET) send a message
  2600.  43h    (DR-NET) receive a message
  2601.  44h    (DR-NET) get network status
  2602.  45h    (DR-NET) get requestor configuration table
  2603.  46h    (DR-NET) set compatibility attributes
  2604.  47h    (DR-NET) get server configuration table
  2605.  48h    (DR-NET) set network error mode
  2606.  49h    (DR-NET) attach network
  2607.  4Ah    (DR-NET) detach network
  2608.  4Bh    (DR-NET) set default password
  2609.  4Ch    (DR-NET) get-set long timeout
  2610.  4Dh    (DR-NET) get parameter table
  2611.  50h    (DR-NET) get network information
  2612.  53h    get current time (see also INT 21/AH=2Ch)
  2613.  54h    set current time (see also INT 21/AH=2Dh)
  2614.  55h    get binary system date (see also INT 21/AH=2Ah)
  2615.  56h    set system date (see also INT 21/AH=2Bh)
  2616.  57h    allocate system flag
  2617.  58h    deallocate system flag
  2618.  59h    reserve memory in global area
  2619.  5Ah    lock physical drive
  2620.  5Bh    unlock physical drive
  2621.  5Ch    search path for executable file
  2622.  5Dh    load and execute command (see also INT 21/AH=4Bh)
  2623.  5Eh    get/set process exit code
  2624.  5Fh    set country information
  2625.  60h    get country information
  2626.  63h    truncate FCB file (see also INT 21/AH=28h)
  2627.  64h    create/update directory label
  2628.  65h    get directory label
  2629.  66h    get FCB date stamp and password mode
  2630.  67h    write extended FCB
  2631.  68h    set system date and time
  2632.  69h    get system date and time in binary
  2633.  6Ah    establish password for file access
  2634.  6Bh    get OS serial number
  2635.  6Ch    (DOS Plus v2.1) get/set program return code
  2636.  6Dh    get/set console mode
  2637.  6Eh    get/set string delimiter
  2638.  6Fh    write block to default console
  2639.  70h    write block to default list device
  2640.  71h    execute DOS-compatible function
  2641.  74h    set FCB time and date stamps
  2642.  80h    allocate memory
  2643.  82h    deallocate memory
  2644.  83h    poll I/O device
  2645.  84h    wait on system flag
  2646.  85h    set system flag
  2647.  86h    create message queue
  2648.  87h    open message queue
  2649.  88h    delete message queue
  2650.  89h    read from message queue
  2651.  8Ah    conditionally read from message queue
  2652.  8Bh    write to message queue
  2653.  8Ch    conditionally write to message queue
  2654.  8Dh    delay calling process
  2655.  8Eh    call process dispatcher (yield CPU)
  2656.  8Fh    terminate calling process (same as function 00h)
  2657.  90h    create a process
  2658.  91h    set calling process' priority
  2659.  92h    attach to default console
  2660.  93h    detach from default console
  2661.  95h    assign default console to process
  2662.  96h    interpret and execute commandline
  2663.  97h    resident procedure library
  2664.  98h    parse ASCII string into FCB (see also INT 21/AH=29h)
  2665.  99h    return default console
  2666.  9Ah    get address of system data (SYSDAT)
  2667.  9Bh    get system time and date
  2668.  9Ch    return calling process' descriptor
  2669.  9Dh    terminate process by name or PD address
  2670.  9Eh    attach to default list device
  2671.  9Fh    detach from default list device
  2672.  A0h    select default list device
  2673.  A1h    conditionally attach to default list device
  2674.  A2h    conditionally attach to default console
  2675.  A3h    get OS version number
  2676.  A4h    get default list device
  2677.  A5h    attach to default AUX
  2678.  A6h    detach from default AUX
  2679.  A7h    conditionally attach to default AUX
  2680.  A8h    set default AUX
  2681.  A9h    return default AUX
  2682.  ACh    read block from default AUX
  2683.  ADh    (DOS Plus v2.1) write block to default AUX
  2684.  B0h    configure default AUX
  2685.  B1h    get/set device control parameters
  2686.  B2h    send Break through default AUX
  2687.  B3h    allocate physical memory
  2688.  B4h    free physical memory
  2689.  B5h    map physical memory
  2690.  B6h    nondestructive message queue read
  2691.  B7h    timed wait on system flag
  2692.  B8h    get/set I/O port mapping
  2693.  B9h    set list device timeout
  2694.  BAh    set AUX timeout value
  2695.  BBh    execute XIOS service
  2696.  BDh    (DR Multiuser DOS) delay
  2697.  FFh    return 80386 to native mode
  2698.  
  2699. (Table 2194)
  2700. Values for DOS Plus v2.1 XIOS functions:
  2701.  00h    terminate program
  2702.  01h    ???
  2703.  02h    check for console input status
  2704.  03h    read character from console
  2705.  04h    write character to console
  2706.  05h    write character to list device
  2707.  06h    write character to auxiliary device
  2708.  07h    read cahracter from auxiliary device
  2709.  0Fh    get list device status
  2710.  10h-14h reserved
  2711.  15h    device initialization
  2712.  16h    check console output status
  2713.  17h-7Fh reserved
  2714. ---BBC Acorn---
  2715.  80h    get XIOS version
  2716.  81h    get Tube semaphore
  2717.  82h    release Tube semaphore
  2718.  83h    select text/graphics
  2719.  84h    update B&W graphics rectangle
  2720.  85h    update color graphics rectangle
  2721.  86h    get/release/update mouse
  2722.  87h    get system error info
  2723.  88h    entry in CLOCK called by WatchDog RSP
  2724.  89h    BBC OSBYTE function
  2725.  8Ah    BBC OSWORD function
  2726.  
  2727. (Table 2195)
  2728. Values for DR Multiuser DOS Error Return Code:
  2729.  00h    no error
  2730.  01h    system call not implemented
  2731.  02h    illegal system call number
  2732.  03h    cannot find memory
  2733.  04h    illegal flag number
  2734.  05h    flag overrun
  2735.  06h    flag underrun
  2736.  07h    no unused Queue Descriptors
  2737.  08h    no free queue buffer
  2738.  09h    cannot find queue
  2739.  0Ah    queue in use
  2740.  0Ch    no free Process Descriptors
  2741.  0Dh    no queue access
  2742.  0Eh    empty queue
  2743.  0Fh    full queue
  2744.  10h    CLI queue missing
  2745.  11h    no 8087 in system
  2746.  12h    no unused Memory Descriptors
  2747.  13h    illegal console number
  2748.  14h    no Process Descriptor match
  2749.  15h    no console match
  2750.  16h    no CLI process
  2751.  17h    illegal disk number
  2752.  18h    illegal filename
  2753.  19h    illegal filetype
  2754.  1Ah    character not ready
  2755.  1Bh    illegal Memory Descriptor
  2756.  1Ch    bad return from BDOS load
  2757.  1Dh    bad return from BDOS read
  2758.  1Eh    bad return from BDOS open
  2759.  1Fh    null command
  2760.  20h    not owner of resource
  2761.  21h    no CSEG in load file
  2762.  22h    process Descriptor exists on Thread Root
  2763.  23h    could not terminate process
  2764.  24h    cannot attach to process
  2765.  25h    illegal list device number
  2766.  26h    illegal password
  2767.  28h    external termination occurred
  2768.  29h    fixup error upon load
  2769.  2Ah    flag set ignored
  2770.  2Bh    illegal auxilliary device number
  2771. --------O-E0----CL03-------------------------
  2772. INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM AUX DEVICE
  2773.     CL = 03h
  2774. Return: AL = ASCII character
  2775. Notes:    A_READ reads the next 8-bit character from the logical auxilliary
  2776.       input device (AUXn:); control is not returned to the calling
  2777.       process until a character has been read.
  2778.     if another process owns AUX, this call blocks until the device becomes
  2779.       available
  2780. SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh
  2781. --------O-E0----CL04-------------------------
  2782. INT E0 - DR Multiuser DOS - "A_WRITE" - WRITE CHARACTER TO AUX DEVICE
  2783.     CL = 04h
  2784.     DL = ASCII character
  2785. Return: nothing
  2786. Note:    if another process owns AUX, this call blocks until the device becomes
  2787.       available
  2788. SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh
  2789. --------O-E0----CL07-------------------------
  2790. INT E0 - DR Multiuser DOS - "A_STATIN" - GET INPUT STATUS OF AUX DEVICE
  2791.     CL = 07h
  2792. Return: AL = status
  2793.         00h not ready
  2794.         FFh character available
  2795. Desc:    determine whether the current AUX device has input available
  2796. SeeAlso: INT E0/CL=03h,INT E0/CL=08h
  2797. --------O-E0----CL08-------------------------
  2798. INT E0 - DR Multiuser DOS - "A_STATOUT" - GET OUTPUT STATUS OF AUX DEVICE
  2799.     CL = 08h
  2800. Return: AL = status
  2801.         00h not ready
  2802.         FFh ready for output
  2803. Desc:    determine whether the current AUX device is able to accept more output
  2804. SeeAlso: INT E0/CL=04h,INT E0/CL=07h
  2805. --------O-E0----CL59-------------------------
  2806. INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA
  2807.     CL = 59h
  2808.     DX = size in bytes
  2809. Return: AX = status
  2810.         FFFFh failed
  2811.         other successful
  2812.         ES:BX -> reserved memory
  2813. --------O-E0----CL86-------------------------
  2814. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
  2815.     CL = 86h
  2816.     DS:DX -> queue descriptor (see #2196)
  2817. Return: AX = status (0000h success, FFFFh failure)
  2818.     CX = error code (see #2195)
  2819. SeeAlso: INT E0/CL=87h
  2820.  
  2821. Format of DR Multiuser DOS queue descriptor:
  2822. Offset    Size    Description    (Table 2196)
  2823.  00h  2 WORDs    internal use, initialize to zeros
  2824.  04h    WORD    flags
  2825.  06h  8 BYTEs    queue name
  2826.  0Eh    WORD    length of message
  2827.  10h    WORD    number of messages
  2828.  12h  4 WORDs    internal use, initialize to zeros
  2829.  1Ah    WORD    offset in system area of buffer for messages
  2830. --------O-E0----CL87-------------------------
  2831. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE
  2832.     CL = 87h
  2833.     DS:DX -> queue parameter block (see #2197)
  2834. Return: AX = status (0000h success, FFFFh failure)
  2835.     CX = error code (see #2195)
  2836. SeeAlso: INT E0/CL=86h,INT E0/CL=89h
  2837.  
  2838. Format of DR Multiuser DOS queue parameter block:
  2839. Offset    Size    Description    (Table 2197)
  2840.  00h    WORD    internal use, initialize to zero
  2841.  02h    WORD    queue ID (set by INT E0/CL=87h)
  2842.  04h    WORD    internal use, initialize to zero
  2843.  06h    WORD    offset of queue message buffer
  2844.  08h  8 BYTEs    queue name
  2845. --------O-E0----CL89-------------------------
  2846. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE
  2847.     CL = 89h
  2848.     DS:DX -> queue parameter block (see #2197)
  2849. Return: AX = status (0000h success, FFFFh failure)
  2850.     CX = error code (see #2195)
  2851. SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh
  2852. --------O-E0----CL8A-------------------------
  2853. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE
  2854.     CL = 8Ah
  2855.     DS:DX -> queue parameter block (see #2197)
  2856. Return: AX = status (0000h success, FFFFh failure)
  2857.     CX = error code (see #2195)
  2858. SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch
  2859. --------O-E0----CL8B-------------------------
  2860. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE
  2861.     CL = 8Bh
  2862.     DS:DX -> queue parameter block (see #2197)
  2863. Return: AX = status (0000h success, FFFFh failure)
  2864.     CX = error code (see #2195)
  2865. SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch
  2866. --------O-E0----CL8C-------------------------
  2867. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE
  2868.     CL = 8Ch
  2869.     DS:DX -> queue parameter block (see #2197)
  2870. Return: AX = status (0000h success, FFFFh failure)
  2871.     CX = error code (see #2195)
  2872. SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh
  2873. --------O-E0----CL8E-------------------------
  2874. INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER
  2875.     CL = 8Eh
  2876.     DX = FFFFh (optional) to force dispatch
  2877. Return: nothing
  2878. Desc:    allow other processes of the same or higher priority to run if they
  2879.       are ready
  2880. Note:    if DX=FFFFh, a dispatch is forced even if no other process is ready
  2881. SeeAlso: INT E0/CL=91h
  2882. --------O-E0----CL91-------------------------
  2883. INT E0 - ConcCP/M,DR Multiuser DOS - "P_PRIORITY" - SET PROCESS PRIORITY
  2884.     CL = 91h
  2885.     DL = new priority (00h highest to FFh lowest)
  2886. Note:    sets priority of calling process; transient processes are initialized
  2887.       to priority C8h
  2888. SeeAlso: INT E0/CL=8Eh
  2889. --------O-E0----CL93-------------------------
  2890. INT E0 - ConcCP/M,DR Multiuser DOS - "C_DETACH" - DETACH FROM DEFAULT CONSOLE
  2891.     CL = 93h
  2892. Return: AX = status
  2893.         0000h successfully detached
  2894.         FFFFh detach failed
  2895. SeeAlso: INT E0/CL=A6h
  2896. --------O-E0----CLA5-------------------------
  2897. INT E0 - DR Multiuser DOS - "A_ATTACH" - ATTACH AUX DEVICE
  2898.     CL = A5h
  2899. Desc:    attaches the default auxiliary device to the calling process unless
  2900.       it is already attached to another process, in which case the call
  2901.       blocks until the device becomes available
  2902. Note:    this call should be used before attempting to read or write from
  2903.       the AUX device; however, the I/O calls internally call this function
  2904.       to ensure device ownership
  2905. SeeAlso: INT E0/CL=03h,INT E0/CL=04h,INT E0/CL=A6h,INT E0/CL=A7h,INT E0/CL=A8h
  2906. SeeAlso: INT E0/CL=ACh,INT E0/CL=ADh,INT E0/CL=B0h
  2907. --------O-E0----CLA6-------------------------
  2908. INT E0 - DR Multiuser DOS - "A_DETACH" - DETACH FROM AUX DEVICE
  2909.     CL = A6h
  2910. Return: AX = status
  2911.         0000h successfully detached
  2912.         FFFFh detach failed
  2913.     CX = error code
  2914. SeeAlso: INT E0/CL=93h,INT E0/CL=A5h,INT E0/CL=A7h
  2915. --------O-E0----CLA7-------------------------
  2916. INT E0 - DR Multiuser DOS - "A_CATTACH" - CONDITIONALLY ATTACH TO AUX DEVICE
  2917.     CL = A7h
  2918. Return: AX = status
  2919.         0000h attached
  2920.         FFFFh unable to attach
  2921. Desc:    attaches the default auxiliary device to the calling process if it is
  2922.       available
  2923. Note:    does not block if the device is already in use
  2924. SeeAlso: INT E0/CL=A5h,INT E0/CL=A6h,INT E0/CL=A8h,INT E0/CL=B0h
  2925. --------O-E0----CLA8-------------------------
  2926. INT E0 - DR Multiuser DOS - "A_SET" - SET DEFAULT AUX DEVICE NUMBER
  2927.     CL = A8h
  2928.     DL = auxiliary device number
  2929. Return: AX = status
  2930.         0000h successful
  2931.         FFFFh failed
  2932.     CX = error code
  2933. Desc:    specify which physical device will become AUX
  2934. SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h
  2935. --------O-E0----CLA9-------------------------
  2936. INT E0 - DR Multiuser DOS - "A_GET" - GET DEFAULT AUX DEVICE NUMBER
  2937.     CL = A9h
  2938. Return: AL = current default auxiliary device number
  2939. Desc:    determine which physical device is currently AUX
  2940. SeeAlso: INT E0/CL=A8h
  2941. --------O-E0----CLAC-------------------------
  2942. INT E0 - DR Multiuser DOS - "A_READBLK" - READ STRING FROM AUX DEVICE
  2943.     CL = ACh
  2944.     DS:DX -> character control block (CHCB) (see #2198)
  2945. Return: AX = number of characters read
  2946. Desc:    read characters from the default auxiliary (AUXn:) device into a buffer
  2947.       until the buffer is full or the device is no longer ready
  2948. Notes:    if the device is initially not ready, blocks until at least one
  2949.       character has been read
  2950.     if another process owns AUX, this call blocks until the device becomes
  2951.       available
  2952. SeeAlso: INT E0/CL=03h,INT E0/CL=A5h,INT E0/CL=ADh
  2953.  
  2954. Format of DR Multiuser DOS character control block (CHCB):
  2955. Offset    Size    Description    (Table 2198)
  2956.  00h    DWORD    pointer to character buffer
  2957.  04h    WORD    length of character buffer
  2958. --------O-E0----CLAD-------------------------
  2959. INT E0 - DR Multiuser DOS - "A_WRITEBLK" - WRITE STRING TO AUX DEVICE
  2960.     CL = ADh
  2961.     DS:DX -> character control block (see INT E0/CL=ACh)
  2962. Return: AX = number of characters written
  2963. Note:    does not return until at least one character has been written
  2964. SeeAlso: INT E0/CL=04h,INT E0/CL=A5h,INT E0/CL=ACh
  2965. --------O-E0----CLB0-------------------------
  2966. INT E0 - DR Multiuser DOS - "A_CONFIG" - GET/SET AUX DEVICE PARAMETERS
  2967.     CL = B0h
  2968.     DX:DX -> AUX device parameter block (see #2199)
  2969. Return: AX = status
  2970.         0000h successful
  2971.         parameter block updated
  2972.         FFFFh failed
  2973.         CX = error code
  2974. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  2975.  
  2976. Format of DR Multiuser DOS AUX device parameter block:
  2977. Offset    Size    Description    (Table 2199)
  2978.  00h    BYTE    function (00h get, 01h set)
  2979.  01h    BYTE    baud rate (see #2201) FFh = don't change/unknown
  2980.  02h    BYTE    parity (see #2200)
  2981.  03h    BYTE    stop bits (00h one, 01h 1.5, 02h two, FFh unknown/don't change)
  2982.  04h    BYTE    data bits (05h-08h or FFh unknown/don't change)
  2983.  05h    BYTE    handshake (00h none, 01h DTS/DSR, 02h RTS/CTS, 04h XON/XOFF,
  2984.         FFh unknown/don't change)
  2985.  06h    BYTE    XON character, FFh unknown/don't change
  2986.  07h    BYTE    XOFF character, FFh unknown/don't change
  2987.  
  2988. (Table 2200)
  2989. Values for parity:
  2990.  00h    none
  2991.  01h    odd
  2992.  02h    none
  2993.  03h    even
  2994.  04h    stick parity bit
  2995.  FFh    don't change/unknown
  2996.  
  2997. (Table 2201)
  2998. Values for baud rate:
  2999.  00h    50 baud
  3000.  01h    62.5 baud
  3001.  02h    75 baud
  3002.  03h    110 baud
  3003.  04h    134.5 baud
  3004.  05h    150 baud
  3005.  06h    200 baud
  3006.  07h    300 baud
  3007.  08h    600 baud
  3008.  09h    1200 baud
  3009.  0Ah    1800 baud
  3010.  0Bh    2000 baud
  3011.  0Ch    2400 baud
  3012.  0Dh    3600 baud
  3013.  0Eh    4800 baud
  3014.  0Fh    7200 baud
  3015.  10h    9600 baud
  3016.  11h    19200 baud
  3017.  12h    38400 baud
  3018.  13h    56000 baud
  3019.  14h    76800 baud
  3020.  15h    115200 baud
  3021. --------O-E0----CLB1-------------------------
  3022. INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
  3023.     CL = B1h
  3024.     DS:DX -> AUX device control block (see #2202)
  3025. Return: AX = status
  3026.         0000h successful
  3027.         control block updated
  3028.         FFFFh failed
  3029.         CX = error code
  3030. SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h
  3031.  
  3032. Format of DR Multiuser DOS AUX device control block:
  3033. Offset    Size    Description    (Table 2202)
  3034.  00h    BYTE    function (00h get, 01h set)
  3035.  01h    BYTE    DTR state (00h low, 01h high, FFh unknown/don't change)
  3036.  02h    BYTE    RTS state (00h low, 01h high, FFh unknown/don't change)
  3037.  03h    BYTE    DSR state (00h low, 01h high, FFh unknown/don't change)
  3038.  04h    BYTE    CTS state (00h low, 01h high, FFh unknown/don't change)
  3039.  05h    BYTE    DCD state (00h low, 01h high, FFh unknown/don't change)
  3040.  06h    BYTE    RI state (00h inactive, 01h active, FFh unknown/don't change)
  3041. --------O-E0----CLB2-------------------------
  3042. INT E0 - DR Multiuser DOS - "A_BREAK" - SEND BREAK TO AUX DEVICE
  3043.     CL = B2h
  3044.     DX = duration of break in system ticks (0001h-FFFFh)
  3045. Return: AX = status
  3046.         0000h successful
  3047.         break signal completed
  3048.         FFFFh failed
  3049.         CX = error code
  3050. Note:    if the AUX device is currently owned by another process, this call will
  3051.       block until the device becomes available
  3052. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  3053. --------O-E0----CLBD-------------------------
  3054. INT E0 - DR Multiuser DOS - "P_DELAY" - DELAY EXECUTION
  3055.     CL = BDh
  3056.     DX = delay in system ticks
  3057. Return: after the delay elapses
  3058. Notes:    the length of a system tick is installation-dependent (typically
  3059.       1/50 or 1/60 second); the length may be determined by reading the
  3060.       TICKSPERSEC value from the system data segment
  3061.     the actual delay before the process is rescheduled to run may be up to
  3062.       one tick longer than requested; the delay between rescheduling and
  3063.       actual execution cannot be predicted if higher-priority processes
  3064.       are awaiting a turn at the CPU
  3065. SeeAlso: INT 15/AH=86h,INT 1A/AX=FF01h,INT 2F/AX=1224h,INT 62/AX=0096h
  3066. --------g-E00000-----------------------------
  3067. INT E0 - PCROBOTS v1.41 - "SWAPTASK" - END CURRENT ROBOT'S TURN
  3068.     AX = 0000h
  3069. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3070.       which specially-written .COM or .EXE programs form robots battling
  3071.       each other in a user-defined arena
  3072. --------g-E00001-----------------------------
  3073. INT E0 - PCROBOTS v1.41 - "MOVEMENT" - START MOVING
  3074.     AX = 0001h
  3075.     BX = speed (0-maximum for robot)
  3076.     CX = direction (0-359 degrees)
  3077. Notes:    the speed will change to the specified value at the maximum
  3078.       acceleration the robot is capable of; if the robot is already moving
  3079.       faster than its maximum maneuverability speed, it will not be able
  3080.       to change direction
  3081.     this call also terminates the current robot's turn
  3082. SeeAlso: AX=0000h,AX=0002h,AX=0003h
  3083. --------g-E00002-----------------------------
  3084. INT E0 - PCROBOTS v1.41 - "SCAN" - SCAN FOR OTHER ROBOTS IN THE GIVEN DIRECTION
  3085.     AX = 0002h
  3086.     BX = direction (0-359 degrees)
  3087.     CX = resolution (0-45 degrees)
  3088. Return: AX = status
  3089.         FFFFh if nothing detected
  3090.         else robot ID (0-19)
  3091.         BX = range to detected robot
  3092. Notes:    the scan searches within CX degrees to either side of the specified
  3093.       direction
  3094.     the scanner will see right through walls, but shells will not pass
  3095.       through walls
  3096.     this call also terminates the current robot's turn
  3097. SeeAlso: AX=0000h,AX=0001h,AX=0003h
  3098. --------g-E00003-----------------------------
  3099. INT E0 - PCROBOTS v1.41 - "SHOOT" - FIRE A SHELL AT ANOTHER ROBOT
  3100.     AX = 0003h
  3101.     BX = direction (0-359 degrees)
  3102.     CX = range (0-700)
  3103. Return: AX = status (0000h not fired, else ID of shell fired)
  3104. Notes:    up to seven shells may be in flight for a robot at one time; the cannon
  3105.       takes 50 ticks to reload
  3106.     this call also terminates the current robot's turn
  3107. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=002Ch
  3108. --------g-E00010-----------------------------
  3109. INT E0 - PCROBOTS v1.41 - "GETXY" - GET ROBOT'S CURRENT POSITION
  3110.     AX = 0010h
  3111. Return: BX = current X coordinate (0-999)
  3112.     CX = current Y coordinate (0-999)
  3113. --------g-E00011-----------------------------
  3114. INT E0 - PCROBOTS v1.41 - "TRANSMIT" - SEND DATA TO ANOTHER ROBOT
  3115.     AX = 0011h
  3116.     BX = target robot ID
  3117.     CX = data to be sent
  3118. Return: AX = status (0000h data could not be sent, 0001h data sent)
  3119. Note:    this call costs one unit of battery power
  3120. --------g-E00012-----------------------------
  3121. INT E0 - PCROBOTS v1.41 - "RECEIVE" - GET DATA FROM OTHER ROBOTS
  3122.     AX = 0012h
  3123. Return: AX = status
  3124.         0000h no data available
  3125.         0001h data retrieved
  3126.         BX = sender's ID
  3127.         CX = data
  3128. Note:    each robot has a 20-word receive FIFO; if the FIFO is full, other
  3129.       robots will be unable to send more data until some is read
  3130. --------g-E00013-----------------------------
  3131. INT E0 - PCROBOTS v1.41 - "DAMAGE" - DETERMINE HOW MUCH DAMAGE SUSTAINED
  3132.     AX = 0013h
  3133. Return: BX = damage status
  3134. Note:    the initial value depends on configuration, but is typically 100; as
  3135.       the robot is damaged, it decreases
  3136. --------g-E00014-----------------------------
  3137. INT E0 - PCROBOTS v1.41 - "SPEED" - DETERMINE HOW FAST ROBOT IS MOVING
  3138.     AX = 0014h
  3139. Return: BX = current speed
  3140. --------g-E00015-----------------------------
  3141. INT E0 - PCROBOTS v1.41 - "BATTERY" - DETERMINE HOW MUCH BATTERY POWER LEFT
  3142.     AX = 0015h
  3143. Return: BX = current battery charge
  3144. Note:    the battery starts off with 1000 units of charge, and is constantly
  3145.       being charged by solar panels and constantly discharged by motion;
  3146.       the battery is charged at 4 units per turn and discharged at
  3147.       0.1*speed units per turn.
  3148. --------g-E00016-----------------------------
  3149. INT E0 - PCROBOTS v1.41 - "TICKS" - DETERMINE HOW LONG SINCE GAME STARTED
  3150.     AX = 0016h
  3151. Return: BX:CX = number of game ticks elapsed (not related to real time)
  3152. --------g-E00017-----------------------------
  3153. INT E0 - PCROBOTS v1.41 - "L_SIN" - GET SCALED SINE OF AN ANGLE
  3154.     AX = 0017h
  3155.     BX = angle (0-359 degrees)
  3156. Return: BX:CX = 100000*sine of angle
  3157. SeeAlso: AX=0018h,AX=0019h,AX=001Ah,AX=001Bh
  3158. --------g-E00018-----------------------------
  3159. INT E0 - PCROBOTS v1.41 - "L_COS" - GET SCALED COSINE OF AN ANGLE
  3160.     AX = 0018h
  3161.     BX = angle (0-359 degrees)
  3162. Return: BX:CX = 100000*cosine of angle
  3163. SeeAlso: AX=0017h,AX=0019h,AX=001Ah
  3164. --------g-E00019-----------------------------
  3165. INT E0 - PCROBOTS v1.41 - "L_TAN" - GET SCALED TANGENT OF AN ANGLE
  3166.     AX = 0019h
  3167.     BX = angle (0-359 degrees)
  3168. Return: BX:CX = 100000*tangent of angle
  3169. SeeAlso: AX=0017h,AX=0018h,AX=001Ah
  3170. --------g-E0001A-----------------------------
  3171. INT E0 - PCROBOTS v1.41 - "L_ATAN" - GET ANGLE GIVEN SCALED TANGENT
  3172.     AX = 001Ah
  3173.     BX:CX = 100000*tangent of an angle
  3174. Return: AX = angle (-90 to +90 degrees)
  3175. SeeAlso: AX=0017h,AX=0018h,AX=0019h
  3176. --------g-E0001B-----------------------------
  3177. INT E0 - PCROBOTS v1.41 - "SQRT" - DETERMINE SQUARE ROOT OF A NUMBER 
  3178.     AX = 001Bh
  3179.     BX:CX = value
  3180. Return: BX:CX = square root
  3181. SeeAlso: AX=0017h
  3182. --------g-E0001C-----------------------------
  3183. INT E0 - PCROBOTS v1.41 - "SET_PATTERN" - SPECIFY ROBOT'S DISPLAY IMAGE
  3184.     AX = 001Ch
  3185.     BX:CX -> pattern array
  3186. Note:    the pattern array consists of five bytes, the low five bits of each
  3187.       specifying the bit pattern for one line of the robot's screen display
  3188. --------g-E0001D-----------------------------
  3189. INT E0 - PCROBOTS v1.41 - "DEBUG_FLAG" - SET/CLEAR MARKERS NEXT TO ROBOT'S NAME
  3190.     AX = 001Dh
  3191.     BX = flag number (0 or 1)
  3192.     CX = new value (0 reset, 1 set)
  3193. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3194.       which specially-written .COM or .EXE programs form robots battling
  3195.       each other in a user-defined arena
  3196. Note:    the two flag markers may be used for any purpose, typically for
  3197.       debugging to provide a visual display of progress
  3198. --------g-E0001E-----------------------------
  3199. INT E0 - PCROBOTS v1.41 - "BUY_ARMOUR" - BUY OR SELL ARMOR FOR ROBOT
  3200.     AX = 001Eh
  3201.     BX = number of armor units to buy (negative to sell)
  3202. Note:    each armor unit is worth 50 battery units; the robot's armor rating
  3203.       will not go above its initial rating, so attempts to purchase more
  3204.       will waste battery units
  3205. SeeAlso: AX=001Fh
  3206. --------g-E0001F-----------------------------
  3207. INT E0 - PCROBOTS v1.41 - "BUY_SHELLS" - BUY ADDITIONAL CANNON SHELLS
  3208.     AX = 001Fh
  3209.     BX = number of shells to buy
  3210. Note:    each shell costs ten battery units
  3211. SeeAlso: AX=001Eh,AX=0020h
  3212. --------g-E00020-----------------------------
  3213. INT E0 - PCROBOTS v1.41 - "SHELLS LEFT" - DETERMINE HOW MANY SHELLS ROBOT HAS
  3214.     AX = 0020h
  3215. Return: BX = number of shells remaining
  3216. SeeAlso: AX=001Fh
  3217. --------g-E00021-----------------------------
  3218. INT E0 - PCROBOTS v1.41 - "GET LOCAL MAP"
  3219.     AX = 0021h
  3220.     BX:CX -> 81-byte buffer for map
  3221. Return: buffer filled with 9x9 area of map centered on robot's position
  3222.  
  3223. (Table 2203)
  3224. Values for PCROBOTS map squares:
  3225.  2Eh '.' empty square
  3226.  44h 'D' damaging trap
  3227.  52h 'R' refueling point
  3228.  58h 'X' wall
  3229. --------g-E00022-----------------------------
  3230. INT E0 - PCROBOTS v1.41 - "INVISIBILITY" - CONTROL ROBOT'S INVISIBILITY DEVICE
  3231.     AX = 0022h
  3232.     BX = new state (0000h become visible, 0001h become invisible)
  3233. Notes:    this function has no effect if the robot is not capable of invisibility
  3234.     the robot can only stay invisible for 100 turns, after which it will
  3235.       automatically become visible; it must also be remain visible for
  3236.       as many turns as it was invisible before it can turn invisible
  3237.       again
  3238. SeeAlso: AX=0024h,AX=0080h
  3239. --------g-E00023-----------------------------
  3240. INT E0 - PCROBOTS v1.41 - "GET_SHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
  3241.     AX = 0023h
  3242. Return: BX = status of last shell to land
  3243.         0000h missed completely
  3244.         0001h hit a wall
  3245.         0002h hit a robot within 50-square radius
  3246.         0003h hit a robot within 25-square radius
  3247.         0004h hit a robot within 5-square radius
  3248. --------g-E00024-----------------------------
  3249. INT E0 - PCROBOTS v1.41 - "IS_INVISIBLE" - DETERMINE WHETHER ROBOT IS INVISIBLE
  3250.     AX = 0024h
  3251. Return: BX = visibility (0000h visible, 0001h invisible)
  3252. SeeAlso: AX=0022h,AX=0080h
  3253. --------g-E00025-----------------------------
  3254. INT E0 - PCROBOTS v1.41 - "L_ATAN2" - GET ARCTANGENT
  3255.     AX = 0025h
  3256.     BX = Y
  3257.     CX = X
  3258. Return: AX = angle (arctangent of Y/X)
  3259. --------g-E00026-----------------------------
  3260. INT E0 - PCROBOTS v1.41 - "GET_ROBOT_ID" - DETERMINE CURRENT ROBOT'S IDENTIFIER
  3261.     AX = 0026h
  3262. Return: AX = robot ID
  3263. --------g-E00027-----------------------------
  3264. INT E0 - PCROBOTS v1.41 - "REGISTER_IFF" - REGISTER FRIEND/FOE IDENT STRING
  3265.     AX = 0027h
  3266.     BX:CX = ASCIZ IFF string
  3267. Note:    the IFF string may only be set once
  3268. SeeAlso: AX=0028h,AX=0029h
  3269. --------g-E00028-----------------------------
  3270. INT E0 - PCROBOTS v1.41 - "CHECK_IFF" - QUERY FRIEND/FOE IDENTIFICATION STRING
  3271.     AX = 0028h
  3272.     BX = robot ID to test
  3273. Return: AX = status
  3274.         0000h IFF strings match
  3275.         0001h IFF strings differ or invalid robot ID
  3276. SeeAlso: AX=0027h
  3277. --------g-E00029-----------------------------
  3278. INT E0 - PCROBOTS v1.41 - "REGISTER_NAME" - SPECIFY ROBOT'S NAME
  3279.     AX = 0029h
  3280.     BX:CX -> ASCIZ name string
  3281. Note:    the name may only be set once
  3282. SeeAlso: AX=0027h,AX=002Ah
  3283. --------g-E0002A-----------------------------
  3284. INT E0 - PCROBOTS v1.41 - "FIND_NAME" - SEARCH FOR ROBOT WITH GIVEN NAME
  3285.     AX = 002Ah
  3286.     BX:CX -> ASCIZ name string
  3287.     DX = first ID to check
  3288. Return: AX = robot ID or FFFFh if no robot with specified name
  3289. SeeAlso: AX=0028h,AX=0029h,AX=002Bh
  3290. --------g-E0002B-----------------------------
  3291. INT E0 - PCROBOTS v1.41 - "GET_TEAM_ID" - DETERMINE TEAM MEMBERSHIP OF ROBOT
  3292.     AX = 002Bh
  3293. Return: AX = team ID (0-2) or FFFFh if 'loner'
  3294. SeeAlso: AX=0029h
  3295. --------g-E0002C-----------------------------
  3296. INT E0 - PCROBOTS v1.41 - "GET_ASHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
  3297.     AX = 002Ch
  3298.     BX = shell ID
  3299. Return: AX = status
  3300.         0000h missed completely
  3301.         0001h hit a wall
  3302.         0002h hit a robot within a 50-square radius
  3303.         0003h hit a robot within a 25-square radius
  3304.         0004h hit a robot within a 5-square radius
  3305.         0005h shell not known (too old or not yet fired)
  3306.         0006h shell still in flight
  3307. SeeAlso: AX=0003h
  3308. --------g-E0002D-----------------------------
  3309. INT E0 - PCROBOTS v1.41 - "REGISTER_X" - SELECT AUTOMATIC X POSITION UPDATES
  3310.     AX = 002Dh
  3311.     BX:CX -> X word variable
  3312. Return: AX = status (0001h OK, 0000h problem with address)
  3313. Note:    after this call, PCROBOTS will automatically update the specified
  3314.       word whenever the robot moves
  3315. SeeAlso: AX=002Eh
  3316. --------g-E0002E-----------------------------
  3317. INT E0 - PCROBOTS v1.41 - "REGISTER_Y" - SELECT AUTOMATIC Y POSITION UPDATES
  3318.     AX = 002Eh
  3319.     BX:CX -> Y word variable
  3320. Return: AX = status (0001h OK, 0000h problem with address)
  3321. Note:    after this call, PCROBOTS will automatically update the specified
  3322.       word whenever the robot moves
  3323. SeeAlso: AX=002Dh
  3324. --------g-E00080-----------------------------
  3325. INT E0 - PCROBOTS v1.41 - "CONFIGURE" - CUSTOMIZE ROBOT
  3326.     AX = 0080h
  3327.     BX = basic configuration (see #2204)
  3328.     CX = advanced configuration (see #2205)
  3329. Return: AX = status (0001h OK, 0000h not first call in program)
  3330. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  3331.       which specially-written .COM or .EXE programs form robots battling
  3332.       each other in a user-defined arena
  3333. Notes:    a maximum of ten points may be allocated to the robot; if you attempt
  3334.       to allocate more, some items will be given a value of zero.  If this
  3335.       function is not called, each attribute is set to the default value
  3336.       of 2.
  3337.     if the invisibility option is chosen, the robot will start with only
  3338.       900 cannon shells instead of the default 1000
  3339.  
  3340. Bitfields for PCROBOTS basic configuration:
  3341. Bit(s)    Description    (Table 2204)
  3342.  0-3    maximum speed (0-4 = 50,75,100,150,200)
  3343.  4-7    maneuverability (0-4 = 20%,35%,50%,75%,100%)
  3344.  8-11    cannon range (0-4 = 300,500,700,1000,1500)
  3345.  12-15    robot armor (0-4 = 50,75,100,150,200)
  3346.  
  3347. Bitfields for PCROBOTS advanced configuration:
  3348. Bit(s)    Description    (Table 2205)
  3349.  0-2    robot acceleration (0-4 = 5,7,10,15,20)
  3350.  3    capable of invisibility
  3351. --------r-E1---------------------------------
  3352. INT E1 - IBM ROM BASIC - used while in interpreter
  3353. Notes:    called by ROM BASIC
  3354.     BASIC.COM/BASICA.COM do not restore vector on termination
  3355. --------N-E1---------------------------------
  3356. INT E1 - PC Cluster Disk Server Information (NOT A VECTOR!)
  3357. Desc:    points at a data table
  3358. SeeAlso: INT E2
  3359. --------r-E2---------------------------------
  3360. INT E2 - IBM ROM BASIC - used while in interpreter
  3361. Notes:    called by ROM BASIC
  3362.     BASIC.COM/BASICA.COM do not restore vector on termination
  3363. --------N-E2---------------------------------
  3364. INT E2 - PC Cluster Program - RELOCATED INT 1C
  3365. SeeAlso: INT 1C
  3366. --------r-E3---------------------------------
  3367. INT E3 - IBM ROM BASIC - used while in interpreter
  3368. Notes:    called by ROM BASIC
  3369.     BASIC.COM/BASICA.COM do not restore vector on termination
  3370. --------r-E40005-----------------------------
  3371. INT E4 - Logitech Modula v2.0 - MonitorEntry
  3372.     AX = 0005h
  3373.     BX = priority
  3374. SeeAlso: AX=0006h
  3375. --------r-E40006-----------------------------
  3376. INT E4 - Logitech Modula v2.0 - MonitorExit
  3377.     AX = 0006h
  3378. SeeAlso: AX=0005h
  3379. --------r-E4---------------------------------
  3380. INT E4 - IBM ROM BASIC - used while in interpreter
  3381. Notes:    called by ROM BASIC
  3382.     BASIC.COM/BASICA.COM do not restore vector on termination
  3383. --------r-E5---------------------------------
  3384. INT E5 - IBM ROM BASIC - used while in interpreter
  3385. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3386.     BASIC.COM/BASICA.COM do not restore vector on termination
  3387. --------r-E6---------------------------------
  3388. INT E6 - IBM ROM BASIC - used while in interpreter
  3389. Notes:    called by ROM BASIC
  3390.     BASIC.COM/BASICA.COM do not restore vector on termination
  3391. --------r-E7---------------------------------
  3392. INT E7 - IBM ROM BASIC - used while in interpreter
  3393. Notes:    called by ROM BASIC
  3394.     BASIC.COM/BASICA.COM do not restore vector on termination
  3395. --------r-E8---------------------------------
  3396. INT E8 - IBM ROM BASIC - used while in interpreter
  3397. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3398.     BASIC.COM/BASICA.COM do not restore vector on termination
  3399. --------r-E9---------------------------------
  3400. INT E9 - IBM ROM BASIC - used while in interpreter
  3401. Notes:    called by ROM BASIC
  3402.     BASIC.COM/BASICA.COM do not restore vector on termination
  3403. --------r-EA---------------------------------
  3404. INT EA - IBM ROM BASIC - used while in interpreter
  3405. Notes:    called by ROM BASIC
  3406.     BASIC.COM/BASICA.COM do not restore vector on termination
  3407. --------r-EB---------------------------------
  3408. INT EB - IBM ROM BASIC - used while in interpreter
  3409. Notes:    called by ROM BASIC
  3410.     BASIC.COM/BASICA.COM do not restore vector on termination
  3411. --------r-EC---------------------------------
  3412. INT EC - IBM ROM BASIC - used while in interpreter
  3413. Notes:    called by ROM BASIC
  3414.     BASIC.COM/BASICA.COM do not restore vector on termination
  3415. --------N-EC---------------------------------
  3416. INT EC - used by Alloy NTNX
  3417. --------r-EC---------------------------------
  3418. INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
  3419.     AX = function number (0000h to 0140h)
  3420.     STACK:    DWORD address to return to
  3421.         any arguments required by function
  3422. Return: STACK:    return address popped, but otherwise unchanged
  3423. Desc:    this is the interface from applications to the runtime system by Exact
  3424.       Automatisering B.V. of the Netherlands.  By using this interrupt,
  3425.       it can provide DLL-style capabilities under MS-DOS.
  3426. Note:    the interrupt handler removes the return address and flags placed on
  3427.       the stack by the INT EC, then jumps to the appropriate function
  3428. --------r-ED---------------------------------
  3429. INT ED - IBM ROM BASIC - used while in interpreter
  3430. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3431.     BASIC.COM/BASICA.COM do not restore vector on termination
  3432.     INT 80 through INT ED are modified but not restored by Direct Access
  3433.       v4.0, and may be left dangling by other programs written with the
  3434.       same version of compiled BASIC
  3435. SeeAlso: INT EC"BASIC",INT EE"BASIC"
  3436. --------r-EE---------------------------------
  3437. INT EE - IBM ROM BASIC - used while in interpreter
  3438. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  3439.     BASIC.COM/BASICA.COM do not restore vector on termination
  3440. SeeAlso: INT ED"BASIC",INT EE"BASIC"
  3441. --------r-EF---------------------------------
  3442. INT EF - BASIC - ORIGINAL INT 09 VECTOR
  3443. Note:    BASIC.COM/BASICA.COM do not restore vector on termination
  3444. SeeAlso: INT EE"BASIC",INT F0"BASIC"
  3445. --------O-EF----CX0473-----------------------
  3446. INT EF - GEM - INTERFACE
  3447.     CX = 0473h
  3448.     DS:DX -> GEM parameter block
  3449. --------r-F0---------------------------------
  3450. INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
  3451. Note:    BASICA.COM does not restore vector on termination
  3452. SeeAlso: INT EF"BASIC"
  3453. --------*-F1---------------------------------
  3454. INT F1 - reserved for user interrupt
  3455. --------s-F1---------------------------------
  3456. INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
  3457.     DS:BX -> '$'-terminated text string
  3458. Program: SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
  3459. --------s-F1---------------------------------
  3460. INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
  3461. SeeAlso: INT F2"SPEECH"
  3462. --------U-F1---------------------------------
  3463. INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
  3464. Return: AX:BX -> data area
  3465. Program: AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
  3466.       and COM2 in software
  3467. Note:    The installation check consists of testing for the following signature
  3468.       immediately preceding the interrupt handler: "JWBtvv" where 't' is
  3469.       either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
  3470.       version number
  3471. Index:    installation check;AQUEDUCT|installation check;PIPELINE
  3472. --------N-F1---------------------------------
  3473. INT F1 - NetWare Remote Boot - INSTALLATION CHECK (NOT A VECTOR!)
  3474. Note:    if this vector contains the value 5774654Eh ("NetW"), the remote boot
  3475.       BIOS extension is active, and access to the floppy disk is redirected
  3476.       to an image file in the server's SYS:LOGIN directory
  3477. --------v-F1---------------------------------
  3478. INT F1 - VIRUS - "Violetta" - ???
  3479. Note:    used but not chained by virus
  3480. SeeAlso: INT E0"VIRUS",INT FF"VIRUS"
  3481. --------*-F2---------------------------------
  3482. INT F2 - reserved for user interrupt
  3483. --------s-F2---------------------------------
  3484. INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
  3485. SeeAlso: INT F1"SPEECH"
  3486. ----------F2---------------------------------
  3487. INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API
  3488.     AH = function number (see #2206)
  3489.     ???
  3490. Return: ???
  3491. Program: ImageCapture is a product of International Computers
  3492. SeeAlso: INT F3"ICCTSR"
  3493.  
  3494. (Table 2206)
  3495. Values for ImageCapture function:
  3496.  01h    power up
  3497.  02h    power down
  3498.  03h    set controls
  3499.  04h    capture image
  3500.  05h    display image
  3501.  06h    read file
  3502.  07h    write file
  3503.  08h    write array
  3504.  09h    read pixel
  3505.  0Ah    write pixel
  3506.  0Bh    check if VGA present
  3507.  0Ch    set video mode
  3508.  0Dh    check for keystroke
  3509.  0Eh    delay
  3510. --------*-F3---------------------------------
  3511. INT F3 - reserved for user interrupt
  3512. --------s-F3---------------------------------
  3513. INT F3 - SoundBlaster - POINTER TO ECHO VALUE
  3514. Note:    this is not a vector, but a pointer to a DWORD containing the echo
  3515.       value selected with SET-ECHO.EXE
  3516. SeeAlso: INT 2F/AX=FBFBh
  3517. ----------F3---------------------------------
  3518. INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR
  3519. Program: ImageCapture is a product of International Computers
  3520. SeeAlso: INT F2"ICCTSR"
  3521. --------*-F4---------------------------------
  3522. INT F4 - reserved for user interrupt
  3523. --------T-F4---------------------------------
  3524. INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
  3525. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT FE"DoubleDOS"
  3526. --------*-F5---------------------------------
  3527. INT F5 - reserved for user interrupt
  3528. --------T-F5---------------------------------
  3529. INT F5 - DoubleDOS - ???
  3530. --------*-F6---------------------------------
  3531. INT F6 - reserved for user interrupt
  3532. --------T-F6---------------------------------
  3533. INT F6 - DoubleDOS - ???
  3534. --------*-F7---------------------------------
  3535. INT F7 - reserved for user interrupt
  3536. --------T-F7---------------------------------
  3537. INT F7 - DoubleDOS - ???
  3538. ----------F700-------------------------------
  3539. INT F7 - FSBBS 2.0 - CONFIGURATION RECORD
  3540.     AH = 00h
  3541.     AL = function
  3542.         00h get configuration record
  3543.         Return: DS:DX -> configuration record
  3544.         01h set configuration record
  3545.         02h get path for option
  3546.         DS:DX -> option name
  3547.         Return: DS:DX -> path
  3548.         03h determine whether configuration record set
  3549.         Return: AX = status
  3550.                 0000h set
  3551.                 0001h not yet set
  3552.         04h get link state
  3553.         Return: AX = state
  3554.                 0000h unlinked
  3555.                 0001h linked
  3556. Notes:    this information is preliminary and still subject to change
  3557.     all of the INT F7 calls for FSBBS are used for interprogram
  3558.       communication between the BBS kernel and the programs it spawns
  3559. SeeAlso: AH=01h
  3560. ----------F701-------------------------------
  3561. INT F7 - FSBBS 2.0 - USER RECORD
  3562.     AH = 01h
  3563.     AL = function
  3564.         00h get user record for user currently online
  3565.         Return: DS:DX -> user record
  3566.         01h set user record
  3567.         DS:DX -> user record
  3568. SeeAlso: AH=00h,AH=02h
  3569. ----------F702-------------------------------
  3570. INT F7 - FSBBS 2.0 - GET ACCOUNT NAME
  3571.     AH = 02h
  3572. Return: DS:DX -> 8-character blank-padded account name
  3573. SeeAlso: AH=01h
  3574. ----------F703-------------------------------
  3575. INT F7 - FSBBS 2.0 - TERMINAL NUMBER
  3576.     AH = 03h
  3577.     AL = function
  3578.         00h get terminal index number
  3579.         Return: DX = index number
  3580.         01h set terminal index number
  3581.         DX = terminal index
  3582. ----------F704-------------------------------
  3583. INT F7 - FSBBS 2.0 - PASSDATA BUFFER
  3584.     AH = 04h
  3585.     AL = function
  3586.         00h get PassData buffer contents
  3587.         DS:DX -> buffer for PassData contents
  3588.         01h set PassData contents
  3589.         DS:DX -> buffer containing new PassData
  3590.         CH = length of data in buffer
  3591. ----------F705-------------------------------
  3592. INT F7 - FSBBS 2.0 - TIMER FUNCTIONS
  3593.     AH = 05h
  3594.     AL = function
  3595.         00h get time remaining
  3596.         Return: DX = number of minutes remaining
  3597.         01h get current time
  3598.         Return: DS:DX -> 8-character time string
  3599.         02h increment time
  3600.         DX = number of additional minutes
  3601.         03h decrement time
  3602.         DX = number of minutes
  3603. SeeAlso: AH=06h
  3604. ----------F706-------------------------------
  3605. INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY
  3606.     AH = 06h
  3607.     AL = function
  3608.         00h determine whether function is available
  3609.         DX = index of function
  3610.         01h set function availability
  3611.         DX = index of function
  3612.         ???
  3613. SeeAlso: AH=05h,AH=07h
  3614. ----------F707-------------------------------
  3615. INT F7 - FSBBS 2.0 - DUMP FUNCTIONS
  3616.     AH = 07h
  3617.     AL = function
  3618.         00h get current dump mode
  3619.         Return: DL = mode
  3620.         01h set dump mode
  3621.         DL = mode
  3622. SeeAlso: AH=06h
  3623. --------*-F8---------------------------------
  3624. INT F8 - reserved for user interrupt
  3625. --------h-F8---------------------------------
  3626. INT F8 - TANDY??? - 100 HZ INTERRUPT
  3627. Note:    this vector is not used on the Tandy 1000TL
  3628. SeeAlso: INT FA"USART"
  3629. --------T-F8---------------------------------
  3630. INT F8 - DoubleDOS - ???
  3631. --------*-F9---------------------------------
  3632. INT F9 - reserved for user interrupt
  3633. --------T-F9---------------------------------
  3634. INT F9 - DoubleDOS - ???
  3635. --------*-FA---------------------------------
  3636. INT FA - reserved for user interrupt
  3637. --------h-FA---------------------------------
  3638. INT FA - TANDY??? - SERIAL PORT USART INTERRUPT
  3639. Note:    this vector is not used on the Tandy 1000TL
  3640. SeeAlso: INT F8"100 HZ",INT FB"USART"
  3641. --------T-FA---------------------------------
  3642. INT FA - DoubleDOS - TURN OFF TIMESHARING
  3643. SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
  3644. --------*-FB---------------------------------
  3645. INT FB - reserved for user interrupt
  3646. --------h-FB---------------------------------
  3647. INT FB - TANDY??? - KEYBOARD USART RECEIVE INTERRUPT
  3648. SeeAlso: INT FA"USART"
  3649. --------T-FB---------------------------------
  3650. INT FB - DoubleDOS - TURN ON TIMESHARING
  3651. SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
  3652. --------*-FC---------------------------------
  3653. INT FC - reserved for user interrupt
  3654. --------T-FC---------------------------------
  3655. INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
  3656. Return: ES = segment of display buffer
  3657. Desc:    determine the address of the virtual screen to which the program
  3658.       should write instead of the actual video memory, so that the
  3659.       multitasked programs do not interfere with each other's output
  3660. Note:    the display buffer may be moved if multitasking is enabled
  3661. SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
  3662. --------*-FD---------------------------------
  3663. INT FD - reserved for user interrupt
  3664. --------T-FD---------------------------------
  3665. INT FD - DoubleDOS - ???
  3666. --------S-FD---------------------------------
  3667. INT FD - TFPCX - INSTALLATION CHECK
  3668.     AH = function (see separate entries below)
  3669. Program: TFPCX is an interface between modem and terminal program for packet-
  3670.       radio communications
  3671. Notes:    the installation check consists of testing for the string "N5NX" three
  3672.       bytes beyond the interrupt handler; INT FD is the default, but may
  3673.       be changed, so the full installation check consists of scanning
  3674.       for the signature
  3675.     TFPCX returns AX=FFFFh on any unsupported function call
  3676. SeeAlso: AH=01h,AH=03h,AH=FEh
  3677. --------S-FD01-------------------------------
  3678. INT FD - TFPCX - TEST FOR CHARACTER WAITING
  3679.     AH = 01h
  3680. Return: AX = status
  3681.         0000h no characters waiting
  3682.         0001h character available for input
  3683. Program: TFPCX is an interface between modem and terminal program for packet-
  3684.       radio communications
  3685. SeeAlso: AH=02h
  3686. --------S-FD02-------------------------------
  3687. INT FD - TFPCX - GET CHARACTER
  3688.     AH = 02h
  3689. Return: AL = character
  3690. Notes:    this call is only allowed if AH=01h indicated that a character is
  3691.       available
  3692.     all available characters should be read before sending any additional
  3693.       characters
  3694. SeeAlso: AH=01h,AH=03h
  3695. --------S-FD03-------------------------------
  3696. INT FD - TFPCX - OUTPUT CHARACTER
  3697.     AH = 03h
  3698.     AL = character to send
  3699. SeeAlso: AH=02h
  3700. --------S-FDFE-------------------------------
  3701. INT FD - TFPCX - GET VERSION
  3702.     AH = FEh
  3703. Return: AH = major version
  3704.     AL = minor version
  3705. Program: TFPCX is an interface between modem and terminal program for packet-
  3706.       radio communications
  3707. SeeAlso: AH=01h,AH=03h
  3708. --------B-FE---------------------------------
  3709. INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
  3710. Note:    the ROM BIOS uses 0030h:0100h as the initial stack on startup, which
  3711.       is the last fourth of the interrupt vector table.  If the processor
  3712.       is returned to real mode via a hardware reset (the only possibility
  3713.       on an 80286, though there are a number of ways of generating one),
  3714.       then the BIOS startup code stacks three words on its scratch stack
  3715.       before determining that a return to real mode has been requested.
  3716.       As a result, INT FE and INT FF are corrupted.
  3717. SeeAlso: INT FF"XT286"
  3718. --------T-FE---------------------------------
  3719. INT FE - DoubleDOS - GIVE UP TIME
  3720.     AL = number of 55ms time slices to give away
  3721. Return: after other program (if active) has run
  3722. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
  3723. --------G-FE---------------------------------
  3724. INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER
  3725. SeeAlso: INT 3F
  3726. --------B-FF---------------------------------
  3727. INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
  3728. Note:    (see INT FE"XT286")
  3729. SeeAlso: INT FE"XT286"
  3730. --------b-FF---------------------------------
  3731. INT FF - Z100 - WARM BOOT
  3732. SeeAlso: INT 40"Z100"
  3733. --------Q-FF---------------------------------
  3734. INT FF U - QEMM-386.SYS v6.0+ - internal
  3735. Notes:    requires that a byte in the conventional-memory stub be set to the
  3736.       desired function number (00h through 0Ch)
  3737.  
  3738. (Table 2207)
  3739. Values for QEMM internal functions:
  3740.  00h    reflect back to Virtual86-mode interrupt handler (default)
  3741.  01h    ???
  3742.  02h    access DR7???
  3743.  03h    QPI upcall (see INT 67/AH=3Fh)
  3744.  04h    ???
  3745.  05h    ???
  3746.  06h    INT 15/AH=87h
  3747.  07h    EMS services (see INT 67/AH=40h-5Dh)
  3748.  08h    ???
  3749.  09h    QEMM exception handler
  3750.  0Ah    XMS services (see INT 2F/AX=4310h)
  3751.  0Bh    Virtual DMA Services (see INT 4B/AX=8102h)
  3752.  0Ch    ???
  3753. --------v-FF---------------------------------
  3754. INT FF - VIRUS - "Violetta" - ???
  3755. Note:    used but not chained by virus
  3756. SeeAlso: INT E0"VIRUS",INT F1"VIRUS"
  3757. --------!---Admin----------------------------
  3758. Highest Table Number = 2214
  3759. --------!---FILELIST-------------------------
  3760. Please redistribute all of the files comprising the interrupt list (listed at
  3761. the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
  3762. trio of archives named INTER42A through INTER42C (preferably the original
  3763. authenticated PKZIP archives), and the utility programs in a fourth archive
  3764. called INTER42D.ZIP
  3765.  
  3766. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3767. --------!---CONTACT_INFO---------------------
  3768. Internet: ralf@telerama.lm.com
  3769. UUCP: {uunet,harvard}!telerama.lm.com!ralf
  3770. FIDO: Ralf Brown 1:129/26.1
  3771.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  3772.     unless you address it to me)
  3773. CIS:  >INTERNET:ralf@telerama.lm.com
  3774.