home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / i / inter33b.zip / INTERRUP.G < prev    next >
Text File  |  1993-01-03  |  312KB  |  8,757 lines

  1. Interrupt List, part 7 of 8
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. ----------50---------------------------------
  4. INT 50 - TIL Xpert AIM (X.25)
  5.     AH = function
  6. ----------50---------------------------------
  7. INT 50 - IRQ0 relocated by DESQview
  8. Notes:    this is the default location for older versions; DESQview v2.26+
  9.       searches for unused ranges of interrupts and uses the lowest
  10.       available range in its list for relocating these IRQs and the next
  11.       lowest for relocating IRQ8-IRQ15
  12.     a range of eight interrupts starting at a multiple of 8 is considered
  13.       available if all vectors are identical and it has not been excluded
  14.       with an /XB:nn commandline switch
  15.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  16.       are available, F8h and then 50h are used anyway)
  17.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  18.       are available, F8h and then F0h are used anyway)
  19. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  20. ----------50---------------------------------
  21. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  22. SeeAlso: INT 51"IBM 3278"
  23. ----------50---------------------------------
  24. INT 50 - IRQ0 relocated by OS/2 v1.x
  25. SeeAlso: INT 51"OS/2"
  26. ----------500000-----------------------------
  27. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
  28.     AX = 0000h
  29.     ES:BX -> name string or ES:0000h if none
  30.     CH,CL = row,column of upper left corner
  31.     DH,DL = row,column of lower right corner
  32. Return: AX = window handle or
  33.         0000h if not installed
  34.         FFFFh on error
  35. SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
  36. ----------500001-----------------------------
  37. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
  38.     AX = 0001h
  39.     DI = window handle
  40. SeeAlso: AX=0000h
  41. ----------500002-----------------------------
  42. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  43.     AX = 0002h
  44.     BL = character
  45.     BH = attribute
  46.     DL = column
  47.     DH = row
  48.     DI = window handle
  49. Return: AX = status
  50.         0000h if successful
  51.         FFFFh if outside window
  52. SeeAlso: AX=0000h
  53. ----------500002-----------------------------
  54. INT 50 - PC Thuis Organizer Shell - PLOT TEXT
  55.     AX = 0002h
  56.     ES:BX -> text string
  57.     DH,DL = row,column of upper left corner
  58.     DI = window handle
  59. Return: AX = status
  60.         0000h successful (text fits in window)
  61.         FFFFh error
  62. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  63.       published in the June/July 1990 issue of PC Thuis Power magazine
  64. ----------500003-----------------------------
  65. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  66.     AX = 0003h
  67.     ES:BX -> text string
  68.     CX = string length (0000h if ASCIZ string)
  69.     DL = position (FFh centered, else flush left)
  70.     DH = starting row
  71.     DI = window handle
  72. Return: AX = status
  73.         0000h successful
  74.         FFFFh did not fit in window
  75. ----------500003-----------------------------
  76. INT 50 - PC Thuis Organizer Shell - WRITE FILE
  77.     AX = 0003h
  78.     ES:BX -> data to be written
  79.     CX = number of bytes to write
  80.     DS:SI -> filename
  81. Return: AX = status
  82.         0000h successful
  83.         FFFFh error
  84. SeeAlso: AX=0004h"Shell"
  85. ----------500004-----------------------------
  86. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  87.     AX = 0004h
  88.     CH = type
  89.         00h any key
  90.         01h 'J' or 'N' (Dutch for yes/no)
  91. Return: AX = key
  92. SeeAlso: INT 16/AH=00h
  93. ----------500004-----------------------------
  94. INT 50 - PC Thuis Organizer Shell - READ FILE
  95.     AX = 0004h
  96.     ES:BX -> buffer for data
  97.     CX = number of bytes to read or 0000h for entire file
  98.     DL = file type
  99.         01h setting shell
  100.         02h setting sterm
  101.         03h INT21 file
  102.     DS:SI -> filename
  103. Return: AX = status
  104.         0000h successful
  105.         FFFFh error
  106. Note:    file type numbers are maintained by John Vanderaart; if a new file type
  107.       is needed, a type number should be requested from him through the
  108.       magazine:
  109.         PC Thuis BV
  110.         Spaarne 55
  111.         2011 CE HAARLEM
  112.         The Netherlands
  113. SeeAlso: AX=0003h"Shell"
  114. ----------500005-----------------------------
  115. INT 50 -Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  116.     AX = 0005h
  117.     BL = new attribute
  118.     CH,CL = row,column of upper left corner
  119.     DH,DL = row,column of lower right corner
  120.     DI = window handle
  121. ----------500005-----------------------------
  122. INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
  123.     AX = 0005h
  124.     ES:BX -> prompt string (ES:0000h if no prompt)
  125. Return: AX = key pressed
  126.         0000h "J" (Dutch "Ja" = "Yes")
  127.         FFFFh "N" (Dutch "Nee" = "No")
  128. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  129.       published in the June/July 1990 issue of PC Thuis Power magazine
  130. ----------500006-----------------------------
  131. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  132.     AX = 0006h
  133.     ES:BX -> text string
  134.     CH = type
  135.         00h everything
  136.         01h uppercase only
  137.         02h positive numbers
  138.         03h Dutch postal code ("9999 AA")
  139.         04h 'J' or 'N' (Dutch yes/no)
  140.         05h telephone or FAX number
  141.         06h positive or negative number
  142.         07h date (dd/mm/yy)
  143.         08h money
  144.         09h '1' through '8'
  145.         0Ah '1' through '4'
  146.         0Bh uppercase filenames
  147.     DH,DL = row,column of upper left corner
  148.     DI = window handle
  149. Return: AX = key which terminated entry
  150.         0000h Enter
  151.         0001h Esc
  152.         0002h Down arrow
  153.         0003h Up arrow
  154.         0004h F10
  155. ----------500006-----------------------------
  156. INT 50 - PC Thuis Organizer Shell - ALERT USER
  157.     AX = 0006h
  158.     ES:BX -> string
  159. ----------500007-----------------------------
  160. INT 50 - PC Thuis Organizer Shell - DO LINE
  161.     AX = 0007h
  162.     ES:BX -> text string
  163.     CX = string length in bytes (0000h if NUL-terminated)
  164.     DL = FFh to center string, else flush left
  165.     DH = upper left row
  166.     DI = window handle
  167. Return: AX = status
  168.         0000h successful
  169.         FFFFh error
  170. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  171.       published in the June/July 1990 issue of PC Thuis Power magazine
  172. ----------500008-----------------------------
  173. INT 50 - PC Thuis Organizer Shell - DO MENU
  174.     AX = 0008h
  175.     ES:BX -> menu structure
  176. Return: AL = index 1 or FFh if not selected
  177.     AH = index 2 or FFh if not selected
  178.     BL = index 3 or FFh if not selected
  179.     BH = index 4 or FFh if not selected
  180. SeeAlso: AX=000Ch
  181. ----------500009-----------------------------
  182. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  183.     AX = 0009h
  184.     ES:BX -> message string
  185. SeeAlso: AX=000Ah
  186. ----------50000A-----------------------------
  187. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  188.     AX = 000Ah
  189. SeeAlso: AX=0009h
  190. ----------50000B-----------------------------
  191. INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
  192.     AX = 000Bh
  193.     BL = new attribute
  194.     CH,CL = row,column of upper left corner
  195.     DH,DL = row,column of lower right corner
  196.     DI = window handle
  197. ----------50000C-----------------------------
  198. INT 50 - PC Thuis Organizer Shell - DO REQUEST
  199.     AX = 000Ch
  200.     ES:BX -> request structure
  201. Return: AX = status
  202.         0000h confirmed
  203.         FFFFh denied
  204. SeeAlso: AX=0008h
  205. ----------50000D-----------------------------
  206. INT 50 - PC Thuis Organizer Shell - EDIT LINE
  207.     AX = 000Dh
  208.     ES:BX -> text string
  209.     CL = length
  210.     CH = type
  211.         bit 0: force uppercase
  212.         bit 1: integer
  213.         bit 2: no spaces allowed
  214.         bit 3: no cursor keys
  215.     DH,DL = row,column of upper left corner
  216.     DI = window handle
  217. Return: AX = result code
  218. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  219.       published in the June/July 1990 issue of PC Thuis Power magazine
  220. ----------50000E-----------------------------
  221. INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
  222.     AX = 000Eh
  223.     BL = character
  224.     BH = attribute
  225.     DH,DL = row,column at which to plot
  226.     DI = window handle
  227. Return: AX = status
  228.         0000h successful
  229.         FFFFh errror
  230. ----------50000F-----------------------------
  231. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  232.     AX = 000Fh
  233.     BL = character
  234.     BH = attribute
  235.     DI = window handle
  236. ----------500010-----------------------------
  237. INT 50 - PC Thuis Organizer Shell - TRACE MENU
  238.     AX = 0010h
  239.     ES:BX -> first menu structure
  240.     CL = hotkey to look up
  241. Return: AL = index 1 or FFh if not selected
  242.     AH = index 2 or FFh if not selected
  243.     BL = index 3 or FFh if not selected
  244.     BH = index 4 or FFh if not selected
  245. ----------500011-----------------------------
  246. INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
  247.     AX = 0011h
  248.     DS:SI -> source
  249.     ES:DI -> destination
  250.     CX = number of bytes to move (0000h = until NUL string terminator???)
  251. SeeAlso: AX=0012h
  252. ----------500012-----------------------------
  253. INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
  254.     AX = 0012h
  255.     DS:SI -> source
  256.     ES:DI -> destination
  257.     CX = number of bytes to compare (0000h=until NUL string terminator???)
  258. Return: AX = status
  259.         0000h same
  260.         FFFFh different
  261. SeeAlso: AX=0011h
  262. ----------500013-----------------------------
  263. INT 50 - PC Thuis Organizer Shell - GET KEY
  264.     AX = 0013h
  265.     CH = type flags
  266.         bit 0: force uppercase
  267.         bit 1: integer
  268.         bit 2: no spaces
  269. Return: AX = keystroke
  270. ----------500014-----------------------------
  271. INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
  272.     AX = 0014h
  273.     BL = direction
  274.         06h up
  275.         07h down
  276.     BH = attribute
  277.     DI = window handle
  278. SeeAlso: INT 10/AH=06h,INT 10/AH=07h
  279. ----------500015-----------------------------
  280. INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
  281.     AX = 0015h
  282.     BL = handle size
  283.         00h 65536 bytes (64K)
  284.         01h 65535 bytes (64K-1)
  285.         02h 32768 bytes (32K)
  286.         03h 32767 bytes (32K-1)
  287. Return: AX = segment
  288. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  289.       published in the June/July 1990 issue of PC Thuis Power magazine
  290. SeeAlso: INT 21/AH=48h
  291. ----------51---------------------------------
  292. INT 51 - through 53 - IRQ1-IRQ3 relocated by DESQview
  293. Note:    this is the default location for older versions; see INT 50"DESQview"
  294.       for details of interrupt relocation
  295. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  296. ----------51---------------------------------
  297. INT 51 - through 53 - IRQ1-IRQ3 relocated by IBM 3278 emulation control program
  298. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  299. ----------51---------------------------------
  300. INT 51 - through 53 - IRQ1-IRQ3 relocated by OS/2 v1.x
  301. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  302. ----------53---------------------------------
  303. INT 53 - ??? - API
  304.     BX = function
  305.         0000h ???
  306.         AX = ???
  307.         Return: AX = ???
  308.         0004h ???
  309.         0009h ???
  310.         0015h
  311.         AX = ???
  312.         DX = ???
  313.         0017h
  314. Return: ???
  315. Notes:    the installation check consists of looking for the signature "WEBCO"
  316.       immediately prior to the interrupt handler
  317.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  318. ----------54---------------------------------
  319. INT 54 - through 57 - IRQ4-IRQ7 relocated by DESQview
  320. Note:    this is the default location for older versions; see INT 50"DESQview"
  321.       for details of interrupt relocation
  322. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  323. ----------54---------------------------------
  324. INT 54 - through 57 - IRQ4-IRQ7 relocated by IBM 3278 emulation control program
  325. SeeAlso: INT 51"IBM 3278"
  326. ----------54---------------------------------
  327. INT 54 - through 57 - IRQ4-IRQ7 relocated by OS/2 v1.x
  328. SeeAlso: INT 51"OS/2"
  329. ----------58---------------------------------
  330. INT 58 - IRQ8 relocated by DESQview 2.26+
  331. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  332. SeeAlso: INT 50"DESQview",INT 70
  333. ----------58---------------------------------
  334. INT 58 - IRQ0 relocated by DoubleDOS
  335. SeeAlso: INT 08
  336. ----------59---------------------------------
  337. INT 59 - IRQ9 relocated by DESQview 2.26+
  338. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  339. SeeAlso: INT 50"DESQview",INT 71
  340. ----------59---------------------------------
  341. INT 59 - IRQ1 relocated by DoubleDOS
  342. SeeAlso: INT 09
  343. ----------59---------------------------------
  344. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  345.     DS:DX -> block of 5 array pointers
  346. Return:    CF set on error
  347.         AX = error code
  348.     CF clear if successful
  349.         AX = return code
  350. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  351.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  352.     also used by the IBM Graphic Development Toolkit
  353. ----------5A---------------------------------
  354. INT 5A - IRQ10 relocated by DESQview 2.26+
  355. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  356. SeeAlso: INT 50"DESQview",INT 72
  357. ----------5A---------------------------------
  358. INT 5A - IRQ2 relocated by DoubleDOS
  359. SeeAlso: INT 0A
  360. ----------5A---------------------------------
  361. INT 5A - Cluster adapter BIOS entry address
  362.     ???
  363. ----------5B---------------------------------
  364. INT 5B - IRQ11 relocated by DESQview 2.26+
  365. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  366. SeeAlso: INT 50"DESQview",INT 73
  367. ----------5B---------------------------------
  368. INT 5B - IRQ3 relocated by DoubleDOS
  369. SeeAlso: INT 0B
  370. ----------5B---------------------------------
  371. INT 5B - Used by cluster adapter
  372. ----------5B---------------------------------
  373. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  374.     ES:BX -> Network Control Block (see below)
  375. Return: AL = status (see INT 5C)
  376. SeeAlso: INT 5C
  377.  
  378. Format of Network Control Block
  379. Offset    Size    Description
  380.  00h    BYTE    ncb_command (see below)
  381.  01h    BYTE    ncb_retcode
  382.  02h    BYTE    ncb_lsn
  383.  03h    BYTE    ncb_num
  384.  04h    DWORD    -> ncb_buffer
  385.  08h    WORD    ncb_length
  386.  0Ah 16 BYTEs    ncb_callname
  387.  1Ah 16 BYTEs    ncb_name
  388.  2Ah    BYTE    ncb_rto
  389.  2Bh    BYTE    ncb_sto
  390.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  391.  30h    BYTE    ncb_lana_num
  392.  31h    BYTE    ncb_cmd_cplt
  393.  32h    DWORD    -> ncb_vname
  394.  36h    BYTE    ncb_vnamelen
  395.  37h  9 BYTEs    ncb_reserve
  396. Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  397.  
  398. Values for ncb_command field same as for INT 5C, except
  399.     70h    send net Break
  400. ----------5B---------------------------------
  401. INT 5B - Microsoft Network Transport Layer Interface
  402. Note:    used by MS-NET for executing network commands
  403. SeeAlso: INT 5C"NetBIOS"
  404. ----------5B---------------------------------
  405. INT 5B - used by Alloy NTNX
  406. ----------5B---------------------------------
  407. INT 5B - ISOLAN Multi Protocol Software
  408.     ES:BX -> Transfer Control Block
  409. Return: AL - status
  410. Note:    this software interface allows multiple protocols/software packages
  411.       to access a BICC 411x network card
  412.  
  413. Format of Transfer Control Block:
  414. Offset    Type    Description
  415.  00h    BYTE    command code
  416.         B3h Status
  417.         F2h Activate
  418.         F3h Deactivate
  419.         F4h Send Data
  420.  01h    BYTE    command identity
  421.  02h    BYTE    virtual circuit ID
  422.  03h    WORD    buffer length
  423.  05h    DWORD    buffer pointer
  424.  09h    BYTE    expedited data flag
  425.  0Ah    BYTE    cancelable flag
  426.  0Bh 16 BYTEs    local network address
  427.  1Bh 16 BYTEs    remote network address
  428.  2Bh    DWORD    asynchronous notification routine
  429.  30h    DWORD    local network number
  430.  34h    DWORD    remote network number
  431.  38h    BYTE    call timeout
  432.  39h    BYTE    not used
  433.  3Ah  8 BYTEs    reserved
  434.  42h    BYTE    command code extension
  435.  43h    WORD    Blue Book MAC type
  436. ----------5C---------------------------------
  437. INT 5C - IRQ12 relocated by DESQview 2.26+
  438. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  439. SeeAlso: INT 50"DESQview",INT 74
  440. ----------5C---------------------------------
  441. INT 5C - IRQ4 relocated by DoubleDOS
  442. SeeAlso: INT 0C
  443. ----------5C---------------------------------
  444. INT 5C - NetBIOS INTERFACE
  445.     ES:BX -> network control block (NCB) (see below)
  446. Return: AL = status (see below)
  447. Note:    Sytek PCnet card uses DMA 3.
  448. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  449.  
  450. Values for NetBIOS status:
  451.  00h successful
  452.  01h bad buffer size
  453.  03h invalid NETBIOS command
  454.  05h timeout
  455.  06h receive buffer too small
  456.  07h No-ACK command failed
  457.  08h bad session number
  458.  09h LAN card out of memory
  459.  0Ah session closed
  460.  0Bh command has been cancelled
  461.  0Dh name already exists
  462.  0Eh local name table full
  463.  0Fh name still in use, can't delete
  464.  11h local session table full
  465.  12h remote PC not listening
  466.  13h bad NCB_NUM field
  467.  14h no answer to CALL or no such remote
  468.  15h name not in local name table
  469.  16h duplicate name
  470.  17h bad delete
  471.  18h abnormal end
  472.  19h name error, multiple identical names in use
  473.  1Ah bad packet
  474.  21h network card busy
  475.  22h too many commands queued
  476.  23h bad LAN card number
  477.  24h command finished while cancelling
  478.  26h command can't be cancelled
  479.  30h name defined by another process (OS/2)
  480.  34h NetBIOS environment not defined, must issue reset (OS/2)
  481.  35h required operating system resources exhausted (OS/2)
  482.  36h maximum applications exceeded (OS/2)
  483.  37h no SAPs available for NetBIOS (OS/2)
  484.  38h requested resources not available (OS/2)
  485.  40h Lana System Error
  486.  41h Lana Remote Hot Carrier
  487.  42h Lana Local Hot Carrier
  488.  43h Lana No Carrier Detected
  489.  44h unusual network condition
  490.  45h-4Dh hardware error
  491.  4Eh token ring is broken
  492.  4Fh token ring error
  493.  50h adapter malfunction
  494.  F7h error in explicit INITIALIZE
  495.  F8h error in implicit OPEN
  496.  F9h TOKREUI internal error
  497.  FAh hardware adapter testing
  498.  FBh NetBIOS emulator not found
  499.  FCh OPEN or OPEN_SAP failure
  500.  FDh unexpected adapter closure
  501.  FFh NetBIOS busy (command pending)
  502.  
  503. Format of Network Control Block:
  504. Offset    Size    Description
  505.  00h    BYTE    command code (see below)
  506.  01h    BYTE    return code
  507.  02h    BYTE    local session number (LSN)
  508.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  509.  04h    DWORD    -> I/O buffer
  510.  08h    WORD    length of data in buffer
  511.  0Ah 16 BYTEs    remote system to call
  512.  1Ah 16 BYTEs    network name of local machine
  513.  2Ah    BYTE    receive timeout in 1/2 seconds
  514.  2Bh    BYTE    send timeout in 1/2 seconds
  515.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  516.  30h    BYTE    network adapter number on which to execute command
  517.         00h-03h IBM NetBIOS specs
  518.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  519.  31h    BYTE    command completion code (see returned status above)
  520.  32h 14 BYTEs    reserved for network card
  521.  
  522. Values for command code field in NCB (OR with 80h for non-waiting call):
  523.  10h start session with NCB_NAME name (call)
  524.  11h listen for call
  525.  12h end session with NCB_NAME name (hangup)
  526.  14h send data via NCB_LSN
  527.  15h receive data from a session
  528.  16h receive data from any session
  529.  17h send multiple data buffers
  530.  20h send unACKed message (datagram)
  531.  21h receive datagram
  532.  22h send broadcast datagram
  533.  23h receive broadcast datagram
  534.  30h add name to name table
  535.  31h delete name from name table
  536.  32h reset adapter card and tables
  537.  33h get adapter status (see structure "astatus" below)
  538.  34h status of all sessions for name (see structure "sstatus" below)
  539.  35h cancel
  540.  36h add group name to name table
  541.  48h send data and receive data (LAN Manager NETBEUI.DOS)
  542.  70h unlink from IBM remote program (no F0h function)
  543.  71h send data without ACK
  544.  72h send multiple buffers without ACK
  545.  72h UngermannBass Register (conflicts with above function)
  546.  73h UngermannBass SendNmc
  547.  74h UngermannBass Callniu
  548.  75h UngermannBass Calladdr
  549.  76h UngermannBass Listenaddr
  550.  77h UngermannBass SendPkt
  551.  78h find name
  552.  78h UngermannBass RcvPkt (conflicts with above function)
  553.  79h token-ring protocol trace
  554.  79h UngermannBass SendAttn (conflicts with above function)
  555.  7Ah UngermannBass RcvAttn
  556.  7Bh UngermannBass Listenniu
  557.  7Ch UngermannBass RcvRaw
  558.  7Dh UngermannBass SendNmc2
  559.  
  560. Format of structure "name":
  561. Offset    Size    Description
  562.  00h 16 BYTEs "nm_name" symbolic name
  563.  10h    BYTE  "nm_num" number associated with name
  564.  11h    BYTE  nm_status
  565.  
  566. Format of structure "astatus":
  567. Offset    Size    Description
  568.  00h  6 BYTEs as_id
  569.  06h    BYTE  as_jumpers
  570.  07h    BYTE  as_post
  571.  08h    BYTE  as_major
  572.  09h    BYTE  as_minor
  573.  0Ah    WORD  as_interval
  574.  0Ch    WORD  as_crcerr
  575.  0Eh    WORD  as_algerr
  576.  10h    WORD  as_colerr
  577.  12h    WORD  as_abterr
  578.  14h    DWORD as_tcount
  579.  18h    DWORD as_rcount
  580.  1Ch    WORD  as_retran
  581.  1Eh    WORD  as_xresrc
  582.  20h  8 BYTEs as_res0
  583.  28h    WORD  as_ncbfree
  584.  2Ah    WORD  as_ncbmax
  585.  2Ch    WORD  as_ncbx
  586.  2Eh  4 BYTEs as_res1
  587.  32h    WORD  as_sespend
  588.  34h    WORD  as_msp
  589.  36h    WORD  as_sesmax
  590.  38h    WORD  as_bufsize
  591.  3Ah    WORD  as_names
  592.  3Ch 16 name structures     as_name
  593.  
  594. Format of structure "sstatus":
  595. Offset    Size    Description
  596.  00h    BYTE    number of sessions being reported
  597.  01h    BYTE    number of sessions with this name
  598.  02h    BYTE    number of outstanding receive datagrams
  599.  03h    BYTE    number of outstanding ReceiveAnys
  600.  04h    var    session structures (see below)
  601.  
  602. Format of structure "session":
  603. Offset    Size    Description
  604.  00h    BYTE    local session number
  605.  01h    BYTE    state
  606.         01h listen pending
  607.         02h call pending
  608.         03h session established
  609.         04h hangup pending
  610.         05h hangup done
  611.         06h session aborted
  612.  02h 16 BYTEs    local name
  613.  12h 16 BYTEs    remote name
  614.  22h    BYTE    number of outstanding receives
  615.  23h    BYTE    number of outstanding sends/chainsends
  616. ----------5C---------------------------------
  617. INT 5C - TOPS INTERFACE
  618.     ES:BX -> Network Control Block
  619. Note:    TOPS card uses DMA 1, 3 or none.
  620. ----------5C---------------------------------
  621. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  622.     DX:BX -> control block (see below)
  623. Return: none
  624. Notes:    this driver can use any interrupt from 5Ch to 70h
  625.     the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  626.       handler; this serves as the installation check
  627.  
  628. Format of AppleTalk control block:
  629. Offset    Size    Description
  630.  00h    WORD    command code
  631.         01h "AT_INIT"        initialize the driver
  632.         02h "AT_KILL"
  633.         03h "AT_GETNETINFO" get current network info incl init status
  634.         04h "AT_GETCLOCKTICKS"
  635.         05h "AT_STARTTIMER"
  636.         06h "AT_RESETTIMER"
  637.         07h "AT_CANCELTIMER"
  638.         10h "LAP_INSTALL"
  639.         11h "LAP_REMOVE"
  640.         12h "LAP_WRITE"
  641.         13h "LAP_READ"
  642.         14h "LAP_CANCEL"
  643.         20h "DDP_OPENSOCKET"
  644.         21h "DDP_CLOSESOCKET"
  645.         22h "DDP_WRITE"
  646.         23h "DDP_READ"
  647.         24h "DDP_CANCEL"
  648.         30h "NBP_REGISTER"
  649.         31h "NBP_REMOVE"
  650.         32h "NBP_LOOKUP"
  651.         33h "NBP_CONFIRM"
  652.         34h "NBP_CANCEL"
  653.         35h "ZIP_GETZONELIST"
  654.         36h "ZIP_GETMYZONE"
  655.         37h "ZIP_TAKEDOWN"
  656.         38h "ZIP_BRINGUP"
  657.         40h "ATP_OPENSOCKET"
  658.         41h "ATP_CLOSESOCKET"
  659.         42h "ATP_SENDREQUEST"
  660.         43h "ATP_GETREQUEST"
  661.         44h "ATP_SENDRESPONSE"
  662.         45h "ATP_ADDRESPONSE"
  663.         46h "ATP_CANCELTRANS"
  664.         47h "ATP_CANCELRESPONSE"
  665.         48h "ATP_CANCELREQUEST"
  666.         50h "ASP_GETPARMS"
  667.         51h "ASP_CLOSESESSION"
  668.         52h "ASP_CANCEL"
  669.         53h "ASP_INIT"
  670.         54h "ASP_KILL"
  671.         55h "ASP_GETSESSION"
  672.         56h "ASP_GETREQUEST"
  673.         57h "ASP_CMDREPLY"
  674.         58h "ASP_WRTCONTINUE"
  675.         59h "ASP_WRTREPLY"
  676.         5Ah "ASP_CLOSEREPLY"
  677.         5Bh "ASP_NEWSTATUS"
  678.         5Ch "ASP_ATTENTION"
  679.         5Dh "ASP_GETSTATUS"
  680.         5Eh "ASP_OPENSESSION"
  681.         5Fh "ASP_COMMAND"
  682.         60h "ASP_WRITE"
  683.         61h "ASP_GETATTENTION"
  684.         70h "PAP_OPEN"
  685.         71h "PAP_CLOSE"
  686.         72h "PAP_READ"
  687.         73h "PAP_WRITE"
  688.         74h "PAP_STATUS"
  689.         75h "PAP_REGNAME"
  690.         76h "PAP_REMNAME"
  691.         77h "PAP_INIT"
  692.         78h "PAP_NEWSTATUS"
  693.         79h "PAP_GETNEXTJOB"
  694.         7Ah "PAP_KILL"
  695.         7Bh "PAP_CANCEL"
  696.         
  697.         or with the following flags
  698.         8000h start command then return
  699.         4000h wait for interrupt service to complete
  700.  02h    WORD    returned status
  701.         0000h success (already initialized if func 01h)
  702.  04h    DWORD    pointer to completion function
  703.  08h    WORD    network number
  704.  0Ah    BYTE    node ID
  705. ---if general func (01h,03h), control block continues:
  706.  0Bh    BYTE    "inf_abridge"
  707.  0Ch    WORD    "inf_config"
  708.  0Eh    DWORD    pointer to buffer
  709.  12h    WORD    buffer size
  710. ---if DDP function (20h-24h), control block continues:
  711.  0Bh    BYTE    "ddp_addr_socket"
  712.  0Ch    BYTE    "ddp_socket"
  713.  0Dh    BYTE    "ddp_type"
  714.  0Eh    DWORD    pointer to buffer
  715.  12h    WORD    buffer size
  716.  14h    BYTE    "ddp_chksum"
  717. ---if Name Binding Protocol (30h-34h), control block continues:
  718.  0Bh    BYTE    "nbp_addr_socket"
  719.  0Ch    WORD    "nbp_toget"
  720.  0Eh    DWORD    pointer to buffer
  721.  12h    WORD    buffer size
  722.  14h    BYTE    "nbp_interval"
  723.  15h    BYTE    "nbp_retry"
  724.  16h    DWORD    "nbp_entptr"
  725. ---if AppleTalk Transaction Protocol (42h), control block continues:
  726.  0Bh    BYTE    "atp_addr_socket"
  727.  0Ch    WORD    "atp_socket"
  728.  0Eh    DWORD    pointer to buffer
  729.  12h    WORD    buffer size
  730.  14h    BYTE    "atp_interval"
  731.  15h    BYTE    "atp_retry"
  732.  16h    BYTE    ATP flags
  733.         bit 5: exactly one transaction
  734.  17h    BYTE    "atp_seqbit"
  735.  18h    BYTE    transaction ID
  736.  19h  4 BYTEs    ATP user bytes
  737.  1Dh    BYTE    number of BDS buffers
  738.  1Eh    BYTE    number of BDS responses
  739.  1Fh    DWORD    pointer to BDS buffers (see below)
  740.  
  741. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  742. Offset    Size    Description
  743.  00h    WORD    "tup_address_network"
  744.  02h    BYTE    "tup_address_notid"
  745.  03h    BYTE    "tup_address_socket"
  746.  04h    BYTE    "tup_enum"
  747.  05h 99 BYTEs    name
  748.  
  749. Format of BDS entries:
  750. Offset    Size    Description
  751.  00h    DWORD    pointer to buffer
  752.  04h    WORD    size of buffer
  753.  06h    WORD    BDS data size
  754.  08h  4 BYTEs    "bds_userbytes"
  755. ----------5C---------------------------------
  756. INT 5C - IBM 802.2 INTERFACE (LLC)
  757.     ES:BX -> CCB
  758. Return: none
  759.  
  760. Format of CCB:
  761. Offset    Size    Description
  762.  00h    BYTE    adapter
  763.  01h    BYTE    command code
  764.  02h    BYTE    return code
  765.  03h    BYTE    work
  766.  04h    DWORD    pointer to ???
  767.  08h    DWORD    pointer to completion function???
  768.  0Ch    DWORD    pointer to parameters???
  769. ----------5C---------------------------------
  770. INT 5C - $25 LAN - INSTALLATION CHECK
  771. Notes:    current versions only check whether the vector is 0000h:0000h or not
  772.     future versions are supposed to have the signature "NET" in the three
  773.       bytes preceding the INT 5C handler
  774. ----------5C04-------------------------------
  775. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  776.     AH = 04h
  777.     AL = COM port (0 = default)
  778.     CX = wait count in character times (should be at least 100)
  779. Return: ZF set if link alive
  780. ----------5D---------------------------------
  781. INT 5D - IRQ13 relocated by DESQview 2.26+
  782. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  783. SeeAlso: INT 50"DESQview",INT 75
  784. ----------5D---------------------------------
  785. INT 5D - IRQ5 relocated by DoubleDOS
  786. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  787. ----------5E---------------------------------
  788. INT 5E - IRQ14 relocated by DESQview 2.26+
  789. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  790. SeeAlso: INT 50"DESQview",INT 76
  791. ----------5E---------------------------------
  792. INT 5E - IRQ6 relocated by DoubleDOS
  793. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  794. ----------5F---------------------------------
  795. INT 5F - IRQ15 relocated by DESQview 2.26+
  796. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  797. SeeAlso: INT 50"DESQview",INT 77
  798. ----------5F---------------------------------
  799. INT 5F - IRQ7 relocated by DoubleDOS
  800. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  801. ----------5F00-------------------------------
  802. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  803.     AH = 00h
  804.     AL = video mode
  805.         07h text, system manager compliant
  806.         20h 240x128 mono graphics, system manager compliant
  807.         87h text, not system manager compliant
  808.         A0h 240x128 mono graphics, not system manager compliant
  809. Note:    the defaults after setting the mode to graphics are (0,0) logical
  810.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  811.       pixel replacement FORCE, line type and fill mask all bits set
  812. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  813. ----------5F01-------------------------------
  814. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  815.     AH = 01h
  816.     ES:DI -> 8-byte fill mask
  817. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  818.       when drawing filled rectangles; it is always aligned with the byte
  819.       boundaries of video memory, regardless of the actual boundaries of
  820.       the rectangle
  821. SeeAlso: AH=02h
  822. ----------5F02-------------------------------
  823. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  824.     AH = 02h
  825.     ES:DI -> graphics info record (see below)
  826. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  827. Format of graphics info record:
  828. Offset    Size    Description
  829.  00h    BYTE    current video mode
  830.  01h    BYTE    default video mode
  831.  02h    WORD    display width in pixels
  832.  04h    WORD    display height in pixels
  833.  06h    WORD    current pen column
  834.  08h    WORD    current pen row
  835.  0Ah    WORD    current line type
  836.  0Ch    WORD    current replacement rule
  837.  0Eh    WORD    current pen color
  838.  10h    WORD    current leftmost column of clip region
  839.  12h    WORD    current rightmost column of clip region
  840.  14h    WORD    current topmost row of clip region
  841.  16h    WORD    current bottommost row of clip region
  842.  18h    WORD    current column of logical origin
  843.  1Ah    WORD    current row of logical origin
  844.  1Ch  8 BYTEs    current fill mask
  845. ----------5F03-------------------------------
  846. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  847.     AH = 03h
  848.     CX = column
  849.     DX = row
  850. SeeAlso: AH=04h
  851. ----------5F04-------------------------------
  852. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  853.     AH = 04h
  854.     CX = left-most column
  855.     DX = top-most row
  856.     SI = right-most column
  857.     DI = bottom-most row
  858. SeeAlso: AH=03h
  859. ----------5F05-------------------------------
  860. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  861.     AH = 05h
  862.     AL = fill type
  863.         00h outline, using current line type and color
  864.         01h solid, using current color
  865.         02h pattern, using current fill mask and color
  866.     DX,CX = row,column of other corner of rectangle
  867. Note:    the rectangle is drawn starting at the current pen position
  868. SeeAlso: AH=01h,AH=06h,AH=07h
  869. ----------5F06-------------------------------
  870. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  871.     AH = 06h
  872.     DX,CX = row,column of end point
  873. Note:    the line is drawn starting at the current pen position
  874. SeeAlso: AH=05h,AH=07h
  875. ----------5F07-------------------------------
  876. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  877.     AH = 07h
  878.     DX,CX = row,column of point
  879. Note:    also sets pen position to the specified point
  880. SeeAlso: AH=06h,AH=08h,AH=0Ch
  881. ----------5F08-------------------------------
  882. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  883.     AH = 08h
  884.     DX,CX = row,column of new pen position
  885. SeeAlso: AH=07h,AH=09h
  886. ----------5F09-------------------------------
  887. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  888.     AH = 09h
  889.     AL = new color (00h = white, 01h = black)
  890. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  891. ----------5F0A-------------------------------
  892. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  893.     AH = 0Ah
  894.     AL = new replacement rule
  895.         00h force
  896.         01h AND
  897.         02h OR
  898.         03h XOR
  899. SeeAlso: AH=01h,AH=09h,AH=0Bh
  900. ----------5F0B-------------------------------
  901. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  902.     AH = 0Bh
  903.     CX = new line type
  904. Note:    the line type specifies 16 bits which are repeated over and over while
  905.       drawing the pixels of a line
  906. SeeAlso: AH=09h,AH=0Ah
  907. ----------5F0C-------------------------------
  908. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  909.     AH = 0Ch
  910.     DX,CX = row,column of pixel to read
  911. Return: AX = pixel color
  912. SeeAlso: AH=07h
  913. ----------5F0D-------------------------------
  914. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  915.     AH = 0Dh
  916.     DX,CX = row,column of first corner
  917.     BP,SI = row,column of second corner
  918.     ES:DI -> image buffer (see below)
  919. Note:    the specified corners are included in the saved image
  920. SeeAlso: AH=0Eh
  921.  
  922. Format of image buffer:
  923. Offset    Size    Description
  924.  00h    WORD    number of planes (always 01h on HP 95LX)
  925.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  926.  04h    WORD    image width in pixels
  927.  06h    WORD    image height in pixels
  928.  08h  N BYTEs    image data
  929.         requires (WIDTH+7)/8 * HEIGHT bytes
  930. ----------5F0E-------------------------------
  931. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  932.     AH = 0Eh
  933.     AL = replacement rule
  934.         bit 2: invert image before applying rule
  935.         bits 1-0:  00 force
  936.                01 AND
  937.                10 OR
  938.                11 XOR
  939.     DX,CX = row,column of top left corner
  940.     ES:DI -> image buffer (see AH=0Dh)
  941. Note:    if the specified image does not fit completely on the screen, this call
  942.       does nothing
  943. SeeAlso: AH=0Dh
  944. ----------5F0F-------------------------------
  945. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  946.     AH = 0Fh
  947.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  948.     DX,CX = row,column of first character's top left corner
  949.     ES:DI -> ASCIZ text
  950. ----------60---------------------------------
  951. INT 60 - reserved for user interrupt
  952. ----------60---------------------------------
  953. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  954.    The "Zero Bug" virus hooks this vector.  It considers itself installed if
  955.    offset 103h of the handler's segment contains the bytes "ZE"
  956. SeeAlso: INT 32,INT 61"SEMTEX"
  957. ----------60---------------------------------
  958. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  959. SeeAlso: INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  960. Notes:    this vector stores the first four bytes of the parameter table for
  961.       hard disk 0
  962.     these vectors are used by the following Adaptec controllers:
  963.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  964.     these vectors are NOT used by the following Adaptec controllers:
  965.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  966. ----------60---------------------------------
  967. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  968.    supplies a number of subfunctions which perform such functions as drawing
  969.    boxes and menus, and provide input line editing
  970. SeeAlso: INT 61"Atari"
  971. ----------60---------------------------------
  972. INT 60 - PC-IPC API
  973.     STACK:    DWORD    pointer to parameter block (see below)
  974. Return: STACK:    unchanged
  975. Notes:    PC-IPC is a shareware TSR by Donnelly Software Engineering which allows
  976.       communication between independent programs
  977.     INT 60 is the default, any interrupt vector may be used by specifying
  978.       the vector on the commandline
  979.  
  980. Format of parameter block:
  981. Offset    Size    Description
  982.  00h    WORD    caller's ID
  983.  02h    WORD    to ID
  984.  04h    WORD    command code (see below)
  985.  06h    WORD    returned status
  986.         bit 0: unused
  987.         bit 1: IPC enabled
  988.         bit 2: IPC installed
  989.         bit 3: error
  990.         bit 4: message(s) available
  991.  08h    WORD    returned error code (see below)
  992.  0Ah    WORD    size of data
  993.  0Ch    DWORD    pointer to data buffer
  994.  
  995. Values of command code:
  996.  01h "IPC_CMND_INQUIRE"     inquire current status
  997.         set status field, writes WORD to data buffer containing free
  998.           message space in bytes, and sets the "size" field to the
  999.           number of messages waiting
  1000.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  1001.         ignored unless called with the same ID that disabled PC-IPC
  1002.  03h "IPC_CMND_DISABLE" disable PC-IPC
  1003.  04h "IPC_CMND_INSTALL" reset PC-IPC
  1004.  06h "IPC_CMND_RDATA"    read data
  1005.         returns first message in data buffer, sets "size" to message
  1006.           length and "to ID" field to sender's ID
  1007.         if no messages available, bit 4 of status is cleared and "size"
  1008.           is set to zero
  1009.  07h "IPC_CMND_SDATA"    send data
  1010.  08h "IPC_CMND_REQID"    require user ID
  1011.         create a new recognized ID and return in "caller's ID" field
  1012.  09h "IPC_CMND_DELID"    cancel user ID
  1013.         delete caller's ID from pool of recognized IDs
  1014.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  1015.  0Bh "IPC_CMND_VERS"    get PC-IPC version 
  1016.         string representing version returned in data buffer, "size"
  1017.           field set to length of string
  1018.  
  1019. Values for error code:
  1020.  00h    no error
  1021.  01h    invalid command or parameter
  1022.  02h    only process 0 can install/reset IPC
  1023.  03h    process can not install/reset IPC
  1024.  04h    IPC is not enabled
  1025.  05h    process can not disable IPC
  1026.  06h    invalid destination process ID
  1027.  07h    invalid sending process ID
  1028.  08h    invalid data destination
  1029.  09h    no more process IDs available
  1030.  0Ah    can not relinquish that process ID
  1031.  0Bh    message space is full
  1032.  0Ch    IPC is not installed
  1033. ----------60---------------------------------
  1034. INT 60 - Tangram Arbiter - API
  1035. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  1036.     identified by string "@ARB_API" immediately following a short jump at
  1037.       the interrupt handler address
  1038.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  1039.       IBM mainframe
  1040. ----------60---------------------------------
  1041. INT 60 U - INTRSPY/CMDSPY API
  1042. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  1043.     The installation check is to 
  1044.       a) determine that the handler is an IRET instruction
  1045.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  1046.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  1047.       its entry point.
  1048.     INTRSPY is a script-driven debugger included with the book
  1049.       _Undocumented_DOS_.
  1050.  
  1051. Call INTRSPY entry point with:
  1052.     AH = function
  1053.         00h ???
  1054.         01h set current directory (for use in reporting)
  1055.         ES:DI -> counted string containing directory name (max 79 char)
  1056.         02h set name of script file
  1057.         ES:DI -> counted string containing file name (max 79 chars)
  1058.         03h set script arguments
  1059.         ES:DI -> counted string containing arguments (max 79 chars)
  1060.         04h get directory set with function 01h
  1061.         ES:DI -> 80-byte buffer for directory name
  1062.         05h get name of script file
  1063.         ES:DI -> 80-byte buffer for script filename
  1064.         06h get script arguments
  1065.         ES:DI -> 80-byte buffer for script arguments
  1066.         07h get ???
  1067.         CL = 00h-15h specifies what to get
  1068.         ES:DI -> WORD to be set with desired value on return
  1069.         08h get ???
  1070.         ES:DI -> WORD to be set with returned value
  1071.         09h get ???
  1072.         ES:DI -> WORD to be set with returned value
  1073.         0Bh store code for interrupt handler???
  1074.         ES:DI -> data
  1075.         CX = number of bytes
  1076.         0Ch ???
  1077.         ES:DI -> ???
  1078.         0Dh get ???
  1079.         ES:DI -> BYTE to be set with returned value
  1080.         0Eh set ??? flag
  1081.         0Fh clear ??? flag
  1082.         10h ???
  1083.         Return: AL = 04h or 05h if failed
  1084.         11h ???
  1085.         Return: AL = 05h if failed
  1086.         12h get ???
  1087.         ES:DI -> buffer
  1088.         Return: CX = number of bytes returned in buffer
  1089.         13h ???
  1090. Return: AH = 00h
  1091.     AL = status
  1092.         00h successful
  1093.         01h invalid function
  1094.         02h ???
  1095.         03h ???
  1096.         04h ???
  1097.         05h ???
  1098. ----------60---------------------------------
  1099. INT 60 U - PC/370 v4.2 - ???
  1100.     ???
  1101. Return: ???
  1102. Notes:    PC/370 is an IBM 370 emulator by Donald S. Higgins
  1103.     this is the default interrupt, however the documentation includes
  1104.       instructions for patching the system for another interrupt
  1105. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  1106. ----------60---------------------------------
  1107. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  1108. SeeAlso: INT 61"JPI"
  1109. ----------60---------------------------------
  1110. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  1111. Notes:    The handler for the interrupt will start with a 3-byte jump 
  1112.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  1113.       terminating NUL is significant).
  1114.     To find the interrupt being used by the driver, an application should
  1115.       scan through interrupt vectors 60h to 80h (20h through FFh for
  1116.       v1.10+ of the specification) until it finds one with the "PKT DRVR"
  1117.       string.
  1118.     AH values of 80h to FFh have been reserved for user-defined additions.
  1119. ----------60----DI0100-----------------------
  1120. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  1121.     DI = 0100h
  1122.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1123.         DWORD    pointer to event record (see below)
  1124. Return: event record filled
  1125.     STACK unchanged
  1126. Note:    this call will timeout after about 500ms
  1127. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  1128.  
  1129. Format of event record:
  1130. Offset    Size    Description
  1131.  00h    WORD    event type
  1132.         00h no events
  1133.         01h keystroke available
  1134.         02h Ctrl-Break
  1135.         03h reactivation (always follows deactivation event)
  1136.         04h about to deactivate (sleep)
  1137.             next get-event call will not return until reactivated
  1138.         05h forced application termination
  1139.         06h 1-2-3 bridge service request (only given to     1-2-3)
  1140.         07h request to grow
  1141.         08h request to shrink
  1142.         09h application's alarm expired
  1143.         0Ah daily chance to set an alarm
  1144.         0Bh system date or time has been changed
  1145.  02h    WORD    ASCII code page 850 translation of keystroke
  1146.         or grow/shrink amount in paragraphs or 0000h if error
  1147.         or alarm expiration data
  1148.  04h    BYTE    scan code from BIOS
  1149.  05h    BYTE    shift key states at time keystroke is retrieved
  1150.  06h    WORD    LICS translation of keystroke
  1151.  08h    BYTE    function key number (1-2-3 only)
  1152.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  1153.         or pointer to time change structure (see below)
  1154. Note:    if the System Manager is waiting the conclusion of a bridge service
  1155.       or grow/shrink call and the event type field is set to FFFFh on
  1156.       entry, the SysMgr will resume
  1157.  
  1158. Format of time change structure:
  1159. Offset    Size    Description
  1160.  00h    WORD    old year
  1161.  02h    BYTE    old month
  1162.  03h    BYTE    old date
  1163.  04h    BYTE    old day
  1164.  05h    BYTE    old hour
  1165.  06h    BYTE    old minute
  1166.  07h    BYTE    old second
  1167.  08h    BYTE    old hundredth of a second
  1168.  09h  9 BYTEs    new time in same format as old time
  1169. ----------60----DI0101-----------------------
  1170. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  1171.     DI = 0101h
  1172.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1173.         DWORD pointer to event record (INT 60/DI=0100h)
  1174. Return: event record filled
  1175.     STACK unchanged
  1176. Note:    this call returns immediately if no event is available
  1177. SeeAlso: INT 60/DI=0100h
  1178. ----------60----DI0102-----------------------
  1179. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  1180.     DI = 0102h
  1181.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1182. Return: ???
  1183.     STACK unchanged
  1184. ----------60----DI0104-----------------------
  1185. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  1186.     DI = 0104h
  1187.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1188.         DWORD pointer to bridge record (see below)
  1189. Return: ???
  1190.     STACK unchanged
  1191.  
  1192. Format of bridge record:
  1193. Offset    Size    Description
  1194.  00h    WORD    function code
  1195.         00h test
  1196.         01h get range
  1197.         02h "GETRANGE_ADDR"
  1198.         03h "SETRANGE_ADDR"
  1199.         04h "GETRANGE_DATA"
  1200.         05h "SETRANGE_DATA"
  1201.         06h recalculate
  1202.         07h get cursor
  1203.         08h set cursor
  1204.         09h redisplay
  1205.         0Ah cell type
  1206.         0Bh "CALCTYPE"
  1207.  02h    WORD    return code from 1-2-3
  1208.  04h 16 BYTEs    ASCII range name
  1209.  14h    WORD    start column of range
  1210.  16h    WORD    start row of range
  1211.  18h    WORD    end column of range
  1212.  1Ah    WORD    end row of range
  1213.  1Ch    WORD    order in which data is placed in buffer
  1214.  1Eh    WORD    buffer size
  1215.  20h    WORD    offset within bridge record's segment of buffer for cell data
  1216. ----------60----DI0105-----------------------
  1217. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  1218.     DI = 0105h
  1219.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1220. Return: ???
  1221.     STACK unchanged
  1222. ----------60----DI0106-----------------------
  1223. INT 60 u - HP 95LX System Manager - YIELD CPU
  1224.     DI = 0106h
  1225.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1226.         DWORD pointer to ???
  1227. Return: ???
  1228.     STACK unchanged
  1229. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  1230. ----------60----DI0107-----------------------
  1231. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  1232.     DI = 0107h
  1233.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1234.         DWORD pointer to ???
  1235. Return: ???
  1236.     STACK unchanged
  1237. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1238. ----------60----DI0200-----------------------
  1239. INT 60 u - HP 95LX System Manager - SETUP MENU
  1240.     DI = 0200h
  1241.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1242.         DWORD    pointer to menu data (see below)
  1243.         DWORD    pointer to ???
  1244.         WORD    number of items on menu???
  1245.         WORD    ???
  1246.         DWORD    pointer to ???
  1247.         WORD    ???
  1248.         DWORD    pointer to ???
  1249. Return: ???
  1250.     STACK unchanged
  1251. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  1252.  
  1253. Format of menu data:
  1254. Offset    Size    Description
  1255.  00h 80 BYTEs    first line of menu text
  1256.  50h 80 BYTEs    second line of menu text
  1257.  A0h 80 BYTEs    third line of menu text
  1258.  F0h    WORD    number of keywords
  1259.  F2h    WORD    index of currently highlighted keyword or FFFFh
  1260.  F4h    WORD    single prompt on top line if nonzero
  1261.  F6h 20 BYTEs    which line each of 20 keywords is located on
  1262. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  1263. 11Eh 20 BYTEs    length of each of 20 keywords
  1264. 132h 20 BYTEs    first letter of each of 20 keywords
  1265. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  1266. ----------60----DI0201-----------------------
  1267. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  1268.     DI = 0201h
  1269.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1270.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1271. Return: ???
  1272.     STACK unchanged
  1273. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  1274. ----------60----DI0202-----------------------
  1275. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  1276.     DI = 0202h
  1277.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1278.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1279. Return: ???
  1280.     STACK unchanged
  1281. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  1282. ----------60----DI0203-----------------------
  1283. INT 60 u - HP 95LX System Manager - REMOVE MENU
  1284.     DI = 0203h
  1285.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1286.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1287. Return: ???
  1288.     STACK unchanged
  1289. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  1290. ----------60----DI0204-----------------------
  1291. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  1292.     DI = 0204h
  1293.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1294.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1295.         WORD    keystroke
  1296.         DWORD    pointer to WORD to receive selection number
  1297. Return: buffer for selection number filled with index of selected menu item or
  1298.       FFFFh if no final selection yet
  1299.     STACK unchanged
  1300. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  1301. ----------60----DI0205-----------------------
  1302. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  1303.     DI = 0205h
  1304.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1305.         DWORD    pointer to file menu structure (see below)
  1306.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1307.         DWORD    pointer to wildcard filespec for initial file list
  1308.         WORD    row???
  1309.         WORD    column???
  1310. Return: ???
  1311.     STACK unchanged
  1312. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  1313.  
  1314. Format of file menu structure:
  1315. Offset    Size    Description
  1316.  00h    DWORD    pointer to ASCIZ base directory name
  1317.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  1318.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see below)
  1319.  0Ch    WORD    size of file list workspace in bytes
  1320.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  1321.  10h    WORD    starting column
  1322.  12h    WORD    number of lines
  1323.  14h    WORD    number of columns
  1324.  16h    WORD    number of files displayed on each line
  1325. ---the remaining fields are initialized by the System Manager---
  1326.  18h    WORD    0000h if first edit character, else multiline
  1327.  1Ah    WORD    number of files in file list
  1328.  1Ch    WORD    max files workspace has room for
  1329.  1Eh    WORD    file at top of list
  1330.  20h    WORD    index of file to highlight
  1331.  22h    WORD    index of file to unhighlight
  1332.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  1333.  
  1334. Format of file list workspace entry:
  1335. Offset    Size    Description
  1336.  00h    BYTE    file attributes
  1337.  01h    WORD    file time (see INT 21/AX=5700h)
  1338.  03h    WORD    file date (see INT 21/AX=5700h)
  1339.  05h    DWORD    file size
  1340.  09h 13 BYTEs    ASCIZ filename
  1341. ----------60----DI0206-----------------------
  1342. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  1343.     DI = 0206h
  1344.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1345.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  1346.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1347. Return: ???
  1348.     STACK unchanged
  1349. SeeAlso: INT 60/DI=0205h
  1350. ----------60----DI0207-----------------------
  1351. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  1352.     DI = 0207h
  1353.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1354.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  1355.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1356.         WORD    keystroke
  1357. Return: AX = status
  1358.         0000h keystroke processed, call INT 60/DI=0206h to refresh menu
  1359.         0001h redisplay application area before refreshing menu
  1360.         0002h user confirmed selection, filename is in edit record's buffer
  1361.         0003h user aborted menu
  1362.         FFFBh bad filename
  1363.         FFFCh bad directory
  1364.         FFFDh bad drive
  1365.         FFFEh unknown keystroke
  1366.         FFFFh keystroke known but invalid in current context
  1367.     STACK unchanged
  1368. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  1369. ----------60----DI0208-----------------------
  1370. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  1371.     DI = 0208h
  1372.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1373.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  1374.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1375. Return: ???
  1376.     STACK unchanged
  1377. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  1378. ----------60----DI0300-----------------------
  1379. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  1380.     DI = 0300h
  1381.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1382.         WORD    starting row (-3 is topmost, 0 is first user line)
  1383.         WORD    starting column
  1384.         DWORD    pointer to string
  1385.         WORD    length of string
  1386.         WORD    display style: 0000h normal, 0001h reverse video
  1387.         WORD    "OSTYLE"
  1388. Return: ???
  1389.     STACK unchanged
  1390. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  1391. ----------60----DI0301-----------------------
  1392. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  1393.     DI = 0301h
  1394.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1395.         WORD    starting row (-3 is topmost, 0 is first user line)
  1396.         WORD    starting column
  1397.         WORD    number of rows
  1398.         WORD    number of columns
  1399. Return: ???
  1400.     STACK unchanged
  1401. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  1402. ----------60----DI0302-----------------------
  1403. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  1404.     DI = 0302h
  1405.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1406.         WORD    starting row???
  1407.         WORD    starting column???
  1408.         WORD    height of scroll region???
  1409.         WORD    width of scroll region???
  1410.         WORD    number of lines to scroll region???
  1411. Return: ???
  1412.     STACK unchanged
  1413. SeeAlso: INT 60/DI=0301h
  1414. ----------60----DI0303-----------------------
  1415. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  1416.     DI = 0303h
  1417.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1418.         WORD    ???
  1419.         WORD    ???
  1420.         WORD    ???
  1421.         WORD    ???
  1422.         DWORD    pointer to ???
  1423. Return: ???
  1424.     STACK unchanged
  1425. ----------60----DI0304-----------------------
  1426. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  1427.     DI = 0304h
  1428.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1429.         DWORD    pointer to ???
  1430.         WORD    ???
  1431. Return: ???
  1432.     STACK unchanged
  1433. ----------60----DI0305-----------------------
  1434. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  1435.     DI = 0305h
  1436.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1437.         WORD    ???
  1438.         WORD    ???
  1439.         DWORD    pointer to ???
  1440.         WORD    ???
  1441. Return: ???
  1442.     STACK unchanged
  1443. ----------60----DI0307-----------------------
  1444. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  1445.     DI = 0307h
  1446.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1447.         WORD    ???
  1448.         WORD    ???
  1449.         WORD    ???
  1450. Return: ???
  1451.     STACK unchanged
  1452. ----------60----DI0308-----------------------
  1453. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  1454.     DI = 0308h
  1455.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1456. Return: ???
  1457.     STACK unchanged
  1458. ----------60----DI0309-----------------------
  1459. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  1460.     DI = 0309h
  1461.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1462.         WORD    new mode
  1463. Return: ???
  1464.     STACK unchanged
  1465. ----------60----DI030A-----------------------
  1466. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  1467.     DI = 030Ah
  1468.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1469. Return: ???
  1470.     STACK unchanged
  1471. ----------60----DI030B-----------------------
  1472. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  1473.     DI = 030Bh
  1474.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1475.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  1476.         WORD    column
  1477. Return: ???
  1478.     STACK unchanged
  1479. Note:    cursor is hidden if the specified position is not on the physical
  1480.       display
  1481. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1482. ----------60----DI0400-----------------------
  1483. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  1484.     DI = 0400h
  1485.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1486.         DWORD    pointer to edit record (see below)
  1487.         DWORD    pointer to string to be edited
  1488.         WORD    initial length of string being edited
  1489.         WORD    maximum length of edited string
  1490.         WORD    row of edit field
  1491.         WORD    leftmost column of edit field
  1492. Return: ???
  1493.     STACK unchanged
  1494.  
  1495. Format of edit record:
  1496. Offset    Size    Description
  1497.  00h    WORD    current length of edit buffer
  1498.  02h    BYTE    flag for special processing on first character
  1499.  03h    BYTE    flags
  1500.         bit 0: tab handling
  1501.  04h    WORD    editing in prompt window?
  1502.  06h    DWORD    pointer to top line of prompt window message
  1503.  0Ah    WORD    length of top line of prompt
  1504.  0Ch    DWORD    pointer to second line of prompt window message
  1505.  10h    WORD    length of second line of prompt
  1506.  12h 80 BYTEs    workspace for editing
  1507.  62h  2 WORDs    line array needed for multi-line editing
  1508.  66h 36 BYTEs    multi-line edit record (see below)
  1509.  8Ah    WORD    displayable columns
  1510.  
  1511. Format of multi-line edit record:
  1512. Offset    Size    Description
  1513.  00h    DWORD    pointer to user-supplied edit buffer
  1514.  04h    WORD    length of edit buffer
  1515.  06h    WORD    current cursor position
  1516.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  1517.  0Ah    WORD    starting column of edit area
  1518.  0Ch    WORD    height of edit area
  1519.  0Eh    WORD    width of edit area
  1520.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  1521.  12h    WORD    number of rows displayable
  1522.  14h    BYTE    cursor column
  1523.  15h    BYTE    01h if buffer has been modified
  1524.  16h    BYTE    first displayable column (ticker fields only)
  1525.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  1526.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  1527.           area is high)
  1528.  1Ch    BYTE    currently marking?
  1529.  1Dh    BYTE    flag
  1530.  1Eh    WORD    offset of mark start
  1531.  20h    WORD    offset of mark end (inclusive)
  1532.  22h    WORD    displayable columns
  1533. ----------60----DI0401-----------------------
  1534. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  1535.     DI = 0401h
  1536.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1537.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1538.         DWORD    pointer to string to edit
  1539.         WORD    initial length of string being edited
  1540.         WORD    maximum length of edited string
  1541.         DWORD    pointer to first line of prompt
  1542.         WORD    length of first line
  1543.         DWORD    pointer to second line of prompt
  1544.         WORD    length of second line
  1545. Return: ???
  1546.     STACK unchanged
  1547. ----------60----DI0402-----------------------
  1548. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  1549.     DI = 0402h
  1550.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1551.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1552. Return: ???
  1553.     STACK unchanged
  1554. ----------60----DI0403-----------------------
  1555. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  1556.     DI = 0403h
  1557.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1558.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1559.         WORD    keystroke
  1560.         DWORD    pointer to WORD buffer for result code
  1561. Return: result code buffer filled with 0001h if editing complete
  1562.     STACK unchanged
  1563. ----------60----DI0404-----------------------
  1564. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  1565.     DI = 0404h
  1566.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1567.         DWORD    pointer to ???
  1568.         WORD    ???
  1569.         WORD    ???
  1570.         WORD    ???
  1571.         WORD    ???
  1572.         DWORD    pointer to ???
  1573.         WORD    ???
  1574.         WORD    ???
  1575.         WORD    ???
  1576.         DWORD    pointer to ???
  1577. Return: ???
  1578.     STACK unchanged
  1579. ----------60----DI0405-----------------------
  1580. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  1581.     DI = 0405h
  1582.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1583.         DWORD    pointer to ???
  1584. Return: ???
  1585.     STACK unchanged
  1586. ----------60----DI0406-----------------------
  1587. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  1588.     DI = 0406h
  1589.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1590.         DWORD    pointer to ???
  1591.         WORD    ???
  1592. Return: ???
  1593.     STACK unchanged
  1594. ----------60----DI0407-----------------------
  1595. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  1596.     DI = 0407h
  1597.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1598.         DWORD    pointer to ???
  1599.         DWORD    pointer to ???
  1600. Return: ???
  1601.     STACK unchanged
  1602. ----------60----DI0408-----------------------
  1603. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  1604.     DI = 0408h
  1605.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1606.         DWORD    pointer to ???
  1607. Return: ???
  1608.     STACK unchanged
  1609. ----------60----DI0409-----------------------
  1610. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  1611.     DI = 0409h
  1612.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1613.         DWORD    pointer to ???
  1614. Return: ???
  1615.     STACK unchanged
  1616. ----------60----DI040A-----------------------
  1617. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  1618.     DI = 040Ah
  1619.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1620.         DWORD    pointer to ???
  1621. Return: ???
  1622.     STACK unchanged
  1623. ----------60----DI040B-----------------------
  1624. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  1625.     DI = 040Bh
  1626.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1627.         DWORD    pointer to ???
  1628.         DWORD    pointer to ???
  1629.         WORD    ???
  1630. Return: ???
  1631.     STACK unchanged
  1632. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1633. ----------60----DI0500-----------------------
  1634. INT 60 u - HP 95LX System Manager - OPEN FILE
  1635.     DI = 0500h
  1636.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1637.         DWORD    pointer to file state record (see below)
  1638.         DWORD    pointer to filename
  1639.         WORD    length of filename
  1640.         WORD    ???
  1641.         WORD    suppress buffering if nonzero
  1642. Return: AX = status
  1643.     STACK unchanged
  1644. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  1645.  
  1646. Format of file state record:
  1647. Offset    Size    Description
  1648.  00h    WORD    DOS file handle
  1649.  02h    WORD    flags
  1650.         bit 0: buffer contents valid
  1651.         bit 1: buffer is dirty and must be written
  1652.         bit 2: unbuffered I/O
  1653.         bit 3: file is a character device
  1654.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  1655.  08h    DWORD    DOS file offset of start of buffer
  1656.  0Ch    DWORD    effective file offset as seen by caller
  1657.  10h    WORD    number of bytes in file buffer
  1658. ---buffered I/O only---
  1659.  12h 512 BYTEs    file buffer
  1660. ----------60----DI0501-----------------------
  1661. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  1662.     DI = 0501h
  1663.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1664.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1665.         DWORD    pointer to filename
  1666.         WORD    length of filename
  1667.         WORD    ???
  1668.         WORD    suppress buffering if nonzero
  1669. Return: AX = status
  1670.     STACK unchanged
  1671. SeeAlso: INT 60/DI=0500h
  1672. ----------60----DI0502-----------------------
  1673. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  1674.     DI = 0502h
  1675.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1676.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1677.         DWORD    pointer to filename
  1678.         WORD    length of filename
  1679.         WORD    ???
  1680.         WORD    suppress buffering if nonzero
  1681. Return: AX = status
  1682.     STACK unchanged
  1683. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  1684. ----------60----DI0503-----------------------
  1685. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  1686.     DI = 0503h
  1687.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1688.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1689.         DWORD    pointer to filename
  1690.         WORD    length of filename
  1691.         WORD    ???
  1692.         WORD    suppress buffering if nonzero
  1693. Return: AX = status
  1694.     STACK unchanged
  1695. SeeAlso: INT 60/DI=0502h
  1696. ----------60----DI0504-----------------------
  1697. INT 60 u - HP 95LX System Manager - READ FROM FILE
  1698.     DI = 0504h
  1699.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1700.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1701.         DWORD    pointer to data buffer
  1702.         WORD    number of bytes to read
  1703.         DWORD    pointer to WORD in which to return actual bytes read
  1704. Return: ???
  1705.     STACK unchanged
  1706. SeeAlso: INT 60/DI=0505h
  1707. ----------60----DI0505-----------------------
  1708. INT 60 - HP 95LX System Manager - WRITE TO FILE
  1709.     DI = 0505h
  1710.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1711.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1712.         DWORD    pointer to data
  1713.         WORD    length of data
  1714. Return: AX = status
  1715.     STACK unchanged
  1716. SeeAlso: INT 60/DI=0504h
  1717. ----------60----DI0506-----------------------
  1718. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  1719.     DI = 0506h
  1720.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1721.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1722.         WORD    ???
  1723.         WORD    ???
  1724. Return: ???
  1725.     STACK unchanged
  1726. SeeAlso: INT 60/DI=0507h
  1727. ----------60----DI0507-----------------------
  1728. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  1729.     DI = 0507h "M_TELL"
  1730.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1731.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1732.         DWORD    pointer to DWORD buffer for file position???
  1733. Return: ???
  1734.     STACK unchanged
  1735. SeeAlso: INT 60/DI=0506h
  1736. ----------60----DI0508-----------------------
  1737. INT 60 u - HP 95LX System Manager - CLOSE FILE
  1738.     DI = 0508h
  1739.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1740.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1741. Return: ???
  1742.     STACK unchanged
  1743. SeeAlso: INT 60/DI=0500h
  1744. ----------60----DI0509-----------------------
  1745. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  1746.     DI = 0509h
  1747.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1748.         DWORD    pointer to ???
  1749.         DWORD    pointer to ???
  1750.         WORD    ???
  1751.         WORD    ???
  1752. Return: ???
  1753.     STACK unchanged
  1754. ----------60----DI050A-----------------------
  1755. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  1756.     DI = 050Ah
  1757.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1758.         DWORD    pointer to ???
  1759.         DWORD    pointer to ???
  1760. Return: ???
  1761.     STACK unchanged
  1762.  
  1763. Format of pattern match control block:
  1764. Offset    Size    Description
  1765.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  1766.  2Bh 80 BYTEs    full path name
  1767.  7Bh    BYTE    offset of last component of filename
  1768.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  1769. ----------60----DI050B-----------------------
  1770. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  1771.     DI = 050Bh
  1772.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1773.         DWORD    pointer to ???
  1774.         WORD    ???
  1775.         WORD    ???
  1776.         DWORD    pointer to ???
  1777. Return: ???
  1778.     STACK unchanged
  1779.  
  1780. Values returned:
  1781.  0000h nonexistent
  1782.  0001h file
  1783.  0002h directory
  1784.  0003h character device
  1785. ----------60----DI050C-----------------------
  1786. INT 60 u - HP 95LX System Manager - DELETE FILE
  1787.     DI = 050Ch "M_DELETE"
  1788.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1789.         DWORD    pointer to ???
  1790.         WORD    ???
  1791.         WORD    ???
  1792. Return: ???
  1793.     STACK unchanged
  1794. ----------60----DI050D-----------------------
  1795. INT 60 u - HP 95LX System Manager - RENAME FILE
  1796.     DI = 050Dh
  1797.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1798.         DWORD    pointer to ???
  1799.         WORD    ???
  1800.         WORD    ???
  1801.         DWORD    pointer to ???
  1802.         WORD    ???
  1803.         WORD    ???
  1804. Return: ???
  1805.     STACK unchanged
  1806. ----------60----DI050E-----------------------
  1807. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  1808.     DI = 050Eh
  1809.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1810.         WORD    ???
  1811.         DWORD    pointer to ???
  1812.         DWORD    pointer to ???
  1813. Return: ???
  1814.     STACK unchanged
  1815. ----------60----DI050F-----------------------
  1816. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  1817.     DI = 050Fh
  1818.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1819.         DWORD    pointer to ???
  1820.         WORD    ???
  1821. Return: ???
  1822.     STACK unchanged
  1823. ----------60----DI0510-----------------------
  1824. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  1825.     DI = 0510h
  1826.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1827.         DWORD    pointer to ???
  1828.         DWORD    pointer to ???
  1829. Return: ???
  1830.     STACK unchanged
  1831. ----------60----DI0511-----------------------
  1832. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  1833.     DI = 0511h
  1834.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1835.         DWORD    pointer to ???
  1836.         WORD    ???
  1837.         WORD    ???
  1838. Return: ???
  1839.     STACK unchanged
  1840. ----------60----DI0512-----------------------
  1841. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  1842.     DI = 0512h
  1843.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1844.         DWORD    pointer to ???
  1845.         WORD    ???
  1846.         WORD    ???
  1847. Return: ???
  1848.     STACK unchanged
  1849. ----------60----DI0513-----------------------
  1850. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  1851.     DI = 0513h
  1852.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1853.         DWORD    pointer to ??? buffer for current drive
  1854. Return: ???
  1855.     STACK unchanged
  1856. ----------60----DI0514-----------------------
  1857. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  1858.     DI = 0514h
  1859.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1860.         WORD    new drive
  1861. Return: ???
  1862.     STACK unchanged
  1863. ----------60----DI0515-----------------------
  1864. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  1865.     DI = 0515h
  1866.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1867.         DWORD    pointer to ???
  1868.         DWORD    pointer to ???
  1869. Return: ???
  1870.     STACK unchanged
  1871. ----------60----DI0516-----------------------
  1872. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  1873.     DI = 0516h
  1874.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1875.         DWORD    pointer to ???
  1876. Return: ???
  1877.     STACK unchanged
  1878. ----------60----DI0517-----------------------
  1879. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  1880.     DI = 0517h
  1881.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1882.         DWORD    pointer to ???
  1883.         WORD    ???
  1884.         WORD    ???
  1885.         DWORD    pointer to ??? buffer for file's attributes???
  1886. Return: ???
  1887.     STACK unchanged
  1888. ----------60----DI0518-----------------------
  1889. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  1890.     DI = 0518h
  1891.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1892.         DWORD    pointer to ???
  1893.         WORD    ???
  1894.         WORD    ???
  1895.         WORD    new attributes???
  1896. Return: ???
  1897.     STACK unchanged
  1898. ----------60----DI0519-----------------------
  1899. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  1900.     DI = 0519h
  1901.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1902.         DWORD    pointer to ???
  1903.         DWORD    pointer to ???
  1904.         WORD    ???
  1905.         WORD    ???
  1906.         WORD    ???
  1907.         WORD    ???
  1908.         WORD    ???
  1909. Return: ???
  1910.     STACK unchanged
  1911. ----------60----DI051A-----------------------
  1912. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  1913.     DI = 051Ah
  1914.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1915.         DWORD    pointer to ???
  1916.         DWORD    pointer to ???
  1917. Return: ???
  1918.     STACK unchanged
  1919. ----------60----DI051B-----------------------
  1920. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  1921.     DI = 051Bh
  1922.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1923.         DWORD    pointer to ???
  1924.         DWORD    pointer to ???
  1925. Return: ???
  1926.     STACK unchanged
  1927. ----------60----DI051C-----------------------
  1928. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  1929.     DI = 051Ch
  1930.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1931.         DWORD    pointer to ???
  1932.         WORD    ???
  1933. Return: ???
  1934.     STACK unchanged
  1935. ----------60----DI0600-----------------------
  1936. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  1937.     DI = 0600h
  1938.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1939. Return: ???
  1940.     STACK unchanged
  1941. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  1942. ----------60----DI0601-----------------------
  1943. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  1944.     DI = 0601h
  1945.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1946. Return: never
  1947.     STACK unchanged
  1948. SeeAlso: INT 21/AH=4Ch,INT 60/DI=0600h
  1949. ----------60----DI0602-----------------------
  1950. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  1951.     DI = 0602h
  1952.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1953. Return: ???
  1954.     STACK unchanged
  1955. SeeAlso: INT 15/AX=101Bh,INT 60/DI=0603h
  1956. ----------60----DI0603-----------------------
  1957. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  1958.     DI = 0603h
  1959.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1960. Return: ???
  1961.     STACK unchanged
  1962. SeeAlso: INT 15/AX=101Ch,INT 60/DI=0602h
  1963. ----------60----DI0604-----------------------
  1964. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  1965.     DI = 0604h
  1966.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1967.         DWORD    pointer to ???
  1968.         WORD    ???
  1969.         WORD    ???
  1970.         DWORD    pointer to ???
  1971. Return: ???
  1972.     STACK unchanged
  1973. ----------60----DI0605-----------------------
  1974. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  1975.     DI = 0605h
  1976.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1977. Return: ???
  1978.     STACK unchanged
  1979. ----------60----DI0606-----------------------
  1980. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  1981.     DI = 0606h
  1982.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1983. Return: ???
  1984.     STACK unchanged
  1985. ----------60----DI0607-----------------------
  1986. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  1987.     DI = 0607h
  1988.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1989.         DWORD    pointer to ???
  1990.         WORD    ???
  1991.         DWORD    pointer to ???
  1992.         WORD    ???
  1993. Return: ???
  1994.     STACK unchanged
  1995. ----------60----DI0608-----------------------
  1996. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  1997.     DI = 0608h
  1998.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1999.         DWORD    pointer to ???
  2000. Return: ???
  2001.     STACK unchanged
  2002. ----------60----DI0609-----------------------
  2003. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  2004.     DI = 0609h
  2005.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2006.         DWORD    pointer to ???
  2007. Return: DX:AX -> ???
  2008.     STACK unchanged
  2009. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2010. ----------60----DI0700-----------------------
  2011. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  2012.     DI = 0700h
  2013.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2014. Return: ???
  2015.     STACK unchanged
  2016. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  2017.  
  2018. Values for error code:
  2019.  0000h    successful
  2020.  FFF8h transfer request out of bounds
  2021.  FFF9h no such representation
  2022.  FFFAh no representation open
  2023.  FFFBh a representation is already open
  2024.  FFFCh representation already exists
  2025.  FFFDh heap allocation failure
  2026.  FFFEh clipboard not open
  2027.  FFFFh clipboard access denied
  2028. ----------60----DI0701-----------------------
  2029. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  2030.     DI = 0701h
  2031.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2032. Return: ???
  2033.     STACK unchanged
  2034. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  2035. ----------60----DI0702-----------------------
  2036. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  2037.     DI = 0702h
  2038.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2039.         DWORD    pointer to ???
  2040. Return: ???
  2041.     STACK unchanged
  2042. SeeAlso: INT 60/DI=0700h
  2043. ----------60----DI0704-----------------------
  2044. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  2045.     DI = 0704h
  2046.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2047.         DWORD    pointer to ???
  2048. Return: ???
  2049.     STACK unchanged
  2050. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  2051. ----------60----DI0705-----------------------
  2052. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  2053.     DI = 0705h
  2054.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2055. Return: ???
  2056.     STACK unchanged
  2057. SeeAlso: INT 60/DI=0704h
  2058. ----------60----DI0706-----------------------
  2059. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  2060.     DI = 0706h
  2061.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2062.         WORD    ???
  2063.         DWORD    pointer to ???
  2064.         DWORD    pointer to ???
  2065. Return: ???
  2066.     STACK unchanged
  2067. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  2068. ----------60----DI0707-----------------------
  2069. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  2070.     DI = 0707h
  2071.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2072.         DWORD    pointer to ???
  2073.         DWORD    pointer to ???
  2074.         DWORD    pointer to ???
  2075. Return: ???
  2076.     STACK unchanged
  2077. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  2078. ----------60----DI0708-----------------------
  2079. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  2080.     DI = 0708h
  2081.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2082.         DWORD    pointer to data to be written???
  2083.         WORD    length of data???
  2084. Return: ???
  2085.     STACK unchanged
  2086. SeeAlso: INT 60/DI=0709h
  2087. ----------60----DI0709-----------------------
  2088. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  2089.     DI = 0709h
  2090.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2091.         WORD    ???
  2092.         WORD    ???
  2093.         DWORD    pointer to buffer for data???
  2094.         WORD    length of buffer???
  2095. Return: ???
  2096.     STACK unchanged
  2097. SeeAlso: INT 60/DI=0708h
  2098. ----------60----DI0800-----------------------
  2099. INT 60 u - HP 95LX System Manager - BEEP
  2100.     DI = 0800h
  2101.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2102. Return: ???
  2103.     STACK unchanged
  2104. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  2105. ----------60----DI0801-----------------------
  2106. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  2107.     DI = 0801h
  2108.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2109. Return: ???
  2110.     STACK unchanged
  2111. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  2112. ----------60----DI0802-----------------------
  2113. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  2114.     DI = 0802h
  2115.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2116.         WORD    pattern number (00h-06h)
  2117. Return: ???
  2118.     STACK unchanged
  2119. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  2120. ----------60----DI0803-----------------------
  2121. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  2122.     DI = 0803h
  2123.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2124. Return: ???
  2125.     STACK unchanged
  2126. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  2127. ----------60----DI0900-----------------------
  2128. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  2129.     DI = 0900h
  2130.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2131.         WORD    size of block in bytes
  2132. Return: AX -> memory block
  2133.     STACK unchanged
  2134. Note:    System Manager-compliant applications are always small-model (64K code,
  2135.       64K data)
  2136. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  2137. ----------60----DI0902-----------------------
  2138. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  2139.     DI = 0902h
  2140.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2141.         WORD    offset of memory block???
  2142. Return: ???
  2143.     STACK unchanged
  2144. Note:    System Manager-compliant applications are always small-model (64K code,
  2145.       64K data)
  2146. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  2147. ----------60----DI0903-----------------------
  2148. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  2149.     DI = 0903h
  2150.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2151.         WORD    size of block in bytes???
  2152. Return: AX -> memory block???
  2153.     STACK unchanged
  2154. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  2155. ----------60----DI0904-----------------------
  2156. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  2157.     DI = 0904h
  2158.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2159.         WORD    segment of memory block???
  2160. Return: AX -> ???
  2161.     STACK unchanged
  2162. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  2163. ----------60----DI0B00-----------------------
  2164. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  2165.     DI = 0B00h
  2166.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2167.         DWORD    pointer to ???
  2168. Return: ???
  2169.     STACK unchanged
  2170. ----------60----DI0B01-----------------------
  2171. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  2172.     DI = 0B01h
  2173.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2174.         DWORD    pointer to ???
  2175. Return: ???
  2176.     STACK unchanged
  2177. ----------60----DI0B02-----------------------
  2178. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  2179.     DI = 0B02h
  2180.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2181.         DWORD    pointer to ???
  2182. Return: ???
  2183.     STACK unchanged
  2184. ----------60----DI0B03-----------------------
  2185. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  2186.     DI = 0B03h
  2187.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2188.         WORD    ???
  2189. Return: ???
  2190.     STACK unchanged
  2191. ----------60----DI0B04-----------------------
  2192. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  2193.     DI = 0B04h
  2194.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2195.         DWORD    pointer to alarm record???
  2196.         WORD    ???
  2197. Return: ???
  2198.     STACK unchanged
  2199.  
  2200. Format of alarm record:
  2201. Offset    Size    Description
  2202.  00h    BYTE    hour
  2203.  01h    BYTE    minute
  2204.  02h    BYTE    second
  2205.  03h    BYTE    unused padding
  2206.  04h    WORD    rescheduling interval, in seconds
  2207.  06h    BYTE    are seconds significant?
  2208.  07h    BYTE    alarm sound
  2209.  08h 40 BYTEs    message displayed when alarm activates
  2210.  30h    BYTE    task ID of owner
  2211.  31h    BYTE    application's own use for sub-class
  2212.  32h  4 BYTEs    application's own use for private data
  2213. ----------60----DI0B05-----------------------
  2214. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  2215.     DI = 0B05h
  2216.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2217.         DWORD    pointer to ???
  2218. Return: ???
  2219.     STACK unchanged
  2220. ----------60----DI0B06-----------------------
  2221. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  2222.     DI = 0B06h
  2223.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2224.         DWORD    pointer to ???
  2225.         DWORD    pointer to ???
  2226.         DWORD    pointer to ???
  2227. Return: ???
  2228.     STACK unchanged
  2229. ----------60----DI0B07-----------------------
  2230. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  2231.     DI = 0B07h
  2232.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2233.         DWORD    pointer to ???
  2234. Return: ???
  2235.     STACK unchanged
  2236. ----------60----DI0B08-----------------------
  2237. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  2238.     DI = 0B08h
  2239.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2240.         WORD    timestamp format
  2241.             bits 1-0:
  2242.                 00 date only
  2243.                 01 time only
  2244.                 10 date and time
  2245.                 11 day and date
  2246.             bit 4: supply am/pm
  2247.             bit 5: supply seconds
  2248.             bit 6: show year
  2249.             bit 7: four-digit year
  2250.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  2251.         WORD    column
  2252. Return: ???
  2253.     STACK unchanged
  2254. ----------60----DI0B09-----------------------
  2255. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  2256.     DI = 0B09h
  2257.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2258.         DWORD    pointer to ???
  2259.         DWORD    pointer to ???
  2260. Return: ???
  2261.     STACK unchanged
  2262. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  2263.  
  2264. Format of system settings:
  2265. Offset    Size    Description
  2266.  00h    WORD    country code
  2267.  02h    WORD    speaker volume (00h-03h or FFh for off)
  2268.  04h    WORD    contrast level (00h-0Fh)
  2269.  06h    WORD    week start (00h Sunday, 01h Monday)
  2270.  08h    WORD    punctuation format
  2271.         code    decimal    arg    thousands
  2272.         00h    .    ,    ,
  2273.         01h    ,    .    .
  2274.         02h    .    ;    ;
  2275.         03h    ,    ;    .
  2276.         04h    .    ,    " "
  2277.         05h    ,    .    " "
  2278.         06h    .    ;    " "
  2279.         07h    ,    ;    " "
  2280.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  2281.  0Ch    WORD    current date format
  2282.         00h dd-mmm-yy
  2283.         01h dd-mmm
  2284.         02h mmm-yy
  2285.         03h mm/dd/yy
  2286.         04h dd/mm/yy
  2287.         05h dd.mm.yy
  2288.         06h yy-mm-dd
  2289.         07h mm/dd
  2290.         08h dd/mm
  2291.         09h dd.mm
  2292.         0Ah mm-dd
  2293.  0Eh    WORD    current time format
  2294.         00h HH:MM:SS am/pm
  2295.         01h HH:MM am/pm
  2296.         02h HH:MM:SS
  2297.         03h HH.MM.SS
  2298.         04h HH,MM,SS
  2299.         05h HHhMMmSSs
  2300.         06h HH:MM
  2301.         07h HH.MM
  2302.         08h HH,MM
  2303.         09h HHhMMm
  2304.  10h    WORD    collating sequence
  2305.         00h numbers first, 01h letters first, 02h ASCII
  2306.  12h 80 BYTEs    name of picture file
  2307.  62h 30 BYTEs    name
  2308.  80h 30 BYTEs    title
  2309.  9Eh 28 BYTEs    company name
  2310.  BAh    WORD    number of languages
  2311.  BCh  6 BYTEs    available languages
  2312.  C2h 66 BYTEs    language menu
  2313. 104h  2 BYTEs    ASCIZ date separator
  2314. 106h  2 BYTEs    ASCIZ time separator
  2315. 108h    BYTE    date order
  2316. 109h    BYTE    use 24 hour time?
  2317. 10Ah 16 BYTEs    currency string
  2318. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  2319. 11Ch    WORD    keyboard (see below)
  2320. 11Eh    WORD    printer baud rate
  2321.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  2322. 120h    WORD    printer driver code
  2323.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  2324. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  2325. 124h    WORD    system manager interrupt (60h by default)
  2326. 126h    WORD    code page (01h CP850, 02h CP437)
  2327. 128h    WORD    active exit key
  2328. 12Ah    WORD    active menu key
  2329. 12Ch    WORD    active CHAR key toggle
  2330. 12Eh  6 BYTEs    alarm
  2331.  
  2332. Values for keyboard:
  2333.     0001h Belgium
  2334.     0002h French Canadian
  2335.     0004h Denmark
  2336.     0008h Finland
  2337.     0010h French
  2338.     0020h Finland
  2339.     0040h Italy
  2340.     0080h Netherlands
  2341.     0100h Norway
  2342.     0200h Portugal
  2343.     0400h Spain
  2344.     0800h Sweden
  2345.     1000h Swiss French
  2346.     2000h Swiss German
  2347.     4000h United Kingdom
  2348.     8000h USA
  2349. ----------60----DI0B0A-----------------------
  2350. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  2351.     DI = 0B0Ah
  2352.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2353.         DWORD    pointer to ???
  2354.         DWORD    pointer to ???
  2355. Return: ???
  2356.     STACK unchanged
  2357. SeeAlso: INT 60/DI=0B09h
  2358. ----------60----DI0B0B-----------------------
  2359. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  2360.     DI = 0B0Bh
  2361.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2362.         DWORD    pointer to ???
  2363. Return: ???
  2364.     STACK unchanged
  2365. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  2366. ----------60----DI0B0C-----------------------
  2367. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  2368.     DI = 0B0Ch
  2369.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2370.         DWORD    pointer to ???
  2371. Return: ???
  2372.     STACK unchanged
  2373. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  2374. ----------60----DI0B0D-----------------------
  2375. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  2376.     DI = 0B0Dh
  2377.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2378.         DWORD    pointer to ???
  2379.         DWORD    pointer to ???
  2380.         DWORD    pointer to ???
  2381. Return: ???
  2382.     STACK unchanged
  2383. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  2384. ----------60----DI0B0E-----------------------
  2385. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  2386.     DI = 0B0Eh
  2387.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2388.         WORD    ???
  2389.         WORD    ???
  2390.         WORD    ???
  2391.         DWORD    pointer to ???
  2392.         DWORD    pointer to ???
  2393. Return: DX:AX -> ???
  2394.     STACK unchanged
  2395. ----------60----DI0B0F-----------------------
  2396. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  2397.     DI = 0B0Fh
  2398.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2399. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  2400.     STACK unchanged
  2401. SeeAlso: INT 60/DI=0B09h
  2402. ----------60----DI0B10-----------------------
  2403. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  2404.     DI = 0B10h
  2405.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2406.         WORD    ???
  2407.         DWORD    pointer to ???
  2408.         DWORD    pointer to ???
  2409. Return: ???
  2410.     STACK unchanged
  2411. ----------60----DI0B11-----------------------
  2412. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  2413.     DI = 0B11h
  2414.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2415.         WORD    ???
  2416.         DWORD    pointer to ???
  2417.         DWORD    pointer to ???
  2418. Return: ???
  2419.     STACK unchanged
  2420. ----------60----DI0B12-----------------------
  2421. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  2422.     DI = 0B12h
  2423.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2424.         WORD    new parsing rule
  2425.             01h day-month-year
  2426.             02h month-day-year
  2427.             03h year-month-day
  2428.             04h "DMYO"
  2429.             05h "MDYO"
  2430.             OR with 08h to get any year
  2431. Return: ???
  2432.     STACK unchanged
  2433. SeeAlso: INT 60/DI=0B13h
  2434. ----------60----DI0B13-----------------------
  2435. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  2436.     DI = 0B13h
  2437.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2438.         WORD    new parsing rule
  2439.             01h HH:MM:SS (am/pm)
  2440.             02h HH:MM:SS (24hr)
  2441.             03h HHMM:SS (24hr)
  2442.             04h HH:MM:SS.hh (24hr)
  2443.             05h HH:MM (am/pm)
  2444.             06h HH:MM (24hr)
  2445.             07h HHMM (24hr)
  2446. Return: ???
  2447.     STACK unchanged
  2448. SeeAlso: INT 60/DI=0B12h
  2449. ----------60----DI0B14-----------------------
  2450. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  2451.     DI = 0B14h
  2452.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2453. Return: ???
  2454.     STACK unchanged
  2455. ----------60----DI0B15-----------------------
  2456. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  2457.     DI = 0B15h
  2458.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2459.         WORD    ???
  2460. Return: ???
  2461.     STACK unchanged
  2462. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2463. ----------60----DI0C00-----------------------
  2464. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  2465.     DI = 0C00h
  2466.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2467. Return: ???
  2468.     STACK unchanged
  2469. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  2470. ----------60----DI0C01-----------------------
  2471. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  2472.     DI = 0C01h
  2473.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2474. Return: ???
  2475.     STACK unchanged
  2476. Note:    relinquishes control of printer
  2477. SeeAlso: INT 60/DI=0C00h
  2478. ----------60----DI0C02-----------------------
  2479. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  2480.     DI = 0C02h
  2481.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2482.         DWORD    pointer to data to be written
  2483.         WORD    length of data
  2484. Return: ???
  2485.     STACK unchanged
  2486. SeeAlso: INT 60/DI=0C00h
  2487. ----------60----DI0C03-----------------------
  2488. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  2489.     DI = 0C03h
  2490.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2491. Return: ???
  2492.     STACK unchanged
  2493. SeeAlso: INT 60/DI=0C00h
  2494. ----------60----DI0C04-----------------------
  2495. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  2496.     DI = 0C04h
  2497.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2498.         WORD    ???
  2499.         DWORD    pointer to ???
  2500. Return: ???
  2501.     STACK unchanged
  2502. ----------60----DI0C05-----------------------
  2503. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  2504.     DI = 0C05h
  2505.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2506.         WORD    ???
  2507.         DWORD    pointer to ???
  2508. Return: ???
  2509.     STACK unchanged
  2510. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2511. ----------60----DI0E00-----------------------
  2512. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  2513.     DI = 0E00h
  2514.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2515.         DWORD    pointer to ???
  2516. Return: ???
  2517.     STACK unchanged
  2518. SeeAlso: INT 60/DI=0E01h,INT 60/DI=0E02h
  2519.  
  2520. Values for error code:
  2521.  0000h    successful
  2522.  FFF1h "E_BUSY"
  2523.  FFF2h timeout
  2524.  FFF3h framing error
  2525.  FFF4h parity error
  2526.  FFF5h overrun error
  2527.  FFF6h "E_EMPTY"
  2528.  FFF7h "E_CONECT"
  2529.  FFF8h not open
  2530.  FFF9h out of memory
  2531.  FFFAh buffer overflow
  2532.  FFFBh "E_NOFIT"
  2533.  FFFCh unsupported
  2534.  FFFDh "E_IVOPR"
  2535.  FFFEh "E_IVCHN"
  2536.  FFFFh "E_REOPEN"
  2537. ----------60----DI0E01-----------------------
  2538. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  2539.     DI = 0E01h
  2540.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2541.         DWORD    pointer to WORD buffer for comm channel handle
  2542.         WORD    communications line number (01h-04h)
  2543. Return: ???
  2544.     STACK unchanged
  2545. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  2546. ----------60----DI0E02-----------------------
  2547. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  2548.     DI = 0E02h
  2549.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2550.         WORD    comm channel handle
  2551. Return: ???
  2552.     STACK unchanged
  2553. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  2554. ----------60----DI0E03-----------------------
  2555. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  2556.     DI = 0E03h
  2557.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2558.         WORD    ???
  2559. Return: ???
  2560.     STACK unchanged
  2561. ----------60----DI0E04-----------------------
  2562. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  2563.     DI = 0E04h
  2564.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2565.         WORD    ???
  2566.         WORD    ???
  2567. Return: ???
  2568.     STACK unchanged
  2569. ----------60----DI0E05-----------------------
  2570. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  2571.     DI = 0E05h
  2572.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2573.         WORD    ???
  2574.         DWORD    pointer to ???
  2575. Return: ???
  2576.     STACK unchanged
  2577. ----------60----DI0E06-----------------------
  2578. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  2579.     DI = 0E06h
  2580.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2581.         WORD    comm channel handle
  2582.         WORD    reset options
  2583.             bit 0: reset line
  2584.             bit 1: flush transmit buffer
  2585.             bit 2: flush receive buffer
  2586.             bit 3: reset modem
  2587.             bit 4: reset receiver's ^S state
  2588.             bit 5: reset transmitter's ^S state
  2589. Return: ???
  2590.     STACK unchanged
  2591. ----------60----DI0E07-----------------------
  2592. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  2593.     DI = 0E07h
  2594.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2595.         WORD    ???
  2596. Return: ???
  2597.     STACK unchanged
  2598. ----------60----DI0E08-----------------------
  2599. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  2600.     DI = 0E08h
  2601.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2602.         WORD    comm channel handle
  2603.         DWORD    pointer to data to be sent
  2604.         WORD    option flags
  2605.             bit 0: send partial buffer
  2606.             bit 1: turn on receiver after sending
  2607.         DWORD    pointer to WORD containing length of data to be sent
  2608. Return: length WORD updated to contain number of bytes actually sent???
  2609.     STACK unchanged
  2610. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  2611. ----------60----DI0E09-----------------------
  2612. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  2613.     DI = 0E09h
  2614.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2615.         WORD    ???
  2616.         DWORD    pointer to ??? WORD
  2617.         DWORD    pointer to ??? WORD
  2618. Return: ???
  2619.     STACK unchanged
  2620. SeeAlso: INT 60/DI=0E0Ah
  2621. ----------60----DI0E0A-----------------------
  2622. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  2623.     DI = 0E0Ah
  2624.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2625.         WORD    comm channel handle
  2626.         DWORD    pointer to WORD to get receive buffer size
  2627.         DWORD    pointer to WORD to get free bytes in receive buffer
  2628. Return: ???
  2629.     STACK unchanged
  2630. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  2631. ----------60----DI0E0B-----------------------
  2632. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  2633.     DI = 0E0Bh
  2634.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2635.         WORD    comm channel handle
  2636.         DWORD    pointer to data buffer
  2637.         DWORD    pointer to WORD (input) length of data buffer
  2638.                     (output) number of bytes received
  2639. Return: ???
  2640.     STACK unchanged
  2641. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  2642. ----------60----DI0E0C-----------------------
  2643. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  2644.     DI = 0E0Ch
  2645.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2646.         WORD    ???
  2647.         DWORD    pointer to ???
  2648.         WORD    ???
  2649. Return: ???
  2650.     STACK unchanged
  2651. ----------60----DI0E0D-----------------------
  2652. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  2653.     DI = 0E0Dh
  2654.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2655.         WORD    ???
  2656.         DWORD    pointer to ???
  2657.         WORD    ???
  2658. Return: ???
  2659.     STACK unchanged
  2660. ----------60----DI0E0E-----------------------
  2661. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  2662.     DI = 0E0Eh
  2663.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2664.         WORD    ???
  2665.         WORD    ???
  2666. Return: ???
  2667.     STACK unchanged
  2668. ----------60----DI0E0F-----------------------
  2669. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  2670.     DI = 0E0Fh
  2671.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2672.         WORD    ???
  2673. Return: ???
  2674.     STACK unchanged
  2675. ----------60----DI0E10-----------------------
  2676. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  2677.     DI = 0E10h
  2678.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2679.         WORD    ???
  2680. Return: ???
  2681.     STACK unchanged
  2682. ----------60----DI0E11-----------------------
  2683. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  2684.     DI = 0E11h
  2685.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2686.         WORD    ???
  2687.         WORD    ???
  2688. Return: ???
  2689.     STACK unchanged
  2690. ----------60----DI0E12-----------------------
  2691. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  2692.     DI = 0E12h
  2693.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2694.         WORD    ???
  2695. Return: ???
  2696.     STACK unchanged
  2697. ----------60----DI0E13-----------------------
  2698. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  2699.     DI = 0E13h
  2700.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2701.         WORD    ???
  2702. Return: ???
  2703.     STACK unchanged
  2704. ----------60----DI0E14-----------------------
  2705. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  2706.     DI = 0E14h
  2707.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2708.         WORD    comm channel handle
  2709.         DWORD    pointer to comm settings (see below)
  2710. Return: ???
  2711.     STACK unchanged
  2712. SeeAlso: INT 60/DI=0E15h
  2713.  
  2714. Format of comm settings:
  2715. Offset    Size    Description
  2716.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  2717.  01h    WORD    baud rate divisor (115200/baud_rate)
  2718.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  2719.  04h    BYTE    stop bits (00h one, 04h two)
  2720.  05h    BYTE    data bits - 5
  2721.  06h    BYTE    software handshake
  2722.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  2723.  07h    BYTE    infrared (01h off, 02h on)
  2724.  08h    BYTE    duplex (01h half, 02h full)
  2725.  09h    BYTE    echo (01h echo, 02h no echo)
  2726. ----------60----DI0E15-----------------------
  2727. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  2728.     DI = 0E15h
  2729.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2730.         WORD    ???
  2731.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  2732. Return: ???
  2733.     STACK unchanged
  2734. SeeAlso: INT 60/DI=0E14h
  2735. ----------60----DI0E16-----------------------
  2736. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  2737.     DI = 0E16h
  2738.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2739.         WORD    ???
  2740.         WORD    ???
  2741.         WORD    ???
  2742.         WORD    ???
  2743.         WORD    ???
  2744. Return: ???
  2745.     STACK unchanged
  2746. ----------60----DI0E17-----------------------
  2747. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  2748.     DI = 0E17h
  2749.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2750.         WORD    ???
  2751. Return: ???
  2752.     STACK unchanged
  2753. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2754. ----------60----DI0F00-----------------------
  2755. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  2756.     DI = 0F00h
  2757.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2758.         WORD    ???
  2759.         DWORD    pointer to ???
  2760.         WORD    ???
  2761.         DWORD    pointer to ???
  2762. Return: ???
  2763.     STACK unchanged
  2764. ----------60----DI0F01-----------------------
  2765. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  2766.     DI = 0F01h
  2767.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2768.         DWORD    pointer to ASCIZ title string
  2769. Return: ???
  2770.     STACK unchanged
  2771. ----------60----DI0F02-----------------------
  2772. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  2773.     DI = 0F02h
  2774.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2775.         DWORD    pointer to ???
  2776. Return: ???
  2777.     STACK unchanged
  2778. ----------60----DI0F03-----------------------
  2779. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  2780.     DI = 0F03h
  2781.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2782.         DWORD    pointer to first line of message
  2783.         WORD    length of first line
  2784.         DWORD    pointer to second line of message
  2785.         WORD    length of second line
  2786. Return: ???
  2787.     STACK unchanged
  2788. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  2789. ----------60----DI0F04-----------------------
  2790. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  2791.     DI = 0F04h
  2792.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2793. Return: ???
  2794.     STACK unchanged
  2795. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  2796. ----------60----DI0F05-----------------------
  2797. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  2798.     DI = 0F05h
  2799.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2800. Return: DX:AX -> ???
  2801.     STACK unchanged
  2802. ----------60----DI0F06-----------------------
  2803. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  2804.     DI = 0F06h
  2805.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2806. Return: DX:AX -> ???
  2807.     STACK unchanged
  2808. ----------60----DI0F07-----------------------
  2809. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  2810.     DI = 0F07h
  2811.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2812. Return: DX:AX -> ???
  2813.     STACK unchanged
  2814. ----------60----DI0F08-----------------------
  2815. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  2816.     DI = 0F08h
  2817.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2818.         ???
  2819. Return: ???
  2820.     STACK unchanged
  2821. ----------60----DI0F09-----------------------
  2822. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  2823.     DI = 0F09h
  2824.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2825.         DWORD    pointer to first line of message
  2826.         WORD    length of first line
  2827.         DWORD    pointer to second line of message
  2828.         WORD    length of second line
  2829.         DWORD    pointer to third line of message
  2830.         WORD    length of third line
  2831. Return: ???
  2832.     STACK unchanged
  2833. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  2834. ----------60----DI0F0A-----------------------
  2835. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  2836.     DI = 0F0Ah
  2837.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2838. Return: ???
  2839.     STACK unchanged
  2840. SeeAlso: INT 60/DI=0F0Bh
  2841. ----------60----DI0F0B-----------------------
  2842. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  2843.     DI = 0F0Bh
  2844.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2845. Return: ???
  2846.     STACK unchanged
  2847. SeeAlso: INT 60/DI=0F0Ah
  2848. ----------60----DI0F0C-----------------------
  2849. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  2850.     DI = 0F0Ch
  2851.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2852.         ???
  2853. Return: ???
  2854.     STACK unchanged
  2855. ----------60----DI0F0D-----------------------
  2856. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  2857.     DI = 0F0Dh
  2858.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2859.         DWORD    pointer to ???
  2860. Return: DX:AX -> ???
  2861.     STACK unchanged
  2862. ----------60----DI0F0E-----------------------
  2863. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  2864.     DI = 0F0Eh
  2865.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2866.         DWORD    pointer to ???
  2867. Return: DX:AX -> ???
  2868.     STACK unchanged
  2869. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2870. ----------60----DI1005-----------------------
  2871. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  2872.     DI = 1005h
  2873.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2874. Return: ???
  2875.     STACK unchanged
  2876. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  2877. ----------60----DI1200-----------------------
  2878. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  2879.     DI = 1200h
  2880.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2881.         DWORD    pointer to ???
  2882. Return: ???
  2883.     STACK unchanged
  2884. ----------60----DI1201-----------------------
  2885. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  2886.     DI = 1201h
  2887.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2888.         WORD    ???
  2889. Return: DX:AX -> ???
  2890.     STACK unchanged
  2891. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2892. ----------60----DI1202-----------------------
  2893. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  2894.     DI = 1202h
  2895.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2896. Return: DX:AX -> ???
  2897.     STACK unchanged
  2898. ----------60----DI1203-----------------------
  2899. INT 60 u - HP 95LX System Manager - "INIT_SYSGMR_RSRCS"
  2900.     DI = 1203h
  2901.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2902. Return: ???
  2903.     STACK unchanged
  2904. ----------60----DI1300-----------------------
  2905. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  2906.     DI = 1300h
  2907.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2908.         DWORD    pointer to ???
  2909.         DWORD    pointer to ???
  2910.         WORD    ???
  2911. Return: ???
  2912.     STACK unchanged
  2913. ----------60----DI1301-----------------------
  2914. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  2915.     DI = 1301h
  2916.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2917.         DWORD    pointer to ???
  2918. Return: ???
  2919.     STACK unchanged
  2920. ----------60----DI1302-----------------------
  2921. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  2922.     DI = 1302h
  2923.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2924.         DWORD    pointer to ???
  2925.         WORD    ???
  2926. Return: ???
  2927.     STACK unchanged
  2928. ----------60----DI1303-----------------------
  2929. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  2930.     DI = 1303h
  2931.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2932.         DWORD    pointer to ???
  2933. Return: ???
  2934.     STACK unchanged
  2935. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2936. ----------60----DI1400-----------------------
  2937. INT 60 u - HP 95LX System Manager - "M_ColInit"
  2938.     DI = 1400h
  2939.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2940. Return: AX = ???
  2941.     STACK unchanged
  2942. ----------60----DI1401-----------------------
  2943. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  2944.     DI = 1401h
  2945.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2946.         DWORD    pointer to ???
  2947.         WORD    ???
  2948.         DWORD    pointer to ???
  2949.         WORD    ???
  2950. Return: ???
  2951.     STACK unchanged
  2952. ----------60----DI1402-----------------------
  2953. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  2954.     DI = 1402h
  2955.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2956.         ???
  2957. Return: ???
  2958.     STACK unchanged
  2959. ----------60----DI1403-----------------------
  2960. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  2961.     DI = 1403h
  2962.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2963.         ???
  2964. Return: ???
  2965.     STACK unchanged
  2966. ----------60----DI1404-----------------------
  2967. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  2968.     DI = 1404h
  2969.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2970.         DWORD    pointer to ???
  2971.         WORD    ???
  2972. Return: ???
  2973.     STACK unchanged
  2974. ----------60----DI1405-----------------------
  2975. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  2976.     DI = 1405h
  2977.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2978.         DWORD    pointer to ???
  2979.         WORD    ???
  2980.         DWORD    pointer to ???
  2981.         WORD    ???
  2982.         WORD    ???
  2983. Return: ???
  2984.     STACK unchanged
  2985. ----------60----DI1406-----------------------
  2986. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  2987.     DI = 1406h
  2988.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2989.         DWORD    pointer to ???
  2990.         WORD    ???
  2991. Return: ???
  2992.     STACK unchanged
  2993. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2994. ----------60----DI1500-----------------------
  2995. INT 60 u - HP 95LX System Manager - "GrDispInit"
  2996.     DI = 1500h
  2997.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2998.         ???
  2999. Return: ???
  3000.     STACK unchanged
  3001. ----------60----DI1501-----------------------
  3002. INT 60 u - HP 95LX System Manager - "GrDispClear"
  3003.     DI = 1501h
  3004.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3005.         ???
  3006. Return: ???
  3007.     STACK unchanged
  3008. ----------60----DI1502-----------------------
  3009. INT 60 u - HP 95LX System Manager - "GrDispDot"
  3010.     DI = 1502h
  3011.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3012.         ???
  3013. Return: ???
  3014.     STACK unchanged
  3015. ----------60----DI1503-----------------------
  3016. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  3017.     DI = 1503h
  3018.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3019.         ???
  3020. Return: ???
  3021.     STACK unchanged
  3022. ----------60----DI1504-----------------------
  3023. INT 60 u - HP 95LX System Manager - "GrDispFill"
  3024.     DI = 1504h
  3025.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3026.         ???
  3027. Return: ???
  3028.     STACK unchanged
  3029. ----------60----DI1505-----------------------
  3030. INT 60 u - HP 95LX System Manager - "GrDispRead"
  3031.     DI = 1505h
  3032.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3033.         ???
  3034. Return: ???
  3035.     STACK unchanged
  3036. ----------60----DI1506-----------------------
  3037. INT 60 u - HP 95LX System Manager - "GrDispString"
  3038.     DI = 1506h
  3039.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3040.         ???
  3041. Return: ???
  3042.     STACK unchanged
  3043. ----------60----DI1507-----------------------
  3044. INT 60 u - HP 95LX System Manager - "GrDispPan"
  3045.     DI = 1507h
  3046.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3047.         ???
  3048. Return: ???
  3049.     STACK unchanged
  3050. ----------60----DI1508-----------------------
  3051. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  3052.     DI = 1508h
  3053.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3054.         ???
  3055. Return: ???
  3056.     STACK unchanged
  3057. ----------60----DI1509-----------------------
  3058. INT 60 u - HP 95LX System Manager - "GrDispSave"
  3059.     DI = 1509h
  3060.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3061.         ???
  3062. Return: ???
  3063.     STACK unchanged
  3064. ----------60----DI150A-----------------------
  3065. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  3066.     DI = 150Ah
  3067.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3068.         ???
  3069. Return: ???
  3070.     STACK unchanged
  3071. ----------60----DI150B-----------------------
  3072. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  3073.     DI = 150Bh
  3074.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3075.         ???
  3076. Return: ???
  3077.     STACK unchanged
  3078. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3079. ----------60----DI1604-----------------------
  3080. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  3081.     DI = 1604h
  3082.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3083.         ???
  3084. Return: ???
  3085.     STACK unchanged
  3086. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3087. ----------6000-------------------------------
  3088. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  3089.     AH = 00h
  3090. Return: AX = 0000h    profiling is off
  3091.         otherwise profiling is on
  3092. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3093. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  3094. ----------6000-------------------------------
  3095. INT 60 - MDEBUG - GET STATUS
  3096.     AH = 00h
  3097.     DS:SI -> password or a null byte
  3098. Return: AX = return code
  3099.         FFFEh password is invalid
  3100.         FFFDh display mode is invalid
  3101.        else successful
  3102.         ES = value of the monitor register SE
  3103.         DI = value of the monitor register OF
  3104.         CH = monitor color
  3105.         CL = interpreter color
  3106.         BH = monitor start line
  3107.         BL = interpreter start line
  3108.         AH = makecode of the hotkey
  3109.         AL = ASCII code of the hotkey
  3110.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  3111.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  3112.         DH = basic process number for the communication with drivers
  3113.             process number for the display driver, DH+1 = process
  3114.             number for the command driver(s)
  3115.     DS:SI -> MDEBUG identification table
  3116. Notes:    MDEBUG is a shareware memory-resident debugging tool by Bernd Schemmer,
  3117.       including a memory monitor, an interpreter, and a disassembler
  3118.     MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  3119.       through INT 67; the interrupt handler is preceded by the signature
  3120.       "USERINT" and is not chained
  3121.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  3122.       passwords are active; enough stack space must be provided for an
  3123.       INT 10h call (which MDEBUG uses while prompting for the password)
  3124. SeeAlso: AH=02h"MDEBUG"
  3125.  
  3126. Format of MDEBUG identification table:
  3127. Offset    Size    Description
  3128.  -2    WORD    entry offset
  3129.  00h    WORD    CS of MDEBUG
  3130.  02h    DWORD    old INT 08h vector
  3131.  06h    DWORD    old INT 09h vector
  3132.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  3133.  0Eh    BYTE    length of version string
  3134.  0Fh  N BYTEs    version string
  3135. ----------6001-------------------------------
  3136. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  3137.     AH = 01h
  3138.     DS:SI -> password or a null byte
  3139. Return: AX = return code
  3140.         FFFEh password is invalid
  3141.         FFFDh display mode is invalid
  3142.        else successful
  3143.         ES:DI point to the help registers of MDEBUG
  3144.            ES:DI-02h  -> R0 (WORD)
  3145.            ES:DI      -> R1 (WORD)
  3146.            ES:DI+02h  -> R2 (WORD)
  3147.            ES:DI+04h  -> R3 (WORD)
  3148.            ...
  3149.            ES:DI+0Eh  -> R8 (WORD)
  3150. ----------6001-------------------------------
  3151. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  3152.     AH = 01h
  3153. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3154. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  3155. ----------6001FF-----------------------------
  3156. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  3157.     AX = 01FFh
  3158.     BX = handle returned by function 02h
  3159. Return: CF set on error
  3160.         DH = error code (see below)
  3161.     CF clear if successful
  3162.         BX = version
  3163.         CH = network interface class (see below)
  3164.         DX = interface type (see below)
  3165.         CL = number
  3166.         DS:SI -> name
  3167.         AL = driver functions supported
  3168.         01h basic
  3169.         02h basic and extended
  3170.         05h basic and high-performance
  3171.         06h basic, high-performance, and extended
  3172.         FFh not installed
  3173. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  3174.       the packet driver specification
  3175.  
  3176. Values for error code:
  3177.  01h "BAD_HANDLE"    invalid handle number 
  3178.  02h "NO_CLASS"        no interfaces of the specified class found
  3179.  03h "NO_TYPE"        no interfaces of the specified type found
  3180.  04h "NO_NUMBER"    no interfaces of the specified number found
  3181.  05h "BAD_TYPE"        bad packet type
  3182.  06h "NO_MULTICAST"    interface does not support multicast messages
  3183.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  3184.  08h "BAD_MODE"        invalid receiver mode
  3185.  09h "NO_SPACE"        insufficient space
  3186.  0Ah "TYPE_INUSE"    type accessed but never released
  3187.  0Bh "BAD_COMMAND"    bad command
  3188.  0Ch "CANT_SEND"    packet could not be sent
  3189.  0Dh "CANT_SET"        hardware address could not be changed
  3190.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  3191.  0Fh "CANT_RESET"    could not reset interface
  3192.  
  3193. Values for Network Interface classes/types:
  3194.     Class 01h  Ethernet/IEEE 802.3     
  3195.     01h 3COM 3C500/3C501
  3196.     02h 3COM 3C505
  3197.     03h MICOM-Interlan NI5010
  3198.     04h BICC Data Networks 4110
  3199.     05h BICC Data Networks 4117
  3200.     06h MICOM-Interlan NP600
  3201.     08h Ungermann-Bass PC-NIC
  3202.     09h Univation NC-516
  3203.     0Ah TRW PC-2000    
  3204.     0Bh MICOM-Interlan NI5210
  3205.     0Ch 3COM 3C503
  3206.     0Dh 3COM 3C523
  3207.     0Eh Western Digital WD8003
  3208.     0Fh Spider Systems S4
  3209.     10h Torus Frame Level
  3210.     11h 10Net Communications
  3211.     12h Gateway PC-bus
  3212.     13h Gateway AT-bus
  3213.     14h Gateway MCA-bus
  3214.     15h IMC PCnic
  3215.     16h IMC PCnic II
  3216.     17h IMC PCnic 8-bit
  3217.     18h Tigan Communications
  3218.     19h Micromatic Research
  3219.     1Ah Clarkson "Multiplexor"
  3220.     1Bh D-Link 8-bit
  3221.     1Ch D-Link 16-bit
  3222.     1Dh D-Link PS/2
  3223.     1Eh Research Machines 8
  3224.     1Fh Research Machines 16
  3225.     20h Research Machines MCA
  3226.     21h Radix Microsystems EXM1 16-bit
  3227.     22h Interlan Ni9210
  3228.     23h Interlan Ni6510
  3229.     24h Vestra LANMASTER 16-bit
  3230.     25h Vestra LANMASTER 8-bit
  3231.     26h Allied Telesis PC/XT/AT
  3232.     27h Allied Telesis NEC PC-98
  3233.     28h Allied Telesis Fujitsu FMR
  3234.     29h Ungermann-Bass NIC/PS2
  3235.     2Ah Tiara LANCard/E AT
  3236.     2Bh Tiara LANCard/E MC
  3237.     2Ch Tiara LANCard/E TP
  3238.     2Dh Spider Communications SpiderComm 8
  3239.     2Eh Spider Communications SpiderComm 16
  3240.     2Fh AT&T Starlan NAU
  3241.     30h AT&T Starlan-10 NAU
  3242.     31h AT&T Ethernet NAU
  3243.     32h Intel smart card
  3244.     33h Xircom Packet Adapter
  3245.     34h Aquila Ethernet
  3246.     35h Novell NE1000
  3247.     36h Novell NE2000
  3248.     37h SMC PC-510
  3249.     38h AT&T Fiber NAU
  3250.     39h NDIS to Packet Driver adapter
  3251.     3Ah Racal-InterLan ES3210
  3252.     3Bh General Systems ISDN simulated Ethernet
  3253.     3Ch Hewlett-Packard
  3254.     3Dh IMC EtherNic-8
  3255.     3Eh IMC EtherNic-16
  3256.     3Fh IMC EtherNic-MCA
  3257.     40h NetWorth EtherNext
  3258.     41h Dataco Scanet
  3259.     42h DEC DEPCA
  3260.     43h C-Net
  3261.     44h Gandalf LANLine
  3262.     45h Apricot built-in
  3263.     46h David Systems Ether-T
  3264.     47h ODI to Packet Driver adapter
  3265.     48h AMD Am21110-16
  3266.     49h Intel ICD Network controller family
  3267.     4Ah Intel ICD PCL2
  3268.     4Bh Intel ICD PCL2A
  3269.     4Ch AT&T LANPacer
  3270.     4Dh AT&T LANPacer+
  3271.     4Eh AT&T EVB
  3272.     4Fh AT&T StarStation
  3273.     50h SLIP simulated ethernet
  3274.     51h Racal-Interlan NIA310
  3275.     52h Racal-Interlan NISE
  3276.     53h Racal-Interlan NISE30
  3277.     54h Racal-Interlan NI6610
  3278.     55h Ethernet over IP/UDP
  3279.     Class 02h  ProNET-10
  3280.     01h Proteon p1300
  3281.     02h Proteon p1800
  3282.     Class 03h  IEEE 802.5/ProNet-4
  3283.     01h IBM Token-Ring Adapter
  3284.     02h Proteon p1340
  3285.     03h Proteon p1344
  3286.     04h Gateway PC-bus
  3287.     05h Gateway AT-bus
  3288.     06h Gateway MCA-bus
  3289.     39h NDIS to Packet Driver adapter
  3290.     47h ODI to Packet Driver adapter
  3291.     Class 04h  Omninet
  3292.     Class 05h  Appletalk
  3293.     01h ATALK.SYS adapter
  3294.     Class 06h  Serial Line
  3295.     01h Clarkson 8250-SLIP
  3296.     02h Clarkson "Multiplexor"
  3297.     Class 07h  StarLAN (subsumed by Ethernet class)
  3298.     Class 08h  ARCnet
  3299.     01h Datapoint RIM
  3300.     Class 09h  AX.25
  3301.     01h Ottawa PI card
  3302.     Class 0Ah  KISS
  3303.     Class 0Bh  IEEE 802.3 with 802.2 headers
  3304.     types same as for class 01h
  3305.     Class 0Ch  FDDI with 802.2 headers
  3306.     01h Western Digital
  3307.     02h Frontier Technology
  3308.     Class 0Dh  Internet X.25
  3309.     01h Western Digital
  3310.     02h Frontier Technology
  3311.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  3312.     01h NT LANSTAR/8
  3313.     02h NT LANSTAR/MC
  3314.     Class 0Fh  SLFP (MIT serial specification)
  3315.     01h MERIT
  3316.     Class 10h  PPP (Point-to-Point Protocol)
  3317.  
  3318. Note: class and type numbers are cleared through FTP Software
  3319. ----------6002-------------------------------
  3320. INT 60 - MDEBUG - SET STATUS
  3321.     AH = 02h
  3322.     DS:SI -> password or a null byte
  3323.     ES = new value for the register SE
  3324.     DI = new value for the register OF
  3325.     CH = new monitor color if nonzero
  3326.     CL = new interpreter color if nonzero
  3327.     BH = new monitor start line if nonzero
  3328.     BL = new interpreter start line if nonzero
  3329.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  3330.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  3331.         if nonzero
  3332.     DH = if nonzero, new basic process number for communication with the
  3333.         drivers (DH = multiplex number for the display driver,
  3334.         DH+1 = multiplex number for the command driver or drivers)
  3335. Return: AX = return code
  3336.         FFFFh call not allowed
  3337.         FFFEh password is invalid
  3338.         FFFDh display mode is invalid
  3339.         0000h successful, status changed
  3340.        else AL = error code
  3341.             bit 0 invalid monitor start line
  3342.             1 invalid interpreter start line
  3343.             2 invalid hotkey
  3344.             3 invalid process number
  3345.               4-7 reserved
  3346. Note:    the values of the registers SE and OF are always changed, the other
  3347.       values are only changed if they are valid
  3348. SeeAlso: AH=00h"MDEBUG"
  3349. ----------6002-------------------------------
  3350. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  3351.     AH = 02h
  3352.     AL = interface class
  3353.     BX = interface type
  3354.     DL = interface number
  3355.     DS:SI -> type
  3356.     CX = length of type (0000h for all packets)
  3357.     ES:DI -> receiver
  3358. Return: CF set on error
  3359.         DH = error code (see AX=01FFh)
  3360.     CF clear if successful
  3361.         AX = handle        
  3362. SeeAlso: AH=03h"FTP"
  3363.  
  3364. Receiver is called with:
  3365.     AX = subfunction
  3366.         00h get packet buffer
  3367.         DX = lookahead length (v1.10+)
  3368.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  3369.         DI = error flags (class dependent) (v1.10+)
  3370.         Return: ES:DI -> packet buffer
  3371.                 0000h:0000h means throw away packet
  3372.             CX = size of buffer (v1.10+), may be smaller than
  3373.                 incoming data
  3374.         01h copy completed
  3375.         DS:SI -> buffer
  3376.         CX = bytes actually copied (v1.10+)
  3377.     BX = handle
  3378.     CX = buffer length
  3379. when a packet is received
  3380. ----------6002-------------------------------
  3381. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  3382.     AH = 02h
  3383. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3384. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  3385. ----------6003-------------------------------
  3386. INT 60 - MDEBUG - POP UP
  3387.     AH = 03h
  3388.     DS:SI -> password or a null byte
  3389.     ES -> new value for the register SE
  3390.     DI -> new value for the register OF
  3391. Return: AX = return code
  3392.         FFFFh call not allowed
  3393.         FFFEh password is invalid
  3394.         FFFDh display mode is invalid
  3395.        else successful
  3396. SeeAlso: AH=04h"MDEBUG"
  3397. ----------6003-------------------------------
  3398. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  3399.     AH = 03h
  3400.     BX = handle
  3401. Return: CF set on error
  3402.        DH = error code (see AX=01FFh)
  3403.     CF clear if successful    
  3404. SeeAlso: AH=02h"FTP"
  3405. ----------6003-------------------------------
  3406. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  3407.     AH = 03h
  3408. Return: ES:BX -> profiling table
  3409. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3410. SeeAlso: AH=04h"SYS_PROF"
  3411. ----------6004-------------------------------
  3412. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  3413.     AH = 04h
  3414.     DS:SI -> buffer
  3415.     CX = length
  3416. Return: CF set on error
  3417.         DH = error code (see AX=01FFh)
  3418.     CF clear if successful
  3419. Note:    the buffer may be modified immediately upon return from this call
  3420. SeeAlso: AH=0Bh
  3421. ----------6004-------------------------------
  3422. INT 60 - MDEBUG - POP UP
  3423.     AH = 04h
  3424.     DS:SI -> password or a null byte
  3425. Return: AX = return code
  3426.         FFFFh call not allowed
  3427.         FFFEh password is invalid
  3428.         FFFDh display mode is invalid
  3429.        else successful
  3430. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  3431. ----------6004-------------------------------
  3432. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  3433.     AH = 04h
  3434. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3435. SeeAlso: AH=03h"SYS_PROF"
  3436. ----------6005-------------------------------
  3437. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  3438.     AH = 05h
  3439.     BX = handle (optional for v1.10+)
  3440. Return: CF set on error
  3441.        DH = error code (see AX=01FFh)
  3442.     CF clear if successful
  3443. ----------6005-------------------------------
  3444. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  3445.     AH = 05h
  3446.     DS:SI -> password or a null byte
  3447.     BL = new value for the semaphor of MDEBUG
  3448.          00h  enable popup of MDEBUG
  3449.          else disable popup of MDEBUG
  3450. Return: AX = return code
  3451.         FFFEh password is invalid
  3452.         FFFDh display mode is invalid
  3453.        else successful
  3454.         BL = old value of the semapor of MDEBUG
  3455.         BH = old value of the INT 08h semaphor
  3456.             (this semaphor is always reset after this function)
  3457. ----------6006-------------------------------
  3458. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  3459.     AH = 06h
  3460.     BX = handle (optional for v1.10+)
  3461.     ES:DI -> buffer
  3462.     CX = length
  3463. Return: CF set on error
  3464.         DH = error code (see AX=01FFh)
  3465.     CF clear if successful
  3466.         CX = length    
  3467. Note:    copies the local net address associated with the handle into the buffer
  3468. ----------6006-------------------------------
  3469. INT 60 - MDEBUG - GET PASSWORD STATUS
  3470.     AH = 06h
  3471. Return: AL = status
  3472.         00h password inactive
  3473.         01h password active
  3474. ----------6007-------------------------------
  3475. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  3476.     AH = 07h
  3477.     BX = handle (optional for v1.10+)
  3478. Return: CF set on error
  3479.         DH = error code (see AX=01FFh)
  3480.     CF clear if successful
  3481. ----------6007-------------------------------
  3482. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  3483.     AH = 07h
  3484. Return: AL = active part for the next popup session of MDEBUG:
  3485.         bit 0: the next popup session will start in the interpreter rather
  3486.             than in the monitor
  3487.         bit 1: the next popup session will sart in the online-help
  3488. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  3489. ----------6008-------------------------------
  3490. INT 60 - MDEBUG - UNUSED
  3491.     AH = 08h-FFh
  3492. Return: AX = FFFCh
  3493. ----------600A-------------------------------
  3494. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  3495.     AH = 0Ah
  3496. Return: CF set on error
  3497.         DH = error code (0Bh) (see AX=01FFh)
  3498.     CF clear if successful
  3499.         ES:DI -> parameter table (see below)
  3500.  
  3501. Format of parameter table:
  3502. Offset    Size    Description
  3503.  00h    BYTE    major revision of packet driver spec driver conforms to
  3504.  01h    BYTE    minor revision of packet driver spec
  3505.  02h    BYTE    length of this structure in bytes
  3506.  03h    BYTE    length of a MAC-layer address
  3507.  04h    WORD    maximum transfer unit, including MAC headers
  3508.  06h    WORD    buffer size for multicast addr
  3509.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  3510.  0Ah    WORD    number of transmit buffers
  3511.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  3512. ----------600B-------------------------------
  3513. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  3514.     AH = 0Bh
  3515.     DS:SI -> buffer
  3516.     CX = length of buffer
  3517.     ES:DI -> FAR function to call when buffer becomes available
  3518. Return: CF set on error
  3519.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  3520.     CF clear if successful
  3521. Notes:    unlike function 04h, the buffer is not available for modification as
  3522.       soon as the call returns; the buffer may be queued by the driver and
  3523.       not processed until later
  3524.     this function has been dropped from v1.10+ of the specification and
  3525.       replaced by function 0Ch
  3526. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  3527.  
  3528. Completion function called with:
  3529.     AX = result
  3530.         00h copy OK
  3531.         nonzero error
  3532.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  3533. ----------600C-------------------------------
  3534. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  3535.     AH = 0Ch
  3536.     ES:DI -> pointer to IOCB
  3537. Return: CF set on error
  3538.         DH = error code (see AX=01FFh)
  3539.     CF clear if successful
  3540. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  3541.  
  3542. Format of IOCB:
  3543. Offset    Size    Description
  3544.  00h    DWORD    pointer to buffer
  3545.  04h    WORD    length of buffer
  3546.  06h    BYTE    flags
  3547.         bit 0: packet driver is finished with IOCB
  3548.         bit 1: application requests upcall when driver completes
  3549.  07h    DWORD    function address for upcall
  3550.  0Bh  4 BYTEs    future gather write
  3551.  0Fh    BYTE    ???
  3552.  10h  8 BYTEs    private driver workspace
  3553.  
  3554. Completion function called with:
  3555.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  3556. ----------600C-------------------------------
  3557. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  3558.     AH = 0Ch
  3559. Return: AL = status
  3560.         00h successful
  3561.         ES:SI -> 6-byte station address
  3562.         02h semaphore service is unavailable
  3563. ----------600D-------------------------------
  3564. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  3565.     AH = 0Dh
  3566.     ES:DI -> IOCB
  3567. Return: CF set on error
  3568.         DH = error code (see AX=01FFh)
  3569.     CF clear if successful
  3570. SeeAlso: AH=0Ch"Packet Driver"
  3571. ----------6011-------------------------------
  3572. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  3573.     AH = 11h
  3574.     AL = drive number or 0
  3575.     DX = number of seconds to wait
  3576.     ES:SI = Ethernet address or 0
  3577.     DS:BX -> 31-byte ASCIZ semaphore name
  3578. Return: AL = status
  3579.         00h successful
  3580.         01h timeout
  3581.         02h server not responding
  3582.         03h invalid semaphore name
  3583.         04h semaphore list is full
  3584.         05h invalid drive ID
  3585.         06h invalid Ethernet address
  3586.         07h not logged in
  3587.         08h write to network failed
  3588.         09h semaphore already logged for this CPU
  3589. SeeAlso: AH=12h,AH=13h
  3590. ----------6012-------------------------------
  3591. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  3592.     AH = 12h
  3593.     AL = drive number or 00h
  3594.     ES:SI = Ethernet address or 0000h:0000h
  3595.     DS:BX -> 31-byte ASCIZ semaphore name
  3596. Return: AL = status (see also AH=11h)
  3597.         01h semaphore currently locked by another PC
  3598. Note:    unlike function 11h, this function returns immediately
  3599. SeeAlso: AH=11h,AH=13h
  3600. ----------6013-------------------------------
  3601. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  3602.     AH = 13h
  3603.     AL = drive number or 00h
  3604.     ES:SI = Ethernet address or 0000h:0000h
  3605.     DS:BX -> 31-byte ASCIZ semaphore name
  3606. Return: AL = status (see also AH=11h)
  3607.         1 semaphore not locked
  3608. SeeAlso: AH=11h,AH=12h
  3609. ----------6014-------------------------------
  3610. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  3611.     AH = 14h
  3612.     BX = handle (optional for v1.10+)
  3613.     CX = mode
  3614.         01h turn off receiver
  3615.         02h receive only packets sent to this interface
  3616.         03h mode 2 plus broadcast packets
  3617.         04h mode 3 plus limited multicast packets
  3618.         05h mode 3 plus all multicast packets
  3619.         06h all packets
  3620.         07h raw mode for serial line only (v1.10+)
  3621. Return: CF set on error
  3622.        DH = error code (01h,08h) (see AX=01FFh)
  3623.     CF clear if successful
  3624. SeeAlso: AH=15h
  3625. ----------6015-------------------------------
  3626. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  3627.     AH = 15h
  3628.     BX = handle (optional for v1.10+)
  3629. Return: CF set on error
  3630.         DH = error code (01h) (see AX=01FFh)
  3631.     CF clear if successful
  3632.         AX = mode    
  3633. SeeAlso: AH=14h
  3634. ----------6016-------------------------------
  3635. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  3636.     AH = 16h
  3637.     ES:DI -> multicast list
  3638.     CX = length of list in bytes
  3639. Return: CF set on error
  3640.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  3641.     CF clear if successful
  3642. SeeAlso: AH=17h
  3643. ----------6017-------------------------------
  3644. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  3645.     AH = 17h
  3646. Return: CF set on error
  3647.         DH = error code (06h,09h) (see AX=01FFh)
  3648.     CF clear if successful
  3649.         ES:DI -> multicast addresses (do not modify)
  3650.         CX = bytes of multicast addresses currently in use
  3651. SeeAlso: AH=16h
  3652. ----------6018-------------------------------
  3653. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  3654.     AH = 18h
  3655.     BX = handle (optional for v1.10+)
  3656. Return: CF set on error
  3657.         DH = error code (01h) (see AX=01FFh)
  3658.     CF clear if successful
  3659.         DS:SI -> statistics (see below)
  3660.  
  3661. Format of statistics:
  3662. Offset    Size    Description
  3663.  00h    DWORD    packets in
  3664.  04h    DWORD    packets out
  3665.  08h    DWORD    bytes in
  3666.  0Ch    DWORD    bytes out
  3667.  10h    DWORD    errors in
  3668.  14h    DWORD    errors out
  3669.  18h    DWORD    packets dropped
  3670. ----------6019-------------------------------
  3671. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  3672.     AH = 19h
  3673.     ES:DI -> address
  3674.     CX = length of address
  3675. Return: CF set on error
  3676.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  3677.     CF clear if successful
  3678.         CX = length
  3679. ----------601A-------------------------------
  3680. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  3681.     AH = 1Ah
  3682.     DS:SI -> buffer
  3683.     CX = length of buffer
  3684. Return: CF set on error
  3685.         DH = error code (see AX=01FFh)
  3686.     CF clear if successful
  3687. SeeAlso: AH=1Ch
  3688. ----------601B-------------------------------
  3689. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  3690.     AH = 1Bh
  3691. Return: CF set on error
  3692.         DH = error code (see AX=01FFh)
  3693.     CF clear if successful
  3694. SeeAlso: AH=1Ch
  3695. ----------601C-------------------------------
  3696. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  3697.     AH = 1Ch
  3698.     DS:SI -> buffer
  3699.     CX = length of buffer
  3700.     DX = timeout in clock ticks
  3701. Return: CF set on error
  3702.         DH = error code (see AX=01FFh)
  3703.     CF clear if successful
  3704.         CX = number of bytes transferred to buffer
  3705. SeeAlso: AH=1Ah,AH=1Bh
  3706. ----------60AD-------------------------------
  3707. INT 60 - AccessDOS - API
  3708.     AH = ADh
  3709.     AL = function
  3710.         E1h ???
  3711.         Return: AX = ???
  3712.         E2h get configuration
  3713.         Return: BX:AX -> configuration data
  3714. Notes:    AccessDOS is a public domain TSR developed at The Trace Research and
  3715.       Development Center which provides extensions for keyboard, mouse,
  3716.       and sound access by the visually, hearing, or motor-control
  3717.       impaired.
  3718.     INT 60 is the default vector; AccessDOS will use the first 0000h:0000h
  3719.       vector in the range 60h through 66h.
  3720. ----------61---------------------------------
  3721. INT 61 - reserved for user interrupt
  3722. ----------61---------------------------------
  3723. INT 61 - Atari Portfolio - EXTENDED BIOS
  3724.    provides subfunctions such as turning off the machine, accessing internal
  3725.    variables, and mapping memory cards
  3726. SeeAlso: INT 60"Atari"
  3727. ----------61---------------------------------
  3728. INT 61 - HP 95LX System Manager - LOAD DS
  3729. SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
  3730. ----------61---------------------------------
  3731. INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
  3732. SeeAlso: INT 61"JPI"
  3733. ----------61---------------------------------
  3734. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  3735. Note:    this vector stores the second four bytes of the parameter table for
  3736.       hard disk 0
  3737. SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
  3738. ----------61---------------------------------
  3739. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  3740.     BX:DX -> control block
  3741. SeeAlso: INT 67"Sangoma"
  3742. ----------61---------------------------------
  3743. INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
  3744. Note:    the virus copies the original INT 21h vector into INT 61h
  3745. SeeAlso: INT 21h,INT 60"VIRUS",INT 6B"VIRUS"
  3746. ----------61---------------------------------
  3747. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  3748.     AH = system call number (see also entries below)
  3749.         01h "pkt_alloc"
  3750.         02h "pkt_free"
  3751. Return: CF clear if successful
  3752.     CF set on error
  3753.         AL = basic error (see below)
  3754.         AH = suberror number
  3755. Notes:    the installation check consists of testing for the signature "TCPTSR"
  3756.       three bytes beyond the start of the interrupt handler
  3757.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  3758.       interrupt from 20h through E0h
  3759. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  3760.       greater than 54h in AH may crash the system.    Other kernels may have
  3761.       this bug as well.
  3762. SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
  3763.  
  3764. Values for error code:
  3765.  00h "NET_NOERR" successful
  3766.  01h "NET_ERR_INUSE" protocol or socket already in use
  3767.  02h "NET_DOS_ERR" MSDOS error (returned as suberror code in AH)
  3768.  03h "NET_ERR_NOMEM" out of memory
  3769.  04h "NET_ERR_NOTNETCONN" not a network descriptor
  3770.  05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
  3771.  06h "NET_ERR_BADPKT" illegal or corrupted packet
  3772.  07h "NET_ERR_NOHOST" no host bound to specified connection
  3773.  08h "NET_ERR_CANTOPEN" unable to open file
  3774.  09h "NET_ERR_NET_UNREACHABLE" network is unreachable
  3775.  0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable
  3776.  0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
  3777.  0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
  3778.  0Dh "NET_ERR_TIMEOUT" operation timed out
  3779.  0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
  3780.  0Fh "NET_ERR_NOSERVERS" no name servers configured
  3781.  10h "NET_ERR_SERVER_ERR" bad reply from name server
  3782.  11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address struc
  3783.             is zero
  3784.  12h "NET_ERR_BADARG" invalid argument
  3785.  13h "NET_ERR_EOF" foreign host closed its end of connection
  3786.  14h "NET_ERR_RESET" connection has been reset
  3787.  15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
  3788.             with no data available
  3789.  16h "NET_ERR_UNBOUND" insufficient resources to do operation
  3790.  17h "NET_ERR_NODESC" could not allocate network descriptor
  3791.  18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
  3792.  19h "NET_ERR_CANTBROADCAST" unable to broadcast
  3793.  1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
  3794.  1Bh kernel busy, try again later
  3795. ----------6100-------------------------------
  3796. INT 61 U - PC/TCP kernel v2.05 - GET DEBUG INFORMATION
  3797.     AH = 00h
  3798.     DS:SI -> 216-byte buffer for network debugging information (see below)
  3799. Return: CF clear
  3800.     AX = 0000h
  3801.     buffer filled
  3802. SeeAlso: INT 61"PC/TCP",INT 61/AH=2Ah"PC/TCP"
  3803.  
  3804. Format of network debugging information:
  3805. Offset    Size    Description
  3806.  00h    DWORD    number of interrupts
  3807.  04h    DWORD    receive buffer low-water mark
  3808.  08h    DWORD    transmit buffer low-water mark
  3809.  0Ch    DWORD    number of packets received
  3810.  10h    DWORD    number of packets transmitted
  3811.  14h    DWORD    total receive errors
  3812.  18h    DWORD    total transmit errors
  3813.  1Ch  4 BYTEs    ???
  3814.  20h    DWORD    receive resets
  3815.  24h    DWORD    transmit resets
  3816.  28h    DWORD    number of "runts" received
  3817.  2Ch    DWORD    number of alignment errors on received packets
  3818.  30h    DWORD    number of CRC errors on received packets
  3819.  34h    DWORD    number of parity errors on received packets
  3820.  38h    DWORD    number of receive overflow errors
  3821.  3Ch    DWORD    number of oversized packets received
  3822.  40h    DWORD    number of packets lost due to lack of buffers
  3823.  44h    DWORD    receive timeouts
  3824.  48h 32 BYTEs    ???
  3825.  68h    DWORD    number of transmit collisions
  3826.  6Ch    DWORD    number of transmit timeouts
  3827.  70h    DWORD    number of transmit underflows
  3828.  74h    DWORD    number of lost "crs" on transmit
  3829.  78h    DWORD    number of times heartbeat failed on transmit
  3830.  7Ch 24 BYTEs    ???
  3831.  94h    WORD    free packet buffers
  3832.  96h    WORD    total packet buffers
  3833.  98h    WORD    minimum number of packet buffers free since kernel started
  3834.  9Ah 24 BYTEs    ???
  3835.  B2h    DWORD    pointer to TCP connection list???
  3836.  B6h    DWORD    pointer to IP routing table???
  3837.  BAh 30 BYTEs    ???
  3838. ----------610000-----------------------------
  3839. INT 61 - OPTIMA 1024 VGA-Sync - ZOOM DISPLAY
  3840.     AX = 0000h
  3841.     BX = zoom factor (0-7)
  3842. Notes:    zooms the display based on the given zoom factor
  3843.     INT 61h is the default interrupt; the actual interrupt number can be
  3844.       obtained by calling INT 16/AH=FFh
  3845. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0001h"OPTIMA",INT 61/AX=0002h"OPTIMA"
  3846. SeeAlso: INT 61/AX=0005h"OPTIMA"
  3847. ----------610001-----------------------------
  3848. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  3849.     AX = 0001h
  3850.     DS:DX -> communications control block (function 0001h)
  3851. Return: AX = status
  3852.         0000h  successful
  3853.         0001h  service not installed
  3854.         0002h  invalid service ID
  3855.         0098h  resource already in use
  3856.         009Eh  address family does not exist
  3857.         009Fh  socket type does not exist
  3858.         00A0h  protocol does not exist
  3859.         00A1h  no more sockets available
  3860.         00A2h  no more buffer space available
  3861. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  3862.       interrupt handler is identified by the string "BANV" in the four
  3863.       bytes immediately preceding the interrupt handler
  3864.  
  3865. Format of control block:
  3866. Offset    Size    Description
  3867.  00h    WORD    0001h
  3868.  02h    WORD    pointer to argument block
  3869.  04h    WORD    error return code
  3870.  06h  4 BYTEs    reserved
  3871.  
  3872. Format of argument block:
  3873. Offset    Size    Description
  3874.  00h    WORD    pointer to 2-byte buffer for socket identifier
  3875.  02h    WORD    address family
  3876.         0003h Banyan
  3877.  04h    WORD    socket type
  3878.         in address family 0003h
  3879.             0001h IPC socket
  3880.             0002h SPP socket
  3881.  06h    WORD    protocol number
  3882.         FFFFh default
  3883.  08h    WORD    pointer to 16-byte buffer for socket address
  3884.  0Ah    WORD    local port number
  3885.         0000h if service should assign transient port number
  3886.         0001h to 01FFh well-known port number (assigned by Banyan)
  3887.  
  3888. Format of IPC port:
  3889. Offset    Size    Description
  3890.  00h    WORD    address family (always 0003h for Banyan ports)
  3891.  04h  4 BYTEs    network number (server's serial number)
  3892.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  3893.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  3894.  0Ah    BYTE    hop count
  3895.  0Bh  5 BYTEs    filler
  3896. ----------610001-----------------------------
  3897. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  3898.     AX = 0001h
  3899.     DS:DX -> communications control block (function 0002h)
  3900. Return: AX = status
  3901.         0000h  successful
  3902.         0001h  service not installed
  3903.         0002h  invalid service ID
  3904.         0003h-000Ah reserved for BANV interface errors
  3905.         0097h  invalid socket identifier
  3906.         009Bh  destination node unreachable
  3907.         009Ch  message overflow
  3908.         009Dh  destination socket nonexistent
  3909.         00A2h  no more buffer space
  3910.         00A3h  timeout
  3911.         00B1h  resource disconnect
  3912. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  3913.       interrupt handler is identified by the string "BANV" in the four
  3914.       bytes immediately preceding the interrupt handler
  3915.  
  3916. Format of control block:
  3917. Offset    Size    Description
  3918.  00h    WORD    0002h
  3919.  02h    WORD    pointer to argument block (see below)
  3920.  04h    WORD    error return code
  3921.         0000h successful
  3922.         0097h invalid socket ID
  3923.         00A2h no more buffer space
  3924.         00A3h timeout event
  3925.         00A5h resource not available
  3926.         00A6h internal communication failure
  3927.         00B1h resource disconnect
  3928.  06h  4 BYTEs    reserved
  3929.  
  3930. Format of argument block:
  3931. Offset    Size    Description
  3932.  00h    WORD    routine metric
  3933.  02h    WORD    error return code
  3934.  04h    WORD    socket identifier
  3935.  06h    WORD    pointer to send buffer
  3936.  08h    WORD    length of send buffer
  3937.  0Ah    WORD    flags
  3938.         bit 0: async request
  3939.             1: reliable message
  3940.             3: end of user message received
  3941.             4: vectored request (if set, send buffer contains buffer
  3942.             descriptors)
  3943.             5: connection-specific receive
  3944.             6: change to connection-specific receive mode
  3945.  0Ch 16 BYTEs    socket address (see below)
  3946.  1Ch    WORD    timeout value in multiples of 200ms
  3947.  1Eh    WORD    connection identifier
  3948.  20h    WORD    type of request
  3949.         0001h send message
  3950.         0002h establish a virtual connection
  3951.         0003h terminate a virtual connection
  3952.  
  3953. Format of buffer descriptor:
  3954. Offset    Size    Description
  3955.  00h    WORD    data segment
  3956.  02h    WORD    buffer pointer
  3957.  04h    WORD    buffer length
  3958.  06h    WORD    character count
  3959.  
  3960. Format of socket address for unreliable datagrams:
  3961. Offset    Size    Description
  3962.  00h    WORD    0003h      address family
  3963.  02h    DWORD    FFFFFFFFh network number
  3964.  06h    WORD    FFFFh      subnet number
  3965.  08h    WORD          local port number
  3966.  0Ah    BYTE    00h-0Fh      hop count
  3967.  0Bh  5 BYTEs    0000h      filler
  3968. ----------610001-----------------------------
  3969. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  3970.     AX = 0001h
  3971.     DS:DX -> communications control block (function 0003h)
  3972. Return: AX = status
  3973.         0000h  successful
  3974.         0001h  service not installed
  3975.         0002h  invalid service ID
  3976.         0003h-000Ah reserved for BANV interface errors
  3977.         0097h  invalid socket identifier
  3978.         00A2h  no more buffer space
  3979.         00A3h  timeout
  3980. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  3981.       interrupt handler is identified by the string "BANV" in the four
  3982.       bytes immediately preceding the interrupt handler
  3983.  
  3984. Format of control block:
  3985. Offset    Size    Description
  3986.  00h    WORD    0003h
  3987.  02h    WORD    pointer to argument block (see below)
  3988.  04h    WORD    error return code
  3989.         0000h successful
  3990.         0097h invalid socket ID
  3991.         00A2h no more buffer space
  3992.         00A3h timeout event
  3993.         00A5h resource not available
  3994.         00A6h internal communication failure
  3995.         00B1h resource disconnect
  3996.  06h  4 BYTEs    reserved
  3997.  
  3998. Format of argument block:
  3999. Offset    Size    Description
  4000.  00h    WORD    character count
  4001.  02h    WORD    error return code
  4002.  04h    WORD    socket identifier
  4003.  06h    WORD    pointer to receive buffer
  4004.  08h    WORD    length of receive buffer
  4005.  0Ah    WORD    flags
  4006.         bit 0: async request
  4007.             2: flush receive buffer on overflow
  4008.             3: end of user message received
  4009.             4: vectored request (if set, receive buffer contains buffer
  4010.             descriptors)
  4011.             5: connection-specific receive
  4012.             6: change to connection-specific receive mode
  4013.  0Ch 16 BYTEs    socket address
  4014.  1Ch    WORD    timeout value in multiples of 200ms
  4015.  1Eh    WORD    connection identifier
  4016.  20h    WORD    type of response
  4017.         0001h message received
  4018.         0002h virtual connection established
  4019.         0003h virtual connection terminated
  4020.  
  4021. Format of buffer descriptor:
  4022. Offset    Size    Description
  4023.  00h    WORD    data segment
  4024.  02h    WORD    buffer pointer
  4025.  04h    WORD    buffer length
  4026.  06h    WORD    character count
  4027. ----------610001-----------------------------
  4028. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  4029.     AX = 0001h
  4030.     DS:DX -> communications control block (function 0004h)
  4031. Return: AX = status
  4032.         0000h  successful
  4033.         0001h  service not installed
  4034.         0002h  invalid service ID
  4035.         0003h-000Ah reserved for BANV interface errors
  4036.         0097h  invalid socket identifier
  4037. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4038.       interrupt handler is identified by the string "BANV" in the four
  4039.       bytes immediately preceding the interrupt handler
  4040.  
  4041. Format of control block:
  4042. Offset    Size    Description
  4043.  00h    WORD    0004h
  4044.  02h    WORD    pointer to argument block (see below)
  4045.  04h    WORD    error return code
  4046.  06h  4 BYTEs    reserved
  4047.  
  4048. Format of argument block:
  4049. Offset    Size    Description
  4050.  00h    WORD    socket identifier
  4051. ----------610001-----------------------------
  4052. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  4053.     AX = 0001h
  4054.     DS:DX -> communications control block (function 0005h)
  4055. Return: AX = status
  4056.         0000h  successful
  4057.         0001h  service not installed
  4058.         0002h  invalid service ID
  4059.         0003h-000Ah reserved for BANV interface errors
  4060.         00A2h  no more buffer space available
  4061.         00A3h  timeout event
  4062. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4063.       interrupt handler is identified by the string "BANV" in the four
  4064.       bytes immediately preceding the interrupt handler
  4065.     returns results for all asynchronous operations invoked from the
  4066.       data segment used for this call
  4067.  
  4068. Format of control block:
  4069. Offset    Size    Description
  4070.  00h    WORD    0005h
  4071.  02h    WORD    pointer to argument block (see below)
  4072.  04h    WORD    error return code
  4073.  06h  4 BYTEs    reserved
  4074.  
  4075. Format of argument block:
  4076. Offset    Size    Description
  4077.  00h    WORD    pointer to WORD event pointer
  4078.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  4079. ----------610001-----------------------------
  4080. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  4081.     AX = 0001h
  4082.     DS:DX -> communications control block (function 0008h)
  4083. Return: AX = status
  4084.         0000h  successful
  4085.         00A2h  no more buffer space available
  4086. Note:    BANYAN can use any interrupt from 60h through 66h (default 61h).  The
  4087.       Banyan interrupt handler is identified by the string "BANV" in the
  4088.       four bytes immediately preceding the interrupt handler
  4089.  
  4090. Format of control block:
  4091. Offset    Size    Description
  4092.  00h    WORD    0008h
  4093.  02h    WORD    process type
  4094.         0001h transient process
  4095.         0002h resident process
  4096.  04h    WORD    error return code
  4097.  06h  4 BYTEs    reserved
  4098. ----------610001-----------------------------
  4099. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  4100.     AX = 0001h
  4101.     DS:DX -> communications control block (function 000Bh)
  4102. Return: AX = status
  4103.         0000h  successful
  4104.         0001h  service not installed
  4105.         0002h  invalid service ID
  4106.         0003h-000Ah reserved for BANV interface errors
  4107.         00A2h  no more buffer space available
  4108. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4109.       interrupt handler is identified by the string "BANV" in the four
  4110.       bytes immediately preceding the interrupt handler
  4111.     FAR user function is invoked with SS,DS, and ES set to segment of
  4112.       control block, and with the stack containing
  4113.         DWORD    return address
  4114.         WORD    argument pointer (sosend or sorec argument block)
  4115.         WORD    error return code
  4116.             0000h argument pointer is valid
  4117.             00A3h timeout
  4118.  
  4119. Format of control block:
  4120. Offset    Size    Description
  4121.  00h    WORD    000Bh
  4122.  02h    WORD    pointer to argument block (see below)
  4123.  04h    WORD    error return code
  4124.  06h  2 BYTEs    reserved
  4125.  08h    WORD    user CS register
  4126.  
  4127. Format of argument block:
  4128. Offset    Size    Description
  4129.  00h    WORD    pointer to user interrupt function    
  4130.  02h    WORD    pointer to user stack
  4131.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  4132. ----------610001-----------------------------
  4133. INT 61 - OPTIMA 1024 VGA-Sync - CENTER ZOOM WINDOW
  4134.     AX = 0001h
  4135.     BX = X coordinate to center
  4136.     CX = Y coordinate to center
  4137. Notes:    Positions the zoom window such that the specified window-relative
  4138.       coordinates appear as close as possible to the center of the
  4139.       display.  Useful for scrolling and panning.
  4140.     INT 61h is the default interrupt; the actual interrupt number can be
  4141.       obtained by calling INT 16/AH=FFh
  4142. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0002h"OPTIMA"
  4143. SeeAlso: INT 61/AX=0005h"OPTIMA"
  4144. ----------610002-----------------------------
  4145. INT 61 - Banyan VINES - 3270 INTERFACE
  4146.     AX = 0002h
  4147.     BH = function
  4148.         00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  4149.         02h "pi2bsc" (3270/BSC only)
  4150.         03h    "pi2get"    get information stored in 3270 resident driver
  4151.         04h "pi2put"    store information in 3270 resident driver
  4152.         05h "pi2gcur"   get current screen position
  4153.         07h "pi2sdat"   send data keystroke
  4154.         08h "pi2scom"   send command keystroke
  4155.         0Ah "pi2field"  get field info for arbitrary screen positions
  4156.         0Fh "pi2stat"   get logical unit/device status
  4157.         12h "pi2nlus"   determine logical unit/device assignment
  4158.         13h "pi2gate"   specifies comm port address to gateway service
  4159.         14h "pi2attach" attach a logical unit/device
  4160.         15h "pi2sdev"   save logical unit/device info in resident driver
  4161.                 (not supported in >3.0)
  4162.         16h "pi2gdev"   get device information (not supported in >3.0)
  4163.         17h "pi2luinfo" get info about specific logical unit/device
  4164.         18h "pi2gerr"   get finer error detail
  4165.         19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  4166.         1Ah "pi2shut"   release memory-resident module
  4167.         1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  4168.         1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  4169.     DS:CX -> argument block (except BH=00h,1Ah)
  4170. Return: AX = status
  4171.         0000h successful
  4172.         000Bh invalid parameter or data does not fit data area
  4173.         000Ch another code path currently active in resident driver
  4174.         000Dh operation currently not allowed
  4175.         0032h encountered connection disconnect error
  4176.         0033h encountered "sosend" completion error
  4177.         0034h encountered "sosend" communication error
  4178.         0035h attach request refused.  extended error info via "pi2gerr":
  4179.             01h resource unavailable
  4180.             02h invalid type
  4181.             03h version mismatch
  4182.             04h invalid logical unit number
  4183.             05h error during ARL processing
  4184.             06h no access for user
  4185.         0071h encountered "sosock" error
  4186.         0072h encountered unrecognizable error
  4187.         0073h encountered "sowait" error (extended info via "pi2gerr")
  4188.         0074h encountered invalid type-of-request on "sowait"
  4189.         0075h encountered "sorec" error (extended info via "pi2gerr")
  4190.         0076h encountered "sorec" completion error (ext info via "pi2gerr")
  4191.         0077h encountered connection request
  4192.         0078h encountered unrecognizable data
  4193.         0079h encountered unknown connection ID (ext info via "pi2gerr")
  4194. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  4195.       which is loaded first.  The other interface will use AX=000Ah
  4196.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  4197.       or 3270/BSC resident driver, which must be reloaded by the user
  4198.  
  4199. Format of argument block for BH=03h,04h:
  4200. Offset    Size    Description
  4201.  00h    WORD    size of data area (max 256)
  4202.  02h  N BYTEs    data area
  4203.  
  4204. Format of argument block for BH=05h:
  4205. Offset    Size    Description
  4206.  00h    WORD    logical unit/device number
  4207.  02h    WORD    pointer to WORD buffer for cursor index
  4208.  04h    WORD    pointer to BYTE buffer for current field attribute
  4209.  
  4210. Format of argument block for BH=07h:
  4211. Offset    Size    Description
  4212.  00h    WORD    logical unit/device number
  4213.  02h    WORD    ASCII data byte
  4214.  04h    WORD    pointer to WORD count of characters which will need updating
  4215.  
  4216. Format of argument block for BH=08h:
  4217. Offset    Size    Description
  4218.  00h    WORD    logical unit/device number
  4219.  02h    WORD    keystroke
  4220.         0000h Enter
  4221.         0001h Clear
  4222.         0002h PA1
  4223.         0003h PA2
  4224.         0004h PA3
  4225.         0005h PF1
  4226.         ...
  4227.         001Ch PF24
  4228.         001Dh CSELECT (cursor select)
  4229.         001Eh Insert
  4230.         001Fh Delete
  4231.         0020h EOField
  4232.         0021h EINPUT (erase input)
  4233.         0022h Reset
  4234.         0023h Attention
  4235.         0024h SysReq
  4236.         0025h Duplicate
  4237.         0026h Fieldmark
  4238.         0027h Home
  4239.         0028h NextLine
  4240.         0029h Tab
  4241.         002Ah BackTab
  4242.         002Bh cursor up
  4243.         002Ch cursor down
  4244.         002Dh cursor right
  4245.         002Eh cursor left
  4246.         002Fh double cursor right
  4247.         0030h double cursor left
  4248.         0031h PRINT
  4249.         0032h CANCEL
  4250.         0033h Backspace
  4251.  
  4252. Format of argument block for BH=0Ah:
  4253. Offset    Size    Description
  4254.  00h    WORD    logical unit/device number
  4255.  02h    WORD    screen index
  4256.  04h    WORD    pointer to WORD buffer for field length
  4257.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  4258.  
  4259. Format of argument block for BH=0Fh:
  4260. Offset    Size    Description
  4261.  00h    WORD    logical unit/device number
  4262.  02h    WORD    clear mask (clear these bits of status after returning status)
  4263.  04h    WORD    pointer to WORD buffer for status
  4264.         bit 10: status modified
  4265.         bit  9: buffer modified
  4266.         bit  8: set cursor
  4267.         bit  5: sound alarm
  4268.         bits 0,1: size of print line for printer logical units
  4269.             00 unformatted line
  4270.             01 40-character line
  4271.             10 64-character line
  4272.             11 80-character line
  4273.  
  4274. Format of argument block for BH=12h:
  4275. Offset    Size    Description
  4276.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  4277.  02h    WORD    pointer to WORD buffer for version number
  4278.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  4279.  
  4280. Format of argument block for BH=13h:
  4281. Offset    Size    Description
  4282.  00h 16 BYTEs    communications port address (see AX=0001h#"Sosock")
  4283.  
  4284. Format of argument block for BH=14h:
  4285. Offset    Size    Description
  4286.  00h    WORD    logical unit/device number 
  4287.         0000h attach any free device of the specified type
  4288.  02h    WORD    logical unit/device type
  4289.         (3270/SNA) 01h, 02h, or 03h
  4290.         (3270/BSC) 02h display
  4291.         (3270/BSC) 03h printer
  4292.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  4293.  
  4294. Format of argument block for BH=16h:
  4295. Offset    Size    Description
  4296.  00h    WORD    pointer to 18-byte buffer for device block (see below)
  4297.         first WORD must be set to desired logical unit/device number
  4298.  
  4299. Format of argument block for BH=17h:
  4300. Offset    Size    Description
  4301.  00h    WORD    logical unit/device number
  4302.  02h    WORD    pointer to information block in caller's DS (see below)
  4303.  
  4304. Format of argument block for BH=18h:
  4305. Offset    Size    Description
  4306.  00h    WORD    pointer to WORD buffer for major error code
  4307.  02h    WORD    pointer to WORD buffer for minor error code
  4308.  
  4309. Format of argument block for BH=19h:
  4310. Offset    Size    Description
  4311.  00h    WORD    logical unit/device number
  4312.  
  4313. Format of argument block for BH=1Ch,1Dh:
  4314. Offset    Size    Description
  4315.  00h    WORD    pointer to profile block in caller's DS (see below)
  4316.  
  4317. Format of device block, argument block for BH=15h:
  4318. Offset    Size    Description
  4319.  00h    WORD    logical unit/device number
  4320.  02h    WORD    logical unit/device type
  4321.  04h    WORD    display model number
  4322.  06h    WORD    numeric checking
  4323.  08h    WORD    status line
  4324.  0Ah    BYTE    unprotected normal field attribute
  4325.  0Bh    BYTE    unprotected intensified field attribute
  4326.  0Ch    BYTE    protected normal field attribute
  4327.  0Dh    BYTE    protected intensified field attribute
  4328.  0Eh    WORD    reserved
  4329.  10h    WORD    printer port number
  4330.  
  4331. Format of information block:
  4332. Offset    Size    Description
  4333.  00h    WORD    device model number
  4334.  02h    DWORD    screen buffer pointer
  4335.  06h    DWORD    status line pointer (see below)
  4336.  0Ah    DWORD    reserved
  4337.  
  4338. Format of status line:
  4339. Offset    Size    Description
  4340.  00h    BYTE    comm line status
  4341.         00h inactive
  4342.         01h active
  4343.  01h    BYTE    activation level
  4344.         01h physical unit activated
  4345.         02h logical unit also activated
  4346.         03h session is bound
  4347.  02h    BYTE    data traffic state
  4348.         00h inactive
  4349.         01h active
  4350.  03h    BYTE    screen ownership
  4351.         00h SLU->PLU sessoin owns screen
  4352.         01h SLU->SSCP session owns screen
  4353.  04h    BYTE    keyboard status
  4354.         00h UNLOCK - ready to accept data
  4355.         01h TIME - aid was struck
  4356.         02h SYSTEM - received response no restore
  4357.         03h FUNCTION - unavailable keyboard function
  4358.         04h INPUT - not currently used
  4359.         05h ENDFIELD - field filled in insert mode
  4360.         06h PROTECTED - attempt to enter in protected field
  4361.         07h NUMERIC - attempt to enter in numeric field
  4362.         08h PROGRAM - error in outbound data stream
  4363.  05h    BYTE    insert mode
  4364.         01h if in insert mode
  4365.  06h    BYTE    numeric
  4366.         01h if current screen buffer is numeric only
  4367.  07h    BYTE    printer status
  4368.         00h printer not assigned
  4369.         01h printer is inactive
  4370.         02h printer error
  4371.         03h currently printing
  4372.         04h printer is busy
  4373.         05h printer is very busy
  4374.  08h    BYTE    printer assignment
  4375.  09h    BYTE    maximum size of network name
  4376.  0Ah  N BYTEs    ASCIZ network name
  4377.     BYTE    maximum size of message window
  4378.       M BYTEs    null-terminated message window
  4379.     BYTE    code set
  4380.         00h EBCDIC
  4381.         01h ASCII
  4382.       M BYTEs    extended attributes
  4383.         01h extended attributes are in effect (stored at screen+1920)
  4384.             each extended attribute specifies
  4385.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  4386.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  4387.                   100=green,101=turquoise,110=yellow,111=white
  4388.     BYTE    extended color
  4389.         01h other than base color is in effect
  4390.  
  4391. Format of profile block:
  4392. Offset    Size    Description
  4393.  00h 64 BYTEs    gateway service name
  4394.  40h 16 BYTEs    gateway comm port address
  4395.  50h    WORD    primary logical unit number
  4396.  52h    WORD    secondary logical unit type
  4397.  54h    WORD    secondary logical unit number
  4398.  56h    WORD    printer assignment
  4399.  58h 50 BYTEs    keyboard definitions filename
  4400. ----------610002-----------------------------
  4401. INT 61 - OPTIMA 1024 VGA-Sync - END ZOOM
  4402.     AX = 0002h
  4403. Note:    switches off zoom and returns window to its original state
  4404.     INT 61h is the default interrupt; the actual interrupt number can be
  4405.       obtained by calling INT 16/AH=FFh
  4406. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA"
  4407. ----------610003-----------------------------
  4408. INT 61 - Banyan VINES - ASYNCHRONOUS TERMINAL EMULATION
  4409.     AX = 0003h
  4410.     DS:BX -> argument block with function number (see below)
  4411. Return: AX = status
  4412.         0000h successful
  4413.         000Bh invalid session ID
  4414.         000Ch session not active
  4415.         000Dh invalid request type
  4416.         000Eh invalid parameters
  4417.         000Fh out of heap space
  4418.         0010h timeout on send
  4419.         0011h Banyan communications error
  4420.         0012h session not waiting for host
  4421.         0013h session is active
  4422.         0014h duplicate suspend session request
  4423.         0015h no session suspended
  4424.         0016h ring data buffer full
  4425.         0017h printer error encountered
  4426.         0018h Banyan communications error
  4427.         0019h unable to make connection
  4428.         001Ah no ring buffer specified at startup
  4429.         001Bh service is down
  4430.         001Ch invalid service name
  4431.         001Dh service is closed
  4432.         001Eh invalid connection name
  4433.         001Fh max session limit reached for service
  4434.         0020h access rights list for connection/dialout does not include
  4435.             this user
  4436.         0021h service not responding
  4437.         0022h missing telephone number
  4438.  
  4439. Format of argument block:
  4440. Offset    Size    Description
  4441.  00h    BYTE    session ID (00h)
  4442.  01h    BYTE    asynchronous interface request number
  4443.         00h initialize user buffer pointer information area
  4444.         01h send to host
  4445.         02h "control monitor"
  4446.         03h "flow control data": freeze/unfreeze display, ring buffer
  4447.         04h end active session
  4448.         05h set session parameter
  4449.         06h get session parameter
  4450.         07h set tab settings
  4451.         08h get tab settings
  4452.         09h refresh emulation screen
  4453.         0Ah suspend session temporarily
  4454.         0Bh restore previously suspended session
  4455.         0Ch set state of scroll lock checking
  4456.         0Dh exit emulation
  4457.         0Eh interrupt on character from host
  4458.         0Fh start a session
  4459.         10h start/stop printing of data received from host
  4460.         11h get file transfer parameters
  4461.         12h get connection information
  4462.         13h start/stop tracing data traffic in session
  4463.         14h interrupt on message from host
  4464.         15h reset error
  4465. ---request=00h---
  4466.  02h    WORD    pointer to info area in caller's current DS
  4467.         Offset    Size    Description
  4468.          00h    WORD    flags
  4469.                 0000h don't read interface's data buffer
  4470.                 0001h read data buffer
  4471.          02h    DWORD    pointer to ring buffer
  4472.          06h    WORD    length of ring buffer
  4473.          08h    WORD    ring buffer offset to last byte read by caller
  4474.          0Ah    DWORD    pointer to WORD containing offset of last byte
  4475.                   in ring buffer filled
  4476.          0Eh    DWORD    pointer to screen buffer
  4477.          12h    DWORD    pointer to field containing cursor position
  4478.          16h    DWORD    pointer to terminal status area (see below)
  4479. ---request=01h---
  4480.  02h    BYTE    type
  4481.         00h ASCII byte
  4482.         01h ASCII string
  4483.         02h terminal function code
  4484.         03h up arrow
  4485.         04h down arrow
  4486.         05h left arrow
  4487.         06h right arrow
  4488.         07h break
  4489.  03h  N BYTEs    type-specific info
  4490.         Offset    Size    Description
  4491.         ---ASCII byte---
  4492.          03h    BYTE    byte to send to host
  4493.         ---ASCII string---
  4494.          03h    WORD    length of string
  4495.          05h    WORD    pointer to string
  4496.         ---terminal function code (VT52/VT100)---
  4497.          03h    BYTE    function code
  4498.                 00h keypad 0
  4499.                 01h keypad 1
  4500.                 ...
  4501.                 09h keypad 9
  4502.                 0Ah keypad -
  4503.                 0Bh keypad ,
  4504.                 0Ch keypad .
  4505.                 0Dh keypad ENTER
  4506.                 0Eh PF1
  4507.                 0Fh PF2
  4508.                 10h PF3
  4509.                 11h PF4
  4510.         ---terminal function code (IBM3101)---
  4511.          03h    BYTE    function code
  4512.                 00h PF1
  4513.                 ...
  4514.                 07h PF8
  4515.                 08h Home
  4516. ---request=02h---
  4517.  02h    BYTE    display flag
  4518.         00h don't display data received from host
  4519.         01h display data
  4520. ---request=03h---
  4521.  02h    BYTE    flow control flag
  4522.         00h allow characters to be put into display or ring buffer
  4523.         01h don't place any more characters into display or ring buffer
  4524. ---request=05h,06h---
  4525.  02h    BYTE    parameter number
  4526.         00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  4527.             05h=300,06h=600,07h=1200,08h=2400,09h=4800, 0Ah=9600)
  4528.         01h parity (00h=none, 01h=odd, 02h=even)
  4529.         02h duplex (00h=full, 01h=half)
  4530.         03h character size (00h=7 bits, 01h=8 bits)
  4531.         04h stop bits (00h=1, 01h=2)
  4532.         05h XON/XOFF flow control (00h=no, 01h=yes)
  4533.         07h intercharacter delay in tenths of a second
  4534.         08h interline delay in tenths of a second
  4535.         09h auto linefeed (00h=no, 01h=yes)
  4536.         0Ah filter control characters (00h=no, 01h=yes)
  4537.         0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  4538.         0Ch auto wrap (00h=no, 01h=yes)
  4539.         0Dh cursor shape (00h=underscore, 01h=block)
  4540.         0Eh character set (00h=UK, 01h=US ASCII)
  4541.         0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  4542.  03h    BYTE    parameter value (returned for 06h)
  4543. ---request=07h,08h---
  4544.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  4545.           each byte = 00h if no tab, 01h if tab at that position
  4546. ---request=0Ah---
  4547.  02h    WORD    size of session information to be saved
  4548.  04h    WORD    pointer to buffer in caller's DS
  4549. ---request=0Bh---
  4550.  02h    WORD    size of buffer into which session info is restored
  4551.  04h    WORD    pointer to buffer in caller's DS
  4552. ---request=0Ch---
  4553.  02h    BYTE    check_scroll_lock flag
  4554.         00h off
  4555.         01h on (display of host data stopped while ScrollLock on)
  4556. ---request=0Eh,14h---
  4557.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  4558.  06h    DWORD    stack pointer to use when call is made
  4559. ---request=0Fh---
  4560.  02h    WORD    pointer to information area in caller's current DS
  4561.         Offset    Size    Description
  4562.          00h    WORD    length of service name
  4563.          02h    WORD    pointer to service name in caller's DS
  4564.          04h    BYTE    type of connection
  4565.                 (00h=connection name, 01h=dialout)
  4566.          05h    WORD    length of connection name/telephone number
  4567.          07h    WORD    pointer to connection name/telephone number
  4568. ---request=10h---
  4569.  02h    WORD    print capture flag (00h=off, 01h=on)
  4570. ---request=11h---
  4571.  02h    WORD    pointer to info area in caller's current DS
  4572.         Offset    Size    Description
  4573.          00h    BYTE    protocol flag (00h none, 01h Kermit)
  4574.          01h    BYTE    direction flag (00h send, 01h receive)
  4575.          02h    BYTE    length of null-terminated PC filename
  4576.          03h    DWORD    pointer to null-terminated PC filename
  4577.          07h    BYTE    length of null-terminated host filename
  4578.          08h    DWORD    pointer to null-terminated host filename
  4579. ---request=12h---
  4580.  02h    WORD    pointer to info area in caller's current DS (see below)
  4581.         Offset    Size    Description
  4582.          00h    WORD    length of service name (returned)
  4583.          02h    WORD    pointer to 64-byte buffer for service name
  4584.          04h    BYTE    type of connection
  4585.                 00h connection name
  4586.                 01h dialout
  4587.          05h    WORD    length of connection name/telephone number
  4588.          07h    WORD    pointer to 64-byte buffer for name/telno
  4589.          09h    BYTE    server line number being used (returned)
  4590. ---request=13h---
  4591.  02h    BYTE    trace flag (00h=off, 01h=on)
  4592.  
  4593. Format of terminal status area:
  4594. Offset    Size    Description
  4595.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  4596.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  4597.  02h    BYTE    current keypad mode (VT100,VT52 only)
  4598.         4Eh ("N") numeric mode
  4599.         41h ("A") application mode
  4600.  03h  4 BYTEs    current state of LEDs (VT100 only)
  4601.         00h off
  4602.         01h on
  4603.  07h    WORD    line error count
  4604.  09h    WORD    primary error code
  4605.         0000h no error
  4606.         0001h unable to make connection
  4607.         0002h communications error, restart session
  4608.         0003h async terminal emulation service unavailable
  4609.         0004h lost carrier
  4610.         0005h all matching lines busy
  4611.         0006h no lines defined for connection name
  4612.         0007h no dial lines available on server
  4613.         0008h no matching dial lines available
  4614.         0009h out of heap space
  4615.         000Ah service error encountered
  4616.         000Bh timed out waiting to connect
  4617.         000Ch communications error
  4618.         000Dh communications error
  4619.         000Eh host wants file transferred to/from PC
  4620.         000Fh host software changed session parameter
  4621.         0010h host software changed tap settings
  4622.         0011h host software changed LED indicator
  4623.         0012h host software changed display background (secondary error
  4624.             code 00h for white on black, 01h for black on white)
  4625.         0013h host software changed display option (secondary error
  4626.             code 00h for off, 01h for on)
  4627.         0014h communications error
  4628.         0015h communications error
  4629.         0016h unable to make connection
  4630.         0017h unable to make connection
  4631.  0Bh    WORD    secondary error code
  4632. ----------610003-----------------------------
  4633. INT 61 - OPTIMA 1024 VGA-Sync - REPORT ZOOM FACTOR
  4634.     AX = 0003h
  4635. Return: AX = zoom factor
  4636. Note:    returns the current zoom factor
  4637.     INT 61h is the default interrupt; the actual interrupt number can be
  4638.       obtained by calling INT 16/AH=FFh
  4639. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0005h"OPTIMA"
  4640. ----------610004-----------------------------
  4641. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  4642.     AX = 0004h
  4643.     DS:DX -> request block (function 0008h)
  4644. Return: AX = status
  4645.         0000h server ID returned in request block
  4646.         000Fh invalid drive
  4647.         0015h drive not ready
  4648.  
  4649. Format of request block:
  4650. Offset    Size    Description
  4651.  00h    WORD    0008h
  4652.  02h    WORD    drive number (0=default, 1=A, ...)
  4653.  04h  6 BYTEs    buffer for server ID
  4654. ----------610004-----------------------------
  4655. INT 61 - OPTIMA 1024 VGA-Sync - ENTER SPECIFY MODE
  4656.     AX = 0004h
  4657. Note:    Specify Mode is enabled by hot key (seeAlso below), and allows
  4658.     panning and zooming via the numeric keypad.
  4659.     INT 61h is the default interrupt; the actual interrupt number can be
  4660.       obtained by calling INT 16/AH=FFh
  4661.     The Zoom interrupt no. can be obtained with function INT 16h,AH=0FFh
  4662. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0007h"OPTIMA"
  4663. ----------610005-----------------------------
  4664. INT 61 - Banyan VINES - PRINTER CONTROL
  4665.     AX = 0005h
  4666.     DS:DX -> request block
  4667. Return: AX = status
  4668.         0000h successful
  4669.         0001h network software not installed or incompatible
  4670. SeeAlso: INT 2F/AX=D702h
  4671.  
  4672. Format of request block:
  4673. Offset    Size    Description
  4674.  00h    WORD    function
  4675.         0201h "endspool" all data for a print job has been sent
  4676.         0205h "getactive" get currently active printer port
  4677.  02h    WORD    number of active port (1-3)
  4678.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  4679.  06h    WORD    0000h
  4680. ----------610005-----------------------------
  4681. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  4682.     AX = 0005h
  4683.     BX:CX -> buffer for window parameters (see below)
  4684. Note:    INT 61h is the default interrupt; the actual interrupt number can be
  4685.       obtained by calling INT 16/AH=FFh
  4686. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0003h"OPTIMA"
  4687. SeeAlso: INT 61/AX=0006h"OPTIMA"
  4688.  
  4689. Format of window parameters:
  4690. Offset    Size    Description
  4691.  00h    WORD    X start of zoom window
  4692.  02h    WORD    Y start of zoom window
  4693.  04h    WORD    X end of zoom window
  4694.  06h    WORD    Y end of zoom window
  4695.  08h    WORD    current zoom factor
  4696.  0Ah    WORD    zoom offset start X
  4697.  0Ch    WORD    zoom offset start Y
  4698. ----------610006-----------------------------
  4699. INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM WINDOW
  4700.     AX = 0006h
  4701.     BX:CX -> zoom window description (see below)
  4702. Notes:    width of zoom window must be a multiple of the pixel replication
  4703.       factor
  4704.     INT 61h is the default interrupt; the actual interrupt number can be
  4705.       obtained by calling INT 16/AH=FFh
  4706. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0001h"OPTIMA"
  4707. SeeAlso: INT 61/AX=0005h"OPTIMA",INT 61/AX=0008h"OPTIMA"
  4708.  
  4709. Format of zoom window description:
  4710. Offset    Size    Description
  4711.  00h    WORD    X start of zoom window
  4712.  02h    WORD    Y start of zoom window
  4713.  04h    WORD    X end of zoom window
  4714.  06h    WORD    Y end of zoom window
  4715. ----------610007-----------------------------
  4716. INT 61 - OPTIMA 1024 VGA-Sync - QUERY APPLICATION KEY
  4717.     AX = 0007h
  4718. Return: AX = 0000h/0001h
  4719. Notes:    In specify mode, the END key has been reserved for applications.
  4720.     Returns the current toggle state of that key. E.g. in the
  4721.       OPTIMA AutoCAD driver, 0 means, AutoCAD calls subfunction 0001h
  4722.       every time the cross cursor moves.
  4723.     INT 61h is the default interrupt; the actual interrupt number can be
  4724.       obtained by calling INT 16/AH=FFh
  4725. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0001h"OPTIMA"
  4726. SeeAlso: INT 61/AX=0004h"OPTIMA",INT 7A"AutoCAD"
  4727. ----------610007BX0002-----------------------
  4728. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  4729.     AX = 0007h
  4730.     BX = 0002h
  4731.     DS:DX -> StreetTalk service name
  4732.     DS:DI -> port record block (see below)
  4733. Return: AX = status
  4734.         0000h successful
  4735.         0001h PC network software not installed or incompatible
  4736.         03E9h incorrect name syntax
  4737.         03EAh organization name too long
  4738.         03EBh group name too long
  4739.         03ECh item name too long
  4740.         03EDh StreetTalk name too long
  4741.         03F3h organization not found
  4742.         03F4h group not found
  4743.         03F5h StreetTalk name not found
  4744.         03F8h not a StreetTalk name
  4745.         040Dh appropriate StreetTalk name unavailable
  4746.  
  4747. Format of port record block:
  4748. Offset    Size    Description
  4749.  00h    WORD    number of 17-byte elements
  4750.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  4751.         (see AX=0001h#"Sosock" for port format)
  4752. ----------610007BX0004-----------------------
  4753. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  4754.     AX = 0007h
  4755.     BX = 0004h
  4756.     DS:DX -> StreetTalk name of service
  4757.     DS:DI -> port record block (see below)
  4758. Return: AX = status
  4759.         0000h successful
  4760.         0001h PC network software not installed or incompatible
  4761.         03E9h incorrect name syntax
  4762.         03EAh organization name too long
  4763.         03EBh group name too long
  4764.         03ECh item name too long
  4765.         03EDh StreetTalk name too long
  4766.         03F3h organization not found
  4767.         03F4h group not found
  4768.         03F5h StreetTalk name not found
  4769.         03F8h not a StreetTalk name
  4770.         0409h modify access denied
  4771.         040Dh appropriate StreetTalk name unavailable
  4772.  
  4773. Format of port record block:
  4774. Offset    Size    Description
  4775.  00h    WORD    number of 17-byte elements
  4776.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  4777.         (see AX=0001h#"Sosock" for port format)
  4778. ----------610007BX0005-----------------------
  4779. INT 61 - Banyan VINES - GET USER NAME
  4780.     AX = 0007h
  4781.     BX = 0005h
  4782.     DS:DX -> 64-byte buffer for user's StreetTalk name
  4783. Return: AX = status
  4784.         0000h successful
  4785.         0001h network software not installed or incompatible
  4786. Note:    if no user logged in, first byte of returned name will be 00h
  4787. ----------610007BX0006-----------------------
  4788. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  4789.     AX = 0007h
  4790.     BX = 0006h
  4791.     SI = error code (>100)
  4792.     DS:DX -> 80-byte buffer for error text
  4793. Return: AX = status
  4794.         0000h successful
  4795.         0001h network software not installed or incompatible        
  4796. ----------610007BX0007-----------------------
  4797. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  4798.     AX = 0007h
  4799.     BX = 0007h
  4800.     DS:DX -> NiceName block (see below)
  4801. Return: AX = status
  4802.         0000h successful
  4803.         0001h PC network software not installed or incompatible
  4804.         03E9h incorrect name syntax
  4805.         03EAh organization name too long
  4806.         03EBh group name too long
  4807.         03ECh item name too long
  4808.         03EDh StreetTalk name too long
  4809.         03F3h organization not found
  4810.         03F4h group not found
  4811.         03F5h StreetTalk name not found
  4812.         03F8h not a StreetTalk name
  4813.         040Dh appropriate StreetTalk name unavailable
  4814. SeeAlso: AX=0007h/BX=0008h
  4815.  
  4816. Format of NiceName block:
  4817. Offset    Size    Description
  4818.  00h    WORD    type of name
  4819.         0064h organization
  4820.         00C8h group
  4821.         012Ch item
  4822.  02h    WORD    pointer to ASCIZ input name
  4823.  04h    WORD    pointer to 64-byte buffer for output name
  4824. ----------610007BX0008-----------------------
  4825. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  4826.     AX = 0007h
  4827.     BX = 0008h
  4828.     DS:DX -> enumerate block (see below)
  4829. Return: AX = status
  4830.         0000h successful
  4831.         0411h all matching names have been returned
  4832.         0412h some groups unavailable, all available matches returned
  4833. Note:    each program using this call should continue until a nonzero status
  4834.       is returned; otherwise, some resources will not be freed for several
  4835.       hours
  4836. SeeAlso: AX=0007h/BX=0007h
  4837.  
  4838. Format of enumerate block:
  4839. Offset    Size    Description
  4840.  00h    WORD    return code
  4841.  02h    WORD    pointer to pattern string
  4842.  04h    WORD    enumerate type
  4843.         0064h organization
  4844.         00C8h group
  4845.         012Ch item
  4846.  06h    WORD    enumerate class
  4847.         0000h unspecified (return all matching items)
  4848.         0001h user names
  4849.         0002h service names
  4850.         0003h list names
  4851.         0004h nicknames
  4852.  08h    WORD    pointer to category criteria block (see below) or 0
  4853.  0Ah    WORD    pointer to array of 64-byte returned names
  4854.  0Ch    WORD    number of names returned
  4855.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  4856.           call)
  4857.  
  4858. Format of category criteria block:
  4859. Offset    Size    Description
  4860.  00h    WORD    exclude flag
  4861.         0000h return only items with the specified categories
  4862.         0001h return all items except those with the given categories
  4863.  02h    WORD    number of categories
  4864.  04h    WORD    category 1 value
  4865.  06h    WORD    category 2 value
  4866.         ...
  4867.  
  4868. Values for common service categories:
  4869.  0002h file service
  4870.  0003h print service
  4871.  0004h mail service
  4872.  0005h StreetTalk
  4873.  0006h time service
  4874.  0008h semaphore service
  4875.  0009h 3270/SNA service
  4876.  000Ah asynchronous terminal emulation service
  4877.  000Ch NETBIOS service
  4878.  000Dh PC-based service
  4879. ----------610008-----------------------------
  4880. INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM OFFSET
  4881.     AX = 0008h
  4882.     BX = X start of zoom offset
  4883.     CX = Y start of zoom offset
  4884. Notes:    specifies the first byte of video memory to appear in the zoom window
  4885.     INT 61h is the default interrupt; the actual interrupt number can be
  4886.       obtained by calling INT 16/AH=FFh
  4887. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0006h"OPTIMA"
  4888. ----------610008BX0002-----------------------
  4889. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  4890.     AX = 0008h
  4891.     BX = 0002h
  4892.     CX = flags
  4893.         bit 0: message will remain on screen until user presses ^X
  4894.         bit 1: ring bell after displaying message
  4895.         bit 2: blink
  4896.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  4897. Return: AX = status
  4898.         0000h successful
  4899.         000Bh message display function currently busy
  4900.         000Ch message queue full
  4901. Note:    queues up to three messages to be displayed on the bottom line
  4902. ----------610008BX0003-----------------------
  4903. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  4904.     AX = 0008h
  4905.     BX = 0003h
  4906.     DS:DX -> request block
  4907. Return: AX = status
  4908.         0000h successful
  4909.         0001h network software not installed or incompatible
  4910. Notes:    message handler should not call BIOS or DOS functions, and should
  4911.       either call next handler or simply return
  4912.     to stop intercepting messages, set prev and next request blocks to
  4913.       point at each other
  4914.  
  4915. Format of request block:
  4916. Offset    Size    Description
  4917.  00h    DWORD    pointer to user-written message handler
  4918.  04h    DWORD    pointer to next request block (filled in by VINES)
  4919.  08h    DWORD    pointer to previous request block (filled in by VINES)
  4920.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see below)
  4921.  
  4922. Format of message storage area:
  4923. Offset    Size    Description
  4924.  00h 16 BYTEs    IPC port of message sender (see AX=0001h#"Sosock")
  4925.  10h    BYTE    message flags
  4926.  11h    WORD    reserved
  4927.  13h    BYTE    length of message
  4928.  14h 80 BYTEs    message text
  4929. ----------61000A-----------------------------
  4930. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  4931.     AX = 000Ah
  4932. Notes:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  4933.       which is loaded second.  The first interface loaded will use AX=0002h
  4934. SeeAlso: INT 61/AX=0002h
  4935. ----------6101-------------------------------
  4936. INT 61 - Banyan VINES - CHECK SERVICE
  4937.     AH = 01h
  4938.     AL = service ID
  4939.         01h communications
  4940.         02h primary 3270 emulation
  4941.         03h async terminal emulation
  4942.         04h file deflection
  4943.         07h StreetTalk
  4944.         08h environment
  4945.         0Ah secondary 3270 emulation
  4946.         0Bh semaphore service
  4947.         0Ch 3270 emulation active status
  4948.         0Dh 3270 keyboard interrupt simulator
  4949. Return: AX = status
  4950.         0000h installed
  4951.         0001h not installed
  4952.         0002h invalid ID
  4953. ----------6102-------------------------------
  4954. INT 61 - Banyan VINES - GET REVISION NUMBER
  4955.     AH = 02h
  4956.     DS:DX -> 2-byte buffer for result
  4957. Return: AX = 0000h installed
  4958.         DS:DX buffer contains revision number as
  4959.         10000d * major_ver + 100d * minor_ver + patch_revision
  4960. ----------6105-------------------------------
  4961. INT 61 u - PC/TCP kernel v2.05 - "get_addr" - ???
  4962.     AH = 05h
  4963.     BX = connection handle???
  4964. Return: CF clear if successful
  4965.         DX:AX = ???
  4966.     CF set on error
  4967.         AX = error code (see INT 61"PC/TCP")
  4968. Notes:    the installation check consists of testing for the signature "TCPTSR"
  4969.       three bytes beyond the start of the interrupt handler
  4970.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  4971.       interrupt from 20h through E0h
  4972. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=06h
  4973. ----------6106-------------------------------
  4974. INT 61 u - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
  4975.     AH = 06h
  4976.     BX = connection handle???
  4977.     DS:SI -> 38-byte buffer (see below)
  4978. Return: CF clear if successful
  4979.         buffer filled
  4980.     CF set on error
  4981.         AX = error code (see INT 61"PC/TCP")
  4982. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=05h
  4983.  
  4984. Format of buffer:
  4985. Offset    Size    Description
  4986.  00h    WORD    ???
  4987.  02h    WORD    ???
  4988.  04h    WORD    ???
  4989.  06h    DWORD    IP address of interface (big-endian)
  4990.  0Ah    DWORD    subnet mask
  4991.  0Eh    WORD    ??? (apparently always 0001h)
  4992.  10h    DWORD    total packets received
  4993.  14h    DWORD    total packets sent
  4994.  18h    DWORD    receive errors
  4995.  1Ch    DWORD    send errors
  4996.  20h    WORD    ??? (apparently always 0006h)
  4997.  22h    DWORD    pointer to ???
  4998. ----------6107-------------------------------
  4999. INT 61 u - PC/TCP kernel v2.05 - "net_globalize" - ???
  5000.     AH = 07h
  5001.     BX = connection handle???
  5002. Return: CF clear if successful
  5003.         AX = ???
  5004.     CF set on error
  5005.         AX = error code (see INT 61"PC/TCP")
  5006. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5007. ----------6108-------------------------------
  5008. INT 61 u - PC/TCP kernel v2.05 - "net_release" - ???
  5009.     AH = 08h
  5010.     BX = connection handle???
  5011. Return: CF clear if successful
  5012.     CF set on error
  5013.         AX = error code (see INT 61"PC/TCP")
  5014. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5015. ----------6109-------------------------------
  5016. INT 61 u - PC/TCP kernel v2.05 - "net_releaseall" - ??? ALL
  5017.     AH = 09h
  5018. Return: CF clear
  5019. Notes:    performs function 08h on every connection handle???
  5020.     the installation check consists of testing for the signature "TCPTSR"
  5021.       three bytes beyond the start of the interrupt handler
  5022.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  5023.       interrupt from 20h through E0h
  5024. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5025. ----------610A-------------------------------
  5026. INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
  5027.     AH = 0Ah
  5028.     ???
  5029. Return: ???
  5030. ----------610B-------------------------------
  5031. INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
  5032.     AH = 0Bh
  5033.     ???
  5034. Return: ???
  5035. ----------610C-------------------------------
  5036. INT 61 u - PC/TCP kernel v2.05 - "net_stat" - GET CONNECTION STATISTICS
  5037.     AH = 0Ch
  5038.     BX = connection handle???
  5039.         FFFCh for kernel ICMP statistics
  5040.         FFFDh for kernel UDP statistics
  5041.         FFFEh for kernel IP statistics
  5042.         FFFFh for kernel TCP statistics
  5043.     DS:DX -> 64-byte buffer
  5044. Return: CF clear if successful
  5045.         buffer filled
  5046.     CF set on error
  5047.         AX = error code (see INT 61"PC/TCP")
  5048. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5049.  
  5050. Format of handle statistics:
  5051. Offset    Size    Description
  5052.  00h  4 BYTEs    unused
  5053.  04h    DWORD    ???
  5054.  08h  8 BYTEs    unused
  5055.  10h    DWORD    ???
  5056.  14h    DWORD    ???
  5057.  18h 12 BYTEs    unused
  5058.  24h    DWORD    ???
  5059.  28h 24 BYTEs    unused
  5060.  
  5061. Format of kernel TCP statistics:
  5062. Offset    Size    Description
  5063.  00h 16 BYTEs    unused
  5064.  10h    DWORD    bytes sent
  5065.  14h    DWORD    bytes received
  5066.  18h  8 BYTEs    unused
  5067.  20h    DWORD    packets sent
  5068.  24h    DWORD    packets received
  5069.  28h    DWORD    bad checksums
  5070.  2Ch    DWORD    protocol errors
  5071.  30h    DWORD    timeouts
  5072.  34h    DWORD    resets
  5073.  38h    DWORD    duplicate packets
  5074.  3Ch    DWORD    retransmits
  5075.  
  5076. Format of kernel IP statistics:
  5077. Offset    Size    Description
  5078.  00h  8 BYTEs    unused
  5079.  08h    DWORD    ??? errors
  5080.  0Ch    DWORD    ??? errors
  5081.  10h    DWORD    ???
  5082.  14h    DWORD    ??? errors
  5083.  18h    DWORD    security errors
  5084.  1Ch    DWORD    ??? errors
  5085.  20h    DWORD    packets sent
  5086.  24h    DWORD    packets received
  5087.  28h    DWORD    bad checksums
  5088.  2Ch    DWORD    protocol errors
  5089.  30h    DWORD    timeouts
  5090.  34h    DWORD    errors
  5091.  38h    DWORD    fragments
  5092.  3Ch
  5093.  
  5094. Format of kernel UDP statistics:
  5095. Offset    Size    Description
  5096.  00h 32 BYTEs    unused
  5097.  20h    DWORD    packets sent
  5098.  24h    DWORD    packets received
  5099.  28h    DWORD    bad checksums
  5100.  2Ch    DWORD    port not listening errors
  5101.  30h  4 BYTEs    unused
  5102.  34h    DWORD    truncated receives
  5103.  38h  8 BYTEs    unused
  5104.  
  5105. Format of kernel ICMP statistics:
  5106. Offset    Size    Description
  5107.  00h    DWORD    "TimeEx" sent
  5108.  04h    DWORD    "TimeEx" received
  5109.  08h    DWORD    "ParamProb" sent
  5110.  0Ch    DWORD    "ParamProb" received
  5111.  10h    DWORD    redirects received
  5112.  14h    DWORD    source quenches received
  5113.  18h    DWORD    ???
  5114.  1Ch    DWORD    ???
  5115.  20h    DWORD    packets sent
  5116.  24h    DWORD    packets received
  5117.  28h    DWORD    bad packets received
  5118.  2Ch    DWORD    "DestUn" received
  5119.  30h    DWORD    packet send errors
  5120.  34h    DWORD    "DestUn" sent
  5121.  38h    DWORD    ???
  5122.  3Ch    DWORD    ???
  5123. ----------610D-------------------------------
  5124. INT 61 u - PC/TCP kernel v2.05 - "is_netnd" - CHECK IF CONNECTION HANDLE VALID
  5125.     AH = 0Dh
  5126.     BX = connection handle
  5127. Return: CF clear if valid
  5128.     CF set on error
  5129.         AX = error code (see INT 61"PC/TCP")
  5130. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5131. ----------610E-------------------------------
  5132. INT 61 u - PC/TCP kernel v2.05 - "net_select" - ???
  5133.     AH = 0Eh
  5134.     BX = ???
  5135.     DS:DX -> ???
  5136.     ES:DI -> ???
  5137. Return: CF clear
  5138.     ???
  5139. Notes:    the installation check consists of testing for the signature "TCPTSR"
  5140.       three bytes beyond the start of the interrupt handler
  5141.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  5142.       interrupt from 20h through E0h
  5143. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5144. ----------610F-------------------------------
  5145. INT 61 u - PC/TCP kernel v2.05 - "get_netversion" - GET SOFTWARE VERSION
  5146.     AH = 0Fh
  5147. Return: CF clear
  5148.         AX = version (AH = major, AL = minor)
  5149.         BX = patch level
  5150. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5151. ----------6110-------------------------------
  5152. INT 61 u - PC/TCP kernel v2.05 - "net_shutdown" - UNINSTALL
  5153.     AH = 10h
  5154. Return: CF clear if successful
  5155.     CF set on error???
  5156. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5157. ----------6111-------------------------------
  5158. INT 61 u - PC/TCP kernel v2.05 - "disable_async" - ???
  5159.     AH = 11h
  5160. Return: CF clear
  5161.     AX = ???
  5162. Note:    clears location whose value is returned in AX and decrements another if
  5163.       it is not already zero
  5164. SeeAlso: INT 61"PC/TCP",INT 61/AH=12h
  5165. ----------6112-------------------------------
  5166. INT 61 u - PC/TCP kernel v2.05 - "enable_async" - ???
  5167.     AH = 12h
  5168. Return: CF clear
  5169.     AX = ???
  5170. Note:    sets location whose value is returned in AX to 0001h and performs other
  5171.       actions if another location is nonzero; these two locations are the
  5172.       same ones used by AH=11h
  5173. SeeAlso: INT 61"PC/TCP",INT 61/AH=11h
  5174. ----------6113-------------------------------
  5175. INT 61 u - PC/TCP kernel v2.05 - "net_connect" - ???
  5176.     AH = 13h
  5177.     BX = connection handle??? or FFFFh
  5178.     DX = protocol
  5179.         0000h ??? (returns error 0016h)
  5180.         0001h ???
  5181.         0002h ???
  5182.         0003h ???
  5183.         0004h ???
  5184.         0005h ???
  5185.     DS:SI -> result buffer???
  5186. Return: CF clear if successful
  5187.         AX = connection handle???
  5188.     CF set on error
  5189.         AX = error code (see INT 61"PC/TCP")
  5190. Note:    invokes AH=22h if BX=FFFFh on entry; also invokes AH=19h in various
  5191.       cases
  5192. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=23h
  5193. ----------6114-------------------------------
  5194. INT 61 u - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
  5195.     AH = 14h
  5196.     BX = connection handle???
  5197. Return: CF set
  5198.         AX = 0018h (see INT 61"PC/TCP")
  5199. Note:    displays error message "Illegal system call!  Please upgrade your
  5200.       PCserver software" to standard output
  5201. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5202. ----------6115-------------------------------
  5203. INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
  5204.     AH = 15h
  5205.     ???
  5206. Return: ???
  5207. ----------6116-------------------------------
  5208. INT 61 u - PC/TCP kernel v2.05 - "net_peer" - GET ADDRESS OF REMOTE PEER???
  5209.     AH = 16h
  5210.     BX = connection handle???
  5211.     DS:DX -> 9-byte buffer for ???
  5212. Return: CF clear if successful
  5213.         ???
  5214.     CF set on error
  5215.         AX = error code (see INT 61"PC/TCP")
  5216. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5217. ----------6117-------------------------------
  5218. INT 61 u - PC/TCP kernel v2.05 - "net_reconfig" - ???
  5219.     AH = 17h
  5220. Return: CF clear if successful
  5221.     CF set on error
  5222.         AX = error code (see INT 61"PC/TCP")
  5223. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5224. ----------6118-------------------------------
  5225. INT 61 u - PC/TCP kernel v2.05 - "net_eof" - ???
  5226.     AH = 18h
  5227.     BX = connection handle???
  5228. Return: CF clear if successful
  5229.     CF set on error
  5230.         AX = error code (see INT 61"PC/TCP")
  5231. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5232. ----------6119-------------------------------
  5233. INT 61 u - PC/TCP kernel v2.05 - "net_abort" - ???
  5234.     AH = 19h
  5235.     BX = connection handle???
  5236. Return: CF clear if successful
  5237.     CF set on error
  5238.         AX = error code (see INT 61"PC/TCP")
  5239. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5240. ----------611A-------------------------------
  5241. INT 61 u - PC/TCP kernel v2.05 - "net_write" - ???
  5242.     AH = 1Ah
  5243.     BX = connection handle???
  5244.     CX = ???
  5245.     DX = ???
  5246.     DS:SI -> ???
  5247. Return: CF clear if successful
  5248.         AX = ???
  5249.         DX = ???
  5250.     CF set on error
  5251.         AX = error code (see INT 61"PC/TCP")
  5252. Notes:    the installation check consists of testing for the signature "TCPTSR"
  5253.       three bytes beyond the start of the interrupt handler
  5254.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  5255.       interrupt from 20h through E0h
  5256. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  5257. ----------611B-------------------------------
  5258. INT 61 u - PC/TCP kernel v2.05 - "net_read" - ???
  5259.     AH = 1Bh
  5260.     BX = connection handle???
  5261.     CX = ???
  5262.     DX = ???
  5263.     DS:SI -> ???
  5264.     ES:DI -> ???
  5265. Return: CF clear if successful
  5266.         CX = ???
  5267.         DX = ???
  5268.     CF set on error
  5269.         AX = error code (see INT 61"PC/TCP")
  5270. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  5271. ----------611C-------------------------------
  5272. INT 61 u - PC/TCP kernel v2.05 - "net_readfrom" - ???
  5273.     AH = 1Ch
  5274.     BX = connection handle???
  5275.     CX = ???
  5276.     DX = ???
  5277.     DS:SI -> ???
  5278.     ES:DI -> ???
  5279. Return: CF clear if successful
  5280.         AX = ???
  5281.         DX = ???
  5282.     CF set on error
  5283.         AX = error code (see INT 61"PC/TCP")
  5284. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  5285. ----------611D-------------------------------
  5286. INT 61 u - PC/TCP kernel v2.05 - "net_writeto" - ???
  5287.     AH = 1Dh
  5288.     BX = connection handle???
  5289.     CX = ???
  5290.     DX = ???
  5291.     DS:SI -> ???
  5292.     ES:DI -> 9-byte buffer containing ???
  5293. Return: CF clear if successful
  5294.         CX = ???
  5295.         DX = ???
  5296.     CF set on error
  5297.         AX = error code (see INT 61"PC/TCP")
  5298. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  5299. ----------611E-------------------------------
  5300. INT 61 u - PC/TCP kernel v2.05 - "net_flush" - ???
  5301.     AH = 1Eh
  5302.     BX = connection handle
  5303. Return: CF clear if successful
  5304.     CF set on error
  5305.         AX = error code (see INT 61"PC/TCP")
  5306. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5307. ----------611F-------------------------------
  5308. INT 61 u - PC/TCP kernel v2.05 - "net_asynch" - ???
  5309.     AH = 1Fh
  5310.     BX = connection handle???
  5311.     CX = ???
  5312.     DS:SI -> ???
  5313.     ES:DI -> ???
  5314. Return: CF clear if successful
  5315.         DS:DX -> ???
  5316.     CF set on error
  5317.         AX = error code (see INT 61"PC/TCP")
  5318. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5319. ----------6120-------------------------------
  5320. INT 61 u - PC/TCP kernel v2.05 - "set_option" - ???
  5321.     AH = 20h
  5322.     BX = connection handle???
  5323.     CX = ???
  5324.     DS:DX -> ???
  5325.     SI = ???
  5326.     DI = ???
  5327. Return: CF clear if successful
  5328.     CF set on error
  5329.         AX = error code (see INT 61"PC/TCP")
  5330. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
  5331. ----------6121-------------------------------
  5332. INT 61 u - PC/TCP kernel v2.05 - "get_option" - ???
  5333.     AH = 21h
  5334.     BX = connection handle???
  5335.     CX = ???
  5336.     DS:DX -> ???
  5337.     SI = ???
  5338.     DI = ???
  5339. Return: CF clear if successful
  5340.         DS:DX -> ???
  5341.     CF set on error
  5342.         AX = error code (see INT 61"PC/TCP")
  5343. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
  5344. ----------6122-------------------------------
  5345. INT 61 u - PC/TCP kernel v2.05 - "net_getdesc" - ???
  5346.     AH = 22h
  5347.     BX = connection handle???
  5348. Return: CF clear if successful
  5349.         AX = ???
  5350.     CF set on error
  5351.         AX = error code (see INT 61"PC/TCP")
  5352. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5353. ----------6123-------------------------------
  5354. INT 61 u - PC/TCP kernel v2.05 - "net_listen" - ???
  5355.     AH = 23h
  5356.     BX = connection handle??? or FFFFh
  5357.     DX = subfunction???
  5358.     DS:SI -> ???
  5359. Return: CF clear if successful
  5360.         AX = ???
  5361.     CF set on error
  5362.         AX = error code (see INT 61"PC/TCP")
  5363. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
  5364. ----------6124-------------------------------
  5365. INT 61 u - PC/TCP kernel v2.05 - "net_abortall" - ???
  5366.     AH = 24h
  5367. Return: ???
  5368. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5369. ----------6125-------------------------------
  5370. INT 61 u - PC/TCP kernel v2.05 - "ad_res_name" - ???
  5371.     AH = 25h
  5372.     BX = ???
  5373.     CX = ???
  5374.     DX = ???
  5375.     DS:SI -> ???
  5376. Return: CF clear if successful
  5377.     CF set on error
  5378.         AX = error code (see INT 61"PC/TCP")
  5379. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5380. ----------6126-------------------------------
  5381. INT 61 u - PC/TCP kernel v2.05 - "ad_htable" - ???
  5382.     AH = 26h
  5383.     BX = ???
  5384.     CX = ???
  5385.     DX = ???
  5386.     DS:SI -> ???
  5387. Return: CF clear if successful
  5388.     CF set on error
  5389.         AX = error code (see INT 61"PC/TCP")
  5390. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5391. ----------6127-------------------------------
  5392. INT 61 u - PC/TCP kernel v2.05 - "ad_domain" - ???
  5393.     AH = 27h
  5394.     BX = ???
  5395.     CX = ???
  5396.     DX = ???
  5397.     DS:SI -> ???
  5398. Return: CF clear if successful
  5399.     CF set on error
  5400.         AX = error code (see INT 61"PC/TCP")
  5401. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5402. ----------6128-------------------------------
  5403. INT 61 u - PC/TCP kernel v2.05 - "net_swap" - ???
  5404.     AH = 28h
  5405.     BX = connection handle???
  5406.     CX = ???
  5407. Return: CF clear if successful
  5408.         ???
  5409.     CF set on error
  5410.         AX = error code (see INT 61"PC/TCP")
  5411. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5412. ----------6129-------------------------------
  5413. INT 61 u - PC/TCP kernel v2.05 - "net_getglobdesc" - OPEN CONNECTION???
  5414.     AH = 29h
  5415. Return: CF clear if successful
  5416.         AX = connection handle???
  5417.     CF set on error
  5418.         AX = error code (see INT 61"PC/TCP")
  5419. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5420. ----------612A-------------------------------
  5421. INT 61 U - PC/TCP kernel v2.05 - GET CONFIGURATION INFORMATION
  5422.     AH = 2Ah
  5423.     DS:SI -> 26-byte buffer for configuration information (see below)
  5424. Return: CF clear
  5425.     AX = 0000h
  5426.     buffer filled
  5427. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5428.  
  5429. Format of configuration information:
  5430. Offset    Size    Description
  5431.  00h    BYTE    maximum TCP connections available
  5432.  01h    BYTE    maximum UDP connections available
  5433.  02h    BYTE    maximum IP connections available
  5434.  03h    BYTE    ???
  5435.  04h    BYTE    number of TCP connections currently in use
  5436.  05h    BYTE    number of UDP connections currently in use
  5437.  06h    BYTE    number of IP connections currently in use
  5438.  07h    BYTE    ???
  5439.  08h    WORD    number of local network descriptors active
  5440.  0Ah    WORD    number of global network descriptors active
  5441.  0Ch    BYTE    ???
  5442.  0Dh    BYTE    ???
  5443.  0Eh    WORD    ???
  5444.  10h    WORD    ???
  5445.  12h    DWORD    ???
  5446.  16h    DWORD    IP broadcast address
  5447. ----------612B-------------------------------
  5448. INT 61 U - PC/TCP kernel v2.05 - ???
  5449.     AH = 2Bh
  5450.     BX = connection handle???
  5451.     CX = ???
  5452.     DX = ???
  5453.     DS:SI -> ???
  5454.     ES:DI -> ???
  5455. Return: CF clear if successful
  5456.     CF set on error
  5457.         AX = error code (see INT 61"PC/TCP")
  5458. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5459. ----------6130-------------------------------
  5460. INT 61 u - PC/TCP kernel v2.05 - "icmp_ping" ???
  5461.     AH = 30h
  5462.     BX = ???
  5463.     CX = ???
  5464.     DX = ???
  5465. Return: CF clear if successful
  5466.     CF set on error
  5467.         AX = error code (see INT 61"PC/TCP")
  5468. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5469. ----------61---------------------------------
  5470. INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
  5471.     AH = function
  5472.         31h "net_add_route"
  5473.         32h "net_del_route"
  5474.         33h "net_dump_routes"
  5475. ----------6134-------------------------------
  5476. INT 61 u - PC/TCP kernel v2.1 - "icmp_destun" - ???
  5477.     AH = 34h
  5478.     ???
  5479. Return: ???
  5480. ----------6150-------------------------------
  5481. INT 61 u - PC/TCP kernel v2.05 - "nm_prs_addr" - ???
  5482.     AH = 50h
  5483.     DS:DX -> 127-byte buffer containing ???
  5484. Return: CF clear if successful
  5485.         DX:AX -> ???
  5486.     CF set on error
  5487.         AX = error code (see INT 61"PC/TCP")
  5488. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5489. ----------6151-------------------------------
  5490. INT 61 u - PC/TCP kernel v2.05 - "nm_htable" - ???
  5491.     AH = 51h
  5492.     CX = size of destination buffer
  5493.     DS:DX -> 127-byte buffer containing ???
  5494.     ES:DI -> destination buffer or 0000h:0000h
  5495. Return: CF clear if successful
  5496.         DX:AX -> ???
  5497.     CF set on error
  5498.         AX = error code (see INT 61"PC/TCP")
  5499. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5500. ----------6152-------------------------------
  5501. INT 61 u - PC/TCP kernel v2.05 - "nm_domain" - ???
  5502.     AH = 52h
  5503.     CX = size of destination buffer
  5504.     DS:DX -> 127-byte buffer containing ???
  5505.     ES:DI -> destination buffer or 0000h:0000h
  5506. Return: CF clear if successful
  5507.         DX:AX -> ???
  5508.     CF set on error
  5509.         AX = error code (see INT 61"PC/TCP")
  5510. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5511. ----------6153-------------------------------
  5512. INT 61 u - PC/TCP kernel v2.05 - "nm_ien116" - ???
  5513.     AH = 53h
  5514.     DS:DX -> 127-byte buffer containing ???
  5515. Return: CF clear if successful
  5516.         DX:AX -> ???
  5517.     CF set on error
  5518.         AX = error code (see INT 61"PC/TCP")
  5519. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5520. ----------6154-------------------------------
  5521. INT 61 u - PC/TCP kernel v2.05 - "nm_res_name" - RESOLVE HOST NAME
  5522.     AH = 54h
  5523.     CX = size of destination buffer
  5524.     DS:DX -> 127-byte buffer containing host name???
  5525.     ES:DI -> destination buffer or 0000h:0000h
  5526. Return: CF clear if successful
  5527.         DX:AX -> ???
  5528.     CF set on error
  5529.         AX = error code (see INT 61"PC/TCP")
  5530. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  5531.       greater than 54h in AH may crash the system.    Other kernels may have
  5532.       this bug as well.
  5533. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5534. ----------62---------------------------------
  5535. INT 62 - reserved for user interrupt
  5536. ----------62---------------------------------
  5537. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5538. Notes:    this vector stores the third four bytes of the parameter table for
  5539.       hard disk 0
  5540. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  5541. ----------62---------------------------------
  5542. INT 62 - HP 95LX - USED BY CALCULATOR
  5543. SeeAlso: INT 60"HP 95LX"
  5544. ----------62---------------------------------
  5545. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  5546.     AH = function (00h to 07h)
  5547.     CX = FFFEh
  5548.     DX = FFFFh
  5549.     ???
  5550. Return: ???
  5551. Note:    the installation check consists of testing for the string "DBLIBRARY"
  5552.       2 bytes past the interrupt handler
  5553. SeeAlso: AH=08h"SQL"
  5554. ----------620000-----------------------------
  5555. INT 62 u - FGDRIVER v1.10 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
  5556.     AX = 0000h
  5557.     ES:BX -> ???
  5558. Return: AX = current video mode number
  5559. Notes:    FGDRIVER is the external video driver for the shareware
  5560.       Fastgraph/Light by Ted Gruber Software
  5561.     the installation check consists of testing for the signature "FG" ten
  5562.       bytes beyond the start of the interrupt handler
  5563. SeeAlso: AX=0001h,AX=0006h
  5564. ----------620001-----------------------------
  5565. INT 62 u - FGDRIVER v1.10 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
  5566.     AX = 0001h
  5567.     BX = new video mode or FFFFh for current mode
  5568.     ES:DX -> ???
  5569. Notes:    video modes are the same as the BIOS video modes except for
  5570.         0Bh Hercules graphics 720x348
  5571.         0Ch Hercules graphics 320x200
  5572.         15h VGA graphics 320x400x256
  5573.         16h VGA graphics 320x240x256
  5574.         17h VGA graphics 320x480x256
  5575.     this call resets the active video page to page 0000h, the clipping
  5576.       region to the entire screen, text rows to 25, etc.
  5577. SeeAlso: AX=0000h,AX=0002h,INT 10/AH=00h
  5578. ----------620002-----------------------------
  5579. INT 62 u - FGDRIVER v1.10 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
  5580.     AX = 0002h
  5581.     BX = desired video mode (00h-17h)
  5582.     CX = required number of video pages (ignore memory size if <= 0)
  5583. Return: AX = status
  5584.         0000h mode not available with requested number of pages
  5585.         0001h mode is available
  5586. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0005h
  5587. ----------620003-----------------------------
  5588. INT 62 u - FGDRIVER v1.10 - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
  5589.     AX = 0003h
  5590.     BX = horizontal resolution
  5591.     CX = vertical resolution
  5592.     DX = number of video pages required (both physical and virtual)
  5593. Return: AX = proposed video mode number or FFFFh if no matching video mode
  5594. SeeAlso: AX=0002h,AX=0004h
  5595. ----------620004-----------------------------
  5596. INT 62 u - FGDRIVER v1.10 - "FG_AUTOMODE" - GET VIDEO MODE WITH MOST FEATURES
  5597.     AX = 0004h
  5598. Return: AX = proposed video mode number
  5599. Note:    FGDRIVER is the external video driver for the shareware
  5600.       Fastgraph/Light by Ted Gruber Software
  5601. SeeAlso: AX=0002h,AX=0003h,AX=0005h
  5602. ----------620005-----------------------------
  5603. INT 62 u - FGDRIVER v1.10 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
  5604.     AX = 0005h
  5605. Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
  5606.         without an Enhanced Color Display
  5607. SeeAlso: AX=0002h,AX=0003h
  5608. ----------620006-----------------------------
  5609. INT 62 u - FGDRIVER v1.10 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
  5610.     AX = 0006h
  5611. Notes:    this call is ignored in graphics modes
  5612.     the screen attributes are only restored if ANSI.SYS is loaded
  5613. SeeAlso: AX=0000h
  5614. ----------620007-----------------------------
  5615. INT 62 u - FGDRIVER v1.10 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
  5616.     AX = 0007h
  5617.     BX = new state (0000h invisible, 0001h visible)
  5618. Note:    this call is ignored in text modes
  5619. ----------620008-----------------------------
  5620. INT 62 - FGDRIVER v1.10 - UNUSED
  5621.     AX = 0008h to 0009h
  5622. Return: AX = 0000h
  5623. ----------62000A-----------------------------
  5624. INT 62 u - FGDRIVER v1.10 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
  5625.     AX = 000Ah
  5626. Return: AX = maximum X coordinate in screen space
  5627.         (or character space if in text mode)
  5628. SeeAlso: AX=000Bh,AX=0045h
  5629. ----------62000B-----------------------------
  5630. INT 62 u - FGDRIVER v1.10 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
  5631.     AX = 000Bh
  5632. Return: AX = maximum Y coordinate in screen space
  5633.         (or character space if in text mode)
  5634. SeeAlso: AX=000Ah,AX=0045h
  5635. ----------62000C-----------------------------
  5636. INT 62 u - FGDRIVER v1.10 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
  5637.     AX = 000Ch
  5638.     BX = screen space column
  5639. Return: AX = character space column containing specified coordinate
  5640. SeeAlso: AX=000Dh,AX=000Eh
  5641. ----------62000D-----------------------------
  5642. INT 62 u - FGDRIVER v1.10 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
  5643.     AX = 000Dh
  5644.     BX = screen space row
  5645. Return: AX = character space row containing specified coordinate
  5646. SeeAlso: AX=000Ch,AX=000Fh
  5647. ----------62000E-----------------------------
  5648. INT 62 u - FGDRIVER v1.10 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
  5649.     AX = 000Eh
  5650.     BX = character space column
  5651. Return: AX = screen space column of leftmost pixel in specified character col
  5652. SeeAlso: AX=000Ch,AX=000Fh
  5653. ----------62000F-----------------------------
  5654. INT 62 u - FGDRIVER v1.10 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
  5655.     AX = 000Fh
  5656.     BX = character space row
  5657. Return: AX = screen space row of topmost pixel in specified character row
  5658. SeeAlso: AX=000Dh,AX=000Eh
  5659. ----------620010-----------------------------
  5660. INT 62 u - FGDRIVER v1.10 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
  5661.     AX = 0010h
  5662. Return: AX = number of text rows on screen in current video mode
  5663. SeeAlso: AX=0011h
  5664. ----------620011-----------------------------
  5665. INT 62 u - FGDRIVER v1.10 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
  5666.     AX = 0011h
  5667.     BX = new screen size (25, 43, 50)
  5668. SeeAlso: AX=0010h
  5669. ----------620012-----------------------------
  5670. INT 62 - FGDRIVER v1.10 - UNUSED
  5671.     AX = 0012h to 0013h
  5672. Return: AX = 0000h
  5673. ----------620014-----------------------------
  5674. INT 62 u - FGDRIVER v1.10 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
  5675.     AX = 0014h
  5676.     BX = color index (0000h-00FFh)
  5677.     CX = new color value (0 to maximum color value for current video mode)
  5678. Note:    this call is ignored in text modes and 256-color graphics modes
  5679. SeeAlso: AX=0015h,AX=0016h,AX=001Dh
  5680. ----------620015-----------------------------
  5681. INT 62 u - FGDRIVER v1.10 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
  5682.     AX = 0015h
  5683. Return: AX = current text attribute or color index (graphics modes)
  5684. Note:    FGDRIVER is the external video driver for the shareware
  5685.       Fastgraph/Light by Ted Gruber Software
  5686. SeeAlso: AX=0019h,AX=001Ah
  5687. ----------620016-----------------------------
  5688. INT 62 u - FGDRIVER v1.10 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
  5689.     AX = 0016h
  5690.     BX = color index (0000h to 00FFh)
  5691. Return: AX = color value for specified color index
  5692. Note:    this call returns the value passed to it in text and 256-color
  5693.       graphics modes
  5694. SeeAlso: AX=0014h,AX=001Ch
  5695. ----------620017-----------------------------
  5696. INT 62 u - FGDRIVER v1.10 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
  5697.     AX = 0017h
  5698. ---CGA 4-color graphics---
  5699.     BX = CGA paletee number
  5700.     CX = background color
  5701. ---CGA 2-color graphics---
  5702.     BX ignored
  5703.     CX = foreground color
  5704. ---16-color graphics---
  5705.     BX = palette register number
  5706.     CX = palette value
  5707. ---256-color graphics---
  5708.     BX = DAC register number
  5709.     CX =  DAC value
  5710. Notes:    ignored in text modes and Hercules graphics modes
  5711.     few EGA/VGA adapters correctly set the foreground color in CGA mode 6
  5712. SeeAlso: AX=0018h,AX=001Dh
  5713. ----------620018-----------------------------
  5714. INT 62 u - FGDRIVER v1.10 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
  5715.     AX = 0018h
  5716.     ES:BX -> array of 16 WORDs containing values for palette registers
  5717.         (or first 16 DAC registers in 256-color modes)
  5718. Note:    ignored in text modes, CGA and Hercules graphics modes
  5719. SeeAlso: AX=0017h
  5720. ----------620019-----------------------------
  5721. INT 62 u - FGDRIVER v1.10 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
  5722.     AX = 0019h
  5723.     BX = foreground
  5724.     CX = background
  5725.     DX = blink (0000h nonblinking, 0001h blink)
  5726. Note:    this call is ignored in graphics modes
  5727. SeeAlso: AX=0015h,AX=001Ah,AX=0037h
  5728. ----------62001A-----------------------------
  5729. INT 62 u - FGDRIVER v1.10 - "FG_SETCOLOR" - SET CURRENT COLOR
  5730.     AX = 001Ah
  5731.     BX = new color index (or text attribute in text modes)
  5732. SeeAlso: AX=0015h,AX=0019h
  5733. ----------62001B-----------------------------
  5734. INT 62 u - FGDRIVER v1.10 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
  5735.     AX = 001Bh
  5736.     BX = palette or DAC register number
  5737.     CX = red color component
  5738.     DX = green component
  5739.     SI = blue component
  5740. Notes:    the register number may be negative for Tandy, PCjr, and 200-line
  5741.       EGA graphics modes to specify an intense color
  5742.     this call has no effect in text, CGA graphics, and Hercules graphics
  5743.       modes
  5744. SeeAlso: AX=001Ch,AX=00A5h
  5745. ----------62001C-----------------------------
  5746. INT 62 u - FGDRIVER v1.10 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
  5747.     AX = 001Ch
  5748.     ES:BX -> variable pointer record (see below)
  5749.     CX = DAC register number
  5750. Return: variables updated
  5751. Note:    this call is ignored in text modes and CGA/EGA video modes (since
  5752.       they do not use DAC registers)
  5753. SeeAlso: AX=001Bh,AX=001Dh,AX=00A4h
  5754.  
  5755. Format of variable pointer record:
  5756. Offset    Size    Description
  5757.  00h    WORD    segment of WORD buffer for red component of DAC register
  5758.  02h    WORD    offset of WORD buffer for red component
  5759.  04h    WORD    segment of WORD buffer for green component of DAC register
  5760.  06h    WORD    offset of WORD buffer for green component
  5761.  08h    WORD    segment of WORD buffer for blue component of DAC register
  5762.  0Ah    WORD    offset of WORD buffer for blue component
  5763. ----------62001D-----------------------------
  5764. INT 62 u - FGDRIVER v1.10 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
  5765.     AX = 001Dh
  5766.     BX = red component
  5767.     CX = green component
  5768.     DX = blue component
  5769. Return: AX = mode-specific palette value corresponding to specified components
  5770. Note:    only meaningful in 16-color graphics modes
  5771. SeeAlso: AX=0015h,AX=0017h
  5772. ----------62001E-----------------------------
  5773. INT 62 u - FGDRIVER v1.10 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
  5774.     AX = 001Eh
  5775. Note:    sets each pixel to 0 in graphics modes, each character cell to a blank
  5776.       with a gray foreground attribute in text modes
  5777. ----------62001F-----------------------------
  5778. INT 62 u - FGDRIVER v1.10 - "FG_POINT" - DISPLAY A PIXEL
  5779.     AX = 001Fh
  5780.     BX = column
  5781.     CX = row
  5782. Note:    this call is ignored in text modes
  5783. SeeAlso: AX=0020h
  5784. ----------620020-----------------------------
  5785. INT 62 u - FGDRIVER v1.10 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
  5786.     AX = 0020h
  5787.     BX = column in screen space
  5788.     CX = row in screen space
  5789. Return: AX = color value of pixel (0 to num_colors-1)
  5790.         0000h in text modes
  5791. SeeAlso: AX=001Fh
  5792. ----------620021-----------------------------
  5793. INT 62 u - FGDRIVER v1.10 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
  5794.     AX = 0021h
  5795. Return: AX = screen space X coordinate of graphics cursor position
  5796. SeeAlso: AX=0022h,AX=0023h,AX=0024h
  5797. ----------620022-----------------------------
  5798. INT 62 u - FGDRIVER v1.10 - "FG_GETXPOS" - GET GRAPHICS CURSOR ROW
  5799.     AX = 0022h
  5800. Return: AX = screen space Y coordinate of graphics cursor position
  5801. SeeAlso: AX=0021h,AX=0023h,AX=0024h
  5802. ----------620023-----------------------------
  5803. INT 62 u - FGDRIVER v1.10 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
  5804.     AX = 0023h
  5805.     BX = new column
  5806.     CX = new row
  5807. Note:    this call is ignored in text modes
  5808. SeeAlso: AX=0021h,AX=0022h,AX=0024h
  5809. ----------620024-----------------------------
  5810. INT 62 u - FGDRIVER v1.10 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
  5811.     AX = 0024h
  5812.     BX = column offset
  5813.     CX = row offset
  5814. Note:    this call is ignored in text modes
  5815. SeeAlso: AX=0021h,AX=0022h,AX=0023h
  5816. ----------620025-----------------------------
  5817. INT 62 u - FGDRIVER v1.10 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
  5818.     AX = 0025h
  5819.     BX = endpoint column
  5820.     CX = endpoint row
  5821. Notes:    this call is ignored in text modes
  5822.     the starting point is the current graphics cursor position; the cursor
  5823.       position is updated
  5824. SeeAlso: AX=0026h,AX=0027h
  5825. ----------620026-----------------------------
  5826. INT 62 u - FGDRIVER v1.10 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
  5827.     AX = 0026h
  5828.     BX = endpoint column offset
  5829.     CX = endpoint row offset
  5830. Notes:    this call is ignored in text modes
  5831.     the starting point is the current graphics cursor position; the cursor
  5832.       position is updated
  5833. SeeAlso: AX=0025h,AX=0028h
  5834. ----------620027-----------------------------
  5835. INT 62 u - FGDRIVER v1.10 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
  5836.     AX = 0027h
  5837.     BX = endpoint column
  5838.     CX = endpoint row
  5839.     DX = dash pattern (set bits cause drawn pixels)
  5840. Notes:    this call is ignored in text modes
  5841.     the starting point is the current graphics cursor position; the cursor
  5842.       position is updated
  5843. SeeAlso: AX=0025h,AX=0028h
  5844. ----------620028-----------------------------
  5845. INT 62 u - FGDRIVER v1.10 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
  5846.     AX = 0028h
  5847.     BX = endpoint column offset
  5848.     CX = endpoint row offset
  5849.     DX = dash pattern (set bits cause drawn pixels)
  5850. Notes:    this call is ignored in text modes
  5851.     the starting point is the current graphics cursor position; the cursor
  5852.       position is updated
  5853. SeeAlso: AX=0026h,AX=0027h
  5854. ----------620029-----------------------------
  5855. INT 62 u - FGDRIVER v1.10 - "FG_SETCLIP" - SET CLIPPING REGION
  5856.     AX = 0029h
  5857.     BX = left edge of clipping region
  5858.     CX = right edge of clipping region
  5859.     DX = top edge of clipping region
  5860.     SI = bottom edge of clipping region
  5861. SeeAlso: AX=004Ah,AX=004Ch,AX=0052h,AX=0054h
  5862. ----------62002A-----------------------------
  5863. INT 62 u - FGDRIVER v1.10 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
  5864.     AX = 002Ah
  5865.     BX = left edge column
  5866.     CX = right edge column
  5867.     DX = top edge row
  5868.     SI = bottom edge row
  5869. SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=00A2h
  5870. ----------62002B-----------------------------
  5871. INT 62 u - FGDRIVER v1.10 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
  5872.     AX = 002Bh
  5873.     BX = screen space column of left edge
  5874.     CX = screen space column of right edge
  5875.     DX = screen space row of top edge
  5876.     SI = screen space row of bottom edge
  5877. Note:    this call is ignored in text modes
  5878. SeeAlso: AX=002Ah,AX=002Ch,AX=00A2h
  5879. ----------62002C-----------------------------
  5880. INT 62 u - FGDRIVER v1.10 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
  5881.     AX = 002Ch
  5882.     BX = screen space column of left edge
  5883.     CX = screen space column of right edge
  5884.     DX = screen space row of top edge
  5885.     SI = screen space row of bottom edge
  5886.     ES:DI -> dithering matrix (video-mode dependent)
  5887. Note:    this call is ignored in text modes
  5888. SeeAlso: AX=002Bh,AX=00A2h
  5889. ----------62002D-----------------------------
  5890. INT 62 u - FGDRIVER v1.10 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
  5891.     AX = 002Dh
  5892.     BX = horizontal semi-axis length in screen space units
  5893.     CX = vertical semi-axis length in screen space units
  5894. Notes:    this call is ignored in text modes
  5895.     the ellipse is centered at the current graphics cursor position
  5896. SeeAlso: AX=002Ah,AX=002Eh,AX=00A2h
  5897. ----------62002E-----------------------------
  5898. INT 62 u - FGDRIVER v1.10 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
  5899.     AX = 002Eh
  5900.     CX = number of vertices in polygon
  5901.     ES:BX -> variable pointer record (see below)
  5902. SeeAlso: AX=002Dh,AX=0030h,AX=00A2h
  5903.  
  5904. Format of variable pointer record:
  5905. Offset    Size    Description
  5906.  00h    WORD    segment of WORD array containing vertex columns
  5907.  02h    WORD    offset of WORD array containing vertex columns
  5908.  04h    WORD    segment of WORD array containing vertex rows
  5909.  06h    WORD    offset of WORD array containing vertex rows
  5910. ----------62002F-----------------------------
  5911. INT 62 u - FGDRIVER v1.10 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
  5912.     AX = 002Fh
  5913.     BX = column
  5914.     CX = row
  5915. Notes:    fills an arbitrary closed region around the specified point with the
  5916.       current color; the screen edges are not considered region boundaries
  5917.     ignored in text modes
  5918. ----------620030-----------------------------
  5919. INT 62 u - FGDRIVER v1.10 - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
  5920.     AX = 0030h
  5921.     BX = radius in horizontal screen space units (> 0)
  5922. Notes:    the circle is drawn in screen space, centered at the current graphics
  5923.       cursor position
  5924.     this call is ignored in text modes
  5925. SeeAlso: AX=00A2h
  5926. ----------620031-----------------------------
  5927. INT 62 - FGDRIVER v1.10 - UNUSED
  5928.     AX = 0031h
  5929. Return: AX = 0000h
  5930. ----------620032-----------------------------
  5931. INT 62 u - FGDRIVER v1.10 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
  5932.     AX = 0032h
  5933.     CX = length of string
  5934.     ES:BX -> string
  5935. Notes:    the string is displayed staring at the text cursor position using the
  5936.       current text attribute (text modes) or color index (graphics modes)
  5937.     the text cursor position is updated after this call
  5938. SeeAlso: AX=001Ah,AX=0033h,AX=0035h,AX=0036h
  5939. ----------620033-----------------------------
  5940. INT 62 u - FGDRIVER v1.10 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
  5941.     AX = 0033h
  5942.     BX = row
  5943.     CX = column
  5944. Note:    there are only eight text cursors shared by successive groups of
  5945.       eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
  5946.       share the second, etc)
  5947. SeeAlso: AX=0034h
  5948. ----------620034-----------------------------
  5949. INT 62 u - FGDRIVER v1.10 - "FG_WHERE" - GET CURRENT CURSOR POSITION
  5950.     AX = 0034h
  5951.     ES:BX -> variable pointers (see below)
  5952. Return: indicated variables filled with cursor row and column for active
  5953.       display
  5954. Note:    FGDRIVER is the external video driver for the shareware
  5955.       Fastgraph/Light by Ted Gruber Software
  5956. SeeAlso: AX=0033h
  5957.  
  5958. Format of variable pointers:
  5959. Offset    Size    Description
  5960.  00h    WORD    segment of WORD buffer for cursor row
  5961.  02h    WORD    offset of WORD buffer for cursor row
  5962.  04h    WORD    segment WORD buffer for cursor column
  5963.  06h    WORD    offset WORD buffer for cursor column
  5964. ----------620035-----------------------------
  5965. INT 62 u - FGDRIVER v1.10 - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
  5966.     AX = 0035h
  5967.     BX = number of characters to recolor
  5968. Notes:    this call is ignored in graphics modes
  5969.     starting at the current text cursor position, the specified number of
  5970.       characters have their attributes to the current text attribute
  5971. SeeAlso: AX=0036h
  5972. ----------620036-----------------------------
  5973. INT 62 u - FGDRIVER v1.10 - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
  5974.     AX = 0036h
  5975.     CX = length of string
  5976.     ES:BX -> string to be displayed
  5977. Return: text cursor updated
  5978. Note:    this call is ignored in graphics modes
  5979. SeeAlso: AX=0032h,AX=0035h
  5980. ----------620037-----------------------------
  5981. INT 62 u - FGDRIVER v1.10 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
  5982.     AX = 0037h
  5983.     BX = row
  5984.     CX = column
  5985. Return: AX = character attribute at specified location on active video page
  5986. Note:    this call is ignored in graphics modes
  5987. SeeAlso: AX=0019h,AX=0038h
  5988. ----------620038-----------------------------
  5989. INT 62 u - FGDRIVER v1.10 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
  5990.     AX = 0038h
  5991.     BX = row
  5992.     CX = column
  5993. Return: AX = character at specified location on active video page
  5994. Note:    this call is ignored in graphics modes
  5995. SeeAlso: AX=0037h
  5996. ----------620039-----------------------------
  5997. INT 62 - FGDRIVER v1.10 - UNUSED
  5998.     AX = 0039h to 003Bh
  5999. Return: AX = 0000h
  6000. ----------62003C-----------------------------
  6001. INT 62 u - FGDRIVER v1.10 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
  6002.     AX = 003Ch
  6003. Return: AX = active video page (0000h-003Fh)
  6004. SeeAlso: AX=003Dh,AX=003Eh,AX=0040h
  6005. ----------62003D-----------------------------
  6006. INT 62 u - FGDRIVER v1.10 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
  6007.     AX = 003Dh
  6008.     BX = new video page (0000h to 003Fh)
  6009. Note:    the specified page must be a physical or virtual page
  6010. SeeAlso: AX=0001h,AX=003Ch,AX=003Fh,AX=0041h
  6011. ----------62003E-----------------------------
  6012. INT 62 u - FGDRIVER v1.10 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
  6013.     AX = 003Eh
  6014. Return: AX = visible video page (0000h-003Fh)
  6015. SeeAlso: AX=003Ch,AX=003Fh,AX=0040h
  6016. ----------62003F-----------------------------
  6017. INT 62 u - FGDRIVER v1.10 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
  6018.     AX = 003Fh
  6019.     BX = new video page (0000h to 003Fh)
  6020. Note:    the specified page must be a physical or virtual page
  6021. SeeAlso: AX=0001h,AX=003Dh,AX=003Eh,AX=0041h
  6022. ----------620040-----------------------------
  6023. INT 62 u - FGDRIVER v1.10 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
  6024.     AX = 0040h
  6025. Return: AX = current hidden video page number (0000h-003Fh)
  6026. SeeAlso: AX=003Ch,AX=003Eh,AX=0041h
  6027. ----------620041-----------------------------
  6028. INT 62 u - FGDRIVER v1.10 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
  6029.     AX = 0041h
  6030.     BX = new hidden page (0000h to 003Fh)
  6031. Note:    specified page must be a physical page or a virtual page
  6032. SeeAlso: AX=003Dh,AX=003Fh,AX=0040h
  6033. ----------620042-----------------------------
  6034. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
  6035.     AX = 0042h
  6036.     BX = page number (0000h-003Fh)
  6037. Return: AX = status
  6038.         0000h successful
  6039.         0001h specified page is a physical or logical page
  6040.         0007h virtual page created, but memory control blocks corrupted
  6041.         0008h not enough memory
  6042. Notes:    FGDRIVER is the external video driver for the shareware
  6043.       Fastgraph/Light by Ted Gruber Software
  6044.     the amount of memory required by the virtual video page depends on the
  6045.       current video mode
  6046. SeeAlso: AX=0043h,AX=009Dh,AX=009Fh
  6047. ----------620043-----------------------------
  6048. INT 62 u - FGDRIVER v1.10 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
  6049.     AX = 0043h
  6050.     BX = page number (0000h-003Fh)
  6051. Return: AX = status
  6052.         0000h successful
  6053.         0001h specified page is a physical page
  6054.         0007h virtual page released, but memory control blocks corrupted
  6055.         0009h attempt to free a page which was never created
  6056. SeeAlso: AX=0042h,AX=009Dh,AX=009Eh,AX=009Fh
  6057. ----------620044-----------------------------
  6058. INT 62 u - FGDRIVER v1.10 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
  6059.     AX = 0044h
  6060. Return: AX = segment of active video page
  6061. ----------620045-----------------------------
  6062. INT 62 u - FGDRIVER v1.10 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
  6063.     AX = 0045h
  6064.     BX = new page width in pixels
  6065.     CX = new page height in pixels
  6066. Notes:    the visible page must be set to 0000h before making this call
  6067.     mouse, joysticks, expanded memory, and extended memory must be
  6068.       reinitialized after this call
  6069. SeeAlso: AX=000Ah,AX=000Bh,AX=0075h,AX=007Ah,AX=00A0h,AX=00A1h
  6070. ----------620046-----------------------------
  6071. INT 62 u - FGDRIVER v1.10 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
  6072.     AX = 0046h
  6073.     ES:BX -> buffer for video mode-independent bitmap
  6074.     CX = width of bitmap in bytes
  6075.     DX = height of bitmap in pixel rows
  6076. Return: each bit in bitmap is set if corresponding pixel is of the current
  6077.       color, cleared otherwise
  6078. Note:    this call is ignored in text modes
  6079. SeeAlso: AX=0047h,AX=0048h
  6080. ----------620047-----------------------------
  6081. INT 62 u - FGDRIVER v1.10 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
  6082.     AX = 0047h
  6083.     ES:BX -> bitmap (each set bit is pixel drawn in current color)
  6084.     CX = width of bitmap in bytes
  6085.     DX = height of bitmap in pixel rows
  6086. SeeAlso: AX=0046h,AX=004Ah,AX=004Dh,AX=0052h
  6087. ----------620048-----------------------------
  6088. INT 62 u - FGDRIVER v1.10 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
  6089.     AX = 0048h
  6090.     ES:BX -> buffer for video mode-specific bitmap
  6091.     CX = width of bitmap in bytes
  6092.     DX = height of bitmap in pixel rows
  6093. SeeAlso: AX=0046h,AX=0049h,AX=0062h
  6094. ----------620049-----------------------------
  6095. INT 62 u - FGDRIVER v1.10 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
  6096.     AX = 0049h
  6097.     ES:BX -> video mode-specific bitmap
  6098.     CX = width of bitmap in bytes
  6099.     DX = height of bitmap in pixel rows
  6100. Note:    the image will be drawn with its lower left corner at the current
  6101.       cursor position (either text or graphics)    
  6102. SeeAlso: AX=0048h,AX=004Ah,AX=0062h
  6103. ----------62004A-----------------------------
  6104. INT 62 u - FGDRIVER v1.10 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
  6105.     AX = 004Ah
  6106.     ES:BX -> mode-specific bitmap
  6107.     CX = width of bit map in bytes
  6108.     DX = height of bit map in pixel rows
  6109. Notes:    this call is ignored in text modes
  6110.     the image is drawn with its lower left corner at the current graphics
  6111.       cursor position
  6112.     the current clipping region is used, extended to a byte boundary
  6113. SeeAlso: AX=0029h,AX=0047h,AX=0049h,AX=004Ch,AX=0052h
  6114. ----------62004B-----------------------------
  6115. INT 62 u - FGDRIVER v1.10 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
  6116.     AX = 004Bh
  6117.     ES:BX -> mode-specific bitmap
  6118.     CX = width of bitmap in bytes
  6119.     DX = height of bitmap in pixel rows
  6120. Notes:    this call is ignored in text modes
  6121.     the image is drawn with its lower left corner at the current graphics
  6122.       cursor position
  6123. SeeAlso: AX=004Ah,AX=004Ch
  6124. ----------62004C-----------------------------
  6125. INT 62 u - FGDRIVER v1.10 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
  6126.     AX = 004Ch
  6127.     ES:BX -> mode-specific bitmap
  6128.     CX = width of bit map in bytes
  6129.     DX = height of bit map in pixel rows
  6130. Notes:    this call is ignored in text modes
  6131.     the image is drawn with its lower left corner at the current graphics
  6132.       cursor position
  6133.     the current clipping region is used, extended to a byte boundary
  6134. SeeAlso: AX=0029h,AX=004Ah
  6135. ----------62004D-----------------------------
  6136. INT 62 u - FGDRIVER v1.10 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
  6137.     AX = 004Dh
  6138.     ES:BX -> pixel run map (pairs of bytes: color index, count)
  6139.     CX = number of pixel runs to display
  6140.     DX = width of image in pixels (> 0)
  6141. Notes:    this call is ignored in text modes
  6142.     the image is displayed with its lower left corner at the current
  6143.       graphics cursor position
  6144. SeeAlso: AX=0047h,AX=004Eh,AX=004Fh,AX=0050h,AX=0060h
  6145. ----------62004E-----------------------------
  6146. INT 62 u - FGDRIVER v1.10 - "FG_DISPLAY" - DISPLAY IMAGE (PACKED PIXEL RUN FMT)
  6147.     AX = 004Eh
  6148.     ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
  6149.         contains the color for the first run in its high nybble and the
  6150.         color for the second run in its low nybble)
  6151.     CX = number of pixel runs to display
  6152.     DX = width of image in pixels (> 0)
  6153. Notes:    this call is ignored in text modes
  6154.     the image is displayed with its lower left corner at the current
  6155.       graphics cursor position
  6156. SeeAlso: AX=004Dh,AX=004Fh,AX=0050h,AX=0060h
  6157. ----------62004F-----------------------------
  6158. INT 62 u - FGDRIVER v1.10 - "FG_DISPFILE" - DISPLAY STORED IMAGE
  6159.     AX = 004Fh
  6160.     ES:BX -> ASCIZ filename
  6161.     CX = image width in pixels (> 0)
  6162.     DX = image format
  6163.         0000h Fastgraph standard pixel run format
  6164.         0001h packed pixel run format
  6165. Notes:    this call is ignored in text modes
  6166.     the image is displayed with its lower left corner at the current
  6167.       graphics cursor position
  6168. SeeAlso: AX=004Dh,AX=004Eh,AX=0050h,AX=0060h
  6169. ----------620050-----------------------------
  6170. INT 62 u - FGDRIVER v1.10 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
  6171.     AX = 0050h
  6172.     BX = index of pattern to define
  6173.     CX = number of predefined display pattern
  6174. Notes:    when displaying a pixel run map, Fastgraph uses the pattern associated
  6175.       with each color index rather than displaying the actual color
  6176.     this call has no effect in text and 256-color graphics modes
  6177. SeeAlso: AX=004Dh,AX=004Eh,AX=004Fh
  6178. ----------620051-----------------------------
  6179. INT 62 u - FGDRIVER v1.10 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
  6180.     AX = 0051h
  6181.     ES:BX -> array containing image stores as a masking map (see below)
  6182.     CX = number of pixel runs in masking map
  6183.     DX = width of masking map in pixels
  6184. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  6185.       modes
  6186.     the image is drawn with its lower left corner at the current graphics
  6187.       cursor position
  6188. SeeAlso: AX=0052h
  6189.  
  6190. Format of masking map:
  6191. Offset    Size    Description
  6192.  00h    BYTE    length of first "protect" run (pixels remain unchanged)
  6193.  01h    BYTE    length of first "zero" run (pixels set to background color)
  6194.  02h    BYTE    length of second "protect" run
  6195.  03h    BYTE    length of second "zero" run
  6196.     ...
  6197. ----------620052-----------------------------
  6198. INT 62 u - FGDRIVER v1.10 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
  6199.     AX = 0052h
  6200.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  6201.     CX = number of pixel runs in masking map
  6202.     DX = width of masking map in pixels
  6203. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  6204.       modes
  6205.     the image is drawn with its lower left corner at the current graphics
  6206.       cursor position
  6207. SeeAlso: AX=0029h,AX=004Ah,AX=0051h,AX=0053h,AX=0054h
  6208. ----------620053-----------------------------
  6209. INT 62 u - FGDRIVER v1.10 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
  6210.     AX = 0053h
  6211.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  6212.     CX = number of pixel runs in masking map
  6213.     DX = width of masking map in pixels
  6214. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  6215.       modes
  6216.     the image is drawn with its lower left corner at the current graphics
  6217.       cursor position
  6218. SeeAlso: AX=0052h,AX=0054h
  6219. ----------620054-----------------------------
  6220. INT 62 u - FGDRIVER v1.10 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
  6221.     AX = 0054h
  6222.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  6223.     CX = number of pixel runs in masking map
  6224.     DX = width of masking map in pixels
  6225. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  6226.       modes
  6227.     the image is drawn with its lower left corner at the current graphics
  6228.       cursor position
  6229. SeeAlso: AX=0029h,AX=0052h,AX=0053h
  6230. ----------620055-----------------------------
  6231. INT 62 - FGDRIVER v1.10 - UNUSED
  6232.     AX = 0055h to 0059h
  6233. Return: AX = 0000h
  6234. ----------62005A-----------------------------
  6235. INT 62 u - FGDRIVER v1.10 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
  6236.     AX = 005Ah
  6237.     BX = left edge column
  6238.     CX = right edge column
  6239.     DX = top edge row
  6240.     SI = bottom edge row
  6241. Note:    left and right edges are adjusted to byte boundaries if necessary
  6242. SeeAlso: AX=005Bh
  6243. ----------62005B-----------------------------
  6244. INT 62 u - FGDRIVER v1.10 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
  6245.     AX = 005Bh
  6246.     BX = left edge column
  6247.     CX = right edge column
  6248.     DX = top edge row
  6249.     SI = bottom edge row
  6250. Note:    left and right edges are adjusted to byte boundaries if necessary
  6251. SeeAlso: AX=005Ah,AX=0064h
  6252. ----------62005C-----------------------------
  6253. INT 62 u - FGDRIVER v1.10 - "FG_TRANSFER" - COPY REGION
  6254.     AX = 005Ch
  6255.     CX = source video page
  6256.     DX = destination video page
  6257.     ES:BX -> copy record (see below)
  6258. Note:    source and destination regions must not overlap if on the same page
  6259. SeeAlso: AX=005Dh,AX=005Fh
  6260.  
  6261. Format of copy record:
  6262. Offset    Size    Description
  6263.  00h    WORD    left edge column of source region
  6264.  02h    WORD    right edge column of source region
  6265.  04h    WORD    top edge row of source region
  6266.  06h    WORD    bottom edge row of source region
  6267.  08h    WORD    left edge of destination
  6268.  0Ah    WORD    bottom edge of destination
  6269. ----------62005D-----------------------------
  6270. INT 62 u - FGDRIVER v1.10 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
  6271.     AX = 005Dh
  6272.     CX = source video page
  6273.     DX = destination video page
  6274.     ES:BX -> copy record (see AX=005Ch)
  6275. Notes:    pixels which are in any of the colors defined as transparent with
  6276.       AX=005Eh are left unchanged in the destination region
  6277.     source and destination regions must not overlap if on the same page
  6278.     this call is ignored in text modes
  6279. SeeAlso: AX=005Ch,AX=005Eh
  6280. ----------62005E-----------------------------
  6281. INT 62 u - FGDRIVER v1.10 - "FG_TCMASK" - SET TRANSPARENT COLORS
  6282.     AX = 005Eh
  6283.     BX = colors to consider transparent (bit 0 = color 0, etc)
  6284. Notes:    this call is ignored in text modes
  6285.     the specified colors are considered transparent by AX=005Dh
  6286. SeeAlso: AX=005Dh
  6287. ----------62005F-----------------------------
  6288. INT 62 u - FGDRIVER v1.10 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
  6289.     AX = 005Fh
  6290.     BX = source page number (0000h-003Fh)
  6291.     CX = destination page number (0000h-003Fh)
  6292. Note:    if both source and destination pages are logical pages, they must both
  6293.       be located in the same type (conventional, EMS, XMS) of memory
  6294. SeeAlso: AX=005Ch,AX=009Dh,AX=009Eh,AX=009Fh
  6295. ----------620060-----------------------------
  6296. INT 62 u - FGDRIVER v1.10 - "FG_DISPPCX" - DISPLAY PCX FILE
  6297.     AX = 0060h
  6298.     ES:BX -> ASCIZ filename
  6299.     CX = flags
  6300.         bit 0: use current palette rather than PCX file's palette
  6301.         bits 1-15: reserved (0)
  6302. Return: AX = status
  6303.         0000h success
  6304.         0001h file not found
  6305.         0002h file is not a valid PCX file
  6306. Notes:    this call is ignored in text modes and Hercules low-resolution graphics
  6307.     the image is displayed with its upper left corner at the current
  6308.       graphics cursor position
  6309. SeeAlso: AX=004Dh,AX=004Eh,AX=004Fh,AX=0061h
  6310. ----------620061-----------------------------
  6311. INT 62 u - FGDRIVER v1.10 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
  6312.     AX = 0061h
  6313.     BX = left edge in screen space units
  6314.     CX = right edge in screen space units
  6315.     DX = top edge in screen space units
  6316.     SI = bottom edge in screen space units
  6317.     ES:DI -> ASCIZ filename of PCX file to create
  6318. Return: AX = status
  6319.         0000h successful
  6320.         0001h file not created
  6321. Notes:    the PCX file is created from the specified region of the active video
  6322.       page; the left and right edges are adjusted to a byte boundary if
  6323.       necessary
  6324.     if the specified file already exists, it is overwritten
  6325.     this call is ignored in text and Hercules low-resolution graphics modes
  6326. SeeAlso: AX=0060h
  6327. ----------620062-----------------------------
  6328. INT 62 u - FGDRIVER v1.10 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
  6329.     AX = 0062h
  6330.     BX = image width in pixels
  6331.     CX = image height in pixels
  6332. Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
  6333. SeeAlso: AX=0048h
  6334. ----------620063-----------------------------
  6335. INT 62 - FGDRIVER v1.10 - UNUSED
  6336.     AX = 0063h
  6337. Return: AX = 0000h
  6338. ----------620064-----------------------------
  6339. INT 62 u - FGDRIVER v1.10 - "FG_FADEIN" - FADE IN HIDDEN PAGE
  6340.     AX = 0064h
  6341.     BX = delay (0000h = fastest possible fade-in)
  6342. Notes:    the current hidden page is copied to the current visible page in small
  6343.       random sections to produce a fade-in effect
  6344.     this call is ignored in text modes
  6345. SeeAlso: AX=005Bh,AX=0065h
  6346. ----------620065-----------------------------
  6347. INT 62 u - FGDRIVER v1.10 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
  6348.     AX = 0065h
  6349.     BX = delay (0000h = fastest possible fade-out)
  6350. Notes:    this call is ignored in text modes
  6351.     the current visible page is filled with pixels of the current color in
  6352.       small random sections to give a fade-out effect
  6353. SeeAlso: AX=0064h
  6354. ----------620066-----------------------------
  6355. INT 62 u - FGDRIVER v1.10 - "FG_PAN" - SET SCREEN ORIGIN
  6356.     AX = 0066h
  6357.     BX = new column for screen origin
  6358.     CX = new row for screen origin
  6359. SeeAlso: AX=0067h
  6360. ----------620067-----------------------------
  6361. INT 62 u - FGDRIVER v1.10 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
  6362.     AX = 0067h
  6363.     BX = left edge column
  6364.     CX = right edge column
  6365.     DX = top edge row
  6366.     SI = bottom edge row
  6367.     DI = number of pixels by which to scroll (positive scrolls up,
  6368.         negative scrolls down)
  6369.     ES = type of scroll
  6370.         0000h circular (rows scrolled off are copied to vacated rows)
  6371.         else vacated rows are filled with the current color
  6372. Notes:    in graphics modes, the left and right edges are adjusted to byte
  6373.       boundaries if necessary
  6374.     circular scrolling uses part of the hidden page as a workspace
  6375. SeeAlso: AX=0066h
  6376. ----------620068-----------------------------
  6377. INT 62 - FGDRIVER v1.10 - UNUSED
  6378.     AX = 0068h to 006Ch
  6379. Return: AX = 0000h
  6380. ----------62006D-----------------------------
  6381. INT 62 u - FGDRIVER v1.10 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
  6382.     AX = 006Dh
  6383. Return: after next key pressed
  6384. SeeAlso: AX=006Eh,AX=006Fh,AX=0096h
  6385. ----------62006E-----------------------------
  6386. INT 62 u - FGDRIVER v1.10 - "FG_GETKEY" - GET NEXT KEYSTROKE
  6387.     AX = 006Eh
  6388.     ES:BX -> variable pointer record (see below)
  6389. Return: (after next keystroke if no typeahead) variables updated
  6390. SeeAlso: AX=006Dh,AX=006Fh,AX=0070h
  6391.  
  6392. Format of variable pointer record:
  6393. Offset    Size    Description
  6394.  00h    WORD    segment of BYTE buffer for ASCII keycode
  6395.  02h    WORD    offset of BYTE buffer for ASCII keycode
  6396.  04h    WORD    segment of BYTE buffer for extended keycode
  6397.  06h    WORD    offset of BYTE buffer for extended keycode
  6398. ----------62006F-----------------------------
  6399. INT 62 u - FGDRIVER v1.10 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
  6400.     AX = 006Fh
  6401.     ES:BX -> variable pointer record (see below)
  6402. Return: variables updated
  6403. Note:    if the keyboard buffer is empty, both the ASCII and extended keycodes
  6404.       are set to 00h
  6405. SeeAlso: AX=006Dh,AX=006Eh,AX=0070h,AX=0079h
  6406.  
  6407. Format of variable pointer record:
  6408. Offset    Size    Description
  6409.  00h    WORD    segment of BYTE buffer for ASCII keycode
  6410.  02h    WORD    offset of BYTE buffer for ASCII keycode
  6411.  04h    WORD    segment of BYTE buffer for extended keycode
  6412.  06h    WORD    offset of BYTE buffer for extended keycode
  6413. ----------620070-----------------------------
  6414. INT 62 u - FGDRIVER v1.10 - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
  6415.     AX = 0070h
  6416. Return: AX = CapsLock state (0000h off, 0001h on)
  6417. SeeAlso: AX=006Eh,AX=006Fh,AX=0071h,AX=0072h,AX=0074h
  6418. ----------620071-----------------------------
  6419. INT 62 u - FGDRIVER v1.10 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
  6420.     AX = 0071h
  6421.     BX = new state (0000h off, 0001h on)
  6422. SeeAlso: AX=0070h,AX=0073h
  6423. ----------620072-----------------------------
  6424. INT 62 u - FGDRIVER v1.10 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
  6425.     AX = 0072h
  6426. Return: AX = NumLock state (0000h off, 0001h on)
  6427. SeeAlso: AX=0070h,AX=0074h
  6428. ----------620073-----------------------------
  6429. INT 62 u - FGDRIVER v1.10 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
  6430.     AX = 0073h
  6431.     BX = new state (0000h off, 0001h on)
  6432. SeeAlso: AX=0071h,AX=0072h
  6433. ----------620074-----------------------------
  6434. INT 62 u - FGDRIVER v1.10 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
  6435.     AX = 0074h
  6436. Return: AX = ScrollLock state (0000h off, 0001h on)
  6437. SeeAlso: AX=0070h,AX=0072h
  6438. ----------620075-----------------------------
  6439. INT 62 u - FGDRIVER v1.10 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
  6440.     AX = 0075h
  6441.     BX = joystick number (0001h or 0002h)
  6442. Return: AX = status
  6443.         0000h successful
  6444.         FFFFh joystick not connected or no game port
  6445. Note:    Fastgraph assumes that the requested joystick is centered at the time
  6446.       this function is called
  6447. SeeAlso: AX=0076h,AX=0077h,AX=0078h,AX=0079h
  6448. ----------620076-----------------------------
  6449. INT 62 u - FGDRIVER v1.10 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
  6450.     AX = 0076h
  6451.     BX = joystick number (0001h or 0002h)
  6452. Return: AX = horizontal position of joystick
  6453.         FFFFh if joystick uninitialized or not present
  6454. Notes:    the actual coordinates are processor- and joystick-dependent
  6455.     you must call AX=0075h before this function
  6456. SeeAlso: AX=0075h,AX=0077h,AX=0078h
  6457. ----------620077-----------------------------
  6458. INT 62 u - FGDRIVER v1.10 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
  6459.     AX = 0077h
  6460.     BX = joystick number (0001h or 0002h)
  6461. Return: AX = vertical position of joystick
  6462.         FFFFh if joystick uninitialized or not present
  6463. Notes:    the actual coordinates are processor- and joystick-dependent
  6464.     you must call AX=0075h before this function
  6465. SeeAlso: AX=0075h,AX=0076h,AX=0078h
  6466. ----------620078-----------------------------
  6467. INT 62 u - FGDRIVER v1.10 - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
  6468.     AX = 0078h
  6469.     BX = joystick number (0001h or 0002h)
  6470. Return: AX = button states
  6471.         bit 0: top button pressed
  6472.         bit 1: bottom button pressed
  6473. SeeAlso: AX=0075h,AX=0076h,AX=0077h,AX=0079h
  6474. ----------620079-----------------------------
  6475. INT 62 u - FGDRIVER v1.10 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
  6476.     AX = 0079h
  6477.     CX = joystick number (0001h or 0002h)
  6478.     ES:BX -> variable pointer record (see below)
  6479. Notes:    if the indicated joystick has not been initialized with AX=0075h, both
  6480.       the button code and joystick position will be set to 00h
  6481.     if either button is pressed, a button code of 0Dh is returned;
  6482.       otherwise, a button code of 00h is returned
  6483. SeeAlso: AX=006Fh,AX=0075h,AX=0078h
  6484.  
  6485. Format of variable pointer record:
  6486. Offset    Size    Description
  6487.  00h    WORD    segment of BYTE buffer for button code
  6488.  02h    WORD    offset of BYTE buffer for button code
  6489.  04h    WORD    segment of BYTE buffer for joystick position
  6490.  06h    WORD    offset of BYTE buffer for joystick position
  6491. ----------62007A-----------------------------
  6492. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
  6493.     AX = 007Ah
  6494. Return: AX = status
  6495.         0002h two-button mouse
  6496.         0003h three-button mouse
  6497.         FFFFh initialization failed
  6498. Note:    after this call, the mouse cursor is invisible
  6499. SeeAlso: AX=007Bh,AX=007Ch,AX=007Eh,AX=0080h,INT 33/AX=0000h
  6500. ----------62007B-----------------------------
  6501. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
  6502.     AX = 007Bh
  6503.     BX = new state (0000h invisible, 0001h visible)
  6504. SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0001h,INT 33/AX=0002h
  6505. ----------62007C-----------------------------
  6506. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
  6507.     AX = 007Ch
  6508.     CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
  6509.               -1=left release, -2=right release, -3=middle release)
  6510.     ES:BX -> variable pointer record (see below)
  6511. Return: variables updated
  6512. Note:    returns the count of presses or releases since the last call to this
  6513.       function; if the count is zero, row and col will also be zero
  6514. SeeAlso: AX=007Ah,INT 33/AX=0005h,INT 33/AX=0006h
  6515.  
  6516. Format of variable pointer record:
  6517. Offset    Size    Description
  6518.  00h    WORD    segment of WORD buffer for press/release count
  6519.  02h    WORD    offset of WORD buffer for press/release count
  6520.  04h    WORD    segment of WORD buffer for screen space col of last press/rls
  6521.  06h    WORD    offset of WORD buffer for screen space col of last press/rels
  6522.  08h    WORD    segment of WORD buffer for screen space row of last press/rls
  6523.  0Ah    WORD    offset of WORD buffer for screen space row of last press/rls
  6524. ----------62007D-----------------------------
  6525. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
  6526.     AX = 007Dh
  6527.     ES:BX -> variable pointer record (see below)
  6528. SeeAlso: AX=007Ah,AX=0081h
  6529.  
  6530. Format of variable pointer record:
  6531. Offset    Size    Description
  6532.  00h    WORD    segment of WORD buffer for mouse column
  6533.  02h    WORD    offset of WORD buffer for mouse column
  6534.  04h    WORD    segment of WORD buffer for mouse row
  6535.  06h    WORD    offset of WORD buffer for mouse row
  6536.  08h    WORD    segment of WORD buffer for button status
  6537.  0Ah    WORD    offset of WORD buffer for button status
  6538. Note:    button status: bit 0 = left button, bit 1 = right, bit 2 = middle
  6539. ----------62007E-----------------------------
  6540. INT 62 u - FGDRIVER v1.10 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
  6541.     AX = 007Eh
  6542.     BX = screen mask
  6543.     CX = cursor mask
  6544. Note:    this call is ignored in graphics modes
  6545. SeeAlso: AX=007Ah,AX=007Fh,INT 33/AX=000Ah
  6546. ----------62007F-----------------------------
  6547. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
  6548.     AX = 007Fh
  6549.     ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
  6550.     CX = X offset of hot spot from upper left corner
  6551.     DX = Y offset of hot spot from upper left corner
  6552. Note:    this call is ignored in text modes
  6553. SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0009h
  6554. ----------620080-----------------------------
  6555. INT 62 u - FGDRIVER v1.10 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
  6556.     AX = 0080h
  6557.     BX = left-most position allowed for mouse cursor
  6558.     CX = right-most position allowed
  6559.     DX = top-most position allowed
  6560.     SI = bottom-most position allowed
  6561. SeeAlso: AX=007Ah,AX=0081h,INT 33/AX=0007h,INT 33/AX=0008h
  6562. ----------620081-----------------------------
  6563. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
  6564.     AX = 0081h
  6565.     BX = new column
  6566.     CX = new row
  6567. Note:    will not move the mouse cursor outside the bounding box specified with
  6568.       AX=0080h
  6569. SeeAlso: AX=007Ah,AX=007Dh,AX=0080h,INT 33/AX=0004h
  6570. ----------620082-----------------------------
  6571. INT 62 u - FGDRIVER v1.10 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
  6572.     AX = 0082h
  6573.     BX = horizontal mickeys per eight pixels of movement (default 16)
  6574.     CX = vertical mickeys per eight pixels of movement (default 16)
  6575. SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
  6576. ----------620083-----------------------------
  6577. INT 62 - FGDRIVER v1.10 - UNUSED
  6578.     AX = 0083h to 0087h
  6579. Return: AX = 0000h
  6580. ----------620088-----------------------------
  6581. INT 62 u - FGDRIVER v1.10 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
  6582.     AX = 0088h
  6583.     BX = frequency in Hertz (18-32767)
  6584.     CX = duration in clock ticks (0000h or negative for continuous sound)
  6585. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6586.       progress
  6587. SeeAlso: AX=0089h,AX=008Ah,AX=008Eh,AX=0090h
  6588. ----------620089-----------------------------
  6589. INT 62 u - FGDRIVER v1.10 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
  6590.     AX = 0089h
  6591.     CX = number of times to cycle through sound list
  6592.     ES:BX -> sounds array (see below)
  6593. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6594.       progress
  6595. SeeAlso: AX=0088h,AX=008Eh,AX=008Fh
  6596.  
  6597. Format of sounds array element:
  6598. Offset    Size    Description
  6599.  00h    WORD    frequency of sound in Hertz (0000h ends array)
  6600.  02h    WORD    duration of sound in clock ticks
  6601. ----------62008A-----------------------------
  6602. INT 62 u - FGDRIVER v1.10 - "FG_VOICE" - START SOUND
  6603.     AX = 008Ah
  6604.     BX = channel on TI sound chip
  6605.         1-3 = channels 1-3, 4 = channel 4 with periodic noise,
  6606.         5 = channel 4 with white noise
  6607.     CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz, 
  6608.         2=2048 Hz for channels 4 and 5)
  6609.     DX = volume
  6610.     SI = duration in clock ticks (continuous if <= 0)
  6611. Notes:    FGDRIVER is the external video driver for the shareware
  6612.       Fastgraph/Light by Ted Gruber Software
  6613.     only available on PCjr and Tandy 1000
  6614. SeeAlso: AX=0088h,AX=008Bh,AX=008Ch
  6615. ----------62008B-----------------------------
  6616. INT 62 u - FGDRIVER v1.10 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
  6617.     AX = 008Bh
  6618.     ES:BX -> tone array (see below)
  6619.     CX = number of times to repeat tone array
  6620. Notes:    FGDRIVER is the external video driver for the shareware
  6621.       Fastgraph/Light by Ted Gruber Software
  6622.     only available on PCjr and Tandy 1000
  6623. SeeAlso: AX=008Ah,AX=008Dh,AX=008Eh,AX=008Fh,AX=0091h
  6624.  
  6625. Format of tone array element:
  6626. Offset    Size    Description
  6627.  00h    WORD    channel number (0000h terminates array)
  6628.  02h    WORD    frequency
  6629.  04h    WORD    volume
  6630.  06h    WORD    duration in 1/72.8 seconds
  6631. ----------62008C-----------------------------
  6632. INT 62 u - FGDRIVER v1.10 - "FG_MUSIC" - PLAY SERIES OF NOTES
  6633.     AX = 008Ch
  6634.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  6635. Return: after music completed
  6636. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6637.       progress
  6638. SeeAlso: AX=008Ah,AX=008Dh
  6639. ----------62008D-----------------------------
  6640. INT 62 u - FGDRIVER v1.10 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
  6641.     AX = 008Dh
  6642.     CX = number of repetitions (negative = continuous play)
  6643.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  6644. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6645.       progress
  6646. SeeAlso: AX=008Bh,AX=008Ch,AX=008Eh,AX=008Fh,AX=0091h
  6647. ----------62008E-----------------------------
  6648. INT 62 u - FGDRIVER v1.10 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
  6649.     AX = 008Eh
  6650. Note:    immediately stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
  6651.       or AX=008Bh; ignored if no asynchronous sound is playing
  6652. SeeAlso: AX=0088h,AX=008Bh,AX=008Fh,AX=0090h,AX=0091h
  6653. ----------62008F-----------------------------
  6654. INT 62 u - FGDRIVER v1.10 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
  6655.     AX = 008Fh
  6656. Note:    stops any sounds started with "FG_MUSICB", "FG_SOUNDS", or AX=008Bh
  6657.       after the current repetition completes; ignored unless asynchronous
  6658.       sound is continuous
  6659. SeeAlso: AX=008Bh,AX=008Eh,AX=0090h
  6660. ----------620090-----------------------------
  6661. INT 62 u - FGDRIVER v1.10 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
  6662.     AX = 0090h
  6663. Note:    this call has no effect if there is no continuous sound playing
  6664. SeeAlso: AX=008Eh,AX=008Fh,AX=0091h
  6665. ----------620091-----------------------------
  6666. INT 62 u - FGDRIVER v1.10 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
  6667.     AX = 0091h
  6668. Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
  6669. SeeAlso: AX=008Bh,AX=008Dh,AX=0090h
  6670. ----------620092-----------------------------
  6671. INT 62 u - FGDRIVER v1.10 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
  6672.     AX = 0092h
  6673. SeeAlso: AX=008Eh,AX=008Fh,AX=0090h
  6674. ----------620093-----------------------------
  6675. INT 62 u - FGDRIVER v1.10 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
  6676.     AX = 0093h
  6677. Notes:    this call has no effect if there is no asynchronous sound in progress
  6678.     the program must not exit while sound is suspended
  6679. SeeAlso: AX=0092h
  6680. ----------620094-----------------------------
  6681. INT 62 - FGDRIVER v1.10 - UNUSED
  6682.     AX = 0094h to 0095h
  6683. Return: AX = 0000h
  6684. ----------620096-----------------------------
  6685. INT 62 u - FGDRIVER v1.10 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
  6686.     AX = 0096h
  6687.     BX = duration in clock ticks
  6688. Return: after delay elapses
  6689. SeeAlso: AX=006Dh,AX=0097h
  6690. ----------620097-----------------------------
  6691. INT 62 u - FGDRIVER v1.10 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
  6692.     AX = 0097h
  6693.     BX = duration in processor-dependent delay units (see AX=0098h)
  6694. Return: after delay elapses
  6695. SeeAlso: AX=0096h,AX=0098h
  6696. ----------620098-----------------------------
  6697. INT 62 u - FGDRIVER v1.10 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
  6698.     AX = 0098h
  6699. Return: AX = delay units per clock tick (processor-dependent)
  6700. Note:    delay units are used by "FG_STALL" (AX=0097h)
  6701. SeeAlso: AX=0097h
  6702. ----------620099-----------------------------
  6703. INT 62 u - FGDRIVER v1.10 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
  6704.     AX = 0099h
  6705. Return: DX:AX = number of clock ticks since midnight
  6706. Note:    FGDRIVER is the external video driver for the shareware
  6707.       Fastgraph/Light by Ted Gruber Software
  6708. ----------62009A-----------------------------
  6709. INT 62 - FGDRIVER v1.10 - UNUSED
  6710.     AX = 009Ah
  6711. Return: AX = 0000h
  6712. ----------62009B-----------------------------
  6713. INT 62 u - FGDRIVER v1.10 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
  6714.     AX = 009Bh
  6715. Return: DX:AX = number of bytes of conventional memory available
  6716. SeeAlso: AX=009Dh
  6717. ----------62009C-----------------------------
  6718. INT 62 u - FGDRIVER v1.10 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
  6719.     AX = 009Ch
  6720.     BX = operation
  6721.         0000h replacement
  6722.         0001h AND
  6723.         0002h OR
  6724.         0003h XOR
  6725. Note:    only available in native EGA/VGA graphics mode (0Dh to 12h)
  6726. ----------62009D-----------------------------
  6727. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONVMEM)
  6728.     AX = 009Dh
  6729.     BX = page number (0001h-003Fh)
  6730. Return: AX = status
  6731.         0000h successful
  6732.         FFFCh insufficient memory
  6733.         FFFDh page already created, or exists as physical or virtual page
  6734.         FFFEh invalid page number
  6735. Note:    the only operation which is allowed on logical pages is AX=005Fh
  6736. SeeAlso: AX=0043h,AX=005Fh,AX=009Bh,AX=009Eh,AX=009Fh
  6737. ----------62009E-----------------------------
  6738. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
  6739.     AX = 009Eh
  6740.     BX = page number (0001h-003Fh)
  6741. Return: AX = status
  6742.         0000h successful
  6743.         FFFCh insufficient memory
  6744.         FFFDh page already created, or exists as physical or virtual page
  6745.         FFFEh invalid page number
  6746.         FFFFh memory manager not initialized
  6747. Notes:    must first call AX=00A0h
  6748.     the only operation which is allowed on logical pages is AX=005Fh
  6749. SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Fh,AX=00A0h
  6750. ----------62009F-----------------------------
  6751. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
  6752.     AX = 009Fh
  6753.     BX = page number (0001h-003Fh)
  6754. Return: AX = status (see AX=009Eh)
  6755. Notes:    must first call AX=00A1h
  6756.     the only operation which is allowed on logical pages is AX=005Fh
  6757. SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Eh,AX=00A1h
  6758. ----------6200A0-----------------------------
  6759. INT 62 u - FGDRIVER v1.10 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
  6760.     AX = 00A0h
  6761. Return: AX = status
  6762.         0000h successful
  6763.         FFFFh expanded memory manager inaccessible or not installed
  6764. SeeAlso: AX=009Eh,AX=00A1h
  6765. ----------6200A1-----------------------------
  6766. INT 62 u - FGDRIVER v1.10 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
  6767.     AX = 00A1h
  6768. Return: AX = status
  6769.         0000h successful
  6770.         FFFFh extended memory manager inaccessible or not installed
  6771. SeeAlso: AX=009Fh,AX=00A0h
  6772. ----------6200A2-----------------------------
  6773. INT 62 u - FGDRIVER v1.10 - "FG_BOX" - DRAW UNFILLED RECTANGLE
  6774.     AX = 00A2h
  6775.     BX = left column
  6776.     CX = right column
  6777.     DX = top row
  6778.     SI = bottom row
  6779. Notes:    FGDRIVER is the external video driver for the shareware
  6780.       Fastgraph/Light by Ted Gruber Software
  6781.     the rectangle is drawn in screen space, respecting the clipping region,
  6782.       width edges of the width specified with AX=00A3h (default = 1 is set
  6783.       by "FG_SETMODE")
  6784.     this function has no effect in text modes
  6785. SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=0030h,AX=00A3h
  6786. ----------6200A3-----------------------------
  6787. INT 62 u - FGDRIVER v1.10 - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
  6788.     AX = 00A3h
  6789.     BX = width of left and right edges in pixels (> 0)
  6790.     CX = width of top and bottom edges in pixels (> 0)
  6791. SeeAlso: AX=00A2h
  6792. ----------6200A4-----------------------------
  6793. INT 62 u - FGDRIVER v1.10 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
  6794.     AX = 00A4h
  6795.     CX = number of DAC registers to return (0001h to 0100h)
  6796.     DX = starting DAC register number (0000h to 00FFh)
  6797.     ES:BX -> buffer for DAC red/green/blue triples
  6798. Note:    the register number wraps back to zero after FFh
  6799. SeeAlso: AX=001Ch,AX=00A5h
  6800. ----------6200A5-----------------------------
  6801. INT 62 u - FGDRIVER v1.10 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
  6802.     AX = 00A5h
  6803.     CX = number of DAC registers to set (0001h to 0100h)
  6804.     DX = starting DAC register number (0000h to 00FFh)
  6805.     ES:BX -> buffer containing DAC red/green/blue triples
  6806. Notes:    the register number wraps back to zero after FFh
  6807.     this call has no effect in text modes or graphics modes below 11h
  6808. SeeAlso: AX=001Bh,AX=00A4h
  6809. ----------6201-------------------------------
  6810. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  6811.     AH = 01h
  6812. Note:    Cswitch is a set of multitasking functions by Herb Rose
  6813. SeeAlso: AH=05h,AH=06h,INT 15/AX=1000h
  6814. ----------6202-------------------------------
  6815. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  6816.     AH = 02h
  6817.     DX = semaphore number (0-63)
  6818. Return: AX = FFFFh bad semaphore number
  6819.          else  success
  6820. SeeAlso: AH=03h,AH=04h
  6821. ----------6203-------------------------------
  6822. INT 62 - Cswitch - CHECK SEMAPHORE
  6823.     AH = 03h
  6824.     DX = semaphore number (0-63)
  6825. Return: AX = FFFFh not owned
  6826.          else  owned
  6827. SeeAlso: AH=02h,AH=04h
  6828. ----------6204-------------------------------
  6829. INT 62 - Cswitch - TRIGGER SEMAPHORE
  6830.     AH = 04h
  6831.     DX = semaphore number (0-63)
  6832. Return: AX = FFFFh bad semaphore number
  6833.          else  success
  6834. SeeAlso: AH=02h,AH=03h
  6835. ----------6205-------------------------------
  6836. INT 62 - Cswitch - SLEEP
  6837.     AH = 05h
  6838.     BX = seconds to sleep
  6839. SeeAlso: AH=01h,AH=06h,AH=08h"Cswitch"
  6840. ----------6206-------------------------------
  6841. INT 62 - Cswitch - SUSPEND
  6842.     AH = 06h
  6843. SeeAlso: AH=05h,AH=08h"Cswitch"
  6844. ----------6207-------------------------------
  6845. INT 62 - Cswitch - SPAWN
  6846.     AH = 07h
  6847.     ES:BX -> function address to start executing at
  6848.     CX = priority (1-10)
  6849. Return: AX = FFFDh  no free memory control blocks
  6850.        = FFFEh  no free task control blocks
  6851.        = FFFFh  not enough memory to create new task stack
  6852.        = >0        the tcb number of the new task, indicating no error
  6853. SeeAlso: AH=0Fh,AH=10h
  6854. ----------6208-------------------------------
  6855. INT 62 - Cswitch - WAKE UP TASK
  6856.     AH = 08h
  6857.     BX = tcb identifier
  6858. SeeAlso: AH=05h,AH=06h
  6859. ----------6208--CXFFFE-----------------------
  6860. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  6861.     AH = 08h
  6862.     CX = FFFEh
  6863.     DX = FFFFh
  6864. Return: AX = PSP address of resident DBLIBRARY
  6865. Note:    this call does not free the memory allocated to the TSR; the calling
  6866.       code must do the deallocation.
  6867. SeeAlso: INT 62"DBLIBRARY"
  6868. ----------6209-------------------------------
  6869. INT 62 - Cswitch - SET PRIORITY
  6870.     AH = 09h
  6871.     BX = new base priority (1-10)
  6872. Note:    the lower the priority is numerically, the more often the task will run
  6873. ----------620A-------------------------------
  6874. INT 62 - Cswitch - TEST MESSAGE QUEUE
  6875.     AH = 0Ah
  6876.     DX = queue number (0-63)
  6877. Return: AX = FFFFh bad queue number
  6878.        = 0000h nothing on queue
  6879.          else  number of bytes in first message in queue
  6880. SeeAlso: AH=0Bh,AH=0Ch
  6881. ----------620B-------------------------------
  6882. INT 62 - Cswitch - SEND MESSAGE
  6883.     AH = 0Bh
  6884.     CX = number of bytes to write
  6885.     DS:SI -> buffer
  6886.     DX = queue number (0-63)
  6887. Return: AX = FFFEh triggered by something arriving, redo the call
  6888.        = FFFFh bad queue number
  6889.        = 0000h no message was on queue
  6890.          else  number of bytes in message
  6891. SeeAlso: AH=0Ah,AH=0Ch
  6892. ----------620C-------------------------------
  6893. INT 62 - Cswitch - READ MESSAGE
  6894.     AH = 0Ch
  6895.     CX = number of bytes to read
  6896.     DS:SI -> buffer
  6897.     DX = queue number (0-63)
  6898. Return: AX = FFFFh bad queue number
  6899.          else  number of bytes transferred
  6900. SeeAlso: AH=0Ah,AH=0Bh
  6901. ----------620D-------------------------------
  6902. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  6903.     AH = 0Dh
  6904. SeeAlso: AH=0Eh
  6905. ----------620E-------------------------------
  6906. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  6907.     AH = 0Eh
  6908. SeeAlso: AH=0Dh
  6909. ----------620F-------------------------------
  6910. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  6911.     AH = 0Fh
  6912.     ES:BX -> command line
  6913.     CX = priority (1-10)
  6914.     DX = background flag
  6915.        = != 0000h  allows loading to EMS
  6916. Return: AX = 0000h task loader queue is full
  6917.        = 0001h  no error
  6918. SeeAlso: AH=07h,AH=10h,AH=13h
  6919. ----------6210-------------------------------
  6920. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  6921.     AH = 10h
  6922. SeeAlso: AH=07h,AH=0Fh
  6923. ----------6211-------------------------------
  6924. INT 62 - Cswitch - GET TCB INFORMATION
  6925.     AH = 11h
  6926.     ES:BX -> a pointer which will be set to the tcb address
  6927. Return: AX = tcb indentifier
  6928. SeeAlso: AH=12h
  6929. ----------6212-------------------------------
  6930. INT 62 - Cswitch - GET TCB ADDRESS
  6931.     AH = 12h
  6932.     ES:BX -> a pointer which will be set to the tcb table address
  6933. Return: AX = tcb indentifier
  6934. SeeAlso: AH=11h
  6935. ----------6213-------------------------------
  6936. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  6937.     AH = 13h
  6938. Return: AX = FFFCh no Memory Control Blocks available
  6939.        = FFFDh no TCBs available
  6940.        = FFFEh insufficient memory
  6941.        = FFFFh cannot open file
  6942.        = 0000h load in progress (not done yet)
  6943.          else  tcb indentifier
  6944. SeeAlso: AH=0Fh
  6945. ----------6247-------------------------------
  6946. INT 62 - PC Tools 7 COMMUTE - ???
  6947.     AH = 47h
  6948.     AL = subfunction (00h-31h)
  6949.     ???
  6950.     CF set
  6951. Return: ???
  6952. ----------6248-------------------------------
  6953. INT 62 - PC Tools 7 COMMUTE - ???
  6954.     AH = 48h
  6955.     AL = ???
  6956.     ???
  6957.     CF set
  6958. Return: ???
  6959. ----------6249-------------------------------
  6960. INT 62 - PC Tools 7 COMMUTE - ???
  6961.     AH = 49h
  6962.     ???
  6963.     CF set
  6964. Return: ???
  6965. Note:    may be the same as AH=4Ch
  6966. ----------624A-------------------------------
  6967. INT 62 - PC Tools 7 COMMUTE - ???
  6968.     AH = 4Ah
  6969.     AL = subfunction (00h-46h)
  6970.     ???
  6971.     CF set
  6972. Return: ???
  6973. ----------624B--BX1234-----------------------
  6974. INT 62 - PC Tools 7 COMMUTE - ???
  6975.     AH = 4Bh
  6976.     BX = 1234h
  6977.     CX = 1234h
  6978.     ES = ???
  6979.     CF set
  6980. Return: ???
  6981. ----------624C-------------------------------
  6982. INT 62 - PC Tools 7 COMMUTE - ???
  6983.     AH = 4Ch
  6984.     BL = subfunction
  6985.         00h ???
  6986.         02h ???
  6987. Return: CF clear if successful
  6988.     CF set on error
  6989. ----------626262-----------------------------
  6990. INT 62 - PC Tools 7 COMMUTE - INSTALLATION CHECK
  6991.     AX = 6262h
  6992.     CF set
  6993. Return: AX = 0000h
  6994.     BX = segment of resident code's PSP
  6995. ----------63---------------------------------
  6996. INT 63 - reserved for user interrupt
  6997. ----------63---------------------------------
  6998. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  6999. Notes:    this vector stores the last four bytes of the parameter table for
  7000.       hard disk 0
  7001. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  7002. ----------63---------------------------------
  7003. INT 63 - Oracle SQL Protected Mode Executive - ???
  7004. ----------63---------------------------------
  7005. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  7006.    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
  7007.    has been moved there) and places the old value here
  7008. ----------63---------------------------------
  7009. INT 63 - Kofax KF9X00 image manipulation card interface
  7010. ----------63---------------------------------
  7011. INT 63 - DESQview/X - SOCKET API
  7012. Notes:    parameters are passed by patching!! data field immediately following
  7013.       the entry point, as detailed below; the preferred method for calling
  7014.       the socket API is via INT 15/AX=DE2Eh
  7015.     the installation check consists of testing for the string "dvxunix"
  7016.       (yes, lowercase) at offset 9 from the interrupt handler start
  7017. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  7018.  
  7019. Format of interrupt handler entry:
  7020. Offset    Size    Description
  7021.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  7022.  03h    WORD    offset from following pointer for initial top of local stack
  7023.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  7024.  09h  7 BYTEs    signature "dvxunix"
  7025. ----------64---------------------------------
  7026. INT 64 - reserved for user interrupt
  7027. ----------64---------------------------------
  7028. INT 64 - Adaptec controllers - DRIVE 1 DATA
  7029. Notes:    this vector stores the first four bytes of the parameter table for
  7030.       hard disk 1
  7031.     these vectors are used by the following Adaptec controllers:
  7032.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  7033.     these vectors are NOT used by the following Adaptec controllers:
  7034.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  7035. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  7036. ----------64---------------------------------
  7037. INT 64 - Oracle SQL Protected Mode Executive - ???
  7038. ----------64---------------------------------
  7039. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  7040. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  7041.       versions do not use this interrupt for IPX/SPX access, instead
  7042.       getting an entry point from INT 2F/AX=7A00h
  7043. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  7044. ----------64---------------------------------
  7045. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7046. SeeAlso: INT 65"DG10",INT 66"DG10"
  7047. ----------64---------------------------------
  7048. INT 64 - Extended Batch Language v3.14+
  7049.     AH = function
  7050.         00h to 5Fh chained to previous handler
  7051.         60h to 6Ch reserved, return immediately
  7052.         80h to FFh chained to previous handler
  7053.         6Dh (v4.01+) insert tone in queue
  7054.         AL = ???
  7055.         CX = frequency in Hertz
  7056.         DL = duration in clock ticks
  7057.         Return: AL = 00h if note stored
  7058.                = 01h if no room to store
  7059.         6Eh clear ??? counter/flag
  7060.         6Fh return counter/flag that AH=6Eh clears
  7061.         70h ???
  7062.         AL = ???
  7063.         71h ???
  7064.         AL = ???
  7065.         72h ???
  7066.         73h insert byte at end of keyboard buffer
  7067.         AL = byte to insert
  7068.         Return: AL = 00h if byte inserted
  7069.                = 01h if no room to store
  7070.         74h insert byte at front of keyboard buffer
  7071.         AL = byte to insert
  7072.         Return: AL = 00h if byte inserted
  7073.                = 01h if no room to store
  7074.         75h ???
  7075.         76h get keyboard "stack" status
  7076.         AL = 'K' if kbd read will read physical keyboard
  7077.              'S' if it will read EBL internal keyboard buffer
  7078.         AH = ???
  7079.         77h clear internal keyboard buffer
  7080.         78h ???
  7081.         AL = ???
  7082.         79h ???
  7083.         7Ah ???
  7084.         AL = ???
  7085.         7Bh ???
  7086.         AL = ???
  7087.         7Ch ???
  7088.         AL = ???
  7089.         7Dh ???
  7090.         AL = ???
  7091.         7Eh clear buffer for ???
  7092.         7Fh installation check
  7093.         Return: CX = version in BCD
  7094.             DI = segment of ???
  7095.             BX = segment of next program's PSP???
  7096. Notes:    Extended Batch Language is a batch-file enhancer by Seaware
  7097.     the chaining does not check whether the interrupt had been hooked
  7098.       before, so if you try to chain when the previous vector was 
  7099.       0000h:0000h, you'll be in trouble
  7100.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  7101.       floating-point and extended function packages
  7102. ----------64---------------------------------
  7103. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7104. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  7105.       It can either destroy 4 vectors and take no memory or TSR and take
  7106.       up some memory.
  7107. SeeAlso: INT 65"Pdisk"
  7108. ----------65---------------------------------
  7109. INT 65 - reserved for user interrupt
  7110. ----------65---------------------------------
  7111. INT 65 - Adaptec controllers - DRIVE 1 DATA
  7112. Note:    this vector stores the second four bytes of the parameter table for
  7113.       hard disk 1
  7114. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  7115. ----------65---------------------------------
  7116. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7117. SeeAlso: INT 64"DG10",INT 66"DG10"
  7118. ----------65---------------------------------
  7119. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  7120. ----------65---------------------------------
  7121. INT 65 - SD.COM v6.2
  7122.    The unregistered version of SD62.COM uses the low byte of this vector to
  7123.    count the number of invocations, displaying a registration reminder each
  7124.    time after the 20th use.
  7125. ----------65---------------------------------
  7126. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7127. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  7128. ----------65---------------------------------
  7129. INT 65 - Ad Lib SOUND.COM - INTERFACE
  7130.     SI = function number (see also entries below)
  7131.         0000h Init
  7132.         0002h RelTimeStart
  7133.         0003h SetState
  7134.         0004h GetState
  7135.         0005h Flush
  7136.         0006h SetMode
  7137.         0007h GetMode
  7138.         0008h SetRelVolume
  7139.         0009h SetTempo
  7140.         000Ah SetTranspose
  7141.         000Bh GetTranspose
  7142.         000Ch SetActVoice
  7143.         000Dh GetActVoice
  7144.         000Eh PlayNoteDel
  7145.         000Fh PlayNote
  7146.         0010h SetTimbre
  7147.         0011h SetPitch
  7148.         0012h SetTickBeat
  7149.         0013h NoteOn
  7150.         0014h NoteOff
  7151.         0015h Timbre
  7152.         0016h SetPitchBend
  7153.         0017h WaveForm
  7154.     ES:BX -> arguments
  7155. Note:    the installation check consists of checking for the signature block
  7156.       immediately preceding the interrupt handler (see below)
  7157.  
  7158. Format of signature block:
  7159. Offset    Size    Description
  7160.  00h    WORD    version number
  7161.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  7162.  15h    BYTE    01h
  7163.  16h    BYTE    01h
  7164.  17h    BYTE    00h
  7165. ----------65----SI0000-----------------------
  7166. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  7167.     SI = 0000h
  7168. ----------65----SI0003-----------------------
  7169. INT 65 - Ad Lib SOUND.COM - SET STATE
  7170.     SI = 0003h
  7171.     ES:BX -> WORD state = 0000h disabled 
  7172.                 = 0001h enabled
  7173. SeeAlso: SI=0004h
  7174. ----------65----SI0004-----------------------
  7175. INT 65 - Ad Lib SOUND.COM - GET STATE
  7176.     SI = 0004h
  7177. Return: AX = 0000h all done playing sounds
  7178.        = else  still playing sounds
  7179. SeeAlso: SI=0003h
  7180. ----------65----SI0006-----------------------
  7181. INT 65 - Ad Lib SOUND.COM - SET MODE
  7182.     SI = 0006h
  7183.     ES:BX -> WORD mode = 0000h melodic
  7184.                = 0001h percussive
  7185. SeeAlso: SI=0007h
  7186. ----------65----SI0007-----------------------
  7187. INT 65 - Ad Lib SOUND.COM - GET MODE
  7188.     SI = 0007h
  7189. Return: AX = 0000h melodic
  7190.        = 0001h percussive
  7191. SeeAlso: SI=0006h
  7192. ----------65----SI000C-----------------------
  7193. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  7194.     SI = 000Ch
  7195.     ES:BX -> WORD voice = 0000h to 0008h
  7196. SeeAlso: SI=000Dh
  7197. ----------65----SI000D-----------------------
  7198. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  7199.     SI = 000Dh
  7200. Return: AX = voice (0000h to 0008h)
  7201. SeeAlso: SI=000Ch
  7202. ----------66---------------------------------
  7203. INT 66 - reserved for user interrupt
  7204. ----------66---------------------------------
  7205. INT 66 - Adaptec controllers - DRIVE 1 DATA
  7206. Note:    this vector stores the third four bytes of the parameter table for
  7207.       hard disk 1
  7208. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  7209. ----------66---------------------------------
  7210. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7211. SeeAlso: INT 64"DG10"
  7212. ----------66---------------------------------
  7213. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  7214. Notes:    hooked but not used (IRET) by both redirector and server; called from
  7215.       server's INT 28 handler
  7216.     TurboNET is a NetBIOS-based file redirector and server
  7217. SeeAlso: INT 2F/AX=8100h
  7218. ----------66---------------------------------
  7219. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7220. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  7221. ----------66---------------------------------
  7222. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  7223. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  7224.       which will expire and call INT 66.  This timer can be used to
  7225.       calculate elapsed execution time etc.
  7226. ----------6601-------------------------------
  7227. INT 66 - BitFax Scheduler - SET MODE???
  7228.     AH = 01h
  7229. SeeAlso: AH=02h
  7230. ----------6602-------------------------------
  7231. INT 66 - BitFax Scheduler - SET MODE???
  7232.     AH = 02h
  7233. SeeAlso: AH=01h
  7234. ----------6603-------------------------------
  7235. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  7236.     AH = 03h
  7237.     ???
  7238. Return: ???
  7239. SeeAlso: AH=05h
  7240. ----------6604-------------------------------
  7241. INT 66 - BitFax Scheduler - GET STATUS???
  7242.     AH = 04h
  7243. Return: AX = ??? (0000h or 0001h)
  7244.     DX = BitSched version???  (for versions >= 3.00)
  7245.         9796h (ver. 3.00)
  7246.         97E6h (ver. 3.02)
  7247.         92D0h (ver. 3.04.06)
  7248.         9510h (ver. 3.06.02)
  7249. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  7250. ----------6605-------------------------------
  7251. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  7252.     AH = 05h
  7253.     BX:CX -> command block (see below)
  7254.     ???
  7255. Return: ???
  7256. SeeAlso: AH=03h
  7257.  
  7258. Format of command block:
  7259. Offset    Size    Description
  7260.  00h 18 BYTEs    configuration bytes???
  7261.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  7262.  52h    BYTEs    ASCIZ directory containing BitFax executables
  7263.  92h    BYTEs    ASCIZ telephone number
  7264.  C2h    BYTE    00h don't send cover page
  7265.         01h send cover page
  7266.  C3h 15 BYTEs    configuration bytes???
  7267.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  7268.         configuration information???)
  7269. 122h    BYTEs    configuration bytes???
  7270. 12Ch    BYTE    00h don't send cover page
  7271.         01h send cover page
  7272. 12Dh  7 BYTEs    configuration bytes???
  7273. 134h    BYTEs    ASCIZ path of file to send
  7274. 174h    BYTEs    more configuration bytes???
  7275.     ???
  7276. ----------6606-------------------------------
  7277. INT 66 - BitFax Scheduler - SET MODE???
  7278.     AH = 06h
  7279. Return: DX = BitSched version??? (same as AH=04h)
  7280. SeeAlso: AH=04h
  7281. ----------660688-----------------------------
  7282. INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
  7283.     AX = 0688h
  7284.     ???
  7285. Return: ???
  7286. SeeAlso: AX=0689h
  7287. ----------660689-----------------------------
  7288. INT 66 - John W. Ratcliff (The IBM Digitized Sound Package)
  7289.     AX = 0689h
  7290.     ???
  7291. Return: ???
  7292. SeeAlso: AX=0688h
  7293. ----------663345-----------------------------
  7294. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  7295.     AX = 3345h
  7296. Return: AX = FFFFh error removing TSR
  7297. Note:    the installation check consists of checking for the signature
  7298.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  7299. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  7300. ----------66FFFBBXFFFB-----------------------
  7301. INT 66 - MicroHelp Stay-Res Plus - ???
  7302.     AX = FFFBh
  7303.     BX = FFFBh
  7304.     ???
  7305. Return: ???
  7306. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  7307. ----------66FFFEBXFFFE-----------------------
  7308. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  7309.     AX = FFFEh
  7310.     BX = FFFEh
  7311. Return: only if unsuccessful
  7312. Notes:    installation check is for the interrupt handler to begin with the bytes
  7313.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  7314.       appear at offset 0005h (older versions) or the offset returned by
  7315.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  7316.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  7317.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  7318. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  7319. ----------66FFFFBXFFF0-----------------------
  7320. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  7321.     AX = FFFFh
  7322.     BX = FFF0h
  7323. Return: DI = offset of program name in interrupt handler segment
  7324. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  7325. ----------67---------------------------------
  7326. INT 67 - Adaptec controllers - DRIVE 1 DATA
  7327. Note:    this vector stores the last four bytes of the parameter table for
  7328.       hard disk 1
  7329. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  7330. ----------67---------------------------------
  7331. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7332. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  7333. ----------67---------------------------------
  7334. INT 67 - Sangoma CCPOP 3270 resident module
  7335. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  7336. ----------67---------------------------------
  7337. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  7338. Notes:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  7339.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  7340.       the signature value 434Ch:4F4Bh ('CLOK')
  7341.     CUCKOO is a resident on-screen clock with optional hourly chime or
  7342.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  7343. ----------6700-------------------------------
  7344. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  7345.     AH = 00h
  7346.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7347. Return: AL = status
  7348.         00h successful
  7349.         01h invalid function
  7350.         02h semaphore already locked
  7351.         03h unable to lock semaphore
  7352.         04h semaphore space exhausted
  7353.     AH = semaphore owner if status=02h
  7354. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  7355. ----------6701-------------------------------
  7356. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  7357.     AH = 01h
  7358.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7359. Return: AL = status (see AH=00h)
  7360.     AH = semaphore owner if status=02h
  7361. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  7362. ----------6702-------------------------------
  7363. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  7364.     AH = 02h
  7365.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7366. Return: AL = status (see AH=00h)
  7367.     AH = semaphore owner if status=02h
  7368. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  7369. ----------673F--CX5145-----------------------
  7370. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  7371.     AH = 3Fh
  7372.     CX = 5145h ("QE")
  7373.     DX = 4D4Dh ("MM")
  7374. Return: AH = 00h if installed
  7375.         ES:DI -> QEMM API entry point
  7376. Notes:    if no other program has hooked INT 67, an alternate installation
  7377.       check is to test for the string
  7378.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  7379.       handler's segment; the word at offset 12h contains the offset in
  7380.       the handler's segment of the API entry point
  7381.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  7382.       the alternate QEMM installation check and entry point functions 00h,
  7383.       02h, and 03h; version 4D only provides the signature string if the
  7384.       commandline argument "DV" is provided
  7385.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  7386.       recognize the returned entry point as providing QEMM's capabilities
  7387.       because a) only functions 0Ch (different from QEMM 0Ch) and
  7388.             1000h-1009h are supported,
  7389.           b) status is returned as for EMS functions, not QEMM funcs
  7390.           c) the protected-mode entry point returned by function 1000h
  7391.             only supports functions    0Ch, 1004h, 1005h, and 100Ah
  7392.     the string check mentioned above is not supported by 386MAX
  7393. SeeAlso: AH=DDh,AX=5BF0h,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h"QEMM"
  7394. SeeAlso: INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  7395.  
  7396. Call QEMM entry point with:
  7397.     AH = 00h get QEMM state
  7398.         Return: CF clear
  7399.             AL = QEMM state
  7400.                 bit 0 set if QEMM turned OFF
  7401.                 bit 1 set if in "Auto" mode
  7402.     AH = 01h set QEMM state
  7403.         AL = new state
  7404.             bit 0 set: place QEMM in OFF state
  7405.         Return: CF clear if successful
  7406.             CF set on error
  7407.     AH = 02h get ???
  7408.         Return: CF clear
  7409.             AX = segment of ??? data structure
  7410.             Data Structure
  7411.             Offset    Size    Description
  7412.              00h    DWORD    page table entry for ???
  7413.                 ???
  7414.     AH = 03h get QEMM version
  7415.         Return: CF clear
  7416.             AX = BX = version in BCD
  7417.         Notes:    the official docs only state that the version is
  7418.               returned in BX
  7419.             MICEMM returns AX=0001h, BX unchanged
  7420.     AH = 04h allocate 4K page and set AUTO/ON mode
  7421.         Return: CF clear if successful
  7422.                 DX = page number of a 4K page
  7423.             CF set if unable to allocate page
  7424.         Note:    QEMM mode unchanged if not AUTO/OFF
  7425.     AH = 05h free 4K page and turn QEMM off
  7426.         DX = page number returned by function 04h
  7427.         Return: CF clear
  7428.         Note:    QEMM mode unchanged if not AUTO/ON
  7429.     AH = 06h make new mapping context???
  7430.         DX = page number of 4K page to hold page table
  7431.         Return: CF clear
  7432.         Note:    copies page table into given page and then sets ???
  7433.               page table entry to point at copy
  7434.     AH = 07h get mapping context
  7435.         Return: CF clear
  7436.             DX = page number of page table for current mapping
  7437.                 context
  7438.     AH = 08h set mapping context???
  7439.         DX = linear page number of page table
  7440.         Return: CF clear
  7441.     AH = 09h get linear page number for page table entry
  7442.         CX = page table index
  7443.         Return: CF clear
  7444.             DX = linear page number
  7445.     AH = 0Ah set linear page number for page table entry
  7446.         CX = page table index
  7447.         DX = linear page number
  7448.         Return: CF clear
  7449.     AH = 0Bh map 4K pages
  7450.         BX = number of pages
  7451.         CX = first page number (must be 0100h to allocate HMA)
  7452.         DX = EMS handle (memory belonging to EMS handle will be mapped
  7453.             into the address space beginning with the first page
  7454.             allocated to the handle)
  7455.         Return: AH = 00h
  7456.     AH = 0Ch get available memory
  7457.         Return: CF clear
  7458.             BX = 0001h
  7459.             CX = total 4K pages???
  7460.             DX = number of 4K pages free
  7461.     AH = 0Dh ??? (related to callbacks)
  7462.         AL = 00h/01h/02h ???
  7463.         Return: CF clear
  7464.     AH = 0Eh set ??? callbacks
  7465.         DS:BX -> FAR routine for ???
  7466.         ES:DX -> FAR routine for ???
  7467.         Return: CF clear
  7468.         Note:    DS:BX callback should return BX=???; ES:DX is called
  7469.               with BX=???, and should set the ??? from which the
  7470.               other handler read the value of BX.  BH and BL
  7471.               appear to be separate values.
  7472.     AH = 0Fh unmap 4K pages
  7473.         CX = first page number
  7474.         DX = number of pages
  7475.         Return: CF clear
  7476.             AL = 00h/01h if ???
  7477.         Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  7478.               simulate a disabled A20
  7479.     AX = 1000h get protected-mode interface
  7480.         DS:SI -> 16-byte buffer for two GDT entries
  7481.         ES:DI -> buffer for 4K page table
  7482.         Return: CF clear
  7483.             EAX = offset of protected-mode API entry point
  7484.             DS:SI buffer filled with two GDT descriptors
  7485.                 first is QEMM code segment, second is data???
  7486.             ES:DI buffer filled with 4K page table
  7487.             DI points to first unused page table entry
  7488.         SeeAlso: INT 67/AX=DE01h
  7489.     AX = 1001h get CPU debug registers
  7490.         ES:DI -> buffer for debug registers (8 DWORDs)
  7491.         Return: CF clear
  7492.             BL = INT01 handling (see function 1002h)
  7493.             ES:DI buffer filled
  7494.     AX = 1002h set CPU debug registers
  7495.         BL = INT01 handling
  7496.             00h     reflect all debugging exceptions as V86-mode INT 01's
  7497.             else convert debugging exceptions other than single-step
  7498.                into V86-mode INT 03's, single-step to INT 01's
  7499.         ES:DI -> buffer containing debug registers (8 DWORDs)
  7500.         Return: CF clear
  7501.         Notes:    identical to INT 67/AX=DE09h if BL=01h
  7502.             the INT01 handling flag is set to 01h by the general-
  7503.               protection violation handler for certain privileged
  7504.               instructions
  7505.     AX = 1003h get machine status word CR0
  7506.         Return: CF clear
  7507.             EAX = contents of CR0
  7508.         SeeAlso: INT 67/AX=DE07h
  7509.     AX = 1004h allocate a 4K page
  7510.         Return: CF clear if successful
  7511.                 EDX = linear address of allocated page
  7512.             CF set on error
  7513.         SeeAlso: INT 67/AX=DE04h
  7514.     AX = 1005h free 4K page
  7515.         EDX = linear address of page to free
  7516.         Return: CF clear
  7517.         SeeAlso: INT 67/AX=DE05h
  7518.     AX = 1006h NOP
  7519.         Return: CF set
  7520.     AX = 1007h get maximum physical memory address
  7521.         Return: CF clear
  7522.             EDX = physical address of highest 4K memory page
  7523.         SeeAlso: INT 67/AX=DE02h
  7524.     AX = 1008h get physical address of page in first megabyte
  7525.         CX = page number (linear address shifted right 12 bits)
  7526.         Return: CF clear
  7527.             EDX = linear address of page
  7528.         SeeAlso: function 1F00h
  7529.     AX = 1009h switch to protected mode
  7530.         ESI = linear address in first megabyte of system reg values
  7531.             (see INT 67/AX=DE0Ch)
  7532.         interrupts disabled
  7533.         Return: interrupts disabled
  7534.             GDTR, IDTR, LDTR, TR loaded
  7535.             SS:ESP must have at least 16 bytes space, and the
  7536.                 entry point is required to set up a new stack
  7537.                 before enabling interrupts
  7538.             EAX, ESI, DS, ES, FS, GS destroyed
  7539.     AX = 100Ah switch back to virtual-86 mode
  7540.         DS = selector for data segment from function 1000h
  7541.         SS:ESP in first megabyte of linear memory
  7542.         interrupts disabled
  7543.         STACK:    QWORD  return address from FAR call to 32-bit segment
  7544.             DWORD  EIP
  7545.             DWORD  CS
  7546.             DWORD  reserved for EFLAGS
  7547.             DWORD  ESP
  7548.             DWORD  SS
  7549.             DWORD  ES
  7550.             DWORD  DS
  7551.             DWORD  FS
  7552.             DWORD  GS
  7553.         will switch to virtual86 mode with interrupts disabled, all
  7554.           segment registers loaded, and EAX destroyed.
  7555.     AH = 11h get memory type map
  7556.         AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  7557.             by QEMM 6.00)
  7558.         ES:DI -> 256-byte buffer for memory types
  7559.         Return: CF clear
  7560.             BL = ???
  7561.             ES:DI buffer filled
  7562.         Note:    each byte of the buffer corresponds to a 4K page, and
  7563.               contains the type of that page: 00h = mappable,
  7564.               02h = mapped ROM, 03h = high RAM, 04h = excluded,
  7565.               05h = video, 06h = ROM, 07h = adapter ROM,
  7566.               08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  7567.               0Bh = conventional
  7568.     AH = 12h get HIRAM chain
  7569.         Return: CF clear
  7570.             BX = segment of first MCB in high memory
  7571.                 0000h if no high memory
  7572.     AX = 1300h VIDRAMEGA???
  7573.         BL = 00h copy ???
  7574.              nonzero copy ??? (reverse)
  7575.         Return: CF clear
  7576.             AL = 00h if all pages clean
  7577.                = 01h if any page dirty
  7578.     AX = 1301h check if ???
  7579.         DX:DI = start address of range to check ???
  7580.         CX = length of range
  7581.         Return: CF clear
  7582.             CX = ??? (0000h or 1000h)
  7583.     AX = 1302h ???
  7584.         BL = ???
  7585.         BH = ???
  7586.         CX = ???
  7587.         SI = offset of ???
  7588.         DI = offset of ???
  7589.         ???
  7590.         Return: CF clear
  7591.             ???
  7592.         Note:    disables certain interrupts at the two 8259 PICs during
  7593.               execution; also modifies CRT controller during
  7594.               execution under certain circumstances
  7595.     AX = 1303h ??? EMS allocation
  7596.         BX = number of pages of EMS to allocate
  7597.         ???
  7598.         Return: CF clear if successful
  7599.             CF set on error
  7600.             ???
  7601.     AX = 1304h EMS deallocation
  7602.         DX = EMS handle
  7603.         Return: CF clear
  7604.     AX = 1305h ???
  7605.         CX = ???
  7606.         Return: CF clear
  7607.         Note:    disables certain interrupts at the two 8259 PICs during
  7608.               execution (see AX=130Ch)
  7609.     AX = 1306h set DESQview critical section counter address
  7610.         ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  7611.         Return: CF clear
  7612.         Note:    also sets pointer in low-memory part of QEMM to current
  7613.               value of INT 15 if ES:BX not 0000h:0000h
  7614.     AX = 1307h ???
  7615.         Return: CF clear
  7616.         Note:    disables certain interrupts at the two 8259 PICs during
  7617.               execution (see AX=130Ch)
  7618.     AX = 1308h ???
  7619.         BL = ??? (zero/nonzero)
  7620.         Return: CF clear
  7621.     AX = 1309h Hercules mode-change support
  7622.         ES:BX -> new address for Hercules mode-change callback
  7623.         Return: CF clear
  7624.         Note:    the callback function is called whenever the CRTC mode
  7625.               register is written, with AL set to the value written
  7626.     AX = 130Ah virtualize EGA/VGA I/O ports 03C8h/03C9h???
  7627.         CX:DX -> buffer for storing CRTC register contents???
  7628.             or 0000h:0000h to disable
  7629.         Return: CF clear
  7630.     AX = 130Bh ???
  7631.         BL = ???
  7632.         Return: CF clear
  7633.             ???
  7634.     AX = 130Ch set interrupts to mask
  7635.         BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  7636.             AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  7637.         Return: CF clear
  7638.     AX = 130Dh ???
  7639.         ???
  7640.         Return: CF clear
  7641.         Note:    disables certain interrupts at the two 8259 PICs during
  7642.               execution (see AX=130Ch)
  7643.     AX = 130Eh ??? (modifies CRT controller setup)
  7644.         ???
  7645.         Return: CF clear
  7646.     AX = 130Fh reset ???
  7647.         Return: CF clear
  7648.     AX = 1310h ???
  7649.         ???
  7650.         Return: CF clear
  7651.         Note:    disables certain interrupts at the two 8259 PICs during
  7652.               execution (see AX=130Ch)
  7653.     AX = 1311h set ???
  7654.         BL = ???
  7655.         Return: CF clear
  7656.     AX = 1312h (v6.02) NOP???
  7657.         Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  7658.     AX = 1400h ???
  7659.         ES:DI -> ??? data structure (at least 24 bytes)
  7660.         BL = ???
  7661.         Return: AX = ???
  7662.         Data structure
  7663.         Offset    Size    Description
  7664.          00h    WORD    ???
  7665.          02h    DWORD    far pointer to ???
  7666.          06h    DWORD    far pointer to ??? pointer array (see below)
  7667.          0Ah    DWORD    far pointer to ???
  7668.          0Eh    DWORD    ???
  7669.          12h    WORD    segment of ???
  7670.          14h    DWORD    far pointer to ???
  7671.         Pointer array
  7672.         Offset    Size    Description
  7673.          00h    WORD    number of pointers to follow
  7674.          02h  N DWORDs    far pointers to ???
  7675.         Note: QEMM converts the pointers into linear addresses in place
  7676.     AX = 1401h ???
  7677.         Return: CF clear
  7678.             ???
  7679.     AX = 1402h ???
  7680.         BL = function
  7681.             00h NOP
  7682.             01h ???
  7683.             02h ???
  7684.             other ???
  7685.         ES:DI -> ???
  7686.         Return: CF clear
  7687.             ???
  7688.         Data structure
  7689.         Offset    Size    Description
  7690.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  7691.          02h    WORD    segment of ??? (word at X:0124h set to this)
  7692.          04h    WORD    number of paragraphs of ???
  7693.          06h  3 WORDs    ??? (copied to X:0000h)
  7694.          0Ch    WORD    ???
  7695.     AX = 1403h add ??? to list and ??? (execute func 1406h)
  7696.         ES:DI -> ??? structure added to end of ??? list
  7697.             (at least 31 bytes, DWORD at offset 06h used for
  7698.              storing pointer to next struc, WORD at offset 00h
  7699.              seems to be a key or index)
  7700.         Return: CF clear
  7701.     AX = 1404h NOP
  7702.     AX = 1405h remove ??? from ??? list
  7703.         BX = key???
  7704.         Return: CF clear
  7705.     AX = 1406h ???
  7706.         ???
  7707.         Return: CF clear
  7708.             ???
  7709.     AX = 1407h ???
  7710.         ???
  7711.         Return: CF clear
  7712.             ???
  7713.     AX = 1408h ???
  7714.         ???
  7715.         Return: CF clear
  7716.             ???
  7717.     AX = 1409h ???
  7718.         ???
  7719.         Return: CF clear
  7720.             ???
  7721.     AX = 140Ah ???
  7722.         BX = ???
  7723.         Return: CF clear
  7724.             ???
  7725.     AX = 140Bh ???
  7726.         BX = ???
  7727.         Return: CF clear
  7728.             SI = segment of 256-byte buffer???
  7729.     AH = 15h ???
  7730.         ES:BX -> ??? or 0000h:0000h
  7731.         Return: CF clear
  7732.      ---QEMM v5.00+ ---
  7733.     AX = 1600h get memory access status
  7734.         ES:DI -> 256-byte buffer
  7735.         Return: ES:DI buffer filled
  7736.         Note:    each byte of the buffer indicates the status of a 4K
  7737.               page (bit 0 set if read, bit 1 set if written)
  7738.     AX = 1601h set memory access status
  7739.         ES:DI -> 256-byte buffer containing access statuses (see above)
  7740.     AH = 17h get memory usage statistics
  7741.         ES:DI -> 81-byte buffer for memory statistics (see below)
  7742.         Return: CF clear
  7743.      ---QEMM v5.11+ ---
  7744.     AH = 18h check whether conventional memory mapped into address range
  7745.         ES:BX = starting address
  7746.         CX = number of 4K pages
  7747.         Return: CF clear
  7748.             AL = 00h one or more pages is remapped
  7749.                  01h all pages in range are conventional memory
  7750.                 (physical address == virtual address)
  7751.     AH = 19h NOP
  7752.         Return: CF set
  7753.     AH = 1Ah I/O port access
  7754.         AL = subfunction
  7755.             00h get byte from I/O port
  7756.             Return: BL = port value
  7757.             01h send byte to I/O port
  7758.             BL = value to send
  7759.             02h send byte to I/O port, get byte from following port
  7760.             BH = value to send
  7761.             Return: BL = value read
  7762.             03h send bytes to two consecutive I/O ports
  7763.             BH = value for first I/O port (DX)
  7764.             BL = value for second I/O port (DX+1)
  7765.         DX = port number
  7766.         Return: CF clear
  7767.     AH = 1Bh MS Windows 3 support
  7768.         AL = subfunction
  7769.             00h get ???
  7770.             ES:DI -> buffer for ??? data structure
  7771.             Return: CF set on error
  7772.                 CF clear if successful
  7773.             Data structure:
  7774.             Offset    Size    Description
  7775.              00h    DWORD    pointer to ???
  7776.              04h    BYTE    ??? (v6.00 sets to 01h)
  7777.              05h    BYTE    ??? (v6.00 sets to 00h or 0Bh)
  7778.             SeeAlso: INT 21/AX=4402h"QEMM"
  7779.             01h ???
  7780.             Return: CF set on error
  7781.                 CF clear if successful
  7782.             02h ???
  7783.             Return: CF set on error
  7784.                 CF clear if successful
  7785.             03h MS Windows initializing
  7786.             CX = segment from which Windows init broadcast made???
  7787.             DL = Windows startup flags???
  7788.             DI = Windows version number (major in upper byte)
  7789.             Return: ???
  7790.             SeeAlso: INT 2F/AX=1605h
  7791.             04h MS Windows terminating
  7792.             Return: CF clear
  7793.             05h determine whether program is driver???
  7794.             DS:DX -> ASCIZ filename
  7795.             Return: CF clear
  7796.                 AL = 01h if string ends in ".DRV"
  7797.                    = FFh if string ends in "GDI.EXE"
  7798.                    = 00h otherwise
  7799.             06h ???
  7800.             CX = length of data pointed at by DS:DX
  7801.             DS:DX -> ???
  7802.             Return: CF clear
  7803.             07h BUG: QEMM 6.00-6.03 accept this and branch randomly
  7804.             else Return: CF set
  7805.     AH = 1Ch protected-mode hardware interrupt handlers ???
  7806.         AL = subfunction
  7807.             00h restore??? IRQ0-7 handlers
  7808.             01h set??? IRQ0-7 handlers
  7809.             ES:DI -> 8 DWORDs containing ???
  7810.             02h restore??? IRQ8-15 handlers
  7811.             03h set??? IRQ8-15 handlers
  7812.             ES:DI -> 8 DWORDs containing ???
  7813.         BUG: although the jump table only contains four entries,
  7814.             QEMM 6.00 will attempt to use it for any value of
  7815.             AL between 00h and 2Ah, thus branching unpredictably
  7816.             for AL=04h-2Ah
  7817.      ---QEMM v6.00+ ---
  7818.     AH = 1Dh Stealth interrupts
  7819.         AL = subfunction
  7820.             00h switch to pre-Stealth interrupt vector table
  7821.             Note:    also switches VGA Save table pointer
  7822.                   (0040h:00A8h)    and overwrites the vectors
  7823.                   currently assigned for use by the two
  7824.                   interrupt controllers (see INT 67/AX=DE0Ah)
  7825.                   with the vectors for INT 08-0F and 70-77 (to
  7826.                   avoid crashing the system).
  7827.             01h restore user interrupt vector table
  7828.             Notes:    interrupts should be disabled around the
  7829.                   AX=1D00h and AX=1D01h calls because QEMM does
  7830.                   not modify the memory maps to map in ROM, so
  7831.                   an interrupt could be disastrous
  7832.                 clears any pending IRQ7 at end of function
  7833.             else
  7834.             Return: CF set
  7835.     AH = 1Eh Stealth information
  7836.         AL = subfunction
  7837.             00h get Stealth configuration
  7838.             Return: BL = flags
  7839.                     bit 0: conventional memory sorted
  7840.                     bit 1: conventional memory filled
  7841.                     bit 2: ???
  7842.                     bit 3: ???
  7843.                     bit 4: expanded memory is in use
  7844.                     bit 5: ???
  7845.                 BH = ??? (always 00h for v6.00)
  7846.                 CL = stealth type (00h none,46h Frame,4Dh Map)
  7847.                 CH = ??? (zero/nonzero important)
  7848.                 DX = ??? (always 0000h for v6.00)
  7849.                 SI = ??? (always 0000h for v6.00)
  7850.                 DI = ??? (always 0000h for v6.00)
  7851.             01h get number of Stealth'ed ROMs
  7852.             Return: CF clear
  7853.                 BX = number of Stealth'ed ROMs
  7854.             02h get Stealth'ed ROM info
  7855.             ES:DI -> buffer for Stealth ROM info (see below)
  7856.             Return: CF clear
  7857.                 BX = number of Stealth'ed ROMs
  7858.                 ES:DI buffer filled
  7859.             else
  7860.             Return: CF set
  7861.     AH = 1Fh page table manipulation
  7862.         AL = subfunction
  7863.             00h get page table entry
  7864.             CX = page number
  7865.             Return: EDX = page table entry
  7866.                 CF clear
  7867.             01h set page table entry
  7868.             CX = page number
  7869.             EDX = page table entry
  7870.             Return: CF clear
  7871.             SeeAlso: function 1008h
  7872.             else
  7873.             Return: CF set
  7874.     AH = 20h asynchronous disk access support???
  7875.         AL = subfunction
  7876.             00h get ???
  7877.             Return: CF clear
  7878.                 BL = flags
  7879.                     bit 7: ??? (set if Stealth:F or :M active)
  7880.                     bit 0: ???
  7881.             01h set ???
  7882.             BL = ??? (bit 0 only)
  7883.             Return: CF clear
  7884.             else
  7885.             Return: CF set
  7886.     AH = 21h Stealth support
  7887.         AL = subfunction
  7888.             00h copy data from Stealthed address space
  7889.             DS:SI -> start address of hidden memory to copy
  7890.             ES:DI -> buffer for copied data
  7891.             ECX = number of bytes to copy
  7892.             Return: CF clear if successful
  7893.                 CF set on error (DS:SI < C000h:0000h or
  7894.                          DS:SI + ECX > 1M)
  7895.             else
  7896.             Return: CF set
  7897.     ---QEMM v6.03 only---
  7898.     AH = 22h DESQview/X support
  7899.         AL = subfunction
  7900.             00h get ???
  7901.             Return: CF clear
  7902.                 ES:DI -> ???
  7903.             01h set ???
  7904.             ES:DI -> ??? or 0000h:0000h
  7905.             Return: CF clear if successful
  7906.                 CF set on error
  7907.     other
  7908.         Return: CF set
  7909.  
  7910. Format of QEMM 6.0 memory statistics:
  7911. Offset    Size    Description
  7912.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  7913.  01h    DWORD    initial conventional memory in bytes
  7914.  05h    DWORD    initial extended memory in bytes
  7915.  09h    DWORD    initial expanded memory in bytes
  7916.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  7917.  11h    DWORD    Unavailable conventional memory in bytes
  7918.  15h    DWORD    Unavailable extended memory in bytes
  7919.  19h    DWORD    Unavailable expanded memory in bytes
  7920.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  7921.         Add to offset 49h for Total unavailable top/shadow.
  7922.  21h    DWORD    QEMM code size in bytes
  7923.  25h    DWORD    QEMM data size in bytes
  7924.  29h    DWORD    bytes used for TASKS=
  7925.  2Dh    DWORD    DMA buffer size
  7926.  31h    DWORD    bytes used for MAPS=
  7927.  35h    DWORD    bytes of high RAM
  7928.  39h    DWORD    bytes used by mapped ROMs
  7929.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  7930.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  7931.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  7932.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  7933.         Add to offset 1Dh for Total unavailable top/shadow.
  7934.  4Dh    DWORD    conventional memory overhead in bytes
  7935.         (set to 0 by QEMM.COM prior to call)
  7936.  
  7937. Format of Stealth ROM info [array]:
  7938. Offset    Size    Description
  7939.  00h    WORD    starting segment of ROM
  7940.  02h    WORD    length of ROM in paragraphs
  7941. ----------6740-------------------------------
  7942. INT 67 - LIM EMS - GET MANAGER STATUS
  7943.     AH = 40h
  7944. Return: AH = status
  7945.         00h successful
  7946.         80h internal error
  7947.         81h hardware malfunction
  7948.         84h undefined function requested by application
  7949. Note:    this call can be used only after establishing that the EMS driver is in
  7950.       fact present
  7951. SeeAlso: AH=3Fh,AX=FFA5h
  7952. ----------6741-------------------------------
  7953. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  7954.     AH = 41h
  7955. Return: AH = 00h function successful
  7956.         BX = segment of page frame
  7957.     AH = error code (see AH=40h)
  7958. SeeAlso: AH=58h,AH=68h
  7959. ----------6742-------------------------------
  7960. INT 67 - LIM EMS - GET NUMBER OF PAGES
  7961.     AH = 42h
  7962. Return: AH = 00h function successful
  7963.         BX = number of unallocated pages
  7964.         DX = total number of pages
  7965.     AH = error code (see AH=40h)
  7966. SeeAlso: INT 2F/AX=2702h
  7967. ----------6743-------------------------------
  7968. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  7969.     AH = 43h
  7970.     BX = number of logical pages to allocate
  7971. Return: AH = status
  7972.         00h function successful
  7973.         DX = handle
  7974.         80h internal error
  7975.         81h hardware malfunction
  7976.         84h undefined function requested
  7977.         85h no more handles available
  7978.         87h more pages requested than physically exist
  7979.         88h more pages requested than currently available
  7980.         89h zero pages requested
  7981. SeeAlso: AH=45h
  7982. ----------6744-------------------------------
  7983. INT 67 - LIM EMS - MAP MEMORY
  7984.     AH = 44h
  7985.     AL = physical page number (0-3)
  7986.     BX = logical page number
  7987.     DX = handle
  7988. Return: AH = status
  7989.         00h function successful
  7990.         80h internal error
  7991.         81h hardware malfunction
  7992.         83h invalid handle
  7993.         84h undefined function requested
  7994.         8Ah invalid logical page number
  7995.         8Bh illegal physical-page number
  7996. SeeAlso: AH=69h
  7997. ----------6745-------------------------------
  7998. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  7999.     AH = 45h
  8000.     DX = EMM handle
  8001. Return: AH = status
  8002.         00h successful
  8003.         80h internal error
  8004.         81h hardware malfunction
  8005.         83h invalid handle
  8006.         84h undefined function requested
  8007.         86h error in save or restore of mapping context
  8008. SeeAlso: AH=43h
  8009. ----------6746-------------------------------
  8010. INT 67 - LIM EMS - GET EMM VERSION
  8011.     AH = 46h
  8012. Return: AH = status
  8013.         00h successful
  8014.         AL = EMM version number
  8015.         80h internal error
  8016.         81h hardware malfunction
  8017.         84h undefined function requested
  8018. ----------6747-------------------------------
  8019. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  8020.     AH = 47h
  8021.     DX = handle
  8022. Return: AH = status
  8023.         00h successful
  8024.         80h internal error
  8025.         81h hardware malfunction
  8026.         83h invalid handle
  8027.         84h undefined function requested
  8028.         8Ch page-mapping hardware state save area is full
  8029.         8Dh save of mapping context failed
  8030. SeeAlso: AH=48h
  8031. ----------6748-------------------------------
  8032. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  8033.     AH = 48h
  8034.     DX = handle
  8035. Return: AH = status
  8036.         00h successful
  8037.         80h internal error
  8038.         81h hardware malfunction
  8039.         83h invalid handle
  8040.         84h undefined function requested
  8041.         8Eh restore of mapping context failed
  8042. SeeAlso: AH=47h
  8043. ----------6749-------------------------------
  8044. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  8045.     AH = 49h
  8046. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  8047. ----------674A-------------------------------
  8048. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  8049.     AH = 4Ah
  8050. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  8051. ----------674B-------------------------------
  8052. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  8053.     AH = 4Bh
  8054. Return: AH = status
  8055.         00h successful
  8056.         BX = number of EMM handles
  8057.         80h internal error
  8058.         81h hardware malfunction
  8059.         83h invalid handle
  8060.         84h undefined function requested
  8061. ----------674C-------------------------------
  8062. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  8063.     AH = 4Ch
  8064.     DX = EMM handle
  8065. Return: AH = status
  8066.         00h successful
  8067.         BX = number of logical pages
  8068.         80h internal error
  8069.         81h hardware malfunction
  8070.         83h invalid handle
  8071.         84h undefined function requested
  8072. SeeAlso: AH=4Dh
  8073. ----------674D-------------------------------
  8074. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  8075.     AH = 4Dh
  8076.     ES:DI -> array to receive information
  8077. Return: AH = status
  8078.         00h successful
  8079.         BX = number of active EMM handles
  8080.         array filled with 2-word entries, consisting of a handle
  8081.           and the number of pages allocated to that handle
  8082.         80h internal error
  8083.         81h hardware malfunction
  8084.         84h undefined function requested
  8085. SeeAlso: AH=4Ch
  8086. ----------674E-------------------------------
  8087. INT 67 - LIM EMS - GET OR SET PAGE MAP
  8088.     AH = 4Eh
  8089.     AL = 00h if getting mapping registers
  8090.          01h if setting mapping registers
  8091.          02h if getting and setting mapping registers at once
  8092.          03h if getting size of page-mapping array
  8093.     DS:SI -> array holding information (AL=01/02)
  8094.     ES:DI -> array to receive information (AL=00/02)
  8095. Return: AH = status
  8096.         00h successful
  8097.         AL = bytes in page-mapping array (AL=03h only)
  8098.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  8099.         80h internal error
  8100.         81h hardware malfunction
  8101.         84h undefined function requested
  8102.         8Fh undefined subfunction parameter
  8103.         A3h contents of source array corrupted (EMS 4.0?)
  8104. Note:    this function was designed to be used by multitasking operating systems
  8105.       and should not ordinarily be used by appplication software.
  8106. SeeAlso: AH=4Fh
  8107. ----------674F-------------------------------
  8108. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  8109.     AH = 4Fh
  8110.     AL = subfunction
  8111.         00h get partial page map
  8112.            DS:SI -> structure containing list of segments whose mapping
  8113.             contexts are to be saved
  8114.            ES:DI -> array to receive page map
  8115.         01h set partial page map
  8116.            DS:SI -> structure containing saved partial page map
  8117.         02h get size of partial page map
  8118.            BX = number of mappable segments in the partial map to be saved
  8119. Return: AH = status
  8120.         00h successful
  8121.         80h internal error
  8122.         81h hardware malfunction
  8123.         84h undefined function requested
  8124.         8Bh one of specified segments is not mappable
  8125.         8Fh undefined subfunction parameter
  8126.         A3h contents of partial page map corrupted or count of mappable
  8127.         segments exceeds total number of mappable segments in system
  8128.     AL = size of partial page map for subfunction 02h
  8129. SeeAlso: AH=4Eh
  8130. ----------6750-------------------------------
  8131. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  8132.     AH = 50h
  8133.     AL = subfunction
  8134.         00h use physical page numbers
  8135.         01h use segment addresses
  8136.     DX = handle
  8137.     CX = number of entries in array
  8138.     DS:SI -> mapping array (see below)
  8139. Return: AH = status
  8140.         00h successful
  8141.         80h internal error
  8142.         81h hardware malfunction
  8143.         83h invalid handle
  8144.         84h undefined function requested
  8145.         8Ah one or more logical pages are invalid
  8146.         8Bh one or more physical pages are invalid
  8147.         8Fh invalid subfunction
  8148. SeeAlso: AH=40h
  8149.  
  8150. Format of mapping array entry:
  8151. Offset    Size    Description
  8152.  00h    WORD    logical page number or FFFFh to unmap physical page
  8153.  02h    WORD    physical page number or segment address
  8154. ----------6751-------------------------------
  8155. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  8156.     AH = 51h
  8157.     DX = handle
  8158.     BX = number of pages to be allocated to handle
  8159. Return: BX = actual number of pages allocated to handle
  8160.     AH = status
  8161.         00h successful
  8162.         80h internal error
  8163.         81h hardware malfunction
  8164.         83h invalid handle
  8165.         84h undefined function requested
  8166.         87h more pages requested than present in system
  8167.         88h more pages requested than currently available
  8168. ----------6752-------------------------------
  8169. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  8170.     AH = 52h
  8171.     AL = subfunction
  8172.         00h get handle attributes
  8173.         Return: AL = attribute
  8174.                 00h handle is volatile
  8175.                 01h handle is nonvolatile
  8176.         01h set handle attributes
  8177.         BL = new attribute (see returned AL)
  8178.         02h get attribute capability
  8179.         Return: AL = attribute capability
  8180.                 00h only volatile handles supported
  8181.                 01h both volatile and non-volatile supported
  8182.     DX = handle
  8183. Return:    AH = status
  8184.         00h successful
  8185.         80h internal error
  8186.         81h hardware malfunction
  8187.         83h invalid handle
  8188.         84h undefined function requested
  8189.         8Fh undefined subfunction
  8190.         90h undefined attribute type
  8191.         91h feature not supported
  8192. SeeAlso: AH=53h
  8193. ----------6753-------------------------------
  8194. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  8195.     AH = 53h
  8196.     AL = subfunction
  8197.         00h get handle name
  8198.            ES:DI -> 8-byte buffer for handle name
  8199.         01h set handle name
  8200.            DS:SI -> 8-byte handle name
  8201.     DX = handle
  8202. Return: AH = status
  8203.         00h successful
  8204.         80h internal error
  8205.         81h hardware malfunction
  8206.         83h invalid handle
  8207.         84h undefined function requested
  8208.         8Fh undefined subfunction
  8209.         A1h duplicate handle name
  8210. SeeAlso: AH=52h
  8211. ----------6754-------------------------------
  8212. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  8213.     AH = 54h
  8214.     AL = subfunction
  8215.         00h get handle directory
  8216.            ES:DI -> buffer for handle directory (see below)
  8217.         01h search for named handle
  8218.            DS:SI -> 8-byte name
  8219.         02h get total number of handles
  8220. Return: AL = number of entries in handle directory (subfunction 00h)
  8221.     DX = value of named handle (subfunction 01h)
  8222.     BX = total number of handles (subfunction 02h)
  8223.     AH = status
  8224.         00h successful
  8225.         80h internal error
  8226.         81h hardware malfunction
  8227.         84h undefined function requested
  8228.         8Fh undefined subfunction
  8229.         A0h no such handle name
  8230.         A1h a handle found had no name
  8231.  
  8232. Format of handle directory entry:
  8233. Offset    Size    Description
  8234.  00h    WORD    handle
  8235.  02h  8 BYTEs    handle's name
  8236. ----------6755-------------------------------
  8237. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  8238.     AH = 55h
  8239.     AL = subfunction
  8240.         00h physical page numbers provided by caller
  8241.         01h segment addresses provided by caller
  8242.     DX = handle
  8243.     DS:SI -> structure containing map and jump address
  8244. Return: (at target address unless error)
  8245.     AH = status
  8246.         00h successful
  8247.         80h internal error
  8248.         81h hardware failure
  8249.         83h invalid handle
  8250.         84h undefined function requested
  8251.         8Ah invalid logical page number encountered
  8252.         8Bh invalid physical page number encountered
  8253.         8Fh invalid subfunction
  8254. SeeAlso: AH=56h
  8255. ----------6756-------------------------------
  8256. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  8257.     AH = 56h
  8258.     AL = subfunction
  8259.         00h physical page numbers provided by caller
  8260.         DX = handle
  8261.         DS:SI -> structure containing page map and call address
  8262.         01h segment addresses provided by caller
  8263.         DX = handle
  8264.         DS:SI -> structure containing page map and call address
  8265.         02h get page map stack space required
  8266.         Return: BX = stack space required
  8267. Return: (if successful, the target address is called.  Use a RETF to return and
  8268.      restore mapping context)
  8269.     AH = status (see AH=55h)
  8270. SeeAlso: AH=55h
  8271. ----------6757-------------------------------
  8272. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  8273.     AH = 57h
  8274.     AL = subfunction
  8275.         00h move memory region
  8276.         01h exchange memory region
  8277.     DS:SI -> structure describing source and destination (see below)
  8278. Return: AH = status
  8279.         00h successful
  8280.         80h internal error
  8281.         81h hardware failure
  8282.         83h invalid handle
  8283.         84h undefined function requested
  8284.         8Ah invalid logical page number encountered
  8285.         8Fh undefined subfunction
  8286.         92h successful, but a portion of the source region has been
  8287.         overwritten
  8288.         93h length of source or destination region exceeds length of region
  8289.         allocated to either source or destination handle
  8290.         94h conventional and expanded memory regions overlap
  8291.         95h offset within logical page exceeds size of logical page
  8292.         96h region length exceeds 1M
  8293.         97h source and destination EMS regions have same handle and overlap
  8294.         98h memory source or destination type undefined
  8295.         A2h attempted to wrap around 1M conventional address space
  8296. Note:    source and destination may overlap for a move, in which case the copy
  8297.       direction is chosen such that the destination receives an intact copy
  8298.       of the source region
  8299.  
  8300. Format of EMS copy data:
  8301. Offset    Size    Description
  8302.  00h    DWORD    region length in bytes
  8303.  04h    BYTE    source memory type
  8304.         00h conventional
  8305.         01h expanded
  8306.  05h    WORD    source handle (0000h if conventional memory)
  8307.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  8308.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  8309.  0Bh    BYTE    destination memory type
  8310.         00h conventional
  8311.         01h expanded
  8312.  0Ch    WORD    destination handle
  8313.  0Eh    WORD    destination initial offset
  8314.  10h    WORD    destination initial segment or page
  8315. ----------6758-------------------------------
  8316. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  8317.     AH = 58h
  8318.     AL = subfunction
  8319.         00h get mappable physical address array
  8320.         ES:DI -> buffer to be filled with array
  8321.         01h get number of entries in m.p.a. array
  8322. Return: CX = number of entries in array
  8323.     AH = status
  8324.         00h successful
  8325.         80h internal error
  8326.         81h hardware failure
  8327.         84h undefined function requested
  8328.         8Fh undefined subfunction
  8329. Note:    the returned array for subfunction 00h is filled in physical segment
  8330.       address order
  8331.  
  8332. Format of mappable physical address entry:
  8333. Offset    Size    Description
  8334.  00h    WORD    physical page segment
  8335.  02h    WORD    physical page number
  8336. ----------6759-------------------------------
  8337. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  8338.     AH = 59h
  8339.     AL = subfunction
  8340.         00h get hardware configuration array
  8341.         ES:DI -> buffer to be filled with array (see below)
  8342.         01h get unallocated raw page count
  8343.         Return: BX = unallocated raw pages
  8344.             DX = total raw pages
  8345. Return:    AH = status
  8346.         00h successful
  8347.         80h internal error
  8348.         81h hardware failure
  8349.         84h undefined function requested
  8350.         8Fh undefined subfunction
  8351.         A4h access denied by operating system
  8352. Note:    subfunction 00h is for use by operating systems only, and can be
  8353.       enabled or disabled at any time by the operating system
  8354.  
  8355. Format of hardware configuration array:
  8356. Offset    Size    Description
  8357.  00h    WORD    size of raw EMM pages in paragraphs
  8358.  02h    WORD    number of alternate register sets
  8359.  04h    WORD    size of mapping-context save area in bytes
  8360.  06h    WORD    number of register sets assignable to DMA
  8361.  08h    WORD    DMA operation type
  8362.         0000h DMA with alternate register sets
  8363.         0001h only one DMA register set
  8364. ----------675A-------------------------------
  8365. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  8366.     AH = 5Ah
  8367.     AL = subfunction
  8368.         00h allocate standard pages
  8369.         01h allocate raw pages
  8370.     BX = number of pages to allocate
  8371. Return: DX = handle
  8372.     AH = status
  8373.         00h successful
  8374.         80h internal error
  8375.         81h hardware failure
  8376.         84h undefined function requested
  8377.         85h no more handles available
  8378.         87h insufficient memory pages in system
  8379.         88h insufficient memory pages available
  8380.         8Fh undefined subfunction
  8381. ----------675B-------------------------------
  8382. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  8383.     AH = 5Bh
  8384.     AL = subfunction
  8385.         00h get alternate map register set
  8386.         Return: BL = current active alternate map register set number
  8387.             ES:DI -> map register context save area if BL=00h
  8388.         01h set alternate map register set
  8389.         BL = new alternate map register set number
  8390.         ES:DI -> map register context save area if BL=0
  8391.         02h get alternate map save array size
  8392.         Return: DX = array size in bytes
  8393.         03h allocate alternate map register set
  8394.         Return: BL = number of map register set; 00h = not supported
  8395.         04h deallocate alternate map register set
  8396.         BL = number of alternate map register set
  8397. Return: AH = status
  8398.         00h successful
  8399.         80h internal error
  8400.         81h hardware malfunction
  8401.         84h undefined function requested
  8402.         8Fh undefined subfunction
  8403.         9Ah specified alternate map register set not supported
  8404.         9Bh all alternate map register sets currently allocated
  8405.         9Ch alternate map register sets not supported
  8406.         9Dh undefined or unallocated alternate map register set
  8407.         A3h source array corrupted
  8408.         A4h operating system denied access
  8409. Note:    this function is for use by operating systems only, and can be
  8410.       enabled or disabled at any time by the operating system
  8411. ----------675B-------------------------------
  8412. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  8413.     AH = 5Bh
  8414.     AL = subfunction
  8415.         05h allocate DMA register set
  8416.         Return: BL = DMA register set number, 00h if not supported
  8417.         06h enable DMA on alternate map register set
  8418.            BL = DMA register set number
  8419.            DL = DMA channel number
  8420.         07h disable DMA on alternate map register set
  8421.            BL = DMA register set number
  8422.         08h deallocate DMA register set
  8423.            BL = DMA register set number
  8424. Return: AH = status
  8425.         00h successful
  8426.         80h internal error
  8427.         81h hardware malfunction
  8428.         84h undefined function requested
  8429.         8Fh undefined subfunction
  8430.         9Ah specified DMA register set not supported
  8431.         9Bh all DMA register sets currently allocated
  8432.         9Ch alternate DMA sets not supported
  8433.         9Dh undefined or unallocated DMA register set
  8434.         9Eh dedicated DMA channels not supported
  8435.         9Fh specified dedicated DMA channel not supported
  8436.         A3h source array corrupted
  8437.         A4h operating system denied access
  8438. Note:    this function is for use by operating systems only, and can be
  8439.       enabled or disabled at any time by the operating system
  8440. ----------675BE0-----------------------------
  8441. INT 67 - MICEMM v4D - GET LINEAR ADDRESS OF MEMORY
  8442.     AX = 5BE0h
  8443.     ES:BX -> memory for which to get linear address
  8444. Return: AH = 00h
  8445.     DX:CX = linear address of physical memory corresponding to ES:BX
  8446. SeeAlso: AX=5BF0h,AX=5BF1h
  8447. ----------675BF0-----------------------------
  8448. INT 67 - MICEMM v4D - INSTALLATION CHECK
  8449.     AX = 5BF0h
  8450. Return: AH = 00h if MICEMM present
  8451.         BX = code segment of driver
  8452. Note:    MICEMM is the Micronics Expanded Memory Manager
  8453. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  8454. ----------675BF1-----------------------------
  8455. INT 67 - MICEMM v4D - GET MEMORY TYPES
  8456.     AX = 5BF1h
  8457.     ES:BX -> 256-byte buffer for memory types
  8458. Return: AH = 00h
  8459.     ES:BX buffer filled
  8460. Note:    each byte in the buffer specifies the type of a 4K page of memory:
  8461.         00h unused
  8462.         02h DOS extension
  8463.         04h shadowed ROM
  8464.         08h mappable EMS
  8465.         10h page frame
  8466.         20h ROM
  8467.         40h reserved (video memory, etc)
  8468.         80h RAM
  8469. SeeAlso: AX=5BE0h,AX=5BF0h
  8470. ----------675C-------------------------------
  8471. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  8472.     AH = 5Ch
  8473. Return: AH = status
  8474.         00h successful
  8475.         80h internal error
  8476.         81h hardware malfunction
  8477.         84h undefined function requested
  8478. ----------675D-------------------------------
  8479. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  8480.     AH = 5Dh
  8481.     AL = subfunction
  8482.         00h enable OS Function Set
  8483.         01h disable OS Function Set
  8484.         02h return access key (resets memory manager, returns access key at
  8485.         next invocation)
  8486.     BX,CX = access key returned by first invocation
  8487. Return: BX,CX = access key, returned only on first invocation of function
  8488.     AH = status
  8489.         00h successful
  8490.         80h internal error
  8491.         81h hardware malfunction
  8492.         84h undefined function requested
  8493.         8Fh undefined subfunction
  8494.         A4h operating system denied access
  8495. ----------6760-------------------------------
  8496. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  8497.     AH = 60h
  8498.     ES:DI -> buffer
  8499. Return: AH = status
  8500.     AL = number of entries
  8501.     buffer at ES:DI filled
  8502. ----------6761-------------------------------
  8503. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  8504.     AH = 61h
  8505.     ???
  8506. Return: ???
  8507. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  8508.       ensuring that the cache accurately reflects what the processor would
  8509.       see without the cache.
  8510. ----------6768-------------------------------
  8511. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  8512.     AH = 68h
  8513.     ES:DI -> buffer
  8514. Return: AH = status
  8515.     AL = number of entries
  8516.     buffer at ES:DI filled
  8517. Note:    equivalent to LIM 4.0 function 58h
  8518. ----------6769-------------------------------
  8519. INT 67 - EEMS - MAP PAGE INTO FRAME
  8520.     AH = 69h
  8521.     AL = frame number
  8522.     BX = page number
  8523.     DX = handle
  8524. Return: AH = status
  8525. Note:    similar to EMS function 44h
  8526. SeeAlso: AH=44h,AH=50h,AH=6Ah
  8527. ----------676A-------------------------------
  8528. INT 67 - EEMS - PAGE MAPPING
  8529.     AH = 6Ah
  8530.     AL = subfunction
  8531.         00h save partial page map
  8532.         CH = first page frame
  8533.         CL = number of frames
  8534.         ES:DI -> buffer which is to be filled
  8535.         01h restore partial page map
  8536.         CH = first page frame
  8537.         CL = number of frames
  8538.         DI:SI -> previously saved page map
  8539.         02h save and restore partial page map
  8540.         CH = first page frame
  8541.         CL = number of frames
  8542.         ES:DI = buffer for current page map
  8543.         DI:SI = new page map
  8544.         03h get size of save array
  8545.         CH = first page frame
  8546.         CL = number of frames
  8547.         Return: AL = size of array in bytes
  8548.         04h switch to standard map register setting
  8549.         05h switch to alternate map register setting
  8550.         06h deallocate pages mapped to frames in conventional memory
  8551.         CH = first page frame
  8552.         CL = number of frames
  8553. Return: AH = status
  8554. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  8555.       specified
  8556. SeeAlso: AH=69h
  8557. ----------67DD-------------------------------
  8558. INT 67 - Quadtel QMAPS - API
  8559.     AH = DDh
  8560.     AL = function
  8561.     ???
  8562. Return: ???
  8563. Notes:    details are not yet available
  8564.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  8565.       supports this API
  8566. SeeAlso: AH=3Fh,AX=FFA5h
  8567. ----------67DE00-----------------------------
  8568. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  8569.     AX = DE00h
  8570. Return: AH = 00h    VCPI is present
  8571.         BH = major version number
  8572.         BL = minor version number
  8573.     AH nonzero  VCPI not present
  8574. SeeAlso: INT 2F/AX=1687h
  8575. ----------67DE01-----------------------------
  8576. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  8577.     AX = DE01h
  8578.     ES:DI -> 4K page table buffer
  8579.     DS:SI -> three descriptor table entries in GDT
  8580.         first becomes code segment descriptor, other two for use by
  8581.         main control program
  8582. Return: AH = 00h successful
  8583.         DI -> first unused page table entry in buffer
  8584.         EBX -> protected mode entry point in code segment
  8585.     AH = nonzero  failed
  8586. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  8587.       AX=DE0Ch (in each case, all other registers as appropriate for
  8588.       the function)
  8589. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  8590.  
  8591. QEMM v6.03 protected mode entry point may also be called with:
  8592.     AX = DF00h ???
  8593.         ???
  8594.         Return: ???
  8595.     AX = DF01h ???
  8596.         ???
  8597.         Return: ???
  8598. ----------67DE02-----------------------------
  8599. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  8600.     AX = DE02h
  8601. Return: AH = 00h  successful
  8602.         EDX = physical address of highest 4K memory page
  8603.     AH nonzero: failed
  8604. SeeAlso: AH=3Fh
  8605. ----------67DE03-----------------------------
  8606. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  8607.     AX = DE03h
  8608. Return: AH = 00h  successful
  8609.         EDX = number of free 4K pages
  8610.     AH nonzero: failed
  8611. Notes:    returns total number of pages available to ALL tasks in system
  8612.     also available in protected mode by calling the protected-mode VCPI
  8613.       entry point
  8614. SeeAlso: AX=DE04h
  8615. ----------67DE04-----------------------------
  8616. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  8617.     AX = DE04h
  8618. Return: AH = 00h successful
  8619.         EDX = physical address of allocated page
  8620.     AH nonzero: failed
  8621. Notes:    the client program is responsible for freeing all memory allocated
  8622.       with this call before terminating
  8623.     also available in protected mode by calling the protected-mode VCPI
  8624.       entry point
  8625. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  8626. ----------67DE05-----------------------------
  8627. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  8628.     AX = DE05h
  8629.     EDX = physical address of 4K page
  8630. Return: AH = 00h successful
  8631.     AH nonzero: failed
  8632. Note:    also available in protected mode by calling the protected-mode VCPI
  8633.       entry point
  8634. SeeAlso: AH=3Fh,AX=DE04h
  8635. ----------67DE06-----------------------------
  8636. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  8637.     AX = DE06h
  8638.     CX = page number (linear address shifted right 12 bits)
  8639. Return: AH = 00h successful
  8640.         EDX = physical address of page
  8641.     AH nonzero: invalid page number (AH = 8Bh recommended)
  8642. ----------67DE07-----------------------------
  8643. INT 67 - Virtual Control Program Interface - READ CR0
  8644.     AX = DE07h
  8645. Return: AH = 00h
  8646.     EBX = value of Control Register 0
  8647. SeeAlso: AH=3Fh,AX=DE07h
  8648. ----------67DE08-----------------------------
  8649. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  8650.     AX = DE08h
  8651.     ES:DI -> array of 8 DWORDs
  8652. Return: AH = 00h
  8653.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  8654. SeeAlso: AH=3Fh,AX=DE09h
  8655. ----------67DE09-----------------------------
  8656. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  8657.     AX = DE09h
  8658.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  8659. Return: AH = 00h
  8660. Note:    values for DR4 and DR5 ignored
  8661. SeeAlso: AH=3Fh,AX=DE08h
  8662. ----------67DE0A-----------------------------
  8663. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  8664.     AX = DE0Ah
  8665. Return: AH = 00h successful
  8666.         BX = first vector used by master 8259 (IRQ0)
  8667.         CX = first vector used by slave 8259 (IRQ8)
  8668.     AH nonzero: failed
  8669. Note:    CX is undefined in systems without a slave 8259
  8670. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  8671. ----------67DE0B-----------------------------
  8672. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  8673.     AX = DE0Bh
  8674.     BX = first vector used by master 8259
  8675.     CX = first vector used by slave 8259
  8676.     interrupts disabled
  8677. Return: AH = 00h successful
  8678.     AH nonzero: failed 
  8679. Notes:    This call merely informs the server that the client has changed the
  8680.       interrupt mappings.  The client may not change the mappings if they
  8681.       have already been changed by the server or another client, and is
  8682.       responsible for restoring the original mappings before terminating.
  8683. SeeAlso: AX=DE0Ah
  8684. ----------67DE0C-----------------------------
  8685. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  8686.     AX = DE0Ch
  8687.     ESI = linear address in first megabyte of values for system registers
  8688.     interrupts disabled
  8689. Return: interrupts disabled
  8690.     GDTR, IDTR, LDTR, TR loaded
  8691.     SS:ESP must have at least 16 bytes space, and the entry point is
  8692.         required to set up a new stack before enabling interrupts
  8693.     EAX, ESI, DS, ES, FS, GS destroyed
  8694. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  8695.  
  8696. Note:    in protected mode, calling the protected-mode VCPI entry point with 
  8697.       AX = DE0Ch
  8698.       DS = segment selector mapping entire linear address space obtained
  8699.         via AX=DE01h
  8700.       SS:ESP in first megabyte of linear memory
  8701.       STACK:QWORD  return address from FAR call to 32-bit segment
  8702.         DWORD  EIP
  8703.         DWORD  CS
  8704.         DWORD  reserved for EFLAGS
  8705.         DWORD  ESP
  8706.         DWORD  SS
  8707.         DWORD  ES
  8708.         DWORD  DS
  8709.         DWORD  FS
  8710.         DWORD  GS
  8711.       and interrupts disabled, will switch to virtual86 mode with
  8712.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  8713.  
  8714. Format of system register values for switch to protected mode:
  8715. Offset    Size    Description
  8716.  00h    DWORD    value for CR3
  8717.  04h    DWORD    linear address in first megabyte of value for GDTR
  8718.  08h    DWORD    linear address in first megabyte of value for IDTR
  8719.  0Ch    WORD    value for LDTR
  8720.  0Eh    WORD    value for TR
  8721.  10h    PWORD    CS:EIP of protected mode entry-point
  8722. ----------67FFA5-----------------------------
  8723. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  8724.     AX = FFA5h
  8725. Return: AX = 845Ah if loaded
  8726.         BX:CX -> API entry point
  8727. Notes:    this call is available even if EMM386 is not providing EMS
  8728.     if no other program has hooked INT 67, an alternate installation
  8729.       check is to search for the string
  8730.       "MICROSOFT EXPANDED MEMORY MANAGER 386" early in the INT 67
  8731.       handler's segment, usually at offset 14h
  8732. SeeAlso: AH=3Fh
  8733.  
  8734. Call API entry point with:
  8735.     AH = 00h get memory manager's status
  8736.         Return: AH = status
  8737.             bit 0: not active (OFF)
  8738.             bit 1: in "Auto" mode
  8739.     AH = 01h set memory manager's state
  8740.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  8741.     AH = 02h Weitek coprocessor support
  8742.         AL = subfunction
  8743.         00h get Weitek support state
  8744.             Return: AL = status
  8745.                 bit 0: Weitek coprocessor is present
  8746.                 bit 1: Weitek support is enabled
  8747.         01h turn on Weitek support
  8748.         02h turn off Weitek support
  8749.      --- v4.20-4.41 only ---
  8750.     AH = 03h Windows support???
  8751.         AL = subfunction (00h, 01h)
  8752.     AH = 04h print copyright notice to standard output
  8753.          (using INT 21/AH=09h)
  8754.     AH = 05h print available report
  8755.          (the one shown when running EMM386 from the DOS prompt)
  8756. ---------------------------------------------
  8757.