home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / dos / tools / inter47 / interrup.d < prev    next >
Text File  |  1995-08-13  |  275KB  |  7,431 lines

  1. Interrupt List, part 4 of 13
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown
  3. --------B-1A00-------------------------------
  4. INT 1A - TIME - GET SYSTEM TIME
  5.     AH = 00h
  6. Return: CX:DX = number of clock ticks since midnight
  7.     AL = midnight flag, nonzero if midnight passed since time last read
  8. Notes:    there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
  9.     IBM and many clone BIOSes set the flag for AL rather than incrementing
  10.       it, leading to loss of a day if two consecutive midnights pass
  11.       without a request for the time (e.g. if the system is on but idle)
  12.     since the midnight flag is cleared, if an application calls this
  13.       function after midnight before DOS does, DOS will not receive the
  14.       midnight flag and will fail to advance the date
  15. SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch,INT 62/AX=0099h,MEM 0040h:006Ch
  16. --------B-1A01-------------------------------
  17. INT 1A - TIME - SET SYSTEM TIME
  18.     AH = 01h
  19.     CX:DX = number of clock ticks since midnight
  20. SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
  21. --------B-1A02-------------------------------
  22. INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
  23.     AH = 02h
  24. Return: CF clear if successful
  25.         CH = hour (BCD)
  26.         CL = minutes (BCD)
  27.         DH = seconds (BCD)
  28.         DL = daylight savings flag (00h standard time, 01h daylight time)
  29.     CF set on error (i.e. clock not running or in middle of update)
  30. Note:    this function is also supported by the Sperry PC, which predates the
  31.       IBM AT; the data is returned in binary rather than BCD on the Sperry,
  32.       and DL is always 00h
  33. SeeAlso: AH=00h,AH=03h,AH=04h,INT 21/AH=2Ch
  34. --------B-1A03-------------------------------
  35. INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
  36.     AH = 03h
  37.     CH = hour (BCD)
  38.     CL = minutes (BCD)
  39.     DH = seconds (BCD)
  40.     DL = daylight savings flag (00h standard time, 01h daylight time)
  41. Note:    this function is also supported by the Sperry PC, which predates the
  42.       IBM AT; the data is specified in binary rather than BCD on the
  43.       Sperry, and the value of DL is ignored
  44. SeeAlso: AH=01h,AH=03h,AH=05h,INT 21/AH=2Dh
  45. --------B-1A04-------------------------------
  46. INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
  47.     AH = 04h
  48. Return: CF clear if successful
  49.         CH = century (BCD)
  50.         CL = year (BCD)
  51.         DH = month (BCD)
  52.         DL = day (BCD)
  53.     CF set on error
  54. SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Ah
  55. --------b-1A04-------------------------------
  56. INT 1A - Sperry PC - GET REAL-TIME CLOCK DATE
  57.     AH = 04h
  58. Return: CF clear if successful
  59.         CL = year-1980
  60.         DH = month (binary)
  61.         DL = day (binary)
  62.     CF set on error
  63. SeeAlso: AH=02h,AH=04h,AH=05h"Sperry",INT 21/AH=2Ah
  64. --------B-1A05-------------------------------
  65. INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
  66.     AH = 05h
  67.     CH = century (BCD)
  68.     CL = year (BCD)
  69.     DH = month (BCD)
  70.     DL = day (BCD)
  71. SeeAlso: AH=04h,INT 21/AH=2Bh
  72. --------b-1A04-------------------------------
  73. INT 1A - Sperry PC - SET REAL-TIME CLOCK DATE
  74.     AH = 04h
  75.     CL = year-1980
  76.     DH = month (binary)
  77.     DL = day (binary)
  78. SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Bh
  79. --------B-1A06-------------------------------
  80. INT 1A - TIME - SET ALARM (AT,XT286,PS)
  81.     AH = 06h
  82.     CH = hour (BCD)
  83.     CL = minutes (BCD)
  84.     DH = seconds (BCD)
  85. Return: CF set on error (alarm already set or clock stopped for update)
  86.     CF clear if successful
  87. Notes:    the alarm occurs every 24 hours until turned off, invoking INT 4A each
  88.       time
  89.     the BIOS does not check for invalid values for the time, so the CMOS
  90.       clock chip's "don't care" setting (any values between C0h and FFh)
  91.       may be used for any or all three part.  For example, to create an
  92.       alarm once a minute, every minute, call with CH=C0h, CL=C0h, and
  93.       DH=00h.
  94. SeeAlso: AH=07h,INT 4A
  95. --------B-1A07-------------------------------
  96. INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
  97.     AH = 07h
  98. Return: alarm disabled
  99. Note:    does not disable the real-time clock's IRQ
  100. SeeAlso: AH=06h,INT 70
  101. --------B-1A08-------------------------------
  102. INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
  103.     AH = 08h
  104.     CH = hours in BCD
  105.     CL = minutes in BCD
  106.     DH = seconds in BCD
  107. SeeAlso: AH=09h
  108. --------B-1A09-------------------------------
  109. INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
  110.     AH = 09h
  111. Return: CH = hours in BCD
  112.     CL = minutes in BCD
  113.     DH = seconds in BCD
  114.     DL = alarm status
  115.         00h alarm not enabled
  116.         01h alarm enabled but will not power up system
  117.         02h alarm will power up system
  118. SeeAlso: AH=08h
  119. --------B-1A0A-------------------------------
  120. INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
  121.     AH = 0Ah
  122. Return: CF set on error
  123.     CF clear if successful
  124.         CX = count of days since Jan 1,1980
  125. SeeAlso: AH=04h,AH=0Bh
  126. --------B-1A0B-------------------------------
  127. INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
  128.     AH = 0Bh
  129.     CX = count of days since Jan 1,1980
  130. Return: CF set on error
  131.     CF clear if successful
  132. SeeAlso: AH=05h,AH=0Ah
  133. --------J-1A10-------------------------------
  134. INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
  135.     AH = 10h
  136.     ???
  137. Return: ???
  138. SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
  139. --------J-1A11-------------------------------
  140. INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
  141.     AH = 11h
  142.     ???
  143. Return: ???
  144. SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
  145. --------J-1A12-------------------------------
  146. INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
  147.     AH = 12h
  148.     ???
  149. Return: ???
  150. SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
  151. --------A-1A3601-----------------------------
  152. INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
  153.     AX = 3601h
  154. Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
  155.         ASCIZ string "WPCORP\0"
  156. Notes:    WordPerfect 5.0 will call this interrupt at start up to determine if a
  157.       third party product wants to interface with it.  The third party
  158.       product must intercept this interrupt and return the address of a
  159.       keyboard monitor routine.
  160.     Before checking for keyboard input, and after every key entered by the
  161.       user, Word Perfect will call the routine whose address was provided
  162.       in DS:SI with the following parameters:
  163.         Entry:    AX = key code or 0
  164.             BX = WordPerfect state flag
  165.         Exit:    AX = 0 or key code
  166.             BX = 0 or segment address of buffer with key codes
  167.     See the "WordPerfect 5.0 Developer's Toolkit" for further information.
  168. SeeAlso: INT 16/AX=5500h
  169. --------N-1A6108-----------------------------
  170. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
  171.     AX = 6108h
  172.     STACK:    WORD    conversation ID (0000h-0009h)
  173.         DWORD    pointer to message buffer
  174.         WORD    length of message
  175.         DWORD    pointer to reply buffer
  176.         WORD    length of reply buffer
  177.         WORD    0000h (use default "Cparams" structure)
  178. Return: AX = status (see #0505)
  179.     STACK unchanged
  180. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  181.       which implements the Simple Network Application Protocol
  182. SeeAlso: AX=6205h
  183.  
  184. (Table 0505)
  185. Values for SNAP.EXE status:
  186.  0000h    successful
  187.  F830h    "SNAP_ABORTED"
  188.  FC04h    "SNAP_SERVERDIED"
  189.  FC05h    "SNAP_RESEND"
  190.  FC06h    "SNAP_SELECTFAILED"
  191.  FC07h    "SNAP_WRONGVERSION"
  192.  FC08h    "SNAP_INVALIDACK"
  193.  FC09h    "SNAP_TIMEOUT"
  194.  FC0Ah    "SNAP_SERVERREJECT"
  195.  FC0Bh    "SNAP_NOREPLYDUE"
  196.  FC0Ch    "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
  197.  FC0Dh    "SNAP_NOINIT"
  198.  FC0Eh    "SNAP_SOCKETERROR"
  199.  FC0Fh    "SNAP_BUFFERLIMIT"
  200.  FC10h    "SNAP_INVALIDCID"
  201.  FC11h    "SNAP_INVALIDOP"
  202.  FC12h    "SNAP_XMITFAIL"
  203.  FC13h    "SNAP_NOMORERETRIES"
  204.  FC14h    "SNAP_BADPARMS"
  205.  FC15h    "SNAP_NOMEMORY"
  206.  FC16h    "SNAP_NOMORECONVS"
  207.  FFFFh    failed (invalid function/parameter)
  208. --------N-1A6205-----------------------------
  209. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
  210.     AX = 6205h
  211.     STACK:    WORD    conversation ID (0000h-0009h)
  212.         DWORD    pointer to message
  213.         WORD    length of message
  214.         WORD    0000h (use default "Cparms" structure)
  215. Return: AX = status (see #0505)
  216.     STACK unchanged
  217. SeeAlso: AX=6108h
  218. --------N-1A6308-----------------------------
  219. INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
  220.     AX = 6308h
  221.     STACK:    WORD    offset of ASCIZ "guardian"
  222.         WORD    offset of ASCIZ hostname
  223.         WORD    offset of ASCIZ server name
  224.         WORD    offset of ASCIZ userid
  225.         WORD    offset of ASCIZ password
  226.         WORD    offset of password length
  227.         WORD    offset of password type
  228.         WORD    offset of "Cparms" structure (see #0506)
  229. Return: ???
  230.     STACK unchanged
  231. Note:    all stacked offsets are within the SNAP data segment (use AX=6A01h
  232.       to allocate a buffer)
  233. SeeAlso: AX=6405h,AX=7202h
  234.  
  235. Format of SNAP.EXE Cparms structure:
  236. Offset    Size    Description    (Table 0506)
  237.  00h    WORD    retry delay in seconds
  238.  02h    WORD    timeout delay in seconds
  239.  04h    WORD    maximum buffer size
  240.  06h    WORD    encryption level
  241. --------N-1A6405-----------------------------
  242. INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
  243.     AX = 6405h
  244.     STACK:    WORD    conversation ID (0000h-0009h)
  245.         DWORD    pointer to message buffer
  246.         WORD    length of message
  247.         WORD    0000h (use default "Cparms" structure)
  248. Return: AX = status (see #0505)
  249.     STACK unchanged
  250. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  251.       which implements the Simple Network Application Protocol
  252. SeeAlso: AX=6308h
  253. --------N-1A6900-----------------------------
  254. INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
  255.     AX = 6900h
  256. Return: AX = value used for DS by resident code
  257. SeeAlso: AX=6A01h,AX=6F01h
  258. --------N-1A6A01-----------------------------
  259. INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
  260.     AX = 6A01h
  261.     STACK:    WORD    number of bytes to allocate
  262. Return: AX = offset of allocated buffer or 0000h if out of memory
  263.     STACK unchanged
  264. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  265.       which implements the Simple Network Application Protocol
  266. SeeAlso: AX=6B01h
  267. --------N-1A6B01-----------------------------
  268. INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
  269.     AX = 6B01h
  270.     STACK:    WORD    offset within SNAP data segment of previously allocated
  271.             buffer
  272. Return: STACK unchanged
  273. Note:    this call is a NOP if the specified offset is 0000h
  274. SeeAlso: AX=6A01h
  275. --------N-1A6C04-----------------------------
  276. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
  277.     AX = 6C04h
  278.     STACK:    WORD    offset within SNAP data segment of dest (nonzero)
  279.         WORD    segment of source buffer
  280.         WORD    offset of source buffer
  281.         WORD    number of bytes to copy
  282. Return: AX = offset of byte after last one copied to destination
  283.     STACK unchanged
  284. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  285.       which implements the Simple Network Application Protocol
  286. SeeAlso: AX=6D04h
  287. --------N-1A6D04-----------------------------
  288. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
  289.     AX = 6D04h
  290.     STACK:    WORD    offset within SNAP data segment of source buffer
  291.         WORD    segment of destination buffer
  292.         WORD    offset of destination buffer
  293.         WORD    number of bytes to copy
  294. Return: AX = offset of byte after last one copied from source
  295.     buffer filled
  296.     STACK unchanged
  297. SeeAlso: AX=6C04h
  298. --------N-1A6E01-----------------------------
  299. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
  300.     AX = 6E01h
  301.     STACK:    WORD    new value for ???
  302. Return: AX = old value of ???
  303.     STACK unchanged
  304. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  305.       which implements the Simple Network Application Protocol
  306. --------N-1A6F01-----------------------------
  307. INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
  308.     AX = 6F01h
  309.     STACK: WORD 0000h
  310. Return: AX = status
  311.         0000h SNAP is resident
  312.         other SNAP not present
  313.     STACK unchanged
  314. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  315.       which implements the Simple Network Application Protocol, and is
  316.       required by PCVENUS (a network shell).  The combination of SNAP and
  317.       PCVENUS allows the use of the Andrew File System as one or more
  318.       networked drives.
  319. SeeAlso: AX=6900h,AX=7400h
  320. --------N-1A7002-----------------------------
  321. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
  322.     AX = 7002h
  323.     STACK:    WORD    anchor number (0000h-0009h)
  324.         WORD    new value for the anchor
  325. Return: AX = status
  326.         0000h successful
  327.         FFFFh failed (top word on stack not in range 00h-09h)
  328.     STACK unchanged
  329. SeeAlso: AX=7101h
  330. --------N-1A7101-----------------------------
  331. INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
  332.     AX = 7101h
  333.     STACK:    WORD    anchor number (0000h-0009h)
  334. Return: AX = anchor's value
  335.     STACK unchanged
  336. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  337.       which implements the Simple Network Application Protocol
  338. SeeAlso: AX=7002h
  339. --------N-1A7202-----------------------------
  340. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
  341.     AX = 7202h
  342.     STACK:    WORD    conversation ID (0000h-0009h)
  343.         WORD    offset within resident data segment of "Cparms"
  344.               structure (see #0506)
  345. Return: AX = status???
  346.     STACK unchanged
  347. SeeAlso: AX=6308h
  348. --------N-1A7302-----------------------------
  349. INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
  350.     AX = 7302h
  351.     STACK:    WORD    conversation ID (0000h-0009h)
  352.         WORD    offset within resident data segment of ???
  353. Return: AX = ???
  354.     ???
  355.     STACK unchanged
  356. SeeAlso: AX=7400h
  357. --------N-1A7400-----------------------------
  358. INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
  359.     AX = 7400h
  360. Return: AX = version (AH=major, AL=minor)
  361. Note:    this call is only valid if SNAP is installed
  362. SeeAlso: AX=7302h,INT 1A/AX=6F01h
  363. --------N-1A75-------------------------------
  364. INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
  365.     AH = 75h
  366.     AL = ???
  367. Return: AX = ??? (0000h)
  368. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  369.       which implements the Simple Network Application Protocol
  370. --------N-1A76-------------------------------
  371. INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
  372.     AH = 76h
  373.     AL = ???
  374. Return: AX = ???
  375. --------N-1A77-------------------------------
  376. INT 1A - SNAP.EXE 3.4 - ???
  377.     AH = 77h
  378.     AL = ??? (at least 01h)
  379.     STACK:    WORD    ???
  380.         ???
  381. Return: ???
  382.     STACK unchanged
  383. --------N-1A7802-----------------------------
  384. INT 1A - SNAP.EXE 3.4 - ???
  385.     AX = 7802h
  386.     STACK:    WORD    ???
  387.         WORD    ???
  388. Return: ???
  389.     STACK unchanged
  390. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  391.       which implements the Simple Network Application Protocol
  392. --------s-1A7F-------------------------------
  393. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  394.     AH = 7Fh
  395.     ???
  396. Return: ???
  397. Note:    this function is not supported by the Tandy 1000SL/TL BIOS
  398. SeeAlso: AH=80h,AH=83h,AH=85h
  399. --------s-1A80-------------------------------
  400. INT 1A - PCjr, Tandy 2500???, Tandy 1000SL/TL - SET UP SOUND MULTIPLEXOR
  401.     AH = 80h
  402.     AL = 00h source is 8253 channel 2
  403.          01h source is cassette input
  404.          02h source is I/O channel "Audio IN"
  405.          03h source is sound generator chip
  406. Note:    although documented in the 1000TL Technical Reference, the 1000TL
  407.       BIOS has just an IRET for this call
  408. SeeAlso: AH=7Fh,AH=83h
  409. --------X-1A80-------------------------------
  410. INT 1A - PCMCIA Socket Services v1.00 - GET NUMBER OF ADAPTERS
  411.     AH = 80h
  412. Return: CF clear if successful
  413.         CX = 5353h ('SS') if Socket Services installed
  414.         AL = number of adapters present (0-16)
  415.         AH destroyed
  416.     CF set on error
  417.         AH = error code (see #0507)
  418. SeeAlso: AH=83h"PCMCIA"
  419.  
  420. (Table 0507)
  421. Values for PCMCIA error codes:
  422.  01h    "BAD_ADAPTER" nonexistent adapter
  423.  02h    "BAD_ATTRIBUTE" invalid attribute specified
  424.  03h    "BAD_BASE" invalid system memory base address
  425.  04h    "BAD_EDC" invalid EDC generator specified
  426.  05h    "BAD_INDICATOR" invalid indicator specified
  427.  06h    "BAD_IRQ" invalid IRQ channel specified
  428.  07h    "BAD_OFFSET" invalid PCMCIA card offset specified
  429.  08h    "BAD_PAGE" invalid page specified
  430.  09h    "BAD_READ" unable to complete request
  431.  0Ah    "BAD_SIZE" invalid window size specified
  432.  0Bh    "BAD_SOCKET" nonexistent socket specified
  433.  0Ch    "BAD_TECHNOLOGY" unsupported Card Technology for writes
  434.  0Dh    "BAD_TYPE" unavailable window type specified
  435.  0Eh    "BAD_VCC" invalid Vcc power level index specified
  436.  0Fh    "BAD_VPP" invalid Vpp1 or Vpp2 power level index specified
  437.  10h    "BAD_WAIT" invalid number of wait states specified
  438.  11h    "BAD_WINDOW" nonexistent window specified
  439.  12h    "BAD_WRITE" unable to complete request
  440.  13h    "NO_ADAPTERS" no adapters installed, but Socket Services is present
  441.  14h    "NO_CARD" no card in socket
  442.  15h    function not supported
  443.  16h    invalid mode
  444.  17h    invalid speed
  445.  18h    busy
  446. --------X-1A81-------------------------------
  447. INT 1A - PCMCIA Socket Services v1.00 - REGISTER STATUS CHANGE CALLBACK
  448.     AH = 81h
  449.     DS:DX -> callback routine (see #0508) or 0000h:0000h to disable
  450. Return: CF clear if successful
  451.         AH destroyed
  452.     CF set on error
  453.         AH = error code (see #0507)
  454. Note:    the callback will be invoked on any socket changes whose notification
  455.       has not been disabled with the status change enable mask; it may be
  456.       invoked either while processing a hardware interrupt from the adapter
  457.       or while processing the following Socket Services request
  458. SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA"
  459.  
  460. (Table 0508)
  461. Values PCMCIA callback routine is invoked with:
  462.     AL = adapter number
  463.     BH = status change interrupt enable mask (see #0509)
  464.     BL = socket number
  465.     DH = current socket status (see #0510)
  466.     DL = current card status (see #0511)
  467. Return: all registers preserved
  468. Notes:    the callback may be invoked during a hardware interrupt, and may not
  469.       call on Socket Services
  470.     the callback will be invoked once for each socket with a status change
  471.  
  472. Bitfields for PCMCIA status change interrupt enable mask:
  473. Bit(s)    Description    (Table 0509)
  474.  7    card detect change
  475.  6    ready change
  476.  5    battery warning change
  477.  4    battery dead change
  478.  3    insertion request
  479.  2    ejection request
  480.  1-0    reserved (0)
  481.  
  482. Bitfields for PCMCIA current socket status:
  483. Bit(s)    Description    (Table 0510)
  484.  7    card changed
  485.  6    reserved (0)
  486.  5    card insertion complete
  487.  4    card ejection complete
  488.  3    card insertion request pending
  489.  2    card ejection request pending
  490.  1    card locked
  491.  0    reserved (0)
  492.  
  493. Bitfields for PCMCIA current card status:
  494. Bit(s)    Description    (Table 0511)
  495.  7    card detect
  496.  6    ready
  497.  5    battery voltage detect 2 (battery warning)
  498.  4    battery voltage detect 1 (battery dead)
  499.  3-1    reserved (0)
  500.  0    write protected
  501. --------s-1A8100-----------------------------
  502. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
  503.     AX = 8100h
  504. Return: AL > 80h if supported
  505.     AX = 00C4h if supported (1000SL/TL)
  506.         CF set if sound chip is busy
  507.         CF clear  if sound chip is free
  508. Note:    the value of CF is not definitive; call this function until CF is
  509.       clear on return, then call AH=84h"Tandy"
  510. --------s-1A82-------------------------------
  511. INT 1A - Tandy 2500???, Tandy 1000SL/TL - DIGITAL SOUND - RECORD SOUND
  512.     AH = 82h
  513.     ES:BX -> buffer for sound samples
  514.     CX = length of buffer
  515.     DX = transfer rate (1-4095, 1 is fastest)
  516. Return: AH = 00h
  517.     CF set if sound busy
  518.     CF clear if sound chip free
  519. Note:    the value in DX should be 1/10 the corresponding value for
  520.       INT 1A/AH=83h on the 1000TL, 1/11.5 on the 1000SL.  Call
  521.       INT 1A/AX=8100h and INT 1A/AH=84h before invoking this function.
  522.     The BIOS issues an INT 15/AX=91FBh when the input is complete
  523.     DMA across a 64K boundary is masked by the BIOS
  524. --------X-1A82-------------------------------
  525. INT 1A - PCMCIA Socket Services v1.00 - REGISTER CARD TECHNOLOGY CALLBACK
  526.     AH = 82h
  527.     DS:DX -> callback routine (see #0512) or 0000h:0000h
  528. Return: CF clear if successful
  529.         AH destroyed
  530.     CF set on error
  531.         AH = error code (see #0507)
  532. Note:    the callback is invoked on a Write Multiple request with an unsupported
  533.       card technology type
  534. SeeAlso: AH=81h"PCMCIA",AH=94h
  535.  
  536. (Table 0512)
  537. Values PCMCIA callback routine is invoked with:
  538.     ES:AX -> Low-Level Socket Services Routines (see #0514)
  539.     BH = socket attributes (see #0513)
  540.     CX = number of bytes or words to write
  541.     DS:SI -> data buffer to be written
  542.     DX:DI -> 26-bit linear card address
  543.     BP = card technology type
  544. Return: CF clear if successful
  545.     CF set on error
  546.         AH = error code (07h,0Ch,12h,14h) (see #0507)
  547.  
  548. Bitfields for PCMCIA socket attributes:
  549. Bit(s)    Description    (Table 0513)
  550.  7-4    reserved (0)
  551.  3    packed buffer
  552.  2    even bytes only (only valid if 1 set)
  553.  1    data width (clear = byte, set = word)
  554.  0    memory type (clear = common, set = attribute)
  555.  
  556. Format of PCMCIA Low-Level Socket Services Routines:
  557. Offset    Size    Description    (Table 0514)
  558.  00h    WORD    offset of Write Many routine (see #0515)
  559.  02h    WORD    offset of Write One routine (see #0516)
  560.  04h    WORD    offset of Read One routine (see #0517)
  561.  06h    WORD    offset of Increment Offset routine (see #0518)
  562.  08h    WORD    offset of Set Offset routine (see #0519)
  563.  0Ah    WORD    offset of Get Status routine (see #0520)
  564.  
  565. (Table 0515)
  566. Call Write Many routine with:
  567.     BH = socket attributes (see #0513)
  568.     CX = number of bytes or words to write
  569.     DS:SI -> data to be written
  570. Return: CF clear if successful
  571.     CF set on error
  572.  
  573. (Table 0516)
  574. Call Write One routine with:
  575.     AL/AX = data to be written
  576.     BH = socket attributes (see #0513)
  577. Return: CF clear if successful
  578.     CF set on error
  579.  
  580. (Table 0517)
  581. Call Read One routine with:
  582.     BH = socket attributes (see #0513)
  583. Return: CF clear if successful
  584.         AL/AX = data read
  585.     CF set on error
  586.  
  587. (Table 0518)
  588. Call Increment Offset routine with:
  589.     BH = socket attributes (see #0513)
  590. Return: CF clear if successful
  591.     CF set on error
  592.  
  593. (Table 0519)
  594. Call Set Offset routine with:
  595.     DX:DI = new offset address
  596. Return: CF clear if successful
  597.     CF set on error
  598.  
  599. (Table 0520)
  600. Call Get Status routine with:
  601.     nothing
  602. Return: AL = current card status (see #0511)
  603. --------s-1A83-------------------------------
  604. INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
  605.     AH = 83h
  606.     AL = volume (0=silence, 7=highest)
  607.     CX = number of bytes to play
  608.     DX = time between sound samples (multiples of 273 nanoseconds)
  609.         only bits 11-0 used
  610.     ES:BX -> sound data (array of 8-bit unsigned PCM samples)
  611. Return: AH = 00h
  612.     CF set if sound is busy
  613.     CF clear if sound chip is free
  614. Notes:    this call returns immediately while the sound plays in the
  615.       background; the sound chip is clocked at 3.57 MHz, with the low 12
  616.       bits of DX specifying the clock divisor
  617.     The BIOS appears to call INT 15/AX=91FBh when the sound device
  618.       underflows to allow another INT 1A/AH=83h for seamless playing of
  619.       long sounds.
  620. SeeAlso: AH=84h"Tandy",INT 15/AH=91h
  621. --------X-1A83-------------------------------
  622. INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET SERVICES VERSION NUMBER
  623.     AH = 83h
  624.     AL = adapter number
  625. Return: CF clear if successful
  626.         AX = Socket Services version (BCD)
  627.         BX = implementation version (BCD)
  628.         CX = 5353h ("SS")
  629.         DS:SI -> ASCIZ implementor description
  630.     CF set on error
  631.         AH = error code (01h) (see #0507)
  632. Note:    the current version (from the Revision A.00 documentation) of Socket
  633.       Services is 1.00 (AX=0100h)
  634. SeeAlso: AH=80h"PCMCIA"
  635. --------s-1A84-------------------------------
  636. INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
  637.     AH = 84h
  638. Return: ???
  639. Note:    the BIOS will call INT 15/AX=91FBh when the sound has stopped playing
  640. SeeAlso: AH=83h"Tandy",AH=85h"Tandy"
  641. --------X-1A84-------------------------------
  642. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ADAPTER
  643.     AH = 84h
  644.     AL = adapter number
  645. Return: CF clear if successful
  646.         AH destroyed
  647.         BH = number of windows
  648.         BL = number of sockets (1-16)
  649.         CX = number of EDCs
  650.         DH = capabilities (see #0521)
  651.         DL = status change interrupt used (only if DH bit 3 set)(see #0522)
  652.     CF set on error
  653.         AH = error code (01h) (see #0507)
  654. SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h
  655.  
  656. Bitfields for PCMCIA capabilities:
  657. Bit(s)    Description    (Table 0521)
  658.  7-6    reserved (0)
  659.  5    status change interrupt is hardware shareable
  660.  4    status change interrupt is software shareable
  661.  3    status change interrupt
  662.  2    data bus width is per-socket rather than per-window
  663.  1    power management is per-adapter rather than per-socket
  664.  0    indicators are per-adapter rather than per-socket
  665.  
  666. (Table 0522)
  667. Values for PCMCIA status change interrupt usage:
  668.  00h-0Fh IRQ level
  669.  10h    NMI
  670.  11h    I/O check
  671.  12h    bus error
  672.  13h    vendor specific
  673.  14h-FFh reserved
  674. --------s-1A85-------------------------------
  675. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  676.     AH = 85h
  677.     ???
  678. Return: ???
  679. Note:    this function is not supported by the Tandy 1000SL/TL BIOS
  680. SeeAlso: AH=7Fh,AH=83h"Tandy"
  681. --------X-1A85-------------------------------
  682. INT 1A - PCMCIA Socket Services v1.00 - GET ADAPTER
  683.     AH = 85h
  684.     AL = adapter number
  685. Return: CF clear if successful
  686.         AH destroyed
  687.         DH = adapter attributes (see #0523)
  688.     CF set on error
  689.         AH = error code (01h) (see #0507)
  690. SeeAlso: AH=84h"PCMCIA",AH=86h
  691.  
  692. Bitfields for PCMCIA adapter attributes:
  693. Bit(s)    Description    (Table 0523)
  694.  7-5    reserved (0)
  695.  4    hardware share status change
  696.  3    software share status change
  697.  2    enable status change interrupts
  698.  1    adapter preserves state information during reduced power consumption
  699.  0    attempting to reduce power consumption
  700. --------X-1A86-------------------------------
  701. INT 1A - PCMCIA Socket Services v1.00 - SET ADAPTER
  702.     AH = 86h
  703.     AL = adapter number
  704.     DH = new adapter attributes (see #0523)
  705. Return: CF clear if successful
  706.         AH destroyed
  707.     CF set on error
  708.         AH = error code (01h) (see #0507)
  709. SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA"
  710. --------X-1A87-------------------------------
  711. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE WINDOW
  712.     AH = 87h
  713.     AL = adapter number
  714.     BH = window number
  715. Return: CF clear if successful
  716.         AH destroyed
  717.         BL = capabilities (see #0524)
  718.         CX = bitmap of assignable sockets
  719.         DH = EISA A15-A12 address lines (in bits 7-4, bits 3-0 = 0)
  720.         DL = supported access speeds (see #0525)
  721.         DS:SI -> Memory Window Characteristics table (see #0526)
  722.         DS:DI -> I/O Window Characteristics table (see #0527)
  723.     CF set on error
  724.         AH = error code (01h,11h) (see #0507)
  725. SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch
  726.  
  727. Bitfields for PCMCIA window capabilities:
  728. Bit(s)    Description    (Table 0524)
  729.  7-5    reserved (0)
  730.  4    separate enable for EISA comon space
  731.  3    EISA I/O mappable
  732.  2    I/O space
  733.  1    attribute memory
  734.  0    common memory
  735.  
  736. Bitfields for PCMCIA supported access speeds:
  737. Bit(s)    Description    (Table 0525)
  738.  7    reserved (0)
  739.  6    600 ns
  740.  5    300 ns
  741.  4    250 ns
  742.  3    200 ns
  743.  2    150 ns
  744.  1    100 ns
  745.  0    WAIT line monitoring
  746.  
  747. Format of PCMCIA Memory Window Characteristics table:
  748. Offset    Size    Description    (Table 0526)
  749.  00h    WORD    window capabilities (see #0528)
  750.  02h    WORD    minimum base address in 4K pages
  751.  04h    WORD    maximum base address in 4K pages
  752.  06h    WORD    minimum window size in 4K pages
  753.  08h    WORD    maximum window size in 4K pages
  754.  0Ah    WORD    window size granularity (4K units)
  755.  0Ch    WORD    required base address alignment (4K units)
  756.  0Eh    WORD    required card offset alignment (4K units)
  757.  
  758. Format of PCMCIA I/O Window Characteristics table:
  759. Offset    Size    Description    (Table 0527)
  760.  00h    WORD    window capabilities (see #0528)
  761.  02h    WORD    minimum base address in bytes
  762.  04h    WORD    maximum base address in bytes
  763.  06h    WORD    minimum window size in bytes
  764.  08h    WORD    maximum window size in bytes
  765.  0Ah    WORD    window size granularity (bytes)
  766.  
  767. Bitfields for PCMCIA window capabilities:
  768. Bit(s)    Description    (Table 0528)
  769.  0    programmable base address
  770.  1    programmable window size
  771.  2    window disable/enable supported
  772.  3    8-data bus
  773.  4    16-data bus
  774.  5    base address alignment on size boundary required
  775.  6    power-of-two size granularity
  776. ---memory windows---
  777.  7    card offset must be aligned on size boundary
  778.  8    paging hardware available
  779.  9    paging hardware shared
  780.  10    page disable/enable supported
  781.  11-15    reserved (0)
  782. ---I/O windows---
  783.  7-15    reserved (0)
  784. --------X-1A88-------------------------------
  785. INT 1A - PCMCIA Socket Services v1.00 - GET WINDOW
  786.     AH = 88h
  787.     AL = adapter number
  788.     BH = window number
  789. Return: CF clear if successful
  790.         AH destroyed
  791.         BL = socket number (0-16) (0 = not assigned)
  792.         CX = window size (bytes for I/O window, 4K units for memory window)
  793.         DH = window attributes (see #0529)
  794.         DL = access speed (only one bit set) (see #0525)
  795.         SI = window base address (bytes if I/O, 4K units if memory)
  796.         DI = card offset address (memory only, 4K units)
  797.     CF set on error
  798.         AH = error code (01h,11h) (see #0507)
  799. SeeAlso: AH=87h,AH=89h,AH=8Ah
  800.  
  801. Bitfields for PCMCIA window attributes:
  802. Bit(s)    Description    (Table 0529)
  803.  0    memory-mapped rather than I/O-mapped
  804.  1    attribute memory rather than common (memory-mapped)
  805.     EISA mapped (I/O)
  806.  2    enabled
  807.  3    16-data path
  808.  4    subdivided into pages (memory-mapped only)
  809.  5    non-specific access slot enable (EISA-mapped only)
  810.  6-7    reserved (0)
  811. --------X-1A89-------------------------------
  812. INT 1A - PCMCIA Socket Services v1.00 - SET WINDOW
  813.     AH = 89h
  814.     AL = adapter number
  815.     BH = window number
  816.     BL = socket number
  817.     CX = window size (bytes if I/O window, 4K units if memory window)
  818.     DH = window attributes (see #0529)
  819.     DL = access speed (only one bit set) (see #0525)
  820.     SI = window base address (bytes if I/O, 4K units if memory window)
  821.     DI = card offset addrress (memory only, 4K units)
  822. Return: CF clear if successful
  823.         AH destroyed
  824.     CF set on error
  825.         AH = error code (01h,03h,07h,08h,0Ah,0Bh,0Dh,10h,11h) (see #0507)
  826. SeeAlso: AH=87h,AH=88h,AH=8Bh
  827. --------X-1A8A-------------------------------
  828. INT 1A - PCMCIA Socket Services v1.00 - GET PAGE
  829.     AH = 8Ah
  830.     AL = adapter number
  831.     BH = window number
  832.     BL = page number
  833. Return: CF clear if successful
  834.         AH destroyed
  835.         DX = page attributes (see #0530)
  836.         DI = memory card offset (4K units)
  837.     CF set on error
  838.         AH = error code (01h,08h,11h) (see #0507)
  839. Notes:    this function is only valid for memory-mapped windows
  840.     the socket being operated on is implied by the previous AH=89h call
  841. SeeAlso: AH=88h,AH=8Bh
  842.  
  843. Bitfields for PCMCIA page attributes:
  844. Bit(s)    Description    (Table 0530)
  845.  0    page enabled
  846.  15-1    reserved (0)
  847. --------X-1A8B-------------------------------
  848. INT 1A - PCMCIA Socket Services v1.00 - SET PAGE
  849.     AH = 8Bh
  850.     AL = adapter number
  851.     BH = window number
  852.     BL = page number
  853.     DX = page attributes (see #0530)
  854.     DI = memory card offset (4K units)
  855. Return: CF clear if successful
  856.         AH destroyed
  857.     CF set on error
  858.         AH = error code (01h,02h,07h,08h,11h) (see #0507)
  859. Notes:    this function is only valid for memory-mapped windows
  860.     the socket being operated on is implied by the previous AH=89h call
  861. SeeAlso: AH=89h,AH=8Ah
  862. --------X-1A8C-------------------------------
  863. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE SOCKET
  864.     AH = 8Ch
  865.     AL = adapter number
  866.     BL = socket number (01h to maximum supported by adapter)
  867. Return: CF clear if successful
  868.         AH destroyed
  869.         DH = capabilities (see #0531)
  870.         DL = hardware indicators (see #0532)
  871.         DS:SI -> Socket Characteristics table (see #0533)
  872.         DS:DI -> Power Management table (see #0535)
  873.     CF set on error
  874.         AH = error code (01h,0Bh) (see #0507)
  875. SeeAlso: AH=87h,AH=8Dh,AH=8Eh
  876.  
  877. Bitfields for PCMCIA socket capabilities:
  878. Bit(s)    Description    (Table 0531)
  879.  0    card change
  880.  1    card lock
  881.  2    insert card (motor control)
  882.  3    eject card (motor control)
  883.  4-7    reserved (0)
  884.  
  885. Bitfields for PCMCIA socket hardware indicators:
  886. Bit(s)    Description    (Table 0532)
  887.  0    busy status
  888.  1    write-protected
  889.  2    battery status
  890.  3    card lock status
  891.  4    XIP status (eXecute-In-Place)
  892.  5-7    reserved (0)
  893.  
  894. Format of PCMCIA Socket Characteristics table:
  895. Offset    Size    Description    (Table 0533)
  896.  00h    WORD    supported card types (see #0534)
  897.  02h    WORD    steerable IRQ levels (bit 0 = IRQ0 to bit 15 = IRQ15)
  898.  04h    WORD    additional steerable IRQ levels
  899.         bit 0: NMI
  900.         bit 1: I/O check
  901.         bit 2: bus error
  902.         bit 3: vendor-unique
  903.         bits 4-7 reserved (0)
  904.  
  905. Bitfields for supported card types:
  906. Bit(s)    Description    (Table 0534)
  907.  0    memory card
  908.  1    I/O card
  909.  2-7    reserved (0)
  910.  
  911. Format of PCMCIA Power Management table:
  912. Offset    Size    Description    (Table 0535)
  913.  00h    WORD    number of entries in table (0 if power management not avail)
  914.  02h 2N BYTEs    power levels
  915.         byte 0: voltage in 0.1V units
  916.         byte 1: power supply
  917.             bit 7: Vcc
  918.             bit 6: Vpp1
  919.             bit 5: Vpp2
  920. --------X-1A8D-------------------------------
  921. INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET
  922.     AH = 8Dh
  923.     AL = adapter number
  924.     BL = socket number (01h to maximum supported by adapter)
  925. Return: CF clear if successful
  926.         AH destroyed
  927.         BH = status change interrupt enable mask (see #0509)
  928.         CH = Vcc level (lower nybble) (see #0535)
  929.         CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
  930.         DH = current socket status (see #0510)
  931.         DL = indicators (see #0532)
  932.         SI = card type (see #0536)
  933.         DI = IRQ level steering (I/O only) (see #0537)
  934.     CF set on error
  935.         AH = error code (01h,0Bh) (see #0507)
  936. SeeAlso: AH=8Ch,AH=8Eh
  937.  
  938. Bitfields for PCMCIA card type:
  939. Bit(s)    Description    (Table 0536)
  940.  0    memory
  941.  1    I/O
  942.  2-15    reserved (0)
  943.  
  944. Bitfields for PCMCIA I/O level steering:
  945. Bit(s)    Description    (Table 0537)
  946.  15    interrupt steering enabled
  947.  14-5    reserved (0)
  948.  4-0    IRQ level (0-15=IRQ,16=NMI,17=I/O check,18=bus error,19=vendor)
  949. --------X-1A8E-------------------------------
  950. INT 1A - PCMCIA Socket Services v1.00 - SET SOCKET
  951.     AH = 8Eh
  952.     AL = adapter number
  953.     BL = socket number (01h to maximum supported by adapter)
  954.     BH = status change interrupt enable mask (see #0509)
  955.     CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
  956.     DH = current socket status (see #0510)
  957.     DL = indicators (see #0532)
  958.     SI = card type (see #0536)
  959.     DI = IRQ level steering (I/O only) (see #0537)
  960. Return: CF clear if successful
  961.         AH destroyed
  962.     CF set on error
  963.         AH = error code (01h,02h,05h,06h,0Bh,0Eh,0Fh) (see #0507)
  964. SeeAlso: AH=8Ch,AH=8Dh
  965. --------X-1A8F-------------------------------
  966. INT 1A - PCMCIA Socket Services v1.00 - GET CARD
  967.     AH = 8Fh
  968.     AL = adapter number
  969.     BL = socket number (01h to maximum supported by adapter)
  970. Return: CF clear if successful
  971.         AH destroyed
  972.         DL = current card status (see #0511)
  973.     CF set on error
  974.         AH = error code (01h,0Bh) (see #0507)
  975. SeeAlso: AH=8Dh,AH=90h
  976. --------X-1A90-------------------------------
  977. INT 1A - PCMCIA Socket Services v1.00 - RESET CARD
  978.     AH = 90h
  979.     AL = adapter number
  980.     BL = socket number (01h to maximum supported by adapter)
  981. Return: CF clear if successful
  982.         AH destroyed
  983.     CF set on error
  984.         AH = error code (01h,0Bh,14h) (see #0507)
  985. Note:    toggles RESET pin of the specified card, but does not wait after
  986.       toggling the pin; it is the caller's responsibility to avoid
  987.       accessing the card before it is ready again
  988. --------X-1A91-------------------------------
  989. INT 1A - PCMCIA Socket Services v1.00 - READ ONE
  990.     AH = 91h
  991.     AL = adapter number
  992.     BL = socket number (01h to maximum supported by adapter)
  993.     BH = attributes (see #0538)
  994.     DX:SI = card address
  995. Return: CF clear if successful
  996.         AH destroyed
  997.         CL/CX = value read
  998.     CF set on error
  999.         AH = error code (01h,07h,09h,0Bh,14h) (see #0507)
  1000.         CX may be destroyed
  1001. Note:    this function is only valid for I/O-mapped sockets
  1002. SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
  1003.  
  1004. Bitfields for PCMCIA attributes:
  1005. Bit(s)    Description    (Table 0538)
  1006.  2    even bytes only
  1007.  1    word rather than byte
  1008.  0    attribute memory instead of common memory
  1009. --------X-1A92-------------------------------
  1010. INT 1A - PCMCIA Socket Services v1.00 - WRITE ONE
  1011.     AH = 92h
  1012.     AL = adapter number
  1013.     BL = socket number (01h to maximum supported by adapter)
  1014.     BH = attributes (see #0538)
  1015.     CL/CX = value to write
  1016.     DX:SI = card address
  1017. Return: CF clear if successful
  1018.         AH destroyed
  1019.     CF set on error
  1020.         AH = error code (01h,07h,0Bh,12h,14h) (see #0507)
  1021. Note:    this function is only valid for I/O-mapped sockets; it also does not
  1022.       implement Card Technology handling--use AH=94h when writing to
  1023.       non-RAM technologies
  1024. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
  1025. --------X-1A93-------------------------------
  1026. INT 1A - PCMCIA Socket Services v1.00 - READ MULTIPLE
  1027.     AH = 93h
  1028.     AL = adapter number
  1029.     BL = socket number (01h to maximum supported by adapter)
  1030.     BH = attributes (see #0538)
  1031.     CX = number of bytes or words to read
  1032.     DX:SI = card address
  1033.     DS:DI -> data buffer to be filled
  1034. Return: CF clear if successful
  1035.         AH destroyed
  1036.     CF set on error
  1037.         AH = error code (01h,07h,09h,0Bh,14h) (see #0507)
  1038. Note:    this function is only available on I/O-mapped sockets
  1039. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
  1040. --------X-1A94-------------------------------
  1041. INT 1A - PCMCIA Socket Services v1.00 - WRITE MULTIPLE
  1042.     AH = 94h
  1043.     AL = adapter number
  1044.     BL = socket number (01h to maximum supported by adapter)
  1045.     BH = attributes (see #0538)
  1046.     CX = number of bytes or words to read
  1047.     DX:DI = card address
  1048.     DS:SI -> buffer containing data
  1049.     BP = Card Technology type (0000h = RAM)
  1050. Return: CF clear if successful
  1051.         AH destroyed
  1052.     CF set on error
  1053.         AH = error code (01h,07h,0Bh,0Ch,12h,14h) (see #0507)
  1054. Notes:    this function is only available on I/O-mapped sockets
  1055.     Socket Services calls the Card Technology callback (see #0512) for
  1056.       any card technology it does not directly support
  1057. SeeAlso: AH=82h"PCMCIA",AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
  1058. --------X-1A95-------------------------------
  1059. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ERROR DETECTION CODE
  1060.     AH = 95h
  1061.     AL = adapter number
  1062.     BH = EDC generator number
  1063. Return: CF clear if successful
  1064.         AH destroyed
  1065.         CX = bitmap of assignable sockets
  1066.         DH = EDC capabilities (see #0539)
  1067.         DL = supported EDC types (see #0540)
  1068.     CF set on error
  1069.         AH = error code (01h,04h) (see #0507)
  1070. SeeAlso: AH=96h,AH=9Ch
  1071.  
  1072. Bitfields for EDC capabilities:
  1073. Bit(s)    Description    (Table 0539)
  1074.  0    unidirectional only generation
  1075.  1    bidirectional only generation
  1076.  2    register-based (I/O-mapped) support
  1077.  3    memory-mapped support
  1078.  4    pausable
  1079.  5-7    reserved (0)
  1080.  
  1081. Bitfields for supported EDC types:
  1082. Bit(s)    Description    (Table 0540)
  1083.  0    8-checksum
  1084.  1    16-CRC-SDLC
  1085.  2-7    reserved (0)
  1086. --------X-1A96-------------------------------
  1087. INT 1A - PCMCIA Socket Services v1.00 - GET ERROR DETECTION CODE
  1088.     AH = 96h
  1089.     AL = adapter number
  1090.     BH = EDC generator number
  1091. Return: CF clear if successful
  1092.         AH destroyed
  1093.         BL = socket number
  1094.         DH = EDC attributes (see #0541)
  1095.         DL = EDC type (see #0540) (only one bit set)
  1096.     CF set on error
  1097.         AH = error code (01h,04h) (see #0507)
  1098. SeeAlso: AH=95h,AH=97h,AH=9Ch
  1099.  
  1100. Bitfields for EDC attributes:
  1101. Bit(s)    Description    (Table 0541)
  1102.  0    unidirectional only
  1103.  1    (if 0 set) clear=read, set=write
  1104.  2-7    reserved (0)
  1105. --------X-1A97-------------------------------
  1106. INT 1A - PCMCIA Socket Services v1.00 - SET ERROR DETECTION CODE
  1107.     AH = 97h
  1108.     AL = adapter number
  1109.     BH = EDC generator
  1110.     BL = socket number
  1111.     DH = EDC attributes (see #0541)
  1112.     DL = EDC type (see #0540) (only one bit may be set)
  1113. Return: CF clear if successful
  1114.         AH destroyed
  1115.     CF set on error
  1116.         AH = error code (01h,02h,04h,0Bh) (see #0507)
  1117. SeeAlso: AH=96h,AH=9Ch
  1118. --------X-1A98-------------------------------
  1119. INT 1A - PCMCIA Socket Services v1.00 - START ERROR DETECTION CODE
  1120.     AH = 98h
  1121.     AL = adapter number
  1122.     BH = EDC generator
  1123. Return: CF clear if successful
  1124.         AH destroyed
  1125.     CF set on error
  1126.         AH = error code (01h,04h) (see #0507)
  1127. SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch
  1128. --------X-1A99-------------------------------
  1129. INT 1A - PCMCIA Socket Services v1.00 - PAUSE ERROR DETECTION CODE
  1130.     AH = 99h
  1131.     AL = adapter number
  1132.     BH = EDC generator
  1133. Return: CF clear if successful
  1134.         AH destroyed
  1135.     CF set on error
  1136.         AH = error code (01h,04h) (see #0507)
  1137. SeeAlso: AH=9Ah
  1138. --------X-1A9A-------------------------------
  1139. INT 1A - PCMCIA Socket Services v1.00 - RESUME ERROR DETECTION CODE
  1140.     AH = 9Ah
  1141.     AL = adapter number
  1142.     BH = EDC generator
  1143. Return: CF clear if successful
  1144.         AH destroyed
  1145.     CF set on error
  1146.         AH = error code (01h,04h) (see #0507)
  1147. SeeAlso: AH=99h,AH=98h
  1148. --------X-1A9B-------------------------------
  1149. INT 1A - PCMCIA Socket Services v1.00 - STOP ERROR DETECTION CODE
  1150.     AH = 9Bh
  1151.     AL = adapter number
  1152.     BH = EDC generator
  1153. Return: CF clear if successful
  1154.         AH destroyed
  1155.     CF set on error
  1156.         AH = error code (see #0507)
  1157. SeeAlso: AH=98h,AH=99h,AH=9Ch
  1158. --------X-1A9C-------------------------------
  1159. INT 1A - PCMCIA Socket Services v1.00 - READ ERROR DETECTION CODE
  1160.     AH = 9Ch
  1161.     AL = adapter number
  1162.     BH = EDC generator
  1163. Return: CF clear if successful
  1164.         AH destroyed
  1165.         DL/DX = computed checksum or CRC
  1166.     CF set on error
  1167.         AH = error code (01h,04h) (see #0507)
  1168. SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh
  1169. --------X-1A9D-------------------------------
  1170. INT 1A - PCMCIA Socket Services v2.1? - GET VENDOR INFO
  1171.     AH = 9Dh
  1172.     AL = adapter number
  1173.     BH = EDC generator
  1174.     ES:EDI -> vendor information structure (see #2622 below)
  1175. Return: CF clear if successful
  1176.         AH destroyed
  1177.         DX = vendor release number in BCD
  1178.         ES:EDI unchanged
  1179.     CF set on error
  1180.         AH = error code (01h,15h) (see #0507)
  1181. Notes:    this API is supported by recent versions of the AMI BIOS
  1182.     appears to conflict with Intel ExCa API.
  1183.  
  1184. Vendor Information structure:
  1185. Offset    Size    Description    (Table 2622)
  1186.  00h    WORD    buffer length (set to size of buffer below)
  1187.  04h    WORD    (ret) data length
  1188.  08h  x BYTEs    implementor name (ASCIIZ string)
  1189. --------X-1A9D-------------------------------
  1190. INT 1A - Intel PCMCIA ExCA Card Services - API
  1191.     AH = 9Dh
  1192.     AL = subfunction (see #0542)
  1193.     ???
  1194. Return: ???
  1195. Note:    this API is supported by recent versions of the AMI BIOS
  1196.  
  1197. (Table 0542)
  1198. Values for PCMCIA ExCA Card Services subfunction number:
  1199.  00h    Client Services: Get Number of Sockets
  1200.  01h    Advanced Client Utilities: Initialize
  1201.  02h    Client Services: Register Client
  1202.  03h    Client Services: Deregister Client
  1203.  04h    Advanced Client Utilities: Enumerate Clients
  1204.  05h    Client Services: Register SCB
  1205.  06h    Client Services: Deregister SCB
  1206.  07h    Advanced Client Utilities: Register MTD
  1207.  08h    Advanced Client Utilities: Deregister MTD
  1208.  09h    Advanced Client Utilities: Enumerate MTD
  1209.  0Ah    Client Services: Get Status
  1210.  0Bh    Client Services: Reset Card
  1211.  0Ch    Client Utilities: Get First Tuple
  1212.  0Dh    Client Utilities: Get Next Tuple
  1213.  0Eh    Client Utilities: Determine First Region
  1214.  0Fh    Client Utilities: Determine Next Region
  1215.  10h    Client Utilities: Get First Region
  1216.  11h    Client Utilities: Get Next Region
  1217.  12h    Client Utilities: Get First Partition
  1218.  13h    Client Utilities: Get Next Partition
  1219.  14h    Bulk Memory Services: Open Region
  1220.  15h    Bulk Memory Services: Read Memory
  1221.  16h    Bulk Memory Services: Write Memory
  1222.  17h    Bulk Memory Services: Copy Memory
  1223.  18h    Bulk Memory Services: Erase Memory
  1224.  19h    Resource Management: Request I/O
  1225.  1Ah    Resource Management: Release I/O
  1226.  1Bh    Resource Management: Request Memory
  1227.  1Ch    Client Services: Modify Window
  1228.  1Dh    Resource Management: Release Memory
  1229.  1Eh    Client Services: Map Mem Page
  1230.  1Fh    Advanced Client Utilities: Return SS Entry
  1231.  20h    Advanced Client Utilities: Map Log to Phy
  1232.  21h    Advanced Client Utilities: Map Log Phy to Log
  1233.  22h    Resource Management: Request IRQ
  1234.  23h    Resource Management: Release IRQ
  1235.  24h    Bulk Memory Services: Close Region
  1236. --------X-1A9E-------------------------------
  1237. INT 1A - PCMCIA Socket Services v2.1 - ACKNOWLEDGE INTERRUPT
  1238.     AH = 9Eh
  1239.     AL = adapter number
  1240. Return: CF clear if successful
  1241.         AH destroyed
  1242.         CX = bitmap representing sockets which have changed status
  1243.     CF set on error
  1244.         AH = error code (01h) (see #0507)
  1245. Note:    this API is supported by recent versions of the AMI BIOS
  1246. --------X-1A9F-------------------------------
  1247. INT 1A - PCMCIA Socket Services v2.1 - GET/SET PRIOR INT 1A HANDLER
  1248.     AH = 9Fh
  1249.     AL = adapter number
  1250.     BL = mode
  1251.         00h get prior INT 1Ah handler
  1252.         01h set prior INT 1Ah handler
  1253.         CX:DX -> new prior handler
  1254. Return: CF clear if successful
  1255.         AH destroyed
  1256.         CX:DX -> old prior handler
  1257.     CF set on error
  1258.         AH = error code (01h,15h,18h) (see #0507)
  1259. Desc:    allows hooking of INT 16h "behind" the Socket Services hook
  1260. Note:    this API is supported by recent versions of the AMI BIOS
  1261. SeeAlso: AH=9Eh,AH=A0h"PCMCIA",AH=AEh"PCMCIA"
  1262. --------c-1AA0-------------------------------
  1263. INT 1A U - Disk Spool II v2.07+ - INSTALLATION CHECK
  1264.     AH = A0h
  1265. Return: AH = B0h if installed
  1266.         AL = pending INT 1A/AH=D0h subfunction if nonzero???
  1267.         ES = code segment
  1268.         ES:BX -> name of current spool file
  1269.         ES:SI -> current despool file
  1270.         CL = despooler state (00h disabled, 41h enabled)
  1271.         CH = spooler state (00h disabled, 41h enabled)
  1272.         DL = despooler activity
  1273.         00h currently active printing a file
  1274.         41h standing by
  1275.         DH = 00h ???
  1276.            = 41h ???
  1277.         DI = 0000h ???
  1278.          0001h ???
  1279. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  1280.       Software Company
  1281. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  1282.       as that is a licensed version of Disk Spool II
  1283. SeeAlso: AH=ABh,AH=C0h,AH=D0h,AH=E1h
  1284. --------X-1AA0-------------------------------
  1285. INT 1A - PCMCIA Socket Services v2.1 - GET/SET SOCKET SERVICES ADDRESS
  1286.     AH = A0h
  1287.     AL = adapter number
  1288.     BH = mode
  1289.         00h real mode
  1290.         01h 16:16 protected mode
  1291.         02h 16:32 protected mode
  1292.         03h 00:32 (Flat) protected mode
  1293.     BL = subfunction
  1294.         00h return number of additional data areas (see #2623)
  1295.         01h return description of additional data areas (see #2624)
  1296.         02h accept mode-specific pointers to data areas (see #2625)
  1297.     ES:EDI -> buffer supplied by caller
  1298. Return: CF clear if successful
  1299.         AH destroyed
  1300.         CX = number of additional data areas
  1301.         ES:EDI unchanged
  1302.     CF set on error
  1303.         AH = error code (01h,02h,15h,16h,18h) (see #0507)
  1304. SeeAlso: AH=9Fh,AH=AEh
  1305.  
  1306. Format of PCMCIA Subfunction 00h Buffer Table Entry structure:
  1307. Offset    Size    Description    (Table 2623)
  1308.  00h    DWORD    32-bit linear base address of the code segment
  1309.  04h    DWORD    segment limit of the code segment
  1310.  08h    DWORD    entry point offset
  1311.  0Ch    DWORD    32-bit linear base address of the data segment
  1312.         (ignored in 00:32 flat mode)
  1313.  10h    DWORD    segment limit of the data segment
  1314.  14h    DWORD    data area offset.  Only used in 32-bit protected mode.
  1315. SeeAlso: #2624,#2625
  1316.  
  1317. Format of PCMCIA Additional Data Area Description structure [array]:
  1318. Offset    Size    Description    (Table 2624)
  1319.  00h    DWORD    32-bit linear base address of the additional data segment
  1320.         (ignored in 00:32 flat mode)
  1321.  04h    DWORD    segment limit of the code segment
  1322.  08h    DWORD    data area offset (only used in 32-bit protected mode)
  1323. SeeAlso: #2623,#2625
  1324.  
  1325. Format of PCMCIA Subfunction 02h Buffer Table Entry structure:
  1326. Offset    Size    Description    (Table 2625)
  1327.  00h    DWORD    32-bit offset(ignored in 16:16 protected mode)
  1328.  04h    DWORD    selector (only used in 00:32 flat mode)
  1329.  08h    DWORD    reserved
  1330. SeeAlso: #2623,#2624
  1331. --------X-1AA1-------------------------------
  1332. INT 1A - PCMCIA Socket Services v2.1 - GET ACCESS OFFSETS
  1333.     AH = A1h
  1334.     AL = adapter number
  1335.     BH = Mode
  1336.          00h = Real Mode
  1337.          01h = 16:16 Protected Mode
  1338.          02h = 16:32 Protected Mode
  1339.          03h = 00:32 Protected Mode
  1340.     CX = Number of access offsets
  1341.     ES:EDI -> buffer supplied by caller, CX words long (see #2626)
  1342. Return: CF clear if successful
  1343.         AH destroyed
  1344.         DX = number of access offsets supported
  1345.         ES:EDI unchanged
  1346.     CF set on error
  1347.         AH = error code (01h,15h,16h) (see #0507)
  1348. Desc:    Returns an array of low-level adapter-specific optimized
  1349.     PC Card access routines for adapters that use registers
  1350.     or I/O ports to access PC Card memory.    Adapters that access
  1351.     PC Card memory through windows mapped to host system memory
  1352.     do not support this function.
  1353. Note:    offsets returned are 16-bit offsets into the
  1354.     Socket Services code segment.  They must be called
  1355.     appropriately for the processor mode selected.
  1356.     (Real, 16:16 and 16:32 modes use FAR CALL,
  1357.     Flat 00:32 mode uses a 32-bit NEAR CALL).
  1358. SeeAlso: AH=AEh
  1359.  
  1360. Offset Table structure:
  1361. Offset    Size    Description    (Table 2626)
  1362.  00h    WORD    Set Address
  1363.  02h    WORD    Set Auto Increment
  1364.  04h    WORD    Read Byte
  1365.  06h    WORD    Read Word
  1366.  08h    WORD    Read Byte with Auto Increment
  1367.  0Ah    WORD    Read Word with Auto Increment
  1368.  0Ch    WORD    Read Words
  1369.  0Eh    WORD    Read Words with Auto Increment
  1370.  10h    WORD    Write Byte
  1371.  12h    WORD    Write Word
  1372.  14h    WORD    Write Byte with Auto Increment
  1373.  16h    WORD    Write Word with Auto Increment
  1374.  18h    WORD    Write Words
  1375.  1Ah    WORD    Write Words with Auto Increment
  1376.  1Ch    WORD    Compare Byte
  1377.  1Eh    WORD    Compare Byte with Auto Increment
  1378.  20h    WORD    Compare Words
  1379.  22h    WORD    Compare Words with Auto Increment
  1380. --------c-1AAB-------------------------------
  1381. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  1382.     AH = ABh
  1383. Return: AH = BAh if installed
  1384.         AL = pending INT 1A/AH=ADh subfunction if nonzero???
  1385.         ES = code segment
  1386.         ES:BX -> name of current spool file
  1387.         ES:SI -> current despool file
  1388.         CL = despooler state (00h disabled, 41h enabled)
  1389.         CH = spooler state (00h disabled, 41h enabled)
  1390.         DL = despooler activity
  1391.         00h currently active printing a file
  1392.         41h standing by
  1393.         DH = 00h ???
  1394.            = 41h ???
  1395.         DI = 0000h ???
  1396.          0001h ???
  1397. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  1398.       Software Company
  1399. SeeAlso: AH=A0h,AH=ACh,AH=ADh,AH=E1h
  1400. --------c-1AAC-------------------------------
  1401. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  1402.     AH = ACh
  1403. Return: (see AH=ABh)
  1404. Note:    this function is identical to AH=ABh
  1405. SeeAlso: AH=A0h,AH=ABh,AH=ADh
  1406. --------c-1AAD-------------------------------
  1407. INT 1A U - Disk Spool II v1.83 - FUNCTION CALLS
  1408.     AH = ADh
  1409.     AL = function code (see #0543)
  1410. Return: AH = 00h if successful
  1411. SeeAlso: AH=ABh
  1412.  
  1413. (Table 0543)
  1414. Values for Disk Spool function code:
  1415.  02h    enable spooler only
  1416.  03h    enable the despooler
  1417.  04h    disable the despooler
  1418.  08h    inhibit popup menu
  1419.  09h    enable popup menu
  1420.  0Ah    ???
  1421.  0Bh    disable the spooler
  1422.  0Ch    start despooler after last successfully printed document???
  1423.  0Dh    start despooler at the exact point where it last left off???
  1424.  0Eh    pop up the menu
  1425.  0Fh    ???
  1426.  11h    ???
  1427.  14h    ???
  1428.  15h    ???
  1429.  16h    ???
  1430.  17h    ???
  1431.  18h    ???
  1432.  19h    ???
  1433.  20h    clear file pointed to by the despooler???
  1434.  21h    ???
  1435.  22h    ???
  1436.  23h    ???
  1437.  30h    ???
  1438. --------X-1AAE-------------------------------
  1439. INT 1A - PCMCIA Socket Services v2.1 - VENDOR SPECIFIC
  1440.     AH = AEh
  1441.     AL = adapter number
  1442.     all other registers are vendor-specific
  1443. Return: vendor specific
  1444. SeeAlso: AH=A1h,AH=AFh
  1445. --------X-1AAE-------------------------------
  1446. INT 1A - PCMCIA Socket Services v2.1 - API
  1447.     AH = AEh
  1448.     SI = function
  1449.         0002h ???
  1450.         0100h ???
  1451.         0101h ???
  1452.         8000h ???
  1453.         8001h ???
  1454.     details not yet available
  1455. Return: CF clear if successful
  1456.     CF set on error
  1457.         AH = error code (02h,0Bh,11h,15h,17h) (see #0507)
  1458. SeeAlso: AH=9Eh
  1459. --------X-1AAF-------------------------------
  1460. INT 1A - PCMCIA v2 - API
  1461.     AH = AFh
  1462.     details not yet available
  1463. SeeAlso: AH=AEh
  1464. --------X-1AB000-----------------------------
  1465. INT 1A U - HP 100LX/200LX - PCMCIA - ???
  1466.     AX = B000h
  1467.     ES:BX -> parameter block ???
  1468. Return: CF clear if ???
  1469.     CF set if ???
  1470. Note:    called by HP 100LX/200LX PCMCIA client CIC100.EXE
  1471. --------d-1AB001CX4D52-----------------------
  1472. INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
  1473.     AX = B001h
  1474.     CX = 4D52h ("MR")
  1475.     DX = 4349h ("CI")
  1476. Return: CX = 4943h ("IC") if installed
  1477.     DX = 524Dh ("RM") if installed
  1478.         ES:DI -> MRCINFO structure (see #0544)
  1479. Note:    this call is functionally identical to INT 2F/AX=4A12h, which should
  1480.       be called first, as this call is used for the first, ROM-based
  1481.       MRCI server, while the other call is used for RAM-based servers
  1482.       which may be partially or entirely replacing a prior server
  1483. SeeAlso: INT 2F/AX=4A12h
  1484.  
  1485. Format of MRCINFO structure:
  1486. Offset    Size    Description    (Table 0544)
  1487.  00h  4 BYTEs    vendor signature
  1488.         "MSFT" Microsoft
  1489.  04h    WORD    server version (high=major)
  1490.  06h    WORD    MRCI specification version
  1491.  08h    DWORD    address of server entry point (see #0546)
  1492.  0Ch    WORD    bit flags: server capabilities (see #0545)
  1493.  0Eh    WORD    bit flags: hardware assisted capabilities (see #0545)
  1494.  10h    WORD    maximum block size supported by server (at least 8192 bytes)
  1495.  
  1496. Bitfields for MRCI capabilities:
  1497. Bit(s)    Description    (Table 0545)
  1498.  0    standard compress
  1499.  1    standard decompress
  1500.  2    update compress
  1501.  3    MaxCompress (not present in initial public release)
  1502.  4    reserved
  1503.  5    incremental decompress
  1504.  6    MRCI 2.0 standard compress
  1505.  7    MRCI 2.0 standard decompress
  1506.  8-14    reserved
  1507.  15    this structure is in ROM and can't be modified
  1508.     (server capabilities only)
  1509.  
  1510. (Table 0546)
  1511. Call MRCI entry point with:
  1512.     DS:SI -> MRCREQUEST structure (see #0547)
  1513.     CX = type of client (0000h application, 0001h file system)
  1514.     AX = operation
  1515.         0001h perform standard compression
  1516.         0002h perform standard decompression
  1517.         0004h perform update compression
  1518.         0008h perform MaxCompress
  1519.         0020h perform incremental decompression
  1520.         0040h perform MRCI 2.0 standard compression
  1521.         0080h perform MRCI 2.0 standard decompression
  1522.     AX = FFFFh clear flags
  1523.         BX = bitmask of flags to clear (set bits in BX are flags to clear)
  1524. Return: AX = status
  1525.         0000h successful
  1526.         0001h invalid function
  1527.         0002h server busy, try again
  1528.         0003h destination buffer too small
  1529.         0004h incompressible data
  1530.         0005h bad compressed data format
  1531.     BP destroyed (MS-DOS 6.2)
  1532. Note:    MRCI driver may chain to a previous driver
  1533.  
  1534. Format of MRCREQUEST structure:
  1535. Offset    Size    Description    (Table 0547)
  1536.  00h    DWORD    pointer to source buffer
  1537.  04h    WORD    size of source buffer (0000h = 64K)
  1538.  06h    WORD    (UpdateCompress only)
  1539.         (call) offset in source buffer of beginning of changed data
  1540.         (ret) offset in destination buffer of beginning of changed
  1541.               compressed data
  1542.  08h    DWORD    pointer to destination buffer
  1543.         must contain original compressed data for UpdateCompress
  1544.  0Ch    WORD    size of destination buffer (0000h = 64K)
  1545.         any compression: size of buffer for compressed data
  1546.         standard decompression: number of bytes to be decompressed
  1547.         incremental decompression: number of byte to decompress now
  1548.         (ret) actual size of resulting data
  1549.  0Eh    WORD    client compressed data storage allocation size
  1550.  10h    DWORD    incremental decompression state data
  1551.         set to 00000000h before first incremental decompression call
  1552. Notes:    the source and destination buffers may not overlap
  1553.     the source and destination buffer sizes should normally be the same
  1554.     application should not update the contents of the MRCREQUEST structure
  1555.       between incremental decompression calls
  1556. --------X-1AB101-----------------------------
  1557. INT 1A - Intel PCI BIOS v2.0c - INSTALLATION CHECK
  1558.     AX = B101h
  1559. Return: AH = 00h if installed
  1560.         CF clear
  1561.         EDX = 20494350h (' ICP')
  1562.         EDI = physical address of protected-mode entry point (see #0550)
  1563.         AL = PCI hardware characteristics (see #0549)
  1564.         BH = PCI interface level major version (BCD)
  1565.         BL = PCI interface level minor version (BCD)
  1566.         CL = number of last PCI bus in system
  1567.     EAX, EBX, ECX, and EDX may be modified
  1568.     all other flags (except IF) may be modified
  1569. Note:    this function may require up to 1024 byte of stack; it will not enable
  1570.       interrupts if they were disabled before making the call
  1571. SeeAlso: AX=B181h
  1572.  
  1573. (Table 0548)
  1574. Values for PCI BIOS v2.0c status codes:
  1575.  00h    successful
  1576.  81h    unsupported function
  1577.  83h    bad vendor ID
  1578.  86h    device not found
  1579.  87h    bad PCI register number
  1580.  
  1581. Bitfields for PCI hardware characteristics:
  1582. Bit(s)    Description    (Table 0549)
  1583.  0    configuration space access mechanism 1 supported
  1584.  1    configuration space access mechanism 2 supported
  1585.  2-3    reserved
  1586.  4    Special Cycle generation mechanism 1 supported
  1587.  5    Special Cycle generation mechanism 2 supported
  1588.  6-7    reserved
  1589.  
  1590. (Table 0550)
  1591. Call protected-mode entry point with:
  1592.     registers as for real/V86-mode INT call
  1593.     CS = ring 0 descriptor with access to full address space
  1594. Return: as for real/V86-mode call
  1595. --------X-1AB102-----------------------------
  1596. INT 1A - Intel PCI BIOS v2.0c - FIND PCI DEVICE
  1597.     AX = B102h
  1598.     CX = device ID
  1599.     DX = vendor ID
  1600.     SI = device index (0-n)
  1601. Return: CF clear if successful
  1602.     CF set on error
  1603.     AH = status (00h,83h,86h) (see #0548)
  1604.         00h successful
  1605.         BH = bus number
  1606.         BL = device/function number (bits 7-3 device, bits 2-0 func)
  1607.     EAX, EBX, ECX, and EDX may be modified
  1608.     all other flags (except IF) may be modified
  1609. Notes:    this function may require up to 1024 byte of stack; it will not enable
  1610.       interrupts if they were disabled before making the call
  1611.     device ID FFFFh may be reserved as a wildcard in future implementations
  1612.     the meanings of BL and BH on return were exchanged between the initial
  1613.       drafts of the specification and final implementation
  1614.     all devices sharing a single vendor ID and device ID may be enumerated
  1615.       by incrementing SI from 0 until error 86h is returned
  1616. SeeAlso: AX=B182h
  1617. --------X-1AB103-----------------------------
  1618. INT 1A - Intel PCI BIOS v2.0c - FIND PCI CLASS CODE
  1619.     AX = B103h
  1620.     ECX = class code (bits 23-0)
  1621.         xx400000h = multimedia device, video subclass
  1622.         xx408000h = multimedia device, other multimedia device
  1623.     SI = device index (0-n)
  1624. Return: CF clear if successful
  1625.     CF set on error
  1626.     AH = status (00h,86h) (see #0548)
  1627.         00h successful
  1628.         BH = bus number
  1629.         BL = device/function number (bits 7-3 device, bits 2-0 func)
  1630.         86h device not found
  1631.     EAX, EBX, ECX, and EDX may be modified
  1632.     all other flags (except IF) may be modified
  1633. Notes:    this function may require up to 1024 byte of stack; it will not enable
  1634.       interrupts if they were disabled before making the call
  1635.     the meanings of BL and BH on return were exchanged between the initial
  1636.       drafts of the specification and final implementation
  1637.     all devices sharing the same Class Code may be enumerated by
  1638.       incrementing SI from 0 until error 86h is returned
  1639. SeeAlso: AX=B183h
  1640. --------X-1AB106-----------------------------
  1641. INT 1A - Intel PCI BIOS v2.0c - PCI BUS-SPECIFIC OPERATIONS
  1642.     AX = B106h
  1643.     BL = bus number
  1644.     EDX = Special Cycle data
  1645. Return: CF clear if successful
  1646.     CF set on error
  1647.     AH = status (00h,81h) (see #0548)
  1648.     EAX, EBX, ECX, and EDX may be modified
  1649.     all other flags (except IF) may be modified
  1650. Note:    this function may require up to 1024 byte of stack; it will not enable
  1651.       interrupts if they were disabled before making the call
  1652. SeeAlso: AX=B186h
  1653. --------X-1AB108-----------------------------
  1654. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION BYTE
  1655.     AX = B108h
  1656.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1657.     BH = bus number
  1658.     DI = register number (0000h-00FFh)
  1659. Return: CF clear if successful
  1660.         CL = byte read
  1661.     CF set on error
  1662.     AH = status (00h,87h) (see #0548)
  1663.     EAX, EBX, ECX, and EDX may be modified
  1664.     all other flags (except IF) may be modified
  1665. Notes:    this function may require up to 1024 byte of stack; it will not enable
  1666.       interrupts if they were disabled before making the call
  1667.     the meanings of BL and BH on entry were exchanged between the initial
  1668.       drafts of the specification and final implementation
  1669. SeeAlso: AX=B188h
  1670. --------X-1AB109-----------------------------
  1671. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION WORD
  1672.     AX = B109h
  1673.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1674.     BH = bus number
  1675.     DI = register number (0000h-00FFh)
  1676. Return: CF clear if successful
  1677.         CX = word read
  1678.     CF set on error
  1679.     AH = status (00h,87h) (see #0548)
  1680.     EAX, EBX, ECX, and EDX may be modified
  1681.     all other flags (except IF) may be modified
  1682. Notes:    this function may require up to 1024 byte of stack; it will not enable
  1683.       interrupts if they were disabled before making the call
  1684.     the meanings of BL and BH on entry were exchanged between the initial
  1685.       drafts of the specification and final implementation
  1686. SeeAlso: AX=B189h
  1687. --------X-1AB10A-----------------------------
  1688. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION DWORD
  1689.     AX = B10Ah
  1690.     BH = bus number
  1691.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1692.     DI = register number (0000h-00FFh)
  1693. Return: CF clear if successful
  1694.         ECX = dword read
  1695.     CF set on error
  1696.     AH = status (00h,87h) (see #0548)
  1697.     EAX, EBX, ECX, and EDX may be modified
  1698.     all other flags (except IF) may be modified
  1699. Notes:    this function may require up to 1024 byte of stack; it will not enable
  1700.       interrupts if they were disabled before making the call
  1701.     the meanings of BL and BH on entry were exchanged between the initial
  1702.       drafts of the specification and final implementation
  1703. SeeAlso: AX=B18Ah
  1704. --------X-1AB10B-----------------------------
  1705. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION BYTE
  1706.     AX = B10Bh
  1707.     BH = bus number
  1708.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1709.     DI = register number (0000h-00FFh)
  1710.     CL = byte to write
  1711. Return: CF clear if successful
  1712.     CF set on error
  1713.     AH = status (00h,87h) (see #0548)
  1714.     EAX, EBX, ECX, and EDX may be modified
  1715.     all other flags (except IF) may be modified
  1716. Notes:    this function may require up to 1024 byte of stack; it will not enable
  1717.       interrupts if they were disabled before making the call
  1718.     the meanings of BL and BH on entry were exchanged between the initial
  1719.       drafts of the specification and final implementation
  1720. SeeAlso: AX=B18Bh
  1721. --------X-1AB10C-----------------------------
  1722. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION WORD
  1723.     AX = B10Ch
  1724.     BH = bus number
  1725.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1726.     DI = register number (multiple of 2 less than 0100h)
  1727.     CX = word to write
  1728. Return: CF clear if successful
  1729.     CF set on error
  1730.     AH = status (00h,87h) (see #0548)
  1731.     EAX, EBX, ECX, and EDX may be modified
  1732.     all other flags (except IF) may be modified
  1733. Notes:    this function may require up to 1024 byte of stack; it will not enable
  1734.       interrupts if they were disabled before making the call
  1735.     the meanings of BL and BH on entry were exchanged between the initial
  1736.       drafts of the specification and final implementation
  1737. SeeAlso: AX=B18Ch
  1738. --------X-1AB10D-----------------------------
  1739. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION DWORD
  1740.     AX = B10Dh
  1741.     BH = bus number
  1742.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1743.     DI = register number (multiple of 4 less than 0100h)
  1744.     ECX = dword to write
  1745. Return: CF clear if successful
  1746.     CF set on error
  1747.     AH = status (00h,87h) (see #0548)
  1748.     EAX, EBX, ECX, and EDX may be modified
  1749.     all other flags (except IF) may be modified
  1750. Notes:    this function may require up to 1024 byte of stack; it will not enable
  1751.       interrupts if they were disabled before making the call
  1752.     the meanings of BL and BH on entry were exchanged between the initial
  1753.       drafts of the specification and final implementation
  1754. SeeAlso: AX=B18Dh
  1755. --------X-1AB181-----------------------------
  1756. INT 1A - Intel PCI BIOS v2.0c - INSTALLATION CHECK (32-bit)
  1757.     AX = B181h
  1758. Return: as for AX=B101h
  1759. SeeAlso: AX=B101h
  1760. --------X-1AB182-----------------------------
  1761. INT 1A - Intel PCI BIOS v2.0c - FIND PCI DEVICE (32-bit)
  1762.     AX = B182h
  1763.     CX = device ID
  1764.     DX = vendor ID
  1765.     SI = device index (0-n)
  1766. Return: as for AX=B102h
  1767. SeeAlso: AX=B102h
  1768. --------X-1AB183-----------------------------
  1769. INT 1A - Intel PCI BIOS v2.0c - FIND PCI CLASS CODE (32-bit)
  1770.     AX = B183h
  1771.     ECX = class code (bits 23-0)
  1772.     SI = device index (0-n)
  1773. Return: as for AX=B103h
  1774. SeeAlso: AX=B103h
  1775. --------X-1AB186-----------------------------
  1776. INT 1A - Intel PCI BIOS v2.0c - PCI BUS-SPECIFIC OPERATIONS (32-bit)
  1777.     AX = B186h
  1778.     BH = bus number
  1779.     EDX = Special Cycle data
  1780. Return: as for AX=B106h
  1781. Note:    the meanings of BL and BH on return were exchanged between the initial
  1782.       drafts of the specification and final implementation
  1783. SeeAlso: AX=B106h
  1784. --------X-1AB188-----------------------------
  1785. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION BYTE (32-bit)
  1786.     AX = B188h
  1787.     BH = bus number
  1788.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1789.     DI = register number (0000h-00FFh)
  1790. Return: as for AX=B108h
  1791. Note:    the meanings of BL and BH on return were exchanged between the initial
  1792.       drafts of the specification and final implementation
  1793. SeeAlso: AX=B108h
  1794. --------X-1AB189-----------------------------
  1795. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION WORD (32-bit)
  1796.     AX = B189h
  1797.     BH = bus number
  1798.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1799.     DI = register number (0000h-00FFh)
  1800. Return: as for AX=B109h
  1801. Note:    the meanings of BL and BH on return were exchanged between the initial
  1802.       drafts of the specification and final implementation
  1803. SeeAlso: AX=B109h
  1804. --------X-1AB18A-----------------------------
  1805. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION DWORD (32-bit)
  1806.     AX = B18Ah
  1807.     BH = bus number
  1808.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1809.     DI = register number (0000h-00FFh)
  1810. Return: as for AX=B10Ah
  1811. Note:    the meanings of BL and BH on return were exchanged between the initial
  1812.       drafts of the specification and final implementation
  1813. SeeAlso: AX=B10Ah
  1814. --------X-1AB18B-----------------------------
  1815. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION BYTE (32-bit)
  1816.     AX = B18Bh
  1817.     BH = bus number
  1818.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1819.     DI = register number (0000h-00FFh)
  1820.     CL = byte to write
  1821. Return: as for AX=B10Bh
  1822. Note:    the meanings of BL and BH on return were exchanged between the initial
  1823.       drafts of the specification and final implementation
  1824. SeeAlso: AX=B10Bh
  1825. --------X-1AB18C-----------------------------
  1826. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION WORD (32-bit)
  1827.     AX = B18Ch
  1828.     BH = bus number
  1829.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1830.     DI = register number (multiple of 2 less than 0100h)
  1831.     CX = word to write
  1832. Return: as for AX=B10Ch
  1833. Note:    the meanings of BL and BH on return were exchanged between the initial
  1834.       drafts of the specification and final implementation
  1835. SeeAlso: AX=B10Ch
  1836. --------X-1AB18D-----------------------------
  1837. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION DWORD (32-bit)
  1838.     AX = B18Dh
  1839.     BH = bus number
  1840.     BL = device/function number (bits 7-3 device, bits 2-0 function)
  1841.     DI = register number (multiple of 4 less than 0100h)
  1842.     ECX = dword to write
  1843. Return: as for AX=B10Dh
  1844. Note:    the meanings of BL and BH on return were exchanged between the initial
  1845.       drafts of the specification and final implementation
  1846. SeeAlso: AX=B10Dh
  1847. --------X-1AB400-----------------------------
  1848. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - INSTALLATION CHECK
  1849.     AX = B400h
  1850. Return: CF clear if installed
  1851.     AX = 0000h if installed
  1852.         BH = ??? (02h)
  1853.         BL = ??? (08h)
  1854.         CX = ??? (0002h)
  1855.         EDX = 47464341h ('GFCA', which is byte-swapped 'ACFG')
  1856.         SI = ??? (001Fh)
  1857. SeeAlso: AX=B401h,AX=B402h,AX=B403h,AX=B404h,AX=B405h,AX=B406h,AX=B407h
  1858. SeeAlso: @xxxxh:xxxxh"Plug-and-Play"
  1859.  
  1860. (Table 0551)
  1861. Values for Intel Plug-and-Play AUTO-CONFIGURATION error codes:
  1862.  0000h    successful
  1863.  0051h    ???
  1864.  0055h    unable to read/write configuration table from/to nonvolatile storage
  1865.  0056h    not a valid configuration table or wrong table version
  1866.  0059h    buffer too small
  1867.  FFFFh    ???
  1868. --------X-1AB401-----------------------------
  1869. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET DEFAULT CONFIG TABLE
  1870.     AX = B401h
  1871. Return: CF clear if successful
  1872.         AX = 0000h
  1873.         BX = maximum size of configuration table??? (1000h)
  1874.         CX = ??? (2000h)
  1875.         EDI = linear/physical address of ESCD table (see #0552)
  1876.     CF set on error
  1877.         AX = error code (see #0551)
  1878. SeeAlso: AX=B400h,AX=B402h,@xxxxh:xxxxh"Plug-and-Play"
  1879.  
  1880. Format of Intel Plug-and-Play Extended System Configuration Data table:
  1881. Offset    Size    Description    (Table 0552)
  1882.  00h    WORD    total length of this table
  1883.  02h  4 BYTEs    signature "ACFG"
  1884.  06h    BYTE    minor version number
  1885.  07h    BYTE    major version number (currently 02h)
  1886.  08h    BYTE    number of boards listed in the configuration data
  1887.  09h  3 BYTEs    reserved (00h)
  1888.  0Ch    var    board data
  1889.     WORD    checksum
  1890. Notes:    this table contains information about the standard devices in the
  1891.       system, such as serial ports, parallel ports, etc.  For each device,
  1892.       it includes at least the I/O port address (03F8h,02F8h,0378h,etc).
  1893.     the sum of all words in the table, including the checksum field (with
  1894.       implied zero padding if the length is odd), must equal 0000h
  1895. SeeAlso: #0553
  1896.  
  1897. Format of Extended System Configuration Data Board Header:
  1898. Offset    Size    Description    (Table 0553)
  1899.  00h    WORD    length of this header in bytes
  1900.  02h    BYTE    slot number
  1901.         00h motherboard
  1902.         01h-0Fh ISA/EISA
  1903.         10h-40h    PCI
  1904.  03h    BYTE    reserved (00h)
  1905. SeeAlso: #0552,#0554
  1906.  
  1907. Format of Extended System Configuration Data Freeform Board Header:
  1908. Offset    Size    Description    (Table 0554)
  1909.  00h  4 BYTEs    signature "ACFG"
  1910.  04h    BYTE    minor version number
  1911.  05h    BYTE    major version number (currently 02h)
  1912.  06h    BYTE    board type
  1913.         01h ISA
  1914.         02h EISA
  1915.         04h PCI
  1916.         08h PCMCIA
  1917.         10h PnPISA
  1918.         20h MCA
  1919.  07h    BYTE    reserved (00h)
  1920.  08h    WORD    disabled functions (bit N set = function N disabled)
  1921.  0Ah    WORD    configuration error functions
  1922.  0Ch    WORD    reconfigurable functions (bit N set = function N reconfig'able)
  1923.  0Eh  2 BYTEs    reserved (00h)
  1924. SeeAlso: #0557,#0558
  1925.  
  1926. Format of Extended System Configuration Data Freeform PCI Device Data:
  1927. Offset    Size    Description    (Table 0555)
  1928.  00h    BYTE    PCI bus number
  1929.  01h    BYTE    PCI device and function number
  1930.  02h    WORD    PCI device identifier
  1931.  04h    WORD    PCI vendor ID
  1932.         1002h = ATI
  1933.  06h  2 BYTEs    reserved (00h)
  1934. SeeAlso: #0555,#0558
  1935.  
  1936. Format of Extended System Configuration Data Freeform PnP ISA Board ID:
  1937. Offset    Size    Description    (Table 0556)
  1938.  00h    DWORD    vendor ID (EISA device identifier)
  1939.  04h    DWORD    serial number
  1940. SeeAlso: #0556,#0557
  1941.  
  1942. Format of Extended System Configuration Data PnP ISA ECD Extension Function:
  1943. Offset    Size    Description    (Table 0557)
  1944.  00h    WORD    001Eh (length of this structure)
  1945.  02h    BYTE    01h (selection size)
  1946.  03h    BYTE    00h (selection data)
  1947.  04h    BYTE    C0h (function information byte) (see #0560)
  1948.  05h    BYTE    18h (size of following free-format data)
  1949.  06h 16 BYTEs    freeform board header (see #0554)
  1950.  16h  8 BYTEs    Plug-and-Play board ID (see #0556)
  1951. Note:    ECD = Extended Configuration Data; this structure must be the last
  1952.       "function" for a particular ISA Plug-and-Play board
  1953. SeeAlso: #0558
  1954.  
  1955. Format of Extended System Configuration Data PCI ECD Extension Function:
  1956. Offset    Size    Description    (Table 0558)
  1957.  00h    WORD    length of this structure (at least 001Eh, up to 0056h)
  1958.  02h    BYTE    01h (selection size)
  1959.  03h    BYTE    00h (selection data)
  1960.  04h    BYTE    C0h (function information byte) (see #0560)
  1961.  05h    BYTE    size of following free-format data (at least 18h, max 50h)
  1962.  06h 16 BYTEs    freeform board header (see #0554)
  1963.  16h 8N BYTEs    PCI board ID (see #0555) for one to eight boards
  1964. Notes:    ECD = Extended Configuration Data; this structure must be the last
  1965.       "function" for a particular PCI board
  1966.     AMI BIOS v1.00.05.AX1 sets the length field to 001Ch for entries with
  1967.       a single board ID, apparently treating the field as the length of
  1968.       the remainder of the structure instead of the full structure's length
  1969. SeeAlso: #0557
  1970.  
  1971. Bitfields for EISA ID and Slot Information:
  1972. Bit(s)    Description    (Table 0559)
  1973.  3-0    selector among duplicate configuration file names (0000 if no dups)
  1974.  5-4    slot type
  1975.     00 expansion slot
  1976.     01 embedded
  1977.     10 virtual slot
  1978.     11 reserved
  1979.  6    ID is readable
  1980.  7    duplicate IDs present
  1981.  8    board can be disabled
  1982.  9    IOCHKERR supported
  1983.  10    board or entries locked
  1984.  13-11    reserved
  1985.  14    board does not have or need configuration file
  1986.  15    configuration not complete
  1987. SeeAlso: #0560
  1988.  
  1989. Bitfields for EISA Function Information:
  1990. Bit(s)    Description    (Table 0560)
  1991.  0    subtype data
  1992.  1    memory information (see #0561)
  1993.  2    IRQ information (see #0563)
  1994.  3    DMA information (see #0564)
  1995.  4    port range information (see #0565)
  1996.  5    port initialization data (see #0566)
  1997.  6    free form data
  1998.  7    function disabled
  1999. SeeAlso: #0557,#0558,#0559
  2000.  
  2001. Format of EISA Memory Information:
  2002. Offset    Size    Description    (Table 0561)
  2003.  00h    WORD    memory information flags (see #0562)
  2004.  02h  3 BYTEs    high 24 bits of memory start address (LSB first)
  2005.  05h    WORD    memory size in K (0000h = 65536K)
  2006. SeeAlso: #0560
  2007.  
  2008. Bitfields for EISA Memory Information Flags:
  2009. Bit(s)    Description    (Table 0562)
  2010.  0    writable (RAM rather than ROM)
  2011.  1    cached
  2012.  2    write-back cache rather than write-through
  2013.  4-3    memory type
  2014.     00 system
  2015.     01 expantion
  2016.     10 virtual
  2017.     11 other
  2018.  5    shared
  2019.  6    reserved (0)
  2020.  7    more entries follow
  2021.  9-8    memory width
  2022.     00 byte
  2023.     01 word
  2024.     10 dword
  2025.     11 reserved
  2026.  11-10    decoded address lines
  2027.     00 = 20
  2028.     01 = 24
  2029.     10 = 32
  2030.     11 reserved
  2031.  15-12    reserved (0)
  2032. SeeAlso: #0561
  2033.  
  2034. Bitfields for EISA IRQ Information:
  2035. Bit(s)    Description    (Table 0563)
  2036.  3-0    IRQ number
  2037.  4    reserved (0)
  2038.  5    IRQ triggering (0 = edge, 1 = level)
  2039.  6    IRQ is shareable
  2040.  7    more entries follow
  2041.  15-8    reserved (0)
  2042. SeeAlso: #0560
  2043.  
  2044. Bitfields for EISA DMA Information:
  2045. Bit(s)    Description    (Table 0564)
  2046.  2-0    DMA channel number
  2047.  5-3    reserved (0)
  2048.  6    shareable
  2049.  7    more entries follow
  2050.  9-8    reserved
  2051.  11-10    DMA transfer size
  2052.     00 byte
  2053.     01 word
  2054.     10 dword
  2055.     11 word, but count in bytes
  2056.  13-12    DMA timing
  2057.     00 ISA-compatible
  2058.     01 EISA type "A"
  2059.     10 EISA type "B"
  2060.     11 EISA type "C"/"F" (burst)
  2061.  15-14    reserved (0)
  2062. SeeAlso: #0560
  2063.  
  2064. Format of EISA Port Range Information:
  2065. Offset    Size    Description    (Table 0565)
  2066.  00h    BYTE    port description
  2067.         bits 4-0: number of sequential ports
  2068.         bit 5 reserved (0)
  2069.         bit 6: shareable
  2070.         bit 7: more entries follow
  2071.  01h    WORD    I/O port address
  2072. SeeAlso: #0560,#0566
  2073.  
  2074. Format of EISA Port Initialization Data:
  2075. Offset    Size    Description    (Table 0566)
  2076.  00h    BYTE    flags
  2077.         bits 1-0: port size
  2078.             00 byte
  2079.             01 word
  2080.             10 dword
  2081.             11 reserved
  2082.         bit 2: masked write
  2083.         bits 6-3 reserved (0)
  2084.         bit 7: more entries follow
  2085.  01h    ???
  2086. SeeAlso: #0560,#0565
  2087. --------X-1AB402-----------------------------
  2088. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - COPY AND VERIFY CONFIG TABLE
  2089.     AX = B402h
  2090.     DS:SI -> configuration table (see #0552)
  2091.     ES:DI -> buffer for copy of configuration table
  2092. Return: CF clear if successful
  2093.         AX = 0000h
  2094.     CF set on error
  2095.         AX = error code (0055h,0056h) (see #0551)
  2096. Note:    the buffer pointed at by ES:DI must be at least as large as the
  2097.       maximum configuration table size reported by AX=B401h
  2098. SeeAlso: AX=B400h,AX=B401h
  2099. --------X-1AB403-----------------------------
  2100. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - ???
  2101.     AX = B403h
  2102.     DS:SI -> configuration table (see #0552)
  2103. Return: CF clear if successful
  2104.         AX = 0000h
  2105.     CF set on error
  2106.         AX = error code (0055h) (see #0551)
  2107. Note:    sets the configuration table's checksum field, then ???
  2108. SeeAlso: AX=B400h
  2109. --------X-1AB404-----------------------------
  2110. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - ???
  2111.     AX = B404h
  2112.     BX = ???
  2113. Return: CF clear if successful
  2114.         AX = 0000h
  2115.         BX = ???
  2116.         CX = ???
  2117.         DX = ???
  2118.     CF set on error
  2119.         AX = error code (0051h) (see #0551)
  2120. SeeAlso: AX=B400h
  2121. --------X-1AB405-----------------------------
  2122. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET ???
  2123.     AX = B405h
  2124. Return: AX = ??? (0008h)
  2125. SeeAlso: AX=B400h
  2126. --------X-1AB406-----------------------------
  2127. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET ???
  2128.     AX = B406h
  2129.     ES:DI -> ??? header (see #0567)
  2130. Return: CF clear if successful
  2131.         AX = 0000h
  2132.         WORD ES:[DI] = size of returned data
  2133.     CF set on error
  2134.         AX = error code (0059h) (see #0551)
  2135.         WORD ES:[DI] = required size of buffer
  2136. SeeAlso: AX=B400h
  2137.  
  2138. Format of Intel Plug-and-Play AUTO-CONFIGURATION ??? header:
  2139. Offset    Size    Description    (Table 0567)
  2140.  00h    WORD    length of structure buffer
  2141.  02h    DWORD    -> structure array buffer (see #0568)
  2142.  
  2143. Format of Intel Plug-and-Play AUTO-CONFIGURATION ??? structure entry [array]:
  2144. Offset    Size    Description    (Table 0568)
  2145.  00h    BYTE    ???
  2146.  01h    BYTE    ???
  2147.  02h    BYTE    ???
  2148.  03h    WORD    ???
  2149.  05h    BYTE    ???
  2150.  06h    WORD    ???
  2151.  08h    BYTE    ???
  2152.  09h    WORD    ???
  2153.  0Bh    BYTE    ???
  2154.  0Ch    WORD    ???
  2155.  0Eh    WORD    ???
  2156. SeeAlso: #0567
  2157. --------X-1AB407-----------------------------
  2158. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - ???
  2159.     AX = B407h
  2160.     EDX = length of ???
  2161.     EDI = physical address of ???
  2162. Return: CF clear if successful
  2163.         AX = 0000h
  2164.         EDI = ???
  2165.     CF set on error
  2166.         AX = error code (FFFFh) (see #0551)
  2167. Note:    returns error if EDI < 000C0000h
  2168. SeeAlso: AX=B400h
  2169. --------X-1AB4-------------------------------
  2170. INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - 32-BIT API
  2171.     AH = B4h
  2172.     AL = function (80h-87h)
  2173.     further details not yet available
  2174. Note:    these functions are 32-bit versions of functions 00h-07h
  2175. --------c-1AC0-------------------------------
  2176. INT 1A U - Disk Spool II v2.07+ - ALTERNATE INSTALLATION CHECK
  2177.     AH = C0h
  2178. Return: (see AH=A0h)
  2179. Notes:    this call is identical to AH=A0h
  2180.     this function is also supported by Vertisoft's Emulaser utility ELSPL,
  2181.       as that is a licensed version of Disk Spool II
  2182. SeeAlso: AH=A0h,AH=ABh,AH=D0h
  2183. --------U-1ACCCCBXCCCC-----------------------
  2184. INT 1A U - DATEFIX - INSTALLATION CHECK
  2185.     AX = CCCCh
  2186.     BX = CCCCh
  2187.     CX = 0000h
  2188. Return: CX = CCCCh if installed
  2189.         ES:BX -> original interrupt handler
  2190. Program: DATEFIX is a public-domain TSR to correct the date on AT&T 6300
  2191.       machines, where the realtime clock's calendar wraps after 1991
  2192. SeeAlso: AH=FEh,AH=FFh"AT&T"
  2193. --------c-1AD0-------------------------------
  2194. INT 1A U - Disk Spool II v2.07+ - FUNCTION CALLS
  2195.     AH = D0h
  2196.     AL = function code
  2197.         01h enable spooler and despooler
  2198.         02h enable spooler only
  2199.         03h enable despooler at beginning of file
  2200.         04h disable the despooler
  2201.         05h disable the despooler and spooler
  2202.         06h clear the spool file
  2203.         08h inhibit the popup menu
  2204.         09h enable the popup menu
  2205.         0Ah ??? (called by Disk Spool's INT 21 handler)
  2206.         0Bh disable the spooler
  2207.         0Ch start despooler after last successfully printed document
  2208.         0Dh start despooler at the exact point where it last left off
  2209.         0Eh pop up the menu
  2210.         0Fh ???
  2211.         11h start new spool file??? (called by Disk Spool's INT 21 handler
  2212.             when a program terminates)
  2213.         14h ???
  2214.         15h delete despool file and reset ???
  2215.         16h ??? (writes something to unknown file)
  2216.         17h ??? (writes something to despool file, then reads something
  2217.             else and ???)
  2218.         18h ??? (reads something from despool file, and then ???)
  2219.         19h ??? (creates/truncates spool file)
  2220.         20h clear file pointed to by the despooler
  2221.         21h ??? (writes something to unknown file)
  2222.         22h ??? (writes something to spool file if spooler/despooler using
  2223.             same file)
  2224.         23h ??? (opens/creates unknown file, then ???)
  2225.         30h ???
  2226.         31h ???
  2227.         32h beep
  2228.         33h append CRLF to spool file???
  2229.         34h ???
  2230.         35h ???
  2231.         36h ???
  2232.         37h append CRLF to spool file and start a new spool file???
  2233.         38h ???
  2234.         40h ??? (v4.05)
  2235.         41h ??? (v4.05)
  2236.         51h ??? (called by Disk Spool's INT 21 handler)
  2237.         52h ??? (called by Disk Spool's INT 21 handler)
  2238.         57h ???
  2239.         5Ah ??? (v4.05)
  2240.         5Bh ??? (v4.05)
  2241.         5Ch ??? (v4.05)
  2242. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  2243.       as that is a licensed version of Disk Spool II
  2244. SeeAlso: AH=A0h,AH=ADh
  2245. --------c-1AE0-------------------------------
  2246. INT 1A - Disk Spool II v4.0x - ENABLE/DISABLE
  2247.     AH = E0h
  2248.     AL = subfunction
  2249.         01h enable spooler
  2250.         02h disable spooler
  2251.         03h enable despooler
  2252.         04h disable despooler
  2253.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  2254. Return: AH = status
  2255.         00h successful
  2256.         F0h printer port not managed by Disk Spool II
  2257.         FFH failed
  2258. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  2259.       as that is a licensed version of Disk Spool II
  2260. SeeAlso: AH=A0h,AH=E1h,AX=E301h,AX=E401h
  2261. --------c-1AE1-------------------------------
  2262. INT 1A - Disk Spool II v4.0x - GET STATUS
  2263.     AH = E1h
  2264.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  2265. Return: AH = status
  2266.         00h successful
  2267.         CL = despooler state (00h disabled, 41h enabled)
  2268.         CH = spooler state (00h disabled, 41h enabled)
  2269.         DL = despooler activity (00h standing by, 41h printing)
  2270.         ES:BX -> ASCIZ name of current spool file (or next if AutoSpool
  2271.             or AutoDespool enabled)
  2272.         ES:SI -> ASCIZ name of current despool file
  2273.         ES:DI -> 3-byte file extension used by Disk Spool II
  2274.         F0h printer port not managed by Disk Spool II
  2275. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  2276.       as that is a licensed version of Disk Spool II
  2277. SeeAlso: AH=A0h,AH=E0h,AH=E2h
  2278. --------U-1AE11B-----------------------------
  2279. INT 1A - TheGrab v4.60 - ???
  2280.     AX = E11Bh
  2281.     ???
  2282. Return: ??? (may destroy all registers)
  2283. SeeAlso: AX=E11Dh
  2284. --------U-1AE11D-----------------------------
  2285. INT 1A - TheGrab v4.60 - INSTALLATION CHECK
  2286.     AX = E11Dh
  2287. Return: ES:DI -> signature block (see #0569) if installed
  2288.         CX = length of signature block (000Fh)
  2289. Program: TheGrab is a resident ANSI screen grabber bundled with TheDraw
  2290. SeeAlso: AX=E11Bh
  2291.  
  2292. Format of TheGrab signature block:
  2293. Offset    Size    Description    (Table 0569)
  2294.  00h    BYTE    08h
  2295.  01h  8 BYTEs    ASCIZ "THEGRAB"
  2296.  09h  6 BYTEs    ??? (zeros)
  2297. --------c-1AE2-------------------------------
  2298. INT 1A - Disk Spool II v4.0x - GET SPOOL FILES
  2299.     AH = E2h
  2300.     AL = which
  2301.         01h first
  2302.         02h next (can only call after "first")
  2303.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  2304. Return: AH = status
  2305.         00h successful
  2306.         ES:BX -> ASCIZ filename
  2307.         F0h no (more) spool files
  2308.         FFh failed
  2309. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  2310.       as that is a licensed version of Disk Spool II
  2311. SeeAlso: AH=E0h,AH=E1h
  2312. --------c-1AE301-----------------------------
  2313. INT 1A - Disk Spool II v4.0x - GET SPOOL FILE STATUS
  2314.     AX = E301h
  2315.     ES:BX -> ASCIZ filename (max 32 chars)
  2316. Return: AH = status
  2317.         00h successful
  2318.         ES:SI -> spool file status record (see #0570)
  2319.         F0h not a spool file
  2320.         FFh failed
  2321. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  2322.       as that is a licensed version of Disk Spool II
  2323. SeeAlso: AH=E0h,AX=E302h,AX=E401h
  2324.  
  2325. Format of Disk Spool II spool file status record:
  2326. Offset    Size    Description    (Table 0570)
  2327.  00h    BYTE    hour of creation or last update
  2328.  01h    BYTE    minute of creation or last update
  2329.  02h    BYTE    year-1980 of creation or last update
  2330.  03h    BYTE    month of creation or last update
  2331.  04h    BYTE    day of creation or last update
  2332.  05h    BYTE    total number of copies to print
  2333.  06h    BYTE    number of copies already printed
  2334.  07h    BYTE    printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  2335.  08h    BYTE    save status (00h delete after printing, 01h save)
  2336.  09h    BYTE    file status
  2337.         01h done printing, but being saved
  2338.         02h on hold
  2339.         03h queued for printing
  2340.         04h being spooled
  2341.         05h being despooled (i.e. printed)
  2342.  0Ah 16 BYTEs    ASCIZ description
  2343.  1Ah  2 WORDs    file size in bytes (high,low)
  2344.  1Eh  2 WORDs    bytes left to print (high,low)
  2345. --------c-1AE302-----------------------------
  2346. INT 1A - Disk Spool II v4.0x - UPDATE SPOOL FILE
  2347.     AX = E302h
  2348.     ES:BX -> ASCIZ filename (max 32 chars)
  2349.     ES:SI -> spool file status record (see #0570)
  2350. Return: AH = status
  2351.         00h successful
  2352.         F0h not a spool file
  2353.         FFh failed
  2354. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  2355.       as that is a licensed version of Disk Spool II
  2356. SeeAlso: AH=E0h,AX=E301h,AX=E401h
  2357. --------c-1AE401-----------------------------
  2358. INT 1A - Disk Spool II v4.0x - SPOOL EXISTING FILE
  2359.     AX = E401h
  2360.     ES:BX -> ASCIZ filename (max 32 chars)
  2361.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  2362. Return: AH = status
  2363.         00h successful
  2364.         FFh failed
  2365. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  2366.       as that is a licensed version of Disk Spool II
  2367. SeeAlso: AH=E1h,AX=E302h,AX=E402h
  2368. --------c-1AE402-----------------------------
  2369. INT 1A U - Disk Spool II v4.0x - SPOOL EXISTING FILE???
  2370.     AX = E402h
  2371.     ES:BX -> ASCIZ filename (max 32 chars)
  2372.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  2373. Return: AH = status
  2374.         00h successful
  2375.         FFh failed
  2376. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  2377.       as that is a licensed version of Disk Spool II
  2378. SeeAlso: AH=E1h,AX=E302h,AX=E401h
  2379. --------c-1AE5-------------------------------
  2380. INT 1A U - Emulaser ELSPL.COM - ???
  2381.     AH = E5h
  2382.     ???
  2383. Return: ???
  2384. Program: ELSPL.COM is a licensed version of Disk Spool II which is distributed
  2385.       as part of Vertisoft's Emulaser PostScript emulator
  2386. SeeAlso: AH=A0h,INT 17/AH=03h
  2387. --------c-1AEE-------------------------------
  2388. INT 1A U - Disk Spool II v4.05 - ???
  2389.     AH = EEh
  2390.     AL = printer port???
  2391.     ???
  2392. Return: ???
  2393. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  2394.       as that is a licensed version of Disk Spool II
  2395. SeeAlso: AH=E1h
  2396. --------U-1AF7-------------------------------
  2397. INT 1A - RighTime v1.1 - TEMPORARILY DISABLE
  2398.     AH = F7h
  2399. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  2400.       time to correct for clock drift
  2401. Note:    any AH value from F0h-F7h or F9h-FEh will perform this function in
  2402.       version 1.1, but F7h is the function called by transient portion
  2403. SeeAlso: AH=F8h,AH=FFh"RighTime"
  2404. --------U-1AF8-------------------------------
  2405. INT 1A - RighTime v1.1 - ENABLE
  2406.     AH = F8h
  2407. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  2408.       time to correct for clock drift
  2409. Note:    RighTime is TeSseRact-compatible (see INT 2F/AX=5453h) and modifies its
  2410.       TeSseRact program identifier based on its current state: "RighTime"
  2411.       when enabled, "RighTim"F7h when disabled.
  2412. SeeAlso: AH=F7h,AH=FFh"RighTime"
  2413. --------b-1AFE-------------------------------
  2414. INT 1A - AT&T 6300 - READ TIME AND DATE
  2415.     AH = FEh
  2416. Return: BX = day count (0 = Jan 1, 1984)
  2417.     CH = hour
  2418.     CL = minute
  2419.     DH = second
  2420.     DL = hundredths
  2421. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FFh"AT&T",INT 21/AH=2Ah,INT 21/AH=2Ch
  2422. --------b-1AFF-------------------------------
  2423. INT 1A - AT&T 6300 - SET TIME AND DATE
  2424.     AH = FFh
  2425.     BX = day count (0 = Jan 1, 1984)
  2426.     CH = hour
  2427.     CL = minute
  2428.     DH = second
  2429.     DL = hundredths
  2430. Return: ???
  2431. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FEh,INT 21/AH=2Bh,INT 21/AH=2Dh
  2432. --------U-1AFF-------------------------------
  2433. INT 1A - RighTime v1.1 - PERMANENTLY DISABLE
  2434.     AH = FFh
  2435. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  2436.       time to correct for clock drift
  2437. Note:    upon being permanently disabled, RighTime closes the file handle
  2438.       referencing its executable (which is updated with time correction
  2439.       information every two minutes while RighTime is enabled).
  2440. --------s-1AFF00-----------------------------
  2441. INT 1A - SND - INSTALLATION CHECK???
  2442.     AX = FF00h
  2443. Return: AL = version??? (02h)
  2444.     AH = busy flag (00h if not in a SND call, 01h if SND currently active)
  2445. Note:    the SND API is also supported by IC (Internal Commands) v2.0, a
  2446.       shareware TSR by Geoff Friesen which extends COMMAND.COM's internal
  2447.       command set
  2448. SeeAlso: AX=FF01h,AX=FF02h,AX=FF04h,AX=FF05h
  2449. --------s-1AFF01-----------------------------
  2450. INT 1A - SND - PAUSE
  2451.     AX = FF01h
  2452.     DX = number of clock ticks to delay
  2453. Return: AH = status
  2454.         00h successful
  2455.         01h SND busy
  2456. Notes:    if successful, execution returns to the caller after the delay expires;
  2457.       if SND is busy, execution returns immediately
  2458.     the IC v2.0 implementation of this API makes no special allowance for
  2459.       time rollover at midnight, which can cause the delay to be over one
  2460.       hour if this function is called just before the BIOS time count
  2461.       rolls over and the delay extends into the next day
  2462. SeeAlso: AX=FF00h,INT 15/AH=86h,INT 62/AX=0096h,INT 7F/AH=E8h,INT 80/BX=0009h
  2463. SeeAlso: INT E0/CL=BDh
  2464. --------s-1AFF02-----------------------------
  2465. INT 1A - SND - START SOUND
  2466.     AX = FF02h
  2467.     DX = frequency in Hertz (14h-FFFFh)
  2468. Return: AH = status
  2469.         00h successful
  2470.         01h SND busy
  2471. SeeAlso: AX=FF00h,AX=FF01h,AX=FF03h
  2472. --------s-1AFF03-----------------------------
  2473. INT 1A - SND - STOP SOUND
  2474.     AX = FF03h
  2475. Return: AH = status
  2476.         00h successful
  2477.         01h busy
  2478. Note:    turns off any sound currently being emitted by the PC's speaker unless
  2479.       SND is currently busy processing an API call (this includes
  2480.       background music).  Use AX=FF05h to stop the sound even if an API
  2481.       call is in progress.
  2482. SeeAlso: AX=FF00h,AX=FF02h,AX=FF05h
  2483. --------s-1AFF04-----------------------------
  2484. INT 1A - SND - PLAY MUSIC STRING IN BACKGROUND
  2485.     AX = FF04h
  2486.     DS:DX -> ASCIZ music string
  2487. Return: AH = status
  2488.         00h successful (music begins playing in background)
  2489.         01h busy
  2490. Note:    the music string accepted by SND is not the same as that accepted by
  2491.       BASIC and other programs which process music strings
  2492. SeeAlso: AX=FF00h,AX=FF05h,INT 80/BX=0006h
  2493. --------s-1AFF05-----------------------------
  2494. INT 1A - SND - UNCONDITIONALLY STOP SOUND
  2495.     AX = FF05h
  2496. Return: AH = 00h (successful)
  2497. Note:    this function is the same as AX=FF03h, but will stop the sound even if
  2498.       SND is currently busy, such as playing background music
  2499. SeeAlso: AX=FF00h,AX=FF03h,INT 80/BX=0007h
  2500. --------B-1B---------------------------------
  2501. INT 1B C - KEYBOARD - CONTROL-BREAK HANDLER
  2502. Desc:    this interrupt is automatically called when INT 09 determines that
  2503.       Control-Break has been pressed
  2504. Note:    normally points to a short routine in DOS which sets the Ctrl-C flag,
  2505.       thus invoking INT 23h the next time DOS checks for Ctrl-C.
  2506. SeeAlso: INT 23
  2507. --------B-1C---------------------------------
  2508. INT 1C - TIME - SYSTEM TIMER TICK
  2509. Desc:    this interrupt is automatically called on each clock tick by the INT 08
  2510.       handler
  2511. Notes:    this is the preferred interrupt to chain when a program needs to be
  2512.       invoked regularly
  2513.     not available on NEC 9800-series PCs
  2514. SeeAlso: INT 08,INT E2"PC Cluster"
  2515. --------B-1D---------------------------------
  2516. INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
  2517. Note:    the default parameter table (see #0571) is located at F000h:F0A4h for
  2518.       100% compatible BIOSes
  2519. SeeAlso: INT 10/AH=00h
  2520.  
  2521. Format of video parameters:
  2522. Offset    Size    Description    (Table 0571)
  2523.  00h 16 BYTEs    6845 register values for modes 00h and 01h
  2524.  10h 16 BYTEs    6845 register values for modes 02h and 03h
  2525.  20h 16 BYTEs    6845 register values for modes 04h and 05h
  2526.  30h 16 BYTEs    6845 register values for modes 06h and 07h
  2527.  40h    WORD    bytes in video buffer for modes 00h and 01h (0800h)
  2528.  42h    WORD    bytes in video buffer for modes 02h and 03h (1000h)
  2529.  44h    WORD    bytes in video buffer for modes 04h and 05h (4000h)
  2530.  46h    WORD    bytes in video buffer for mode 06h (4000h)
  2531.  48h  8 BYTEs    columns on screen for each of modes 00h through 07h
  2532.  50h  8 BYTEs    CRT controller mode bytes for each of modes 00h through 07h
  2533. Note:    QEMM v7.5 Stealth appears to copy only the first 40h bytes of this
  2534.       table into always-accessible memory
  2535. --------B-1E---------------------------------
  2536. INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
  2537. Note:    the default parameter table (see #0572) is located at F000h:EFC7h for
  2538.       100% compatible BIOSes
  2539. SeeAlso: INT 13/AH=0Fh,INT 41,INT 4D/AH=0Ah
  2540.  
  2541. Format of diskette parameter table:
  2542. Offset    Size    Description    (Table 0572)
  2543.  00h    BYTE    first specify byte
  2544.         bits 7-4: step rate
  2545.         bits 3-0: head unload time (0Fh = 240 ms)
  2546.  01h    BYTE    second specify byte
  2547.         bits 7-1: head load time (01h = 4 ms)
  2548.         bit    0: non-DMA mode (always 0)
  2549.  02h    BYTE    delay until motor turned off (in clock ticks)
  2550.  03h    BYTE    bytes per sector (00h = 128, 01h = 256, 02h = 512, 03h = 1024)
  2551.  04h    BYTE    sectors per track
  2552.  05h    BYTE    length of gap between sectors (2Ah for 5.25", 1Bh for 3.5")
  2553.  06h    BYTE    data length (ignored if bytes-per-sector field nonzero)
  2554.  07h    BYTE    gap length when formatting (50h for 5.25", 6Ch for 3.5")
  2555.  08h    BYTE    format filler byte (default F6h)
  2556.  09h    BYTE    head settle time in milliseconds
  2557.  0Ah    BYTE    motor start time in 1/8 seconds
  2558. SeeAlso: #1878 at INT 4D/AH=09h
  2559. --------B-1F---------------------------------
  2560. INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT
  2561. Desc:    this vector points at 1024 bytes of graphics data, 8 bytes for each
  2562.       character 80h-FFh
  2563. Note:    graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100%
  2564.       compatible BIOSes
  2565. SeeAlso: INT 10/AX=5000h,INT 43
  2566. --------b-1F12-------------------------------
  2567. INT 1F U - C&T "SuperState" BIOS - POWER OFF
  2568.     AH = 12h
  2569. Return: none
  2570. Note:    POWER OFF
  2571. --------b-1F17-------------------------------
  2572. INT 1F U - C&T "SuperState" BIOS - EXECUTE FAR PROC ROUTINE ON SuperState
  2573.     AH = 17h
  2574.     ES:DI -> far procedure
  2575. Return: all registers except AH,ES,DI
  2576. Note:    You can change the BIOS area (F000h:0000h - F000h:FFFFh) only through
  2577.       this function
  2578. --------b-1F19-------------------------------
  2579. INT 1F U - C&T "SuperState" BIOS - ENABLE AUTO WAKEUP AND SET TIME AND DATE
  2580.     AH = 19h
  2581.     AL = hour in BCD
  2582.     BH = minutes in BCD
  2583.     BL = seconds in BCD
  2584.     CH = year century in BCD (must be 19h)
  2585.     CL = year low in BCD
  2586.     DH = month in BCD
  2587.     DL = date in BCD
  2588. Return: CF clear
  2589. --------b-1F1C-------------------------------
  2590. INT 1F U - C&T "SuperState" BIOS - SET SUSPEND TIMEOUT
  2591.     AH = 1Ch
  2592.     BX = sec until suspend starts
  2593. Return: None
  2594. --------b-1F1D-------------------------------
  2595. INT 1F U - C&T "SuperState" BIOS - SET SLEEP TIMEOUT
  2596.     AH = 1Dh
  2597.     BX = sec until sleep starts
  2598. Return: None
  2599. --------J-1F90-------------------------------
  2600. INT 1F - NEC PC-9801 - COPY EXTENDED MEMORY
  2601.     AH = 90h
  2602.     ES:BX -> global descriptor table (see #0375 at INT 15/AH=87h)
  2603.     CX = number of bytes to copy
  2604.     SI = 0000h
  2605.     DI = 0000h
  2606. Return: CF clear if successful
  2607.     CF set on error
  2608.     ???
  2609. SeeAlso: INT 15/AH=87h
  2610. --------b-1FF5--BLFA-------------------------
  2611. INT 1F U - C&T "SuperState" BIOS - REQUEST PASSWORD INPUT
  2612.     AH = F5h
  2613.     BL = FAh
  2614. Return: none
  2615. Note:    this function will not return until the correct password is entered
  2616. SeeAlso: AH=F5h/BL=FDh,AX=F5h/BL=FEh
  2617. --------b-1FF5--BLFD-------------------------
  2618. INT 1F U - C&T "SuperState" BIOS - ENCRYPT PASSWORD
  2619.     AH = F5h
  2620.     BL = FDh
  2621.     CX:SI = input string
  2622.     DX:DI = encrypted string
  2623.     BH = length of input string
  2624. Return: CF set on error
  2625. SeeAlso: AH=F5h/BL=FAh,AX=F5h/BL=FEh
  2626. --------b-1FF5--BLFE-------------------------
  2627. INT 1F U - C&T "SuperState" BIOS - SET PASSWORD
  2628.     AH = F5h
  2629.     BL = FEh
  2630.     CX:SI -> input string
  2631.     BH = length of input string (if BH = 00h, clear password)
  2632. Return: CF set on error
  2633. Note:    the input string must be encrypted by INT 1Fh/AH=F5h/BL=FDh
  2634. SeeAlso: AH=F5h/BL=FDh,AX=F5h/BL=FFh
  2635. --------b-1FF5--BLFF-------------------------
  2636. INT 1F U - C&T "SuperState" BIOS - GET ENCRYPTED PASSWORD
  2637.     AH = F5h
  2638.     BL = FFh
  2639.     DX:DI = string buffer
  2640. Return: CF set on error
  2641.     CF clear if successful
  2642.         BH = length of input string (if BH = 00h, password is not valid)
  2643.         DX:DI -> encrypted password string
  2644. SeeAlso: AH=F5h/BL=FDh,AX=F5h/BL=FEh
  2645. --------b-1FFB-------------------------------
  2646. INT 1F U - C&T "SuperState" BIOS - GET/SET CPU SPEED
  2647.     AH = FBh
  2648.     BL = function
  2649.         00h get CPU speed
  2650.         Return: AL = current CPU speed (00h = fast, 01h = slow)
  2651.         01h set CPU speed
  2652.         AL = new CPU speed (00h = fast, 01h = slow)
  2653. SeeAlso: AH=FCh/BL=00h
  2654. --------b-1FFC--BL00-------------------------
  2655. INT 1F U - C&T "SuperState" BIOS - GET ALARM STATUS
  2656.     AH = FCh
  2657.     BL = 00h
  2658. Return: AL = current alarm state (00h = disabled, 01h = enabled)
  2659. SeeAlso: AH=FCh/BL=01h,AH=FCh/BL=02h
  2660. --------b-1FFC--BL01-------------------------
  2661. INT 1F U - C&T "SuperState" BIOS - SET ALARM STATUS
  2662.     AH = FCh
  2663.     BL = 01h
  2664.     AL = new alarm state (00h = disabled, 01h = enabled)
  2665. SeeAlso: AH=FCh/BL=00h,AH=FCh/BL=03h
  2666. --------b-1FFC--BL02-------------------------
  2667. INT 1F U - C&T "SuperState" BIOS - GET ALARM TIME
  2668.     AH = FCh
  2669.     BL = 02h
  2670. Return: CH = hour by BCD
  2671.     CL = min by BCD
  2672.     DH = sec by BCD
  2673. SeeAlso: AH=FCh/BL=00h,AH=FCh/BL=03h,AH=FCh/BL=04h
  2674. --------b-1FFC--BL03-------------------------
  2675. INT 1F U - C&T "SuperState" BIOS - SET ALARM TIME
  2676.     AH = FCh
  2677.     BL = 03h
  2678.     CH = hour by BCD
  2679.     CL = min by BCD
  2680.     DH = sec by BCD
  2681. Return: CF set on error (incorrect time format or Alarm is not enable)
  2682. SeeAlso: AH=FCh/BL=01h,AH=FCh/BL=02h,AH=FCh/BL=05h
  2683. --------b-1FFC--BL04-------------------------
  2684. INT 1F U - C&T "SuperState" BIOS - GET ALARM DATE
  2685.     AH = FCh
  2686.     BL = 04h
  2687. Return: CH = year century by BCD
  2688.     CL = year low by BCD
  2689.     DH = month by BCD
  2690.     DL = date by BCD
  2691. SeeAlso: AH=FCh/BL=02h,AH=FCh/BL=05h
  2692. --------b-1FFC--BL05-------------------------
  2693. INT 1F U - C&T "SuperState" BIOS - SET ALARM DATE
  2694.     AH = FCh
  2695.     BL = 05h
  2696.     CH = year century by BCD
  2697.     CL = year low by BCD
  2698.     DH = month by BCD
  2699.     DL = date by BCD
  2700. Return: CF set on error (incorrect date format or Alarm is not enable)
  2701. SeeAlso: AH=FCh/BL=03h,AH=FCh/BL=04h
  2702. --------b-1FFD--BL00-------------------------
  2703. INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP STATUS
  2704.     AH = FDh
  2705.     BL = 00h
  2706. Return: AL = current wake-up state (00h = disabled, 01h = enabled)
  2707. SeeAlso: AH=FDh/BL=01h,AH=FDh/BL=02h
  2708. --------b-1FFD--BL01-------------------------
  2709. INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP STATUS
  2710.     AH = FDh
  2711.     BL = 01h
  2712.     AL = new wake-up state (00h = disabled, 01h = enabled)
  2713. SeeAlso: AH=FDh/BL=00h,AH=FDh/BL=03h
  2714. --------b-1FFD--BL02-------------------------
  2715. INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP TIME
  2716.     AH = FDh
  2717.     BL = 02h
  2718. Return: CH = hour by BCD
  2719.     CL = min by BCD
  2720.     DH = sec by BCD
  2721. SeeAlso: AH=FDh/BL=00h,AH=FDh/BL=03h
  2722. --------b-1FFD-------------------------------
  2723. INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP TIME
  2724.        AH = FDh
  2725.        BL = 3h
  2726.        CH = hour by BCD
  2727.        CL = min by BCD
  2728.        DH = sec by BCD
  2729. Return: CF set on error (incorrect Time format or Auto Wake up is not enable)
  2730. SeeAlso: AH=FDh/BL=01h,AH=FDh/BL=02h
  2731. --------b-1FFD--BL04-------------------------
  2732. INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP DATE
  2733.     AH = FDh
  2734.     BL = 04h
  2735. Return: CH = year century in BCD
  2736.     CL = year low in BCD
  2737.     DH = month in BCD
  2738.     DL = date in BCD
  2739. SeeAlso: AH=FDh/BL=02h,AH=FDh/BL=05h
  2740. --------b-1FFD--BL05-------------------------
  2741. INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP DATE
  2742.     AH = FDh
  2743.     BL = 05h
  2744.     CH = year century in BCD
  2745.     CL = year low in BCD
  2746.     DH = month in BCD
  2747.     DL = date in BCD
  2748. Return: CF set on error (incorrect date format or Auto Wake up is not enable)
  2749. SeeAlso: AH=FDh/BL=03h,AH=FDh/BL=04h
  2750. --------O-20---------------------------------
  2751. INT 20 - Minix - SEND/RECEIVE MESSAGE
  2752.     AX = process ID of other process
  2753.     BX -> message
  2754.     CX = operation (1 send, 2 receive, 3 send&receive)
  2755. Program: Minix is a Version 7 Unix-compatible operating system by Andrew
  2756.       Tanenbaum
  2757. Note:    the message contains the system call number (numbered as in V7
  2758.       Unix(tm)) and the call parameters
  2759. --------D-20---------------------------------
  2760. INT 20 - DOS 1+ - TERMINATE PROGRAM
  2761.     CS = PSP segment
  2762. Return: never
  2763. Note:    (see INT 21/AH=00h)
  2764. SeeAlso: INT 21/AH=00h,INT 21/AH=4Ch
  2765. --------G-20---------------------------------
  2766. INT 20 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE FIRMWARE DEBUGGER
  2767.     ???
  2768. Return: ???
  2769. SeeAlso: INT 21"COMTROL"
  2770. --------W-20---------------------------------
  2771. INT 20 P - Microsoft Windows - VxD FUNCTIONS
  2772. Note:    the desired VxD and function are identified by the data immediately
  2773.       following the INT 20 instruction, as in:
  2774.         INT    20h
  2775.         DW    function number
  2776.         DW    VxD identifier
  2777.  
  2778. (Table 2631)
  2779. Values for VMM (VxD ID 0001h) function number:
  2780.  00h    get version
  2781.  01h    get current VM handle
  2782.  02h    test current VM handle
  2783.  03h    get system VM handle
  2784.  04h    test system VM handle
  2785.  05h    validate VM handle
  2786.  06h    get VMM reenter count
  2787.  07h    begin reentrant execution
  2788.  08h    end reentrant execution
  2789.  09h    install V86 breakpoint
  2790.  0Ah    remove V86 breakpoint
  2791.  0Bh    allocate V86 callback
  2792.  0Ch    allocation PM callback
  2793.  0Dh    call when VM returns
  2794.  0Eh    schedule global event
  2795.  0Fh    schedule VM event
  2796.  10h    call global event
  2797.  11h    call VM event
  2798.  12h    cancel global event
  2799.  13h    cancel VM event
  2800.  14h    call priority VM event
  2801.  15h    cancel priority VM event
  2802.  16h    get NMI handler address
  2803.  17h    set NMI handler address
  2804.  18h    hook NMI event
  2805.  19h    call when VM interrupts enabled
  2806.  1Ah    enable VM interrupts
  2807.  1Bh    disable VM interrupts
  2808.  1Ch    map flat
  2809.  1Dh    map linear to VM address
  2810.  1Eh    adjust execution priority
  2811.  1Fh    begin critical section
  2812.  20h    end critical section
  2813.  21h    end critical section and suspend
  2814.  22h    claim critical section
  2815.  23h    release critical section
  2816.  24h    call when not critical
  2817.  25h    create semaphore
  2818.  26h    destroy semaphore
  2819.  27h    wait on semaphore
  2820.  28h    signal semaphore
  2821.  29h    get critical section status
  2822.  2Ah    call when task switched
  2823.  2Bh    suspend VM
  2824.  2Ch    resume VM
  2825.  2Dh    no-fail resume VM
  2826.  2Eh    nuke VM
  2827.  2Fh    crash current VM
  2828.  30h    get execution focus
  2829.  31h    set execution focus
  2830.  32h    get time slice priority
  2831.  33h    set time slice priority
  2832.  34h    get time slice granularity
  2833.  35h    set time slice granularity
  2834.  36h    get time slice information
  2835.  37h    adjust execution time
  2836.  38h    release time slice
  2837.  39h    wake up VM
  2838.  3Ah    call when idle
  2839.  3Bh    get next VM handle
  2840.  3Ch    set global timeout
  2841.  3Dh    set VM timeout
  2842.  3Eh    cancel timeout
  2843.  3Fh    get system time
  2844.  40h    get VM execution time
  2845.  41h    hook V86 interrupt chain
  2846.  42h    get V86 interrupt vector
  2847.  43h    set V86 interrupt vector
  2848.  44h    get PM interrupt vector
  2849.  45h    set PM interrupt vector
  2850.  46h    simulate interrupt
  2851.  47h    simulate IRET
  2852.  48h    simulate far call
  2853.  49h    simulate far jump
  2854.  4Ah    simulate far RET
  2855.  4Bh    simulate far RET N
  2856.  4Ch    build interrupt stack frame
  2857.  4Dh    simulate push
  2858.  4Eh    simulate pop
  2859.  4Fh    _HeapAllocate
  2860.  50h    _HeapReAllocate
  2861.  51h    _HeapFree
  2862.  52h    _HeapGetSize
  2863.  53h    _PageAllocate
  2864.  54h    _PageReAllocate
  2865.  55h    _PageFree
  2866.  56h    _PageLock
  2867.  57h    _PageUnLock
  2868.  58h    _PageGetSizeAddr
  2869.  59h    _PageGetAllocInfo
  2870.  5Ah    _GetFreePageCount
  2871.  5Bh    _GetSysPageCount
  2872.  5Ch    _GetVMPgCount
  2873.  5Dh    _MapIntoV86
  2874.  5Eh    _PhysIntoV86
  2875.  5Fh    _TestGlobalV86Mem
  2876.  60h    _ModifyPageBits
  2877.  61h    copy page table
  2878.  62h    map linear into V86
  2879.  63h    linear page lock
  2880.  64h    linear page unlock
  2881.  65h    _SetResetV86Pageabl
  2882.  66h    _GetV86PageableArray
  2883.  67h    _PageCheckLinRange
  2884.  68h    page out dirty pages
  2885.  69h    discard pages
  2886.  6Ah    _GetNulPageHandle
  2887.  6Bh    get first V86 page
  2888.  6Ch    map physical address to linear address
  2889.  6Dh    _GetAppFlatDSAlias
  2890.  6Eh    _SelectorMapFlat
  2891.  6Fh    _GetDemandPageInfo
  2892.  70h    _GetSetPageOutCount
  2893.  71h    hook V86 page
  2894.  72h    assign device V86 pages
  2895.  73h    deassign device V86 pages
  2896.  74h    get array of V86 pages for device
  2897.  75h    _SetNULPageAddr
  2898.  76h    allocate GDT selector
  2899.  77h    free GDT selector
  2900.  78h    allocate LDT selector
  2901.  79h    free LDT selector
  2902.  7Ah    _BuildDescriptorDWORDs
  2903.  7Bh    get descriptor
  2904.  7Ch    set descriptor
  2905.  7Dh    toggle HMA
  2906.  7Eh    get fault hook addresses
  2907.  7Fh    hook V86 fault
  2908.  80h    hook PM fault
  2909.  81h    hook VMM fault
  2910.  82h    begin nested V86 execution
  2911.  83h    begin nested execution
  2912.  84h    execute interrupt
  2913.  85h    resume execution
  2914.  86h    end nested execution
  2915.  87h    allocate PM application callback area
  2916.  88h    get current PM application callback area
  2917.  89h    set V86 execution mode
  2918.  8Ah    set PM execution mode
  2919.  8Bh    begin using locked PM stack
  2920.  8Ch    end using locked PM stack
  2921.  8Dh    save client state
  2922.  8Eh    restore client state
  2923.  8Fh    execute VxD interrupt
  2924.  90h    hook device service
  2925.  91h    hook device V86 API
  2926.  92h    hook device PM API
  2927.  93h    system control
  2928.  94h    simulate I/O
  2929.  95h    install multiple I/O handlers
  2930.  96h    install I/O handler
  2931.  97h    enable global trapping
  2932.  98h    enable local trapping
  2933.  99h    disable global trapping
  2934.  9Ah    disable local trapping
  2935.  9Bh    create list
  2936.  9Ch    destroy list
  2937.  9Dh    allocate list
  2938.  9Eh    attach list
  2939.  9Fh    attach list tail
  2940.  A0h    insert into list
  2941.  A1h    remove from list
  2942.  A2h    deallocate list
  2943.  A3h    get first item in list
  2944.  A4h    get next item in list
  2945.  A5h    remove first item in list
  2946.  A6h    add instance item
  2947.  A7h    allocate device callback area
  2948.  A8h    allocate global V86 data area
  2949.  A9h    allocate temporary V86 data area
  2950.  AAh    free temporary V86 data area
  2951.  ABh    get decimal integer from profile
  2952.  ACh    convert decimal string to integer
  2953.  ADh    get fixed-point number from profile
  2954.  AEh    convert fixed-point string
  2955.  AFh    get hex integer from profile
  2956.  B0h    convert hex string to integer
  2957.  B1h    get boolean value from profile
  2958.  B2h    convert boolean string
  2959.  B3h    get string from profile
  2960.  B4h    get next string from profile
  2961.  B5h    get environment string
  2962.  B6h    get exec path
  2963.  B7h    get configuration directory
  2964.  B8h    open file
  2965.  B9h    get PSP segment
  2966.  BAh    get DOS vectors
  2967.  BBh    get machine information
  2968.  BCh    get/set HMA information
  2969.  BDh    set system exit code
  2970.  BEh    fatal error handler
  2971.  BFh    fatal memory error
  2972.  C0h    update system clock
  2973.  C1h    test if debugger installed
  2974.  C2h    output debugger string
  2975.  C3h    output debugger character
  2976.  C4h    input debugger character
  2977.  C5h    debugger convert hex to binary
  2978.  C6h    debugger convert hex to decimal
  2979.  C7h    debugger test if valid handle
  2980.  C8h    validate client pointer
  2981.  C9h    test reentry
  2982.  CAh    queue debugger string
  2983.  CBh    log procedure call
  2984.  CCh    debugger test current VM
  2985.  CDh    get PM interrupt type
  2986.  CEh    set PM interrupt type
  2987.  CFh    get last updated system time
  2988.  D0h    get last updated VM execution time
  2989.  D1h    test if double-byte character-set lead byte
  2990.  D2h    _AddFreePhysPage
  2991.  D3h    _PageResetHandlePAddr
  2992.  D4h    _SetLastV86Page
  2993.  D5h    _GetLastV86Page
  2994.  D6h    _MapFreePhysReg
  2995.  D7h    _UnmapFreePhysReg
  2996.  D8h    _XchgFreePhysReg
  2997.  D9h    _SetFreePhysRegCalBk
  2998.  DAh    get next arena (MCB)
  2999.  DBh    get name of ugly TSR
  3000.  DCh    get debug options
  3001.  DDh    set physical HMA alias
  3002.  DEh    _GetGlblRng0V86IntBase
  3003.  DFh    add global V86 data area
  3004.  E0h    get/set detailed VM error
  3005.  E1h    Is_Debug_Chr
  3006.  E2h    clear monochrome screen
  3007.  E3h    output character to mono screen
  3008.  E4h    output string to mono screen
  3009.  E5h    set current position on mono screen
  3010.  E6h    get current position on mono screen
  3011.  E7h    get character from mono screen
  3012.  E8h    locate byte in ROM
  3013.  E9h    hook invalid page fault
  3014.  EAh    unhook invalid page fault
  3015.  EBh    set delete on exit file
  3016. SeeAlso: #2632
  3017.  
  3018. (Table 2632)
  3019. Values for VPICD (VxD ID 0003h) function number:
  3020.  00h    get version
  3021.  01h    virtualize IRQ
  3022.  02h    set interrupt request
  3023.  03h    clear interrupt request
  3024.  04h    physical EOI
  3025.  05h    get complete status
  3026.  06h    get status
  3027.  07h    test physical request
  3028.  08h    physically mask
  3029.  09h    physically unmask
  3030.  0Ah    set automatic masking
  3031.  0Bh    get IRQ complete status
  3032.  0Ch    convert handle to IRQ
  3033.  0Dh    convert IRQ to interrupt
  3034.  0Eh    convert interrupt to IRQ
  3035.  0Fh    call on hardware interrupt
  3036.  10h    force default owner
  3037.  11h    force default behavior
  3038. SeeAlso: #2631,#2633
  3039.  
  3040. (Table 2633)
  3041. Values for VDMAD (VxD ID 0004h) function number:
  3042.  00h    get version
  3043.  01h    virtualize channel
  3044.  02h    get region information
  3045.  03h    set region information
  3046.  04h    get virtual state
  3047.  05h    set virtual state
  3048.  06h    set physical state
  3049.  07h    mask channel
  3050.  08h    unmask channel
  3051.  09h    lock DMA region
  3052.  0Ah    unlock DMA region
  3053.  0Bh    scatter lock
  3054.  0Ch    scatter unlock
  3055.  0Dh    reserve buffer space
  3056.  0Eh    request buffer
  3057.  0Fh    release buffer
  3058.  10h    copy to buffer
  3059.  11h    copy from buffer
  3060.  12h    default handler
  3061.  13h    disable translation
  3062.  14h    enable translation
  3063.  15h    get EISA address mode
  3064.  16h    set EISA address mode
  3065.  17h    unlock DMA region (ND)
  3066. SeeAlso: #2632,#1420,#1431 at INT 2F/AX=1684h/BX=0444h
  3067.  
  3068. (Table 2654)
  3069. Values for VTD (VxD ID 0005h) function number:
  3070.  0000h    get version
  3071.  0001h    update system clock
  3072.  0002h    get interrupt period
  3073.  0003h    begin minimum interrupt period
  3074.  0004h    end minimum interrupt period
  3075.  0005h    disable trapping
  3076.  0006h    enable trapping
  3077.  0007h    get real time
  3078. SeeAlso: #1420 at INT 2F/AX=1684h/BX=0005h
  3079.  
  3080. (Table 2634)
  3081. Values for V86MMGR (VxD ID 0006h) function number:
  3082.  00h    get version
  3083.  01h    allocate V86 pages
  3084.  02h    set EMS and XMS limits
  3085.  03h    get EMS and XMS limits
  3086.  04h    set mapping information
  3087.  05h    get mapping information
  3088.  06h    Xlat API
  3089.  07h    load client pointer
  3090.  08h    allocate buffer
  3091.  09h    free buffer
  3092.  0Ah    get Xlat buffer state
  3093.  0Bh    set Xlat buffer state
  3094.  0Ch    get VM flat selector
  3095.  0Dh    map pages
  3096.  0Eh    free page map region
  3097.  0Fh    _LocalGlobalReg
  3098.  10h    get page status
  3099.  11h    set local A20
  3100.  12h    reset base pages
  3101.  13h    set available mapped pages
  3102. SeeAlso: #1420,#2635
  3103.  
  3104. (Table 2635)
  3105. Values for PageSwap (VxD ID 0007h) function number:
  3106.  00h    get version
  3107.  01h    test create
  3108.  02h    create swap file
  3109.  03h    destroy swap file
  3110.  04h    in
  3111.  05h    out
  3112.  06h    test if I/O valid
  3113. SeeAlso: #2634,#2636,#1421
  3114.  
  3115. (Table 2636)
  3116. Values for VDD (VxD ID 000Ah) function number:
  3117.  00h    get version
  3118.  01h    PIF state
  3119.  02h    get GrabRtn
  3120.  03h    hide cursor
  3121.  04h    set VM type
  3122.  05h    get ModTime
  3123.  06h    set HCurTrk
  3124.  07h    message clear screen
  3125.  08h    message foreground color
  3126.  09h    message background color
  3127.  0Ah    message output text
  3128.  0Bh    message set cursor position
  3129.  0Ch    query access
  3130. SeeAlso: #2635,#2637,#1421
  3131.  
  3132. (Table 2637)
  3133. Values for VSD (VxD ID 000Bh) function number:
  3134.  00h    get version
  3135.  01h    bell
  3136. SeeAlso: #2636,#2638
  3137.  
  3138. (Table 2638)
  3139. Values for VMD (VxD ID 000Ch) function number:
  3140.  00h    get version
  3141.  01h    set mouse type
  3142.  02h    get mouse owner
  3143. SeeAlso: #2637,#2639
  3144.  
  3145. (Table 2639)
  3146. Values for VKD (VxD ID 000Dh) function number:
  3147.  00h    get version
  3148.  01h    define hotkey
  3149.  02h    remove hotkey
  3150.  03h    locally enable hotkey
  3151.  04h    locally disable hotkey
  3152.  05h    reflect hotkey
  3153.  06h    cancel hotkey state
  3154.  07h    force keys
  3155.  08h    get keyboard owner
  3156.  09h    define paste mode
  3157.  0Ah    start pasting
  3158.  0Bh    cancel paste
  3159.  0Ch    get message key
  3160.  0Dh    peek message key
  3161.  0Eh    flush message key queue
  3162. SeeAlso: #2638,#2640
  3163.  
  3164. (Table 2640)
  3165. Values for VCD (VxD ID 000Eh) function number:
  3166.  00h    get version
  3167.  01h    set port global
  3168.  02h    get focus
  3169.  03h    virtualize port
  3170. SeeAlso: #2639,#2641
  3171.  
  3172. (Table 2641)
  3173. Values for BlockDev (VxD ID 0010h) function number:
  3174.  00h    get version
  3175.  01h    register device
  3176.  02h    find INT 13 drive
  3177.  03h    get device list
  3178.  04h    send command
  3179.  05h    command complete
  3180.  06h    synchronous command
  3181. SeeAlso: #2640,#2642
  3182.  
  3183. (Table 2642)
  3184. Values for EBIOS (VxD ID 0012h) function number:
  3185.  00h    get version
  3186.  01h    get unused memory
  3187. SeeAlso: #2641,#2643
  3188.  
  3189. (Table 2643)
  3190. Values for VNETBIOS (VxD ID 0014h) function number:
  3191.  00h    get version
  3192. SeeAlso: #2642,#2647
  3193.  
  3194. (Table 2647)
  3195. Values for DOSMGR (VxD ID 0015h) function number:
  3196.  00h    get version
  3197.  01h    set exec VM data
  3198.  02h    coyp VM drive state
  3199.  03h    execute VM
  3200.  04h    get InDOS pointer
  3201.  05h    add device
  3202.  06h    remove device
  3203.  07h    instance device
  3204.  08h    get DOS critical status
  3205.  09h    enable InDOS polling
  3206.  0Ah    backfill allowed
  3207.  0Bh    "LocalGlobalReg"
  3208. SeeAlso: #2643,#1422 at INT 2F/AX=1684h/BX=0015h
  3209.  
  3210. (Table 2655)
  3211. Values for SHELL (VxD ID 0017h) function number:
  3212.  00h    get version
  3213.  01h    resolve contention
  3214.  02h    event
  3215.  03h    SYSMODAL message
  3216.  04h    message
  3217.  05h    get VM information
  3218. SeeAlso: #2647,#2644,#1423 at INT 2F/AX=1684h/BX=0017h
  3219.  
  3220. (Table 2644)
  3221. Values for VMPoll (VxD ID 0018h) function number:
  3222.  00h    get version
  3223.  01h    enable/disable
  3224.  02h    reset detection
  3225. SeeAlso: #2654,#1423 at INT 2F/AX=1684h/BX=0017h
  3226.  
  3227. (Table 2645)
  3228. Values for DOSNET (VxD ID 001Ah) function number:
  3229.  00h    get version
  3230.  01h    send FILESYSCHANGE
  3231.  02h    do PSP adjust
  3232. SeeAlso: #2644,#2646
  3233.  
  3234. (Table 2646)
  3235. Values for Int13 (VxD ID 0020h) function number:
  3236.  00h    get version
  3237.  01h    device registered
  3238.  02h    translate VM interrupt
  3239.  03h    hooking BIOS interrupt
  3240.  04h    unhooking BIOS interrupt
  3241. SeeAlso: #2645,#2656
  3242.  
  3243. (Table 2656)
  3244. Values for PAGEFILE (VxD ID 0021h) function number:
  3245.  00h    get version
  3246.  01h    init file
  3247.  02h    clean up
  3248.  03h    grow file
  3249.  04h    read or write
  3250.  05h    cancel
  3251.  06h    test I/O valid
  3252. SeeAlso: #2646,#1427 at INT 2F/AX=1684h/BX=0021h
  3253. --------G-21---------------------------------
  3254. INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
  3255.     ???
  3256. Return: AX = first segment available for control program use
  3257. SeeAlso: INT 20"COMTROL",INT 22"COMTROL"
  3258. --------D-2100-------------------------------
  3259. INT 21 - DOS 1+ - TERMINATE PROGRAM
  3260.     AH = 00h
  3261.     CS = PSP segment
  3262. Notes:    Microsoft recommends using INT 21/AH=4Ch for DOS 2+
  3263.     execution continues at the address stored in INT 22 after DOS performs
  3264.       whatever cleanup it needs to do
  3265.     if the PSP is its own parent, the process's memory is not freed; if
  3266.       INT 22 additionally points into the terminating program, the
  3267.       process is effectively NOT terminated
  3268.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  3269. SeeAlso: AH=26h,AH=31h,AH=4Ch,INT 20,INT 22
  3270. --------D-2101-------------------------------
  3271. INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
  3272.     AH = 01h
  3273. Return: AL = character read
  3274. Notes:    ^C/^Break are checked, and INT 23 executed if read
  3275.     character is echoed to standard output
  3276.     standard input is always the keyboard and standard output the screen
  3277.       under DOS 1.x, but they may be redirected under DOS 2+
  3278. SeeAlso: AH=06h,AH=07h,AH=08h,AH=0Ah
  3279. --------D-2102-------------------------------
  3280. INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
  3281.     AH = 02h
  3282.     DL = character to write
  3283. Return: AL = last character output (despite the official docs which state
  3284.         nothing is returned) (at least DOS 3.3-5.0)
  3285. Notes:    ^C/^Break are checked, and INT 23 executed if pressed
  3286.     standard output is always the screen under DOS 1.x, but may be
  3287.       redirected under DOS 2+
  3288.     the last character output will be the character in DL unless DL=09h
  3289.       on entry, in which case AL=20h as tabs are expanded to blanks
  3290. SeeAlso: AH=06h,AH=09h
  3291. --------D-2103-------------------------------
  3292. INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
  3293.     AH = 03h
  3294. Return: AL = character read
  3295. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  3296.     STDAUX is usually the first serial port
  3297. SeeAlso: AH=04h,INT 14/AH=02h,INT E0/CL=03h
  3298. --------D-2104-------------------------------
  3299. INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
  3300.     AH = 04h
  3301.     DL = character to write
  3302. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  3303.     STDAUX is usually the first serial port
  3304.     if STDAUX is busy, this function will wait until it becomes free
  3305. SeeAlso: AH=03h,INT 14/AH=01h,INT E0/CL=04h
  3306. --------D-2105-------------------------------
  3307. INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
  3308.     AH = 05h
  3309.     DL = character to print
  3310. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  3311.     STDPRN is usually the first parallel port, but may be redirected under
  3312.       DOS 2+
  3313.     if the printer is busy, this function will wait
  3314. SeeAlso: INT 17/AH=00h
  3315. --------D-2106-------------------------------
  3316. INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
  3317.     AH = 06h
  3318.     DL = character (except FFh)
  3319. Return: AL = character output (despite official docs which state nothing is
  3320.         returned) (at least DOS 3.3-5.0)
  3321. Notes:    does not check ^C/^Break
  3322.     writes to standard output, which is always the screen under DOS 1.x,
  3323.       but may be redirected under DOS 2+
  3324. SeeAlso: AH=02h,AH=09h
  3325. --------D-2106--DLFF-------------------------
  3326. INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
  3327.     AH = 06h
  3328.     DL = FFh
  3329. Return: ZF set if no character available
  3330.         AL = 00h
  3331.     ZF clear if character available
  3332.         AL = character read
  3333. Notes:    ^C/^Break are NOT checked
  3334.     if the returned character is 00h, the user pressed a key with an
  3335.       extended keycode, which will be returned by the next call of this
  3336.       function
  3337.     this function reads from standard input, which is always the keyboard
  3338.       under DOS 1.x, but may be redirected under DOS 2+
  3339.     although the return of AL=00h when no characters are available is not
  3340.       documented, some programs rely on this behavior
  3341. SeeAlso: AH=0Bh
  3342. --------D-2107-------------------------------
  3343. INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
  3344.     AH = 07h
  3345. Return: AL = character read from standard input
  3346. Notes:    does not check ^C/^Break
  3347.     standard input is always the keyboard under DOS 1.x, but may be
  3348.       redirected under DOS 2+
  3349.     if the interim console flag is set (see AX=6301h), partially-formed
  3350.       double-byte characters may be returned
  3351. SeeAlso: AH=01h,AH=06h,AH=08h,AH=0Ah
  3352. --------D-2108-------------------------------
  3353. INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
  3354.     AH = 08h
  3355. Return: AL = character read from standard input
  3356. Notes:    ^C/^Break are checked, and INT 23 executed if detected
  3357.     standard input is always the keyboard under DOS 1.x, but may be
  3358.       redirected under DOS 2+
  3359.     if the interim console flag is set (see AX=6301h), partially-formed
  3360.       double-byte characters may be returned
  3361. SeeAlso: AH=01h,AH=06h,AH=07h,AH=0Ah,AH=64h
  3362. --------D-2109-------------------------------
  3363. INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
  3364.     AH = 09h
  3365.     DS:DX -> '$'-terminated string
  3366. Return: AL = 24h (the '$' terminating the string, despite official docs which
  3367.         state that nothing is returned) (at least DOS 3.3-5.0)
  3368. Notes:    ^C/^Break are checked, and INT 23 is called if either pressed
  3369.     standard output is always the screen under DOS 1.x, but may be
  3370.       redirected under DOS 2+
  3371.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  3372. SeeAlso: AH=02h,AH=06h"OUTPUT"
  3373. --------D-210A-------------------------------
  3374. INT 21 - DOS 1+ - BUFFERED INPUT
  3375.     AH = 0Ah
  3376.     DS:DX -> buffer (see #0573)
  3377. Return: buffer filled with user input
  3378. Notes:    ^C/^Break are checked, and INT 23 is called if either detected
  3379.     reads from standard input, which may be redirected under DOS 2+
  3380.     if the maximum buffer size (see #0573) is set to 00h, this call returns
  3381.       immediately without reading any input
  3382. SeeAlso: AH=0Ch,INT 2F/AX=4810h
  3383.  
  3384. Format of DOS input buffer:
  3385. Offset    Size    Description    (Table 0573)
  3386.  00h    BYTE    maximum characters buffer can hold
  3387.  01h    BYTE    (call) number of chars from last input which may be recalled
  3388.         (ret) number of characters actually read, excluding CR
  3389.  02h  N BYTEs    actual characters read, including the final carriage return
  3390. --------K-210A00-----------------------------
  3391. INT 21 - WCED v1.6+ - INSTALLATION CHECK
  3392.     AX = 0A00h
  3393.     DS:DX -> 6-byte buffer whose first two bytes must be 00h
  3394. Return: buffer offset 02h-05h filled with "Wced" if installed
  3395. Program: WCED is a free command-line editor and history utility by Stuart
  3396.       Russell
  3397. SeeAlso: AH=FFh"CED"
  3398. --------D-210B-------------------------------
  3399. INT 21 - DOS 1+ - GET STDIN STATUS
  3400.     AH = 0Bh
  3401. Return: AL = status
  3402.         00h if no character available
  3403.         FFh if character is available
  3404. Notes:    ^C/^Break are checked, and INT 23 is called if either pressed
  3405.     standard input is always the keyboard under DOS 1.x, but may be
  3406.       redirected under DOS 2+
  3407.     if the interim console flag is set (see AX=6301h), this function
  3408.       returns AL=FFh if a partially-formed double-byte character is
  3409.       available
  3410. SeeAlso: AH=06h"INPUT",AX=4406h
  3411. --------v-210B56-----------------------------
  3412. INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
  3413.     AX = 0B56h
  3414. Return: AX = 4952h if resident
  3415. SeeAlso: AX=0D20h,INT 12/AX=4350h/BX=4920h,INT 13/AH=F2h
  3416. --------D-210C-------------------------------
  3417. INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
  3418.     AH = 0Ch
  3419.     AL = STDIN input function to execute after flushing buffer
  3420.     other registers as appropriate for the input function
  3421. Return: as appropriate for the specified input function
  3422. Note:    if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but
  3423.       no input is attempted
  3424. SeeAlso: AH=01h,AH=06h"INPUT",AH=07h,AH=08h,AH=0Ah
  3425. --------D-210D-------------------------------
  3426. INT 21 - DOS 1+ - DISK RESET
  3427.     AH = 0Dh
  3428. Return: (DOS 6 only) CF clear (earlier versions preserve CF)
  3429. Notes:    This function writes all modified disk buffers to disk, but does not
  3430.       update the directory information (that is only done when files are
  3431.       closed or a SYNC call is issued)
  3432. SeeAlso: AX=5D01h,INT 13/AH=00h,INT 2F/AX=1120h
  3433. --------v-210D20-----------------------------
  3434. INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
  3435.     AX = 0D20h
  3436. Return: AX = 1971h if resident
  3437. SeeAlso: AX=0B56h,AX=1812h,AX=2C2Ch,AH=30h/DX=ABCDh
  3438. --------D-210E-------------------------------
  3439. INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
  3440.     AH = 0Eh
  3441.     DL = new default drive (00h = A:, 01h = B:, etc)
  3442. Return: AL = number of potentially valid drive letters
  3443. Notes:    under Novell NetWare, the return value is always 32, the number of
  3444.       drives that NetWare supports
  3445.     under DOS 3.0+, the return value is the greatest of 5, the value of
  3446.       LASTDRIVE= in CONFIG.SYS, and the number of drives actually present
  3447.     on a DOS 1.x/2.x single-floppy system, AL returns 2 since the floppy
  3448.       may be accessed as either A: or B:
  3449.     otherwise, the return value is the highest drive actually present
  3450.     DOS 1.x supports a maximum of 16 drives, 2.x a maximum of 63 drives,
  3451.       and 3+ a maximum of 26 drives
  3452.     under Novell DOS 7, this function returns the correct LASTDRIVE value
  3453.       even when the undocumented LASTDRIVE=32 directive was used in
  3454.       CONFIG.SYS
  3455. SeeAlso: AH=19h,AH=3Bh,AH=DBh
  3456. --------v-210E--DLAD-------------------------
  3457. INT 21 U - Novell DOS 7 - SDRes v27.03 - INSTALLATION CHECK
  3458.     AH = 0Eh
  3459.     DL = ADh
  3460. Return: AL = BAh if installed
  3461. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  3462.       Fifth Generation Systems, as bundled with Novell DOS 7
  3463. Note:    SDRes will terminate programs which test for the presence of viruses
  3464.       using interrupt-based installation calls, saying that the program
  3465.       may be infected
  3466. SeeAlso: AH=0Eh/DL=AEh,AH=0Eh/DL=AFh,AH=4Ah/BX=00B6h,INT 13/AX=A759h
  3467. --------v-210E--DLAE-------------------------
  3468. INT 21 U - Novell DOS 7 - SDRes v27.03 - CLEAR ??? FLAG
  3469.     AH = 0Eh
  3470.     DL = AEh
  3471. SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AFh,INT 13/AX=A759h
  3472. --------v-210E--DLAF-------------------------
  3473. INT 21 U - Novell DOS 7 - SDRes v27.03 - SET ??? FLAG
  3474.     AH = 0Eh
  3475.     DL = AFh
  3476. SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AEh,INT 13/AX=A759h
  3477. --------D-210F-------------------------------
  3478. INT 21 - DOS 1+ - OPEN FILE USING FCB
  3479.     AH = 0Fh
  3480.     DS:DX -> unopened File Control Block (see #0574)
  3481. Return: AL = status
  3482.         00h successful
  3483.         FFh file not found or access denied
  3484. Notes:    (DOS 3.1+) file opened for read/write in compatibility mode
  3485.     an unopened FCB has the drive, filename, and extension fields filled
  3486.       in and all other bytes cleared
  3487.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  3488.     DR-DOS checks password attached with AX=4303h
  3489. BUG:    APPEND for DOS 3.3+ corrupts DX if the file is not found
  3490. SeeAlso: AH=10h,AH=16h,AH=3Dh,AX=4303h
  3491.  
  3492. Format of File Control Block:
  3493. Offset    Size    Description    (Table 0574)
  3494.  -7    BYTE    extended FCB if FFh
  3495.  -6   5 BYTEs    reserved
  3496.  -1    BYTE    file attribute if extended FCB
  3497.  00h    BYTE    drive number (0 = default, 1 = A, etc)
  3498.  01h  8 BYTEs    blank-padded file name
  3499.  09h  3 BYTEs    blank-padded file extension
  3500.  0Ch    WORD    current block number
  3501.  0Eh    WORD    logical record size
  3502.  10h    DWORD    file size
  3503.  14h    WORD    date of last write (see #0877 at AX=5700h)
  3504.  16h    WORD    time of last write (see #0876 at AX=5700h) (DOS 1.1+)
  3505.  18h  8 BYTEs    reserved (see #0575,#0576,#0577,#0578,#0579)
  3506.  20h    BYTE    record within current block
  3507.  21h    DWORD    random access record number (if record size is > 64 bytes, high
  3508.           byte is omitted)
  3509. Note:    to use an extended FCB, you must specify the address of the FFh flag at
  3510.       offset -7, rather than the address of the drive number field
  3511.  
  3512. Format of FCB reserved field for DOS 1.0:
  3513. Offset    Size    Description    (Table 0575)
  3514.  16h    WORD    location in directory (if high byte = FFh, low byte is device
  3515.           ID)
  3516.  18h    WORD    number of first cluster in file
  3517.  1Ah    WORD    current absolute cluster number on disk
  3518.  1Ch    WORD    current relative cluster number within file
  3519.         (0 = first cluster of file, 1 = second cluster, etc.)
  3520.  1Eh    BYTE    dirty flag (00h = not dirty)
  3521.  1Fh    BYTE    unused
  3522.  
  3523. Format of FCB reserved field for DOS 1.10-1.25:
  3524. Offset    Size    Description    (Table 0576)
  3525.  18h    BYTE    bit 7: set if logical device
  3526.         bit 6: not dirty
  3527.         bits 5-0: disk number or logical device ID
  3528.  19h    WORD    starting cluster number on disk
  3529.  1Bh    WORD    current absolute cluster number on disk
  3530.  1Dh    WORD    current relative cluster number within file
  3531.  1Fh    BYTE    unused
  3532.  
  3533. Format of FCB reserved field for DOS 2.x:
  3534. Offset    Size    Description    (Table 0577)
  3535.  18h    BYTE    bit 7: set if logical device
  3536.         bit 6: set if open???
  3537.         bits 5-0: ???
  3538.  19h    WORD    starting cluster number on disk
  3539.  1Bh    WORD    ???
  3540.  1Dh    BYTE    ???
  3541.  1Eh    BYTE    ???
  3542.  1Fh    BYTE    ???
  3543.  
  3544. Format of FCB reserved field for DOS 3.x:
  3545. Offset    Size    Description    (Table 0578)
  3546.  18h    BYTE    number of system file table entry for file
  3547.  19h    BYTE    attributes
  3548.         bits 7,6: 00 = SHARE.EXE not loaded, disk file
  3549.               01 = SHARE.EXE not loaded, character device
  3550.               10 = SHARE.EXE loaded, remote file
  3551.               11 = SHARE.EXE loaded, local file or device
  3552.         bits 5-0: low six bits of device attribute word
  3553. ---SHARE.EXE loaded, local file---
  3554.  1Ah    WORD    starting cluster of file on disk
  3555.  1Ch    WORD    (DOS 3.x) offset within SHARE of sharing record
  3556.           (see #0849 at AH=52h)
  3557.  1Eh    BYTE    file attribute
  3558.  1Fh    BYTE    ???
  3559. ---SHARE.EXE loaded, remote file---
  3560.  1Ah    WORD    number of sector containing directory entry
  3561.  1Ch    WORD    relative cluster within file of last cluster accessed
  3562.  1Eh    BYTE    absolute cluster number of last cluster accessed
  3563.  1Fh    BYTE    ???
  3564. ---SHARE.EXE not loaded---
  3565.  1Ah    BYTE    (low byte of device attribute word AND 0Ch) OR open mode
  3566.  1Bh    WORD    starting cluster of file
  3567.  1Dh    WORD    number of sector containing directory entry
  3568.  1Fh    BYTE    number of directory entry within sector
  3569. Note:    if FCB opened on character device, DWORD at 1Ah is set to the address
  3570.       of the device driver header, then the BYTE at 1Ah is overwritten.
  3571.  
  3572. Format of FCB reserved field for DOS 5.0:
  3573. Offset    Size    Description    (Table 0579)
  3574.  18h    BYTE    number of system file table entry for file
  3575.  19h    BYTE    attributes
  3576.         bits 7,6: 00 = SHARE.EXE not loaded, disk file
  3577.               01 = SHARE.EXE not loaded, character device
  3578.               10 = SHARE.EXE loaded, remote file
  3579.               11 = SHARE.EXE loaded, local file or device
  3580.         bits 5-0: low six bits of device attribute word
  3581. ---SHARE.EXE loaded, local file---
  3582.  1Ah    WORD    starting cluster of file on disk
  3583.  1Ch    WORD    unique sequence number of sharing record
  3584.  1Eh    BYTE    file attributes
  3585.  1Fh    BYTE    unused???
  3586. ---SHARE.EXE loaded, remote file---
  3587.  1Ah    WORD    network handle
  3588.  1Ch    DWORD    network ID
  3589. ---SHARE not loaded, local device---
  3590.  1Ah    DWORD    pointer to device driver header
  3591.  1Eh  2 BYTEs    unused???
  3592. ---SHARE not loaded, local file---
  3593.  1Ah    BYTE    extra info
  3594.         bit 7: read-only attribute from SFT
  3595.         bit 6: archive attribute from SFT
  3596.         bits 5-0: high bits of sector number
  3597.  1Bh    WORD    starting cluster of file
  3598.  1Dh    WORD    low word of sector number containing directory entry
  3599.  1Fh    BYTE    number of directory entry within sector
  3600. --------D-2110-------------------------------
  3601. INT 21 - DOS 1+ - CLOSE FILE USING FCB
  3602.     AH = 10h
  3603.     DS:DX -> File Control Block (see #0574)
  3604. Return: AL = status
  3605.         00h successful
  3606.         FFh failed
  3607. Notes:    a successful close forces all disk buffers used by the file to be
  3608.       written and the directory entry to be updated
  3609.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  3610. SeeAlso: AH=0Fh,AH=16h,AH=3Eh
  3611. --------D-2111-------------------------------
  3612. INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
  3613.     AH = 11h
  3614.     DS:DX -> unopened FCB (see #0574), may contain '?' wildcards
  3615. Return: AL = status
  3616.         00h successful
  3617.         [DTA] unopened FCB for first matching file
  3618.         FFh no matching filename, or bad FCB
  3619. Notes:    the type of the returned FCB depends on whether the input FCB was a
  3620.       normal or an extended FCB
  3621.     the data returned in the DTA is actually the drive number (or extended
  3622.       FCB header and drive number) followed by the file's directory entry
  3623.       (see #0580); this format happens to be compatible with an unopened
  3624.       FCB
  3625.     for extended FCBs with search attribute 08h, the volume label (if any)
  3626.       will be returned even if the current directory is not the root dir.
  3627.     DOS 3.0+ also allows the '*' wildcard
  3628.     the search FCB must not be modified if AH=12h will be used to continue
  3629.       searching; DOS 3.3 has set the following parts of the FCB:
  3630.          0Ch    BYTE    ???
  3631.          0Dh    WORD    directory entry number of matching file
  3632.          0Fh    WORD    cluster number of current directory
  3633.          11h  4 BYTEs    ???
  3634.          15h    BYTE    drive number (1=A:)
  3635.     this function is used by many copy protection schemes to obtain the
  3636.       starting cluster of a file
  3637. SeeAlso: AH=12h,AH=1Ah,AH=4Eh,INT 2F/AX=111Bh
  3638.  
  3639. Format of DOS directory entry:
  3640. Offset    Size    Description    (Table 0580)
  3641.  00h  8 BYTEs    blank-padded filename
  3642.  08h  3 BYTEs    blank-padded file extension
  3643.  0Bh    BYTE    attributes
  3644.  0Ch 10 BYTEs    reserved
  3645.         used by DR-DOS to store file password
  3646.  16h    WORD    time of creation or last update (see #0876 at AX=5700h)
  3647.  18h    WORD    date of creation or last update (see #0877 at AX=5700h)
  3648.  1Ah    WORD    starting cluster number
  3649.  1Ch    DWORD    file size
  3650. --------D-2112-------------------------------
  3651. INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
  3652.     AH = 12h
  3653.     DS:DX -> unopened FCB (see #0574)
  3654. Return: AL = status
  3655.         00h successful
  3656.         [DTA] = unopened FCB
  3657.         FFh no more matching filenames
  3658. Note:    (see AH=11h)
  3659.     assumes that successful FindFirst executed on search FCB before call
  3660. SeeAlso: AH=1Ah,AH=4Fh,INT 2F/AX=111Ch
  3661. --------D-2113-------------------------------
  3662. INT 21 - DOS 1+ - DELETE FILE USING FCB
  3663.     AH = 13h
  3664.     DS:DX -> unopened FCB (see #0574), filename filled with template for
  3665.         deletion ('?' wildcards allowed)
  3666. Return: AL = status
  3667.         00h one or more files successfully deleted
  3668.         FFh no matching files or all were read-only or locked
  3669. Notes:    DOS 1.25+ deletes everything in the current directory (including
  3670.       subdirectories) and sets the first byte of the name to 00h (entry
  3671.       never used) instead of E5h if called on an extended FCB with
  3672.       filename '???????????' and bits 0-4 of the attribute set (bits 1 and
  3673.       2 for DOS 1.x).  This may have originally been an optimization to
  3674.       minimize directory searching after a mass deletion (DOS 1.25+ stop
  3675.       the directory search upon encountering a never-used entry), but can
  3676.       corrupt the filesystem under DOS 2+ because subdirectories are
  3677.       removed without deleting the files they contain.
  3678.     currently-open files should not be deleted
  3679.     MS-DOS allows deletion of read-only files with an extended FCB, whereas
  3680.       Novell NetWare, DR-DOS 6, and Novell DOS 7 do not
  3681. SeeAlso: AH=41h,INT 2F/AX=1113h
  3682. --------D-2114-------------------------------
  3683. INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
  3684.     AH = 14h
  3685.     DS:DX -> opened FCB (see #0574)
  3686. Return: AL = status
  3687.         00h successful
  3688.         01h end of file (no data)
  3689.         02h segment wrap in DTA
  3690.         03h end of file, partial record read
  3691.     [DTA] = record read from file
  3692. Notes:    reads a record of the size specified in the FCB beginning at the
  3693.       current file position, then updates the current block and current
  3694.       record fields in the FCB
  3695.     if a partial record was read, it is zero-padded to the full size
  3696.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  3697. SeeAlso: AH=0Fh,AH=15h,AH=1Ah,AH=3Fh,INT 2F/AX=1108h
  3698. --------D-2115-------------------------------
  3699. INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
  3700.     AH = 15h
  3701.     DS:DX -> opened FCB (see #0574)
  3702.     [DTA] = record to write
  3703. Return: AL = status
  3704.         00h successful
  3705.         01h disk full
  3706.         02h segment wrap in DTA
  3707. Notes:    writes a record of the size specified in the FCB beginning at the
  3708.       current file position, then updates the current block and current
  3709.       record fields in the FCB
  3710.     if less than a full sector is written, the data is placed in a DOS
  3711.       buffer to be written out at a later time
  3712.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  3713. SeeAlso: AH=0Fh,AH=14h,AH=1Ah,AH=40h,INT 2F/AX=1109h
  3714. --------D-2116-------------------------------
  3715. INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
  3716.     AH = 16h
  3717.     DS:DX -> unopened FCB (see #0574), wildcards not allowed
  3718. Return: AL = status
  3719.         00h successful
  3720.         FFh directory full or file exists and is read-only or locked
  3721. Notes:    if file already exists, it is truncated to zero length
  3722.     if an extended FCB is used, the file is given the attribute in the
  3723.       FCB; this is how to create a volume label in the disk's root dir
  3724.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  3725. SeeAlso: AH=0Fh,AH=10h,AH=3Ch
  3726. --------D-2117-------------------------------
  3727. INT 21 - DOS 1+ - RENAME FILE USING FCB
  3728.     AH = 17h
  3729.     DS:DX -> modified FCB (see also #0574)
  3730.         the old filename ('?' wildcards OK) is in the standard location
  3731.         while the new filename ('?' wildcards OK, no drive) is stored
  3732.         in the 11 bytes beginning at offset 11h
  3733. Return: AL = status
  3734.         00h successfully renamed
  3735.         FFh no matching files,file is read-only, or new name already exists
  3736. Notes:    subdirectories may be renamed using an extended FCB with the
  3737.       appropriate attribute, as may volume labels
  3738.     DR-DOS checks password attached with AX=4303h before permitting rename
  3739. SeeAlso: AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h
  3740. --------D-2118-------------------------------
  3741. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  3742.     AH = 18h
  3743. Return: AL = 00h
  3744. Note:    corresponds to the CP/M BDOS function "get bit map of logged drives",
  3745.       which is meaningless under MS-DOS
  3746. SeeAlso: AH=1Dh,AH=1Eh,AH=20h,AX=4459h,INT 60/DI=0513h
  3747. --------v-211812------------------------
  3748. INT 21 - VIRUS - "Tasha Yar" - INSTALLATION CHECK
  3749.     AX = 1812h
  3750. Return: AL = 00h if resident
  3751.     DX = 4310h if resident
  3752. SeeAlso: INT 16/AH=DDh"VIRUS",INT 21/AX=2C2Ch"VIRUS"
  3753. --------D-2119-------------------------------
  3754. INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
  3755.     AH = 19h
  3756. Return: AL = drive (00h = A:, 01h = B:, etc)
  3757. Note:    Novell NetWare uses the fact that DOS 2.x COMMAND.COM issues this call
  3758.       from a particular location every time it starts a command to
  3759.       determine when to issue an automatic EOJ
  3760. SeeAlso: AH=0Eh,AH=47h,AH=BBh
  3761. --------D-211A-------------------------------
  3762. INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
  3763.     AH = 1Ah
  3764.     DS:DX -> Disk Transfer Area (DTA)
  3765. Notes:    the DTA is set to PSP:0080h when a program is started
  3766.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  3767. SeeAlso: AH=11h,AH=12h,AH=2Fh,AH=4Eh,AH=4Fh
  3768. --------D-211B-------------------------------
  3769. INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
  3770.     AH = 1Bh
  3771. Return: AL = sectors per cluster (allocation unit)
  3772.     CX = bytes per sector
  3773.     DX = total number of clusters
  3774.     DS:BX -> media ID byte (see #0581)
  3775. Note:    under DOS 1.x, DS:BX points at an actual copy of the FAT; later
  3776.       versions return a pointer to a copy of the FAT's ID byte
  3777. SeeAlso: AH=1Ch,AH=36h
  3778.  
  3779. (Table 0581)
  3780. Values for media ID byte:
  3781.  FFh    floppy, double-sided, 8 sectors per track (320K)
  3782.  FEh    floppy, single-sided, 8 sectors per track (160K)
  3783.  FDh    floppy, double-sided, 9 sectors per track (360K)
  3784.  FCh    floppy, single-sided, 9 sectors per track (180K)
  3785.  FAh    HP 200LX D: ROM disk, 16 sectors per track (995K)
  3786.     HP 200LX E: (Stacker host drive ???)
  3787.  F9h    floppy, double-sided, 15 sectors per track (1.2M)
  3788.     floppy, double-sided, 9 sectors per track (720K,3.5")
  3789.  F8h    hard disk
  3790.  F0h    other media
  3791.     (e.g. floppy, double-sized, 18 sectors per track -- 1.44M,3.5")
  3792. --------D-211C-------------------------------
  3793. INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
  3794.     AH = 1Ch
  3795.     DL = drive (00h = default, 01h = A:, etc)
  3796. Return: AL = sectors per cluster (allocation unit), or FFh if invalid drive
  3797.     CX = bytes per sector
  3798.     DX = total number of clusters
  3799.     DS:BX -> media ID byte (see #0581)
  3800. Notes:    under DOS 1.x, DS:BX points at an actual copy of the FAT; later
  3801.       versions return a pointer to a copy of the FAT's ID byte
  3802.     on a DBLSPACE drive, the total number of clusters is based on the
  3803.       estimated compression ratio
  3804. SeeAlso: AH=1Bh,AH=36h
  3805. --------D-211D-------------------------------
  3806. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  3807.     AH = 1Dh
  3808. Return: AL = 00h
  3809. Note:    corresponds to the CP/M BDOS function "get bit map of read-only
  3810.       drives", which is meaningless under MS-DOS
  3811. SeeAlso: AH=18h,AH=1Eh,AH=20h,AX=4459h
  3812. --------D-211E-------------------------------
  3813. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  3814.     AH = 1Eh
  3815. Return: AL = 00h
  3816. Note:    corresponds to the CP/M BDOS function "set file attributes" which was
  3817.      meaningless under MS-DOS 1.x
  3818. SeeAlso: AH=18h,AH=1Dh,AH=20h
  3819. --------D-211F-------------------------------
  3820. INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
  3821.     AH = 1Fh
  3822. Return: AL = status
  3823.         00h successful
  3824.         DS:BX -> Drive Parameter Block (DPB) (see #0582 for DOS 1.x,
  3825.             AH=32h for DOS 2+)
  3826.         FFh invalid drive
  3827. Note:    this call was undocumented prior to the release of DOS 5.0; however,
  3828.       only the DOS 4.0+ version of the DPB has been documented
  3829. SeeAlso: AH=32h
  3830.  
  3831. Format of DOS 1.1 and MS-DOS 1.25 drive parameter block:
  3832. Offset    Size    Description    (Table 0582)
  3833.  00h    BYTE    sequential device ID
  3834.  01h    BYTE    logical drive number (0=A:)
  3835.  02h    WORD    bytes per sector
  3836.  04h    BYTE    highest sector number within a cluster
  3837.  05h    BYTE    shift count to convert clusters into sectors
  3838.  06h    WORD    starting sector number of first FAT
  3839.  08h    BYTE    number of copies of FAT
  3840.  09h    WORD    number of directory entries
  3841.  0Bh    WORD    number of first data sector
  3842.  0Dh    WORD    highest cluster number (number of data clusters + 1)
  3843.  0Fh    BYTE    sectors per FAT
  3844.  10h    WORD    starting sector of directory
  3845.  12h    WORD    address of allocation table
  3846. Note:    the DOS 1.0 table is the same except that the first and last fields
  3847.       are missing; see INT 21/AH=32h for the DOS 2+ version
  3848. --------D-2120-------------------------------
  3849. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  3850.     AH = 20h
  3851. Return: AL = 00h
  3852. Note:    corresponds to the CP/M BDOS function "get/set default user
  3853.       (sublibrary) number", which is meaningless under MS-DOS
  3854. SeeAlso: AH=18h,AH=1Dh,AH=1Eh,AX=4459h
  3855. --------D-2121-------------------------------
  3856. INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
  3857.     AH = 21h
  3858.     DS:DX -> opened FCB (see #0574)
  3859. Return: AL = status
  3860.         00h successful
  3861.         01h end of file, no data read
  3862.         02h segment wrap in DTA, no data read
  3863.         03h end of file, partial record read
  3864.     [DTA] = record read from file
  3865. Notes:    the record is read from the current file position as specified by the
  3866.       random record and record size fields of the FCB
  3867.     the file position is not updated after reading the record
  3868.     if a partial record is read, it is zero-padded to the full size
  3869.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  3870. SeeAlso: AH=14h,AH=22h,AH=27h,AH=3Fh
  3871. --------D-2122-------------------------------
  3872. INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
  3873.     AH = 22h
  3874.     DS:DX -> opened FCB (see #0574)
  3875.     [DTA] = record to write
  3876. Return: AL = status
  3877.         00h successful
  3878.         01h disk full
  3879.         02h segment wrap in DTA
  3880. Notes:    the record is written to the current file position as specified by the
  3881.       random record and record size fields of the FCB
  3882.     the file position is not updated after writing the record
  3883.     if the record is located beyond the end of the file, the file is
  3884.       extended but the intervening data remains uninitialized
  3885.     if the record only partially fills a disk sector, it is copied to a
  3886.       DOS disk buffer to be written out to disk at a later time
  3887.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  3888. SeeAlso: AH=15h,AH=21h,AH=28h,AH=40h
  3889. --------D-2123-------------------------------
  3890. INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
  3891.     AH = 23h
  3892.     DS:DX -> unopened FCB (see #0574), wildcards not allowed
  3893. Return: AL = status
  3894.         00h successful (matching file found)
  3895.         FCB random record field filled with size in records, rounded up
  3896.         to next full record
  3897.         FFh failed (no matching file found)
  3898. Notes:    not supported by MS Windows 3.0 DOSX.EXE DOS extender
  3899.     MS-DOS returns nonsense if the FCB record number field is set to a very
  3900.       large positive number, and status FFh if negative; DR-DOS returns the
  3901.       correct file size in both cases
  3902. BUG:    APPEND for DOS 3.3+ corrupts DX if the file is not found
  3903. SeeAlso: AH=42h
  3904. --------D-2124-------------------------------
  3905. INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
  3906.     AH = 24h
  3907.     DS:DX -> opened FCB (see #0574)
  3908. Notes:    computes the random record number corresponding to the current record
  3909.       number and record size, then stores the result in the FCB
  3910.     normally used when switching from sequential to random access
  3911.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  3912. SeeAlso: AH=21h,AH=27h,AH=42h
  3913. --------D-2125-------------------------------
  3914. INT 21 - DOS 1+ - SET INTERRUPT VECTOR
  3915.     AH = 25h
  3916.     AL = interrupt number
  3917.     DS:DX -> new interrupt handler
  3918. Notes:    this function is preferred over direct modification of the interrupt
  3919.       vector table
  3920.     some DOS extenders place an API on this function, as it is not
  3921.       directly meaningful in protected mode
  3922.     under DR-DOS 5.0+, this function does not use any of the DOS-internal
  3923.       stacks and may thus be called at any time
  3924.     Novell NetWare (except the new DOS Requester) monitors the offset of
  3925.       any INT 24 set, and if equal to the value at startup, substitutes
  3926.       its own handler to allow handling of network errors; this introduces
  3927.       the potential bug that any program whose INT 24 handler offset
  3928.       happens to be the same as COMMAND.COM's will not have its INT 24
  3929.       handler installed
  3930. SeeAlso: AX=2501h,AH=35h
  3931. --------E-212501-----------------------------
  3932. INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES
  3933.     AX = 2501h
  3934.     SS = application's original SS or DS (FlashTek X-32VM)
  3935. Return: CF clear if successful
  3936.     CF set on error
  3937.         caller is operating on X-32 stack (FlashTek X-32VM)
  3938. Notes:    Phar Lap uses INT 21/AH=25h as the entry point for all 386/DOS-Extender
  3939.       system calls.     Only available when directly using 386/DOS-Extender or
  3940.       a compatible DOS extender, or when using a product that was created
  3941.       using 386-DOS/Extender or a compatible
  3942.     this function is also supported by FlashTek X-32VM
  3943. SeeAlso: AH=30h"Phar Lap"
  3944. --------E-212502-----------------------------
  3945. INT 21 P - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
  3946.     AX = 2502h
  3947.     CL = interrupt number
  3948. Return: CF clear
  3949.     ES:EBX = CS:EIP of protected-mode interrupt handler
  3950. Note:    this function is also supported by FlashTek X-32VM
  3951. SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0204h
  3952. --------E-212503-----------------------------
  3953. INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
  3954.     AX = 2503h
  3955.     CL = interrupt number
  3956. Return: CF clear
  3957.     EBX = CS:IP of real-mode interrupt handler
  3958. Note:    this function is also supported by FlashTek X-32VM
  3959. SeeAlso: AX=2502h,AX=2504h,AH=35h,INT 31/AX=0200h
  3960. --------E-212504-----------------------------
  3961. INT 21 P - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
  3962.     AX = 2504h
  3963.     CL = interrupt number
  3964.     DS:EDX = CS:EIP of protected-mode interrupt handler
  3965. Return: CF clear
  3966. Note:    this function is also supported by FlashTek X-32VM
  3967. SeeAlso: AX=2502h,AX=2505h,INT 31/AX=0205h
  3968. --------E-212505-----------------------------
  3969. INT 21 P - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
  3970.     AX = 2505h
  3971.     CL = interrupt number
  3972.     EBX = CS:IP of real-mode interrupt handler
  3973. Return: CF clear
  3974. Note:    this function is also supported by FlashTek X-32VM
  3975. SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0201h
  3976. --------E-212506-----------------------------
  3977. INT 21 P - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CNTRL IN PR. MODE
  3978.     AX = 2506h
  3979.     CL = interrupt number
  3980.     DS:EDX = CS:EIP of protected-mode interrupt handler
  3981. Return: CF clear
  3982. Notes:    this function modifies both the real-mode low-memory interrupt
  3983.       vector table and the protected-mode Interrupt Descriptor Table (IDT)
  3984.     interrupts occurring in real mode are resignaled in protected mode
  3985.     this function is also supported by FlashTek X-32VM
  3986. --------E-212507-----------------------------
  3987. INT 21 P - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
  3988.     AX = 2507h
  3989.     CL = interrupt number
  3990.     DS:EDX = CS:EIP of protected-mode interrupt handler
  3991.     EBX = CS:IP of real-mode interrupt handler
  3992. Return: CF clear
  3993. Notes:    interrupts are disabled until both vectors have been modified
  3994.     this function is also supported by FlashTek X-32VM
  3995. SeeAlso: AX=2504h,AX=2505h
  3996. --------E-212508-----------------------------
  3997. INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
  3998.     AX = 2508h
  3999.     BX = segment selector
  4000. Return: CF clear if successful
  4001.         ECX = linear base address of segment
  4002.     CF set if invalid segment selector
  4003. Note:    this function is also supported by FlashTek X-32VM
  4004. SeeAlso: AX=2509h
  4005. --------E-212509-----------------------------
  4006. INT 21 P - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
  4007.     AX = 2509h
  4008.     EBX = linear address to convert
  4009. Return: CF clear if successful
  4010.         ECX = physical address (carry flag clear)
  4011.     CF set if linear address not mapped in page tables
  4012. SeeAlso: AX=2508h
  4013. --------E-212509-----------------------------
  4014. INT 21 P - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
  4015.     AX = 2509h
  4016. Return: CF clear
  4017.     EAX high word = default DS
  4018.     AX = alias for 16-bit data segment
  4019.     BX = real mode code segment
  4020.     EDX high word = selector covering full 4GB address space
  4021.     DX = default SS
  4022.     ESI high word = PSP selector
  4023.     SI = environment selector
  4024. --------E-21250A-----------------------------
  4025. INT 21 P - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
  4026.     AX = 250Ah
  4027.     ES = segment selector in the Local Descriptor Table (LDT) of segment
  4028.          to modify
  4029.     EBX = physical base address of memory to map (multiple of 4K)
  4030.     ECX = number of physical 4K pages to map
  4031. Return: CF clear if successful
  4032.         EAX = 32-bit offset in segment of mapped memory
  4033.     CF set on error
  4034.         EAX = error code
  4035.         08h insufficient memory to create page tables
  4036.         09h invalid segment selector
  4037. SeeAlso: INT 31/AX=0800h
  4038. --------E-21250C-----------------------------
  4039. INT 21 P - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
  4040.     AX = 250Ch
  4041. Return: CF clear
  4042.     AL = base interrupt vector for IRQ0-IRQ7
  4043.     AH = base interrupt vector for IRQ8-IRQ15
  4044.     BL = interrupt vector for BIOS print screen function (Phar Lap only)
  4045. Note:    this function is also supported by FlashTek X-32VM
  4046. SeeAlso: INT 31/AX=0400h,INT 67/AX=DE0Ah
  4047. --------E-21250D-----------------------------
  4048. INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
  4049.     AX = 250Dh
  4050. Return: CF clear
  4051.     EAX = CS:IP of real-mode callback procedure (see #0583) that will
  4052.           call through from real mode to a protected-mode routine
  4053.     EBX = 32-bit real-mode address of intermode call data buffer
  4054.     ECX = size in bytes of intermode call data buffer
  4055.     ES:EDX = protected-mode address of intermode call data buffer
  4056. Notes:    this function is also supported by FlashTek X-32VM
  4057.     X-32VM guarantees the intermode buffer to be at least 4 KB
  4058. SeeAlso: AX=250Eh
  4059.  
  4060. (Table 0583)
  4061. Call Phar Lap real-mode callback with:
  4062.     STACK:    DWORD    offset to protected-mode code
  4063.         WORD    placeholder for protected-mode CS
  4064.         DWORD    pointer to selector structure (see #0584)
  4065.             or 0000h:0000h for defaults
  4066.         var    parameters for protected-mode procedure
  4067. Return: via FAR return
  4068.  
  4069. Format of Phar Lap selector structure:
  4070. Offset    Size    Description    (Table 0584)
  4071.  00h    WORD    protected-mode GS selector
  4072.  02h    WORD    protected-mode FS selector
  4073.  04h    WORD    protected-mode ES selector
  4074.  06h    WORD    protected-mode DS selector
  4075. --------E-21250E-----------------------------
  4076. INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
  4077.     AX = 250Eh
  4078.     EBX = CS:IP of real-mode procedure to call
  4079.     ECX = number of two-byte words to copy from protected-mode stack
  4080.           to real-mode stack
  4081. Return: CF clear if successful
  4082.         all segment registers unchanged
  4083.         all general registers contain values set by real-mode procedure
  4084.         all other flags set as they were left by real-mode procedure
  4085.         stack unchanged
  4086.     CF set on error
  4087.         EAX = error code
  4088.         01h not enough real-mode stack space
  4089. Note:    this function is also supported by FlashTek X-32VM; under X-32VM, the
  4090.       call will fail if ECX > 0000003Fh
  4091. SeeAlso: AX=250Dh,AX=2510h,AH=E1h"OS/286",INT 31/AX=0301h
  4092. --------E-21250F-----------------------------
  4093. INT 21 P - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
  4094.     AX = 250Fh
  4095.     ES:EBX = 48-bit protected-mode address to convert
  4096.     ECX = 00000000h or length of data in bytes
  4097. Return: CF clear if successful (address < 1MB and contiguous)
  4098.         ECX = 32-bit real-mode MS-DOS address
  4099.     CF set on error (address >= 1MB or not contiguous)
  4100.         ECX = linear address
  4101. Note:    this function is also supported by FlashTek X-32VM
  4102. SeeAlso: AX=2510h
  4103. --------E-212510-----------------------------
  4104. INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
  4105.     AX = 2510h
  4106.     EBX = CS:IP of real-mode procedure to call
  4107.     ECX = number of two-byte words to copy to protected-mode stack to
  4108.           real-mode stack
  4109.     DS:EDX -> pointer to parameter block (see #0585)
  4110. Return: CF clear if successful
  4111.         all segment registers unchanged,
  4112.         EDX unchanged
  4113.         all other general registers contain values set by real-mode proc
  4114.         all other flags are set as they were left by real-mode procedure
  4115.         real-mode register values are returned in the parameter block
  4116.     CF set on error
  4117.         EAX = error code
  4118.         01h not enough real-mode stack space
  4119. Note:    unlike most of the preceding 25xxh functions, this one is not
  4120.       supported by FlashTek X-32VM
  4121. SeeAlso: AX=250Eh,AX=250Fh
  4122.  
  4123. Format of Phar Lap real-mode call parameter block:
  4124. Offset    Size    Description    (Table 0585)
  4125.  00h    WORD    real-mode DS value
  4126.  02h    WORD    real-mode ES value
  4127.  04h    WORD    real-mode FS value
  4128.  06h    WORD    real-mode GS value
  4129.  08h    DWORD    real-mode EAX value
  4130.  0Ch    DWORD    real-mode EBX value
  4131.  10h    DWORD    real-mode ECX value
  4132.  14h    DWORD    real-mode EDX value
  4133. --------E-212511-----------------------------
  4134. INT 21 P - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
  4135.     AX = 2511h
  4136.     DS:EDX -> parameter block (see #0586)
  4137. Return: all segment registers unchanged
  4138.     EDX unchanged
  4139.     all other registers contain values set by the real-mode int handler
  4140.     the flags are set as they were left by the real-mode interrupt handler
  4141.     real-mode register values are returned in the parameter block
  4142. Note:    this function is also supported by FlashTek X-32VM
  4143. SeeAlso: AX=2503h,AX=2505h,AX=250Eh,AH=E3h"OS/286",INT 31/AX=0300h
  4144.  
  4145. Format of Phar Lap real-mode interrupt parameter block:
  4146. Offset    Size    Description    (Table 0586)
  4147.  00h    WORD    interrupt number
  4148.  02h    WORD    real-mode DS value
  4149.  04h    WORD    real-mode ES value
  4150.  06h    WORD    real-mode FS value
  4151.  08h    WORD    real-mode GS value
  4152.  0Ah    DWORD    real-mode EAX value
  4153.  0Eh    DWORD    real-mode EDX value
  4154. Note: all other real-mode values set from protected-mode registers
  4155. --------E-212512-----------------------------
  4156. INT 21 P - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
  4157.     AX = 2512h
  4158.     DS:EDX -> pointer to ASCIZ program name
  4159.     ES:EBX -> pointer to parameter block (see #0588)
  4160.     ECX = size in bytes of LDT buffer
  4161. Return: CF clear if successful
  4162.         EAX = number of segment descriptors in LDT
  4163.     CF set on error
  4164.         EAX = error code (see #0587)
  4165. SeeAlso: AX=2517h
  4166.  
  4167. (Table 0587)
  4168. Values for Phar Lap error code:
  4169.  02h    file not found or path invalid
  4170.  05h    access denied
  4171.  08h    insufficient memory
  4172.  0Ah    environment invalid
  4173.  0Bh    invalid file format
  4174.  80h    LDT too small
  4175.  
  4176. Format of Phar Lap program load parameter block:
  4177. Offset    Size    Description    (Table 0588)
  4178. Input:
  4179.  00h    DWORD    32-bit offset of environment string
  4180.  04h    WORD    segment of environment string
  4181.  06h    DWORD    32-bit offset of command-tail string
  4182.  0Ah    WORD    segment of command-tail string
  4183.  0Ch    DWORD    32-bit offset of LDT buffer (size in ECX)
  4184.  10h    WORD    segment of LDT buffer
  4185. Output:
  4186.  12h    WORD    real-mode paragraph address of PSP (see also AH=26h)
  4187.  14h    WORD    real/protected mode flag
  4188.         0000h  real mode
  4189.         0001h  protected mode
  4190.  16h    DWORD    initial EIP value
  4191.  1Ah    WORD    initial CS value
  4192.  1Ch    DWORD    initial ESP value
  4193.  20h    WORD    initial SS value
  4194.  22h    WORD    initial DS value
  4195.  24h    WORD    initial ES value
  4196.  26h    WORD    initial FS value
  4197.  28h    WORD    initial GS value
  4198. --------E-212513-----------------------------
  4199. INT 21 P - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
  4200.     AX = 2513h
  4201.     BX = segment selector of descriptor in GDT or LDT
  4202.     CL = access-rights byte for alias descriptor
  4203.     CH = use-type bit (USE16 or USE32) for alias descriptor
  4204. Return: CF clear if successful
  4205.         AX = segment selector for created alias
  4206.     CF set on error
  4207.         EAX = error code
  4208.         08h insufficient memory (can't grow LDT)
  4209.         09h invalid segment selector in BX
  4210. --------E-212514-----------------------------
  4211. INT 21 P - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
  4212.     AX = 2514h
  4213.     BX = segment selector of descriptor in GDT or LDT
  4214.     CL = new access-rights byte
  4215.     CH = new use-type bit (USE16 or USE32)
  4216. Return: CF clear if successful
  4217.     CF set on error
  4218.         EAX = error code
  4219.         09h invalid selector in BX
  4220. SeeAlso: AX=2515h,INT 31/AX=0009h
  4221. --------E-212515-----------------------------
  4222. INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
  4223.     AX = 2515h
  4224.     BX = segment selector of descriptor in GDT or LDT
  4225. Return: CF clear if successful
  4226.         CL = access-rights byte for segment
  4227.         CH = use-type bit (USE16 or USE32)
  4228.     ECX<16-31> destroyed
  4229.     CF set on error
  4230.         EAX = error code
  4231.         09h invalid segment selector in BX
  4232. SeeAlso: AX=2514h
  4233. --------E-212516-----------------------------
  4234. INT 21 P - Phar Lap 386/DOS-Extender v2.2+ - FREE ALL MEMORY OWNED BY LDT
  4235.     AX = 2516h
  4236. Return: CF clear
  4237. Note:    this function must be called from Ring 0 or the CS descriptor is freed
  4238. --------E-212517-----------------------------
  4239. INT 21 P - Phar Lap 386/DOS-Extender v2.1c+ - GET INFO ON DOS DATA BUFFER
  4240.     AX = 2517h
  4241. Return: CF clear
  4242.     ES:EBX -> data buffer (protected mode address)
  4243.     ECX -> data buffer (real mode address)
  4244.     EDX = size of data buffer in bytes
  4245. Note:    the data buffer's address changes after calls to AX=2512h and AX=252Ah
  4246. SeeAlso: AX=2512h,AX=252Ah,AX=2530h
  4247. --------E-212518-----------------------------
  4248. INT 21 P - Phar Lap 386/DOS-Extender 2.1c+ - SPECIFY HANDLER FOR MOVED SEGMENTS
  4249.     AX = 2518h
  4250.     ES:EBX -> function to call when a segment is moved
  4251. Return: CF clear
  4252.     ES:EBX -> previous handler
  4253. --------E-212519-----------------------------
  4254. INT 21 P - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
  4255.     AX = 2519h
  4256. Return: CF clear
  4257.     EAX = error code
  4258.         0000h  no error
  4259.         0001h  out of physical memory
  4260.         0002h  out of swap space (unable to grow swap file)
  4261.         0003h  out of LDT entries and unable to grow LDT
  4262.         0004h  unable to change extended memory allocation mark
  4263.         FFFFFFFFh    paging disabled
  4264. Note:    VMM is the Virtual Memory Manager option
  4265. --------E-21251A-----------------------------
  4266. INT 21 P - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
  4267.     AX = 251Ah
  4268.     EDX = number of 4k pages to lock
  4269.     if BL = 00h
  4270.         ECX = linear address of first page to lock
  4271.     if BL = 01h
  4272.         ES:ECX -> pointer to first page to lock
  4273. Return: CF clear if successful
  4274.     CF set on error
  4275.         EAX = error code
  4276.         08h insufficient memory
  4277.         09h invalid address range
  4278. SeeAlso: AX=251Bh,AX=EB06h,INT 31/AX=0600h
  4279. --------E-21251B-----------------------------
  4280. INT 21 P - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
  4281.     AX = 251Bh
  4282.     EDX = number of pages to unlock
  4283.     if BL = 00h
  4284.         ECX = linear address of first page to unlock
  4285.     if BL = 01h
  4286.         ES:ECX -> pointer to first page to unlock
  4287. Return: CF clear if successful
  4288.     CF set on error
  4289.         EAX = error code
  4290.         09h invalid address range
  4291. SeeAlso: AX=251Ah,AX=EB07h,INT 31/AX=0601h
  4292. --------E-21251C-----------------------------
  4293. INT 21 P - Phar Lap 386/DOS-Extender VMM v2.1c+ - FREE PHYSICAL MEMORY PAGES
  4294.     AX = 251Ch
  4295.     BH = preservation flag (00h preserve contents, 01h discard contents)
  4296.     EDX = number of pages to free
  4297.     BL = address type
  4298.         00h linear address
  4299.         ECX = linear address of first page to be freed
  4300.         01h pointer
  4301.         ES:ECX -> first page to be freed
  4302. Return: CF clear if successful
  4303.     CF set on error
  4304.         EAX = error code
  4305.         08h memory error, swap space full, no VMM or DPMI
  4306.         09h invalid address
  4307. --------E-21251D-----------------------------
  4308. INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - READ PAGE-TABLE ENTRY
  4309.     AX = 251Dh
  4310.     BL = address type
  4311.         00h linear address
  4312.         ECX = linear address of page table entry to read
  4313.         01h pointer
  4314.         ES:ECX -> page table entry to read
  4315. Return: CF clear if successful
  4316.         EAX = contents of page table entry
  4317.     CF set on error
  4318.         EAX = error code
  4319.         09h invalid address or NOPAGE option set
  4320.         78h invalid under DPMI
  4321. Note:    this function is obsolete; use AX=252Bh/BH=09h instead
  4322. SeeAlso: AX=251Eh,AX=252Bh/BH=09h,AX=EB00h,INT 31/AX=0506h
  4323. --------E-21251E-----------------------------
  4324. INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - WRITE PAGE-TABLE ENTRY
  4325.     AX = 251Eh
  4326.     BL = address type
  4327.         00h linear address
  4328.         ECX = linear address of page table entry to read
  4329.         01h pointer
  4330.         ES:ECX -> page table entry to read
  4331.     EDX = new value for page table entry
  4332. Return: CF clear if successful
  4333.     CF set on error
  4334.         EAX = error code
  4335.         09h invalid address or NOPAGE option set
  4336.         82h not compatible with DPMI
  4337. Note:    this call is obsolete; use AX=252Bh/BH=0Ah instead
  4338. SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah,INT 31/AX=0507h
  4339. --------E-21251F-----------------------------
  4340. INT 21 P - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
  4341.     AX = 251Fh
  4342.     BL = address type
  4343.         00h linear address
  4344.         ECX = linear address of first page table entry
  4345.         EDX = linear address of second page table entry
  4346.         01h pointer
  4347.         ES:ECX -> first page table entry
  4348.         ES:EDX -> second page table entry
  4349. Return: CF clear if successful
  4350.     CF set on error
  4351.         EAX = error code
  4352.         09h invalid address or NOPAGE option set
  4353.         82h not compatible with DPMI
  4354. SeeAlso: AX=251Dh,AX=251Eh
  4355. --------E-212520-----------------------------
  4356. INT 21 P - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
  4357.     AX = 2520h
  4358.     DS:EDX -> pointer to buffer at least 100 bytes in size (see #0589)
  4359.     BL = 0 (don't reset VM stats), 1 (reset VM stats)
  4360. Return: carry flag clear
  4361.  
  4362. Format of Phar Lap VM statistics buffer:
  4363. Offset    Size    Description    (Table 0589)
  4364.  00h    DWORD    VM status
  4365.         0001h VM subsystem is present
  4366.         0000h VM not present
  4367.  04h    DWORD    "nconvpg" number of conventional memory pages available
  4368.  08h    DWORD    "nbimpg" number of Compaq built-in memory pages available
  4369.  0Ch    DWORD    "nextpg" total number of extended memory pages
  4370.  10h    DWORD    "extlim" extender memory pages limit
  4371.  14h    DWORD    "aphyspg" number of physical memory pages allocated to appl
  4372.  18h    DWORD    "alockpg" number of locked pages owned by application
  4373.  1Ch    DWORD    "sysphyspg" number physical memory pages allocated to system
  4374.  20h    DWORD    "nfreepg" number of free physical pages; approx if EMS VCPI
  4375.  24h    DWORD    linear address of beginning of application address space
  4376.  28h    DWORD    linear address of end of application address space
  4377.  2Ch    DWORD    number of seconds since last time VM stats were reset
  4378.  30h    DWORD    number of page faults since last time
  4379.  34h    DWORD    number of pages written to swap file since last time
  4380.  38h    DWORD    number of reclaimed pages (page faults on swapped pages)
  4381.  3Ch    DWORD    number of virtual pages allocated to the application
  4382.  40h    DWORD    size in pages of swap file
  4383.  44h    DWORD    number of system pages allocated with EMS calls
  4384.  48h    DWORD    minimum number of conventional memory pages
  4385.  4Ch    DWORD    maximum size in pages to which swap file can be increased
  4386.  50h    DWORD    "vmflags"
  4387.         bit 0 = 1 if page fault in progress
  4388. ---v4.0+ ---
  4389.  54h    DWORD    number of physical pages guaranteed to be free
  4390.  58h    DWORD    number of free physical pages currently available
  4391.  5Ch    DWORD    size in pages of largest free block of memory (including disk
  4392.           swap space)
  4393.  60h    DWORD    reserved
  4394. --------E-212521-----------------------------
  4395. INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEM USAGE
  4396.     AX = 2521h
  4397.     EBX = max 4k pages of physical extended memory which program may use
  4398. Return: CF clear if successful
  4399.        EBX = maximum limit in pages
  4400.        ECX = minimum limit in pages
  4401.     CF set on error
  4402.         EAX = error code
  4403.         08h insufficient memory or -nopage switch used
  4404. SeeAlso: AX=2522h
  4405. --------E-212522-----------------------------
  4406. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY ALTERNATE PAGE-FAULT HANDLR
  4407.     AX = 2522h
  4408.     ES:EBX -> alternate handler for page faults
  4409. Return: CF clear
  4410.     ES:EBX -> previous page-fault handler
  4411. SeeAlso: AX=2523h
  4412. --------E-212523-----------------------------
  4413. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY OUT-OF-SWAP-SPACE HANDLER
  4414.     AX = 2523h
  4415.     ???
  4416. Return: ???
  4417. Note:    this function takes a DWORD pointer and a DWORD pointer to a DWORD
  4418.       pointer as arguments
  4419. SeeAlso: AX=2522h
  4420. --------E-212524-----------------------------
  4421. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - INSTALL PAGE-REPLACEMENT HANDLERS
  4422.     AX = 2524h
  4423.     ???
  4424. Return: ???
  4425. Note:    this function takes three DWORD pointers and three DWORD pointers to
  4426.       DWORD pointers as arguments
  4427. --------E-212525-----------------------------
  4428. INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENT'L MEM USAGE
  4429.     AX = 2525h
  4430.     EBX = limit in 4k pages of physical conventional memory which program
  4431.           may use
  4432. Return: CF clear if successful
  4433.         EBX = maximum limit in pages
  4434.         ECX = minimum limit in pages
  4435.     CF set on error
  4436.         EAX = error code
  4437.         08h insufficient memory or -nopage switch used
  4438. SeeAlso: AX=2521h
  4439. --------E-212526-----------------------------
  4440. INT 21 P - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
  4441.     AX = 2526h
  4442.     ???
  4443. Return: ???
  4444. Notes:    details are not yet available
  4445.     this function takes a pointer to the configuration buffer (see #0590)
  4446.       and a poitner to a BYTE as arguments
  4447.  
  4448. Format of Phar Lap configuration buffer:
  4449. Offset    Size    Description    (Table 0590)
  4450.  00h    DWORD    flags 1 (see #0591)
  4451.  04h    DWORD    flags 2 (unused through v5.0)
  4452.  08h    DWORD    flags 3 (unused through v5.0)
  4453.  0Ch    DWORD    386|DOS-Extender major version
  4454.  10h    DWORD    386|DOS-Extender minor version
  4455.  14h    DWORD    first letter of text after minor version number in version str
  4456.  18h    DWORD    beta flag (00h normal release, 01h beta release)
  4457.  1Ch    DWORD    processor (3 = 386, 4 = 486)
  4458.  20h    DWORD    coprocessor (4 = none, 6 = 287, 7 = 387/486)
  4459.  24h    DWORD    Weitek coprocessor flag (0 = none, 1 = present)
  4460.  28h    DWORD    machine type (0 = IBM PC compatible, 1 = NEC 9800 series)
  4461.  2Ch    DWORD    machine class
  4462.         IBM: bus type (0=ISA, 1=MCA, 2=XT, 3=EISA)
  4463.         NEC: 0=normal mode, 1=high-res mode
  4464.  30h    DWORD    VCPI flag (0 = none, 1 = present)
  4465.  34h    DWORD    -WEITEK/-1167 switch (0 = AUTO, 1 = ON, 2 = OFF)
  4466.  38h    DWORD    -MINREAL setting
  4467.  3Ch    DWORD    -MAXREAL setting
  4468.  40h    DWORD    -MINIBUF setting
  4469.  44h    DWORD    -MAXIBUF setting
  4470.  48h    DWORD    size in bytes of DOS call data buffer
  4471.  4Ch    DWORD    number of interrupt stacks (-NISTACK)
  4472.  50h    DWORD    interrupt stack size (-ISTKSIZE)
  4473.  54h    DWORD    -REALBREAK setting
  4474.  58h    DWORD    -CALLBUFS
  4475.  5Ch    DWORD    -HWIVEC
  4476.  60h    DWORD    -PRIVEC
  4477.  64h    DWORD    -INTMAP
  4478.  68h    DWORD    -PRIMAP
  4479.  6Ch    DWORD    VCPI: master 8259 interrupt vector base (IRQ0 mapping)
  4480.  70h    DWORD    VCPI: slave 8259 interrupt vector base (IRQ8 mapping)
  4481.  74h    DWORD    BIOS print screen interrupt vector (0 if NEC)
  4482.  78h    DWORD    -EXTLOW setting
  4483.  7Ch    DWORD    -EXTHIGH setting
  4484.  80h    DWORD    lowest physical extended-memory address allocatable
  4485.  84h    DWORD    highest physical extended-memory address allocatable + 1
  4486.  88h    DWORD    special memory's physical base address (00000000h if none)
  4487.  8Ch    DWORD    special memory size in bytes (00000000h if none)
  4488.  90h    DWORD    -MAXVCPIMEM setting
  4489.  94h    DWORD    -VSCAN
  4490.  98h    DWORD    -SWAPCHK (0 = OFF, 1 = ON, 2 = FORCE, 3 = MAX)
  4491.  9Ch    DWORD    -CODESIZE setting
  4492.  A0h    DWORD    minimum swap file size (-MINSWFSIZE)
  4493.  A4h    DWORD    maximum swap fiel size (-MAXSWFSIZE)
  4494.  A8h    DWORD    page replacement policy (0 = LFU, 1 = NUR)
  4495.  ACh    DWORD    number of GDT entries (-NGDTENT)
  4496.  B0h    DWORD    number of LDT entries (-NLDTENT)
  4497.  B4h    DWORD    program's privilege level (0-3)
  4498. ---386|DOS-Extender v3.0+ ---
  4499.  B8h    DWORD    -LOCKSTACK setting
  4500.  BCh    DWORD    -MAXEXTMEM
  4501.  C0h    DWORD    -MAXXMSMEM
  4502.  C4h    DWORD    -MAXPGMMEM
  4503.  C8h    DWORD    -DATATHRESHOLD
  4504.  CCh    DWORD    virtual memory manager flag (0 = not present, 1 = present)
  4505.  D0h    DWORD    Cyrix coprocessor flag (0 = no Cyrix EMC387, 1 = present)
  4506.  D4h    DWORD    -CYRIX setting (0 = AUTO, 1 = ON, 2 = OFF)
  4507.  D8h    DWORD    DPMI flag (0 = not present, 1 = present)
  4508.  DCh    DWORD    DPMI major version
  4509.  E0h    DWORD    DPMI minor version
  4510.  E4h    DWORD    DPMI capabilities flags (see #0592)
  4511.  E8h    DWORD    VCPI major version
  4512.  ECh    DWORD    VCPI minor version
  4513.  F0h    WORD    VCPI: IRQ0-7 physical base interrupt vector
  4514.  F2h    WORD    VCPI: IRQ8-15 physical base interrupt vector
  4515.  F4h    DWORD    XMS flag (0 = none, 1 = present)
  4516.  F8h    DWORD    XMS major version
  4517.  FCh    DWORD    XMS minor version
  4518. 100h    WORD    application's CS selector
  4519. 102h    WORD    application's DS selector
  4520. 104h    WORD    application's PSP selector
  4521. 106h    WORD    application's environment selector
  4522. 108h    WORD    selector mapping entire first megabyte
  4523. 10Ah    WORD    selector mapping text video memory
  4524. 10Ch    WORD    selector mapping video memory (text for IBM, graphics for NEC)
  4525. 10Eh    WORD    selector mapping Weitek address space, 0000h if not present
  4526. 110h    WORD    selector mapping Cyrix EMC387 address space, 0000h if none
  4527. 112h    WORD    reserved (0)
  4528. 114h    DWORD    real-mode FAR entry point to call to switch to protected mode
  4529.           with no saved context
  4530. 118h    DWORD    size of LDT in bytes
  4531. ---386|DOS-Extender v5.0+ ---
  4532. 11Ch    DWORD    Windows flag (0 = not present, 1 = Windows present)
  4533. 120h    DWORD    Windows major version
  4534. 124h    DWORD    Windows minor version
  4535. 128h    DWORD    Windows mode (0 = real/standard, 1 = enhanced)
  4536. 12Ch    DWORD    OS/2 flag (0 = not present, 1 = OS/2 present)
  4537. 130h    DWORD    OS/2 major version
  4538. 134h    DWORD    OS/2 minor version
  4539. 138h 50 DWORDs    reserved (0)
  4540.  
  4541. Bitfields for flags 1:
  4542. Bit(s)    Description    (Table 0591)
  4543.  0    -NOPAGE specified
  4544.  1    -A20 specified
  4545.  2    -VDISK specified
  4546.  3    -XT specified
  4547.  4    -AT specified
  4548.  5    -MCA specified
  4549.  6    -EISA specified
  4550.  7    -NORMRES specified (NEC only)
  4551.  8    -HIGHRES specified (NEC only)
  4552.  9    set if -SWFGROW1ST, clear if -NOSWFGROW1ST
  4553.  10    -NOVM specified
  4554.  11    -SAVEREGS specified
  4555.  12    unused (clear)
  4556.  13    -NOVCPI specified
  4557.  14    -NOMUL specified
  4558.  15    -NOBMCHK specified
  4559.  16    -NOSPCLMEM or -NOBIM
  4560.  17    -NOPGEXP specified
  4561.  18    -SWAPDEFDISK specified
  4562. ---v3.0+ ---
  4563.  19    -SAVEINTS specified
  4564.  20    -NOLOAD specified
  4565.  21    -PAGELOG specified
  4566.  22    -OPENDENY specified
  4567.  23    -ERRATA17 specified
  4568. ---v4.1+ ---
  4569.  24    -NESTDPMI specified
  4570.  25    -NONESTDPMI specified
  4571.  26    -NODPMI specified
  4572.  27    -NOPCDWEITEK specified
  4573. ---v4.2+ ---
  4574.  28    -WININT21 specified
  4575.  
  4576. Bitfields for DPMI capabilities flags:
  4577. Bit(s)    Description    (Table 0592)
  4578.  0    paging supported
  4579.  1    physical device mapping
  4580.  2    conventional memory mapping
  4581.  3    exceptions restartable
  4582. --------E-212527-----------------------------
  4583. INT 21 P - Phar Lap 386/DOS-Extender VMM - EN/DISABLE STATE SAVE ON INTERRUPTS
  4584.     AX = 2527h
  4585.     EBX = new status (00h disabled, 01h enabled)
  4586. Return: CF clear
  4587.     EBX = previous state save flag
  4588. SeeAlso: AX=2528h
  4589. --------E-212528-----------------------------
  4590. INT 21 P - Phar Lap 386/DOS-Extender VMM - READ REGISTERS AFTER CTRL-C INT
  4591.     AX = 2528h
  4592.     DS:EBX -> buffer for registers (see #0593)
  4593. Return: CF clear if successful
  4594.         DS:EBX buffer filled
  4595.     CF set on error
  4596.         EAX = error code
  4597.         83h interrupt state save not enabled
  4598.         84h no active interrupt
  4599. SeeAlso: AX=2527h
  4600.  
  4601. Format of Phar Lap buffer for registers:
  4602. Offset    Size    Description    (Table 0593)
  4603.  00h  8 BYTEs    unused
  4604.  08h  4    DWORDs    EAX,EBX,ECX,EDX
  4605.  18h  4 DWORDs    ESI,EDI,EBP,ESP
  4606.  28h  6 WORDs    CS,DS,SS,ES,FS,GS
  4607.  34h    DWORD    EIP
  4608.  38h    DWORD    EFLAGS
  4609. --------E-212529-----------------------------
  4610. INT 21 P - Phar Lap 386/DOS-Extender - LOAD FLAT MODEL .EXP or .REX FILE
  4611.     AX = 2529h
  4612.     ???
  4613. Return: ES:EBX -> parameter block (see #0594)
  4614.     ???
  4615. Note:    details not available at this time
  4616. SeeAlso: AX=252Ah
  4617.  
  4618. Format of Phar Lap program load parameter block:
  4619. Offset    Size    Description    (Table 0594)
  4620.  00h    DWORD    initial EIP
  4621.  04h    WORD    initial CS
  4622.  06h    DWORD    initial ESP
  4623.  0Ah    WORD    initial SS
  4624.  0Ch  4 WORDs    initial DS, ES, FS, GS
  4625.  14h    DWORD    minimum size in bytes of program segment
  4626.  18h    DWORD    bytes of additional memory allocated
  4627.  1Ch    DWORD    flags
  4628.         bit 0: child linked with -UNPRIVILEGED
  4629.         ---v6.0+ ---
  4630.         bit 1: child is PE file instead of .EXP
  4631.         bit 2: loaded file is a DLL
  4632.         bits 3-31 reserved
  4633. ---v6.0+ ---
  4634.  20h    DWORD    module handles (PE files only)
  4635.  24h  7 DWORDs    reserved (0)
  4636. --------E-21252A-----------------------------
  4637. INT 21 P - Phar Lap 386/DOS-Extender VMM - NEW LOAD PROGRAM FOR DEBUG
  4638.     AX = 252Ah
  4639.     DS:EDX -> ASCIZ program name
  4640.     ES:EBX -> parameter block (see #0588)
  4641.     ECX = size of LDT buffer in bytes
  4642.     ESI = bit flags
  4643.         bit 0: allow demand paging rather than loading entire program
  4644.         bit 1: demand page from swap file rather than from .EXP
  4645. Return: CF clear if successful
  4646.         EAX = VMM handle or FFFFFFFFh if none
  4647.         ECX = number of descriptors in LDT buffer
  4648.     CF set on error
  4649.         EAX = error code
  4650.         02h file error
  4651.             EBX = file error code (see #0595)
  4652.             ECX = DOS error code if EBX=1,2,3, or 8
  4653.         08h insufficient memory
  4654.             EBX = memory error code (see #0596)
  4655.         80h LDT buffer too small
  4656.         87h called twice without intervening call to AX=2531h
  4657. SeeAlso: AX=2512h,AX=2517h,AX=2529h,AX=2531h
  4658.  
  4659. (Table 0595)
  4660. Values for Phar Lap file error code:
  4661.  01h    DOS open error
  4662.  02h    DOS seek error
  4663.  03h    DOS read error
  4664.  04h    not an .EXP or .REX file
  4665.  05h    invalid file format
  4666.  06h    -OFFSET is not a multiple of 64K
  4667.  07h    -NOPAGE incompatible with -REALBREAK/-OFFSET
  4668.  08h    DOS error loading .EXE file
  4669.  
  4670. (Table 0596)
  4671. Values for Phar Lap memory error code:
  4672.  01h    out of physical memory
  4673.  02h    out of swap space
  4674.  04h    unable to change extended memory allocation
  4675.  05h    -MAXPGMMEM exceeded
  4676.  06h    insufficient low memory to REALBREAK value
  4677.  07h    insufficient low memory for PSP and environment
  4678. --------E-21252BBH00-------------------------
  4679. INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE UNMAPPED PAGES
  4680.     AX = 252Bh
  4681.     BH = 00h
  4682.     ???
  4683. Return: ???
  4684. --------E-21252BBH01-------------------------
  4685. INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE ALLOCATED PAGES
  4686.     AX = 252Bh
  4687.     BH = 01h
  4688.     ???
  4689. Return: ???
  4690. --------E-21252BBH02-------------------------
  4691. INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE PHYSICAL DEVICE PAGES
  4692.     AX = 252Bh
  4693.     BH = 02h
  4694.     ???
  4695. Return: ???
  4696. --------E-21252BBH03-------------------------
  4697. INT 21 Pu - Phar Lap 386/DOS-Extender - MAP DATA FILE
  4698.     AX = 252Bh
  4699.     BH = 03h
  4700.     ???
  4701. Return: ???
  4702. SeeAlso: AX=252Bh/BL=0Bh
  4703. --------E-21252BBH04-------------------------
  4704. INT 21 Pu - Phar Lap 386/DOS-Extender - GET PAGE TYPES
  4705.     AX = 252Bh
  4706.     BH = 04h
  4707.     ???
  4708. Return: ???
  4709. Note:    returns one word per page
  4710. SeeAlso: #0597
  4711.  
  4712. Bitfields for Phar Lap page information:
  4713. Bit(s)    Description    (Table 0597)
  4714.  7    mapped to read/write data file
  4715.  6    mapped to read-only data file
  4716.  5    swapped to disk
  4717.  4    locked
  4718.  3-0    page type
  4719.     0 unmapped
  4720.     1 allocated
  4721.     2 physical device page
  4722. --------E-21252B-----------------------------
  4723. INT 21 P - Phar Lap 386/DOS-Extender - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
  4724.     AX = 252Bh
  4725.     BH = function
  4726.         05h lock pages
  4727.         06h unlock pages
  4728.     BL = address type
  4729.         00h linear address
  4730.         ECX = linear start address of memory region
  4731.         01h segmented address
  4732.         ES:ECX -> start of memory region
  4733.     EDX = size of memory region in bytes
  4734. Return: CF clear if successful
  4735.     CF set on error
  4736. Note:    this function is also supported by FlashTek X-32VM; if X-32 is not
  4737.       using virtual memory, this function always succeeds
  4738. --------E-21252B-----------------------------
  4739. INT 21 Pu - Phar Lap 386/DOS-Extender - FREE PHYSICAL PAGES
  4740.     AX = 252Bh
  4741.     BH = function (07h,08h)
  4742.     ???
  4743. Return: ???
  4744. --------E-21252BBH09-------------------------
  4745. INT 21 P - Phar Lap 386/DOS-Extender v4.1 - GET PAGETABLE ENTRY/PAGE TABLE INFO
  4746.     AX = 252Bh
  4747.     BH = 09h
  4748.     BL = subfunction
  4749.         00h get page table entry by linear address
  4750.         ECX = linear address for which to get page table entry
  4751.         01h get page table entry by logical address
  4752.         ES:ECX = address for which to get page table entry
  4753. Return: CF clear if successful
  4754.         EAX = page table entry
  4755.         EBX = additional page table information
  4756.     CF set on error
  4757.         EAX = error code
  4758.         0009h invalid address
  4759.         0082h running under DPMI
  4760. SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah
  4761. --------E-21252BBH0A-------------------------
  4762. INT 21 P - Phar Lap 386/DOS-Extender v4.1 - SET PAGETABLE ENTRY/PAGE TABLE INFO
  4763.     AX = 252Bh
  4764.     BH = 0Ah
  4765.     BL = subfunction
  4766.         00h set page table entry for linear address
  4767.         ECX = linear address for which to get page table entry
  4768.         01h set page table entry for logical address
  4769.         ES:ECX = address for which to get page table entry
  4770.     ESI = page table entry
  4771.     EDI = additional page table information
  4772. Return: CF clear if successful
  4773.     CF set on error
  4774.         EAX = error code
  4775.         0009h invalid address
  4776.         0082h running under DPMI
  4777. SeeAlso: AX=252Bh/BH=09h
  4778. --------E-21252BBH0B-------------------------
  4779. INT 21 P - Phar Lap 386/DOS-Extender v4.1+ - MAP DATA FILE AT FILE OFFSET
  4780.     AX = 252Bh
  4781.     BH = 0Bh
  4782.     BL = subfunction
  4783.         00h by linear address
  4784.         ECX = linear address at which to map data file
  4785.         01h by logical address
  4786.         ES:ECX = logical address at which to map data file
  4787.     EDX = number of bytes to map
  4788.     DS:ESI -> mapping structure (see #0598)
  4789.     DS:EDI -> ASCIZ filename
  4790. Return: CF clear if successful
  4791.     CF set on error
  4792.         EAX = error code
  4793.         0002h file error
  4794.             ECX = phase (01h opening file, 02h seeking, 03h reading)
  4795.             EDX = error code returned by DOS
  4796.         0009h invalid address
  4797.         0081h invalid parameters or 386|VMM not present
  4798.         0086h all 386|VMM file handles already in use
  4799. SeeAlso: AX=252Bh/BH=03h,AX=252Bh/BH=09h
  4800.  
  4801. Format of Phar Lap mapping structure:
  4802. Offset    Size    Description    (Table 0598)
  4803.  00h    DWORD    starting file offset to be mapped
  4804.  04h    DWORD    DOS file access and sharing modes (see #0628 at INT 21/AH=3Dh)
  4805. --------E-21252C-----------------------------
  4806. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ADD UNMAPPED PAGES AT END OF SEGMENT
  4807.     AX = 252Ch
  4808.     BX = segment selector
  4809.     ECX = number of 4K pages to add
  4810. Return: CF clear if successful
  4811.         EAX = offset in segment of beginning of unmapped pages
  4812.     CF set on error
  4813.         EAX = error code
  4814.         08h insufficent memory
  4815.         09h invalid selector
  4816.         82h not supported by current DPMI
  4817. --------E-21252D-----------------------------
  4818. INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - CLOSE VMM FILE HANDLE
  4819.     AX = 252Dh
  4820.     EBX = VMM file handle
  4821. Return: CF clear if successful
  4822.     CF set on error
  4823.         EAX = error code (81h invalid VMM handle)
  4824. --------E-21252E-----------------------------
  4825. INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - GET/SET VMM PARAMETERS
  4826.     AX = 252Eh
  4827.     CL = direction (00h get parameters, 01h set parameters)
  4828.     DS:EBX -> parameter buffer (see #0599)
  4829. Return: CF clear if successful
  4830.     CF set on error
  4831.         EAX = error code (81h bad parameter value)
  4832.  
  4833. Format of Phar Lap VMM parameter buffer:
  4834. Offset    Size    Description    (Table 0599)
  4835.  00h    DWORD    flags
  4836.         bit 0: page fault logging enabled
  4837.         ---v5.0+ ---
  4838.         bit 1: swap extender to disk during DOS EXEC call
  4839.         bit 2: don't zero allocated memory
  4840.  04h    DWORD    scan period for page aging, in milliseconds
  4841.  08h    DWORD    maximum size (in bytes) to check on each page scan
  4842.  0Ch 52 BYTEs    unused
  4843. --------E-21252F-----------------------------
  4844. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - WRITE RECORD TO VMM PAGE LOG FILE
  4845.     AX = 252Fh
  4846.     DS:EBX -> data to be written
  4847.     CX = size of data in bytes
  4848. Return: CF clear if successful
  4849.     CF set on error
  4850.         EAX = error code (85h no page log file or not 386/VMM)
  4851. --------E-212530-----------------------------
  4852. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.3+ - SET SIZE OF BUFFER FOR DOS CALLS
  4853.     AX = 2530h
  4854.     ECX = size of data buffer in bytes (1024 to 65536)
  4855. Return: CF clear if successful
  4856.     CF set on error
  4857.         EAX = error code
  4858.         08h insufficient low memory
  4859.         81h invalid size
  4860. SeeAlso: AX=2517h
  4861. --------E-212531-----------------------------
  4862. INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0 - READ/WRITE LDT DESCRIPTOR
  4863.     AX = 2531h
  4864.     BX = segment selector
  4865.     ECX = direction (00h read, 01h write)
  4866.     DS:EDX -> 8-byte buffer for descriptor contents
  4867. Return: CF clear if successful
  4868.     CF set on error
  4869.         EAX = error code
  4870.         81h invalid selector
  4871.         82h DPMI running, or not a code or data segment
  4872. --------E-212532-----------------------------
  4873. INT 21 P - Phar Lap 386/DOS-Extender - GET EXCEPTION HANDLER VECTOR
  4874.     AX = 2532h
  4875.     CL = exception number (00h-0Fh)
  4876. Return: CF clear if successful
  4877.         ES:EBX = CS:EIP of current exception handler
  4878.     CF set on error (CL > 0Fh)
  4879. Notes:    this call is also supported by the FlashTek X-32VM extender
  4880.     this function is incompatible with 386|VMM; use AX=2522h instead
  4881. SeeAlso: AX=2522h,AX=2533h
  4882. --------E-212533-----------------------------
  4883. INT 21 P - Phar Lap 386/DOS-Extender - SET EXCEPTION HANDLER VECTOR
  4884.     AX = 2533h
  4885.     CL = exception number (00h-0Fh)
  4886.     DS:EDX = CS:EIP of new exception handler
  4887. Return: CF clear if successful
  4888.     CF set on error (CL > 0Fh)
  4889. Notes:    this call is also supported by the FlashTek X-32VM extender
  4890.     this function is incompatible with 386|VMM; use AX=2522h instead
  4891. SeeAlso: AX=2522h,AX=2532h
  4892. --------E-212534-----------------------------
  4893. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - GET INTERRUPT FLAG
  4894.     AX = 2534h
  4895. Return: CF clear
  4896.     EAX = interrupt state (00h disabled, 01h enabled)
  4897. --------E-212535-----------------------------
  4898. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - READ/WRITE SYSTEM REGISTERS
  4899.     AX = 2535h
  4900.     EBX = direction (00h read registers, 01h write)
  4901.     DS:EDX -> system register record (see #0600)
  4902. Return: CF clear
  4903. Note:    this call is only available under MS Windows if PHARLAP.386 VDD is
  4904.       installed
  4905.  
  4906. Format of Phar Lap system register record:
  4907. Offset    Size    Description    (Table 0600)
  4908.  00h    DWORD    CR0
  4909.  04h  4 DWORDs    DR0,DR1,DR2,DR3
  4910.  14h  2 DWORDs    reserved
  4911.  1Ch  2 DWORDs    DR6,DR7
  4912.  24h  3 DWORDs    reserved
  4913. --------E-212536----------------------------
  4914. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0+ - MIN/MAX EXTENDED/CONV MEMORY USAGE
  4915.     AX = 2536h
  4916.     EBX = bit flags
  4917.         bit 0: modifying conventional memory rather than extended memory
  4918.         bit 1: setting maximum memory usage rather than minimum
  4919.     ECX = new limit in 4K pages
  4920. Return: CF clear if successful
  4921.         EAX = new limit
  4922.     CF set on error
  4923.         EAX = error code (08h memory error or -NOPAGE set)
  4924.         EBX = maximum limit in pages
  4925.         ECX = minimum limit in pages
  4926. --------E-212537----------------------------
  4927. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ALLOCATE DOS MEMORY ABOVE DOS BUFFER
  4928.     AX = 2537h
  4929.     BX = number of paragraphs to allocate
  4930. Return: CF clear if successful
  4931.         AX = real-mode segment of allocated block
  4932.     CF set on error
  4933.         AX = error code
  4934.         07h MS-DOS memory chain corrupted
  4935.         08h insufficient low memory
  4936.         BX = size in paragraphs of largest free block
  4937. SeeAlso: AH=48h
  4938. --------E-212538----------------------------
  4939. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - READ PROTMODE REGS AFTER SFTWARE INT
  4940.     AX = 2538h
  4941.     DS:EBX -> buffer for registers (see #0593)
  4942.     ECX = register record to retrieve
  4943.         00h first interrupt state
  4944.         01h next interrupt state
  4945.         EDX = handle for current interrupt state
  4946. Return: CF clear if successful
  4947.         DS:EBX buffer filled
  4948.         EDX = handle of current interrupt state
  4949.         ESI = number of interrupt which occurred
  4950.     CF set on error
  4951.         EAX = error code
  4952.         81h invalid handle in EDX
  4953.         83h register saving not enabled
  4954.         84h no more interrupt states
  4955. SeeAlso: AX=2527h,AX=2528h
  4956. --------E-212539----------------------------
  4957. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - GET OFFSET OF .EXP FILE HEADER
  4958.     AX = 2539h
  4959.     BX = MS-DOS file handle for open file
  4960. Return: CF clear if successful
  4961.         EAX = offset of .EXP header in file
  4962.     CF set on error
  4963.         EAX = error code (02h file error)
  4964.         EBX = file error code
  4965.         02h DOS error seeking
  4966.         03h DOS error reading
  4967.         04h invalid file type
  4968.         05h invalid file format
  4969.         ECX = DOS error code if EBX=02h or 03h
  4970.     current file position in file modified
  4971. --------E-21253A----------------------------
  4972. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - INSTALL MOD. SEG FAILURE HANDLER
  4973.     AX = 253Ah
  4974.     ES:EBX -> function to be called when INT 21/AH=4Ah is about to return
  4975.         an error
  4976. Return: CF clear
  4977.     ES:EBX -> previous handler
  4978. SeeAlso: AH=4Ah
  4979. --------E-21253B----------------------------
  4980. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - JUMP TO REAL MODE CODE, NO CONTEXT
  4981.     AX = 253Bh
  4982.     DS:EBX -> buffer containing register contents (see #0593)
  4983. Return: never returns
  4984. SeeAlso: AX=2528h
  4985. --------E-21253C-----------------------------
  4986. INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0+ - SHRINK 386|VMM SWAP FILE
  4987.     AX = 253Ch
  4988. Return: CF clear
  4989.     EAX = old size of swap file in bytes
  4990.     EBX = new size of swap file in bytes
  4991. --------E-21253D-----------------------------
  4992. INT 21 P - Phar Lap 386/DOS-Extender v4.0+ - READ/WRITE IDT DESCRIPTOR
  4993.     AX = 253Dh
  4994.     BL = interrupt number
  4995.     ECX = direction (0 = read, 1 = write)
  4996.     DS:EDX -> 8-byte buffer for descriptor
  4997. Return: CF clear if successful
  4998.         DS:EDX filled if reading
  4999.     CF set on error
  5000.         EAX = error code (0082h if running under DPMI)
  5001. Desc:    access hardware-level IDT rather than the internal 386/DOS-Extender
  5002.       shadow IDT
  5003. Notes:    this call will always fail under DPMI because it is not possible to
  5004.       access the IDT
  5005.     the descriptor is not checked when writing
  5006.     this call can normally be used only by programs running in ring 0
  5007.       because the processor does not allow an interrupt to be vectored to
  5008.       a less privileged ring
  5009. --------E-21253F-----------------------------
  5010. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - ALLOCATE LDT DESCRIPTOR
  5011.     AX = 253Fh
  5012.     BX = LDT descriptor to allocate (0000h for any)
  5013.     ???
  5014. Return: ???
  5015. --------E-212540-----------------------------
  5016. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FORCE ALIAS OF SEGMENT
  5017.     AX = 2540h
  5018.     ???
  5019. Return: ???
  5020. --------E-212544-----------------------------
  5021. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FREE DLL
  5022.     AX = 2544h
  5023.     ???
  5024. Return: ???
  5025. --------E-212545-----------------------------
  5026. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET/SET PROCEDURE ADDRESS
  5027.     AX = 2545h
  5028.     ECX = direction (00h get, 01h set)
  5029.     ???
  5030. Return: ???
  5031. --------E-212546-----------------------------
  5032. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET MODULE HANDLE
  5033.     AX = 2546h
  5034.     ???
  5035. Return: ???
  5036. --------E-2125C0-----------------------------
  5037. INT 21 P - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
  5038.     AX = 25C0h
  5039.     BX = number of 16-byte paragraphs of MS-DOS memory requested
  5040. Return: CF clear if successful
  5041.         AX = real-mode paragraph address of memory
  5042.     CF set on error
  5043.         AX = error code
  5044.         07h MS-DOS memory control blocks destroyed
  5045.         08h insufficient memory
  5046.         BX = size in paragraphs of largest available memory block
  5047. SeeAlso: AX=25C1h,AX=25C2h
  5048. --------E-2125C1-----------------------------
  5049. INT 21 P - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
  5050.     AX = 25C1h
  5051.     CX = real-mode paragraph address of memory block to free
  5052. Return: CF clear if successful
  5053.         EAX destroyed
  5054.     CF set on error
  5055.         AX = error code
  5056.         07h MS-DOS memory control blocks destroyed
  5057.         09h invalid memory block address in CX
  5058. SeeAlso: AX=25C0h,AX=25C2h
  5059. --------E-2125C2-----------------------------
  5060. INT 21 P - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
  5061.     AX = 25C2h
  5062.     BX = new requested block size in paragraphs
  5063.     CX = real-mode paragraph address of memory block to modify
  5064. Return: CF clear if successful
  5065.         EAX destroyed
  5066.     CF set on error
  5067.         AX = error code
  5068.         07h MS-DOS memory control blocks destroyed
  5069.         08h insufficient memory
  5070.         09h invalid memory block address in CX
  5071.         BX = size in paragraphs of largest available memory block
  5072. SeeAlso: AX=25C0h,AX=25C1h
  5073. --------E-2125C3-----------------------------
  5074. INT 21 P - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
  5075.     AX = 25C3h
  5076.     ES:EBX -> pointer to parameter block (see #0602)
  5077.     DS:EDX -> pointer to ASCIZ program filename
  5078. Return: CF clear if successful
  5079.         all registers unchanged
  5080.     CF set on error
  5081.         EAX = error code (see #0601)
  5082.  
  5083. (Table 0601)
  5084. Values for Phar Lap error code:
  5085.  01h    function code in AL is invalid ???
  5086.  02h    file not found or path invalid
  5087.  05h    access denied
  5088.  08h    insufficient memory to load program
  5089.  0Ah    environment invalid
  5090.  0Bh    invalid file format
  5091.  
  5092. Format of parameter block:
  5093. Offset    Size    Description    (Table 0602)
  5094.  00h    DWORD    32-bit offset of environment string
  5095.  04h    WORD    segment selector of environment string
  5096.  06h    DWORD    32-bit offset of command-tail string
  5097.  0Ah    WORD    segment selector of command-tail string
  5098. --------D-2126-------------------------------
  5099. INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
  5100.     AH = 26h
  5101.     DX = segment at which to create PSP (see #0603)
  5102. Notes:    new PSP is updated with memory size information; INTs 22h, 23h, 24h
  5103.       taken from interrupt vector table; the parent PSP field is set to 0
  5104.     (DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
  5105.       copy
  5106. SeeAlso: AH=4Bh,AH=50h,AH=51h,AH=55h,AH=62h,AH=67h
  5107.  
  5108. Format of Program Segment Prefix (PSP):
  5109. Offset    Size    Description    (Table 0603)
  5110.  00h  2 BYTEs    INT 20 instruction for CP/M CALL 0 program termination
  5111.         the CDh 20h here is often used as a signature for a valid PSP
  5112.  02h    WORD    segment of first byte beyond memory allocated to program
  5113.  04h    BYTE    (DOS) unused filler
  5114.         (OS/2) count of fake DOS version returns
  5115.  05h    BYTE    CP/M CALL 5 service request (FAR CALL to absolute 000C0h)
  5116.         BUG: (DOS 2+ DEBUG) PSPs created by DEBUG point at 000BEh
  5117.  06h    WORD    CP/M compatibility--size of first segment for .COM files
  5118.  08h  2 BYTEs    remainder of FAR JMP at 05h
  5119.  0Ah    DWORD    stored INT 22 termination address
  5120.  0Eh    DWORD    stored INT 23 control-Break handler address
  5121.  12h    DWORD    DOS 1.1+ stored INT 24 critical error handler address
  5122.  16h    WORD    segment of parent PSP
  5123.  18h 20 BYTEs    DOS 2+ Job File Table, one byte per file handle, FFh = closed
  5124.  2Ch    WORD    DOS 2+ segment of environment for process (see #0604)
  5125.  2Eh    DWORD    DOS 2+ process's SS:SP on entry to last INT 21 call
  5126.  32h    WORD    DOS 3+ number of entries in JFT (default 20)
  5127.  34h    DWORD    DOS 3+ pointer to JFT (default PSP:0018h)
  5128.  38h    DWORD    DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
  5129.         used by SHARE in DOS 3.3
  5130.  3Ch    BYTE    DOS 4+ (DBCS) interim console flag (see AX=6301h)
  5131.  3Dh    BYTE    (APPEND) TrueName flag (see INT 2F/AX=B711h)
  5132.  3Eh    BYTE    (Novell NetWare) flag: next byte initialized if CEh
  5133.         (OS/2) capabilities flag
  5134.  3Fh    BYTE    (Novell NetWare) Novell task number if previous byte is CEh
  5135.  40h  2 BYTEs    DOS 5+ version to return on INT 21/AH=30h
  5136.  42h    WORD    (MSWindows3) selector of next PSP (PDB) in linked list
  5137.         Windows keeps a linked list of Windows programs only
  5138.  44h    WORD    (MSWindows3) "PDB_Partition"
  5139.  46h    WORD    (MSWindows3) "PDB_NextPDB"
  5140.  48h    BYTE    (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
  5141.  49h    BYTE    unused by DOS versions <= 6.00
  5142.  4Ch    WORD    (MSWindows3) "PDB_EntryStack"
  5143.  4Eh  2 BYTEs    unused by DOS versions <= 6.00
  5144.  50h  3 BYTEs    DOS 2+ service request (INT 21/RETF instructions)
  5145.  53h  2 BYTEs    unused in DOS versions <= 6.00
  5146.  55h  7 BYTEs    unused in DOS versions <= 6.00; can be used to make first FCB
  5147.           into an extended FCB
  5148.  5Ch 16 BYTEs    first default FCB, filled in from first commandline argument
  5149.         overwrites second FCB if opened
  5150.  6Ch 16 BYTEs    second default FCB, filled in from second commandline argument
  5151.           overwrites beginning of commandline if opened
  5152.  7Ch  4 BYTEs    unused
  5153.  80h 128 BYTEs    commandline / default DTA
  5154.         command tail is BYTE for length of tail, N BYTEs for the tail,
  5155.           followed by a BYTE containing 0Dh
  5156. Notes:    in DOS v3+, the limit on simultaneously open files may be increased by
  5157.       allocating memory for a new open file table, filling it with FFh,
  5158.       copying the first 20 bytes from the default table, and adjusting the
  5159.       pointer and count at 34h and 32h.  However, DOS will only copy the
  5160.       first 20 file handles into a child PSP (including the one created on
  5161.       EXEC).
  5162.     network redirectors based on the original MS-Net implementation use
  5163.       values of 80h-FEh in the open file table to indicate remote files;
  5164.       Novell NetWare also uses values from FEh down to 80h or one more than
  5165.       FILES= (whichever is greater) to indicate remote files
  5166.     MS-DOS 5.00 incorrectly fills the FCB fields when loading a program
  5167.       high; the first FCB is empty and the second contains the first
  5168.       parameter
  5169.     some DOS extenders place protected-mode values in various PSP fields
  5170.       such as the "parent" field, which can confuse PSP walkers.  Always
  5171.       check either for the CDh 20h signature or that the suspected PSP is
  5172.       at the beginning of a memory block which owns itself (the preceding
  5173.       paragraph should be a valid MCB with "owner" the same as the
  5174.       suspected PSP).
  5175.     Novell NetWare updates the fields at offsets 3Eh and 3Fh without
  5176.       checking that a legal PSP segment is current; see AH=50h for further
  5177.       discussion
  5178.  
  5179. Format of environment block:
  5180. Offset    Size    Description    (Table 0604)
  5181.  00h  N BYTEs    first environment variable, ASCIZ string of form "var=value"
  5182.       N BYTEs    second environment variable, ASCIZ string
  5183.     ...
  5184.       N BYTEs    last environment variable, ASCIZ string of form "var=value"
  5185.     BYTE    00h
  5186. ---DOS 3.0+ ---
  5187.     WORD    number of strings following environment (normally 1)
  5188.       N BYTEs    ASCIZ full pathname of program owning this environment
  5189.         other strings may follow
  5190. --------D-2127-------------------------------
  5191. INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
  5192.     AH = 27h
  5193.     CX = number of records to read
  5194.     DS:DX -> opened FCB (see #0574)
  5195. Return: AL = status
  5196.         00h successful, all records read
  5197.         01h end of file, no data read
  5198.         02h segment wrap in DTA, no data read
  5199.         03h end of file, partial read
  5200.     [DTA] = records read from file
  5201.     CX = number of records read (return AL = 00h or 03h)
  5202. Notes:    read begins at current file position as specified in FCB; the file
  5203.       position is updated after reading
  5204.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5205. SeeAlso: AH=21h,AH=28h,AH=3Fh
  5206. --------D-2128-------------------------------
  5207. INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
  5208.     AH = 28h
  5209.     CX = number of records to write
  5210.     DS:DX -> opened FCB (see #0574)
  5211.     [DTA] = records to write
  5212. Return: AL = status
  5213.         00h successful
  5214.         01h disk full or file read-only
  5215.         02h segment wrap in DTA
  5216.     CX = number of records written
  5217. Notes:    write begins at current file position as specified in FCB; the file
  5218.       position is updated after writing
  5219.     if CX = 0000h on entry, no data is written; instead the file size is
  5220.       adjusted to be the same as the file position specified by the random
  5221.       record and record size fields of the FCB
  5222.     if the data to be written is less than a disk sector, it is copied into
  5223.       a DOS disk buffer, to be written out to disk at a later time
  5224.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5225. SeeAlso: AH=22h,AH=27h,AH=40h,AH=59h
  5226. --------D-2129-------------------------------
  5227. INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
  5228.     AH = 29h
  5229.     AL = parsing options (see #0605)
  5230.     DS:SI -> filename string (both '*' and '?' wildcards OK)
  5231.     ES:DI -> buffer for unopened FCB
  5232. Return: AL = result code
  5233.         00h successful parse, no wildcards encountered
  5234.         01h successful parse, wildcards present
  5235.         FFh failed (invalid drive specifier)
  5236.     DS:SI -> first unparsed character
  5237.     ES:DI buffer filled with unopened FCB (see #0574)
  5238. Notes:    asterisks expanded to question marks in the FCB
  5239.     all processing stops when a filename terminator is encountered
  5240.     cannot be used with filespecs which include a path (DOS 2+)
  5241.     Novell NetWare monitors the result code since an 'invalid drive' may
  5242.       signal an attempt to reconnect a network drive; if there are no
  5243.       connections to the specified drive, NetWare attempts to build a
  5244.       connection and map the drive to the SYS:LOGIN directory
  5245. SeeAlso: AH=0Fh,AH=16h,AH=26h
  5246.  
  5247. Bitfields for parsing options:
  5248. Bit(s)    Description    (Table 0605)
  5249.  0    skip leading separators
  5250.  1    use existing drive number in FCB if no drive is specified, instead of
  5251.       setting field to zero
  5252.  2    use existing filename in FCB if no base name is specified, instead of
  5253.       filling field with blanks
  5254.  3    use existing extension in FCB if no extension is specified, instead of
  5255.       filling field with blanks
  5256.  4-7    reserved (0)
  5257. --------D-212A-------------------------------
  5258. INT 21 - DOS 1+ - GET SYSTEM DATE
  5259.     AH = 2Ah
  5260. Return: CX = year (1980-2099)
  5261.     DH = month
  5262.     DL = day
  5263. ---DOS 1.10+---
  5264.     AL = day of week (00h=Sunday)
  5265. SeeAlso: AH=2Bh"DOS",AH=2Ch,AH=E7h,INT 1A/AH=04h,INT 2F/AX=120Dh
  5266. --------D-212B-------------------------------
  5267. INT 21 - DOS 1+ - SET SYSTEM DATE
  5268.     AH = 2Bh
  5269.     CX = year (1980-2099)
  5270.     DH = month
  5271.     DL = day
  5272. Return: AL = status
  5273.         00h successful
  5274.         FFh invalid date, system date unchanged
  5275. Note:    DOS 3.3+ also sets CMOS clock
  5276. SeeAlso: AH=2Ah,AH=2Dh,INT 1A/AH=05h
  5277. --------E-212B--CX4149-----------------------
  5278. INT 21 - AI Architects - ??? - INSTALLATION CHECK
  5279.     AH = 2Bh
  5280.     CX = 4149h ('AI')
  5281.     DX = 413Fh ('A?')
  5282. Return: AL <> FFh if installed
  5283. Note:    Borland's TKERNEL makes this call
  5284. --------c-212B--CX4358-----------------------
  5285. INT 21 - Super PC-Kwik v3.20+ - INSTALLATION CHECK
  5286.     AH = 2Bh
  5287.     CX = 4358h ('CX')
  5288. Return: AL = FFh if PC-Kwik/PC-Cache not installed
  5289.     AL = 00h if installed
  5290.         CF clear
  5291.         CX = 6378h ('cx')
  5292.         BX = ???
  5293.         DX = version (DH = major version, DL = binary minor version)
  5294. Note:    PC Tools PC-Cache v5.x and Qualitas Qcache v4.00 are OEM versions of
  5295.       Super PC-Kwik, and thus support this call (PC-Cache 5.1 corresponds
  5296.       to PC-Kwik v3.20)
  5297. SeeAlso: INT 13/AH=A0h,INT 13/AH=B0h,INT 16/AX=FFA5h/CX=1111h
  5298. Index:    PC-Cache;installation check|Qualitas Qcache;installation check
  5299. Index:    installation check;PC-Cache 5.x|installation check;Qualitas Qcache
  5300. --------Q-212B--CX4445-----------------------
  5301. INT 21 - DESQview - INSTALLATION CHECK
  5302.     AH = 2Bh
  5303.     CX = 4445h ('DE')
  5304.     DX = 5351h ('SQ')
  5305.     AL = subfunction (DV v2.00+)
  5306.         01h get version
  5307.         Return: BX = version (BH = major, BL = minor)
  5308.         Note: early copies of v2.00 return 0002h
  5309.         02h get shadow buffer info, and start shadowing
  5310.         Return: BH = rows in shadow buffer
  5311.             BL = columns in shadow buffer
  5312.             DX = segment of shadow buffer
  5313.         04h get shadow buffer info
  5314.         Return: BH = rows in shadow buffer
  5315.             BL = columns in shadow buffer
  5316.             DX = segment of shadow buffer
  5317.         05h stop shadowing
  5318. Return: AL = FFh if DESQview not installed
  5319. Notes:    in DESQview v1.x, there were no subfunctions; this call only identified
  5320.       whether or not DESQview was loaded.  DESQview v2.52 performs function
  5321.       01h for all subfunction requests 0Ch and higher and appears to ignore
  5322.       all lower-numbered functions not listed here.
  5323.     DESQview versions 2.50-2.52 are part of DESQview/X v1.0x; version 2.53
  5324.       is part of DESQview/X v1.10; and version 2.63 is part of DESQview/X
  5325.       v2.00.
  5326. BUG:    subfunction 05h does not appear to work correctly in DESQview 2.52
  5327. SeeAlso: INT 10/AH=FEh,INT 10/AH=FFh,INT 15/AX=1024h,INT 15/AX=DE30h
  5328. --------U-212B--CX454C-----------------------
  5329. INT 21 - ELRES v1.1 - INSTALLATION CHECK
  5330.     AH = 2Bh
  5331.     CX = 454Ch ('EL')
  5332.     DX = 5253h ('RS')
  5333. Return: ES:BX -> ELRES history structure (see #0606)
  5334.     DX = DABEh (signature, DAve BEnnett)
  5335. Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
  5336.       Bennett which stores recent errorlevel values, allows them to be
  5337.       retrieved for use in batch files, and can place them in an
  5338.       environment variable
  5339. SeeAlso: AH=4Bh"ELRES",AH=4Dh
  5340.  
  5341. Format of ELRES history structure:
  5342. Offset    Size    Description    (Table 0606)
  5343.  00h    WORD    number of return codes which can be stored by following buffer
  5344.  02h    WORD    current position in buffer (treated as a ring)
  5345.  04h  N BYTEs    ELRES buffer
  5346. --------m-212B01CX444D-----------------------
  5347. INT 21 - Quarterdeck DOS-UP.SYS v2.00 - INSTALLATION CHECK
  5348.     AX = 2B01h
  5349.     CX = 444Dh ('DM')
  5350.     DX = 4158h ('AX')
  5351. Return: AX = 0000h if installed
  5352.         BX = version??? (0002h)
  5353.         CX = 4845h ('HE')
  5354.         DX = 5245h ('RE')
  5355.         ES = DOS-UP driver segment
  5356. --------T-212B01CX5441-----------------------
  5357. INT 21 - TAME v2.10+ - INSTALLATION CHECK
  5358.     AX = 2B01h
  5359.     CX = 5441h ('TA')
  5360.     DX = 4D45h ('ME')
  5361. ---v2.60---
  5362.     BH = ???
  5363.         00h skip ???, else do
  5364. Return: AL = 02h if installed
  5365.     ES:DX -> data area in TAME-RES (see #0607,#0611,#0613)
  5366. Program: TAME is a shareware program by David G. Thomas which gives up CPU time
  5367.       to other partitions under a multitasker when the current partition's
  5368.       program incessantly polls the keyboard or system time
  5369.  
  5370. Format of TAME 2.10-2.20 data area:
  5371. Offset    Size    Description    (Table 0607)
  5372.  00h    BYTE    data structure minor version number (01h in TAME 2.20)
  5373.  01h    BYTE    data structure major version number (07h in TAME 2.20)
  5374.  02h    DWORD    number of task switches
  5375.  06h    DWORD    number of keyboard polls
  5376.  0Ah    DWORD    number of time polls
  5377.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  5378.  12h    DWORD    original INT 10h
  5379.  16h    DWORD    original INT 14h
  5380.  1Ah    DWORD    original INT 15h
  5381.  1Eh    DWORD    original INT 16h
  5382.  22h    DWORD    original INT 17h
  5383.  26h    DWORD    original INT 21h
  5384.  2Ah    DWORD    original INT 28h
  5385.  2Eh    WORD    offset of TAME INT 10h handler
  5386.  30h    WORD    offset of TAME INT 14h handler
  5387.  32h    WORD    offset of TAME INT 15h handler
  5388.  34h    WORD    offset of TAME INT 16h handler
  5389.  36h    WORD    offset of TAME INT 17h handler
  5390.  38h    WORD    offset of TAME INT 21h handler
  5391.  3Ah    WORD    offset of TAME INT 28h handler
  5392.  3Ch    WORD    X in /max:X,Y or /freq:X,Y
  5393.  3Eh    WORD    Y in /max:X,Y or /freq:X,Y
  5394.  40h    WORD    number of polls remaining before next task switch
  5395.  42h    WORD    /KEYIDLE value
  5396.  44h    BYTE    interrupts already grabbed by TAME (see #0608)
  5397.  45h    BYTE    flags for interrupts which may be acted on (same bits as above)
  5398.  46h    BYTE    TAME enabled (01h) or disabled (00h)
  5399.  47h    BYTE    /TIMEPOLL (01h) or /NOTIMEPOLL (00h)
  5400.  48h    BYTE    /NOTIMER (01h) or /TIMER (00h)
  5401.  49h    BYTE    window or task number for this task
  5402.  4Ah    BYTE    multitasker type (see #0609)
  5403.  4Bh    BYTE    type of task switching selected
  5404.         bit 0: DESQview???
  5405.         bit 1: DoubleDOS???
  5406.         bit 2: TopView???
  5407.         bit 3: KeySwitch
  5408.         bit 4: HLT instruction
  5409.  4Ch    BYTE    ???
  5410.  4Dh    BYTE    flags
  5411.         bit 1: /FREQ instead of /MAX
  5412.  4Eh    BYTE    /FG: value
  5413.  4Fh    BYTE    task switches left until next FGONLY DESQview API call
  5414.  50h    BYTE    ???
  5415.  
  5416. Bitfields for interrupts already grabbed by TAME:
  5417. Bit(s)    Description    (Table 0608)
  5418.  0    INT 10h
  5419.  1    INT 14h
  5420.  2    INT 15h
  5421.  3    INT 16h
  5422.  4    INT 17h
  5423.  5    INT 21h
  5424.  6    INT 28h
  5425.  
  5426. (Table 0609)
  5427. Values for multitasker type:
  5428.  01h    DESQview
  5429.  02h    DoubleDOS
  5430.  03h    TopView
  5431.  04h    OmniView
  5432.  05h    VM/386
  5433.  
  5434. Bitfields for type of task switching selected:
  5435. Bit(s)    Description    (Table 0610)
  5436.  0    DESQview
  5437.  1    DoubleDOS
  5438.  2    TopView
  5439.  3    OmniView
  5440.  4    KeySwitch
  5441.  5    HLT instruction
  5442.  
  5443. Format of TAME 2.30 data area:
  5444. Offset    Size    Description    (Table 0611)
  5445.  00h    BYTE    data structure minor version number (02h in TAME 2.30)
  5446.  01h    BYTE    data structure major version number (0Ah in TAME 2.30)
  5447.  02h    DWORD    number of task switches
  5448.  06h    DWORD    number of keyboard polls
  5449.  0Ah    DWORD    number of time polls
  5450.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  5451.  12h    DWORD    time of last /CLEAR or TAME-RES load
  5452.  16h    DWORD    time yielded
  5453.  1Ah    DWORD    time spent polling
  5454.  1Eh    DWORD    time spent waiting on key input with INT 16/AH=01h,11h
  5455.  22h    DWORD    original INT 10h
  5456.  26h    DWORD    original INT 14h
  5457.  2Ah    DWORD    original INT 15h
  5458.  2Eh    DWORD    original INT 16h
  5459.  32h    DWORD    original INT 17h
  5460.  36h    DWORD    original INT 21h
  5461.  3Ah    DWORD    original INT 28h
  5462.  3Eh    WORD    offset of TAME INT 10h handler
  5463.  40h    WORD    offset of TAME INT 14h handler
  5464.  42h    WORD    offset of TAME INT 15h handler
  5465.  44h    WORD    offset of TAME INT 16h handler
  5466.  46h    WORD    offset of TAME INT 17h handler
  5467.  48h    WORD    offset of TAME INT 21h handler
  5468.  4Ah    WORD    offset of TAME INT 28h handler
  5469.  4Ch    WORD    X in /max:X,Y or /freq:X,Y
  5470.  4Eh    WORD    Y in /max:X,Y or /freq:X,Y
  5471.  50h    WORD    number of polls remaining before next task switch
  5472.  52h    WORD    /KEYIDLE value
  5473.  54h    WORD    /FG: value
  5474.  56h    WORD    task switches left until next FGONLY DESQview API call
  5475.  58h    WORD    multitasker version
  5476.  5Ah    WORD    virtual screen segment
  5477.  5Ch    BYTE    interrupts already grabbed by TAME (see #0608)
  5478.  5Dh    BYTE    flags for interrupts which may be acted on (same bits as above)
  5479.  5Eh    BYTE    window or task number for this task
  5480.  5Fh    BYTE    multitasker type (see #0609)
  5481.  60h    BYTE    type of task switching selected (bit flags) (see #0610)
  5482.  61h    BYTE    watch_DOS
  5483.  62h    BYTE    action flags (see #0612)
  5484.  63h    BYTE    old status
  5485.  64h    WORD    signature DA34h
  5486.  
  5487. Bitfields for TAME action flags:
  5488. Bit(s)    Description    (Table 0612)
  5489.  0    TAME enabled
  5490.  1    /FREQ instead of /MAX (X and Y count fields are per tick)
  5491.  2    /TIMEPOLL
  5492.  3    /KEYPOLL
  5493.  4    inhibit timer
  5494.  5    enable status monitoring
  5495. SeeAlso: #0611,#0613
  5496.  
  5497. Format of TAME 2.60 data area:
  5498. Offset    Size    Description    (Table 0613)
  5499.  00h    BYTE    data structure minor version number (02h in TAME 2.60)
  5500.  01h    BYTE    data structure major version number (0Bh in TAME 2.60)
  5501.  02h    DWORD    number of task switches
  5502.  06h    DWORD    number of keyboard polls
  5503.  0Ah    DWORD    number of time polls
  5504.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  5505.  12h    DWORD    time of last /CLEAR or TAME-RES load
  5506.  16h    DWORD    time yielded
  5507.  1Ah    DWORD    time spent polling
  5508.  1Eh    DWORD    time spent waiting on key input with INT 16/AH=01h,11h
  5509.  22h  4 BYTEs    ???
  5510.  26h    DWORD    original INT 10h
  5511.  2Ah    DWORD    original INT 14h
  5512.  2Eh    DWORD    original INT 15h
  5513.  32h    DWORD    original INT 16h
  5514.  36h    DWORD    original INT 17h
  5515.  3Ah    DWORD    original INT 21h
  5516.  3Eh    DWORD    original INT 28h
  5517.  42h    WORD    offset of TAME INT 10h handler
  5518.  44h    WORD    offset of TAME INT 14h handler
  5519.  46h    WORD    offset of TAME INT 15h handler
  5520.  48h    WORD    offset of TAME INT 16h handler
  5521.  4Ah    WORD    offset of TAME INT 17h handler
  5522.  4Ch    WORD    offset of TAME INT 21h handler
  5523.  4Eh    WORD    offset of TAME INT 28h handler
  5524.  50h    WORD    X in /max:X,Y or /freq:X,Y
  5525.  52h    WORD    Y in /max:X,Y or /freq:X,Y
  5526.  54h    WORD    number of polls remaining before next task switch
  5527.  56h    WORD    /KEYIDLE value
  5528.  58h  4 BYTEs    ???
  5529.  5Ch    WORD    X in /boost:X,Y
  5530.  5Eh    WORD    Y in /boost:X,Y
  5531.  60h    WORD    /FG: value
  5532.  62h    WORD    task switches remaining until next FGONLY DESQview API call
  5533.  64h    WORD    multitasker version ???
  5534.  66h    WORD    virtual screen segment
  5535.  68h    BYTE    interrupts already grabbed by TAME (see #0608)
  5536.  69h    BYTE    flags for interrupts which may be acted on (same bits as above)
  5537.  6Ah    BYTE    window or task number for this task
  5538.  6Bh    BYTE    multitasker type (see #0609)
  5539.  6Ch    BYTE    type of task switching selected (bit flags) (see #0610)
  5540.  6Dh    BYTE    watch_DOS
  5541.  6Eh    BYTE    action flags (see #0612)
  5542.  6Fh    BYTE    old status
  5543.  70h    WORD    signature DA34h
  5544. --------v-212B16CX0643-----------------------
  5545. INT 21 - VIRUS - "Maltese Amoeba" - INSTALLATION CHECK
  5546.     AX = 2B16h
  5547.     CX = 0643h
  5548. Return: AX = 1603h if installed
  5549. --------R-212B44BX4D41-----------------------
  5550. INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
  5551.     AX = 2B44h ('D')
  5552.     BX = 4D41h ('MA')
  5553.     CX = 7063h ('pc')
  5554.     DX = 4157h ('AW')
  5555. Return: AX = resident program
  5556.         4F4Bh ('OK') if large host resident
  5557.         6F6Bh ('ok') if small host resident
  5558.     CX:DX -> API entry point (see #0614)
  5559. SeeAlso: INT 16/AH=79h
  5560.  
  5561. (Table 0614)
  5562. Call pcANYWHERE API entry point with:
  5563.     AX = 0000h get pcANYWHERE IV version
  5564.         DS:SI -> BYTE buffer for host type code
  5565.         Return: AH = version number
  5566.             AL = revision number
  5567.             DS:DI buffer byte filled with
  5568.             00h full-featured host
  5569.             01h limited-feature LAN host
  5570.             other API may not be supported
  5571.     AX = 0001h initialize operation
  5572.         DS:SI -> initialization request structure (see #0615)
  5573.         Return: AX = function status (see #0618)
  5574.     AX = 0002h get status
  5575.         Return: AH = current operating mode (see init req structure below)
  5576.             AL = current connection status (see #0617)
  5577.     AX = 0003h suspend remote screen updates
  5578.         Return: AX = function status (see #0618)
  5579.     AX = 0004h resume screen updates
  5580.         Return: AX = function status (see #0618)
  5581.     AX = 0005h end current remote access session
  5582.         DS:SI -> termination request structure (see #0616)
  5583.         Return: AX = function status (see #0618)
  5584.     AX = 0006h remove pcANYWHERE IV from memory
  5585.         Return: AX = status (see #0618)
  5586.     AX = 8000h read data from communications channel
  5587.         DS:BX -> buffer
  5588.         CX = buffer size
  5589.         Return: AX >= number of characters read/available
  5590.             AX < 0 on error
  5591.     AX = 8001h write data to communications channel
  5592.         DS:BX -> buffer
  5593.         CX = buffer size
  5594.         Return: AX >= number of characters written
  5595.             AX < 0 on error
  5596.     AX = 8002h get connection status
  5597.         Return: AX = status
  5598.             > 0000h if connection active
  5599.             = 0000h if connection lost
  5600.             < 0000h on error
  5601.  
  5602. Format of pcANYWHERE initialization request structure:
  5603. Offset    Size    Description    (Table 0615)
  5604.  00h    BYTE    operating mode
  5605.         00h wait for a call
  5606.         01h hot key activates
  5607.         02h incoming call activates
  5608.         03h initiate a call
  5609.  01h  3 BYTEs    user ID to append to config file names
  5610.  04h    WORD    DS-relative pointer to path for config files
  5611.  06h    WORD    DS-relative pointer to path for program files
  5612.  
  5613. Format of pcANYWHERE termination request structure:
  5614. Offset    Size    Description    (Table 0616)
  5615.  00h    BYTE    operating mode after termination
  5616.         00h wait for a call
  5617.         01h hot key activates
  5618.         02h incoming call activates
  5619.         80h use current mode
  5620.         FFh remove from memory
  5621.  
  5622. Bitfields for current connection status:
  5623. Bit(s)    Description    (Table 0617)
  5624.  0    a physical connection is active
  5625.  1    remove screen updating is active
  5626.  2    connection checking is active
  5627.  3    hot key detection is active
  5628.  4    background file transfer is active
  5629.  
  5630. (Table 0618)
  5631. Values for pcANYWHERE function status:
  5632.  0000h    function completed successfully
  5633.  FFD1h    unable to release interrupt vectors
  5634.  FFD2h    unable to release allocated memory
  5635.  FFF2h    unable to establish a connection when operating mode is
  5636.       "Initiate a call"
  5637.  FFF3h    modem configuration is invalid (corrupt config)
  5638.  FFF4h    modem initialization failed (no modem response)
  5639.  FFF5h    the communications device could not be initialized
  5640.  FFF6h    the host operator aborted the function
  5641.  FFF7h    the communications driver type specified in the configuration file is
  5642.       different than the one loaded when pcANYWHERE IV was started
  5643.  FFF9h    the configuration file is invalid
  5644.  FFFAh    the configuration file could not be found
  5645.  FFFBh    no session is active
  5646.  FFFCh    a remote access session is active
  5647.  FFFDh    the specified operating mode is invalid
  5648. --------G-212B--CX6269-----------------------
  5649. INT 21 - WDTSR.COM - INSTALLATION CHECK
  5650.     AH = 2Bh
  5651.     CX = 6269h ('bi')
  5652.     DX = 742Dh ('t-')
  5653. Return: AL = FFh if not installed
  5654.     AL = 77h ('w') if WDTSR is installed
  5655.         CX = 6174h ('at')
  5656.         DX = 6368h ('ch')
  5657.         ES = resident code segment
  5658.         ES:DI -> identification and configuration data
  5659. Program: WDTSR is a driver for the bitWatch watchdog hardware by bit-design
  5660.       GmbH
  5661. SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 14/AH=14h"FOSSIL",INT 15/AH=C3h
  5662. --------S-212B--CX6269-----------------------
  5663. INT 21 - bitFOSS - INSTALLATION CHECK
  5664.     AH = 2Bh
  5665.     CX = 6269h ('bi')
  5666.     DX = 7446h ('tF')
  5667. Return: AL = FFh if not installed
  5668.     AL = 4Fh ('O') if bitFOSS is installed
  5669.         CX = 5353h ('SS')
  5670.         DX = 494Ch ('IL')
  5671.         ES = resident code segment
  5672.         ES:DI -> identification data
  5673. Program: bitFOSS is a revision 5 FOSSIL driver
  5674. SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 11/AH=BCh
  5675. --------S-212B--CX6269-----------------------
  5676. INT 21 - bitFOSSI - INSTALLATION CHECK
  5677.     AH = 2Bh
  5678.     CX = 6269h ('bi')
  5679.     DX = 7449h ('tI')
  5680. Return: AL = FFh if not installed
  5681.     AL = 53h ('S') if bitFOSSI is installed
  5682.         CX = 444Eh ('DN')
  5683.         DX = 2D46h ('-F')
  5684.         ES = resident code segment
  5685.         ES:DI -> identification data
  5686. Program: bitFOSSI is a revision 5 FOSSIL driver for ???'s ISDN board
  5687. SeeAlso: AH=2Bh/CX=6269h/DX=7446h,INT 11/AH=BCh
  5688. --------D-212C-------------------------------
  5689. INT 21 - DOS 1+ - GET SYSTEM TIME
  5690.     AH = 2Ch
  5691. Return: CH = hour
  5692.     CL = minute
  5693.     DH = second
  5694.     DL = 1/100 seconds
  5695. Note:    on most systems, the resolution of the system clock is about 5/100sec,
  5696.       so returned times generally do not increment by 1
  5697.     on some systems, DL may always return 00h
  5698. SeeAlso: AH=2Ah,AH=2Dh,AH=E7h,INT 1A/AH=00h,INT 1A/AH=02h,INT 1A/AH=FEh
  5699. SeeAlso: INT 2F/AX=120Dh
  5700. --------v-212C--------------------------
  5701. INT 21 - VIRUS - "Anti Pode 2.0" - INSTALLATION CHECK
  5702.     AH = 2Ch
  5703. Return: DL = F2h if resident
  5704. SeeAlso: AX=1812h"VIRUS",AX=2C2Ch
  5705. --------v-212C00CX534B-----------------------
  5706. INT 21 - SKUDO - INSTALLATION CHECK
  5707.     AX = 2C00h
  5708.     CX = 534Bh ('SK')
  5709.     DX = 5544h ('UD')
  5710.     BX = 4F21h ('O!')
  5711. Return: AX = 5349h ('SI') if installed
  5712.         CH = version number
  5713.         CL = subversion
  5714. Program: SKUDO is an antivirus TSR by Jordi Mas
  5715. --------v-212C2C------------------------
  5716. INT 21 - VIRUS - "LockJaw/Proto-T" - INSTALLATION CHECK
  5717.     AX = 2C2Ch
  5718. Return: AX = 0DCDh if resident
  5719. SeeAlso: AH=2Ch"VIRUS",AX=3000h"VIRUS"
  5720. --------D-212D-------------------------------
  5721. INT 21 - DOS 1+ - SET SYSTEM TIME
  5722.     AH = 2Dh
  5723.     CH = hour
  5724.     CL = minute
  5725.     DH = second
  5726.     DL = 1/100 seconds
  5727. Return: AL = result
  5728.         00h successful
  5729.         FFh invalid time, system time unchanged
  5730. Note:    DOS 3.3+ also sets CMOS clock
  5731. SeeAlso: AH=2Bh"DOS",AH=2Ch,INT 1A/AH=01h,INT 1A/AH=03h,INT 1A/AH=FFh"AT&T"
  5732. --------T-212D01CX7820-----------------------
  5733. INT 21 - PC-Mix - INSTALLATION CHECK
  5734.     AX = 2D01h
  5735.     CX = 7820h ('X ')
  5736.     DX = 6D69h ('MI')
  5737. Return: AL = 00h if installed
  5738. --------D-212E--DL00-------------------------
  5739. INT 21 - DOS 1+ - SET VERIFY FLAG
  5740.     AH = 2Eh
  5741.     DL = 00h (DOS 1.x/2.x only)
  5742.     AL = new state of verify flag
  5743.         00h off
  5744.         01h on
  5745. Notes:    default state at system boot is OFF
  5746.     when ON, all disk writes are verified provided the device driver
  5747.       supports read-after-write verification
  5748. SeeAlso: AH=54h
  5749. --------D-212F-------------------------------
  5750. INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
  5751.     AH = 2Fh
  5752. Return: ES:BX -> current DTA
  5753. Note:    under the FlashTek X-32 DOS extender, the pointer is in ES:EBX
  5754. SeeAlso: AH=1Ah
  5755. --------D-2130-------------------------------
  5756. INT 21 - DOS 2+ - GET DOS VERSION
  5757.     AH = 30h
  5758. ---DOS 5+ ---
  5759.     AL = what to return in BH
  5760.         00h OEM number (as for DOS 2.0-4.0x)
  5761.         01h version flag
  5762. Return: AL = major version number (00h if DOS 1.x)
  5763.     AH = minor version number
  5764.     BL:CX = 24-bit user serial number (most versions do not use this)
  5765. ---if DOS <5 or AL=00h---
  5766.     BH = MS-DOS OEM number (see #0619)
  5767. ---if DOS 5+ and AL=01h---
  5768.     BH = version flag
  5769.         bit 3: DOS is in ROM
  5770.         other: reserved (0)
  5771. Notes:    the OS/2 v1.x Compatibility Box returns major version 0Ah (10)
  5772.     the OS/2 v2.x Compatibility Box returns major version 14h (20)
  5773.     OS/2 Warp 3.0 Virtual DOS Machines report v20.30.
  5774.     the Windows/NT DOS box returns version 5.00, subject to SETVER
  5775.     DOS 4.01 and 4.02 identify themselves as version 4.00; use
  5776.       INT 21/AH=87h to distinguish between the original European MS-DOS 4.0
  5777.       and the later PC-DOS 4.0x and MS-DOS 4.0x
  5778.     IBM DOS 6.1 reports its version as 6.00; use the OEM number to
  5779.       distinguish between MS-DOS 6.00 and IBM DOS 6.1 (there was never an
  5780.       IBM DOS 6.0)
  5781.     MS-DOS 6.21 reports its version as 6.20; version 6.22 returns the
  5782.       correct value
  5783.     the "Chicago" beta returns version 7.00 (reported in
  5784.       _Microsoft_Systems_Journal_, August 1994).
  5785.     DR-DOS 5.0 and 6.0 report version 3.31; Novell DOS 7 reports IBM v6.00,
  5786.       which some software displays as IBM DOS v6.10 (because of the version
  5787.       mismatch in true IBM DOS, as mentioned above)
  5788.     generic MS-DOS 3.30, Compaq MS-DOS 3.31, and others identify themselves
  5789.       as PC-DOS by returning OEM number 00h
  5790.     the version returned under DOS 4.0x may be modified by entries in
  5791.       the special program list (see #0874 at AH=52h); the version returned
  5792.       under DOS 5+ may be modified by SETVER--use AX=3306h to get the true
  5793.       version number
  5794. SeeAlso: AX=3000h/BX=3000h,AX=3306h,AX=4452h,AH=87h,INT 15/AX=4900h
  5795. SeeAlso: INT 2F/AX=122Fh,INT 2F/AX=4010h,INT 2F/AX=E002h
  5796.  
  5797. (Table 0619)
  5798. Values for DOS OEM number:
  5799.  00h    IBM
  5800.  01h    Compaq
  5801.  02h    MS Packaged Product
  5802.  04h    AT&T
  5803.  05h    ZDS (Zenith Electronics)
  5804.  06h    Hewlett-Packard
  5805.  07h    ZDS (Groupe Bull)
  5806.  0Dh    Packard-Bell
  5807.  16h    DEC
  5808.  23h    Olivetti
  5809.  28h    Texas Instruments
  5810.  29h    Toshiba
  5811.  33h    Novell (Windows/386 device IDs only)
  5812.  34h    MS Multimedia Systems (Windows/386 device IDs only)
  5813.  35h    MS Multimedia Systems (Windows/386 device IDs only)
  5814.  4Dh    Hewlett-Packard
  5815.  5Eh    RxDOS
  5816.  66h    PhysTechSoft (PTS-DOS)
  5817.  99h    General Software's Embedded DOS
  5818.  EEh    DR-DOS
  5819.  EFh    Novell DOS
  5820.  FFh    Microsoft, Phoenix
  5821. --------E-2130-------------------------------
  5822. INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
  5823.     AH = 30h
  5824.     EAX = 00003000h
  5825.     EBX = 50484152h ("PHAR")
  5826. Return: AL = major DOS version
  5827.     AH = minor DOS version
  5828.     EAX bits 31-16 = 4458h ('DX') if 386/DOS-extender installed
  5829.         BL = ASCII major version number
  5830.     EAX bits 31-16 = 4243h ('BC') if Intel Code Builder installed
  5831.         EDX = address of GDA
  5832. SeeAlso: AX=2501h,AX=FF00h,INT 2F/AX=F100h
  5833. --------v-2130--DXABCD-----------------------
  5834. INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
  5835.     AH = 30h
  5836.     DX = ABCDh
  5837. Return: DX = DCBAh if installed
  5838. SeeAlso: AX=0D20h,AX=3000h"VIRUS",AX=30F1h
  5839. --------T-213000BX1234-----------------------
  5840. INT 21 - CTask 2.0+ - INSTALLATION CHECK
  5841.     AX = 3000h
  5842.     BX = 1234h
  5843.     DS:DX -> 8-byte version string (DX < FFF0h) "CTask21",00h for v2.1-2.2
  5844. Return: AL = DOS major version
  5845.     AH = DOS minor version
  5846.     CX:BX -> Ctask global data block
  5847. Program: CTask is a multitasking kernel for C written by Thomas Wagner
  5848. Note:    if first eight bytes of returned data block equal eight bytes passed
  5849.       in, CTask is resident
  5850. --------O-213000BX3000-----------------------
  5851. INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
  5852.     AX = 3000h
  5853.     BX = 3000h
  5854.     CX = DX = 3000h
  5855. Return: AX = PC-MOS version
  5856. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  5857.       system by The Software Link, Inc.
  5858. SeeAlso: AH=30h,INT 38/AH=02h,INT 38/AH=10h
  5859. --------v-213000BX614A------------------
  5860. INT 21 - VIRUS - "Jackal" - INSTALLATION CHECK
  5861.     AX = 3000h
  5862.     BX = 614Ah ('aJ')
  5863.     CX = 6B63h ('kc')
  5864.     DX = 6C61h ('la')
  5865. Return: BX = ???
  5866. SeeAlso: AX=2C2Ch"VIRUS",AX=33DAh"VIRUS"
  5867. --------G-213022-----------------------------
  5868. INT 21 - StopPrg v2.0 - INSTALLATION CHECK
  5869.     AX = 3022h
  5870. Return: AX = DOS version (see AH=30h)
  5871.     CX = 1112h if StopPrg installed
  5872.         BX = segment of resident code
  5873. Program: StopPrg is a resident program aborter by MAK-TRAXON's Prophet
  5874. Note:    StopPrg may be temporarily disabled by storing 9090h in the word at
  5875.       0000h:04FEh
  5876. --------v-2130F1-----------------------------
  5877. INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
  5878.     AX = 30F1h
  5879. Return: AL = 00h if resident
  5880. SeeAlso: AH=30h/DX=ABCDh,AX=330Fh,AX=33DAh
  5881. ----------2130FFCX4445-----------------------
  5882. INT 21 - DESQ??? - INSTALLATION CHECK
  5883.     AX = 30FFh
  5884.     CX = 4445h ("DE")
  5885.     DX = 5351h ("SQ")
  5886. Return: BH = 05h if installed
  5887.     ???
  5888. Note:    called by DUBLDISK.COM v2.6; this function is not supported by
  5889.       DESQview, so it may be for DESQview's precursor DESQ.
  5890. SeeAlso: AX=4404h"DUBLDISK"
  5891. --------D-2131-------------------------------
  5892. INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
  5893.     AH = 31h
  5894.     AL = return code
  5895.     DX = number of paragraphs to keep resident
  5896. Return: never
  5897. Notes:    the value in DX only affects the memory block containing the PSP;
  5898.       additional memory allocated via AH=48h is not affected
  5899.     the minimum number of paragraphs which will remain resident is 11h
  5900.       for DOS 2.x and 06h for DOS 3.0+
  5901.     most TSRs can save some memory by releasing their environment block
  5902.       before terminating (see #0603 at AH=26h,AH=49h)
  5903. SeeAlso: AH=00h,AH=4Ch,AH=4Dh,INT 20,INT 22,INT 27
  5904. --------D-2132-------------------------------
  5905. INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
  5906.     AH = 32h
  5907.     DL = drive number (00h = default, 01h = A:, etc)
  5908. Return: AL = status
  5909.         00h successful
  5910.         DS:BX -> Drive Parameter Block (DPB) (see #0620) for specified
  5911.               drive
  5912.         FFh invalid or network drive
  5913. Notes:    the OS/2 compatibility box supports the DOS 3.3 version of this call
  5914.       except for the DWORD at offset 12h
  5915.     this call updates the DPB by reading the disk; the DPB may be accessed
  5916.       via the DOS list of lists (see #0840 at AH=52h) if disk access is not
  5917.       desirable.
  5918.     undocumented prior to the release of DOS 5.0; only the DOS 4.0+
  5919.       version of the DPB has been documented, however
  5920.     supported by DR-DOS 3.41+; DR-DOS 3.41-6.0 return the same data as
  5921.       MS-DOS 3.31
  5922. SeeAlso: AH=1Fh,AH=52h
  5923.  
  5924. Format of DOS Drive Parameter Block:
  5925. Offset    Size    Description    (Table 0620)
  5926.  00h    BYTE    drive number (00h = A:, 01h = B:, etc)
  5927.  01h    BYTE    unit number within device driver
  5928.  02h    WORD    bytes per sector
  5929.  04h    BYTE    highest sector number within a cluster
  5930.  05h    BYTE    shift count to convert clusters into sectors
  5931.  06h    WORD    number of reserved sectors at beginning of drive
  5932.  08h    BYTE    number of FATs
  5933.  09h    WORD    number of root directory entries
  5934.  0Bh    WORD    number of first sector containing user data
  5935.  0Dh    WORD    highest cluster number (number of data clusters + 1)
  5936.         16-bit FAT if greater than 0FF6h, else 12-bit FAT
  5937.  0Fh    BYTE    number of sectors per FAT
  5938.  10h    WORD    sector number of first directory sector
  5939.  12h    DWORD    address of device driver header
  5940.  16h    BYTE    media ID byte (see #0581)
  5941.  17h    BYTE    00h if disk accessed, FFh if not
  5942.  18h    DWORD    pointer to next DPB
  5943. ---DOS 2.x---
  5944.  1Ch    WORD    cluster containing start of current directory, 0000h=root,
  5945.         FFFFh = unknown
  5946.  1Eh 64 BYTEs    ASCIZ pathname of current directory for drive
  5947. ---DOS 3.x---
  5948.  1Ch    WORD    cluster at which to start search for free space when writing
  5949.  1Eh    WORD    number of free clusters on drive, FFFFh = unknown
  5950. ---DOS 4.0-6.0---
  5951.  0Fh    WORD    number of sectors per FAT
  5952.  11h    WORD    sector number of first directory sector
  5953.  13h    DWORD    address of device driver header
  5954.  17h    BYTE    media ID byte (see #0581)
  5955.  18h    BYTE    00h if disk accessed, FFh if not
  5956.  19h    DWORD    pointer to next DPB
  5957.  1Dh    WORD    cluster at which to start search for free space when writing,
  5958.         usually the last cluster allocated
  5959.  1Fh    WORD    number of free clusters on drive, FFFFh = unknown
  5960. SeeAlso: #0875
  5961. --------D-2133-------------------------------
  5962. INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
  5963.     AH = 33h
  5964.     AL = subfunction
  5965.         00h get current extended break state
  5966.         Return: DL = current state, 00h = off, 01h = on
  5967.         01h set state of extended ^C/^Break checking
  5968.         DL = new state
  5969.             00h off, check only on character I/O functions
  5970.             01h on, check on all DOS functions
  5971.         Return: (Novell DOS 7) DL = old state of extended Break checks
  5972. Note:    under DOS 3.1+ and DR-DOS, this function does not use any of the
  5973.       DOS-internal stacks and may thus be called at any time
  5974. SeeAlso: AX=3302h
  5975. --------D-213302-----------------------------
  5976. INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
  5977.     AX = 3302h
  5978.     DL = new state (00h for OFF, 01h for ON)
  5979. Return: DL = old state of extended BREAK checking
  5980. Notes:    this function does not use any of the DOS-internal stacks and may thus
  5981.       be called at any time; one possible use is modifying Control-Break
  5982.       checking from within an interrupt handler or TSR
  5983.     not supported by DR-DOS through version 6.0; newly-supported by
  5984.       Novell DOS 7
  5985. SeeAlso: AH=33h
  5986. --------D-213303-----------------------------
  5987. INT 21 - DOS 4.0+ - UNUSED
  5988.     AX = 3303h
  5989. Return: nothing
  5990. Note:    this function and AX=3304h were apparently intended to support a
  5991.       code-page switching flag for OS/2 compatibility (OS/2 allows a file
  5992.       to have a code page as an attribute); however, this function has
  5993.       always been a NOP in public releases of DOS.    See _DOS_Internals_
  5994.       Chapter 2 for more information
  5995. SeeAlso: AX=3304h
  5996. --------D-213304-----------------------------
  5997. INT 21 - DOS 4.0+ - UNUSED
  5998.     AX = 3304h
  5999. Return: nothing
  6000. Note:    this function and AX=3303h were apparently intended to support a
  6001.       code-page switching flag for OS/2 compatibility (OS/2 allows a file
  6002.       to have a code page as an attribute); however, this function has
  6003.       always been a NOP in public releases of DOS.    See _DOS_Internals_
  6004.       Chapter 2 for more information
  6005. SeeAlso: AX=3303h
  6006. --------D-213305-----------------------------
  6007. INT 21 - DOS 4.0+ - GET BOOT DRIVE
  6008.     AX = 3305h
  6009. Return: DL = boot drive (1=A:,...)
  6010. Notes:    fully reentrant
  6011.     NEC 9800-series PCs always call the boot drive A: and assign the other
  6012.       drive letters sequentially to the other drives in the system
  6013.     this call is supported by OS/2 Warp 3.0, but not earlier versions of
  6014.       OS/2; it is also supported by Novell DOS 7
  6015. --------D-213306-----------------------------
  6016. INT 21 - DOS 5+ - GET TRUE VERSION NUMBER
  6017.     AX = 3306h
  6018. Return: BL = major version
  6019.     BH = minor version
  6020.     DL = revision (bits 2-0, all others 0)
  6021.     DH = version flags
  6022.         bit 3: DOS is in ROM
  6023.         bit 4: DOS is in HMA
  6024.     AL = FFh if true DOS version < 5.0
  6025. Notes:    this function always returns the true version number, unlike AH=30h,
  6026.       whose return value may be changed with SETVER
  6027.     because of the conflict from the CBIS PowerLAN redirector (see next
  6028.       entry), programs should check whether BH is less than 100 (64h)
  6029.       and BL is at least 5 before accepting the returned BX as the true
  6030.       version number; however, even this is not entirely reliable when
  6031.       that redirector is loaded
  6032.     fully reentrant
  6033.     OS/2 v2.1 will return BX=0A14h (version 20.10)
  6034.     the Windows NT DOS box returns BX=3205h (version 5.50)
  6035.     Novell DOS 7 returns IBM v6.00, which some software displays as
  6036.       IBM DOS v6.10 (because of the version mismatch in true IBM DOS
  6037.       mentioned for INT 21/AH=30h)
  6038. BUG:    DR-DOS 5.0 and 6.0 return CF set/AX=0001h for INT 21/AH=33h
  6039.       subfunctions other than 00h-02h and 05h, while MS-DOS returns AL=FFh
  6040.       for invalid subfunctions
  6041. SeeAlso: AH=30h,INT 2F/AX=122Fh
  6042. --------N-213306-----------------------------
  6043. INT 21 - CBIS POWERLAN - NETWORK REDIRECTOR - ???
  6044.     AX = 3306h
  6045. Return: AX = 3306h
  6046.     BL = ??? (usually 00h)
  6047.     BH = ??? (usually 00h or FFh)
  6048. Note:    unknown function, is in conflict with DOS 5+ version call
  6049. SeeAlso: AX=3306h"DOS"
  6050. --------v-21330F-----------------------------
  6051. INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
  6052.     AX = 330Fh
  6053. Return: AL = 0Fh if resident (DOS returns AL=FFh)
  6054. SeeAlso: AX=30F1h,AX=33DAh,AX=33E0h
  6055. --------k-213341-----------------------------
  6056. INT 21 - Diet Disk v1.0 - INSTALLATION CHECK
  6057.     AX = 3341h
  6058. Return: DX = 1234h if installed
  6059.         CX = resident code segment
  6060. Program: Diet Disk is a public domain transparent data file compressor by
  6061.       Barry Nance
  6062. --------v-2133DA------------------------
  6063. INT 21 - VIRUS - "CoffeeShop" - INSTALLATION CHECK
  6064.     AX = 33DAh
  6065. Return: AH = A5h if resident
  6066.         AL = virus version
  6067. SeeAlso: AX=330Fh,AX=33E0h,AX=5643h"VIRUS"
  6068. --------v-2133E0-----------------------------
  6069. INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
  6070.     AX = 33E0h
  6071. Return: AL = E0h if resident (DOS returns AL=FFh)
  6072. SeeAlso: AX=330Fh,AX=33DAh,AX=357Fh
  6073. --------D-2134-------------------------------
  6074. INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
  6075.     AH = 34h
  6076. Return: ES:BX -> one-byte InDOS flag
  6077. Notes:    this function executes on the DOS stack, and thus cannot be called
  6078.       while another DOS function is already executing; you should use
  6079.       this function once at the beginning of the program and store the
  6080.       returned pointer rather than calling it when requiring DOS access
  6081.     the value of InDOS is incremented whenever an INT 21 function begins
  6082.       and decremented whenever one completes
  6083.     during an INT 28 call, it is safe to call some INT 21 functions even
  6084.       though InDOS may be 01h instead of zero
  6085.     InDOS alone is not sufficient for determining when it is safe to
  6086.       enter DOS, as the critical error handling decrements InDOS and
  6087.       increments the critical error flag for the duration of the critical
  6088.       error.  Thus, it is possible for InDOS to be zero even if DOS is
  6089.       busy.
  6090.     SMARTDRV 4.0 sets the InDOS flag while flushing its buffers to disk,
  6091.       then zeros it on completion
  6092.     the critical error flag is the byte immediately following InDOS in
  6093.       DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3.0+ and
  6094.       DR-DOS 3.41+ (except COMPAQ DOS 3.0, where the critical error flag
  6095.       is located 1AAh bytes BEFORE the critical section flag)
  6096.     for DOS 3.1+, an undocumented call exists to get the address of the
  6097.       critical error flag (see AX=5D06h)
  6098.     this function was undocumented prior to the release of DOS 5.0.
  6099. SeeAlso: AX=5D06h,AX=5D0Bh,INT 15/AX=DE1Fh,INT 28
  6100. --------D-2135-------------------------------
  6101. INT 21 - DOS 2+ - GET INTERRUPT VECTOR
  6102.     AH = 35h
  6103.     AL = interrupt number
  6104. Return: ES:BX -> current interrupt handler
  6105. Note:    under DR-DOS 5.0+, this function does not use any of the DOS-internal
  6106.       stacks and may thus be called at any time
  6107. SeeAlso: AH=25h,AX=2503h
  6108. --------E-213501-----------------------------
  6109. INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
  6110.     AX = 3501h
  6111. Return: CF clear if successful
  6112.         BX = new selector
  6113.     CF set on error (no more selectors available)
  6114. Note:    the new selector will be an expand-up read/write data selector with
  6115.       undefined base and limit
  6116. SeeAlso: AX=3502h,INT 31/AX=0000h
  6117. --------E-213502-----------------------------
  6118. INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
  6119.     AX = 3502h
  6120.     BX = selector
  6121. Return: CF clear if successful
  6122.     CF set on error (invalid selector)
  6123. Note:    only selectors allocated via AX=3501h should be deallocated
  6124. SeeAlso: AX=3501h,INT 31/AX=0001h
  6125. --------E-213503-----------------------------
  6126. INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
  6127.     AX = 3503h
  6128.     BX = selector
  6129.     ECX = base address
  6130. Return: CF clear if successful
  6131.     CF set on error (invalid selector)
  6132. SeeAlso: AX=3504h,AX=3505h,INT 31/AX=0007h
  6133. --------E-213504-----------------------------
  6134. INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
  6135.     AX = 3504h
  6136.     BX = selector
  6137. Return: CF clear if successful
  6138.         ECX = absolute base address of selector
  6139.     CF set on error (invalid selector)
  6140. SeeAlso: AX=3503h,INT 31/AX=0006h
  6141. --------E-213505-----------------------------
  6142. INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
  6143.     AX = 3505h
  6144.     BX = selector
  6145.     ECX = desired limit
  6146. Return: CF clear if successful
  6147.         ECX = actual limit set
  6148.     CF set on error (no more selectors available)
  6149. Note:    the limit will be rounded down to nearest 4K boundary if the requested
  6150.       limit is greater than 1MB
  6151. SeeAlso: AX=3503h,INT 31/AX=0008h
  6152. --------E-21350A-----------------------------
  6153. INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
  6154.     AX = 350Ah
  6155.     EBX = absolute physical address
  6156.     ECX = size in bytes of area to map
  6157. Return: CF clear if successful
  6158.     CF set on error (insufficient memory or service refused by DPMI host)
  6159. Notes:    should not make repeated calls for the same physical address
  6160.     there is no provision for unmapping memory
  6161. --------E-21350B-----------------------------
  6162. INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
  6163.     AX = 350Bh
  6164.     DS = default selector for DS
  6165. Return: CF clear
  6166.     EAX = maximum amount of memory which can be allocated via AX=350Ch
  6167. SeeAlso: AX=350Ch
  6168. --------E-21350C-----------------------------
  6169. INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
  6170.     AX = 350Ch
  6171.     ECX = size of block in bytes
  6172.     DS = default DS
  6173. Return: CF clear if successful
  6174.         EAX = near pointer to new block
  6175.         EDX = new lowest legal value for stack
  6176.     CF set on error (requested size not multiple of 4K)
  6177. SeeAlso: AX=350Bh,AX=350Dh
  6178. --------E-21350D-----------------------------
  6179. INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
  6180.     AX = 350Dh
  6181.     EBX = current ESP value
  6182.     ECX = size of block in bytes
  6183.     DS = default DS
  6184. Return: CF clear if successful
  6185.         EBX = new value for ESP
  6186.         EDX = suggested new limit for SS
  6187.     CF set on error
  6188. Note:    this function should only be called once during initialization
  6189. SeeAlso: AX=350Bh,AX=350Ch
  6190. --------v-21357F-----------------------------
  6191. INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
  6192.     AX = 357Fh
  6193. Return: DX = FFFFh if installed
  6194. SeeAlso: AX=33E0h,AX=3DFFh
  6195. --------D-2136-------------------------------
  6196. INT 21 - DOS 2+ - GET FREE DISK SPACE
  6197.     AH = 36h
  6198.     DL = drive number (00h = default, 01h = A:, etc)
  6199. Return: AX = FFFFh if invalid drive
  6200.     else
  6201.         AX = sectors per cluster
  6202.         BX = number of free clusters
  6203.         CX = bytes per sector
  6204.         DX = total clusters on drive
  6205. Notes:    free space on drive in bytes is AX * BX * CX
  6206.     total space on drive in bytes is AX * CX * DX
  6207.     "lost clusters" are considered to be in use
  6208.     according to Dave Williams' MS-DOS reference, the value in DX is
  6209.       incorrect for non-default drives after ASSIGN is run
  6210. SeeAlso: AH=1Bh,AH=1Ch
  6211. --------D-213700-----------------------------
  6212. INT 21 - DOS 2+ - "SWITCHAR" - GET SWITCH CHARACTER
  6213.     AX = 3700h
  6214. Return: AL = status
  6215.         00h successful
  6216.         DL = current switch character
  6217.         FFh unsupported subfunction
  6218. Desc:    Determine the character which is used to introduce command switches.
  6219.       This setting is ignored by MS-DOS commands in version 4.0 and higher,
  6220.       but is honored by many third-party programs and by Novell DOS 7
  6221.       external commands
  6222. BUG:    Novell DOS 7's COMMAND.COM fails to honor the SwitChar setting for
  6223.       internal commands even though COMMAND.COM honors it in its own
  6224.       command tail (i.e. COMMAND /?)
  6225. Notes:    documented in some OEM versions of some releases of DOS
  6226.     supported by OS/2 compatibility box
  6227.     always returns AL=00h/DL=2Fh for MS-DOS 5+ and DR-DOS 3.41-6.0
  6228.     Novell DOS 7 COMMAND.COM indicates switch characters other than '/'
  6229.       by changing the first backslash (and only the first one) in the
  6230.       path it prints for PROMPT $p with a forward slash
  6231. SeeAlso: AX=3701h
  6232. --------D-213701-----------------------------
  6233. INT 21 - DOS 2+ - "SWITCHAR" - SET SWITCH CHARACTER
  6234.     AX = 3701h
  6235.     DL = new switch character
  6236. Return: AL = status
  6237.         00h successful
  6238.         FFh unsupported subfunction
  6239. Notes:    documented in some OEM versions of some releases of DOS
  6240.     supported by OS/2 compatibility box and Novell DOS 7
  6241.     ignored by MS-DOS 5+ and DR-DOS 3.41-6.0; DR-DOS 6.0 and Novell DOS 7
  6242.       leave AX unchanged
  6243. SeeAlso: AX=3700h
  6244. --------D-2137-------------------------------
  6245. INT 21 - DOS 2.x and 3.3+ only - "AVAILDEV" - SPECIFY \DEV\ PREFIX USE
  6246.     AH = 37h
  6247.     AL = subfunction
  6248.         02h get availdev flag
  6249.         Return: DL = 00h \DEV\ must precede character device names
  6250.                = nonzero \DEV\ is optional
  6251.         03h set availdev flag
  6252.         DL = new state
  6253.             00h        \DEV\ is mandatory
  6254.             nonzero    \DEV\ is optional
  6255. Return: AL = status
  6256.         00h successful
  6257.         FFh unsupported subfunction
  6258. Notes:    all versions of DOS from 2.00 allow \DEV\ to be prepended to device
  6259.       names without generating an error even if the directory \DEV does
  6260.       not actually exist (other paths generate an error if they do not
  6261.       exist).
  6262.     although MS-DOS 3.3+, DR-DOS 3.41+, and Novell DOS 7 accept these
  6263.       calls, they have no effect, and AL=02h always returns DL=FFh (except
  6264.       for Novell DOS 7, which leaves AX unchanged for both subfunctions)
  6265. --------k-2137D0BX899D-----------------------
  6266. INT 21 - DIET v1.43e - TSR INSTALLATION CHECK
  6267.     AX = 37D0h
  6268.     BX = 899Dh ('DI' + 'ET')
  6269. Return: AL = FFh if not present as TSR (default return value from DOS)
  6270.     AX = 0000h if installed as a TSR
  6271.         CX = 899Dh
  6272.         DX = version ID
  6273. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  6274. SeeAlso: AX=37D1h,AX=37D2h,AX=37D4h,AX=37D6h,AX=37DFh,AX=4BF0h,AX=4BF1h
  6275. --------k-2137D1BX899D-----------------------
  6276. INT 21 - DIET v1.43e - GET DIET.EXE RESIDENT SEGMENT
  6277.     AX = 37D1h
  6278.     BX = 899Dh ('DI' + 'ET')
  6279. Return: AX = 0000h
  6280.     CX = code segment of TSR part of DIET.EXE
  6281.     DX = memory block segment of TSR DIET.EXE
  6282.         (0000h if installed as device driver)
  6283. SeeAlso: AX=37D0h,AX=37DFh
  6284. --------k-2137D2BX899D-----------------------
  6285. INT 21 - DIET v1.43e - GET TSR CONTROL FLAGS
  6286.     AX = 37D2h
  6287.     BX = 899Dh ('DI' + 'ET')
  6288. Return: AX = 0000h
  6289.     DL = control flag (00h active, else disabled)
  6290.     DH = skip flag (nonzero while TSR active)
  6291. SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
  6292. --------k-2137D3BX899D-----------------------
  6293. INT 21 - DIET v1.43e - SET TSR CONTROL FLAGS
  6294.     AX = 37D3h
  6295.     BX = 899Dh ('DI' + 'ET')
  6296.     DL = control flag (00h active, else disabled)
  6297.     DH = skip flag (00h)
  6298. Return: AX = 0000h
  6299. SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
  6300. --------k-2137D4BX899D-----------------------
  6301. INT 21 - DIET v1.43e - GET TSR OPTIONS
  6302.     AX = 37D4h
  6303.     BX = 899Dh ('DI' + 'ET')
  6304. Return: AX = 0000h
  6305.     DX = TSR options (see #0621)
  6306. SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
  6307.  
  6308. Bitfields for DIET TSR options:
  6309. Bit(s)    Description    (Table 0621)
  6310.  0    automated compression of DIETed file
  6311.  1    automated compression of newly-created file
  6312.  2    suppress DIET message
  6313.  3    display original file size
  6314.  4-15    reserved (0)
  6315. --------k-2137D5BX899D-----------------------
  6316. INT 21 - DIET v1.43e - SET TSR OPTIONS
  6317.     AX = 37D5h
  6318.     BX = 899Dh ('DI' + 'ET')
  6319.     DX = TSR options (see #0621)
  6320. Return: AX = 0000h
  6321. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  6322. SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
  6323. --------k-2137D6BX899D-----------------------
  6324. INT 21 - DIET v1.43e - GET TEMPORARY DIRECTORY NAMES
  6325.     AX = 37D6h
  6326.     BX = 899Dh ('DI' + 'ET')
  6327. Return: AX = 0000h
  6328.     DS:DX -> name of temporary directory or 0000h:0000h for current dir
  6329. SeeAlso: AX=37D0h,AX=37D7h
  6330. --------k-2137D7BX899D-----------------------
  6331. INT 21 - DIET v1.43e - SET TEMPORARY DIRECTORY NAMES
  6332.     AX = 37D7h
  6333.     BX = 899Dh ('DI' + 'ET')
  6334.     DS:DX -> ASCIZ name of temporary directory (max 61 chars)
  6335.         0000h:0000h for current directory
  6336. Return: AX = 0000h
  6337. Note:    the specified directory name must include a drive letter and end with
  6338.       a backslash
  6339. SeeAlso: AX=37D0h,AX=37D6h
  6340. --------k-2137DCBX899D-----------------------
  6341. INT 21 - DIET v1.43e - SET ADDRESS OF EXTERNAL PROCEDURE
  6342.     AX = 37DCh
  6343.     BX = 899Dh ('DI' + 'ET')
  6344.     DS:DX -> external procedure (see #0622)
  6345. Return: AX = 0000h
  6346. Note:    the resident code will call the specified external procedure at the
  6347.       beginning of decompression and when compression is exited on failure
  6348. SeeAlso: AX=37DDh
  6349.  
  6350. (Table 0622)
  6351. Values DIET external procedure is called with:
  6352.     STACK:    WORD    class
  6353.             FFFDh creation failed for unknown reasons
  6354.             FFFEh creation failed due to lack of space
  6355.             FFFFh file creation error
  6356.             else file handle of DIETed file to be decompressed
  6357.         DWORD    -> compressed filename
  6358.         DWORD    -> decompressed or temporary filename
  6359. Return: SI,DI,BP,DS,ES must be preserved by external procedure
  6360. --------k-2137DDBX899D-----------------------
  6361. INT 21 - DIET v1.43e - RELEASE EXTERNAL PROCEDURE
  6362.     AX = 37DDh
  6363.     BX = 899Dh ('DI' + 'ET')
  6364. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  6365. Note:    unlinks the external procedure specified by AX=37DCh
  6366. SeeAlso: AX=37DCh
  6367. --------k-2137DEBX899D-----------------------
  6368. INT 21 - DIET v1.43e - READ EMS STATUS
  6369.     AX = 37DEh
  6370.     BX = 899Dh ('DI' + 'ET')
  6371. Return: AX = 0000h
  6372.     CX = EMS status
  6373.         0000h not used
  6374.         0001h used as work area
  6375.         0002h used for code and as work area
  6376.     DX = EMM handle when EMS is in use
  6377. --------k-2137DFBX899D-----------------------
  6378. INT 21 - DIET v1.43e - UNLOAD TSR
  6379.     AX = 37DFh
  6380.     BX = 899Dh ('DI' + 'ET')
  6381. Return: AX = status
  6382.         0000h successful
  6383.         00FFh failed
  6384. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  6385. SeeAlso: AX=37D0h
  6386. Index:    uninstall;DIET
  6387. --------D-2138-------------------------------
  6388. INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
  6389.     AH = 38h
  6390. --DOS 2.x--
  6391.     AL = 00h get current-country info
  6392.     DS:DX -> buffer for returned info (see #0623,#0624)
  6393. Return: CF set on error
  6394.         AX = error code (02h)
  6395.     CF clear if successful
  6396.         AX = country code (MS-DOS 2.11 only)
  6397.         buffer at DS:DX filled
  6398. --DOS 3.0+--
  6399.     AL = 00h for current country
  6400.     AL = 01h thru 0FEh for specific country with code <255 (see #0625)
  6401.     AL = 0FFh for specific country with code >= 255
  6402.        BX = 16-bit country code (see #0625)
  6403.     DS:DX -> buffer for returned info (see #0624)
  6404. Return: CF set on error
  6405.         AX = error code (02h)
  6406.     CF clear if successful
  6407.         AX = country code (Novell NWDOS v7.0)
  6408.         BX = country code
  6409.         DS:DX buffer filled
  6410. Note:    this function is not supported by the Borland DPMI host, but no error
  6411.       is returned; as a workaround, one should allocate a buffer in
  6412.       conventional memory with INT 31/AX=0100h and simulate an INT 21 with
  6413.       INT 31/AX=0300h
  6414. SeeAlso: AH=65h,INT 10/AX=5001h,INT 2F/AX=110Ch,INT 2F/AX=1404h
  6415.  
  6416. Format of DOS 2.00-2.10 country info:
  6417. Offset    Size    Description    (Table 0623)
  6418.  00h    WORD    date format  0 = USA    mm dd yy
  6419.                  1 = Europe dd mm yy
  6420.                  2 = Japan    yy mm dd
  6421.  02h    BYTE    currency symbol
  6422.  03h    BYTE    00h
  6423.  04h    BYTE    thousands separator char
  6424.  05h    BYTE    00h
  6425.  06h    BYTE    decimal separator char
  6426.  07h    BYTE    00h
  6427.  08h 24 BYTEs    reserved
  6428.  
  6429. Format of DOS 2.11+ country info:
  6430. Offset    Size    Description    (Table 0624)
  6431.  00h    WORD    date format (see #0623)
  6432.  02h  5 BYTEs    ASCIZ currency symbol string
  6433.  07h  2 BYTEs    ASCIZ thousands separator
  6434.  09h  2 BYTEs    ASCIZ decimal separator
  6435.  0Bh  2 BYTEs    ASCIZ date separator
  6436.  0Dh  2 BYTEs    ASCIZ time separator
  6437.  0Fh    BYTE    currency format
  6438.         bit 2 = set if currency symbol replaces decimal point
  6439.         bit 1 = number of spaces between value and currency symbol
  6440.         bit 0 = 0 if currency symbol precedes value
  6441.             1 if currency symbol follows value
  6442.  10h    BYTE    number of digits after decimal in currency
  6443.  11h    BYTE    time format
  6444.         bit 0 = 0 if 12-hour clock
  6445.             1 if 24-hour clock
  6446.  12h    DWORD    address of case map routine
  6447.         (FAR CALL, AL = character to map to upper case [>= 80h])
  6448.  16h  2 BYTEs    ASCIZ data-list separator
  6449.  18h 10 BYTEs    reserved
  6450.  
  6451. (Table 0625)
  6452. Values for country code:
  6453.  001h    United States
  6454.  002h    Canadian-French
  6455.  003h    Latin America
  6456.  01Fh    Netherlands
  6457.  020h    Belgium
  6458.  021h    France
  6459.  022h    Spain
  6460.  024h    Hungary (not supported by DR-DOS 5.0)
  6461.  026h    Yugoslavia (not supported by DR-DOS 5.0)
  6462.  027h    Italy
  6463.  029h    Switzerland
  6464.  02Ah    Czechoslovakia/Tjekia (not supported by DR-DOS 5.0)
  6465.  02Bh    Austria (DR-DOS 5.0)
  6466.  02Ch    United Kingdom
  6467.  02Dh    Denmark
  6468.  02Eh    Sweden
  6469.  02Fh    Norway
  6470.  030h    Poland (not supported by DR-DOS 5.0)
  6471.  031h    Germany
  6472.  037h    Brazil (not supported by DR-DOS 5.0)
  6473.  03Dh    International English [Australia in DR-DOS 5.0]
  6474.  051h    Japan (DR-DOS 5.0, MS-DOS 5.0+)
  6475.  052h    Korea (DR-DOS 5.0)
  6476.  056h    China (MS-DOS 5.0+)
  6477.  058h    Taiwan (MS-DOS 5.0+)
  6478.  05Ah    Turkey (MS-DOS 5.0+)
  6479.  15Fh    Portugal
  6480.  162h    Iceland
  6481.  166h    Finland
  6482.  311h    Middle East/Saudi Arabia (DR-DOS 5.0,MS-DOS 5.0+)
  6483.  3CCh    Israel (DR-DOS 5.0,MS-DOS 5.0+)
  6484. --------D-2138--DXFFFF-----------------------
  6485. INT 21 - DOS 3.0+ - SET COUNTRY CODE
  6486.     AH = 38h
  6487.     DX = FFFFh
  6488.     AL = 01h thru FEh for specific country with code <255
  6489.     AL = FFh for specific country with code >= 255
  6490.        BX = 16-bit country code (see #0625)
  6491. Return: CF set on error
  6492.         AX = error code (see #0885 at AH=59h)
  6493.     CF clear if successful
  6494. Note:    not supported by OS/2
  6495. SeeAlso: INT 2F/AX=1403h
  6496. --------D-2139-------------------------------
  6497. INT 21 - DOS 2+ - "MKDIR" - CREATE SUBDIRECTORY
  6498.     AH = 39h
  6499.     DS:DX -> ASCIZ pathname
  6500. Return: CF clear if successful
  6501.         AX destroyed
  6502.     CF set on error
  6503.         AX = error code (03h,05h) (see #0885 at AH=59h)
  6504. Notes:    all directories in the given path except the last must exist
  6505.     fails if the parent directory is the root and is full
  6506.     DOS 2.x-3.3 allow the creation of a directory sufficiently deep that
  6507.       it is not possible to make that directory the current directory
  6508.       because the path would exceed 64 characters
  6509.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  6510. SeeAlso: AH=3Ah,AH=3Bh,AH=6Dh,AH=71h,AH=E2h/SF=0Ah,INT 2F/AX=1103h
  6511. SeeAlso: INT 60/DI=0511h
  6512. --------D-213A-------------------------------
  6513. INT 21 - DOS 2+ - "RMDIR" - REMOVE SUBDIRECTORY
  6514.     AH = 3Ah
  6515.     DS:DX -> ASCIZ pathname of directory to be removed
  6516. Return: CF clear if successful
  6517.         AX destroyed
  6518.     CF set on error
  6519.         AX = error code (03h,05h,06h,10h) (see #0885 at AH=59h)
  6520. Notes:    directory must be empty (contain only '.' and '..' entries)
  6521.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  6522. SeeAlso: AH=39h,AH=3Bh,AH=71h,AH=E2h/SF=0Bh,INT 2F/AX=1101h,INT 60/DI=0512h
  6523. --------D-213B-------------------------------
  6524. INT 21 - DOS 2+ - "CHDIR" - SET CURRENT DIRECTORY
  6525.     AH = 3Bh
  6526.     DS:DX -> ASCIZ pathname to become current directory (max 64 bytes)
  6527. Return: CF clear if successful
  6528.         AX destroyed
  6529.     CF set on error
  6530.         AX = error code (03h) (see #0885 at AH=59h)
  6531. Notes:    if new directory name includes a drive letter, the default drive is
  6532.       not changed, only the current directory on that drive
  6533.     changing the current directory also changes the directory in which
  6534.       FCB file calls operate
  6535.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  6536. SeeAlso: AH=47h,AH=71h,INT 2F/AX=1105h
  6537. --------D-213C-------------------------------
  6538. INT 21 - DOS 2+ - "CREAT" - CREATE OR TRUNCATE FILE
  6539.     AH = 3Ch
  6540.     CX = file attributes (see #0626)
  6541.     DS:DX -> ASCIZ filename
  6542. Return: CF clear if successful
  6543.         AX = file handle
  6544.     CF set on error
  6545.         AX = error code (03h,04h,05h) (see #0885 at AH=59h)
  6546. Notes:    if a file with the given name exists, it is truncated to zero length
  6547.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  6548.     DR-DOS checks the system password or explicitly supplied password at
  6549.       the end of the filename against the reserved field in the directory
  6550.       entry before allowing access
  6551. SeeAlso: AH=16h,AH=3Dh,AH=5Ah,AH=5Bh,AH=93h,INT 2F/AX=1117h
  6552.  
  6553. Bitfields for file attributes:
  6554. Bit(s)    Description    (Table 0626)
  6555.  0    read-only
  6556.  1    hidden
  6557.  2    system
  6558.  3    volume label (ignored)
  6559.  4    reserved, must be zero (directory)
  6560.  5    archive bit
  6561.  7    if set, file is shareable under Novell NetWare
  6562. --------D-213D-------------------------------
  6563. INT 21 - DOS 2+ - "OPEN" - OPEN EXISTING FILE
  6564.     AH = 3Dh
  6565.     AL = access and sharing modes (see #0627)
  6566.     DS:DX -> ASCIZ filename
  6567.     CL = attribute mask of files to look for (server call only)
  6568. Return: CF clear if successful
  6569.         AX = file handle
  6570.     CF set on error
  6571.         AX = error code (01h,02h,03h,04h,05h,0Ch,56h) (see #0885 at AH=59h)
  6572. Notes:    file pointer is set to start of file
  6573.     file handles which are inherited from a parent also inherit sharing
  6574.       and access restrictions
  6575.     files may be opened even if given the hidden or system attributes
  6576.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  6577.     DR-DOS checks the system password or explicitly supplied password at
  6578.       the end of the filename against the reserved field in the directory
  6579.       entry before allowing access
  6580.     sharing modes are only effective on local drives if SHARE is loaded
  6581. BUG:    Novell DOS 7 SHARE v1.00 would refuse file access in the cases in
  6582.       #0628 marked with [1] (read-only open of a read-only file
  6583.       which had previously been opened in compatibility mode); this was
  6584.       fixed in SHARE v1.01 of 09/29/94
  6585. SeeAlso: AH=0Fh,AH=3Ch,AX=4301h,AX=5D00h,INT 2F/AX=1116h,INT 2F/AX=1226h
  6586.  
  6587. Bitfields for access and sharing modes:
  6588. Bit(s)    Description    (Table 0627)
  6589.  2-0    access mode
  6590.     000 read only
  6591.     001 write only
  6592.     010 read/write
  6593.     011 (DOS 5+ internal) passed to redirector on EXEC to allow
  6594.         case-sensitive filenames
  6595.  3    reserved (0)
  6596.  6-4    sharing mode (DOS 3.0+) (see #0628)
  6597.     000 compatibility mode
  6598.     001 "DENYALL" prohiboth read and write access by others
  6599.     010 "DENYWRITE" prohiwrite access by others
  6600.     011 "DENYREAD" prohiread access by others
  6601.     100 "DENYNONE" allow full access by others
  6602.     111 network FCB (only available during server call)
  6603.  7    inheritance
  6604.     if set, file is private to current process and will not be inherited
  6605.       by child processes
  6606.  
  6607. (Table 0628)
  6608. Values of DOS file sharing behavior:
  6609.       |    Second and subsequent Opens
  6610.  First      |Compat  Deny      Deny     Deny    Deny
  6611.  Open      |       All      Write     Read    None
  6612.       |R W RW R W RW R W RW R W RW R W RW
  6613.  - - - - -| - - - - - - - - - - - - - - - - -
  6614.  Compat R |Y Y Y  N N N     1 N N    N N N  1 N N
  6615.     W |Y Y Y  N N N     N N N    N N N  N N N
  6616.     RW|Y Y Y  N N N     N N N    N N N  N N N
  6617.  - - - - -|
  6618.  Deny    R |C C C  N N N     N N N    N N N  N N N
  6619.  All    W |C C C  N N N     N N N    N N N  N N N
  6620.     RW|C C C  N N N     N N N    N N N  N N N
  6621.  - - - - -|
  6622.  Deny    R |2 C C  N N N     Y N N    N N N  Y N N
  6623.  Write    W |C C C  N N N     N N N    Y N N  Y N N
  6624.     RW|C C C  N N N     N N N    N N N  Y N N
  6625.  - - - - -|
  6626.  Deny    R |C C C  N N N     N Y N    N N N  N Y N
  6627.  Read    W |C C C  N N N     N N N    N Y N  N Y N
  6628.     RW|C C C  N N N     N N N    N N N  N Y N
  6629.  - - - - -|
  6630.  Deny    R |2 C C  N N N     Y Y Y    N N N  Y Y Y
  6631.  None    W |C C C  N N N     N N N    Y Y Y  Y Y Y
  6632.     RW|C C C  N N N     N N N    N N N  Y Y Y
  6633. Legend: Y = open succeeds, N = open fails with error code 05h
  6634.     C = open fails, INT 24 generated
  6635.     1 = open succeeds if file read-only, else fails with error code
  6636.     2 = open succeeds if file read-only, else fails with INT 24
  6637. SeeAlso: #0848
  6638. --------v-213DFF-----------------------------
  6639. INT 21 - VIRUS - "JD-448" - INSTALLATION CHECK
  6640.     AX = 3DFFh
  6641. Return: AX = 4A44h if resident
  6642. SeeAlso: AX=357Fh,AX=4203h
  6643. --------D-213E-------------------------------
  6644. INT 21 - DOS 2+ - "CLOSE" - CLOSE FILE
  6645.     AH = 3Eh
  6646.     BX = file handle
  6647. Return: CF clear if successful
  6648.         AX destroyed
  6649.     CF set on error
  6650.         AX = error code (06h) (see #0885 at AH=59h)
  6651. Note:    if the file was written to, any pending disk writes are performed, the
  6652.       time and date stamps are set to the current time, and the directory
  6653.       entry is updated
  6654. SeeAlso: AH=10h,AH=3Ch,AH=3Dh,INT 2F/AX=1106h,INT 2F/AX=1227h
  6655. --------D-213F-------------------------------
  6656. INT 21 - DOS 2+ - "READ" - READ FROM FILE OR DEVICE
  6657.     AH = 3Fh
  6658.     BX = file handle
  6659.     CX = number of bytes to read
  6660.     DS:DX -> buffer for data
  6661. Return: CF clear if successful
  6662.         AX = number of bytes actually read (0 if at EOF before call)
  6663.     CF set on error
  6664.         AX = error code (05h,06h) (see #0885 at AH=59h)
  6665. Notes:    data is read beginning at current file position, and the file position
  6666.       is updated after a successful read
  6667.     the returned AX may be smaller than the request in CX if a partial
  6668.       read occurred
  6669.     if reading from CON, read stops at first CR
  6670.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  6671. BUG:    Novell NETX.EXE v3.26 and 3.31 do not set CF if the read fails due to
  6672.       a record lock (see AH=5Ch), though it does return AX=0005h; this
  6673.       has been documented by Novell
  6674. SeeAlso: AH=27h,AH=40h,AH=93h,INT 2F/AX=1108h,INT 2F/AX=1229h
  6675. --------G-213F-------------------------------
  6676. INT 21 - Turbo Debug HARDWARE BREAKPOINTS - READ STATUS BLOCK
  6677.     AH = 3Fh
  6678.     BX = handle for character device "TDHDEBUG"
  6679.     CX = number of bytes to read
  6680.     DS:DX -> buffer for status block (see #0630)
  6681. Return: CF clear if successful
  6682.         AX = number of bytes actually read
  6683.     CF set on error
  6684.         AX = error code (05h,06h) (see #0885 at AH=59h)
  6685. SeeAlso: AH=40h"Turbo Debug"
  6686.  
  6687. (Table 0629)
  6688. Values for status of Turbo Debugger command:
  6689.  00h    successful
  6690.  01h    invalid handle
  6691.  02h    no more breakpoints available
  6692.  03h    hardware does not support specified breakpoint type
  6693.  04h    previous command prevents execution
  6694.  05h    debugger hardware not found
  6695.  06h    hardware failure
  6696.  07h    invalid command
  6697.  08h    driver not initialized yet
  6698.  FEh    recursive entry (hardware breakpoint inside hw bp handler)
  6699.  
  6700. Format of Turbo Debugger status block:
  6701. Offset    Size    Description    (Table 0630)
  6702.  00h    BYTE    status of command (see #0629)
  6703. ---status for command 01h---
  6704.  01h    WORD    device driver interface version number (currently 1)
  6705.  03h    WORD    device driver software version
  6706.  05h    BYTE    maximum simultaneous hardware breakpoints
  6707.  06h    BYTE    configuration bits (see #0631)
  6708.  07h    BYTE    supported breakpoint types (see #0632)
  6709.  08h    WORD    supported addressing match modes (see #0633)
  6710.  0Ah    WORD    supported data matches (see #0634)
  6711.  0Ch    BYTE    maximum data match length (01h, 02h, or 04h)
  6712.  0Dh    WORD    size of onboard memory (in KB)
  6713.  0Fh    WORD    maximum number of trace-back events
  6714.  11h    WORD    hardware breakpoint enable byte address segment (0000h if not
  6715.           supported)
  6716. ---status for command 04h---
  6717.  01h    BYTE    handle to use when referring to the just-set breakpoint
  6718.  
  6719. Bitfields for Turbo Debugger configuration bits:
  6720. Bit(s)    Description    (Table 0631)
  6721.  0    CPU and DMA accesses are distinct
  6722.  1    can detect DMA transfers
  6723.  2    supports data mask
  6724.  3    hardware pass counter on breakpoints
  6725.  4    can match on data as well as addresses
  6726.  
  6727. Bitfields for Turbo Debugger supported breakpoint types:
  6728. Bit(s)    Description    (Table 0632)
  6729.  0    memory read
  6730.  1    memory write
  6731.  2    memory read/write
  6732.  3    I/O read
  6733.  4    I/O write
  6734.  5    I/O read/write
  6735.  6    instruction fetch
  6736.  
  6737. Bitfields for Turbo Debugger supported addressing match modes:
  6738. Bit(s)    Description    (Table 0633)
  6739.  0    any address
  6740.  1    equal to test value
  6741.  2    not equal
  6742.  3    above test value
  6743.  4    below test value
  6744.  5    below or equal
  6745.  6    above or equal
  6746.  7    within range
  6747.  8    outside range
  6748.  
  6749. Bitfields for Turbo Debugger supported data matches:
  6750. Bit(s)    Description    (Table 0634)
  6751.  0    any data
  6752.  1    equal to test value
  6753.  2    not equal
  6754.  3    above test value
  6755.  4    below test value
  6756.  5    below or equal
  6757.  6    above or equal
  6758.  7    within range
  6759.  8    outside range
  6760. --------N-213F-------------------------------
  6761. INT 21 - PC/TCP IPCUST.SYS - READ CONFIGURATION DATA
  6762.     AH = 3Fh
  6763.     BX = handle for character device "$IPCUST"
  6764.     CX = number of bytes to read
  6765.     DS:DX -> buffer for configuration data (see #0635)
  6766. Return: CF clear if successful
  6767.         AX = number of bytes actually read
  6768.     CF set on error
  6769.         AX = error code (05h,06h) (see #0885 at AH=59h)
  6770. Notes:    if less than the entire data is read or written, the next read/write
  6771.       continues where the previous one ended; IOCTL calls AX=4402h and
  6772.       AX=4403h both reset the location at which the next operation starts
  6773.       to zero
  6774.     the data pointer is also reset to zero if the previous read or write
  6775.       reached or exceeded the end of the data, when the current function
  6776.       is read and the previous was write, or vice versa
  6777.     v2.1+ uses a new configuration method, but allows the installation
  6778.       of IPCUST.SYS for backward compatibility with other software which
  6779.       must read the PC/TCP configuration
  6780. SeeAlso: AH=40h"IPCUST",AX=4402h"IPCUST",AX=4402h"FTPSOFT"
  6781.  
  6782. Format of PC/TCP configuration data:
  6783. Offset    Size    Description    (Table 0635)
  6784.  00h 12 BYTEs    IPCUST.SYS device driver header
  6785.  12h    BYTE    ???
  6786.  13h    BYTE    ???
  6787.  14h    WORD    ???
  6788.  16h    BYTE    bit flags
  6789.         bit 0: send BS rather than DEL for BackSpace key
  6790.         bit 1: wrap long lines
  6791.  17h    BYTE    ???
  6792.  18h 64 BYTEs    ASCIZ hostname
  6793.  58h 64 BYTEs    ASCIZ domain name
  6794.         (fully qualified domain name is hostname.domain-name)
  6795.  98h 16 BYTEs    ASCIZ username
  6796.  A8h 64 BYTEs    ASCIZ full name
  6797.  E8h 64 BYTEs    ASCIZ office address
  6798. 128h 32 BYTEs    ASCIZ phone number
  6799. 148h    WORD    offset from GMT in minutes
  6800. 14Ah  4 BYTEs    ASCIZ timezone name
  6801. 14Eh    WORD    number of time servers
  6802. 150h  ? DWORDs    (big-endian) IP addresses for time servers
  6803.     ???
  6804. 164h    WORD    number of old-style name servers
  6805. 166h  3 DWORDs    (big-endian) IP addresses for name servers
  6806. 172h    WORD    number of domain name servers
  6807. 174h  3 DWORDs    (big-endian) IP addresses for domain name servers
  6808. 180h    DWORD    (big-endian) IP address of default gateway
  6809. 184h    DWORD    (big-endian) IP address of log server
  6810. 188h    DWORD    (big-endian) IP address of cookie server
  6811. 18Ch    DWORD    (big-endian) IP address of lpr server
  6812. 190h    DWORD    (big-endian) IP address of imagen print server
  6813. 194h 54 BYTEs    ???
  6814. 1E8h    WORD    TCP default window size in bytes
  6815. 1EAh    WORD    TCP low window size
  6816. 1ECh 64 BYTEs    ASCIZ host tabel filename
  6817. 22Ch  2 BYTEs    ???
  6818. 22Eh 80 BYTEs    ASCIZ mail relay host name
  6819. 27Eh    BYTE    ???
  6820. 27Fh    BYTE    ??? bit flags
  6821. 280h 44 BYTEs    ???
  6822. 2ACh    WORD    ???
  6823. 2AEh 202 BYTEs    ???
  6824. --------N-213F-------------------------------
  6825. INT 21 - WORKGRP.SYS - GET ENTRY POINT
  6826.     AH = 3Fh
  6827.     BX = file handle for device "NET$HLP$"
  6828.     CX = 0008h
  6829.     DS:DX -> buffer for entry point record (see #0705)
  6830. Return: CF clear if successful
  6831.         AX = number of bytes actually read (0 if at EOF before call)
  6832.     CF set on error
  6833.         AX = error code (05h,06h) (see #0885 at AH=59h)
  6834. Program: WORKGRP.SYS is the portion of Microsoft's Workgroup Connection which
  6835.       permits communication with PCs running Windows for Workgroups or
  6836.       LAN Manager
  6837. SeeAlso: AX=4402h"WORKGRP.SYS",INT 2F/AX=9400h
  6838. --------N-213F-------------------------------
  6839. INT 21 - BW-TCP - GET DRIVER INFO
  6840.     AH = 3Fh
  6841.     BX = file handle for device "ETHDEV27"
  6842.     CX = 002Bh
  6843.     DS:DX -> buffer for driver info (see #0636)
  6844. Return: CF clear if successful
  6845.         AX = number of bytes actually read (0 if at EOF before call)
  6846.     CF set on error
  6847.         AX = error code (05h,06h) (see #0885 at AH=59h)
  6848. Program: BW-TCP is a TCP/IP protocol stack by Beame & Whiteside Software
  6849. Notes:    the B&W socket library performs an INT 21/AX=4401h with DX=0060h before
  6850.       making this call to retrieve the driver information; one should also
  6851.       call the private API interrupt with AH=15h
  6852.     the installation check for the TCP/IP stack is to test for the
  6853.       existence of the character device UDP-IP10
  6854. SeeAlso: INT 14/AH=56h,INT 62/AH=00h"ETHDEV",INT 63/AH=03h,INT 64/AH=00h
  6855. Index:    installation check;BW-TCP hardware driver
  6856. Index:    installation check;BW-TCP TCPIP.SYS
  6857.  
  6858. Format of BW-TCP driver info:
  6859. Offset    Size    Description    (Table 0636)
  6860.  00h    WORD    I/O base address
  6861.  02h    BYTE    shared memory page (01h = segment 0100h, etc.)
  6862.  03h    BYTE    interrupt vector for private API
  6863.  04h    BYTE    IRQ used by board
  6864.  05h    WORD    size of data buffer
  6865.  07h    WORD    maximum transfer window
  6866.  09h    WORD    time zone
  6867.  0Bh    BYTE    address type (01h user, 04h RARP, 05h BOOTP)
  6868.  0Ch    DWORD    internet address
  6869.  10h    WORD    "value" ???
  6870.  12h    BYTE    subnet mask
  6871.  13h    WORD    "ether_pointer" ???
  6872.  15h    WORD    offset in device driver of log server records (see #0637)
  6873.  17h    WORD    offset in device driver of name server records (see #0637)
  6874.  19h    WORD    offset in device driver of print server records (see #0637)
  6875.  1Bh    WORD    offset in device driver of time server records (see #0637)
  6876.  1Dh    WORD    offset in device driver of gateway records (see #0637)
  6877.  1Fh    WORD    segment address of device driver
  6878.  21h    BYTE    transfer size
  6879.  22h  9 BYTEs    network adapter board name
  6880. ---11/21/91+ ---
  6881.  23h    BYTE    ETHDEV version (major in high nybble, minor in low nybble)
  6882.  24h    BYTE    ETHDEV revision
  6883.  25h    BYTE    TCPIP version (major in high nybble, minor in low nybble)
  6884.  26h    BYTE    TCPIP revision
  6885.  27h    BYTE    BWRPC version (major in high nybble, minor in low nybble)
  6886.  28h    BYTE    BWRPC revision
  6887.  29h    BYTE    BWNFS version (major in high nybble, minor in low nybble)
  6888.  2Ah    BYTE    BWNFS revision
  6889.  2Bh    BYTE    Telnet version (major in high nybble, minor in low nybble)
  6890.  2Ch    BYTE    Telnet revision
  6891.  2Dh    BYTE    NETBIOS version (major in high nybble, minor in low nybble)
  6892.  2Eh    BYTE    NETBIOS revision
  6893. Note:    for each driver, if version=0, the driver is not installed or does
  6894.       not support the version check
  6895.  
  6896. Format of BW-TCP server records:
  6897. Offset    Size    Description    (Table 0637)
  6898.  00h    BYTE    number of server records following
  6899.  01h  N DWORDs    internet addresses of servers
  6900. --------y-213F-------------------------------
  6901. INT 21 - Trusted Access - NB.SYS - GET STATE
  6902.     AH = 3Fh
  6903.     BX = file handle for device "$$NB$$NB"
  6904.     CX = 0002h (size of state)
  6905.     DS:DX -> buffer for state record (see #0638)
  6906. Return: CF clear if successful
  6907.         AX = number of bytes actually read (0 if at EOF before call)
  6908.     CF set on error
  6909.         AX = error code (05h,06h) (see #0885 at AH=59h)
  6910. Program: Trusted Access is a security and access-control package by Lassen
  6911.       Software, Inc.; NB.SYS is a device driver to prevent the user from
  6912.       terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
  6913. SeeAlso: AH=40h"NB.SYS",AX=4101h
  6914.  
  6915. Format of Trusted Access state record:
  6916. Offset    Size    Description    (Table 0638)
  6917.  00h    BYTE    00h off, 01h on
  6918.  01h    BYTE    keys being disabled
  6919.         bit 0: Ctrl-Break
  6920.         bit 1: SysReq
  6921.         bit 2: Ctrl and Alt
  6922.         bit 3: Ctrl-Alt-Del
  6923.         bit 7: all keys (overrides other bits)
  6924. ----------213F-------------------------------
  6925. INT 21 U - IFSHLP.SYS - GET ENTRY POINT
  6926.     AH = 3Fh
  6927.     BX = file handle for device "IFS$HLP$"
  6928.     CX = 0008h (size of buffer in bytes)
  6929.     DS:DX -> buffer for entry point record (see #0639)
  6930. Return: CF clear if successful
  6931.         AX = number of bytes actually read (0 if at EOF before call)
  6932.     CF set on error
  6933.         AX = error code (05h,06h) (see #0885 at AH=59h)
  6934. Program: IFSHLP.SYS is a support driver for Microsoft Windows for Workgroups
  6935. SeeAlso: AX=4402h"IFSHLP"
  6936.  
  6937. Format of IFSHLP.SYS entry point record:
  6938. Offset    Size    Description    (Table 0639)
  6939.  00h  4 BYTEs    (call) signature 70h E9h 34h 37h
  6940.         signature must be 34h 37h 70h EFh if called via IOCTL
  6941.  04h    DWORD    (ret) pointer to FAR call entry point (see #0640)
  6942.  
  6943. (Table 0640)
  6944. Call IFSHLP.SYS entry point with:
  6945.     STACK:    WORD    function number (00h-0Ch)
  6946.             00h ???
  6947.             01h set ??? intercept
  6948.             02h remove ??? intercept
  6949.             03h ??? LPT2
  6950.             04h ??? LPT1
  6951.             05h ??? and remove ??? intercept
  6952.             06h set ??? flag
  6953.             07h clear ??? flag
  6954.             08h get ??? flag word
  6955.             09h ???
  6956.             0Ah ???
  6957.             0Bh ???
  6958.             0Ch get ???
  6959. ---if function 00h---
  6960. Return: AX = ??? (0024h seen)
  6961.     DX = resident code segment
  6962. ---if function 01h---
  6963.     STACK:    DWORD    new intercept address
  6964. Return: AX = status
  6965.         0000h successful
  6966.         0001h failed (already set)
  6967.         DX = 0000h
  6968. ---if function 02h---
  6969. Return: AX = status
  6970.         0000h successful
  6971.         0001h failed (not set)
  6972.     DX = 0000h
  6973. ---if function 03h,04h---
  6974.     STACK:    WORD    ???
  6975. Return: AX = 0000h
  6976.     DX = 0000h
  6977. ---if function 05h---
  6978.     ???
  6979. ---if function 06h---
  6980. Return: AX = 0001h and DX = 0000h if already set
  6981.     AX,DX unchanged if successful
  6982. ---if function 07h---
  6983. Return: AX = 0001h and DX = 0000h if not set
  6984.     AX,DX unchanged if successful
  6985. ---if function 08h---
  6986. Return: DX = 0000h
  6987.     AX = flags (bit 0 set/cleared by functions 06h and 07h)
  6988. ---if function 09h---
  6989. Return: AX = status
  6990.         0000h successful
  6991.         0001h failed (already called)
  6992. ---if function 0Ah---
  6993.     STACK:    WORD    ???
  6994.     ???
  6995. ---if function 0Bh---
  6996. Return: AX = status
  6997.         0000h successful
  6998.         0001h failed (not set)
  6999. ---if function 0Ch---
  7000. Return: AX = 0000h
  7001.     ES:BX -> ??? data
  7002. ---if function > 0Ch---
  7003. Return:    AX = 0001h
  7004.     DX = 0000h
  7005. --------D-2140-------------------------------
  7006. INT 21 - DOS 2+ - "WRITE" - WRITE TO FILE OR DEVICE
  7007.     AH = 40h
  7008.     BX = file handle
  7009.     CX = number of bytes to write
  7010.     DS:DX -> data to write
  7011. Return: CF clear if successful
  7012.         AX = number of bytes actually written
  7013.     CF set on error
  7014.         AX = error code (05h,06h) (see #0885 at AH=59h)
  7015. Notes:    if CX is zero, no data is written, and the file is truncated or
  7016.       extended to the current position
  7017.     data is written beginning at the current file position, and the file
  7018.       position is updated after a successful write
  7019.     the usual cause for AX < CX on return is a full disk
  7020. BUG:    a write of zero bytes will appear to succeed when it actually failed
  7021.       if the write is extending the file and there is not enough disk
  7022.       space for the expanded file (DOS 5.0-6.0); one should therefore check
  7023.       whether the file was in fact extended by seeking to 0 bytes from
  7024.       the end of the file (INT 21/AX=4202h/CX=0/DX=0)
  7025.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7026. SeeAlso: AH=28h,AH=3Fh,AH=93h,INT 2F/AX=1109h
  7027. --------G-2140-------------------------------
  7028. INT 21 - Turbo Debug HARDWARE BREAKPOINTS - SEND CMD TO HARDWARE BRKPNT DRIVER
  7029.     AH = 40h
  7030.     BX = handle for character device "TDHDEBUG"
  7031.     CX = number of bytes to write
  7032.     DS:DX -> hardware breakpoint command (see #0641)
  7033. Return: CF clear if successful
  7034.         AX = number of bytes actually written
  7035.     CF set on error
  7036.         AX = error code (05h,06h) (see #0885 at AH=59h)
  7037. Note:    results are retrieved by reading from the device
  7038. SeeAlso: AH=3Fh"Turbo Debug"
  7039.  
  7040. Format of Turbo Debugger hardware breakpoint commands:
  7041. Offset    Size    Description    (Table 0641)
  7042.  00h    BYTE    command code
  7043.         00h install interrupt vectors
  7044.         01h get hardware capabilities
  7045.         02h enable hardware breakpoints
  7046.         03h disable hardware breakpoints
  7047.         04h set hardware breakpoint
  7048.         05h clear hardware breakpoint
  7049.         06h set I/O base address and reset hardware
  7050.         07h restore interrupt vectors
  7051. ---command code 00h---
  7052.  01h    DWORD    pointer to Turbo Debugger entry point to be jumped to on
  7053.           hardware breakpoint; call with CPU state the same as on
  7054.           the breakpoint except for pushing AX and placing an entry
  7055.           code (FFh if breakout button or breakpoint handle) in AH
  7056. ---command code 04h---
  7057.  01h    BYTE    breakpoint type
  7058.         00h memory read
  7059.         01h memory write
  7060.         02h memory read/write
  7061.         03h I/O read
  7062.         04h I/O write
  7063.         05h I/O read/write
  7064.         06h instruction fetch
  7065.  02h    BYTE    address matching mode (see #0642)
  7066.  03h    DWORD    32-bit linear low address
  7067.  07h    DWORD    32-bit linear high address
  7068.  0Bh    WORD    pass count
  7069.  0Dh    BYTE    data size (01h, 02h, or 04h)
  7070.  0Eh    BYTE    source of matched bus cycle (01h CPU, 02h DMA, 03h either)
  7071.  0Fh    BYTE    data-matching mode (see #0642)
  7072.  10h    DWORD    low data value
  7073.  14h    DWORD    high data value
  7074.  18h    DWORD    data mask specifying which bits of the data are tested
  7075. ---command code 05h---
  7076.  01h    BYTE    handle of breakpoint to clear (breakpoint returned from command
  7077.           04h)
  7078. ---command code 06h---
  7079.  01h    WORD    base address of hardware debugger board
  7080.  
  7081. (Table 0642)
  7082. Values for Turbo Debugger address/data matching mode:
  7083.  00h    match any
  7084.  01h    equal to test value
  7085.  02h    different from test value
  7086.  03h    above test value
  7087.  04h    below test value
  7088.  05h    below or equal to test value
  7089.  06h    above or equal to test value
  7090.  07h    within inclusive range
  7091.  08h    outside specified range
  7092. --------N-2140-------------------------------
  7093. INT 21 - PC/TCP IPCUST.SYS - WRITE CONFIGURATION DATA
  7094.     AH = 40h
  7095.     BX = handle for character device "$IPCUST"
  7096.     CX = number of bytes to write
  7097.     DS:DX -> buffer for configuration data (AH=3Fh"IPCUST")
  7098. Return: CF clear if successful
  7099.         AX = number of bytes actually written
  7100.     CF set on error
  7101.         AX = error code (05h,06h) (see #0885 at AH=59h)
  7102. Notes:    if less than the entire data is read or written, the next read/write
  7103.       continues where the previous one ended; IOCTL calls AX=4402h and
  7104.       AX=4403h both reset the location at which the next operation starts
  7105.       to zero
  7106.     the data pointer is also reset to zero if the previous read or write
  7107.       reached or exceeded the end of the data, when the current function
  7108.       is read and the previous was write, or vice versa
  7109.     v2.1+ uses a new configuration method, but allows the installation
  7110.       of IPCUST.SYS for backward compatibility with other software which
  7111.       must read the PC/TCP configuration
  7112. SeeAlso: AH=3Fh"IPCUST",AX=4402h"IPCUST"
  7113. --------y-2140-------------------------------
  7114. INT 21 U - Trusted Access - NB.SYS - SET STATE
  7115.     AH = 40h
  7116.     BX = handle for character device "$$NB$$NB"
  7117.     DS:DX -> state record (see #0638)
  7118.     CX ignored
  7119. Return: CF clear if successful
  7120.         AX = number of bytes actually written
  7121.     CF set on error
  7122.         AX = error code (05h,06h) (see #0885 at AH=59h)
  7123. Program: Trusted Access is a security and access-control package by Lassen
  7124.       Software, Inc.; NB.SYS is a device driver to prevent the user from
  7125.       terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
  7126. SeeAlso: AH=3Fh"NB.SYS"
  7127. --------j-214000BX0002-----------------------
  7128. INT 21 - FARTBELL.EXE - INSTALLATION CHECK
  7129.     AX = 4000h
  7130.     BX = 0002h
  7131.     CX = 0000h
  7132.     DS:DX = 0000h:0000h
  7133. Return: CF clear if installed
  7134.         AX = CS of resident code
  7135. Program: FARTBELL is a joke program by Guenther Thiele which makes various
  7136.       noises when programs output a bell
  7137. SeeAlso: AX=4001h
  7138. --------j-214001BX0002-----------------------
  7139. INT 21 - FARTBELL.EXE - FORCE NOISE
  7140.     AX = 4001h
  7141.     BX = 0002h
  7142.     CX = 0000h
  7143.     DS:DX = 0000h:0000h
  7144. Program: FARTBELL is a joke program by Guenther Thiele which makes various
  7145.       noises when programs output a bell
  7146. SeeAlso: AX=4000h
  7147. --------D-2141-------------------------------
  7148. INT 21 - DOS 2+ - "UNLINK" - DELETE FILE
  7149.     AH = 41h
  7150.     DS:DX -> ASCIZ filename (no wildcards, but see notes)
  7151.     CL = attribute mask for deletion (server call only, see notes)
  7152. Return: CF clear if successful
  7153.         AX destroyed (DOS 3.3) AL seems to be drive of deleted file
  7154.     CF set on error
  7155.         AX = error code (02h,03h,05h) (see #0885 at AH=59h)
  7156. Notes:    (DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
  7157.       the filespec must be canonical (as returned by AH=60h), and only
  7158.       files matching the attribute mask in CL are deleted
  7159.     DR-DOS 5.0-6.0 returns error code 03h if invoked via AX=5D00h
  7160.     DOS does not erase the file's data; it merely becomes inaccessible
  7161.       because the FAT chain for the file is cleared
  7162.     deleting a file which is currently open may lead to filesystem
  7163.       corruption.  Unless SHARE is loaded, DOS does not close the handles
  7164.       referencing the deleted file, thus allowing writes to a nonexistant
  7165.       file.
  7166.     under DRDOS and DR Multiuser DOS, this function will fail if the file
  7167.       is currently open
  7168.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  7169. BUG:    DR-DOS 3.41 crashes if called via AX=5D00h
  7170. SeeAlso: AH=13h,AX=4301h,AX=4380h,AX=5D00h,AH=60h,AH=71h,AX=F244h
  7171. SeeAlso: INT 2F/AX=1113h
  7172. --------y-214101DXFFFE-----------------------
  7173. INT 21 - SoftLogic Data Guardian - ???
  7174.     AX = 4101h
  7175.     DX = FFFEh
  7176. Return: AX = 0000h if installed
  7177. Note:    resident code sets several internal variables on this call
  7178. SeeAlso: AH=3Fh"NB.SYS",INT 16/AX=FFA3h/BX=0000h
  7179. --------D-2142-------------------------------
  7180. INT 21 - DOS 2+ - "LSEEK" - SET CURRENT FILE POSITION
  7181.     AH = 42h
  7182.     AL = origin of move
  7183.         00h start of file
  7184.         01h current file position
  7185.         02h end of file
  7186.     BX = file handle
  7187.     CX:DX = offset from origin of new file position
  7188. Return: CF clear if successful
  7189.         DX:AX = new file position in bytes from start of file
  7190.     CF set on error
  7191.         AX = error code (01h,06h) (see #0885 at AH=59h)
  7192. Notes:    for origins 01h and 02h, the pointer may be positioned before the
  7193.       start of the file; no error is returned in that case, but subsequent
  7194.       attempts at I/O will produce errors
  7195.     if the new position is beyond the current end of file, the file will
  7196.       be extended by the next write (see AH=40h)
  7197. BUG:    using this method to grow a file from zero bytes to a very large size
  7198.       can corrupt the FAT in some versions of DOS; the file should first
  7199.       be grown from zero to one byte and then to the desired large size
  7200. SeeAlso: AH=24h,INT 2F/AX=1228h
  7201. --------v-214203-----------------------------
  7202. INT 21 - VIRUS - "Shake" - INSTALLATION CHECK
  7203.     AX = 4203h
  7204. Return: AX = 1234h if resident
  7205. SeeAlso: AX=3DFFh,AX=4243h
  7206. --------v-214243-----------------------------
  7207. INT 21 - VIRUS - "Invader" - INSTALLATION CHECK
  7208.     AX = 4243h
  7209. Return: AX = 5678h if resident
  7210. SeeAlso: AX=4203h,AX=4B04h
  7211. --------D-214300-----------------------------
  7212. INT 21 - DOS 2+ - GET FILE ATTRIBUTES
  7213.     AX = 4300h
  7214.     DS:DX -> ASCIZ filename
  7215. Return: CF clear if successful
  7216.         CX = file attributes (see #0643)
  7217.         AX = CX (DR-DOS 5.0)
  7218.     CF set on error
  7219.         AX = error code (01h,02h,03h,05h) (see #0885 at AH=59h)
  7220. Notes:    under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
  7221.     under DR-DOS 3.41 and 5.0, attempts to change the subdirectory bit are
  7222.       simply ignored without an error
  7223. BUG:    Windows for Workgroups returns error code 05h (access denied) instead
  7224.       of error code 02h (file not found) when attempting to get the
  7225.       attributes of a nonexistent file.  This causes open() with O_CREAT
  7226.       and fopen() with the "w" mode to fail in Borland C++.
  7227. SeeAlso: AX=4301h,AX=4310h,AH=71h,AH=B6h,INT 2F/AX=110Fh,INT 60/DI=0517h
  7228. --------D-214301-----------------------------
  7229. INT 21 - DOS 2+ - "CHMOD" - SET FILE ATTRIBUTES
  7230.     AX = 4301h
  7231.     CX = new file attributes (see #0643)
  7232.     DS:DX -> ASCIZ filename
  7233. Return: CF clear if successful
  7234.         AX destroyed
  7235.     CF set on error
  7236.         AX = error code (01h,02h,03h,05h) (see #0885 at AH=59h)
  7237. Notes:    will not change volume label or directory attribute bits, but will
  7238.       change the other attribute bits of a directory (the directory
  7239.       bit must be cleared to successfully change the other attributes of a
  7240.       directory, but the directory will not be changed to a normal file as
  7241.       a result)
  7242.     MS-DOS 4.01 reportedly closes the file if it is currently open
  7243.     for security reasons, the Novell NetWare execute-only bit can never
  7244.       be cleared; the file must be deleted and recreated
  7245.     under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
  7246.     DOS 5.0 SHARE will close the file if it is currently open in sharing-
  7247.       compatibility mode, otherwise a sharing violation critical error is
  7248.       generated if the file is currently open
  7249. SeeAlso: AX=4300h,AX=4311h,AH=71h,INT 2F/AX=110Eh
  7250.  
  7251. Bitfields for file attributes:
  7252. Bit(s)    Description    (Table 0643)
  7253.  7    shareable (Novell NetWare)
  7254.  6    unused
  7255.  5    archive
  7256.  4    directory
  7257.  3    volume label
  7258.     execute-only (Novell NetWare)
  7259.  2    system
  7260.  1    hidden
  7261.  0    read-only
  7262. --------D-214302-----------------------------
  7263. INT 21 - DOS 7 (Chicago) - GET VOLUME INFORMATION
  7264.     AX = 4302h
  7265.     details not yet available
  7266. SeeAlso: AH=71h,AH=72h
  7267. --------O-214302-----------------------------
  7268. INT 21 - DR-DOS 3.41+ internal - GET ACCESS RIGHTS
  7269.     AX = 4302h
  7270.     DS:DX -> ASCIZ pathname
  7271. Return: CF clear if successful
  7272.         CX = access rights (see #0644)
  7273.         AX = CX (DR-DOS 5.0)
  7274.     CF set on error
  7275.         AX = error code
  7276. Desc:    Determine which operations the calling program may perform on a
  7277.       specified file without being required to provide a password.
  7278. Notes:    this protection scheme has been coordinated on all current Digital
  7279.       Research/Novell operating systems (DR-DOS 3.41+, DRMDOS 5.x, and
  7280.       FlexOS 2+)
  7281.     this function is documented in DR-DOS 6.0 and corresponds to the
  7282.       "Get/Set File Attributes" function, subfunction 2, documented in
  7283.       Concurrent DOS.
  7284.     only FlexOS actually uses the "execution" bits; DR-DOS 3.41+ treats
  7285.       them as "read" bits.
  7286.     DR-DOS 3.41-5.x only use bits 0-3.  Only DR-DOS 6.0 using a
  7287.       DRMDOS 5.x security system allowing for users and groups uses bits
  7288.       4-11.
  7289. SeeAlso: AX=4303h
  7290.  
  7291. Bitfields for DR-DOS file access rights:
  7292. Bit(s)    Description    (Table 0644)
  7293.  0    owner delete requires password
  7294.  1    owner execution requires password (FlexOS)
  7295.  2    owner write requires password
  7296.  3    owner read requires password
  7297.  4    group delete requires password
  7298.  5    group execution requires password (FlexOS)
  7299.  6    group write requires password
  7300.  7    group read requires password
  7301.  8    world delete requires password
  7302.  9    world execution requires password (FlexOS)
  7303.  10    world write requires password
  7304.  11    world read requires password
  7305. --------O-214303-----------------------------
  7306. INT 21 - DR-DOS 3.41+ internal - SET ACCESS RIGHTS AND PASSWORD
  7307.     AX = 4303h
  7308.     CX = access rights
  7309.          bits 11-0: access rights (see #0644)
  7310.          bit 15: new password is to be set
  7311.     DS:DX -> ASCIZ pathname
  7312.     [DTA] = new password if CX bit 15 is set (blank-padded to 8 characters)
  7313. Return: CF clear if successful
  7314.     CF set on error
  7315.         AX = error code
  7316. Notes:    if the file is already protected, the old password must be added after
  7317.       the pathname, separated by a ";"
  7318.     this function is documented in DR-DOS 6.0 and corresponds to the
  7319.       "Get/Set File Attributes" function, subfunction 3, documented in
  7320.       Concurrent DOS.
  7321. SeeAlso: AH=0Fh,AH=17h,AX=4302h"DR-DOS",AX=4305h,AX=4454h
  7322. --------O-214304-----------------------------
  7323. INT 21 U - DR-DOS 5.0-6.0 internal - GET ENCRYPTED PASSWORD
  7324.     AX = 4304h
  7325.     DS:DX -> ASCIZ filename
  7326.     ???
  7327. Return: CF clear if successful
  7328.         CX = AX = 0000h if no password assigned to file
  7329.     CF set on error
  7330.         AX = error code (see #0885 at AH=59h)
  7331. Note:    this function is only supported by DR-DOS 5.0 and 6.0 and DRMDOS 5.1
  7332. SeeAlso: AX=4303h,AX=4305h
  7333. --------O-214305-----------------------------
  7334. INT 21 U - DR-DOS 5.0-6.0 internal - SET EXTENDED FILE ATTRIBUTES
  7335.     AX = 4305h
  7336.     DS:DX -> ASCIZ filename
  7337.     ???
  7338. Return: CF clear if successful
  7339.     CF set on error
  7340.         AX = error code (see #0885 at AH=59h)
  7341. Desc:    this function allows the extended attributes, and optionally the
  7342.       encrypted password, of a file to be set.
  7343. Note:    this function is only supported by DR-DOS 5.0 and 6.0 and DRMDOS 5.1
  7344. SeeAlso: AX=4304h,AX=4311h
  7345. --------O-214306-----------------------------
  7346. INT 21 - DR-DOS 6.0 - GET FILE OWNER
  7347.     AX = 4306h
  7348.     DS:DX -> ASCIZ filename
  7349. Return: CF clear if successful
  7350.         AX = CX = value set with AX=4307h
  7351.     CF set on error
  7352.         AX = error code (see #0885 at AH=59h)
  7353. SeeAlso: AX=4307h
  7354. --------O-214307-----------------------------
  7355. INT 21 - DR-DOS 6.0 - SET FILE OWNER
  7356.     AX = 4307h
  7357.     CX = ??? (owner identification number?)
  7358.     DS:DX -> ASCIZ filename
  7359. Return: CF clear if successful
  7360.     CF set on error
  7361.         AX = error code (see #0885 at AH=59h)
  7362. SeeAlso: AX=4306h
  7363. --------N-214310-----------------------------
  7364. INT 21 - Banyan VINES 2.1+ - GET EXTENDED FILE ATTRIBUTES
  7365.     AX = 4310h
  7366.     DS:DX -> ASCIZ filename
  7367. Return: CF clear if successful
  7368.         CH = attributes (see #0645)
  7369.     CF set on error
  7370.         AX = error code (01h,02h,03h,05h) (see #0885 at AH=59h)
  7371. Note:    the filename may be a directory but must be on a VINES file service
  7372. SeeAlso: AX=4300h,AX=4311h,AH=B6h,INT 2F/AX=110Fh
  7373. --------N-214311-----------------------------
  7374. INT 21 - Banyan VINES 2.1+ - SET EXTENDED FILE ATTRIBUTES
  7375.     AX = 4311h
  7376.     CH = new attributes (see #0645)
  7377.     DS:DX -> ASCIZ filename
  7378. Return: CF clear if successful
  7379.     CF set on error
  7380.         AX = error code (01h,02h,03h,05h) (see #0885 at AH=59h)
  7381. Note:    the filename may be a directory but must be on a VINES file service
  7382. SeeAlso: AX=4301h,AX=4305h,AX=4310h,INT 2F/AX=110Eh
  7383.  
  7384. Bitfields for VINES extended file attributes:
  7385. Bit(s)    Description    (Table 0645)
  7386.  7    unused
  7387.  6    shareable
  7388.  5    execute-only
  7389.  4-0    unused
  7390. --------u-214321BX0000-----------------------
  7391. INT 21 R - Q87, Q387 - INSTALLATION CHECK
  7392.     AX = 4321h
  7393.     BX = 0000h
  7394.     EAX = 87654321h (entire EAX value is required, not just AX)
  7395. Return: EAX = 12345678h if installed
  7396. Program: Q387 (renamed to Q87 as of v3.7) is a math coprocessor emulator from
  7397.       Quickware
  7398. Note:    this function is available only in virtual-86 mode
  7399. SeeAlso: AX=4321h/BX=0001h,AX=4321h/BX=0002h
  7400. --------u-214321BX0001-----------------------
  7401. INT 21 R - Q87, Q387 - ENABLE EMULATOR
  7402.     AX = 4321h
  7403.     BX = 0001h
  7404.     EAX = 87654321h (entire EAX value is required, not just AX)
  7405. Desc:    enable the emulator by setting the CPU MSW's EM bit and updating
  7406.       the BIOS equipment list
  7407. Note:    this function is available only in virtual-86 mode
  7408. SeeAlso: AX=4321h/BX=0000h,AX=4321h/BX=0002h
  7409. --------u-214321BX0002-----------------------
  7410. INT 21 R - Q87, Q387 - DISABLE EMULATOR
  7411.     AX = 4321h
  7412.     BX = 0002h
  7413.     EAX = 87654321h (entire EAX value is required, not just AX)
  7414. Desc:    disable the emulator by clearing the CPU MSW's EM bit and updating
  7415.       the BIOS equipment list
  7416. Note:    this function is available only in virtual-86 mode
  7417. SeeAlso: AX=4321h/BX=0000h,AX=4321h/BX=0001h
  7418. --------O-214380-----------------------------
  7419. INT 21 - Novell DOS 7 - UNDELETE PENDING DELETE FILE
  7420.     AX = 4380h
  7421.     ???
  7422. Return: ???
  7423. SeeAlso: AH=41h,AX=4381h
  7424. --------O-214381-----------------------------
  7425. INT 21 - Novell DOS 7 - PURGE PENDING DELETE FILE
  7426.     AX = 4381h
  7427.     ???
  7428. Return: ???
  7429. SeeAlso: AH=41h,AX=4380h
  7430. --------!---Section--------------------------
  7431.