home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / INTER34B.ZIP / INTERRUP.G < prev    next >
Encoding:
Text File  |  1993-04-03  |  332.7 KB  |  9,335 lines

  1. Interrupt List, part 7 of 8
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------N-50---------------------------------
  4. INT 50 - TIL Xpert AIM (X.25)
  5.     AH = function
  6. --------H-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. --------H-50---------------------------------
  21. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  22. SeeAlso: INT 51"IBM 3278"
  23. --------H-50---------------------------------
  24. INT 50 - IRQ0 relocated by OS/2 v1.x
  25. SeeAlso: INT 51"OS/2"
  26. --------V-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. --------V-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. --------V-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. --------l-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. --------V-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. --------l-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. --------V-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. --------l-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. --------V-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. --------l-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. --------V-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. --------l-500006-----------------------------
  156. INT 50 - PC Thuis Organizer Shell - ALERT USER
  157.     AX = 0006h
  158.     ES:BX -> string
  159. --------l-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. --------l-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. --------l-500009-----------------------------
  182. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  183.     AX = 0009h
  184.     ES:BX -> message string
  185. SeeAlso: AX=000Ah
  186. --------l-50000A-----------------------------
  187. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  188.     AX = 000Ah
  189. SeeAlso: AX=0009h
  190. --------l-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. --------l-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. --------l-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. --------l-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. --------l-50000F-----------------------------
  231. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  232.     AX = 000Fh
  233.     BL = character
  234.     BH = attribute
  235.     DI = window handle
  236. --------l-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. --------l-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. --------l-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. --------l-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. --------l-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. --------l-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. --------H-51---------------------------------
  292. INT 51 - IRQ1 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. --------H-51---------------------------------
  297. INT 51 - IRQ1 relocated by IBM 3278 emulation control program
  298. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  299. --------H-51---------------------------------
  300. INT 51 - IRQ1 relocated by OS/2 v1.x
  301. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  302. --------H-52---------------------------------
  303. INT 52 - IRQ2 relocated by DESQview
  304. Note:    this is the default location for older versions; see INT 50"DESQview"
  305.       for details of interrupt relocation
  306. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  307. --------H-52---------------------------------
  308. INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
  309. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  310. --------H-53---------------------------------
  311. INT 53 - IRQ3 relocated by DESQview
  312. Note:    this is the default location for older versions; see INT 50"DESQview"
  313.       for details of interrupt relocation
  314. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  315. --------H-53---------------------------------
  316. INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
  317. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  318. ----------53---------------------------------
  319. INT 53 - ??? - API
  320.     BX = function
  321.         0000h ???
  322.         AX = ???
  323.         Return: AX = ???
  324.         0004h ???
  325.         0009h ???
  326.         0015h
  327.         AX = ???
  328.         DX = ???
  329.         0017h
  330. Return: ???
  331. Notes:    the installation check consists of looking for the signature "WEBCO"
  332.       immediately prior to the interrupt handler
  333.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  334. Index:    installation check;unknown|installation check;WEBCO
  335. --------H-54---------------------------------
  336. INT 54 - IRQ4 relocated by DESQview
  337. Note:    this is the default location for older versions; see INT 50"DESQview"
  338.       for details of interrupt relocation
  339. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  340. --------H-54---------------------------------
  341. INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
  342. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  343. --------H-55---------------------------------
  344. INT 55 - IRQ5 relocated by DESQview
  345. Note:    this is the default location for older versions; see INT 50"DESQview"
  346.       for details of interrupt relocation
  347. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  348. --------H-55---------------------------------
  349. INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
  350. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  351. --------H-56---------------------------------
  352. INT 56 - IRQ6 relocated by DESQview
  353. Note:    this is the default location for older versions; see INT 50"DESQview"
  354.       for details of interrupt relocation
  355. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  356. --------H-56---------------------------------
  357. INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
  358. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  359. --------H-57---------------------------------
  360. INT 57 - IRQ7 relocated by DESQview
  361. Note:    this is the default location for older versions; see INT 50"DESQview"
  362.       for details of interrupt relocation
  363. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  364. --------H-57---------------------------------
  365. INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
  366. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  367. --------H-58---------------------------------
  368. INT 58 - IRQ8 relocated by DESQview 2.26+
  369. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  370. SeeAlso: INT 50"DESQview",INT 70
  371. --------H-58---------------------------------
  372. INT 58 - IRQ0 relocated by DoubleDOS
  373. SeeAlso: INT 08
  374. --------H-59---------------------------------
  375. INT 59 - IRQ9 relocated by DESQview 2.26+
  376. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  377. SeeAlso: INT 50"DESQview",INT 71
  378. --------H-59---------------------------------
  379. INT 59 - IRQ1 relocated by DoubleDOS
  380. SeeAlso: INT 09
  381. --------V-59---------------------------------
  382. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  383.     DS:DX -> block of 5 array pointers
  384. Return:    CF set on error
  385.         AX = error code
  386.     CF clear if successful
  387.         AX = return code
  388. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  389.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  390.     also used by the IBM Graphic Development Toolkit
  391. --------H-5A---------------------------------
  392. INT 5A - IRQ10 relocated by DESQview 2.26+
  393. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  394. SeeAlso: INT 50"DESQview",INT 72
  395. --------H-5A---------------------------------
  396. INT 5A - IRQ2 relocated by DoubleDOS
  397. SeeAlso: INT 0A
  398. --------N-5A---------------------------------
  399. INT 5A - Cluster adapter BIOS entry address
  400.     ???
  401. --------H-5B---------------------------------
  402. INT 5B - IRQ11 relocated by DESQview 2.26+
  403. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  404. SeeAlso: INT 50"DESQview",INT 73
  405. --------H-5B---------------------------------
  406. INT 5B - IRQ3 relocated by DoubleDOS
  407. SeeAlso: INT 0B
  408. --------N-5B---------------------------------
  409. INT 5B - Used by cluster adapter
  410. --------N-5B---------------------------------
  411. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  412.     ES:BX -> Network Control Block (see below)
  413. Return: AL = status (see INT 5C)
  414. SeeAlso: INT 5C
  415.  
  416. Format of Network Control Block
  417. Offset    Size    Description
  418.  00h    BYTE    ncb_command (see below)
  419.  01h    BYTE    ncb_retcode
  420.  02h    BYTE    ncb_lsn
  421.  03h    BYTE    ncb_num
  422.  04h    DWORD    -> ncb_buffer
  423.  08h    WORD    ncb_length
  424.  0Ah 16 BYTEs    ncb_callname
  425.  1Ah 16 BYTEs    ncb_name
  426.  2Ah    BYTE    ncb_rto
  427.  2Bh    BYTE    ncb_sto
  428.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  429.  30h    BYTE    ncb_lana_num
  430.  31h    BYTE    ncb_cmd_cplt
  431.  32h    DWORD    -> ncb_vname
  432.  36h    BYTE    ncb_vnamelen
  433.  37h  9 BYTEs    ncb_reserve
  434. Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  435.  
  436. Values for ncb_command field same as for INT 5C, except
  437.     70h    send net Break
  438. --------N-5B---------------------------------
  439. INT 5B - Microsoft Network Transport Layer Interface
  440. Note:    used by MS-NET for executing network commands
  441. SeeAlso: INT 5C"NetBIOS"
  442. --------N-5B---------------------------------
  443. INT 5B - used by Alloy NTNX
  444. --------N-5B---------------------------------
  445. INT 5B - ISOLAN Multi Protocol Software
  446.     ES:BX -> Transfer Control Block
  447. Return: AL - status
  448. Note:    this software interface allows multiple protocols/software packages
  449.       to access a BICC 411x network card
  450.  
  451. Format of Transfer Control Block:
  452. Offset    Type    Description
  453.  00h    BYTE    command code
  454.         B3h Status
  455.         F2h Activate
  456.         F3h Deactivate
  457.         F4h Send Data
  458.  01h    BYTE    command identity
  459.  02h    BYTE    virtual circuit ID
  460.  03h    WORD    buffer length
  461.  05h    DWORD    buffer pointer
  462.  09h    BYTE    expedited data flag
  463.  0Ah    BYTE    cancelable flag
  464.  0Bh 16 BYTEs    local network address
  465.  1Bh 16 BYTEs    remote network address
  466.  2Bh    DWORD    asynchronous notification routine
  467.  30h    DWORD    local network number
  468.  34h    DWORD    remote network number
  469.  38h    BYTE    call timeout
  470.  39h    BYTE    not used
  471.  3Ah  8 BYTEs    reserved
  472.  42h    BYTE    command code extension
  473.  43h    WORD    Blue Book MAC type
  474. --------H-5C---------------------------------
  475. INT 5C - IRQ12 relocated by DESQview 2.26+
  476. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  477. SeeAlso: INT 50"DESQview",INT 74
  478. --------H-5C---------------------------------
  479. INT 5C - IRQ4 relocated by DoubleDOS
  480. SeeAlso: INT 0C
  481. --------N-5C---------------------------------
  482. INT 5C - NetBIOS INTERFACE
  483.     ES:BX -> network control block (NCB) (see below)
  484. Return: AL = status (see below)
  485. Note:    Sytek PCnet card uses DMA 3.
  486. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  487.  
  488. Values for NetBIOS status:
  489.  00h successful
  490.  01h bad buffer size
  491.  03h invalid NETBIOS command
  492.  05h timeout
  493.  06h receive buffer too small
  494.  07h No-ACK command failed
  495.  08h bad session number
  496.  09h LAN card out of memory
  497.  0Ah session closed
  498.  0Bh command has been cancelled
  499.  0Dh name already exists
  500.  0Eh local name table full
  501.  0Fh name still in use, can't delete
  502.  11h local session table full
  503.  12h remote PC not listening
  504.  13h bad NCB_NUM field
  505.  14h no answer to CALL or no such remote
  506.  15h name not in local name table
  507.  16h duplicate name
  508.  17h bad delete
  509.  18h abnormal end
  510.  19h name error, multiple identical names in use
  511.  1Ah bad packet
  512.  21h network card busy
  513.  22h too many commands queued
  514.  23h bad LAN card number
  515.  24h command finished while cancelling
  516.  26h command can't be cancelled
  517.  30h name defined by another process (OS/2)
  518.  34h NetBIOS environment not defined, must issue reset (OS/2)
  519.  35h required operating system resources exhausted (OS/2)
  520.  36h maximum applications exceeded (OS/2)
  521.  37h no SAPs available for NetBIOS (OS/2)
  522.  38h requested resources not available (OS/2)
  523.  40h Lana System Error
  524.  41h Lana Remote Hot Carrier
  525.  42h Lana Local Hot Carrier
  526.  43h Lana No Carrier Detected
  527.  44h unusual network condition
  528.  45h-4Dh hardware error
  529.  4Eh token ring is broken
  530.  4Fh token ring error
  531.  50h adapter malfunction
  532.  F7h error in explicit INITIALIZE
  533.  F8h error in implicit OPEN
  534.  F9h TOKREUI internal error
  535.  FAh hardware adapter testing
  536.  FBh NetBIOS emulator not found
  537.  FCh OPEN or OPEN_SAP failure
  538.  FDh unexpected adapter closure
  539.  FFh NetBIOS busy (command pending)
  540.  
  541. Format of Network Control Block:
  542. Offset    Size    Description
  543.  00h    BYTE    command code (see below)
  544.  01h    BYTE    return code
  545.  02h    BYTE    local session number (LSN)
  546.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  547.  04h    DWORD    -> I/O buffer
  548.  08h    WORD    length of data in buffer
  549.  0Ah 16 BYTEs    remote system to call
  550.  1Ah 16 BYTEs    network name of local machine
  551.  2Ah    BYTE    receive timeout in 1/2 seconds
  552.  2Bh    BYTE    send timeout in 1/2 seconds
  553.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  554.  30h    BYTE    network adapter number on which to execute command
  555.         00h-03h IBM NetBIOS specs
  556.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  557.  31h    BYTE    command completion code (see returned status above)
  558.  32h 14 BYTEs    reserved for network card
  559.  
  560. Values for command code field in NCB (OR with 80h for non-waiting call):
  561.  10h start session with NCB_NAME name (call)
  562.  11h listen for call
  563.  12h end session with NCB_NAME name (hangup)
  564.  14h send data via NCB_LSN
  565.  15h receive data from a session
  566.  16h receive data from any session
  567.  17h send multiple data buffers
  568.  20h send unACKed message (datagram)
  569.  21h receive datagram
  570.  22h send broadcast datagram
  571.  23h receive broadcast datagram
  572.  30h add name to name table
  573.  31h delete name from name table
  574.  32h reset adapter card and tables
  575.  33h get adapter status (see structure "astatus" below)
  576.  34h status of all sessions for name (see structure "sstatus" below)
  577.  35h cancel
  578.  36h add group name to name table
  579.  48h send data and receive data (LAN Manager NETBEUI.DOS)
  580.  70h unlink from IBM remote program (no F0h function)
  581.  71h send data without ACK
  582.  72h send multiple buffers without ACK
  583.  72h UngermannBass Register (conflicts with above function)
  584.  73h UngermannBass SendNmc
  585.  74h UngermannBass Callniu
  586.  75h UngermannBass Calladdr
  587.  76h UngermannBass Listenaddr
  588.  77h UngermannBass SendPkt
  589.  78h find name
  590.  78h UngermannBass RcvPkt (conflicts with above function)
  591.  79h token-ring protocol trace
  592.  79h UngermannBass SendAttn (conflicts with above function)
  593.  7Ah UngermannBass RcvAttn
  594.  7Bh UngermannBass Listenniu
  595.  7Ch UngermannBass RcvRaw
  596.  7Dh UngermannBass SendNmc2
  597.  
  598. Format of structure "name":
  599. Offset    Size    Description
  600.  00h 16 BYTEs "nm_name" symbolic name
  601.  10h    BYTE  "nm_num" number associated with name
  602.  11h    BYTE  nm_status
  603.  
  604. Format of structure "astatus":
  605. Offset    Size    Description
  606.  00h  6 BYTEs as_id
  607.  06h    BYTE  as_jumpers
  608.  07h    BYTE  as_post
  609.  08h    BYTE  as_major
  610.  09h    BYTE  as_minor
  611.  0Ah    WORD  as_interval
  612.  0Ch    WORD  as_crcerr
  613.  0Eh    WORD  as_algerr
  614.  10h    WORD  as_colerr
  615.  12h    WORD  as_abterr
  616.  14h    DWORD as_tcount
  617.  18h    DWORD as_rcount
  618.  1Ch    WORD  as_retran
  619.  1Eh    WORD  as_xresrc
  620.  20h  8 BYTEs as_res0
  621.  28h    WORD  as_ncbfree
  622.  2Ah    WORD  as_ncbmax
  623.  2Ch    WORD  as_ncbx
  624.  2Eh  4 BYTEs as_res1
  625.  32h    WORD  as_sespend
  626.  34h    WORD  as_msp
  627.  36h    WORD  as_sesmax
  628.  38h    WORD  as_bufsize
  629.  3Ah    WORD  as_names
  630.  3Ch 16 name structures     as_name
  631.  
  632. Format of structure "sstatus":
  633. Offset    Size    Description
  634.  00h    BYTE    number of sessions being reported
  635.  01h    BYTE    number of sessions with this name
  636.  02h    BYTE    number of outstanding receive datagrams
  637.  03h    BYTE    number of outstanding ReceiveAnys
  638.  04h    var    session structures (see below)
  639.  
  640. Format of structure "session":
  641. Offset    Size    Description
  642.  00h    BYTE    local session number
  643.  01h    BYTE    state
  644.         01h listen pending
  645.         02h call pending
  646.         03h session established
  647.         04h hangup pending
  648.         05h hangup done
  649.         06h session aborted
  650.  02h 16 BYTEs    local name
  651.  12h 16 BYTEs    remote name
  652.  22h    BYTE    number of outstanding receives
  653.  23h    BYTE    number of outstanding sends/chainsends
  654. --------N-5C---------------------------------
  655. INT 5C - TOPS INTERFACE
  656.     ES:BX -> Network Control Block
  657. Note:    TOPS card uses DMA 1, 3 or none.
  658. --------N-5C---------------------------------
  659. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  660.     DX:BX -> control block (see below)
  661. Return: none
  662. Notes:    this driver can use any interrupt from 5Ch to 70h
  663.     the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  664.       handler; this serves as the installation check
  665. Index:    installation check;ATALK.SYS|installation check;AppleTalk interface
  666.  
  667. Format of AppleTalk control block:
  668. Offset    Size    Description
  669.  00h    WORD    command code
  670.         01h "AT_INIT"        initialize the driver
  671.         02h "AT_KILL"
  672.         03h "AT_GETNETINFO" get current network info incl init status
  673.         04h "AT_GETCLOCKTICKS"
  674.         05h "AT_STARTTIMER"
  675.         06h "AT_RESETTIMER"
  676.         07h "AT_CANCELTIMER"
  677.         10h "LAP_INSTALL"
  678.         11h "LAP_REMOVE"
  679.         12h "LAP_WRITE"
  680.         13h "LAP_READ"
  681.         14h "LAP_CANCEL"
  682.         20h "DDP_OPENSOCKET"
  683.         21h "DDP_CLOSESOCKET"
  684.         22h "DDP_WRITE"
  685.         23h "DDP_READ"
  686.         24h "DDP_CANCEL"
  687.         30h "NBP_REGISTER"
  688.         31h "NBP_REMOVE"
  689.         32h "NBP_LOOKUP"
  690.         33h "NBP_CONFIRM"
  691.         34h "NBP_CANCEL"
  692.         35h "ZIP_GETZONELIST"
  693.         36h "ZIP_GETMYZONE"
  694.         37h "ZIP_TAKEDOWN"
  695.         38h "ZIP_BRINGUP"
  696.         40h "ATP_OPENSOCKET"
  697.         41h "ATP_CLOSESOCKET"
  698.         42h "ATP_SENDREQUEST"
  699.         43h "ATP_GETREQUEST"
  700.         44h "ATP_SENDRESPONSE"
  701.         45h "ATP_ADDRESPONSE"
  702.         46h "ATP_CANCELTRANS"
  703.         47h "ATP_CANCELRESPONSE"
  704.         48h "ATP_CANCELREQUEST"
  705.         50h "ASP_GETPARMS"
  706.         51h "ASP_CLOSESESSION"
  707.         52h "ASP_CANCEL"
  708.         53h "ASP_INIT"
  709.         54h "ASP_KILL"
  710.         55h "ASP_GETSESSION"
  711.         56h "ASP_GETREQUEST"
  712.         57h "ASP_CMDREPLY"
  713.         58h "ASP_WRTCONTINUE"
  714.         59h "ASP_WRTREPLY"
  715.         5Ah "ASP_CLOSEREPLY"
  716.         5Bh "ASP_NEWSTATUS"
  717.         5Ch "ASP_ATTENTION"
  718.         5Dh "ASP_GETSTATUS"
  719.         5Eh "ASP_OPENSESSION"
  720.         5Fh "ASP_COMMAND"
  721.         60h "ASP_WRITE"
  722.         61h "ASP_GETATTENTION"
  723.         70h "PAP_OPEN"
  724.         71h "PAP_CLOSE"
  725.         72h "PAP_READ"
  726.         73h "PAP_WRITE"
  727.         74h "PAP_STATUS"
  728.         75h "PAP_REGNAME"
  729.         76h "PAP_REMNAME"
  730.         77h "PAP_INIT"
  731.         78h "PAP_NEWSTATUS"
  732.         79h "PAP_GETNEXTJOB"
  733.         7Ah "PAP_KILL"
  734.         7Bh "PAP_CANCEL"
  735.         
  736.         or with the following flags
  737.         8000h start command then return
  738.         4000h wait for interrupt service to complete
  739.  02h    WORD    returned status
  740.         0000h success (already initialized if func 01h)
  741.  04h    DWORD    pointer to completion function
  742.  08h    WORD    network number
  743.  0Ah    BYTE    node ID
  744. ---if general func (01h,03h), control block continues:
  745.  0Bh    BYTE    "inf_abridge"
  746.  0Ch    WORD    "inf_config"
  747.  0Eh    DWORD    pointer to buffer
  748.  12h    WORD    buffer size
  749. ---if DDP function (20h-24h), control block continues:
  750.  0Bh    BYTE    "ddp_addr_socket"
  751.  0Ch    BYTE    "ddp_socket"
  752.  0Dh    BYTE    "ddp_type"
  753.  0Eh    DWORD    pointer to buffer
  754.  12h    WORD    buffer size
  755.  14h    BYTE    "ddp_chksum"
  756. ---if Name Binding Protocol (30h-34h), control block continues:
  757.  0Bh    BYTE    "nbp_addr_socket"
  758.  0Ch    WORD    "nbp_toget"
  759.  0Eh    DWORD    pointer to buffer
  760.  12h    WORD    buffer size
  761.  14h    BYTE    "nbp_interval"
  762.  15h    BYTE    "nbp_retry"
  763.  16h    DWORD    "nbp_entptr"
  764. ---if AppleTalk Transaction Protocol (42h), control block continues:
  765.  0Bh    BYTE    "atp_addr_socket"
  766.  0Ch    WORD    "atp_socket"
  767.  0Eh    DWORD    pointer to buffer
  768.  12h    WORD    buffer size
  769.  14h    BYTE    "atp_interval"
  770.  15h    BYTE    "atp_retry"
  771.  16h    BYTE    ATP flags
  772.         bit 5: exactly one transaction
  773.  17h    BYTE    "atp_seqbit"
  774.  18h    BYTE    transaction ID
  775.  19h  4 BYTEs    ATP user bytes
  776.  1Dh    BYTE    number of BDS buffers
  777.  1Eh    BYTE    number of BDS responses
  778.  1Fh    DWORD    pointer to BDS buffers (see below)
  779.  
  780. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  781. Offset    Size    Description
  782.  00h    WORD    "tup_address_network"
  783.  02h    BYTE    "tup_address_notid"
  784.  03h    BYTE    "tup_address_socket"
  785.  04h    BYTE    "tup_enum"
  786.  05h 99 BYTEs    name
  787.  
  788. Format of BDS entries:
  789. Offset    Size    Description
  790.  00h    DWORD    pointer to buffer
  791.  04h    WORD    size of buffer
  792.  06h    WORD    BDS data size
  793.  08h  4 BYTEs    "bds_userbytes"
  794. --------N-5C---------------------------------
  795. INT 5C - IBM 802.2 INTERFACE (LLC)
  796.     ES:BX -> CCB
  797. Return: none
  798.  
  799. Format of CCB:
  800. Offset    Size    Description
  801.  00h    BYTE    adapter
  802.  01h    BYTE    command code
  803.  02h    BYTE    return code
  804.  03h    BYTE    work
  805.  04h    DWORD    pointer to ???
  806.  08h    DWORD    pointer to completion function???
  807.  0Ch    DWORD    pointer to parameters???
  808. --------N-5C---------------------------------
  809. INT 5C - $25 LAN - INSTALLATION CHECK
  810. Notes:    current versions only check whether the vector is 0000h:0000h or not
  811.     future versions are supposed to have the signature "NET" in the three
  812.       bytes preceding the INT 5C handler
  813. --------N-5C04-------------------------------
  814. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  815.     AH = 04h
  816.     AL = COM port (0 = default)
  817.     CX = wait count in character times (should be at least 100)
  818. Return: ZF set if link alive
  819. --------H-5D---------------------------------
  820. INT 5D - IRQ13 relocated by DESQview 2.26+
  821. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  822. SeeAlso: INT 50"DESQview",INT 75
  823. --------H-5D---------------------------------
  824. INT 5D - IRQ5 relocated by DoubleDOS
  825. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  826. --------H-5E---------------------------------
  827. INT 5E - IRQ14 relocated by DESQview 2.26+
  828. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  829. SeeAlso: INT 50"DESQview",INT 76
  830. --------H-5E---------------------------------
  831. INT 5E - IRQ6 relocated by DoubleDOS
  832. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  833. --------H-5F---------------------------------
  834. INT 5F - IRQ15 relocated by DESQview 2.26+
  835. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  836. SeeAlso: INT 50"DESQview",INT 77
  837. --------H-5F---------------------------------
  838. INT 5F - IRQ7 relocated by DoubleDOS
  839. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  840. --------b-5F00-------------------------------
  841. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  842.     AH = 00h
  843.     AL = video mode
  844.         07h text, system manager compliant
  845.         20h 240x128 mono graphics, system manager compliant
  846.         87h text, not system manager compliant
  847.         A0h 240x128 mono graphics, not system manager compliant
  848. Note:    the defaults after setting the mode to graphics are (0,0) logical
  849.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  850.       pixel replacement FORCE, line type and fill mask all bits set
  851. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  852. --------b-5F01-------------------------------
  853. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  854.     AH = 01h
  855.     ES:DI -> 8-byte fill mask
  856. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  857.       when drawing filled rectangles; it is always aligned with the byte
  858.       boundaries of video memory, regardless of the actual boundaries of
  859.       the rectangle
  860. SeeAlso: AH=02h
  861. --------b-5F02-------------------------------
  862. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  863.     AH = 02h
  864.     ES:DI -> graphics info record (see below)
  865. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  866. Format of graphics info record:
  867. Offset    Size    Description
  868.  00h    BYTE    current video mode
  869.  01h    BYTE    default video mode
  870.  02h    WORD    display width in pixels
  871.  04h    WORD    display height in pixels
  872.  06h    WORD    current pen column
  873.  08h    WORD    current pen row
  874.  0Ah    WORD    current line type
  875.  0Ch    WORD    current replacement rule
  876.  0Eh    WORD    current pen color
  877.  10h    WORD    current leftmost column of clip region
  878.  12h    WORD    current rightmost column of clip region
  879.  14h    WORD    current topmost row of clip region
  880.  16h    WORD    current bottommost row of clip region
  881.  18h    WORD    current column of logical origin
  882.  1Ah    WORD    current row of logical origin
  883.  1Ch  8 BYTEs    current fill mask
  884. --------b-5F03-------------------------------
  885. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  886.     AH = 03h
  887.     CX = column
  888.     DX = row
  889. SeeAlso: AH=04h
  890. --------b-5F04-------------------------------
  891. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  892.     AH = 04h
  893.     CX = left-most column
  894.     DX = top-most row
  895.     SI = right-most column
  896.     DI = bottom-most row
  897. SeeAlso: AH=03h
  898. --------b-5F05-------------------------------
  899. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  900.     AH = 05h
  901.     AL = fill type
  902.         00h outline, using current line type and color
  903.         01h solid, using current color
  904.         02h pattern, using current fill mask and color
  905.     DX,CX = row,column of other corner of rectangle
  906. Note:    the rectangle is drawn starting at the current pen position
  907. SeeAlso: AH=01h,AH=06h,AH=07h
  908. --------b-5F06-------------------------------
  909. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  910.     AH = 06h
  911.     DX,CX = row,column of end point
  912. Note:    the line is drawn starting at the current pen position
  913. SeeAlso: AH=05h,AH=07h
  914. --------b-5F07-------------------------------
  915. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  916.     AH = 07h
  917.     DX,CX = row,column of point
  918. Note:    also sets pen position to the specified point
  919. SeeAlso: AH=06h,AH=08h,AH=0Ch
  920. --------b-5F08-------------------------------
  921. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  922.     AH = 08h
  923.     DX,CX = row,column of new pen position
  924. SeeAlso: AH=07h,AH=09h
  925. --------b-5F09-------------------------------
  926. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  927.     AH = 09h
  928.     AL = new color (00h = white, 01h = black)
  929. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  930. --------b-5F0A-------------------------------
  931. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  932.     AH = 0Ah
  933.     AL = new replacement rule
  934.         00h force
  935.         01h AND
  936.         02h OR
  937.         03h XOR
  938. SeeAlso: AH=01h,AH=09h,AH=0Bh
  939. --------b-5F0B-------------------------------
  940. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  941.     AH = 0Bh
  942.     CX = new line type
  943. Note:    the line type specifies 16 bits which are repeated over and over while
  944.       drawing the pixels of a line
  945. SeeAlso: AH=09h,AH=0Ah
  946. --------b-5F0C-------------------------------
  947. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  948.     AH = 0Ch
  949.     DX,CX = row,column of pixel to read
  950. Return: AX = pixel color
  951. SeeAlso: AH=07h
  952. --------b-5F0D-------------------------------
  953. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  954.     AH = 0Dh
  955.     DX,CX = row,column of first corner
  956.     BP,SI = row,column of second corner
  957.     ES:DI -> image buffer (see below)
  958. Note:    the specified corners are included in the saved image
  959. SeeAlso: AH=0Eh
  960.  
  961. Format of image buffer:
  962. Offset    Size    Description
  963.  00h    WORD    number of planes (always 01h on HP 95LX)
  964.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  965.  04h    WORD    image width in pixels
  966.  06h    WORD    image height in pixels
  967.  08h  N BYTEs    image data
  968.         requires (WIDTH+7)/8 * HEIGHT bytes
  969. --------b-5F0E-------------------------------
  970. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  971.     AH = 0Eh
  972.     AL = replacement rule
  973.         bit 2: invert image before applying rule
  974.         bits 1-0:  00 force
  975.                01 AND
  976.                10 OR
  977.                11 XOR
  978.     DX,CX = row,column of top left corner
  979.     ES:DI -> image buffer (see AH=0Dh)
  980. Note:    if the specified image does not fit completely on the screen, this call
  981.       does nothing
  982. SeeAlso: AH=0Dh
  983. --------b-5F0F-------------------------------
  984. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  985.     AH = 0Fh
  986.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  987.     DX,CX = row,column of first character's top left corner
  988.     ES:DI -> ASCIZ text
  989. --------*-60---------------------------------
  990. INT 60 - reserved for user interrupt
  991. --------v-60---------------------------------
  992. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  993.    The "Zero Bug" virus hooks this vector.  It considers itself installed if
  994.    offset 103h of the handler's segment contains the bytes "ZE"
  995. SeeAlso: INT 32,INT 61"SEMTEX"
  996. --------d-60---------------------------------
  997. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  998. SeeAlso: INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  999. Notes:    this vector stores the first four bytes of the parameter table for
  1000.       hard disk 0
  1001.     these vectors are used by the following Adaptec controllers:
  1002.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  1003.     these vectors are NOT used by the following Adaptec controllers:
  1004.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  1005. --------b-60---------------------------------
  1006. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  1007.    supplies a number of subfunctions which perform such functions as drawing
  1008.    boxes and menus, and provide input line editing
  1009. SeeAlso: INT 61"Atari"
  1010. ----------60---------------------------------
  1011. INT 60 - PC-IPC API
  1012.     STACK:    DWORD    pointer to parameter block (see below)
  1013. Return: STACK:    unchanged
  1014. Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
  1015.       allows communication between independent programs
  1016. Note:    INT 60 is the default, any interrupt vector may be used by specifying
  1017.       the vector on the commandline
  1018.  
  1019. Format of parameter block:
  1020. Offset    Size    Description
  1021.  00h    WORD    caller's ID
  1022.  02h    WORD    to ID
  1023.  04h    WORD    command code (see below)
  1024.  06h    WORD    returned status
  1025.         bit 0: unused
  1026.         bit 1: IPC enabled
  1027.         bit 2: IPC installed
  1028.         bit 3: error
  1029.         bit 4: message(s) available
  1030.  08h    WORD    returned error code (see below)
  1031.  0Ah    WORD    size of data
  1032.  0Ch    DWORD    pointer to data buffer
  1033.  
  1034. Values of command code:
  1035.  01h "IPC_CMND_INQUIRE"     inquire current status
  1036.         set status field, writes WORD to data buffer containing free
  1037.           message space in bytes, and sets the "size" field to the
  1038.           number of messages waiting
  1039.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  1040.         ignored unless called with the same ID that disabled PC-IPC
  1041.  03h "IPC_CMND_DISABLE" disable PC-IPC
  1042.  04h "IPC_CMND_INSTALL" reset PC-IPC
  1043.  06h "IPC_CMND_RDATA"    read data
  1044.         returns first message in data buffer, sets "size" to message
  1045.           length and "to ID" field to sender's ID
  1046.         if no messages available, bit 4 of status is cleared and "size"
  1047.           is set to zero
  1048.  07h "IPC_CMND_SDATA"    send data
  1049.  08h "IPC_CMND_REQID"    require user ID
  1050.         create a new recognized ID and return in "caller's ID" field
  1051.  09h "IPC_CMND_DELID"    cancel user ID
  1052.         delete caller's ID from pool of recognized IDs
  1053.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  1054.  0Bh "IPC_CMND_VERS"    get PC-IPC version 
  1055.         string representing version returned in data buffer, "size"
  1056.           field set to length of string
  1057.  
  1058. Values for error code:
  1059.  00h    no error
  1060.  01h    invalid command or parameter
  1061.  02h    only process 0 can install/reset IPC
  1062.  03h    process can not install/reset IPC
  1063.  04h    IPC is not enabled
  1064.  05h    process can not disable IPC
  1065.  06h    invalid destination process ID
  1066.  07h    invalid sending process ID
  1067.  08h    invalid data destination
  1068.  09h    no more process IDs available
  1069.  0Ah    can not relinquish that process ID
  1070.  0Bh    message space is full
  1071.  0Ch    IPC is not installed
  1072. --------R-60---------------------------------
  1073. INT 60 - Tangram Arbiter - API
  1074. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  1075.     identified by string "@ARB_API" immediately following a short jump at
  1076.       the interrupt handler address
  1077.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  1078.       IBM mainframe
  1079. --------G-60---------------------------------
  1080. INT 60 U - INTRSPY/CMDSPY API
  1081. Program: INTRSPY is a script-driven debugger included with the book
  1082.       _Undocumented_DOS_.
  1083. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  1084.     The installation check is to 
  1085.       a) determine that the handler is an IRET instruction
  1086.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  1087.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  1088.       its entry point.
  1089. Index:    installation check;INTRSPY
  1090.  
  1091. Call INTRSPY entry point with:
  1092.     AH = function
  1093.         00h ???
  1094.         01h set current directory (for use in reporting)
  1095.         ES:DI -> counted string containing directory name (max 79 char)
  1096.         02h set name of script file
  1097.         ES:DI -> counted string containing file name (max 79 chars)
  1098.         03h set script arguments
  1099.         ES:DI -> counted string containing arguments (max 79 chars)
  1100.         04h get directory set with function 01h
  1101.         ES:DI -> 80-byte buffer for directory name
  1102.         05h get name of script file
  1103.         ES:DI -> 80-byte buffer for script filename
  1104.         06h get script arguments
  1105.         ES:DI -> 80-byte buffer for script arguments
  1106.         07h get ???
  1107.         CL = 00h-15h specifies what to get
  1108.         ES:DI -> WORD to be set with desired value on return
  1109.         08h get ???
  1110.         ES:DI -> WORD to be set with returned value
  1111.         09h get ???
  1112.         ES:DI -> WORD to be set with returned value
  1113.         0Bh store code for interrupt handler???
  1114.         ES:DI -> data
  1115.         CX = number of bytes
  1116.         0Ch ???
  1117.         ES:DI -> ???
  1118.         0Dh get ???
  1119.         ES:DI -> BYTE to be set with returned value
  1120.         0Eh set ??? flag
  1121.         0Fh clear ??? flag
  1122.         10h ???
  1123.         Return: AL = 04h or 05h if failed
  1124.         11h ???
  1125.         Return: AL = 05h if failed
  1126.         12h get ???
  1127.         ES:DI -> buffer
  1128.         Return: CX = number of bytes returned in buffer
  1129.         13h ???
  1130. Return: AH = 00h
  1131.     AL = status
  1132.         00h successful
  1133.         01h invalid function
  1134.         02h ???
  1135.         03h ???
  1136.         04h ???
  1137.         05h ???
  1138. --------u-60---------------------------------
  1139. INT 60 U - PC/370 v4.2 - ???
  1140.     ???
  1141. Return: ???
  1142. Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
  1143. Note:    this is the default interrupt, however the documentation includes
  1144.       instructions for patching the system for another interrupt
  1145. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  1146. --------r-60---------------------------------
  1147. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  1148. SeeAlso: INT 61"JPI"
  1149. --------N-60---------------------------------
  1150. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  1151. Notes:    The handler for the interrupt will start with a 3-byte jump 
  1152.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  1153.       terminating NUL is significant).
  1154.     To find the interrupt being used by the driver, an application should
  1155.       scan through interrupt vectors 60h to 80h (20h through FFh for
  1156.       v1.10+ of the specification) until it finds one with the "PKT DRVR"
  1157.       string.
  1158.     AH values of 80h to FFh have been reserved for user-defined additions.
  1159. --------b-60----DI0100-----------------------
  1160. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  1161.     DI = 0100h
  1162.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1163.         DWORD    pointer to event record (see below)
  1164. Return: event record filled
  1165.     STACK unchanged
  1166. Note:    this call will timeout after about 500ms
  1167. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  1168.  
  1169. Format of event record:
  1170. Offset    Size    Description
  1171.  00h    WORD    event type
  1172.         00h no events
  1173.         01h keystroke available
  1174.         02h Ctrl-Break
  1175.         03h reactivation (always follows deactivation event)
  1176.         04h about to deactivate (sleep)
  1177.             next get-event call will not return until reactivated
  1178.         05h forced application termination
  1179.         06h 1-2-3 bridge service request (only given to     1-2-3)
  1180.         07h request to grow
  1181.         08h request to shrink
  1182.         09h application's alarm expired
  1183.         0Ah daily chance to set an alarm
  1184.         0Bh system date or time has been changed
  1185.  02h    WORD    ASCII code page 850 translation of keystroke
  1186.         or grow/shrink amount in paragraphs or 0000h if error
  1187.         or alarm expiration data
  1188.  04h    BYTE    scan code from BIOS
  1189.  05h    BYTE    shift key states at time keystroke is retrieved
  1190.  06h    WORD    LICS translation of keystroke
  1191.  08h    BYTE    function key number (1-2-3 only)
  1192.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  1193.         or pointer to time change structure (see below)
  1194. Note:    if the System Manager is waiting the conclusion of a bridge service
  1195.       or grow/shrink call and the event type field is set to FFFFh on
  1196.       entry, the SysMgr will resume
  1197.  
  1198. Format of time change structure:
  1199. Offset    Size    Description
  1200.  00h    WORD    old year
  1201.  02h    BYTE    old month
  1202.  03h    BYTE    old date
  1203.  04h    BYTE    old day
  1204.  05h    BYTE    old hour
  1205.  06h    BYTE    old minute
  1206.  07h    BYTE    old second
  1207.  08h    BYTE    old hundredth of a second
  1208.  09h  9 BYTEs    new time in same format as old time
  1209. --------b-60----DI0101-----------------------
  1210. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  1211.     DI = 0101h
  1212.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1213.         DWORD pointer to event record (INT 60/DI=0100h)
  1214. Return: event record filled
  1215.     STACK unchanged
  1216. Note:    this call returns immediately if no event is available
  1217. SeeAlso: INT 60/DI=0100h
  1218. --------b-60----DI0102-----------------------
  1219. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  1220.     DI = 0102h
  1221.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1222. Return: ???
  1223.     STACK unchanged
  1224. --------b-60----DI0104-----------------------
  1225. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  1226.     DI = 0104h
  1227.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1228.         DWORD pointer to bridge record (see below)
  1229. Return: ???
  1230.     STACK unchanged
  1231.  
  1232. Format of bridge record:
  1233. Offset    Size    Description
  1234.  00h    WORD    function code
  1235.         00h test
  1236.         01h get range
  1237.         02h "GETRANGE_ADDR"
  1238.         03h "SETRANGE_ADDR"
  1239.         04h "GETRANGE_DATA"
  1240.         05h "SETRANGE_DATA"
  1241.         06h recalculate
  1242.         07h get cursor
  1243.         08h set cursor
  1244.         09h redisplay
  1245.         0Ah cell type
  1246.         0Bh "CALCTYPE"
  1247.  02h    WORD    return code from 1-2-3
  1248.  04h 16 BYTEs    ASCII range name
  1249.  14h    WORD    start column of range
  1250.  16h    WORD    start row of range
  1251.  18h    WORD    end column of range
  1252.  1Ah    WORD    end row of range
  1253.  1Ch    WORD    order in which data is placed in buffer
  1254.  1Eh    WORD    buffer size
  1255.  20h    WORD    offset within bridge record's segment of buffer for cell data
  1256. --------b-60----DI0105-----------------------
  1257. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  1258.     DI = 0105h
  1259.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1260. Return: ???
  1261.     STACK unchanged
  1262. --------b-60----DI0106-----------------------
  1263. INT 60 u - HP 95LX System Manager - YIELD CPU
  1264.     DI = 0106h
  1265.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1266.         DWORD pointer to ???
  1267. Return: ???
  1268.     STACK unchanged
  1269. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  1270. --------b-60----DI0107-----------------------
  1271. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  1272.     DI = 0107h
  1273.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1274.         DWORD pointer to ???
  1275. Return: ???
  1276.     STACK unchanged
  1277. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1278. --------b-60----DI0200-----------------------
  1279. INT 60 u - HP 95LX System Manager - SETUP MENU
  1280.     DI = 0200h
  1281.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1282.         DWORD    pointer to menu data (see below)
  1283.         DWORD    pointer to ???
  1284.         WORD    number of items on menu???
  1285.         WORD    ???
  1286.         DWORD    pointer to ???
  1287.         WORD    ???
  1288.         DWORD    pointer to ???
  1289. Return: ???
  1290.     STACK unchanged
  1291. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  1292.  
  1293. Format of menu data:
  1294. Offset    Size    Description
  1295.  00h 80 BYTEs    first line of menu text
  1296.  50h 80 BYTEs    second line of menu text
  1297.  A0h 80 BYTEs    third line of menu text
  1298.  F0h    WORD    number of keywords
  1299.  F2h    WORD    index of currently highlighted keyword or FFFFh
  1300.  F4h    WORD    single prompt on top line if nonzero
  1301.  F6h 20 BYTEs    which line each of 20 keywords is located on
  1302. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  1303. 11Eh 20 BYTEs    length of each of 20 keywords
  1304. 132h 20 BYTEs    first letter of each of 20 keywords
  1305. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  1306. --------b-60----DI0201-----------------------
  1307. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  1308.     DI = 0201h
  1309.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1310.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1311. Return: ???
  1312.     STACK unchanged
  1313. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  1314. --------b-60----DI0202-----------------------
  1315. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  1316.     DI = 0202h
  1317.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1318.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1319. Return: ???
  1320.     STACK unchanged
  1321. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  1322. --------b-60----DI0203-----------------------
  1323. INT 60 u - HP 95LX System Manager - REMOVE MENU
  1324.     DI = 0203h
  1325.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1326.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1327. Return: ???
  1328.     STACK unchanged
  1329. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  1330. --------b-60----DI0204-----------------------
  1331. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  1332.     DI = 0204h
  1333.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1334.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  1335.         WORD    keystroke
  1336.         DWORD    pointer to WORD to receive selection number
  1337. Return: buffer for selection number filled with index of selected menu item or
  1338.       FFFFh if no final selection yet
  1339.     STACK unchanged
  1340. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  1341. --------b-60----DI0205-----------------------
  1342. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  1343.     DI = 0205h
  1344.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1345.         DWORD    pointer to file menu structure (see below)
  1346.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1347.         DWORD    pointer to wildcard filespec for initial file list
  1348.         WORD    row???
  1349.         WORD    column???
  1350. Return: ???
  1351.     STACK unchanged
  1352. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  1353.  
  1354. Format of file menu structure:
  1355. Offset    Size    Description
  1356.  00h    DWORD    pointer to ASCIZ base directory name
  1357.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  1358.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see below)
  1359.  0Ch    WORD    size of file list workspace in bytes
  1360.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  1361.  10h    WORD    starting column
  1362.  12h    WORD    number of lines
  1363.  14h    WORD    number of columns
  1364.  16h    WORD    number of files displayed on each line
  1365. ---the remaining fields are initialized by the System Manager---
  1366.  18h    WORD    0000h if first edit character, else multiline
  1367.  1Ah    WORD    number of files in file list
  1368.  1Ch    WORD    max files workspace has room for
  1369.  1Eh    WORD    file at top of list
  1370.  20h    WORD    index of file to highlight
  1371.  22h    WORD    index of file to unhighlight
  1372.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  1373.  
  1374. Format of file list workspace entry:
  1375. Offset    Size    Description
  1376.  00h    BYTE    file attributes
  1377.  01h    WORD    file time (see INT 21/AX=5700h)
  1378.  03h    WORD    file date (see INT 21/AX=5700h)
  1379.  05h    DWORD    file size
  1380.  09h 13 BYTEs    ASCIZ filename
  1381. --------b-60----DI0206-----------------------
  1382. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  1383.     DI = 0206h
  1384.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1385.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  1386.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1387. Return: ???
  1388.     STACK unchanged
  1389. SeeAlso: INT 60/DI=0205h
  1390. --------b-60----DI0207-----------------------
  1391. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  1392.     DI = 0207h
  1393.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1394.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  1395.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1396.         WORD    keystroke
  1397. Return: AX = status
  1398.         0000h keystroke processed, call INT 60/DI=0206h to refresh menu
  1399.         0001h redisplay application area before refreshing menu
  1400.         0002h user confirmed selection, filename is in edit record's buffer
  1401.         0003h user aborted menu
  1402.         FFFBh bad filename
  1403.         FFFCh bad directory
  1404.         FFFDh bad drive
  1405.         FFFEh unknown keystroke
  1406.         FFFFh keystroke known but invalid in current context
  1407.     STACK unchanged
  1408. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  1409. --------b-60----DI0208-----------------------
  1410. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  1411.     DI = 0208h
  1412.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1413.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  1414.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1415. Return: ???
  1416.     STACK unchanged
  1417. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  1418. --------b-60----DI0300-----------------------
  1419. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  1420.     DI = 0300h
  1421.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1422.         WORD    starting row (-3 is topmost, 0 is first user line)
  1423.         WORD    starting column
  1424.         DWORD    pointer to string
  1425.         WORD    length of string
  1426.         WORD    display style: 0000h normal, 0001h reverse video
  1427.         WORD    "OSTYLE"
  1428. Return: ???
  1429.     STACK unchanged
  1430. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  1431. --------b-60----DI0301-----------------------
  1432. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  1433.     DI = 0301h
  1434.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1435.         WORD    starting row (-3 is topmost, 0 is first user line)
  1436.         WORD    starting column
  1437.         WORD    number of rows
  1438.         WORD    number of columns
  1439. Return: ???
  1440.     STACK unchanged
  1441. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  1442. --------b-60----DI0302-----------------------
  1443. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  1444.     DI = 0302h
  1445.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1446.         WORD    starting row???
  1447.         WORD    starting column???
  1448.         WORD    height of scroll region???
  1449.         WORD    width of scroll region???
  1450.         WORD    number of lines to scroll region???
  1451. Return: ???
  1452.     STACK unchanged
  1453. SeeAlso: INT 60/DI=0301h
  1454. --------b-60----DI0303-----------------------
  1455. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  1456.     DI = 0303h
  1457.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1458.         WORD    ???
  1459.         WORD    ???
  1460.         WORD    ???
  1461.         WORD    ???
  1462.         DWORD    pointer to ???
  1463. Return: ???
  1464.     STACK unchanged
  1465. --------b-60----DI0304-----------------------
  1466. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  1467.     DI = 0304h
  1468.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1469.         DWORD    pointer to ???
  1470.         WORD    ???
  1471. Return: ???
  1472.     STACK unchanged
  1473. --------b-60----DI0305-----------------------
  1474. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  1475.     DI = 0305h
  1476.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1477.         WORD    ???
  1478.         WORD    ???
  1479.         DWORD    pointer to ???
  1480.         WORD    ???
  1481. Return: ???
  1482.     STACK unchanged
  1483. --------b-60----DI0307-----------------------
  1484. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  1485.     DI = 0307h
  1486.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1487.         WORD    ???
  1488.         WORD    ???
  1489.         WORD    ???
  1490. Return: ???
  1491.     STACK unchanged
  1492. --------b-60----DI0308-----------------------
  1493. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  1494.     DI = 0308h
  1495.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1496. Return: ???
  1497.     STACK unchanged
  1498. --------b-60----DI0309-----------------------
  1499. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  1500.     DI = 0309h
  1501.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1502.         WORD    new mode
  1503. Return: ???
  1504.     STACK unchanged
  1505. --------b-60----DI030A-----------------------
  1506. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  1507.     DI = 030Ah
  1508.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1509. Return: ???
  1510.     STACK unchanged
  1511. --------b-60----DI030B-----------------------
  1512. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  1513.     DI = 030Bh
  1514.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1515.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  1516.         WORD    column
  1517. Return: ???
  1518.     STACK unchanged
  1519. Note:    cursor is hidden if the specified position is not on the physical
  1520.       display
  1521. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1522. --------b-60----DI0400-----------------------
  1523. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  1524.     DI = 0400h
  1525.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1526.         DWORD    pointer to edit record (see below)
  1527.         DWORD    pointer to string to be edited
  1528.         WORD    initial length of string being edited
  1529.         WORD    maximum length of edited string
  1530.         WORD    row of edit field
  1531.         WORD    leftmost column of edit field
  1532. Return: ???
  1533.     STACK unchanged
  1534.  
  1535. Format of edit record:
  1536. Offset    Size    Description
  1537.  00h    WORD    current length of edit buffer
  1538.  02h    BYTE    flag for special processing on first character
  1539.  03h    BYTE    flags
  1540.         bit 0: tab handling
  1541.  04h    WORD    editing in prompt window?
  1542.  06h    DWORD    pointer to top line of prompt window message
  1543.  0Ah    WORD    length of top line of prompt
  1544.  0Ch    DWORD    pointer to second line of prompt window message
  1545.  10h    WORD    length of second line of prompt
  1546.  12h 80 BYTEs    workspace for editing
  1547.  62h  2 WORDs    line array needed for multi-line editing
  1548.  66h 36 BYTEs    multi-line edit record (see below)
  1549.  8Ah    WORD    displayable columns
  1550.  
  1551. Format of multi-line edit record:
  1552. Offset    Size    Description
  1553.  00h    DWORD    pointer to user-supplied edit buffer
  1554.  04h    WORD    length of edit buffer
  1555.  06h    WORD    current cursor position
  1556.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  1557.  0Ah    WORD    starting column of edit area
  1558.  0Ch    WORD    height of edit area
  1559.  0Eh    WORD    width of edit area
  1560.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  1561.  12h    WORD    number of rows displayable
  1562.  14h    BYTE    cursor column
  1563.  15h    BYTE    01h if buffer has been modified
  1564.  16h    BYTE    first displayable column (ticker fields only)
  1565.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  1566.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  1567.           area is high)
  1568.  1Ch    BYTE    currently marking?
  1569.  1Dh    BYTE    flag
  1570.  1Eh    WORD    offset of mark start
  1571.  20h    WORD    offset of mark end (inclusive)
  1572.  22h    WORD    displayable columns
  1573. --------b-60----DI0401-----------------------
  1574. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  1575.     DI = 0401h
  1576.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1577.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1578.         DWORD    pointer to string to edit
  1579.         WORD    initial length of string being edited
  1580.         WORD    maximum length of edited string
  1581.         DWORD    pointer to first line of prompt
  1582.         WORD    length of first line
  1583.         DWORD    pointer to second line of prompt
  1584.         WORD    length of second line
  1585. Return: ???
  1586.     STACK unchanged
  1587. --------b-60----DI0402-----------------------
  1588. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  1589.     DI = 0402h
  1590.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1591.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1592. Return: ???
  1593.     STACK unchanged
  1594. --------b-60----DI0403-----------------------
  1595. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  1596.     DI = 0403h
  1597.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1598.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  1599.         WORD    keystroke
  1600.         DWORD    pointer to WORD buffer for result code
  1601. Return: result code buffer filled with 0001h if editing complete
  1602.     STACK unchanged
  1603. --------b-60----DI0404-----------------------
  1604. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  1605.     DI = 0404h
  1606.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1607.         DWORD    pointer to ???
  1608.         WORD    ???
  1609.         WORD    ???
  1610.         WORD    ???
  1611.         WORD    ???
  1612.         DWORD    pointer to ???
  1613.         WORD    ???
  1614.         WORD    ???
  1615.         WORD    ???
  1616.         DWORD    pointer to ???
  1617. Return: ???
  1618.     STACK unchanged
  1619. --------b-60----DI0405-----------------------
  1620. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  1621.     DI = 0405h
  1622.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1623.         DWORD    pointer to ???
  1624. Return: ???
  1625.     STACK unchanged
  1626. --------b-60----DI0406-----------------------
  1627. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  1628.     DI = 0406h
  1629.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1630.         DWORD    pointer to ???
  1631.         WORD    ???
  1632. Return: ???
  1633.     STACK unchanged
  1634. --------b-60----DI0407-----------------------
  1635. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  1636.     DI = 0407h
  1637.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1638.         DWORD    pointer to ???
  1639.         DWORD    pointer to ???
  1640. Return: ???
  1641.     STACK unchanged
  1642. --------b-60----DI0408-----------------------
  1643. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  1644.     DI = 0408h
  1645.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1646.         DWORD    pointer to ???
  1647. Return: ???
  1648.     STACK unchanged
  1649. --------b-60----DI0409-----------------------
  1650. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  1651.     DI = 0409h
  1652.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1653.         DWORD    pointer to ???
  1654. Return: ???
  1655.     STACK unchanged
  1656. --------b-60----DI040A-----------------------
  1657. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  1658.     DI = 040Ah
  1659.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1660.         DWORD    pointer to ???
  1661. Return: ???
  1662.     STACK unchanged
  1663. --------b-60----DI040B-----------------------
  1664. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  1665.     DI = 040Bh
  1666.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1667.         DWORD    pointer to ???
  1668.         DWORD    pointer to ???
  1669.         WORD    ???
  1670. Return: ???
  1671.     STACK unchanged
  1672. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1673. --------b-60----DI0500-----------------------
  1674. INT 60 u - HP 95LX System Manager - OPEN FILE
  1675.     DI = 0500h
  1676.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1677.         DWORD    pointer to file state record (see below)
  1678.         DWORD    pointer to filename
  1679.         WORD    length of filename
  1680.         WORD    ???
  1681.         WORD    suppress buffering if nonzero
  1682. Return: AX = status
  1683.     STACK unchanged
  1684. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  1685.  
  1686. Format of file state record:
  1687. Offset    Size    Description
  1688.  00h    WORD    DOS file handle
  1689.  02h    WORD    flags
  1690.         bit 0: buffer contents valid
  1691.         bit 1: buffer is dirty and must be written
  1692.         bit 2: unbuffered I/O
  1693.         bit 3: file is a character device
  1694.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  1695.  08h    DWORD    DOS file offset of start of buffer
  1696.  0Ch    DWORD    effective file offset as seen by caller
  1697.  10h    WORD    number of bytes in file buffer
  1698. ---buffered I/O only---
  1699.  12h 512 BYTEs    file buffer
  1700. --------b-60----DI0501-----------------------
  1701. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  1702.     DI = 0501h
  1703.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1704.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1705.         DWORD    pointer to filename
  1706.         WORD    length of filename
  1707.         WORD    ???
  1708.         WORD    suppress buffering if nonzero
  1709. Return: AX = status
  1710.     STACK unchanged
  1711. SeeAlso: INT 60/DI=0500h
  1712. --------b-60----DI0502-----------------------
  1713. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  1714.     DI = 0502h
  1715.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1716.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1717.         DWORD    pointer to filename
  1718.         WORD    length of filename
  1719.         WORD    ???
  1720.         WORD    suppress buffering if nonzero
  1721. Return: AX = status
  1722.     STACK unchanged
  1723. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  1724. --------b-60----DI0503-----------------------
  1725. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  1726.     DI = 0503h
  1727.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1728.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1729.         DWORD    pointer to filename
  1730.         WORD    length of filename
  1731.         WORD    ???
  1732.         WORD    suppress buffering if nonzero
  1733. Return: AX = status
  1734.     STACK unchanged
  1735. SeeAlso: INT 60/DI=0502h
  1736. --------b-60----DI0504-----------------------
  1737. INT 60 u - HP 95LX System Manager - READ FROM FILE
  1738.     DI = 0504h
  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.         DWORD    pointer to data buffer
  1742.         WORD    number of bytes to read
  1743.         DWORD    pointer to WORD in which to return actual bytes read
  1744. Return: ???
  1745.     STACK unchanged
  1746. SeeAlso: INT 60/DI=0505h
  1747. --------b-60----DI0505-----------------------
  1748. INT 60 - HP 95LX System Manager - WRITE TO FILE
  1749.     DI = 0505h
  1750.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1751.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1752.         DWORD    pointer to data
  1753.         WORD    length of data
  1754. Return: AX = status
  1755.     STACK unchanged
  1756. SeeAlso: INT 60/DI=0504h
  1757. --------b-60----DI0506-----------------------
  1758. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  1759.     DI = 0506h
  1760.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1761.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1762.         WORD    ???
  1763.         WORD    ???
  1764. Return: ???
  1765.     STACK unchanged
  1766. SeeAlso: INT 60/DI=0507h
  1767. --------b-60----DI0507-----------------------
  1768. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  1769.     DI = 0507h "M_TELL"
  1770.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1771.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1772.         DWORD    pointer to DWORD buffer for file position???
  1773. Return: ???
  1774.     STACK unchanged
  1775. SeeAlso: INT 60/DI=0506h
  1776. --------b-60----DI0508-----------------------
  1777. INT 60 u - HP 95LX System Manager - CLOSE FILE
  1778.     DI = 0508h
  1779.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1780.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  1781. Return: ???
  1782.     STACK unchanged
  1783. SeeAlso: INT 60/DI=0500h
  1784. --------b-60----DI0509-----------------------
  1785. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  1786.     DI = 0509h
  1787.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1788.         DWORD    pointer to ???
  1789.         DWORD    pointer to ???
  1790.         WORD    ???
  1791.         WORD    ???
  1792. Return: ???
  1793.     STACK unchanged
  1794. --------b-60----DI050A-----------------------
  1795. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  1796.     DI = 050Ah
  1797.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1798.         DWORD    pointer to ???
  1799.         DWORD    pointer to ???
  1800. Return: ???
  1801.     STACK unchanged
  1802.  
  1803. Format of pattern match control block:
  1804. Offset    Size    Description
  1805.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  1806.  2Bh 80 BYTEs    full path name
  1807.  7Bh    BYTE    offset of last component of filename
  1808.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  1809. --------b-60----DI050B-----------------------
  1810. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  1811.     DI = 050Bh
  1812.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1813.         DWORD    pointer to ???
  1814.         WORD    ???
  1815.         WORD    ???
  1816.         DWORD    pointer to ???
  1817. Return: ???
  1818.     STACK unchanged
  1819.  
  1820. Values returned:
  1821.  0000h nonexistent
  1822.  0001h file
  1823.  0002h directory
  1824.  0003h character device
  1825. --------b-60----DI050C-----------------------
  1826. INT 60 u - HP 95LX System Manager - DELETE FILE
  1827.     DI = 050Ch "M_DELETE"
  1828.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1829.         DWORD    pointer to ???
  1830.         WORD    ???
  1831.         WORD    ???
  1832. Return: ???
  1833.     STACK unchanged
  1834. --------b-60----DI050D-----------------------
  1835. INT 60 u - HP 95LX System Manager - RENAME FILE
  1836.     DI = 050Dh
  1837.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1838.         DWORD    pointer to ???
  1839.         WORD    ???
  1840.         WORD    ???
  1841.         DWORD    pointer to ???
  1842.         WORD    ???
  1843.         WORD    ???
  1844. Return: ???
  1845.     STACK unchanged
  1846. --------b-60----DI050E-----------------------
  1847. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  1848.     DI = 050Eh
  1849.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1850.         WORD    ???
  1851.         DWORD    pointer to ???
  1852.         DWORD    pointer to ???
  1853. Return: ???
  1854.     STACK unchanged
  1855. --------b-60----DI050F-----------------------
  1856. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  1857.     DI = 050Fh
  1858.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1859.         DWORD    pointer to ???
  1860.         WORD    ???
  1861. Return: ???
  1862.     STACK unchanged
  1863. --------b-60----DI0510-----------------------
  1864. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  1865.     DI = 0510h
  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. --------b-60----DI0511-----------------------
  1872. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  1873.     DI = 0511h
  1874.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1875.         DWORD    pointer to ???
  1876.         WORD    ???
  1877.         WORD    ???
  1878. Return: ???
  1879.     STACK unchanged
  1880. --------b-60----DI0512-----------------------
  1881. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  1882.     DI = 0512h
  1883.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1884.         DWORD    pointer to ???
  1885.         WORD    ???
  1886.         WORD    ???
  1887. Return: ???
  1888.     STACK unchanged
  1889. --------b-60----DI0513-----------------------
  1890. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  1891.     DI = 0513h
  1892.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1893.         DWORD    pointer to ??? buffer for current drive
  1894. Return: ???
  1895.     STACK unchanged
  1896. --------b-60----DI0514-----------------------
  1897. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  1898.     DI = 0514h
  1899.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1900.         WORD    new drive
  1901. Return: ???
  1902.     STACK unchanged
  1903. --------b-60----DI0515-----------------------
  1904. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  1905.     DI = 0515h
  1906.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1907.         DWORD    pointer to ???
  1908.         DWORD    pointer to ???
  1909. Return: ???
  1910.     STACK unchanged
  1911. --------b-60----DI0516-----------------------
  1912. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  1913.     DI = 0516h
  1914.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1915.         DWORD    pointer to ???
  1916. Return: ???
  1917.     STACK unchanged
  1918. --------b-60----DI0517-----------------------
  1919. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  1920.     DI = 0517h
  1921.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1922.         DWORD    pointer to ???
  1923.         WORD    ???
  1924.         WORD    ???
  1925.         DWORD    pointer to ??? buffer for file's attributes???
  1926. Return: ???
  1927.     STACK unchanged
  1928. --------b-60----DI0518-----------------------
  1929. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  1930.     DI = 0518h
  1931.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1932.         DWORD    pointer to ???
  1933.         WORD    ???
  1934.         WORD    ???
  1935.         WORD    new attributes???
  1936. Return: ???
  1937.     STACK unchanged
  1938. --------b-60----DI0519-----------------------
  1939. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  1940.     DI = 0519h
  1941.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1942.         DWORD    pointer to ???
  1943.         DWORD    pointer to ???
  1944.         WORD    ???
  1945.         WORD    ???
  1946.         WORD    ???
  1947.         WORD    ???
  1948.         WORD    ???
  1949. Return: ???
  1950.     STACK unchanged
  1951. --------b-60----DI051A-----------------------
  1952. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  1953.     DI = 051Ah
  1954.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1955.         DWORD    pointer to ???
  1956.         DWORD    pointer to ???
  1957. Return: ???
  1958.     STACK unchanged
  1959. --------b-60----DI051B-----------------------
  1960. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  1961.     DI = 051Bh
  1962.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1963.         DWORD    pointer to ???
  1964.         DWORD    pointer to ???
  1965. Return: ???
  1966.     STACK unchanged
  1967. --------b-60----DI051C-----------------------
  1968. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  1969.     DI = 051Ch
  1970.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1971.         DWORD    pointer to ???
  1972.         WORD    ???
  1973. Return: ???
  1974.     STACK unchanged
  1975. --------b-60----DI0600-----------------------
  1976. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  1977.     DI = 0600h
  1978.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1979. Return: ???
  1980.     STACK unchanged
  1981. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  1982. --------b-60----DI0601-----------------------
  1983. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  1984.     DI = 0601h
  1985.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1986. Return: never
  1987.     STACK unchanged
  1988. SeeAlso: INT 21/AH=4Ch,INT 60/DI=0600h
  1989. --------b-60----DI0602-----------------------
  1990. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  1991.     DI = 0602h
  1992.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1993. Return: ???
  1994.     STACK unchanged
  1995. SeeAlso: INT 15/AX=101Bh,INT 60/DI=0603h
  1996. --------b-60----DI0603-----------------------
  1997. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  1998.     DI = 0603h
  1999.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2000. Return: ???
  2001.     STACK unchanged
  2002. SeeAlso: INT 15/AX=101Ch,INT 60/DI=0602h
  2003. --------b-60----DI0604-----------------------
  2004. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  2005.     DI = 0604h
  2006.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2007.         DWORD    pointer to ???
  2008.         WORD    ???
  2009.         WORD    ???
  2010.         DWORD    pointer to ???
  2011. Return: ???
  2012.     STACK unchanged
  2013. --------b-60----DI0605-----------------------
  2014. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  2015.     DI = 0605h
  2016.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2017. Return: ???
  2018.     STACK unchanged
  2019. --------b-60----DI0606-----------------------
  2020. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  2021.     DI = 0606h
  2022.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2023. Return: ???
  2024.     STACK unchanged
  2025. --------b-60----DI0607-----------------------
  2026. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  2027.     DI = 0607h
  2028.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2029.         DWORD    pointer to ???
  2030.         WORD    ???
  2031.         DWORD    pointer to ???
  2032.         WORD    ???
  2033. Return: ???
  2034.     STACK unchanged
  2035. --------b-60----DI0608-----------------------
  2036. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  2037.     DI = 0608h
  2038.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2039.         DWORD    pointer to ???
  2040. Return: ???
  2041.     STACK unchanged
  2042. --------b-60----DI0609-----------------------
  2043. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  2044.     DI = 0609h
  2045.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2046.         DWORD    pointer to ???
  2047. Return: DX:AX -> ???
  2048.     STACK unchanged
  2049. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2050. --------b-60----DI0700-----------------------
  2051. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  2052.     DI = 0700h
  2053.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2054. Return: ???
  2055.     STACK unchanged
  2056. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  2057.  
  2058. Values for error code:
  2059.  0000h    successful
  2060.  FFF8h transfer request out of bounds
  2061.  FFF9h no such representation
  2062.  FFFAh no representation open
  2063.  FFFBh a representation is already open
  2064.  FFFCh representation already exists
  2065.  FFFDh heap allocation failure
  2066.  FFFEh clipboard not open
  2067.  FFFFh clipboard access denied
  2068. --------b-60----DI0701-----------------------
  2069. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  2070.     DI = 0701h
  2071.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2072. Return: ???
  2073.     STACK unchanged
  2074. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  2075. --------b-60----DI0702-----------------------
  2076. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  2077.     DI = 0702h
  2078.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2079.         DWORD    pointer to ???
  2080. Return: ???
  2081.     STACK unchanged
  2082. SeeAlso: INT 60/DI=0700h
  2083. --------b-60----DI0704-----------------------
  2084. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  2085.     DI = 0704h
  2086.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2087.         DWORD    pointer to ???
  2088. Return: ???
  2089.     STACK unchanged
  2090. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  2091. --------b-60----DI0705-----------------------
  2092. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  2093.     DI = 0705h
  2094.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2095. Return: ???
  2096.     STACK unchanged
  2097. SeeAlso: INT 60/DI=0704h
  2098. --------b-60----DI0706-----------------------
  2099. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  2100.     DI = 0706h
  2101.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2102.         WORD    ???
  2103.         DWORD    pointer to ???
  2104.         DWORD    pointer to ???
  2105. Return: ???
  2106.     STACK unchanged
  2107. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  2108. --------b-60----DI0707-----------------------
  2109. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  2110.     DI = 0707h
  2111.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2112.         DWORD    pointer to ???
  2113.         DWORD    pointer to ???
  2114.         DWORD    pointer to ???
  2115. Return: ???
  2116.     STACK unchanged
  2117. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  2118. --------b-60----DI0708-----------------------
  2119. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  2120.     DI = 0708h
  2121.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2122.         DWORD    pointer to data to be written???
  2123.         WORD    length of data???
  2124. Return: ???
  2125.     STACK unchanged
  2126. SeeAlso: INT 60/DI=0709h
  2127. --------b-60----DI0709-----------------------
  2128. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  2129.     DI = 0709h
  2130.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2131.         WORD    ???
  2132.         WORD    ???
  2133.         DWORD    pointer to buffer for data???
  2134.         WORD    length of buffer???
  2135. Return: ???
  2136.     STACK unchanged
  2137. SeeAlso: INT 60/DI=0708h
  2138. --------b-60----DI0800-----------------------
  2139. INT 60 u - HP 95LX System Manager - BEEP
  2140.     DI = 0800h
  2141.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2142. Return: ???
  2143.     STACK unchanged
  2144. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  2145. --------b-60----DI0801-----------------------
  2146. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  2147.     DI = 0801h
  2148.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2149. Return: ???
  2150.     STACK unchanged
  2151. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  2152. --------b-60----DI0802-----------------------
  2153. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  2154.     DI = 0802h
  2155.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2156.         WORD    pattern number (00h-06h)
  2157. Return: ???
  2158.     STACK unchanged
  2159. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  2160. --------b-60----DI0803-----------------------
  2161. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  2162.     DI = 0803h
  2163.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2164. Return: ???
  2165.     STACK unchanged
  2166. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  2167. --------b-60----DI0900-----------------------
  2168. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  2169.     DI = 0900h
  2170.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2171.         WORD    size of block in bytes
  2172. Return: AX -> memory block
  2173.     STACK unchanged
  2174. Note:    System Manager-compliant applications are always small-model (64K code,
  2175.       64K data)
  2176. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  2177. --------b-60----DI0902-----------------------
  2178. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  2179.     DI = 0902h
  2180.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2181.         WORD    offset of memory block???
  2182. Return: ???
  2183.     STACK unchanged
  2184. Note:    System Manager-compliant applications are always small-model (64K code,
  2185.       64K data)
  2186. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  2187. --------b-60----DI0903-----------------------
  2188. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  2189.     DI = 0903h
  2190.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2191.         WORD    size of block in bytes???
  2192. Return: AX -> memory block???
  2193.     STACK unchanged
  2194. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  2195. --------b-60----DI0904-----------------------
  2196. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  2197.     DI = 0904h
  2198.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2199.         WORD    segment of memory block???
  2200. Return: AX -> ???
  2201.     STACK unchanged
  2202. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  2203. --------b-60----DI0B00-----------------------
  2204. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  2205.     DI = 0B00h
  2206.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2207.         DWORD    pointer to ???
  2208. Return: ???
  2209.     STACK unchanged
  2210. --------b-60----DI0B01-----------------------
  2211. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  2212.     DI = 0B01h
  2213.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2214.         DWORD    pointer to ???
  2215. Return: ???
  2216.     STACK unchanged
  2217. --------b-60----DI0B02-----------------------
  2218. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  2219.     DI = 0B02h
  2220.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2221.         DWORD    pointer to ???
  2222. Return: ???
  2223.     STACK unchanged
  2224. --------b-60----DI0B03-----------------------
  2225. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  2226.     DI = 0B03h
  2227.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2228.         WORD    ???
  2229. Return: ???
  2230.     STACK unchanged
  2231. --------b-60----DI0B04-----------------------
  2232. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  2233.     DI = 0B04h
  2234.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2235.         DWORD    pointer to alarm record???
  2236.         WORD    ???
  2237. Return: ???
  2238.     STACK unchanged
  2239.  
  2240. Format of alarm record:
  2241. Offset    Size    Description
  2242.  00h    BYTE    hour
  2243.  01h    BYTE    minute
  2244.  02h    BYTE    second
  2245.  03h    BYTE    unused padding
  2246.  04h    WORD    rescheduling interval, in seconds
  2247.  06h    BYTE    are seconds significant?
  2248.  07h    BYTE    alarm sound
  2249.  08h 40 BYTEs    message displayed when alarm activates
  2250.  30h    BYTE    task ID of owner
  2251.  31h    BYTE    application's own use for sub-class
  2252.  32h  4 BYTEs    application's own use for private data
  2253. --------b-60----DI0B05-----------------------
  2254. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  2255.     DI = 0B05h
  2256.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2257.         DWORD    pointer to ???
  2258. Return: ???
  2259.     STACK unchanged
  2260. --------b-60----DI0B06-----------------------
  2261. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  2262.     DI = 0B06h
  2263.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2264.         DWORD    pointer to ???
  2265.         DWORD    pointer to ???
  2266.         DWORD    pointer to ???
  2267. Return: ???
  2268.     STACK unchanged
  2269. --------b-60----DI0B07-----------------------
  2270. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  2271.     DI = 0B07h
  2272.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2273.         DWORD    pointer to ???
  2274. Return: ???
  2275.     STACK unchanged
  2276. --------b-60----DI0B08-----------------------
  2277. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  2278.     DI = 0B08h
  2279.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2280.         WORD    timestamp format
  2281.             bits 1-0:
  2282.                 00 date only
  2283.                 01 time only
  2284.                 10 date and time
  2285.                 11 day and date
  2286.             bit 4: supply am/pm
  2287.             bit 5: supply seconds
  2288.             bit 6: show year
  2289.             bit 7: four-digit year
  2290.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  2291.         WORD    column
  2292. Return: ???
  2293.     STACK unchanged
  2294. --------b-60----DI0B09-----------------------
  2295. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  2296.     DI = 0B09h
  2297.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2298.         DWORD    pointer to ???
  2299.         DWORD    pointer to ???
  2300. Return: ???
  2301.     STACK unchanged
  2302. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  2303.  
  2304. Format of system settings:
  2305. Offset    Size    Description
  2306.  00h    WORD    country code
  2307.  02h    WORD    speaker volume (00h-03h or FFh for off)
  2308.  04h    WORD    contrast level (00h-0Fh)
  2309.  06h    WORD    week start (00h Sunday, 01h Monday)
  2310.  08h    WORD    punctuation format
  2311.         code    decimal    arg    thousands
  2312.         00h    .    ,    ,
  2313.         01h    ,    .    .
  2314.         02h    .    ;    ;
  2315.         03h    ,    ;    .
  2316.         04h    .    ,    " "
  2317.         05h    ,    .    " "
  2318.         06h    .    ;    " "
  2319.         07h    ,    ;    " "
  2320.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  2321.  0Ch    WORD    current date format
  2322.         00h dd-mmm-yy
  2323.         01h dd-mmm
  2324.         02h mmm-yy
  2325.         03h mm/dd/yy
  2326.         04h dd/mm/yy
  2327.         05h dd.mm.yy
  2328.         06h yy-mm-dd
  2329.         07h mm/dd
  2330.         08h dd/mm
  2331.         09h dd.mm
  2332.         0Ah mm-dd
  2333.  0Eh    WORD    current time format
  2334.         00h HH:MM:SS am/pm
  2335.         01h HH:MM am/pm
  2336.         02h HH:MM:SS
  2337.         03h HH.MM.SS
  2338.         04h HH,MM,SS
  2339.         05h HHhMMmSSs
  2340.         06h HH:MM
  2341.         07h HH.MM
  2342.         08h HH,MM
  2343.         09h HHhMMm
  2344.  10h    WORD    collating sequence
  2345.         00h numbers first, 01h letters first, 02h ASCII
  2346.  12h 80 BYTEs    name of picture file
  2347.  62h 30 BYTEs    name
  2348.  80h 30 BYTEs    title
  2349.  9Eh 28 BYTEs    company name
  2350.  BAh    WORD    number of languages
  2351.  BCh  6 BYTEs    available languages
  2352.  C2h 66 BYTEs    language menu
  2353. 104h  2 BYTEs    ASCIZ date separator
  2354. 106h  2 BYTEs    ASCIZ time separator
  2355. 108h    BYTE    date order
  2356. 109h    BYTE    use 24 hour time?
  2357. 10Ah 16 BYTEs    currency string
  2358. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  2359. 11Ch    WORD    keyboard (see below)
  2360. 11Eh    WORD    printer baud rate
  2361.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  2362. 120h    WORD    printer driver code
  2363.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  2364. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  2365. 124h    WORD    system manager interrupt (60h by default)
  2366. 126h    WORD    code page (01h CP850, 02h CP437)
  2367. 128h    WORD    active exit key
  2368. 12Ah    WORD    active menu key
  2369. 12Ch    WORD    active CHAR key toggle
  2370. 12Eh  6 BYTEs    alarm
  2371.  
  2372. Values for keyboard:
  2373.     0001h Belgium
  2374.     0002h French Canadian
  2375.     0004h Denmark
  2376.     0008h Finland
  2377.     0010h French
  2378.     0020h Finland
  2379.     0040h Italy
  2380.     0080h Netherlands
  2381.     0100h Norway
  2382.     0200h Portugal
  2383.     0400h Spain
  2384.     0800h Sweden
  2385.     1000h Swiss French
  2386.     2000h Swiss German
  2387.     4000h United Kingdom
  2388.     8000h USA
  2389. --------b-60----DI0B0A-----------------------
  2390. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  2391.     DI = 0B0Ah
  2392.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2393.         DWORD    pointer to ???
  2394.         DWORD    pointer to ???
  2395. Return: ???
  2396.     STACK unchanged
  2397. SeeAlso: INT 60/DI=0B09h
  2398. --------b-60----DI0B0B-----------------------
  2399. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  2400.     DI = 0B0Bh
  2401.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2402.         DWORD    pointer to ???
  2403. Return: ???
  2404.     STACK unchanged
  2405. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  2406. --------b-60----DI0B0C-----------------------
  2407. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  2408.     DI = 0B0Ch
  2409.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2410.         DWORD    pointer to ???
  2411. Return: ???
  2412.     STACK unchanged
  2413. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  2414. --------b-60----DI0B0D-----------------------
  2415. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  2416.     DI = 0B0Dh
  2417.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2418.         DWORD    pointer to ???
  2419.         DWORD    pointer to ???
  2420.         DWORD    pointer to ???
  2421. Return: ???
  2422.     STACK unchanged
  2423. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  2424. --------b-60----DI0B0E-----------------------
  2425. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  2426.     DI = 0B0Eh
  2427.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2428.         WORD    ???
  2429.         WORD    ???
  2430.         WORD    ???
  2431.         DWORD    pointer to ???
  2432.         DWORD    pointer to ???
  2433. Return: DX:AX -> ???
  2434.     STACK unchanged
  2435. --------b-60----DI0B0F-----------------------
  2436. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  2437.     DI = 0B0Fh
  2438.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2439. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  2440.     STACK unchanged
  2441. SeeAlso: INT 60/DI=0B09h
  2442. --------b-60----DI0B10-----------------------
  2443. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  2444.     DI = 0B10h
  2445.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2446.         WORD    ???
  2447.         DWORD    pointer to ???
  2448.         DWORD    pointer to ???
  2449. Return: ???
  2450.     STACK unchanged
  2451. --------b-60----DI0B11-----------------------
  2452. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  2453.     DI = 0B11h
  2454.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2455.         WORD    ???
  2456.         DWORD    pointer to ???
  2457.         DWORD    pointer to ???
  2458. Return: ???
  2459.     STACK unchanged
  2460. --------b-60----DI0B12-----------------------
  2461. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  2462.     DI = 0B12h
  2463.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2464.         WORD    new parsing rule
  2465.             01h day-month-year
  2466.             02h month-day-year
  2467.             03h year-month-day
  2468.             04h "DMYO"
  2469.             05h "MDYO"
  2470.             OR with 08h to get any year
  2471. Return: ???
  2472.     STACK unchanged
  2473. SeeAlso: INT 60/DI=0B13h
  2474. --------b-60----DI0B13-----------------------
  2475. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  2476.     DI = 0B13h
  2477.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2478.         WORD    new parsing rule
  2479.             01h HH:MM:SS (am/pm)
  2480.             02h HH:MM:SS (24hr)
  2481.             03h HHMM:SS (24hr)
  2482.             04h HH:MM:SS.hh (24hr)
  2483.             05h HH:MM (am/pm)
  2484.             06h HH:MM (24hr)
  2485.             07h HHMM (24hr)
  2486. Return: ???
  2487.     STACK unchanged
  2488. SeeAlso: INT 60/DI=0B12h
  2489. --------b-60----DI0B14-----------------------
  2490. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  2491.     DI = 0B14h
  2492.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2493. Return: ???
  2494.     STACK unchanged
  2495. --------b-60----DI0B15-----------------------
  2496. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  2497.     DI = 0B15h
  2498.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2499.         WORD    ???
  2500. Return: ???
  2501.     STACK unchanged
  2502. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2503. --------b-60----DI0C00-----------------------
  2504. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  2505.     DI = 0C00h
  2506.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2507. Return: ???
  2508.     STACK unchanged
  2509. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  2510. --------b-60----DI0C01-----------------------
  2511. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  2512.     DI = 0C01h
  2513.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2514. Return: ???
  2515.     STACK unchanged
  2516. Note:    relinquishes control of printer
  2517. SeeAlso: INT 60/DI=0C00h
  2518. --------b-60----DI0C02-----------------------
  2519. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  2520.     DI = 0C02h
  2521.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2522.         DWORD    pointer to data to be written
  2523.         WORD    length of data
  2524. Return: ???
  2525.     STACK unchanged
  2526. SeeAlso: INT 60/DI=0C00h
  2527. --------b-60----DI0C03-----------------------
  2528. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  2529.     DI = 0C03h
  2530.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2531. Return: ???
  2532.     STACK unchanged
  2533. SeeAlso: INT 60/DI=0C00h
  2534. --------b-60----DI0C04-----------------------
  2535. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  2536.     DI = 0C04h
  2537.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2538.         WORD    ???
  2539.         DWORD    pointer to ???
  2540. Return: ???
  2541.     STACK unchanged
  2542. --------b-60----DI0C05-----------------------
  2543. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  2544.     DI = 0C05h
  2545.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2546.         WORD    ???
  2547.         DWORD    pointer to ???
  2548. Return: ???
  2549.     STACK unchanged
  2550. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2551. --------b-60----DI0E00-----------------------
  2552. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  2553.     DI = 0E00h
  2554.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2555.         DWORD    pointer to ???
  2556. Return: ???
  2557.     STACK unchanged
  2558. SeeAlso: INT 60/DI=0E01h,INT 60/DI=0E02h
  2559.  
  2560. Values for error code:
  2561.  0000h    successful
  2562.  FFF1h "E_BUSY"
  2563.  FFF2h timeout
  2564.  FFF3h framing error
  2565.  FFF4h parity error
  2566.  FFF5h overrun error
  2567.  FFF6h "E_EMPTY"
  2568.  FFF7h "E_CONECT"
  2569.  FFF8h not open
  2570.  FFF9h out of memory
  2571.  FFFAh buffer overflow
  2572.  FFFBh "E_NOFIT"
  2573.  FFFCh unsupported
  2574.  FFFDh "E_IVOPR"
  2575.  FFFEh "E_IVCHN"
  2576.  FFFFh "E_REOPEN"
  2577. --------b-60----DI0E01-----------------------
  2578. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  2579.     DI = 0E01h
  2580.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2581.         DWORD    pointer to WORD buffer for comm channel handle
  2582.         WORD    communications line number (01h-04h)
  2583. Return: ???
  2584.     STACK unchanged
  2585. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  2586. --------b-60----DI0E02-----------------------
  2587. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  2588.     DI = 0E02h
  2589.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2590.         WORD    comm channel handle
  2591. Return: ???
  2592.     STACK unchanged
  2593. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  2594. --------b-60----DI0E03-----------------------
  2595. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  2596.     DI = 0E03h
  2597.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2598.         WORD    ???
  2599. Return: ???
  2600.     STACK unchanged
  2601. --------b-60----DI0E04-----------------------
  2602. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  2603.     DI = 0E04h
  2604.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2605.         WORD    ???
  2606.         WORD    ???
  2607. Return: ???
  2608.     STACK unchanged
  2609. --------b-60----DI0E05-----------------------
  2610. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  2611.     DI = 0E05h
  2612.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2613.         WORD    ???
  2614.         DWORD    pointer to ???
  2615. Return: ???
  2616.     STACK unchanged
  2617. --------b-60----DI0E06-----------------------
  2618. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  2619.     DI = 0E06h
  2620.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2621.         WORD    comm channel handle
  2622.         WORD    reset options
  2623.             bit 0: reset line
  2624.             bit 1: flush transmit buffer
  2625.             bit 2: flush receive buffer
  2626.             bit 3: reset modem
  2627.             bit 4: reset receiver's ^S state
  2628.             bit 5: reset transmitter's ^S state
  2629. Return: ???
  2630.     STACK unchanged
  2631. --------b-60----DI0E07-----------------------
  2632. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  2633.     DI = 0E07h
  2634.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2635.         WORD    ???
  2636. Return: ???
  2637.     STACK unchanged
  2638. --------b-60----DI0E08-----------------------
  2639. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  2640.     DI = 0E08h
  2641.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2642.         WORD    comm channel handle
  2643.         DWORD    pointer to data to be sent
  2644.         WORD    option flags
  2645.             bit 0: send partial buffer
  2646.             bit 1: turn on receiver after sending
  2647.         DWORD    pointer to WORD containing length of data to be sent
  2648. Return: length WORD updated to contain number of bytes actually sent???
  2649.     STACK unchanged
  2650. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  2651. --------b-60----DI0E09-----------------------
  2652. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  2653.     DI = 0E09h
  2654.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2655.         WORD    ???
  2656.         DWORD    pointer to ??? WORD
  2657.         DWORD    pointer to ??? WORD
  2658. Return: ???
  2659.     STACK unchanged
  2660. SeeAlso: INT 60/DI=0E0Ah
  2661. --------b-60----DI0E0A-----------------------
  2662. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  2663.     DI = 0E0Ah
  2664.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2665.         WORD    comm channel handle
  2666.         DWORD    pointer to WORD to get receive buffer size
  2667.         DWORD    pointer to WORD to get free bytes in receive buffer
  2668. Return: ???
  2669.     STACK unchanged
  2670. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  2671. --------b-60----DI0E0B-----------------------
  2672. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  2673.     DI = 0E0Bh
  2674.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2675.         WORD    comm channel handle
  2676.         DWORD    pointer to data buffer
  2677.         DWORD    pointer to WORD (input) length of data buffer
  2678.                     (output) number of bytes received
  2679. Return: ???
  2680.     STACK unchanged
  2681. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  2682. --------b-60----DI0E0C-----------------------
  2683. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  2684.     DI = 0E0Ch
  2685.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2686.         WORD    ???
  2687.         DWORD    pointer to ???
  2688.         WORD    ???
  2689. Return: ???
  2690.     STACK unchanged
  2691. --------b-60----DI0E0D-----------------------
  2692. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  2693.     DI = 0E0Dh
  2694.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2695.         WORD    ???
  2696.         DWORD    pointer to ???
  2697.         WORD    ???
  2698. Return: ???
  2699.     STACK unchanged
  2700. --------b-60----DI0E0E-----------------------
  2701. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  2702.     DI = 0E0Eh
  2703.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2704.         WORD    ???
  2705.         WORD    ???
  2706. Return: ???
  2707.     STACK unchanged
  2708. --------b-60----DI0E0F-----------------------
  2709. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  2710.     DI = 0E0Fh
  2711.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2712.         WORD    ???
  2713. Return: ???
  2714.     STACK unchanged
  2715. --------b-60----DI0E10-----------------------
  2716. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  2717.     DI = 0E10h
  2718.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2719.         WORD    ???
  2720. Return: ???
  2721.     STACK unchanged
  2722. --------b-60----DI0E11-----------------------
  2723. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  2724.     DI = 0E11h
  2725.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2726.         WORD    ???
  2727.         WORD    ???
  2728. Return: ???
  2729.     STACK unchanged
  2730. --------b-60----DI0E12-----------------------
  2731. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  2732.     DI = 0E12h
  2733.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2734.         WORD    ???
  2735. Return: ???
  2736.     STACK unchanged
  2737. --------b-60----DI0E13-----------------------
  2738. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  2739.     DI = 0E13h
  2740.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2741.         WORD    ???
  2742. Return: ???
  2743.     STACK unchanged
  2744. --------b-60----DI0E14-----------------------
  2745. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  2746.     DI = 0E14h
  2747.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2748.         WORD    comm channel handle
  2749.         DWORD    pointer to comm settings (see below)
  2750. Return: ???
  2751.     STACK unchanged
  2752. SeeAlso: INT 60/DI=0E15h
  2753.  
  2754. Format of comm settings:
  2755. Offset    Size    Description
  2756.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  2757.  01h    WORD    baud rate divisor (115200/baud_rate)
  2758.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  2759.  04h    BYTE    stop bits (00h one, 04h two)
  2760.  05h    BYTE    data bits - 5
  2761.  06h    BYTE    software handshake
  2762.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  2763.  07h    BYTE    infrared (01h off, 02h on)
  2764.  08h    BYTE    duplex (01h half, 02h full)
  2765.  09h    BYTE    echo (01h echo, 02h no echo)
  2766. --------b-60----DI0E15-----------------------
  2767. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  2768.     DI = 0E15h
  2769.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2770.         WORD    ???
  2771.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  2772. Return: ???
  2773.     STACK unchanged
  2774. SeeAlso: INT 60/DI=0E14h
  2775. --------b-60----DI0E16-----------------------
  2776. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  2777.     DI = 0E16h
  2778.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2779.         WORD    ???
  2780.         WORD    ???
  2781.         WORD    ???
  2782.         WORD    ???
  2783.         WORD    ???
  2784. Return: ???
  2785.     STACK unchanged
  2786. --------b-60----DI0E17-----------------------
  2787. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  2788.     DI = 0E17h
  2789.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2790.         WORD    ???
  2791. Return: ???
  2792.     STACK unchanged
  2793. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2794. --------b-60----DI0F00-----------------------
  2795. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  2796.     DI = 0F00h
  2797.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2798.         WORD    ???
  2799.         DWORD    pointer to ???
  2800.         WORD    ???
  2801.         DWORD    pointer to ???
  2802. Return: ???
  2803.     STACK unchanged
  2804. --------b-60----DI0F01-----------------------
  2805. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  2806.     DI = 0F01h
  2807.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2808.         DWORD    pointer to ASCIZ title string
  2809. Return: ???
  2810.     STACK unchanged
  2811. --------b-60----DI0F02-----------------------
  2812. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  2813.     DI = 0F02h
  2814.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2815.         DWORD    pointer to ???
  2816. Return: ???
  2817.     STACK unchanged
  2818. --------b-60----DI0F03-----------------------
  2819. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  2820.     DI = 0F03h
  2821.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2822.         DWORD    pointer to first line of message
  2823.         WORD    length of first line
  2824.         DWORD    pointer to second line of message
  2825.         WORD    length of second line
  2826. Return: ???
  2827.     STACK unchanged
  2828. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  2829. --------b-60----DI0F04-----------------------
  2830. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  2831.     DI = 0F04h
  2832.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2833. Return: ???
  2834.     STACK unchanged
  2835. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  2836. --------b-60----DI0F05-----------------------
  2837. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  2838.     DI = 0F05h
  2839.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2840. Return: DX:AX -> ???
  2841.     STACK unchanged
  2842. --------b-60----DI0F06-----------------------
  2843. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  2844.     DI = 0F06h
  2845.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2846. Return: DX:AX -> ???
  2847.     STACK unchanged
  2848. --------b-60----DI0F07-----------------------
  2849. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  2850.     DI = 0F07h
  2851.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2852. Return: DX:AX -> ???
  2853.     STACK unchanged
  2854. --------b-60----DI0F08-----------------------
  2855. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  2856.     DI = 0F08h
  2857.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2858.         ???
  2859. Return: ???
  2860.     STACK unchanged
  2861. --------b-60----DI0F09-----------------------
  2862. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  2863.     DI = 0F09h
  2864.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2865.         DWORD    pointer to first line of message
  2866.         WORD    length of first line
  2867.         DWORD    pointer to second line of message
  2868.         WORD    length of second line
  2869.         DWORD    pointer to third line of message
  2870.         WORD    length of third line
  2871. Return: ???
  2872.     STACK unchanged
  2873. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  2874. --------b-60----DI0F0A-----------------------
  2875. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  2876.     DI = 0F0Ah
  2877.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2878. Return: ???
  2879.     STACK unchanged
  2880. SeeAlso: INT 60/DI=0F0Bh
  2881. --------b-60----DI0F0B-----------------------
  2882. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  2883.     DI = 0F0Bh
  2884.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2885. Return: ???
  2886.     STACK unchanged
  2887. SeeAlso: INT 60/DI=0F0Ah
  2888. --------b-60----DI0F0C-----------------------
  2889. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  2890.     DI = 0F0Ch
  2891.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2892.         ???
  2893. Return: ???
  2894.     STACK unchanged
  2895. --------b-60----DI0F0D-----------------------
  2896. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  2897.     DI = 0F0Dh
  2898.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2899.         DWORD    pointer to ???
  2900. Return: DX:AX -> ???
  2901.     STACK unchanged
  2902. --------b-60----DI0F0E-----------------------
  2903. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  2904.     DI = 0F0Eh
  2905.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2906.         DWORD    pointer to ???
  2907. Return: DX:AX -> ???
  2908.     STACK unchanged
  2909. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2910. --------b-60----DI1005-----------------------
  2911. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  2912.     DI = 1005h
  2913.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2914. Return: ???
  2915.     STACK unchanged
  2916. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  2917. --------b-60----DI1200-----------------------
  2918. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  2919.     DI = 1200h
  2920.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2921.         DWORD    pointer to ???
  2922. Return: ???
  2923.     STACK unchanged
  2924. --------b-60----DI1201-----------------------
  2925. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  2926.     DI = 1201h
  2927.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2928.         WORD    ???
  2929. Return: DX:AX -> ???
  2930.     STACK unchanged
  2931. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2932. --------b-60----DI1202-----------------------
  2933. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  2934.     DI = 1202h
  2935.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2936. Return: DX:AX -> ???
  2937.     STACK unchanged
  2938. --------b-60----DI1203-----------------------
  2939. INT 60 u - HP 95LX System Manager - "INIT_SYSGMR_RSRCS"
  2940.     DI = 1203h
  2941.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2942. Return: ???
  2943.     STACK unchanged
  2944. --------b-60----DI1300-----------------------
  2945. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  2946.     DI = 1300h
  2947.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2948.         DWORD    pointer to ???
  2949.         DWORD    pointer to ???
  2950.         WORD    ???
  2951. Return: ???
  2952.     STACK unchanged
  2953. --------b-60----DI1301-----------------------
  2954. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  2955.     DI = 1301h
  2956.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2957.         DWORD    pointer to ???
  2958. Return: ???
  2959.     STACK unchanged
  2960. --------b-60----DI1302-----------------------
  2961. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  2962.     DI = 1302h
  2963.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2964.         DWORD    pointer to ???
  2965.         WORD    ???
  2966. Return: ???
  2967.     STACK unchanged
  2968. --------b-60----DI1303-----------------------
  2969. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  2970.     DI = 1303h
  2971.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2972.         DWORD    pointer to ???
  2973. Return: ???
  2974.     STACK unchanged
  2975. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2976. --------b-60----DI1400-----------------------
  2977. INT 60 u - HP 95LX System Manager - "M_ColInit"
  2978.     DI = 1400h
  2979.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2980. Return: AX = ???
  2981.     STACK unchanged
  2982. --------b-60----DI1401-----------------------
  2983. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  2984.     DI = 1401h
  2985.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2986.         DWORD    pointer to ???
  2987.         WORD    ???
  2988.         DWORD    pointer to ???
  2989.         WORD    ???
  2990. Return: ???
  2991.     STACK unchanged
  2992. --------b-60----DI1402-----------------------
  2993. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  2994.     DI = 1402h
  2995.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2996.         ???
  2997. Return: ???
  2998.     STACK unchanged
  2999. --------b-60----DI1403-----------------------
  3000. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  3001.     DI = 1403h
  3002.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3003.         ???
  3004. Return: ???
  3005.     STACK unchanged
  3006. --------b-60----DI1404-----------------------
  3007. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  3008.     DI = 1404h
  3009.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3010.         DWORD    pointer to ???
  3011.         WORD    ???
  3012. Return: ???
  3013.     STACK unchanged
  3014. --------b-60----DI1405-----------------------
  3015. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  3016.     DI = 1405h
  3017.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3018.         DWORD    pointer to ???
  3019.         WORD    ???
  3020.         DWORD    pointer to ???
  3021.         WORD    ???
  3022.         WORD    ???
  3023. Return: ???
  3024.     STACK unchanged
  3025. --------b-60----DI1406-----------------------
  3026. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  3027.     DI = 1406h
  3028.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3029.         DWORD    pointer to ???
  3030.         WORD    ???
  3031. Return: ???
  3032.     STACK unchanged
  3033. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3034. --------b-60----DI1500-----------------------
  3035. INT 60 u - HP 95LX System Manager - "GrDispInit"
  3036.     DI = 1500h
  3037.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3038.         ???
  3039. Return: ???
  3040.     STACK unchanged
  3041. --------b-60----DI1501-----------------------
  3042. INT 60 u - HP 95LX System Manager - "GrDispClear"
  3043.     DI = 1501h
  3044.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3045.         ???
  3046. Return: ???
  3047.     STACK unchanged
  3048. --------b-60----DI1502-----------------------
  3049. INT 60 u - HP 95LX System Manager - "GrDispDot"
  3050.     DI = 1502h
  3051.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3052.         ???
  3053. Return: ???
  3054.     STACK unchanged
  3055. --------b-60----DI1503-----------------------
  3056. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  3057.     DI = 1503h
  3058.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3059.         ???
  3060. Return: ???
  3061.     STACK unchanged
  3062. --------b-60----DI1504-----------------------
  3063. INT 60 u - HP 95LX System Manager - "GrDispFill"
  3064.     DI = 1504h
  3065.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3066.         ???
  3067. Return: ???
  3068.     STACK unchanged
  3069. --------b-60----DI1505-----------------------
  3070. INT 60 u - HP 95LX System Manager - "GrDispRead"
  3071.     DI = 1505h
  3072.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3073.         ???
  3074. Return: ???
  3075.     STACK unchanged
  3076. --------b-60----DI1506-----------------------
  3077. INT 60 u - HP 95LX System Manager - "GrDispString"
  3078.     DI = 1506h
  3079.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3080.         ???
  3081. Return: ???
  3082.     STACK unchanged
  3083. --------b-60----DI1507-----------------------
  3084. INT 60 u - HP 95LX System Manager - "GrDispPan"
  3085.     DI = 1507h
  3086.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3087.         ???
  3088. Return: ???
  3089.     STACK unchanged
  3090. --------b-60----DI1508-----------------------
  3091. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  3092.     DI = 1508h
  3093.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3094.         ???
  3095. Return: ???
  3096.     STACK unchanged
  3097. --------b-60----DI1509-----------------------
  3098. INT 60 u - HP 95LX System Manager - "GrDispSave"
  3099.     DI = 1509h
  3100.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3101.         ???
  3102. Return: ???
  3103.     STACK unchanged
  3104. --------b-60----DI150A-----------------------
  3105. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  3106.     DI = 150Ah
  3107.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3108.         ???
  3109. Return: ???
  3110.     STACK unchanged
  3111. --------b-60----DI150B-----------------------
  3112. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  3113.     DI = 150Bh
  3114.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3115.         ???
  3116. Return: ???
  3117.     STACK unchanged
  3118. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3119. --------b-60----DI1604-----------------------
  3120. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  3121.     DI = 1604h
  3122.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  3123.         ???
  3124. Return: ???
  3125.     STACK unchanged
  3126. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  3127. --------G-6000-------------------------------
  3128. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  3129.     AH = 00h
  3130. Return: AX = 0000h    profiling is off
  3131.         otherwise profiling is on
  3132. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3133. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  3134. --------G-6000-------------------------------
  3135. INT 60 - MDEBUG - GET STATUS
  3136.     AH = 00h
  3137.     DS:SI -> password or a null byte
  3138. Return: AX = return code
  3139.         FFFEh password is invalid
  3140.         FFFDh display mode is invalid
  3141.        else successful
  3142.         ES = value of the monitor register SE
  3143.         DI = value of the monitor register OF
  3144.         CH = monitor color
  3145.         CL = interpreter color
  3146.         BH = monitor start line
  3147.         BL = interpreter start line
  3148.         AH = makecode of the hotkey
  3149.         AL = ASCII code of the hotkey
  3150.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  3151.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  3152.         DH = basic process number for the communication with drivers
  3153.             process number for the display driver, DH+1 = process
  3154.             number for the command driver(s)
  3155.     DS:SI -> MDEBUG identification table
  3156. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  3157.       Schemmer, including a memory monitor, an interpreter, and a
  3158.       disassembler
  3159. Notes:    MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  3160.       through INT 67; the interrupt handler is preceded by the signature
  3161.       "USERINT" and is not chained
  3162.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  3163.       passwords are active; enough stack space must be provided for an
  3164.       INT 10h call (which MDEBUG uses while prompting for the password)
  3165. SeeAlso: AH=02h"MDEBUG"
  3166.  
  3167. Format of MDEBUG identification table:
  3168. Offset    Size    Description
  3169.  -2    WORD    entry offset
  3170.  00h    WORD    CS of MDEBUG
  3171.  02h    DWORD    old INT 08h vector
  3172.  06h    DWORD    old INT 09h vector
  3173.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  3174.  0Eh    BYTE    length of version string
  3175.  0Fh  N BYTEs    version string
  3176. --------G-6001-------------------------------
  3177. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  3178.     AH = 01h
  3179.     DS:SI -> password or a null byte
  3180. Return: AX = return code
  3181.         FFFEh password is invalid
  3182.         FFFDh display mode is invalid
  3183.        else successful
  3184.         ES:DI point to the help registers of MDEBUG
  3185.            ES:DI-02h  -> R0 (WORD)
  3186.            ES:DI      -> R1 (WORD)
  3187.            ES:DI+02h  -> R2 (WORD)
  3188.            ES:DI+04h  -> R3 (WORD)
  3189.            ...
  3190.            ES:DI+0Eh  -> R8 (WORD)
  3191. --------G-6001-------------------------------
  3192. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  3193.     AH = 01h
  3194. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3195. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  3196. --------N-6001FF-----------------------------
  3197. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  3198.     AX = 01FFh
  3199.     BX = handle returned by function 02h
  3200. Return: CF set on error
  3201.         DH = error code (see below)
  3202.     CF clear if successful
  3203.         BX = version
  3204.         CH = network interface class (see below)
  3205.         DX = interface type (see below)
  3206.         CL = number
  3207.         DS:SI -> name
  3208.         AL = driver functions supported
  3209.         01h basic
  3210.         02h basic and extended
  3211.         05h basic and high-performance
  3212.         06h basic, high-performance, and extended
  3213.         FFh not installed
  3214. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  3215.       the packet driver specification
  3216.  
  3217. Values for error code:
  3218.  01h "BAD_HANDLE"    invalid handle number 
  3219.  02h "NO_CLASS"        no interfaces of the specified class found
  3220.  03h "NO_TYPE"        no interfaces of the specified type found
  3221.  04h "NO_NUMBER"    no interfaces of the specified number found
  3222.  05h "BAD_TYPE"        bad packet type
  3223.  06h "NO_MULTICAST"    interface does not support multicast messages
  3224.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  3225.  08h "BAD_MODE"        invalid receiver mode
  3226.  09h "NO_SPACE"        insufficient space
  3227.  0Ah "TYPE_INUSE"    type accessed but never released
  3228.  0Bh "BAD_COMMAND"    bad command
  3229.  0Ch "CANT_SEND"    packet could not be sent
  3230.  0Dh "CANT_SET"        hardware address could not be changed
  3231.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  3232.  0Fh "CANT_RESET"    could not reset interface
  3233.  
  3234. Values for Network Interface classes/types:
  3235.     Class 01h  Ethernet/IEEE 802.3     
  3236.     01h 3COM 3C500/3C501
  3237.     02h 3COM 3C505
  3238.     03h MICOM-Interlan NI5010
  3239.     04h BICC Data Networks 4110
  3240.     05h BICC Data Networks 4117
  3241.     06h MICOM-Interlan NP600
  3242.     08h Ungermann-Bass PC-NIC
  3243.     09h Univation NC-516
  3244.     0Ah TRW PC-2000    
  3245.     0Bh MICOM-Interlan NI5210
  3246.     0Ch 3COM 3C503
  3247.     0Dh 3COM 3C523
  3248.     0Eh Western Digital WD8003
  3249.     0Fh Spider Systems S4
  3250.     10h Torus Frame Level
  3251.     11h 10Net Communications
  3252.     12h Gateway PC-bus
  3253.     13h Gateway AT-bus
  3254.     14h Gateway MCA-bus
  3255.     15h IMC PCnic
  3256.     16h IMC PCnic II
  3257.     17h IMC PCnic 8-bit
  3258.     18h Tigan Communications
  3259.     19h Micromatic Research
  3260.     1Ah Clarkson "Multiplexor"
  3261.     1Bh D-Link 8-bit
  3262.     1Ch D-Link 16-bit
  3263.     1Dh D-Link PS/2
  3264.     1Eh Research Machines 8
  3265.     1Fh Research Machines 16
  3266.     20h Research Machines MCA
  3267.     21h Radix Microsystems EXM1 16-bit
  3268.     22h Interlan Ni9210
  3269.     23h Interlan Ni6510
  3270.     24h Vestra LANMASTER 16-bit
  3271.     25h Vestra LANMASTER 8-bit
  3272.     26h Allied Telesis PC/XT/AT
  3273.     27h Allied Telesis NEC PC-98
  3274.     28h Allied Telesis Fujitsu FMR
  3275.     29h Ungermann-Bass NIC/PS2
  3276.     2Ah Tiara LANCard/E AT
  3277.     2Bh Tiara LANCard/E MC
  3278.     2Ch Tiara LANCard/E TP
  3279.     2Dh Spider Communications SpiderComm 8
  3280.     2Eh Spider Communications SpiderComm 16
  3281.     2Fh AT&T Starlan NAU
  3282.     30h AT&T Starlan-10 NAU
  3283.     31h AT&T Ethernet NAU
  3284.     32h Intel smart card
  3285.     33h Xircom Packet Adapter
  3286.     34h Aquila Ethernet
  3287.     35h Novell NE1000
  3288.     36h Novell NE2000
  3289.     37h SMC PC-510
  3290.     38h AT&T Fiber NAU
  3291.     39h NDIS to Packet Driver adapter
  3292.     3Ah Racal-InterLan ES3210
  3293.     3Bh General Systems ISDN simulated Ethernet
  3294.     3Ch Hewlett-Packard
  3295.     3Dh IMC EtherNic-8
  3296.     3Eh IMC EtherNic-16
  3297.     3Fh IMC EtherNic-MCA
  3298.     40h NetWorth EtherNext
  3299.     41h Dataco Scanet
  3300.     42h DEC DEPCA
  3301.     43h C-Net
  3302.     44h Gandalf LANLine
  3303.     45h Apricot built-in
  3304.     46h David Systems Ether-T
  3305.     47h ODI to Packet Driver adapter
  3306.     48h AMD Am21110-16
  3307.     49h Intel ICD Network controller family
  3308.     4Ah Intel ICD PCL2
  3309.     4Bh Intel ICD PCL2A
  3310.     4Ch AT&T LANPacer
  3311.     4Dh AT&T LANPacer+
  3312.     4Eh AT&T EVB
  3313.     4Fh AT&T StarStation
  3314.     50h SLIP simulated ethernet
  3315.     51h Racal-Interlan NIA310
  3316.     52h Racal-Interlan NISE
  3317.     53h Racal-Interlan NISE30
  3318.     54h Racal-Interlan NI6610
  3319.     55h Ethernet over IP/UDP
  3320.     Class 02h  ProNET-10
  3321.     01h Proteon p1300
  3322.     02h Proteon p1800
  3323.     Class 03h  IEEE 802.5/ProNet-4
  3324.     01h IBM Token-Ring Adapter
  3325.     02h Proteon p1340
  3326.     03h Proteon p1344
  3327.     04h Gateway PC-bus
  3328.     05h Gateway AT-bus
  3329.     06h Gateway MCA-bus
  3330.     39h NDIS to Packet Driver adapter
  3331.     47h ODI to Packet Driver adapter
  3332.     Class 04h  Omninet
  3333.     Class 05h  Appletalk
  3334.     01h ATALK.SYS adapter
  3335.     Class 06h  Serial Line
  3336.     01h Clarkson 8250-SLIP
  3337.     02h Clarkson "Multiplexor"
  3338.     Class 07h  StarLAN (subsumed by Ethernet class)
  3339.     Class 08h  ARCnet
  3340.     01h Datapoint RIM
  3341.     Class 09h  AX.25
  3342.     01h Ottawa PI card
  3343.     Class 0Ah  KISS
  3344.     Class 0Bh  IEEE 802.3 with 802.2 headers
  3345.     types same as for class 01h
  3346.     Class 0Ch  FDDI with 802.2 headers
  3347.     01h Western Digital
  3348.     02h Frontier Technology
  3349.     Class 0Dh  Internet X.25
  3350.     01h Western Digital
  3351.     02h Frontier Technology
  3352.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  3353.     01h NT LANSTAR/8
  3354.     02h NT LANSTAR/MC
  3355.     Class 0Fh  SLFP (MIT serial specification)
  3356.     01h MERIT
  3357.     Class 10h  PPP (Point-to-Point Protocol)
  3358.  
  3359. Note: class and type numbers are cleared through FTP Software
  3360. --------G-6002-------------------------------
  3361. INT 60 - MDEBUG - SET STATUS
  3362.     AH = 02h
  3363.     DS:SI -> password or a null byte
  3364.     ES = new value for the register SE
  3365.     DI = new value for the register OF
  3366.     CH = new monitor color if nonzero
  3367.     CL = new interpreter color if nonzero
  3368.     BH = new monitor start line if nonzero
  3369.     BL = new interpreter start line if nonzero
  3370.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  3371.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  3372.         if nonzero
  3373.     DH = if nonzero, new basic process number for communication with the
  3374.         drivers (DH = multiplex number for the display driver,
  3375.         DH+1 = multiplex number for the command driver or drivers)
  3376. Return: AX = return code
  3377.         FFFFh call not allowed
  3378.         FFFEh password is invalid
  3379.         FFFDh display mode is invalid
  3380.         0000h successful, status changed
  3381.        else AL = error code
  3382.             bit 0 invalid monitor start line
  3383.             1 invalid interpreter start line
  3384.             2 invalid hotkey
  3385.             3 invalid process number
  3386.               4-7 reserved
  3387. Note:    the values of the registers SE and OF are always changed, the other
  3388.       values are only changed if they are valid
  3389. SeeAlso: AH=00h"MDEBUG"
  3390. --------N-6002-------------------------------
  3391. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  3392.     AH = 02h
  3393.     AL = interface class
  3394.     BX = interface type
  3395.     DL = interface number
  3396.     DS:SI -> type
  3397.     CX = length of type (0000h for all packets)
  3398.     ES:DI -> receiver
  3399. Return: CF set on error
  3400.         DH = error code (see AX=01FFh)
  3401.     CF clear if successful
  3402.         AX = handle        
  3403. SeeAlso: AH=03h"FTP"
  3404.  
  3405. Receiver is called with:
  3406.     AX = subfunction
  3407.         00h get packet buffer
  3408.         DX = lookahead length (v1.10+)
  3409.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  3410.         DI = error flags (class dependent) (v1.10+)
  3411.         Return: ES:DI -> packet buffer
  3412.                 0000h:0000h means throw away packet
  3413.             CX = size of buffer (v1.10+), may be smaller than
  3414.                 incoming data
  3415.         01h copy completed
  3416.         DS:SI -> buffer
  3417.         CX = bytes actually copied (v1.10+)
  3418.     BX = handle
  3419.     CX = buffer length
  3420. when a packet is received
  3421. --------G-6002-------------------------------
  3422. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  3423.     AH = 02h
  3424. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3425. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  3426. --------G-6003-------------------------------
  3427. INT 60 - MDEBUG - POP UP
  3428.     AH = 03h
  3429.     DS:SI -> password or a null byte
  3430.     ES -> new value for the register SE
  3431.     DI -> new value for the register OF
  3432. Return: AX = return code
  3433.         FFFFh call not allowed
  3434.         FFFEh password is invalid
  3435.         FFFDh display mode is invalid
  3436.        else successful
  3437. SeeAlso: AH=04h"MDEBUG"
  3438. --------N-6003-------------------------------
  3439. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  3440.     AH = 03h
  3441.     BX = handle
  3442. Return: CF set on error
  3443.        DH = error code (see AX=01FFh)
  3444.     CF clear if successful    
  3445. SeeAlso: AH=02h"FTP"
  3446. --------G-6003-------------------------------
  3447. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  3448.     AH = 03h
  3449. Return: ES:BX -> profiling table
  3450. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3451. SeeAlso: AH=04h"SYS_PROF"
  3452. --------N-6004-------------------------------
  3453. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  3454.     AH = 04h
  3455.     DS:SI -> buffer
  3456.     CX = length
  3457. Return: CF set on error
  3458.         DH = error code (see AX=01FFh)
  3459.     CF clear if successful
  3460. Note:    the buffer may be modified immediately upon return from this call
  3461. SeeAlso: AH=0Bh
  3462. --------G-6004-------------------------------
  3463. INT 60 - MDEBUG - POP UP
  3464.     AH = 04h
  3465.     DS:SI -> password or a null byte
  3466. Return: AX = return code
  3467.         FFFFh call not allowed
  3468.         FFFEh password is invalid
  3469.         FFFDh display mode is invalid
  3470.        else successful
  3471. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  3472. --------G-6004-------------------------------
  3473. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  3474.     AH = 04h
  3475. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  3476. SeeAlso: AH=03h"SYS_PROF"
  3477. --------N-6005-------------------------------
  3478. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  3479.     AH = 05h
  3480.     BX = handle (optional for v1.10+)
  3481. Return: CF set on error
  3482.        DH = error code (see AX=01FFh)
  3483.     CF clear if successful
  3484. --------G-6005-------------------------------
  3485. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  3486.     AH = 05h
  3487.     DS:SI -> password or a null byte
  3488.     BL = new value for the semaphor of MDEBUG
  3489.          00h  enable popup of MDEBUG
  3490.          else disable popup of MDEBUG
  3491. Return: AX = return code
  3492.         FFFEh password is invalid
  3493.         FFFDh display mode is invalid
  3494.        else successful
  3495.         BL = old value of the semapor of MDEBUG
  3496.         BH = old value of the INT 08h semaphor
  3497.             (this semaphor is always reset after this function)
  3498. --------N-6006-------------------------------
  3499. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  3500.     AH = 06h
  3501.     BX = handle (optional for v1.10+)
  3502.     ES:DI -> buffer
  3503.     CX = length
  3504. Return: CF set on error
  3505.         DH = error code (see AX=01FFh)
  3506.     CF clear if successful
  3507.         CX = length    
  3508. Note:    copies the local net address associated with the handle into the buffer
  3509. --------G-6006-------------------------------
  3510. INT 60 - MDEBUG - GET PASSWORD STATUS
  3511.     AH = 06h
  3512. Return: AL = status
  3513.         00h password inactive
  3514.         01h password active
  3515. --------N-6007-------------------------------
  3516. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  3517.     AH = 07h
  3518.     BX = handle (optional for v1.10+)
  3519. Return: CF set on error
  3520.         DH = error code (see AX=01FFh)
  3521.     CF clear if successful
  3522. --------G-6007-------------------------------
  3523. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  3524.     AH = 07h
  3525. Return: AL = active part for the next popup session of MDEBUG:
  3526.         bit 0: the next popup session will start in the interpreter rather
  3527.             than in the monitor
  3528.         bit 1: the next popup session will sart in the online-help
  3529. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  3530. --------G-6008-------------------------------
  3531. INT 60 - MDEBUG - UNUSED
  3532.     AH = 08h-FFh
  3533. Return: AX = FFFCh
  3534. --------N-600A-------------------------------
  3535. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  3536.     AH = 0Ah
  3537. Return: CF set on error
  3538.         DH = error code (0Bh) (see AX=01FFh)
  3539.     CF clear if successful
  3540.         ES:DI -> parameter table (see below)
  3541.  
  3542. Format of parameter table:
  3543. Offset    Size    Description
  3544.  00h    BYTE    major revision of packet driver spec driver conforms to
  3545.  01h    BYTE    minor revision of packet driver spec
  3546.  02h    BYTE    length of this structure in bytes
  3547.  03h    BYTE    length of a MAC-layer address
  3548.  04h    WORD    maximum transfer unit, including MAC headers
  3549.  06h    WORD    buffer size for multicast addr
  3550.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  3551.  0Ah    WORD    number of transmit buffers
  3552.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  3553. --------N-600B-------------------------------
  3554. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  3555.     AH = 0Bh
  3556.     DS:SI -> buffer
  3557.     CX = length of buffer
  3558.     ES:DI -> FAR function to call when buffer becomes available
  3559. Return: CF set on error
  3560.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  3561.     CF clear if successful
  3562. Notes:    unlike function 04h, the buffer is not available for modification as
  3563.       soon as the call returns; the buffer may be queued by the driver and
  3564.       not processed until later
  3565.     this function has been dropped from v1.10+ of the specification and
  3566.       replaced by function 0Ch
  3567. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  3568.  
  3569. Completion function called with:
  3570.     AX = result
  3571.         00h copy OK
  3572.         nonzero error
  3573.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  3574. --------N-600C-------------------------------
  3575. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  3576.     AH = 0Ch
  3577.     ES:DI -> pointer to IOCB
  3578. Return: CF set on error
  3579.         DH = error code (see AX=01FFh)
  3580.     CF clear if successful
  3581. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  3582.  
  3583. Format of IOCB:
  3584. Offset    Size    Description
  3585.  00h    DWORD    pointer to buffer
  3586.  04h    WORD    length of buffer
  3587.  06h    BYTE    flags
  3588.         bit 0: packet driver is finished with IOCB
  3589.         bit 1: application requests upcall when driver completes
  3590.  07h    DWORD    function address for upcall
  3591.  0Bh  4 BYTEs    future gather write
  3592.  0Fh    BYTE    ???
  3593.  10h  8 BYTEs    private driver workspace
  3594.  
  3595. Completion function called with:
  3596.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  3597. --------N-600C-------------------------------
  3598. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  3599.     AH = 0Ch
  3600. Return: AL = status
  3601.         00h successful
  3602.         ES:SI -> 6-byte station address
  3603.         02h semaphore service is unavailable
  3604. --------N-600D-------------------------------
  3605. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  3606.     AH = 0Dh
  3607.     ES:DI -> IOCB
  3608. Return: CF set on error
  3609.         DH = error code (see AX=01FFh)
  3610.     CF clear if successful
  3611. SeeAlso: AH=0Ch"Packet Driver"
  3612. --------N-6011-------------------------------
  3613. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  3614.     AH = 11h
  3615.     AL = drive number or 0
  3616.     DX = number of seconds to wait
  3617.     ES:SI = Ethernet address or 0
  3618.     DS:BX -> 31-byte ASCIZ semaphore name
  3619. Return: AL = status
  3620.         00h successful
  3621.         01h timeout
  3622.         02h server not responding
  3623.         03h invalid semaphore name
  3624.         04h semaphore list is full
  3625.         05h invalid drive ID
  3626.         06h invalid Ethernet address
  3627.         07h not logged in
  3628.         08h write to network failed
  3629.         09h semaphore already logged for this CPU
  3630. SeeAlso: AH=12h,AH=13h
  3631. --------N-6012-------------------------------
  3632. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  3633.     AH = 12h
  3634.     AL = drive number or 00h
  3635.     ES:SI = Ethernet address or 0000h:0000h
  3636.     DS:BX -> 31-byte ASCIZ semaphore name
  3637. Return: AL = status (see also AH=11h)
  3638.         01h semaphore currently locked by another PC
  3639. Note:    unlike function 11h, this function returns immediately
  3640. SeeAlso: AH=11h,AH=13h
  3641. --------N-6013-------------------------------
  3642. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  3643.     AH = 13h
  3644.     AL = drive number or 00h
  3645.     ES:SI = Ethernet address or 0000h:0000h
  3646.     DS:BX -> 31-byte ASCIZ semaphore name
  3647. Return: AL = status (see also AH=11h)
  3648.         1 semaphore not locked
  3649. SeeAlso: AH=11h,AH=12h
  3650. --------N-6014-------------------------------
  3651. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  3652.     AH = 14h
  3653.     BX = handle (optional for v1.10+)
  3654.     CX = mode
  3655.         01h turn off receiver
  3656.         02h receive only packets sent to this interface
  3657.         03h mode 2 plus broadcast packets
  3658.         04h mode 3 plus limited multicast packets
  3659.         05h mode 3 plus all multicast packets
  3660.         06h all packets
  3661.         07h raw mode for serial line only (v1.10+)
  3662. Return: CF set on error
  3663.        DH = error code (01h,08h) (see AX=01FFh)
  3664.     CF clear if successful
  3665. SeeAlso: AH=15h
  3666. --------N-6015-------------------------------
  3667. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  3668.     AH = 15h
  3669.     BX = handle (optional for v1.10+)
  3670. Return: CF set on error
  3671.         DH = error code (01h) (see AX=01FFh)
  3672.     CF clear if successful
  3673.         AX = mode    
  3674. SeeAlso: AH=14h
  3675. --------N-6016-------------------------------
  3676. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  3677.     AH = 16h
  3678.     ES:DI -> multicast list
  3679.     CX = length of list in bytes
  3680. Return: CF set on error
  3681.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  3682.     CF clear if successful
  3683. SeeAlso: AH=17h
  3684. --------N-6017-------------------------------
  3685. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  3686.     AH = 17h
  3687. Return: CF set on error
  3688.         DH = error code (06h,09h) (see AX=01FFh)
  3689.     CF clear if successful
  3690.         ES:DI -> multicast addresses (do not modify)
  3691.         CX = bytes of multicast addresses currently in use
  3692. SeeAlso: AH=16h
  3693. --------N-6018-------------------------------
  3694. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  3695.     AH = 18h
  3696.     BX = handle (optional for v1.10+)
  3697. Return: CF set on error
  3698.         DH = error code (01h) (see AX=01FFh)
  3699.     CF clear if successful
  3700.         DS:SI -> statistics (see below)
  3701.  
  3702. Format of statistics:
  3703. Offset    Size    Description
  3704.  00h    DWORD    packets in
  3705.  04h    DWORD    packets out
  3706.  08h    DWORD    bytes in
  3707.  0Ch    DWORD    bytes out
  3708.  10h    DWORD    errors in
  3709.  14h    DWORD    errors out
  3710.  18h    DWORD    packets dropped
  3711. --------N-6019-------------------------------
  3712. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  3713.     AH = 19h
  3714.     ES:DI -> address
  3715.     CX = length of address
  3716. Return: CF set on error
  3717.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  3718.     CF clear if successful
  3719.         CX = length
  3720. --------N-601A-------------------------------
  3721. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  3722.     AH = 1Ah
  3723.     DS:SI -> buffer
  3724.     CX = length of buffer
  3725. Return: CF set on error
  3726.         DH = error code (see AX=01FFh)
  3727.     CF clear if successful
  3728. SeeAlso: AH=1Ch
  3729. --------N-601B-------------------------------
  3730. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  3731.     AH = 1Bh
  3732. Return: CF set on error
  3733.         DH = error code (see AX=01FFh)
  3734.     CF clear if successful
  3735. SeeAlso: AH=1Ch
  3736. --------N-601C-------------------------------
  3737. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  3738.     AH = 1Ch
  3739.     DS:SI -> buffer
  3740.     CX = length of buffer
  3741.     DX = timeout in clock ticks
  3742. Return: CF set on error
  3743.         DH = error code (see AX=01FFh)
  3744.     CF clear if successful
  3745.         CX = number of bytes transferred to buffer
  3746. SeeAlso: AH=1Ah,AH=1Bh
  3747. --------a-60AD-------------------------------
  3748. INT 60 - AccessDOS - API
  3749.     AH = ADh
  3750.     AL = function
  3751.         E1h ???
  3752.         Return: AX = ???
  3753.         E2h get configuration
  3754.         Return: BX:AX -> configuration data
  3755. Program: AccessDOS is a public domain TSR developed at The Trace Research and
  3756.       Development Center which provides extensions for keyboard, mouse,
  3757.       and sound access by the visually, hearing, or motor-control
  3758.       impaired.
  3759. Note:    INT 60 is the default vector; AccessDOS will use the first 0000h:0000h
  3760.       vector in the range 60h through 66h.
  3761. --------*-61---------------------------------
  3762. INT 61 - reserved for user interrupt
  3763. --------b-61---------------------------------
  3764. INT 61 - Atari Portfolio - EXTENDED BIOS
  3765.    provides subfunctions such as turning off the machine, accessing internal
  3766.    variables, and mapping memory cards
  3767. SeeAlso: INT 60"Atari"
  3768. --------b-61---------------------------------
  3769. INT 61 - HP 95LX System Manager - LOAD DS
  3770. SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
  3771. --------r-61---------------------------------
  3772. INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
  3773. SeeAlso: INT 61"JPI"
  3774. --------d-61---------------------------------
  3775. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  3776. Note:    this vector stores the second four bytes of the parameter table for
  3777.       hard disk 0
  3778. SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
  3779. --------I-61---------------------------------
  3780. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  3781.     BX:DX -> control block
  3782. SeeAlso: INT 67"Sangoma"
  3783. --------v-61---------------------------------
  3784. INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
  3785. Note:    the virus copies the original INT 21h vector into INT 61h
  3786. SeeAlso: INT 21h,INT 60"VIRUS",INT 6B"VIRUS"
  3787. --------N-61---------------------------------
  3788. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  3789.     AH = system call number (see also entries below)
  3790.         01h "pkt_alloc" (v2.05; this is "net_config" in v2.1+)
  3791.         02h "pkt_free" (v2.05; this is "get_kernel_info" in v2.1+)
  3792. Return: CF clear if successful
  3793.     CF set on error
  3794.         AL = basic error (see below)
  3795.         AH = suberror number
  3796. Notes:    the installation check consists of testing for the signature "TCPTSR"
  3797.       three bytes beyond the start of the interrupt handler
  3798.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  3799.       interrupt from 20h through E0h
  3800. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  3801.       greater than 54h in AH may crash the system.    Other kernels may have
  3802.       this bug as well.
  3803. SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
  3804. Index:    installation check;PC/TCP
  3805.  
  3806. Values for error code:
  3807.  00h "NET_NOERR" successful
  3808.  01h "NET_ERR_INUSE" protocol or socket already in use
  3809.  02h "NET_DOS_ERR" MS-DOS error (returned as suberror code in AH)
  3810.  03h "NET_ERR_NOMEM" out of memory
  3811.  04h "NET_ERR_NOTNETCONN" not a network descriptor
  3812.  05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
  3813.  06h "NET_ERR_BADPKT" illegal or corrupted packet
  3814.  07h "NET_ERR_NOHOST" no host bound to specified connection
  3815.  08h "NET_ERR_CANTOPEN" unable to open file
  3816.  09h "NET_ERR_NET_UNREACHABLE" network is unreachable
  3817.  0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable (see subcodes below)
  3818.  0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
  3819.  0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
  3820.  0Dh "NET_ERR_TIMEOUT" operation timed out
  3821.  0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
  3822.  0Fh "NET_ERR_NOSERVERS" no name servers configured
  3823.  10h "NET_ERR_SERVER_ERR" bad reply from name server
  3824.     Subcodes: 0= no error, 1 = Host unreachable
  3825.  11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address struc
  3826.             is zero
  3827.  12h "NET_ERR_BADARG" invalid argument
  3828.  13h "NET_ERR_EOF" foreign host closed its end of connection
  3829.  14h "NET_ERR_RESET" connection has been reset
  3830.  15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
  3831.             with no data available
  3832.  16h "NET_ERR_UNBOUND" insufficient resources to do operation
  3833.  17h "NET_ERR_NODESC" could not allocate network descriptor
  3834.  18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
  3835.  19h "NET_ERR_CANTBROADCAST" unable to broadcast
  3836.  1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
  3837.  1Bh kernel busy, try again later
  3838.  1Ch "NET_ERR_ICMPMESG" an ICMP message was received (not on streams)
  3839.      (see subcodes below)
  3840. ---v2.1+---
  3841.  1Dh "NET_ERR_TERMINATING" internal kernel fatal error
  3842.  1Eh "NET_ERR_TAG_LOCKED" not allowed to set this tag (net_config)
  3843.  1Fh "NET_ERR_BAD_INTERFACE" non existent interface specified
  3844.  20h "NET_ERR_BADCONFIG" kernel cannot run - bad configuration
  3845.  21h "NET_ERR_EMM" expanded memory error
  3846.  22h "NET_ERR_CANT_SHUTDOWN" cant unload kernel (multitasker running)
  3847.  23h "NET_ERR_PARKED_IN" unable to unhook DOS interrupt
  3848.  24h "NET_ERR_NOQIOS" ran out of resources; try again later
  3849.  25h "NET_ERR_WOULD_TRUNCATE" datagram too large and "don't truncate" was set
  3850.  
  3851. Values for subcodes of error 0Ah "NET_ERR_HOST_UNREACHABLE":
  3852.  00h no error
  3853.  01h host unreachable
  3854.  02h ARP failed
  3855.  03h hardware failure
  3856.  04h link failure
  3857.  05h no route
  3858.  06h gateway down
  3859.  
  3860. Values for subcodes of error 1Ch "NET_ERR_ICMPMESG":
  3861.  07h unrecognised
  3862.  08h can't fragment
  3863.  09h srcr_fail
  3864.  0Ah source quench
  3865.  0Bh time exceeded
  3866.  0Ch parameter problem
  3867.  0Dh admin_prohib. see also code 0Ah
  3868. --------N-6100-------------------------------
  3869. INT 61 U - PC/TCP kernel v2.05+ - GET DEBUG INFORMATION
  3870.     AH = 00h
  3871.     DS:SI -> 216-byte buffer for network debugging information (see below)
  3872. Return: CF clear
  3873.     AX = 0000h
  3874.     buffer filled
  3875. Notes:    this call is not documented by FTP, Inc. for any version
  3876.     most of the information returned by this call is available via the
  3877.       documented get_kernel_info or net_info commands.
  3878. SeeAlso: INT 61"PC/TCP",INT 61/AH=2Ah"PC/TCP"
  3879.  
  3880. Format of network debugging information:
  3881. Offset    Size    Description
  3882.  00h    DWORD    number of interrupts
  3883.  04h    DWORD    receive buffer low-water mark
  3884.  08h    DWORD    transmit buffer low-water mark
  3885.  0Ch    DWORD    number of packets received
  3886.  10h    DWORD    number of packets transmitted
  3887.  14h    DWORD    total receive errors
  3888.  18h    DWORD    total transmit errors
  3889.  1Ch  4 BYTEs    ???
  3890.  20h    DWORD    receive resets
  3891.  24h    DWORD    transmit resets
  3892.  28h    DWORD    number of "runts" received
  3893.  2Ch    DWORD    number of alignment errors on received packets
  3894.  30h    DWORD    number of CRC errors on received packets
  3895.  34h    DWORD    number of parity errors on received packets
  3896.  38h    DWORD    number of receive overflow errors
  3897.  3Ch    DWORD    number of oversized packets received
  3898.  40h    DWORD    number of packets lost due to lack of buffers
  3899.  44h    DWORD    receive timeouts
  3900.  48h 32 BYTEs    ???
  3901.  68h    DWORD    number of transmit collisions
  3902.  6Ch    DWORD    number of transmit timeouts
  3903.  70h    DWORD    number of transmit underflows
  3904.  74h    DWORD    number of lost "crs" on transmit
  3905.  78h    DWORD    number of times heartbeat failed on transmit
  3906.  7Ch 24 BYTEs    ???
  3907.  94h    WORD    free packet buffers
  3908.  96h    WORD    total packet buffers
  3909.  98h    WORD    minimum number of packet buffers free since kernel started
  3910.  9Ah 24 BYTEs    ???
  3911.  B2h    DWORD    pointer to TCP connection list???
  3912.  B6h    DWORD    pointer to IP routing table???
  3913.  BAh 30 BYTEs    ???
  3914. --------V-610000-----------------------------
  3915. INT 61 - OPTIMA 1024 VGA-Sync - ZOOM DISPLAY
  3916.     AX = 0000h
  3917.     BX = zoom factor (0-7)
  3918. Notes:    zooms the display based on the given zoom factor
  3919.     INT 61h is the default interrupt; the actual interrupt number can be
  3920.       obtained by calling INT 16/AH=FFh
  3921. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0001h"OPTIMA",INT 61/AX=0002h"OPTIMA"
  3922. SeeAlso: INT 61/AX=0005h"OPTIMA"
  3923. --------N-610001SF0001-----------------------
  3924. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  3925.     AX = 0001h subfn 0001h
  3926.     DS:DX -> communications control block (function 0001h)
  3927. Return: AX = status (see below)
  3928. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  3929.       interrupt handler is identified by the string "BANV" in the four
  3930.       bytes immediately preceding the interrupt handler
  3931. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0008h,INT 15/AX=DE2Eh
  3932.  
  3933. Values for status:
  3934.  0000h    successful
  3935.  0001h    service not installed
  3936.  0002h    invalid service ID
  3937.  0098h    resource already in use
  3938.  009Eh    address family does not exist
  3939.  009Fh    socket type does not exist
  3940.  00A0h    protocol does not exist
  3941.  00A1h    no more sockets available
  3942.  00A2h    no more buffer space available
  3943.  
  3944. Format of control block:
  3945. Offset    Size    Description
  3946.  00h    WORD    0001h
  3947.  02h    WORD    pointer to argument block
  3948.  04h    WORD    error return code
  3949.  06h  4 BYTEs    reserved
  3950.  
  3951. Format of argument block:
  3952. Offset    Size    Description
  3953.  00h    WORD    pointer to 2-byte buffer for socket identifier
  3954.  02h    WORD    address family
  3955.         0003h Banyan
  3956.  04h    WORD    socket type
  3957.         in address family 0003h
  3958.             0001h IPC socket
  3959.             0002h SPP socket
  3960.  06h    WORD    protocol number
  3961.         FFFFh default
  3962.  08h    WORD    pointer to 16-byte buffer for socket address
  3963.  0Ah    WORD    local port number
  3964.         0000h if service should assign transient port number
  3965.         0001h to 01FFh well-known port number (assigned by Banyan)
  3966.  
  3967. Format of IPC port:
  3968. Offset    Size    Description
  3969.  00h    WORD    address family (always 0003h for Banyan ports)
  3970.  04h  4 BYTEs    network number (server's serial number)
  3971.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  3972.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  3973.  0Ah    BYTE    hop count
  3974.  0Bh  5 BYTEs    filler
  3975. --------N-610001SF0002-----------------------
  3976. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  3977.     AX = 0001h subfn 0002h
  3978.     DS:DX -> communications control block (function 0002h)
  3979. Return: AX = status (see below)
  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. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0005h
  3984.  
  3985. Values for status:
  3986.  0000h    successful
  3987.  0001h    service not installed
  3988.  0002h    invalid service ID
  3989.  0003h-000Ah reserved for BANV interface errors
  3990.  0097h    invalid socket identifier
  3991.  009Bh    destination node unreachable
  3992.  009Ch    message overflow
  3993.  009Dh    destination socket nonexistent
  3994.  00A2h    no more buffer space
  3995.  00A3h    timeout
  3996.  00B1h    resource disconnect
  3997.  
  3998. Format of control block:
  3999. Offset    Size    Description
  4000.  00h    WORD    0002h
  4001.  02h    WORD    pointer to argument block (see below)
  4002.  04h    WORD    error return code
  4003.         0000h successful
  4004.         0097h invalid socket ID
  4005.         00A2h no more buffer space
  4006.         00A3h timeout event
  4007.         00A5h resource not available
  4008.         00A6h internal communication failure
  4009.         00B1h resource disconnect
  4010.  06h  4 BYTEs    reserved
  4011.  
  4012. Format of argument block:
  4013. Offset    Size    Description
  4014.  00h    WORD    routine metric
  4015.  02h    WORD    error return code
  4016.  04h    WORD    socket identifier
  4017.  06h    WORD    pointer to send buffer
  4018.  08h    WORD    length of send buffer
  4019.  0Ah    WORD    flags
  4020.         bit 0: async request
  4021.         bit 1: reliable message
  4022.         bit 3: end of user message received
  4023.         bit 4: vectored request (if set, send buffer contains buffer
  4024.             descriptors)
  4025.         bit 5: connection-specific receive
  4026.         bit 6: change to connection-specific receive mode
  4027.  0Ch 16 BYTEs    socket address (see below)
  4028.  1Ch    WORD    timeout value in multiples of 200ms
  4029.  1Eh    WORD    connection identifier
  4030.  20h    WORD    type of request
  4031.         0001h send message
  4032.         0002h establish a virtual connection
  4033.         0003h terminate a virtual connection
  4034.  
  4035. Format of buffer descriptor:
  4036. Offset    Size    Description
  4037.  00h    WORD    data segment
  4038.  02h    WORD    buffer pointer
  4039.  04h    WORD    buffer length
  4040.  06h    WORD    character count
  4041.  
  4042. Format of socket address for unreliable datagrams:
  4043. Offset    Size    Description
  4044.  00h    WORD    0003h      address family
  4045.  02h    DWORD    FFFFFFFFh network number
  4046.  06h    WORD    FFFFh      subnet number
  4047.  08h    WORD          local port number
  4048.  0Ah    BYTE    00h-0Fh      hop count
  4049.  0Bh  5 BYTEs    0000h      filler
  4050. --------N-610001SF0003-----------------------
  4051. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  4052.     AX = 0001h subfn 0003h
  4053.     DS:DX -> communications control block (function 0003h)
  4054. Return: AX = status (00-0Ah,97h,A2h,A3h) (see AX=0001h/SF=0002h)
  4055. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4056.       interrupt handler is identified by the string "BANV" in the four
  4057.       bytes immediately preceding the interrupt handler
  4058. SeeAlso: AX=0001h/SF=0002h
  4059.  
  4060. Format of control block:
  4061. Offset    Size    Description
  4062.  00h    WORD    0003h
  4063.  02h    WORD    pointer to argument block (see below)
  4064.  04h    WORD    error return code
  4065.         0000h successful
  4066.         0097h invalid socket ID
  4067.         00A2h no more buffer space
  4068.         00A3h timeout event
  4069.         00A5h resource not available
  4070.         00A6h internal communication failure
  4071.         00B1h resource disconnect
  4072.  06h  4 BYTEs    reserved
  4073.  
  4074. Format of argument block:
  4075. Offset    Size    Description
  4076.  00h    WORD    character count
  4077.  02h    WORD    error return code
  4078.  04h    WORD    socket identifier
  4079.  06h    WORD    pointer to receive buffer
  4080.  08h    WORD    length of receive buffer
  4081.  0Ah    WORD    flags
  4082.         bit 0: async request
  4083.         bit 2: flush receive buffer on overflow
  4084.         bit 3: end of user message received
  4085.         bit 4: vectored request (if set, receive buffer contains buffer
  4086.             descriptors)
  4087.         bit 5: connection-specific receive
  4088.         bit 6: change to connection-specific receive mode
  4089.  0Ch 16 BYTEs    socket address
  4090.  1Ch    WORD    timeout value in multiples of 200ms
  4091.  1Eh    WORD    connection identifier
  4092.  20h    WORD    type of response
  4093.         0001h message received
  4094.         0002h virtual connection established
  4095.         0003h virtual connection terminated
  4096.  
  4097. Format of buffer descriptor:
  4098. Offset    Size    Description
  4099.  00h    WORD    data segment
  4100.  02h    WORD    buffer pointer
  4101.  04h    WORD    buffer length
  4102.  06h    WORD    character count
  4103. --------N-610001SF0004-----------------------
  4104. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  4105.     AX = 0001h subfn 0004h
  4106.     DS:DX -> communications control block (function 0004h)
  4107. Return: AX = status (00h-0Ah,97h) (see AX=0001h/SF=0002h)
  4108. Note:    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. SeeAlso: AX=0001h/SF=0001h,INT 15/AX=DE2Eh
  4112.  
  4113. Format of control block:
  4114. Offset    Size    Description
  4115.  00h    WORD    0004h
  4116.  02h    WORD    pointer to argument block (see below)
  4117.  04h    WORD    error return code
  4118.  06h  4 BYTEs    reserved
  4119.  
  4120. Format of argument block:
  4121. Offset    Size    Description
  4122.  00h    WORD    socket identifier
  4123. --------N-610001SF0005-----------------------
  4124. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  4125.     AX = 0001h subfn 0005h
  4126.     DS:DX -> communications control block (function 0005h)
  4127. Return: AX = status (see below)
  4128. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4129.       interrupt handler is identified by the string "BANV" in the four
  4130.       bytes immediately preceding the interrupt handler
  4131.     returns results for all asynchronous operations invoked from the
  4132.       data segment used for this call
  4133. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0009h
  4134.  
  4135. Values for status:
  4136.  0000h  successful
  4137.  0001h  service not installed
  4138.  0002h  invalid service ID
  4139.  0003h-000Ah reserved for BANV interface errors
  4140.  00A2h  no more buffer space available
  4141.  00A3h  timeout event
  4142.  
  4143. Format of control block:
  4144. Offset    Size    Description
  4145.  00h    WORD    0005h
  4146.  02h    WORD    pointer to argument block (see below)
  4147.  04h    WORD    error return code
  4148.  06h  4 BYTEs    reserved
  4149.  
  4150. Format of argument block:
  4151. Offset    Size    Description
  4152.  00h    WORD    pointer to WORD event pointer
  4153.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  4154. --------N-610001SF0008-----------------------
  4155. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  4156.     AX = 0001h subfn 0008h
  4157.     DS:DX -> communications control block (function 0008h)
  4158. Return: AX = status
  4159.         0000h  successful
  4160.         00A2h  no more buffer space available
  4161. Note:    BANYAN can use any interrupt from 60h through 66h (default 61h).  The
  4162.       Banyan interrupt handler is identified by the string "BANV" in the
  4163.       four bytes immediately preceding the interrupt handler
  4164. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0009h
  4165.  
  4166. Format of control block:
  4167. Offset    Size    Description
  4168.  00h    WORD    0008h
  4169.  02h    WORD    process type
  4170.         0001h transient process
  4171.         0002h resident process
  4172.  04h    WORD    error return code
  4173.  06h  4 BYTEs    reserved
  4174. --------N-610001SF000B-----------------------
  4175. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  4176.     AX = 0001h subfn 000Bh
  4177.     DS:DX -> communications control block (function 000Bh)
  4178. Return: AX = status (00h-0Ah,A2h) (see AX=0001h/SF=0005h)
  4179. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  4180.       interrupt handler is identified by the string "BANV" in the four
  4181.       bytes immediately preceding the interrupt handler
  4182.     FAR user function is invoked with SS,DS, and ES set to segment of
  4183.       control block, and with the stack containing
  4184.         DWORD    return address
  4185.         WORD    argument pointer (sosend or sorec argument block)
  4186.         WORD    error return code
  4187.             0000h argument pointer is valid
  4188.             00A3h timeout
  4189. SeeAlso: AX=0001h/SF=0005h,AX=0001h/SF=0008h
  4190.  
  4191. Format of control block:
  4192. Offset    Size    Description
  4193.  00h    WORD    000Bh
  4194.  02h    WORD    pointer to argument block (see below)
  4195.  04h    WORD    error return code
  4196.  06h  2 BYTEs    reserved
  4197.  08h    WORD    user CS register
  4198.  
  4199. Format of argument block:
  4200. Offset    Size    Description
  4201.  00h    WORD    pointer to user interrupt function    
  4202.  02h    WORD    pointer to user stack
  4203.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  4204. --------V-610001-----------------------------
  4205. INT 61 - OPTIMA 1024 VGA-Sync - CENTER ZOOM WINDOW
  4206.     AX = 0001h
  4207.     BX = X coordinate to center
  4208.     CX = Y coordinate to center
  4209. Notes:    Positions the zoom window such that the specified window-relative
  4210.       coordinates appear as close as possible to the center of the
  4211.       display.  Useful for scrolling and panning.
  4212.     INT 61h is the default interrupt; the actual interrupt number can be
  4213.       obtained by calling INT 16/AH=FFh
  4214. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0002h"OPTIMA"
  4215. SeeAlso: INT 61/AX=0005h"OPTIMA"
  4216. --------I-610002-----------------------------
  4217. INT 61 - Banyan VINES - 3270 INTERFACE
  4218.     AX = 0002h
  4219.     BH = function
  4220.         00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  4221.         02h "pi2bsc" (3270/BSC only)
  4222.         03h    "pi2get"    get information stored in 3270 resident driver
  4223.         04h "pi2put"    store information in 3270 resident driver
  4224.         05h "pi2gcur"   get current screen position
  4225.         07h "pi2sdat"   send data keystroke
  4226.         08h "pi2scom"   send command keystroke
  4227.         0Ah "pi2field"  get field info for arbitrary screen positions
  4228.         0Fh "pi2stat"   get logical unit/device status
  4229.         12h "pi2nlus"   determine logical unit/device assignment
  4230.         13h "pi2gate"   specifies comm port address to gateway service
  4231.         14h "pi2attach" attach a logical unit/device
  4232.         15h "pi2sdev"   save logical unit/device info in resident driver
  4233.                 (not supported in >3.0)
  4234.         16h "pi2gdev"   get device information (not supported in >3.0)
  4235.         17h "pi2luinfo" get info about specific logical unit/device
  4236.         18h "pi2gerr"   get finer error detail
  4237.         19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  4238.         1Ah "pi2shut"   release memory-resident module
  4239.         1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  4240.         1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  4241.     DS:CX -> argument block (except BH=00h,1Ah)
  4242. Return: AX = status (see below)
  4243. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  4244.       which is loaded first.  The other interface will use AX=000Ah
  4245.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  4246.       or 3270/BSC resident driver, which must be reloaded by the user
  4247.  
  4248. Values for status:
  4249.  0000h successful
  4250.  000Bh invalid parameter or data does not fit data area
  4251.  000Ch another code path currently active in resident driver
  4252.  000Dh operation currently not allowed
  4253.  0032h encountered connection disconnect error
  4254.  0033h encountered "sosend" completion error
  4255.  0034h encountered "sosend" communication error
  4256.  0035h attach request refused.  extended error info via "pi2gerr":
  4257.     01h resource unavailable
  4258.     02h invalid type
  4259.     03h version mismatch
  4260.     04h invalid logical unit number
  4261.     05h error during ARL processing
  4262.     06h no access for user
  4263.  0071h encountered "sosock" error
  4264.  0072h encountered unrecognizable error
  4265.  0073h encountered "sowait" error (extended info via "pi2gerr")
  4266.  0074h encountered invalid type-of-request on "sowait"
  4267.  0075h encountered "sorec" error (extended info via "pi2gerr")
  4268.  0076h encountered "sorec" completion error (ext info via "pi2gerr")
  4269.  0077h encountered connection request
  4270.  0078h encountered unrecognizable data
  4271.  0079h encountered unknown connection ID (ext info via "pi2gerr")
  4272.  
  4273. Format of argument block for BH=03h,04h:
  4274. Offset    Size    Description
  4275.  00h    WORD    size of data area (max 256)
  4276.  02h  N BYTEs    data area
  4277.  
  4278. Format of argument block for BH=05h:
  4279. Offset    Size    Description
  4280.  00h    WORD    logical unit/device number
  4281.  02h    WORD    pointer to WORD buffer for cursor index
  4282.  04h    WORD    pointer to BYTE buffer for current field attribute
  4283.  
  4284. Format of argument block for BH=07h:
  4285. Offset    Size    Description
  4286.  00h    WORD    logical unit/device number
  4287.  02h    WORD    ASCII data byte
  4288.  04h    WORD    pointer to WORD count of characters which will need updating
  4289.  
  4290. Format of argument block for BH=08h:
  4291. Offset    Size    Description
  4292.  00h    WORD    logical unit/device number
  4293.  02h    WORD    keystroke
  4294.         0000h Enter
  4295.         0001h Clear
  4296.         0002h PA1
  4297.         0003h PA2
  4298.         0004h PA3
  4299.         0005h PF1
  4300.         ...
  4301.         001Ch PF24
  4302.         001Dh CSELECT (cursor select)
  4303.         001Eh Insert
  4304.         001Fh Delete
  4305.         0020h EOField
  4306.         0021h EINPUT (erase input)
  4307.         0022h Reset
  4308.         0023h Attention
  4309.         0024h SysReq
  4310.         0025h Duplicate
  4311.         0026h Fieldmark
  4312.         0027h Home
  4313.         0028h NextLine
  4314.         0029h Tab
  4315.         002Ah BackTab
  4316.         002Bh cursor up
  4317.         002Ch cursor down
  4318.         002Dh cursor right
  4319.         002Eh cursor left
  4320.         002Fh double cursor right
  4321.         0030h double cursor left
  4322.         0031h PRINT
  4323.         0032h CANCEL
  4324.         0033h Backspace
  4325.  
  4326. Format of argument block for BH=0Ah:
  4327. Offset    Size    Description
  4328.  00h    WORD    logical unit/device number
  4329.  02h    WORD    screen index
  4330.  04h    WORD    pointer to WORD buffer for field length
  4331.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  4332.  
  4333. Format of argument block for BH=0Fh:
  4334. Offset    Size    Description
  4335.  00h    WORD    logical unit/device number
  4336.  02h    WORD    clear mask (clear these bits of status after returning status)
  4337.  04h    WORD    pointer to WORD buffer for device status (see below)
  4338.  
  4339. Bitfields for device status:
  4340.  bit 10    status modified
  4341.  bit 9    buffer modified
  4342.  bit 8    set cursor
  4343.  bit 5    sound alarm
  4344.  bits 1-0  size of print line for printer logical units
  4345.     00  unformatted line
  4346.     01  40-character line
  4347.     10  64-character line
  4348.     11  80-character line
  4349.  
  4350. Format of argument block for BH=12h:
  4351. Offset    Size    Description
  4352.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  4353.  02h    WORD    pointer to WORD buffer for version number
  4354.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  4355.  
  4356. Format of argument block for BH=13h:
  4357. Offset    Size    Description
  4358.  00h 16 BYTEs    communications port address (see AX=0001h#"Sosock")
  4359.  
  4360. Format of argument block for BH=14h:
  4361. Offset    Size    Description
  4362.  00h    WORD    logical unit/device number 
  4363.         0000h attach any free device of the specified type
  4364.  02h    WORD    logical unit/device type
  4365.         (3270/SNA) 01h, 02h, or 03h
  4366.         (3270/BSC) 02h display
  4367.         (3270/BSC) 03h printer
  4368.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  4369.  
  4370. Format of argument block for BH=16h:
  4371. Offset    Size    Description
  4372.  00h    WORD    pointer to 18-byte buffer for device block (see below)
  4373.         first WORD must be set to desired logical unit/device number
  4374.  
  4375. Format of argument block for BH=17h:
  4376. Offset    Size    Description
  4377.  00h    WORD    logical unit/device number
  4378.  02h    WORD    pointer to information block in caller's DS (see below)
  4379.  
  4380. Format of argument block for BH=18h:
  4381. Offset    Size    Description
  4382.  00h    WORD    pointer to WORD buffer for major error code
  4383.  02h    WORD    pointer to WORD buffer for minor error code
  4384.  
  4385. Format of argument block for BH=19h:
  4386. Offset    Size    Description
  4387.  00h    WORD    logical unit/device number
  4388.  
  4389. Format of argument block for BH=1Ch,1Dh:
  4390. Offset    Size    Description
  4391.  00h    WORD    pointer to profile block in caller's DS (see below)
  4392.  
  4393. Format of device block, argument block for BH=15h:
  4394. Offset    Size    Description
  4395.  00h    WORD    logical unit/device number
  4396.  02h    WORD    logical unit/device type
  4397.  04h    WORD    display model number
  4398.  06h    WORD    numeric checking
  4399.  08h    WORD    status line
  4400.  0Ah    BYTE    unprotected normal field attribute
  4401.  0Bh    BYTE    unprotected intensified field attribute
  4402.  0Ch    BYTE    protected normal field attribute
  4403.  0Dh    BYTE    protected intensified field attribute
  4404.  0Eh    WORD    reserved
  4405.  10h    WORD    printer port number
  4406.  
  4407. Format of information block:
  4408. Offset    Size    Description
  4409.  00h    WORD    device model number
  4410.  02h    DWORD    screen buffer pointer
  4411.  06h    DWORD    status line pointer (see below)
  4412.  0Ah    DWORD    reserved
  4413.  
  4414. Format of status line:
  4415. Offset    Size    Description
  4416.  00h    BYTE    comm line status
  4417.         00h inactive
  4418.         01h active
  4419.  01h    BYTE    activation level
  4420.         01h physical unit activated
  4421.         02h logical unit also activated
  4422.         03h session is bound
  4423.  02h    BYTE    data traffic state
  4424.         00h inactive
  4425.         01h active
  4426.  03h    BYTE    screen ownership
  4427.         00h SLU->PLU sessoin owns screen
  4428.         01h SLU->SSCP session owns screen
  4429.  04h    BYTE    keyboard status (see below)
  4430.  05h    BYTE    insert mode
  4431.         01h if in insert mode
  4432.  06h    BYTE    numeric
  4433.         01h if current screen buffer is numeric only
  4434.  07h    BYTE    printer status
  4435.         00h printer not assigned
  4436.         01h printer is inactive
  4437.         02h printer error
  4438.         03h currently printing
  4439.         04h printer is busy
  4440.         05h printer is very busy
  4441.  08h    BYTE    printer assignment
  4442.  09h    BYTE    maximum size of network name
  4443.  0Ah  N BYTEs    ASCIZ network name
  4444.     BYTE    maximum size of message window
  4445.       M BYTEs    null-terminated message window
  4446.     BYTE    code set
  4447.         00h EBCDIC
  4448.         01h ASCII
  4449.       M BYTEs    extended attributes
  4450.         01h extended attributes are in effect (stored at screen+1920)
  4451.             each extended attribute specifies
  4452.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  4453.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  4454.                   100=green,101=turquoise,110=yellow,111=white
  4455.     BYTE    extended color
  4456.         01h other than base color is in effect
  4457.  
  4458. Values for keyboard status:
  4459.  00h    UNLOCK - ready to accept data
  4460.  01h    TIME - aid was struck
  4461.  02h    SYSTEM - received response no restore
  4462.  03h    FUNCTION - unavailable keyboard function
  4463.  04h    INPUT - not currently used
  4464.  05h    ENDFIELD - field filled in insert mode
  4465.  06h    PROTECTED - attempt to enter in protected field
  4466.  07h    NUMERIC - attempt to enter in numeric field
  4467.  08h    PROGRAM - error in outbound data stream
  4468.  
  4469. Format of profile block:
  4470. Offset    Size    Description
  4471.  00h 64 BYTEs    gateway service name
  4472.  40h 16 BYTEs    gateway comm port address
  4473.  50h    WORD    primary logical unit number
  4474.  52h    WORD    secondary logical unit type
  4475.  54h    WORD    secondary logical unit number
  4476.  56h    WORD    printer assignment
  4477.  58h 50 BYTEs    keyboard definitions filename
  4478. --------V-610002-----------------------------
  4479. INT 61 - OPTIMA 1024 VGA-Sync - END ZOOM
  4480.     AX = 0002h
  4481. Note:    switches off zoom and returns window to its original state
  4482.     INT 61h is the default interrupt; the actual interrupt number can be
  4483.       obtained by calling INT 16/AH=FFh
  4484. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA"
  4485. --------N-610003SF00-------------------------
  4486. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INIT USER BUFFER PTR INFO
  4487.     AX = 0003h subfn 00h
  4488.     DS:BX -> argument block (see below)
  4489. Return: AX = status (see below)
  4490. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=08h,AX=0003h/SF=0Dh
  4491.  
  4492. Values for status:
  4493.  0000h successful
  4494.  000Bh invalid session ID
  4495.  000Ch session not active
  4496.  000Dh invalid request type
  4497.  000Eh invalid parameters
  4498.  000Fh out of heap space
  4499.  0010h timeout on send
  4500.  0011h Banyan communications error
  4501.  0012h session not waiting for host
  4502.  0013h session is active
  4503.  0014h duplicate suspend session request
  4504.  0015h no session suspended
  4505.  0016h ring data buffer full
  4506.  0017h printer error encountered
  4507.  0018h Banyan communications error
  4508.  0019h unable to make connection
  4509.  001Ah no ring buffer specified at startup
  4510.  001Bh service is down
  4511.  001Ch invalid service name
  4512.  001Dh service is closed
  4513.  001Eh invalid connection name
  4514.  001Fh max session limit reached for service
  4515.  0020h access rights list for connection/dialout does not include this user
  4516.  0021h service not responding
  4517.  0022h missing telephone number
  4518.  
  4519. Format of argument block:
  4520. Offset    Size    Description
  4521.  00h    BYTE    session ID (00h)
  4522.  01h    BYTE    00h (func "initialize user buffer pointer information area")
  4523.  02h    WORD    -> user buffer ptr info area in caller's current DS (see below)
  4524.  
  4525. Format of user buffer ptr info area:
  4526. Offset    Size    Description
  4527.  00h    WORD    flags
  4528.         0000h don't read interface's data buffer
  4529.         0001h read data buffer
  4530.  02h    DWORD    pointer to ring buffer
  4531.  06h    WORD    length of ring buffer
  4532.  08h    WORD    ring buffer offset to last byte read by caller
  4533.  0Ah    DWORD    pointer to WORD containing offset of last byte
  4534.           in ring buffer filled
  4535.  0Eh    DWORD    pointer to screen buffer
  4536.  12h    DWORD    pointer to field containing cursor position
  4537.  16h    DWORD    pointer to terminal status area (see below)
  4538.  
  4539. Format of terminal status area:
  4540. Offset    Size    Description
  4541.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  4542.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  4543.  02h    BYTE    current keypad mode (VT100,VT52 only)
  4544.         4Eh ("N") numeric mode
  4545.         41h ("A") application mode
  4546.  03h  4 BYTEs    current state of LEDs (VT100 only)
  4547.         00h off
  4548.         01h on
  4549.  07h    WORD    line error count
  4550.  09h    WORD    primary error code (see below)
  4551.  0Bh    WORD    secondary error code
  4552.  
  4553. Values for primary error code:
  4554.  0000h no error
  4555.  0001h unable to make connection
  4556.  0002h communications error, restart session
  4557.  0003h async terminal emulation service unavailable
  4558.  0004h lost carrier
  4559.  0005h all matching lines busy
  4560.  0006h no lines defined for connection name
  4561.  0007h no dial lines available on server
  4562.  0008h no matching dial lines available
  4563.  0009h out of heap space
  4564.  000Ah service error encountered
  4565.  000Bh timed out waiting to connect
  4566.  000Ch communications error
  4567.  000Dh communications error
  4568.  000Eh host wants file transferred to/from PC
  4569.  000Fh host software changed session parameter
  4570.  0010h host software changed tap settings
  4571.  0011h host software changed LED indicator
  4572.  0012h host software changed display background (secondary error code 00h for
  4573.      white on black, 01h for black on white)
  4574.  0013h host software changed display option (secondary error code 00h for off,
  4575.      01h for on)
  4576.  0014h communications error
  4577.  0015h communications error
  4578.  0016h unable to make connection
  4579.  0017h unable to make connection
  4580. --------N-610003SF01-------------------------
  4581. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SEND TO HOST
  4582.     AX = 0003h subfn 01h
  4583.     DS:BX -> argument block (see below)
  4584. Return: AX = status (see AX=0003h/SF=00h)
  4585. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=02h,AX=0003h/SF=14h
  4586.  
  4587. Format of argument block:
  4588. Offset    Size    Description
  4589.  00h    BYTE    session ID (00h)
  4590.  01h    BYTE    01h (function "send to host")
  4591.  02h    BYTE    type
  4592.         00h ASCII byte
  4593.         01h ASCII string
  4594.         02h terminal function code
  4595.         03h up arrow
  4596.         04h down arrow
  4597.         05h left arrow
  4598.         06h right arrow
  4599.         07h break
  4600.  03h  N BYTEs    type-specific info (see below)
  4601.  
  4602. Format of type-specific info:
  4603. Offset    Size    Description
  4604. ---ASCII byte---
  4605.  03h    BYTE    byte to send to host
  4606. ---ASCII string---
  4607.  03h    WORD    length of string
  4608.  05h    WORD    pointer to string
  4609. ---terminal function code (VT52/VT100)---
  4610.  03h    BYTE    function code
  4611.         00h keypad 0
  4612.         01h keypad 1
  4613.         ...
  4614.         09h keypad 9
  4615.         0Ah keypad -
  4616.         0Bh keypad ,
  4617.         0Ch keypad .
  4618.         0Dh keypad ENTER
  4619.         0Eh PF1
  4620.         0Fh PF2
  4621.         10h PF3
  4622.         11h PF4
  4623. ---terminal function code (IBM3101)---
  4624.  03h    BYTE    function code
  4625.         00h PF1
  4626.         ...
  4627.         07h PF8
  4628.         08h Home
  4629. --------N-610003SF02-------------------------
  4630. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "CONTROL MONITOR"
  4631.     AX = 0003h subfn 02h
  4632.     DS:BX -> argument block (see below)
  4633. Return: AX = status (see AX=0003h/SF=00h)
  4634. SeeAlso: AX=0003h/SF=03h,AX=0003h/SF=05h
  4635.  
  4636. Format of argument block:
  4637. Offset    Size    Description
  4638.  00h    BYTE    session ID (00h)
  4639.  01h    BYTE    02h (function "control monitor")
  4640.  02h    BYTE    display flag
  4641.         00h don't display data received from host
  4642.         01h display data
  4643. --------N-610003SF03-------------------------
  4644. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "FLOW CONTROL DATA"
  4645.     AX = 0003h subfn 03h
  4646.     DS:BX -> argument block (see below)
  4647. Return: AX = status (see AX=0003h/SF=00h)
  4648. Desc:    this function permits the caller to freeze/unfreeze the display and
  4649.       the ring buffer
  4650. SeeAlso: AX=0003h/SF=02h,AX=0003h/SF=06h
  4651.  
  4652. Format of argument block:
  4653. Offset    Size    Description
  4654.  00h    BYTE    session ID (00h)
  4655.  01h    BYTE    03h (function "flow control data")
  4656.  02h    BYTE    flow control flag
  4657.         00h allow characters to be put into display or ring buffer
  4658.         01h don't place any more characters into display or ring buffer
  4659. --------N-610003SF04-------------------------
  4660. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - END ACTIVE SESSION
  4661.     AX = 0003h subfn 04h
  4662.     DS:BX -> argument block (see below)
  4663. Return: AX = status (see AX=0003h/SF=00h)
  4664. SeeAlso: AX=0003h/SF=0Ah,AX=0003h/SF=0Dh,AX=0003h/SF=0Fh
  4665.  
  4666. Format of argument block:
  4667. Offset    Size    Description
  4668.  00h    BYTE    session ID (00h)
  4669.  01h    BYTE    04h (function "end active session")
  4670. --------N-610003SF05-------------------------
  4671. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SESSION PARAMETER
  4672.     AX = 0003h subfn 05h
  4673.     DS:BX -> argument block (see below)
  4674. Return: AX = status (see AX=0003h/SF=00h)
  4675. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=06h,AX=0003h/SF=08h
  4676.  
  4677. Format of argument block:
  4678. Offset    Size    Description
  4679.  00h    BYTE    session ID (00h)
  4680.  01h    BYTE    05h (function "set session parameter")
  4681.  02h    BYTE    parameter number (see below)
  4682.  03h    BYTE    new parameter value
  4683.  
  4684. Values for parameter number:
  4685.  00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  4686.         05h=300,06h=600,07h=1200,08h=2400,09h=4800, 0Ah=9600)
  4687.  01h parity (00h=none, 01h=odd, 02h=even)
  4688.  02h duplex (00h=full, 01h=half)
  4689.  03h character size (00h=7 bits, 01h=8 bits)
  4690.  04h stop bits (00h=1, 01h=2)
  4691.  05h XON/XOFF flow control (00h=no, 01h=yes)
  4692.  07h intercharacter delay in tenths of a second
  4693.  08h interline delay in tenths of a second
  4694.  09h auto linefeed (00h=no, 01h=yes)
  4695.  0Ah filter control characters (00h=no, 01h=yes)
  4696.  0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  4697.  0Ch auto wrap (00h=no, 01h=yes)
  4698.  0Dh cursor shape (00h=underscore, 01h=block)
  4699.  0Eh character set (00h=UK, 01h=US ASCII)
  4700.  0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  4701. --------N-610003SF06-------------------------
  4702. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET SESSION PARAMETER
  4703.     AX = 0003h subfn 06h
  4704.     DS:BX -> argument block (see below)
  4705. Return: AX = status (see AX=0003h/SF=00h)
  4706. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=05h,AX=0003h/SF=07h
  4707.  
  4708. Format of argument block:
  4709. Offset    Size    Description
  4710.  00h    BYTE    session ID (00h)
  4711.  01h    BYTE    06h (function "get session parameter")
  4712.  02h    BYTE    parameter number (see AX=0003h/SF=05h)
  4713.  03h    BYTE    (return) current parameter value
  4714. --------N-610003SF07-------------------------
  4715. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET TAB SETTINGS
  4716.     AX = 0003h subfn 07h
  4717.     DS:BX -> argument block (see below)
  4718. Return: AX = status (see AX=0003h/SF=00h)
  4719. SeeAlso: AX=0003h/SF=05h,AX=0003h/SF=08h
  4720.  
  4721. Format of argument block:
  4722. Offset    Size    Description
  4723.  00h    BYTE    session ID (00h)
  4724.  01h    BYTE    07h (function "set tab settings")
  4725.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  4726.           each byte = 00h if no tab, 01h if tab at that position
  4727. --------N-610003SF08-------------------------
  4728. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET TAB SETTINGS
  4729.     AX = 0003h subfn 08h
  4730.     DS:BX -> argument block (see below)
  4731. Return: AX = status (see AX=0003h/SF=00h)
  4732. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=07h
  4733.  
  4734. Format of argument block:
  4735. Offset    Size    Description
  4736.  00h    BYTE    session ID (00h)
  4737.  01h    BYTE    08h (function "get tab settings")
  4738.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  4739.         each byte set to 00h if no tab, 01h if tab at that position
  4740. --------N-610003SF09-------------------------
  4741. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - REFRESH EMULATION SCREEN
  4742.     AX = 0003h subfn 09h
  4743.     DS:BX -> argument block (see below)
  4744. Return: AX = status (see AX=0003h/SF=00h)
  4745. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Bh
  4746.  
  4747. Format of argument block:
  4748. Offset    Size    Description
  4749.  00h    BYTE    session ID (00h)
  4750.  01h    BYTE    09h (function "refresh emulation screen")
  4751. --------N-610003SF0A-------------------------
  4752. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SUSPEND SESSION TEMPORARILY
  4753.     AX = 0003h subfn 0Ah
  4754.     DS:BX -> argument block (see below)
  4755. Return: AX = status (see AX=0003h/SF=00h)
  4756. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=09h,AX=0003h/SF=0Bh,AX=0003h/SF=0Dh
  4757.  
  4758. Format of argument block:
  4759. Offset    Size    Description
  4760.  00h    BYTE    session ID (00h)
  4761.  01h    BYTE    0Ah (function "suspend session temporarily")
  4762.  02h    WORD    size of session information to be saved
  4763.  04h    WORD    pointer to buffer in caller's DS
  4764. --------N-610003SF0B-------------------------
  4765. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESUME SUSPENDED SESSION
  4766.     AX = 0003h subfn 0Bh
  4767.     DS:BX -> argument block (see below)
  4768. Return: AX = status (see AX=0003h/SF=00h)
  4769. SeeAlso: AX=0003h/SF=09h,AX=0003h/SF=0Ah
  4770.  
  4771. Format of argument block:
  4772. Offset    Size    Description
  4773.  00h    BYTE    session ID (00h)
  4774.  01h    BYTE    0Bh (function "restore previously suspended session")
  4775.  02h    WORD    size of buffer into which session info is restored
  4776.  04h    WORD    pointer to buffer in caller's DS
  4777. --------N-610003SF0C-------------------------
  4778. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SCROLL LOCK CHECKING
  4779.     AX = 0003h subfn 0Ch
  4780.     DS:BX -> argument block (see below)
  4781. Return: AX = status (see AX=0003h/SF=00h)
  4782. SeeAlso: AX=0003h/SF=00h
  4783.  
  4784. Format of argument block:
  4785. Offset    Size    Description
  4786.  00h    BYTE    session ID (00h)
  4787.  01h    BYTE    0Ch (function "set state of scroll lock checking")
  4788.  02h    BYTE    check_scroll_lock flag
  4789.         00h off
  4790.         01h on (display of host data stopped while ScrollLock on)
  4791. --------N-610003SF0D-------------------------
  4792. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - EXIT EMULATION
  4793.     AX = 0003h subfn 0Dh
  4794.     DS:BX -> argument block (see below)
  4795. Return: AX = status (see AX=0003h/SF=00h)
  4796. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Ah
  4797.  
  4798. Format of argument block:
  4799. Offset    Size    Description
  4800.  00h    BYTE    session ID (00h)
  4801.  01h    BYTE    0Dh (function "exit emulation")
  4802. --------N-610003SF0E-------------------------
  4803. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON CHAR FROM HOST
  4804.     AX = 0003h subfn 0Eh
  4805.     DS:BX -> argument block (see below)
  4806. Return: AX = status (see AX=0003h/SF=00h)
  4807. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=14h
  4808.  
  4809. Format of argument block:
  4810. Offset    Size    Description
  4811.  00h    BYTE    session ID (00h)
  4812.  01h    BYTE    0Eh (function "interrupt on character from host")
  4813.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  4814.  06h    DWORD    stack pointer to use when call is made
  4815. --------N-610003SF0F-------------------------
  4816. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START A SESSION
  4817.     AX = 0003h subfn 0Fh
  4818.     DS:BX -> argument block (see below)
  4819. Return: AX = status (see AX=0003h/SF=00h)
  4820. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Bh
  4821.  
  4822. Format of argument block:
  4823. Offset    Size    Description
  4824.  00h    BYTE    session ID (00h)
  4825.  01h    BYTE    0Fh (function "start a session")
  4826.  02h    WORD    pointer to information area in caller's current DS (see below)
  4827.  
  4828. Format of information area:
  4829. Offset    Size    Description
  4830.  00h    WORD    length of service name
  4831.  02h    WORD    pointer to service name in caller's DS
  4832.  04h    BYTE    type of connection (00h=connection name, 01h=dialout)
  4833.  05h    WORD    length of connection name/telephone number
  4834.  07h    WORD    pointer to connection name/telephone number
  4835. --------N-610003SF10-------------------------
  4836. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP PRINTING
  4837.     AX = 0003h subfn 10h
  4838.     DS:BX -> argument block (see below)
  4839. Return: AX = status (see AX=0003h/SF=00h)
  4840. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=13h
  4841.  
  4842. Format of argument block:
  4843. Offset    Size    Description
  4844.  00h    BYTE    session ID (00h)
  4845.  01h    BYTE    10h (function "start/stop printing of data received from host)
  4846.  02h    WORD    print capture flag (00h=off, 01h=on)
  4847. --------N-610003SF11-------------------------
  4848. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET FILE TRANSFER PARAMETERS
  4849.     AX = 0003h subfn 11h
  4850.     DS:BX -> argument block (see below)
  4851. Return: AX = status (see AX=0003h/SF=00h)
  4852. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  4853.  
  4854. Format of argument block:
  4855. Offset    Size    Description
  4856.  00h    BYTE    session ID (00h)
  4857.  01h    BYTE    11h (function "get file transfer parameters")
  4858.  02h    WORD    pointer to info area in caller's current DS (see below)
  4859.  
  4860. Format of info area:
  4861. Offset    Size    Description
  4862.  00h    BYTE    protocol flag (00h none, 01h Kermit)
  4863.  01h    BYTE    direction flag (00h send, 01h receive)
  4864.  02h    BYTE    length of null-terminated PC filename
  4865.  03h    DWORD    pointer to null-terminated PC filename
  4866.  07h    BYTE    length of null-terminated host filename
  4867.  08h    DWORD    pointer to null-terminated host filename
  4868. --------N-610003SF12-------------------------
  4869. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET CONNECTION INFORMATION
  4870.     AX = 0003h subfn 12h
  4871.     DS:BX -> argument block (see below)
  4872. Return: AX = status (see AX=0003h/SF=00h)
  4873. SeeAlso: AX=0003h/SF=11h,AX=0003h/SF=15h
  4874.  
  4875. Format of argument block:
  4876. Offset    Size    Description
  4877.  00h    BYTE    session ID (00h)
  4878.  01h    BYTE    12h (function "get connection information")
  4879.  02h    WORD    offset of buffer for connection information (see below)
  4880.  
  4881. Format of connection information:
  4882. Offset    Size    Description
  4883.  00h    WORD    length of service name (returned)
  4884.  02h    WORD    pointer to 64-byte buffer for service name
  4885.  04h    BYTE    type of connection
  4886.         00h connection name
  4887.         01h dialout
  4888.  05h    WORD    length of connection name/telephone number
  4889.  07h    WORD    pointer to 64-byte buffer for name/telno
  4890.  09h    BYTE    server line number being used (returned)
  4891. --------N-610003SF13-------------------------
  4892. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP TRACING TRAFFIC
  4893.     AX = 0003h subfn 13h
  4894.     DS:BX -> argument block (see below)
  4895. Return: AX = status (see AX=0003h/SF=00h)
  4896. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Eh
  4897.  
  4898. Format of argument block:
  4899. Offset    Size    Description
  4900.  00h    BYTE    session ID (00h)
  4901.  01h    BYTE    13h (function "start/stop tracing data traffic in session")
  4902.  02h    BYTE    trace flag (00h=off, 01h=on)
  4903. --------N-610003SF14-------------------------
  4904. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON HOST MESSAGE
  4905.     AX = 0003h subfn 14h
  4906.     DS:BX -> argument block (see below)
  4907. Return: AX = status (see AX=0003h/SF=00h)
  4908. SeeAlso: AX=0003h/SF=0Eh
  4909.  
  4910. Format of argument block:
  4911. Offset    Size    Description
  4912.  00h    BYTE    session ID (00h)
  4913.  01h    BYTE    14h (function "interrupt on message from host")
  4914.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  4915.  06h    DWORD    stack pointer to use when call is made
  4916. --------N-610003SF15-------------------------
  4917. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESET ERROR
  4918.     AX = 0003h subfn 15h
  4919.     DS:BX -> argument block (see below)
  4920. Return: AX = status (see AX=0003h/SF=00h)
  4921. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  4922.  
  4923. Format of argument block:
  4924. Offset    Size    Description
  4925.  00h    BYTE    session ID (00h)
  4926.  01h    BYTE    15h (function "reset error")
  4927. --------V-610003-----------------------------
  4928. INT 61 - OPTIMA 1024 VGA-Sync - REPORT ZOOM FACTOR
  4929.     AX = 0003h
  4930. Return: AX = zoom factor
  4931. Note:    returns the current zoom factor
  4932.     INT 61h is the default interrupt; the actual interrupt number can be
  4933.       obtained by calling INT 16/AH=FFh
  4934. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0005h"OPTIMA"
  4935. --------N-610004-----------------------------
  4936. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  4937.     AX = 0004h
  4938.     DS:DX -> request block (function 0008h)
  4939. Return: AX = status
  4940.         0000h server ID returned in request block
  4941.         000Fh invalid drive
  4942.         0015h drive not ready
  4943.  
  4944. Format of request block:
  4945. Offset    Size    Description
  4946.  00h    WORD    0008h
  4947.  02h    WORD    drive number (0=default, 1=A, ...)
  4948.  04h  6 BYTEs    buffer for server ID
  4949. --------V-610004-----------------------------
  4950. INT 61 - OPTIMA 1024 VGA-Sync - ENTER SPECIFY MODE
  4951.     AX = 0004h
  4952. Note:    Specify Mode is enabled by hot key (seeAlso below), and allows
  4953.     panning and zooming via the numeric keypad.
  4954.     INT 61h is the default interrupt; the actual interrupt number can be
  4955.       obtained by calling INT 16/AH=FFh
  4956.     The Zoom interrupt no. can be obtained with function INT 16h,AH=0FFh
  4957. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0007h"OPTIMA"
  4958. --------N-610005-----------------------------
  4959. INT 61 - Banyan VINES - PRINTER CONTROL
  4960.     AX = 0005h
  4961.     DS:DX -> request block
  4962. Return: AX = status
  4963.         0000h successful
  4964.         0001h network software not installed or incompatible
  4965. SeeAlso: INT 2F/AX=D702h
  4966.  
  4967. Format of request block:
  4968. Offset    Size    Description
  4969.  00h    WORD    function
  4970.         0201h "endspool" all data for a print job has been sent
  4971.         0205h "getactive" get currently active printer port
  4972.  02h    WORD    number of active port (1-3)
  4973.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  4974.  06h    WORD    0000h
  4975. --------V-610005-----------------------------
  4976. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  4977.     AX = 0005h
  4978.     BX:CX -> buffer for window parameters (see below)
  4979. Note:    INT 61h is the default interrupt; the actual interrupt number can be
  4980.       obtained by calling INT 16/AH=FFh
  4981. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0003h"OPTIMA"
  4982. SeeAlso: INT 61/AX=0006h"OPTIMA"
  4983.  
  4984. Format of window parameters:
  4985. Offset    Size    Description
  4986.  00h    WORD    X start of zoom window
  4987.  02h    WORD    Y start of zoom window
  4988.  04h    WORD    X end of zoom window
  4989.  06h    WORD    Y end of zoom window
  4990.  08h    WORD    current zoom factor
  4991.  0Ah    WORD    zoom offset start X
  4992.  0Ch    WORD    zoom offset start Y
  4993. --------V-610006-----------------------------
  4994. INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM WINDOW
  4995.     AX = 0006h
  4996.     BX:CX -> zoom window description (see below)
  4997. Notes:    width of zoom window must be a multiple of the pixel replication
  4998.       factor
  4999.     INT 61h is the default interrupt; the actual interrupt number can be
  5000.       obtained by calling INT 16/AH=FFh
  5001. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0001h"OPTIMA"
  5002. SeeAlso: INT 61/AX=0005h"OPTIMA",INT 61/AX=0008h"OPTIMA"
  5003.  
  5004. Format of zoom window description:
  5005. Offset    Size    Description
  5006.  00h    WORD    X start of zoom window
  5007.  02h    WORD    Y start of zoom window
  5008.  04h    WORD    X end of zoom window
  5009.  06h    WORD    Y end of zoom window
  5010. --------V-610007-----------------------------
  5011. INT 61 - OPTIMA 1024 VGA-Sync - QUERY APPLICATION KEY
  5012.     AX = 0007h
  5013. Return: AX = 0000h/0001h
  5014. Notes:    In specify mode, the END key has been reserved for applications.
  5015.     Returns the current toggle state of that key. E.g. in the
  5016.       OPTIMA AutoCAD driver, 0 means, AutoCAD calls subfunction 0001h
  5017.       every time the cross cursor moves.
  5018.     INT 61h is the default interrupt; the actual interrupt number can be
  5019.       obtained by calling INT 16/AH=FFh
  5020. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0001h"OPTIMA"
  5021. SeeAlso: INT 61/AX=0004h"OPTIMA",INT 7A"AutoCAD"
  5022. --------N-610007BX0002-----------------------
  5023. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  5024.     AX = 0007h
  5025.     BX = 0002h
  5026.     DS:DX -> StreetTalk service name
  5027.     DS:DI -> port record block (see below)
  5028. Return: AX = status (see below)
  5029. SeeAlso: AX=0007h/BX=0004h
  5030.  
  5031. Values for status:
  5032.  0000h successful
  5033.  0001h PC network software not installed or incompatible
  5034.  03E9h incorrect name syntax
  5035.  03EAh organization name too long
  5036.  03EBh group name too long
  5037.  03ECh item name too long
  5038.  03EDh StreetTalk name too long
  5039.  03F3h organization not found
  5040.  03F4h group not found
  5041.  03F5h StreetTalk name not found
  5042.  03F8h not a StreetTalk name
  5043.  0409h modify access denied
  5044.  040Dh appropriate StreetTalk name unavailable
  5045.  
  5046. Format of port record block:
  5047. Offset    Size    Description
  5048.  00h    WORD    number of 17-byte elements
  5049.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  5050.         (see AX=0001h#"Sosock" for port format)
  5051. --------N-610007BX0004-----------------------
  5052. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  5053.     AX = 0007h
  5054.     BX = 0004h
  5055.     DS:DX -> StreetTalk name of service
  5056.     DS:DI -> port record block (see below)
  5057. Return: AX = status (see AX=0007h/BX=0002h)
  5058. SeeAlso: AX=0007h/BX=0002h
  5059.  
  5060. Format of port record block:
  5061. Offset    Size    Description
  5062.  00h    WORD    number of 17-byte elements
  5063.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  5064.         (see AX=0001h#"Sosock" for port format)
  5065. --------N-610007BX0005-----------------------
  5066. INT 61 - Banyan VINES - GET USER NAME
  5067.     AX = 0007h
  5068.     BX = 0005h
  5069.     DS:DX -> 64-byte buffer for user's StreetTalk name
  5070. Return: AX = status
  5071.         0000h successful
  5072.         0001h network software not installed or incompatible
  5073. Note:    if no user logged in, first byte of returned name will be 00h
  5074. SeeAlso: AX=0007h/BX=0007h
  5075. --------N-610007BX0006-----------------------
  5076. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  5077.     AX = 0007h
  5078.     BX = 0006h
  5079.     SI = error code (>100)
  5080.     DS:DX -> 80-byte buffer for error text
  5081. Return: AX = status
  5082.         0000h successful
  5083.         0001h network software not installed or incompatible        
  5084. --------N-610007BX0007-----------------------
  5085. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  5086.     AX = 0007h
  5087.     BX = 0007h
  5088.     DS:DX -> NiceName block (see below)
  5089. Return: AX = status (see AX=0007h/BX=0002h)
  5090. SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0008h
  5091.  
  5092. Format of NiceName block:
  5093. Offset    Size    Description
  5094.  00h    WORD    type of name
  5095.         0064h organization
  5096.         00C8h group
  5097.         012Ch item
  5098.  02h    WORD    pointer to ASCIZ input name
  5099.  04h    WORD    pointer to 64-byte buffer for output name
  5100. --------N-610007BX0008-----------------------
  5101. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  5102.     AX = 0007h
  5103.     BX = 0008h
  5104.     DS:DX -> enumerate block (see below)
  5105. Return: AX = status
  5106.         0000h successful
  5107.         0411h all matching names have been returned
  5108.         0412h some groups unavailable, all available matches returned
  5109. Note:    each program using this call should continue until a nonzero status
  5110.       is returned; otherwise, some resources will not be freed for several
  5111.       hours
  5112. SeeAlso: AX=0007h/BX=0007h
  5113.  
  5114. Format of enumerate block:
  5115. Offset    Size    Description
  5116.  00h    WORD    return code
  5117.  02h    WORD    pointer to pattern string
  5118.  04h    WORD    enumerate type
  5119.         0064h organization
  5120.         00C8h group
  5121.         012Ch item
  5122.  06h    WORD    enumerate class
  5123.         0000h unspecified (return all matching items)
  5124.         0001h user names
  5125.         0002h service names
  5126.         0003h list names
  5127.         0004h nicknames
  5128.  08h    WORD    pointer to category criteria block (see below) or 0
  5129.  0Ah    WORD    pointer to array of 64-byte returned names
  5130.  0Ch    WORD    number of names returned
  5131.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  5132.           call)
  5133.  
  5134. Format of category criteria block:
  5135. Offset    Size    Description
  5136.  00h    WORD    exclude flag
  5137.         0000h return only items with the specified categories
  5138.         0001h return all items except those with the given categories
  5139.  02h    WORD    number of categories
  5140.  04h    WORD    category 1 value
  5141.  06h    WORD    category 2 value
  5142.         ...
  5143.  
  5144. Values for common service categories:
  5145.  0002h file service
  5146.  0003h print service
  5147.  0004h mail service
  5148.  0005h StreetTalk
  5149.  0006h time service
  5150.  0008h semaphore service
  5151.  0009h 3270/SNA service
  5152.  000Ah asynchronous terminal emulation service
  5153.  000Ch NETBIOS service
  5154.  000Dh PC-based service
  5155. --------V-610008-----------------------------
  5156. INT 61 - OPTIMA 1024 VGA-Sync - SET ZOOM OFFSET
  5157.     AX = 0008h
  5158.     BX = X start of zoom offset
  5159.     CX = Y start of zoom offset
  5160. Notes:    specifies the first byte of video memory to appear in the zoom window
  5161.     INT 61h is the default interrupt; the actual interrupt number can be
  5162.       obtained by calling INT 16/AH=FFh
  5163. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 61/AX=0000h"OPTIMA",INT 61/AX=0006h"OPTIMA"
  5164. --------N-610008BX0002-----------------------
  5165. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  5166.     AX = 0008h
  5167.     BX = 0002h
  5168.     CX = flags
  5169.         bit 0: message will remain on screen until user presses ^X
  5170.         bit 1: ring bell after displaying message
  5171.         bit 2: blink
  5172.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  5173. Return: AX = status
  5174.         0000h successful
  5175.         000Bh message display function currently busy
  5176.         000Ch message queue full
  5177. Note:    queues up to three messages to be displayed on the bottom line
  5178. SeeAlso: AX=0008h/BX=0003h
  5179. --------N-610008BX0003-----------------------
  5180. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  5181.     AX = 0008h
  5182.     BX = 0003h
  5183.     DS:DX -> request block
  5184. Return: AX = status
  5185.         0000h successful
  5186.         0001h network software not installed or incompatible
  5187. Notes:    message handler should not call BIOS or DOS functions, and should
  5188.       either call next handler or simply return
  5189.     to stop intercepting messages, set prev and next request blocks to
  5190.       point at each other
  5191. SeeAlso: AX=0008h/BX=0002h
  5192.  
  5193. Format of request block:
  5194. Offset    Size    Description
  5195.  00h    DWORD    pointer to user-written message handler
  5196.  04h    DWORD    pointer to next request block (filled in by VINES)
  5197.  08h    DWORD    pointer to previous request block (filled in by VINES)
  5198.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see below)
  5199.  
  5200. Format of message storage area:
  5201. Offset    Size    Description
  5202.  00h 16 BYTEs    IPC port of message sender (see AX=0001h#"Sosock")
  5203.  10h    BYTE    message flags
  5204.  11h    WORD    reserved
  5205.  13h    BYTE    length of message
  5206.  14h 80 BYTEs    message text
  5207. --------N-61000A-----------------------------
  5208. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  5209.     AX = 000Ah
  5210. Note:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  5211.       which is loaded second.  The first interface loaded will use AX=0002h
  5212. SeeAlso: INT 61/AX=0002h
  5213. --------N-6101-------------------------------
  5214. INT 61 - Banyan VINES - CHECK SERVICE
  5215.     AH = 01h
  5216.     AL = service ID
  5217.         01h communications
  5218.         02h primary 3270 emulation
  5219.         03h async terminal emulation
  5220.         04h file deflection
  5221.         07h StreetTalk
  5222.         08h environment
  5223.         0Ah secondary 3270 emulation
  5224.         0Bh semaphore service
  5225.         0Ch 3270 emulation active status
  5226.         0Dh 3270 keyboard interrupt simulator
  5227. Return: AX = status
  5228.         0000h installed
  5229.         0001h not installed
  5230.         0002h invalid ID
  5231. --------N-6101--BX0000-----------------------
  5232. INT 61 u - PC/TCP kernel v2.1+ - "net_config" - CONFIGURE RUNNING KERNEL
  5233.     AH = 01h
  5234.     BX = 0000h
  5235.     DH = tag number
  5236.     DL = device number
  5237.     DS:SI -> buffer to send to kernel
  5238.     ES:DI -> integer containing size of buffer
  5239. Return: CF clear if successful
  5240.     CF set on error
  5241.         AX = error code (see INT 61"PC/TCP")
  5242. Notes:    there are a large number of tags available; the items returned
  5243.       all refer to local kernel configuration, and are not needed in
  5244.       normal use.
  5245. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=02"PC/TCP"
  5246. --------N-6102-------------------------------
  5247. INT 61 - Banyan VINES - GET REVISION NUMBER
  5248.     AH = 02h
  5249.     DS:DX -> 2-byte buffer for result
  5250. Return: AX = 0000h installed
  5251.         DS:DX buffer contains revision number as
  5252.         10000d * major_ver + 100d * minor_ver + patch_revision
  5253. --------N-6102--BX0000-----------------------
  5254. INT 61 u - PC/TCP kernel v2.1+ - "get_kernel_info" - GET MISCELLAN LOCAL INFO
  5255.     AH = 02h
  5256.     BX = 0000h
  5257.     DH = tag number
  5258.     DL = device number
  5259.     DS:SI -> buffer for result (up to 48 bytes for version <= 2.2)
  5260.     ES:DI -> integer containing size of buffer
  5261. Return: CF clear if successful
  5262.         Data loaded into specified buffer, and size value altered
  5263.     CF set on error
  5264.         AX = error code (see INT 61"PC/TCP")
  5265. Notes:    there are a large number of tags available; the items returned
  5266.       all refer to local kernel configuration, and are not needed in
  5267.       normal use.
  5268. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  5269. --------N-6105-------------------------------
  5270. INT 61 - PC/TCP kernel v2.05+ - "get_addr" - GET INTERNET ADDRESS OF NET DESCR
  5271.     AH = 05h
  5272.     BX = network descriptor
  5273. Return: CF clear if successful
  5274.         DX:AX = Internet address of ND
  5275.     CF set on error
  5276.         AX = error code (see INT 61"PC/TCP")
  5277. Notes:    the installation check consists of testing for the signature "TCPTSR"
  5278.       three bytes beyond the start of the interrupt handler
  5279.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  5280.       interrupt from 20h through E0h
  5281. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=16h"PC/TCP"
  5282. --------N-6106-------------------------------
  5283. INT 61 - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
  5284.     AH = 06h
  5285.     BX = network descriptor (must be allocated and open)
  5286.     DS:SI -> 38-byte buffer (see below)
  5287. Return: CF clear if successful
  5288.         buffer filled
  5289.     CF set on error
  5290.         AX = error code (see INT 61"PC/TCP")
  5291. Desc:    returns the statistics relevant to the particular network interface
  5292.        used by the specified network descriptor
  5293. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=05h"PC/TCP"
  5294.  
  5295. Format of buffer:
  5296. Offset    Size    Description
  5297.  00h    WORD    interface class (e.g. 802.3)
  5298.  02h    WORD    type (manufacturer) of interface
  5299.  04h    WORD    interface number
  5300.  06h    DWORD    IP address of interface (big-endian)
  5301.  0Ah    DWORD    subnet mask
  5302.  0Eh    WORD    0001h if interface is up
  5303.  10h    DWORD    total packets received
  5304.  14h    DWORD    total packets sent
  5305.  18h    DWORD    receive errors
  5306.  1Ch    DWORD    send errors
  5307.  20h    WORD    length of local net address (e.g. 0006h for Ethernet)
  5308.  22h    DWORD    pointer to local net address
  5309. --------N-6107-------------------------------
  5310. INT 61 - PC/TCP kernel v2.05+ - "net_globalize" - MAKE NET DESCRIPTOR GLOBAL
  5311.     AH = 07h
  5312.     BX = local network descriptor
  5313. Return: CF clear if successful
  5314.         AX = global network descriptor
  5315.     CF set on error
  5316.         AX = error code (see INT 61"PC/TCP")
  5317. Notes:    the new network descriptor can be accessed from all processes and is
  5318.       independent of DOS
  5319. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  5320. SeeAlso: INT 61/AH=29h
  5321. --------N-6108-------------------------------
  5322. INT 61 - PC/TCP kernel v2.05+ - "net_release" - CLOSE A NETWORK DESCRIPTOR
  5323.     AH = 08h
  5324.     BX = network descriptor
  5325. Return: CF clear if successful
  5326.     CF set on error
  5327.         AX = error code (see INT 61"PC/TCP")
  5328. Note:    the descriptor will be closed and resources released.  If a stream
  5329.       descriptor, the protocol (FIN etc) is completed unless the
  5330.       non-blocking option has been set.
  5331. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=09h"PC/TCP"
  5332. --------N-6109-------------------------------
  5333. INT 61 - PC/TCP kernel v2.05+ - "net_releaseall" - CLOSE ALL NON-GLOBAL DESCRS
  5334.     AH = 09h
  5335. Return: CF clear
  5336. Notes:    this call performs function 08h on every non-global network descriptor.
  5337.       Global descriptors must be released individually.
  5338.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  5339.       interrupt from 20h through E0h
  5340. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  5341. --------N-610A-------------------------------
  5342. INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
  5343.     AH = 0Ah
  5344.     ???
  5345. Return: ???
  5346. Note:    this function is described as "unused" in the v2.05 and v2.2
  5347.       documentation
  5348. SeeAlso: AH=0Bh
  5349. --------N-610B-------------------------------
  5350. INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
  5351.     AH = 0Bh
  5352.     ???
  5353. Return: ???
  5354. Note:    this function is described as "unused" in the v2.05 and v2.2
  5355.       documentation
  5356. SeeAlso: AH=0Ah
  5357. --------N-610C-------------------------------
  5358. INT 61 u - PC/TCP kernel v2.05+ - "net_stat" - GET CONNECTION STATISTICS
  5359.     AH = 0Ch
  5360.     BX = network descriptor or one of the following:
  5361.         FFFCh for kernel ICMP statistics
  5362.         FFFDh for kernel UDP statistics
  5363.         FFFEh for kernel IP statistics
  5364.         FFFFh for kernel TCP statistics
  5365.     DS:DX -> 64-byte buffer
  5366. Return: CF clear if successful
  5367.         buffer filled
  5368.     CF set on error
  5369.         AX = error code (see INT 61"PC/TCP")
  5370. Note:    the fields filled in for a network descriptor depend on the protocol
  5371.       family used by that descriptor's connection
  5372. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5373.  
  5374. Format of kernel TCP statistics:
  5375. Offset    Size    Description
  5376.  00h 16 BYTEs    unused
  5377.  10h    DWORD    bytes sent
  5378.  14h    DWORD    bytes received
  5379.  18h  8 BYTEs    unused
  5380.  20h    DWORD    packets sent
  5381.  24h    DWORD    packets received
  5382.  28h    DWORD    bad checksums
  5383.  2Ch    DWORD    count of window ignored by remote
  5384.  30h    DWORD    timeouts
  5385.  34h    DWORD    resets
  5386.  38h    DWORD    duplicate packets
  5387.  3Ch    DWORD    retransmits
  5388.  
  5389. Format of kernel IP statistics:
  5390. Offset    Size    Description
  5391.  00h  8 BYTEs    unused
  5392.  08h    DWORD    invalid IP header length errors
  5393.  0Ch    DWORD    protocol errors (unwanted packets)
  5394.  10h    DWORD    duplicate fragments received
  5395.  14h    DWORD    bad fragments received
  5396.  18h    DWORD    security errors
  5397.  1Ch    DWORD    count of bad IP addresses received
  5398.  20h    DWORD    packets sent
  5399.  24h    DWORD    packets received
  5400.  28h    DWORD    bad checksums received
  5401.  2Ch    DWORD    total IP protocol errors
  5402.  30h    DWORD    fragmentation errors
  5403.  34h    DWORD    IP packets discarded + bad security + bad fragments
  5404.  38h    DWORD    fragments received
  5405.  3Ch  4 BYTEs    unused
  5406.  
  5407. Format of kernel UDP statistics:
  5408. Offset    Size    Description
  5409.  00h 28 BYTEs    unused
  5410.  1Ch    DWORD    packets dropped for lack of buffers
  5411.  20h    DWORD    packets sent
  5412.  24h    DWORD    packets received
  5413.  28h    DWORD    bad checksums
  5414.  2Ch    DWORD    port not listening errors
  5415.  30h  4 BYTEs    unused
  5416.  34h    DWORD    truncated receives
  5417.  38h  8 BYTEs    unused
  5418.  
  5419. Format of kernel ICMP statistics:
  5420. Offset    Size    Description
  5421.  00h    DWORD    "TimeEx" sent
  5422.  04h    DWORD    "TimeEx" received
  5423.  08h    DWORD    "ParamProb" sent
  5424.  0Ch    DWORD    "ParamProb" received
  5425.  10h    DWORD    redirects received
  5426.  14h    DWORD    source quenches received
  5427.  18h    DWORD    ICMP Echo Requests ("ping") sent
  5428.  1Ch    DWORD    ICMP Echo Requests received
  5429.  20h    DWORD    packets sent
  5430.  24h    DWORD    packets received
  5431.  28h    DWORD    bad packets received
  5432.  2Ch    DWORD    "DestUn" received
  5433.  30h    DWORD    packet send errors
  5434.  34h    DWORD    "DestUn" sent
  5435.  38h    DWORD    ICMP Echo replies received
  5436.  3Ch    DWORD    ICMP Echo replies sent
  5437. --------N-610D-------------------------------
  5438. INT 61 - PC/TCP kernel v2.05+ - "is_netnd" - CHECK IF NETWORK DESCRIPTOR VALID
  5439.     AH = 0Dh
  5440.     BX = possible network descriptor
  5441. Return: CF clear if valid
  5442.     CF set on error
  5443.         AX = error code (see INT 61"PC/TCP")
  5444. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  5445. SeeAlso: INT 61/AH=22h
  5446. --------N-610E-------------------------------
  5447. INT 61 - PC/TCP kernel v2.05+ - "net_select" - DETECT READINESS OF NETWORK
  5448.     AH = 0Eh
  5449.     BX = maximum value of network descriptor for which to return info
  5450.     DS:DX -> 32-bit (max) array of bit flags for read readiness
  5451.     ES:DI -> 32-bit (max) array of bit flags for write readiness
  5452. Return: CF clear
  5453. Notes:    bits in the DS:DX buffer are set if the corresponding network
  5454.       descriptor may be read without blocking; bits in the ES:DI buffer
  5455.       are set if the corresponding network descriptor may be written
  5456.       without blocking.  This implies that the network descriptor has
  5457.       opened correctly and the protocol initialized.
  5458.     the installation check consists of testing for the signature "TCPTSR"
  5459.       three bytes beyond the start of the interrupt handler
  5460.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  5461.       interrupt from 20h through E0h
  5462. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5463. --------N-610F-------------------------------
  5464. INT 61 - PC/TCP kernel v2.05+ - "get_netversion" - GET SOFTWARE VERSION
  5465.     AH = 0Fh
  5466. Return: CF clear
  5467.     AX = version (AH = major, AL = minor)
  5468.     BX = patch level
  5469. Note:    patch levels are no longer used starting with version 2.10; instead,
  5470.       the minor version level is incremented.
  5471. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5472. --------N-6110-------------------------------
  5473. INT 61 - PC/TCP kernel v2.05+ - "net_shutdown" - UNINSTALL
  5474.     AH = 10h
  5475. Return: CF clear if successful
  5476.     CF set on error
  5477.         AX = error code (see INT 61"PC/TCP")
  5478. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5479. --------N-6111-------------------------------
  5480. INT 61 - PC/TCP kernel v2.05+ - "disable_async" - DISABLE ASYNCHRONOUS HANDLERS
  5481.     AH = 11h
  5482. Return: CF clear
  5483.     AX = previous state
  5484.         0000h async calls were already disabled
  5485.         else  async calls were enabled
  5486. SeeAlso: INT 61"PC/TCP",INT 61/AH=12h
  5487. --------N-6112-------------------------------
  5488. INT 61 - PC/TCP kernel v2.05+ - "enable_async" - ENABLE ASYNCHRONOUS HANDLERS
  5489.     AH = 12h
  5490. Return: CF clear
  5491.     AX = previous state
  5492.         0000h async calls were disabled
  5493.         else  async calls were already enabled
  5494. SeeAlso: INT 61"PC/TCP",INT 61/AH=11h
  5495. --------N-6113-------------------------------
  5496. INT 61 - PC/TCP kernel v2.05 - "net_connect" - OPEN A NETWORK CONNECTION
  5497.     AH = 13h
  5498.     BX = network descriptor (FFFFh for automatic net_getdesc)
  5499.     DX = protocol (see below)
  5500.     DS:SI -> buffer for "addr" structure (see below)
  5501. Return: CF clear if successful
  5502.         AX = network descriptor used or allocated
  5503.     CF set on error
  5504.         AX = error code (see INT 61"PC/TCP")
  5505. Notes:    invokes AH=22h if BX=FFFFh on entry; also invokes AH=19h in various
  5506.       cases
  5507.     will wait for protocol on stream connections unless non-blocking was
  5508.       set with AH=20h
  5509. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=18h,INT 61/AH=23h
  5510.  
  5511. Values for protocol:
  5512.  0001h raw net (undocumented)
  5513.  0002h raw IP
  5514.  0003h datagram (UDP)
  5515.  0004h stream (TCP)
  5516.  0005h raw ICMP
  5517.  
  5518. Format of structure "addr":
  5519. Offset    Size    Description
  5520.  00h    DWORD    Internet address (network order)
  5521.  04h    WORD    remote socket number (network order)
  5522.  06h    WORD    local socket number (network order) 0000h means "you choose"
  5523.  08h    BYTE    protocol (see above)
  5524. --------N-6114-------------------------------
  5525. INT 61 u - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
  5526.     AH = 14h
  5527.     BX = network descriptor
  5528. Return: CF set
  5529.         AX = 0018h (see INT 61"PC/TCP")
  5530. Note:    displays error message "Illegal system call!  Please upgrade your
  5531.       PCserver software" to standard output
  5532. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=0Ah,INT 61/AH=15h
  5533. --------N-6115-------------------------------
  5534. INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
  5535.     AH = 15h
  5536.     ???
  5537. Return: ???
  5538. Note:    this function is described as "unused" in the v2.2 documentation
  5539. SeeAlso: INT 61/AH=0Bh,INT 61/AH=14h
  5540. --------N-6116-------------------------------
  5541. INT 61 - PC/TCP kernel v2.05+ - "net_peer" - GET DATA ON REMOTE PEER
  5542.     AH = 16h
  5543.     BX = network descriptor
  5544.     DS:DX -> 9-byte buffer for "addr" structure (see AH=13h)
  5545. Return: CF clear if successful
  5546.         buffer filled
  5547.     CF set on error
  5548.         AX = error code (see INT 61"PC/TCP")
  5549. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5550. --------N-6117-------------------------------
  5551. INT 61 - PC/TCP kernel v2.05+ - "net_reconfig" - RE-READ KERNEL CONFIGURATION
  5552.     AH = 17h
  5553. Return: CF clear if successful
  5554.     CF set on error
  5555.         AX = error code (see INT 61"PC/TCP")
  5556. Note:    this routine is deprecated in v2.1+ and will eventually be withdrawn;
  5557.       in v2.1+, this function calls AH=01h which should be used instead
  5558. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  5559. --------N-6118-------------------------------
  5560. INT 61 - PC/TCP kernel v2.05+ - "net_eof" - CLOSE TRANSMIT SIDE OF CONNECTION
  5561.     AH = 18h
  5562.     BX = network descriptor
  5563. Return: CF clear if successful
  5564.     CF set on error
  5565.         AX = error code (see INT 61"PC/TCP")
  5566. Note:    a TCP "FIN" command is sent and no further data may be transmitted,
  5567.       although the connection remains open
  5568. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h"PC/TCP"
  5569. --------N-6119-------------------------------
  5570. INT 61 - PC/TCP kernel v2.05+ - "net_abort" - RESET A NETWORK CONNECTION
  5571.     AH = 19h
  5572.     BX = network descriptor
  5573. Return: CF clear if successful
  5574.     CF set on error
  5575.         AX = error code (see INT 61"PC/TCP")
  5576. Desc:    immediately destroys the specified connection
  5577. Note:    send a TCP "RST" command if a stream connection is open
  5578. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=24h
  5579. --------N-611A-------------------------------
  5580. INT 61 - PC/TCP kernel v2.05+ - "net_write" - WRITE TO THE NETWORK
  5581.     AH = 1Ah
  5582.     BX = network descriptor
  5583.     CX = number of bytes to transmit (0000h allowed)
  5584.     DX = send options (see below)
  5585.     DS:SI -> data to be written
  5586. Return: CF clear if successful
  5587.         AX = number of bytes actually written
  5588.         DX = ???
  5589.     CF set on error
  5590.         AX = error code (see INT 61"PC/TCP")
  5591. Notes:    the installation check consists of testing for the signature "TCPTSR"
  5592.       three bytes beyond the start of the interrupt handler
  5593.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  5594.       interrupt from 20h through E0h
  5595. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  5596.  
  5597. Bitfields for send options:
  5598.  bit 0    signal "URG"ent data
  5599.  bit 3    attempt rerouting on non-stream calls if first attempt fails
  5600.  bit 4    send data with PUSH flag (no override of Nagle)
  5601.      (see option 0Ch)
  5602.  bit 5    fail rather than truncating datagram
  5603.  bit 6    fail rather than blocking
  5604.  bit 7    broadcast packet
  5605. --------N-611B-------------------------------
  5606. INT 61 - PC/TCP kernel v2.05+ - "net_read" - READ FROM THE NETWORK
  5607.     AH = 1Bh
  5608.     BX = network descriptor
  5609.     CX = maximum number of bytes to read
  5610.     DX = receive options (see below)
  5611.     DS:SI -> buffer for data
  5612.     ES:DI -> "addr" structure (see AH=13h) for remote from which to read
  5613.         0000h:0000h for any
  5614. Return: CF clear if successful
  5615.         AX = number of bytes actually read
  5616.         DX = ???
  5617.     CF set on error
  5618.         AX = error code (see INT 61"PC/TCP")
  5619. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  5620.  
  5621. Bitfields for receive options:
  5622.  bit 1    do not remove data from queue, just copy it
  5623.  bit 2    do not copy data, just remove it from queue
  5624.  bit 5    fail if datagram would be truncated
  5625.  bit 6    do not block, return error if no data available
  5626. Note:    special case for UDP: if both bits 1 and 2 set, return num of datagrams
  5627. --------N-611C-------------------------------
  5628. INT 61 - PC/TCP kernel v2.05+ - "net_writeto" - WRITE A DATAGRAM
  5629.     AH = 1Ch
  5630.     BX = network descriptor
  5631.     CX = number of bytes to transmit (0000h allowed)
  5632.     DX = send options (see AH=1Ah)
  5633.     DS:SI -> data to be written
  5634.     ES:DI -> "addr" structure (see AH=13h)
  5635. Return: CF clear if successful
  5636.         AX = number of bytes actually written
  5637.         DX = ???
  5638.     CF set on error
  5639.         AX = error code (see INT 61"PC/TCP")
  5640. Note:    this function differs from AH=1Ah in that the address and socket
  5641.       numbers can be overridden
  5642. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  5643. --------N-611D-------------------------------
  5644. INT 61 - PC/TCP kernel v2.05+ - "net_readfrom" - READ A DATAGRAM
  5645.     AH = 1Dh
  5646.     BX = network descriptor
  5647.     CX = maximum number of bytes to read
  5648.     DX = receive options (see AH=1Bh)
  5649.     DS:SI -> buffer for received data
  5650.     ES:DI -> 9-byte buffer containing "addr" structure (see AH=13h)
  5651. Return: CF clear if successful
  5652.         AX = number of bytes read
  5653.         DX = ???
  5654.     CF set on error
  5655.         AX = error code (see INT 61"PC/TCP")
  5656. Notes:    this function can read from any host or a designated host depending
  5657.       on settings in the "addr" structure
  5658.     only for use with datagram or Raw descriptors
  5659. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  5660. --------N-611E-------------------------------
  5661. INT 61 - PC/TCP kernel v2.05+ - "net_flush" - FLUSH PENDING DATA
  5662.     AH = 1Eh
  5663.     BX = network descriptor
  5664. Return: CF clear if successful
  5665.     CF set on error
  5666.         AX = error code (see INT 61"PC/TCP")
  5667. Note:    bufferred data is transmitted immediately, overriding Nagle's algorithm
  5668.       if necessary
  5669. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5670. --------N-611F-------------------------------
  5671. INT 61 - PC/TCP kernel v2.05+ - "net_asynch" - SET UP ASYNCHRONOUS CALL-BACK
  5672.     AH = 1Fh
  5673.     BX = network descriptor
  5674.     CX = event type (see below)
  5675.     DS:SI -> event handler routine
  5676.     ES:DI = 32-bit hint passed to handler
  5677. Return: CF clear if successful
  5678.         DS:DX -> previous handler
  5679.     CF set on error
  5680.         AX = error code (see INT 61"PC/TCP")
  5681. Note:    ICMP messages do not trigger events on stream connections
  5682. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5683.  
  5684. Values for event type:
  5685.  00h alarm
  5686.  01h open (successfully opened stream connection)
  5687.  02h receive (data available)
  5688.  03h transmit (ACK received on stream connection)
  5689.  04h transmit flush???
  5690.  05h foreign close (remote host closed data connection)
  5691.  06h close (local host closed connection and protocol is complete)
  5692.  07h error (error code passed to handler as arg)
  5693.  
  5694. Event handler called with:
  5695.     BX = network descriptor
  5696.     CX = event type (see above)
  5697.     DS:DX -> arg
  5698.     ES:DI = 32-bit hint value
  5699.     STACK:    small stack, possibly the DOS stack
  5700. --------N-6120-------------------------------
  5701. INT 61 - PC/TCP kernel v2.05+ - "set_option" - SET AN OPTION ON A DESCRIPTOR
  5702.     AH = 20h
  5703.     BX = network descriptor
  5704.     CX = length of buffer (usually 04h)
  5705.     DS:DX -> buffer containing option
  5706.     SI = (ignored by v2.2-)
  5707.     DI = option to set (see below)
  5708. Return: CF clear if successful
  5709.     CF set on error
  5710.         AX = error code (see INT 61"PC/TCP")
  5711. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
  5712.  
  5713. Values for option to set:
  5714.  01h    set non-blocking mode if non-zero
  5715.  02h    timeout of call in milliseconds
  5716.  03h    user-defined 4-byte magic cookie (not used by kernel)
  5717.  04h    TCP window or UDP buffer count (WORD, unsigned)
  5718.  06h    do TCP keep-alives if non-zero
  5719.  09h    (v2.1+) set IP precedence
  5720.  0Ah    (v2.1+) set IP type of service
  5721.  0Bh    use a privileged port if port = 0
  5722.  0Ch    turn off TCP PUSH bit and don't flush buffer every write (see AH=1Ah)
  5723. Note:    use "C" true or false values for boolean options
  5724. --------N-6121-------------------------------
  5725. INT 61 - PC/TCP kernel v2.05+ - "get_option" - GET OPTIONS APPLIED TO NET DESCR
  5726.     AH = 21h
  5727.     BX = network descriptor
  5728.     CX = length of buffer
  5729.     DS:DX -> buffer for return values
  5730.     SI = 0004h (ignored by v2.2-)
  5731.     DI = option (see AH=20h)
  5732. Return: CF clear if successful
  5733.         DS:DX -> value (usually 32 bits) returned by selected option
  5734.     CF set on error
  5735.         AX = error code (see INT 61"PC/TCP")
  5736. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
  5737. --------N-6122-------------------------------
  5738. INT 61 u - PC/TCP kernel v2.05+ - "net_getdesc" - ALLOCATE NETWORK DESCRIPTOR
  5739.     AH = 22h
  5740. Return: CF clear if successful
  5741.         AX = network descriptor
  5742.     CF set on error
  5743.         AX = error code (see INT 61"PC/TCP")
  5744. Note:    the descriptor will be an integer in the range 00h-1Fh, and a DOS call
  5745.       is made to allocate this as a file descriptor.  Hence a number may
  5746.       not refer to a PC/TCP network descriptor and a DOS file handle
  5747.       simultaneously.
  5748. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h,INT 61/AH=29h
  5749. --------N-6123-------------------------------
  5750. INT 61 - PC/TCP kernel v2.05+ - "net_listen" - LISTEN FOR INCOMING CONNECTIONS
  5751.     AH = 23h
  5752.     BX = network descriptor or FFFFh to allocate descriptor
  5753.     DX = type of service
  5754.     DS:SI -> "addr" structure (see AH=13h)
  5755. Return: CF clear if successful
  5756.         AX = network descriptor
  5757.     CF set on error
  5758.         AX = error code (see INT 61"PC/TCP")
  5759. Notes:    type of service and "addr" structure are as for AH=13h
  5760.     any of the address structure can be zero; normally local socket number
  5761.       is filled in prior to call
  5762. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
  5763. --------N-6124-------------------------------
  5764. INT 61 - PC/TCP kernel v2.05+ - "net_abortall" - RESET ALL NETWORK CONNECTIONS
  5765.     AH = 24h
  5766. Return: always successful
  5767. Note:    performs "net_abort" (AH=19h) on all open non-global descriptors
  5768. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=19h
  5769. --------N-6125-------------------------------
  5770. INT 61 - PC/TCP kernel v2.05+ - "ad_res_name" - GET HOST NAME GIVEN ADDRESS
  5771.     AH = 25h
  5772.     DX,BX = IP address in network order
  5773.     CX = length of buffer for name
  5774.     DS:SI -> buffer for host name
  5775. Return: CF clear if successful
  5776.        buffer filled with ASCIZ host name
  5777.     CF set on error
  5778.         AX = error code (see INT 61"PC/TCP")
  5779. Note:    this function will use the host table and or DNS to resolve the
  5780.       address, depending on kernel configuration.  Use this call for the
  5781.       normal gethostbyaddr function.
  5782. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=26h,INT 61/AH=27h
  5783. --------N-6126-------------------------------
  5784. INT 61 - PC/TCP kernel v2.05+ - "ad_htable" - GET HOST NAME FROM LOCAL TABLE
  5785.     AH = 26h
  5786.     DX,BX = IP address in network order
  5787.     CX = length of buffer
  5788.     DS:SI -> buffer for host name
  5789. Return: CF clear if successful
  5790.         buffer filled with ASCIZ host name
  5791.     CF set on error
  5792.         AX = error code (see INT 61"PC/TCP")
  5793. Note:    normally one would use AH=25h instead of this function
  5794. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=27h
  5795. --------N-6127-------------------------------
  5796. INT 61 - PC/TCP kernel v2.05+ - "ad_domain" - GET HOST NAME FROM DNS
  5797.     AH = 27h
  5798.     DX,BX = IP address in network order
  5799.     CX = length of buffer
  5800.     DS:SI -> buffer for host name
  5801. Return: CF clear if successful
  5802.         buffer filled with ASCIZ host name
  5803.     CF set on error
  5804.         AX = error code (see INT 61"PC/TCP")
  5805. Note:    normally one would use AH=25h instead of this function
  5806. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=26h
  5807. --------N-6128-------------------------------
  5808. INT 61 - PC/TCP kernel v2.05+ - "net_swap" - EXCHANGE TWO NETWORK DESCRIPTORS
  5809.     AH = 28h
  5810.     BX = network descriptor 1
  5811.     CX = network descriptor 2
  5812. Return: CF clear if successful
  5813.     CF set on error
  5814.         AX = error code (see INT 61"PC/TCP")
  5815. Note:    the two descriptors will exchange places; both must be local or both
  5816.       global
  5817. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5818. --------N-6129-------------------------------
  5819. INT 61 - PC/TCP kernel v2.05+ - "net_getglobdesc" - ALLOCATE GLOBAL DESCRIPTOR
  5820.     AH = 29h
  5821. Return: CF clear if successful
  5822.         AX = network descriptor
  5823.     CF set on error
  5824.         AX = error code (see INT 61"PC/TCP")
  5825. Note:    use this function rather than AH=22h to avoid a DOS call by the PC/TCP
  5826.       kernel; the returned descriptor will be >= 40h and cannot be used
  5827.       with "net_select" (AH=0Eh)
  5828. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=07h"PC/TCP"
  5829. SeeAlso: INT 61/AH=22h
  5830. --------N-612A-------------------------------
  5831. INT 61 - PC/TCP kernel v2.05+ - GET CONFIGURATION INFORMATION
  5832.     AH = 2Ah
  5833.     DS:SI -> 26-byte buffer for configuration information (see below)
  5834. Return: CF clear
  5835.     AX = 0000h
  5836.     buffer filled
  5837. Note:    size of buffer may vary with kernel version; 26 bytes is the size for
  5838.       versions 2.05 through 2.2
  5839. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5840.  
  5841. Format of configuration information:
  5842. Offset    Size    Description
  5843.  00h    BYTE    maximum TCP connections available
  5844.  01h    BYTE    maximum UDP connections available
  5845.  02h    BYTE    maximum IP connections available
  5846.  03h    BYTE    maximum Raw Net connections available
  5847.  04h    BYTE    number of TCP connections currently in use
  5848.  05h    BYTE    number of UDP connections currently in use
  5849.  06h    BYTE    number of IP connections currently in use
  5850.  07h    BYTE    number of Raw Net connections currently in use
  5851.  08h    WORD    number of local network descriptors active
  5852.  0Ah    WORD    number of global network descriptors active
  5853.  0Ch    BYTE    maximum header size on network
  5854.  0Dh    BYTE    maximum trailer size on network
  5855.  0Eh    WORD    size of large packet buffer
  5856.  10h    WORD    number of network interfaces attached
  5857.  12h    DWORD    milliseconds since kernel started
  5858.  16h    DWORD    IP broadcast address
  5859. --------N-612B-------------------------------
  5860. INT 61 - PC/TCP kernel v2.02+ - "net_alarm" - SET TIMED ASYNCHRONOUS EVENT
  5861.     AH = 2Bh
  5862.     BX = network descriptor
  5863.     CX,DX = time before alarm in milliseconds
  5864.     DS:SI -> handler which will receive call (see INT 61/AH=1Fh)
  5865.     ES:DI = 32-bit cookie passed to handler
  5866. Return: CF clear if successful
  5867.     CF set on error
  5868.         AX = error code (see INT 61"PC/TCP")
  5869. Note:    this function will case a NET_AS_ALARM to be generated; it is intended
  5870.       for TSRs, etc. to regain control periodically
  5871. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5872. --------N-6130-------------------------------
  5873. INT 61 - PC/TCP kernel v2.05+ - "icmp_ping" - SEND ICMP ECHO REQUEST (PING)
  5874.     AH = 30h
  5875.     BX,DX = IP address of host
  5876.     CX = length of data to send
  5877. Return: CF clear if successful (i.e. reply received)
  5878.     CF set on error
  5879.         AX = error code (see INT 61"PC/TCP")
  5880. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5881. --------N-61---------------------------------
  5882. INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
  5883.     AH = function
  5884.         31h "net_add_route"
  5885.         32h "net_del_route"
  5886.         33h "net_dump_routes"
  5887. Notes:    these functions are described as "unused" in the v2.2 documentation
  5888.     router configuration can be altered using INT 61/AH=01h
  5889. --------N-6134-------------------------------
  5890. INT 61 U - PC/TCP kernel v2.1+ - "icmp_destun" - ???
  5891.     AH = 34h
  5892.     ???
  5893. Return: ???
  5894. Note:    this function is described as "reserved" in the v2.2 documentation
  5895. --------N-6150-------------------------------
  5896. INT 61 - PC/TCP kernel v2.05+ - "nm_prs_addr" - TRANSLATE NUMERICAL IP ADDRESS
  5897.     AH = 50h
  5898.     DS:DX -> ASCIZ IP address as "dotted quad" (max 127 chars)
  5899. Return: CF clear if successful
  5900.         DX:AX -> IP address
  5901.     CF set on error
  5902.         AX = error code (see INT 61"PC/TCP")
  5903. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5904. --------N-6151-------------------------------
  5905. INT 61 - PC/TCP kernel v2.05+ - "nm_htable" - RESOLVE NAME USING HOST TABLE
  5906.     AH = 51h
  5907.     CX = size of destination buffer
  5908.     DS:DX -> ASCIZ host name (max 127 chars)
  5909.     ES:DI -> destination buffer or 0000h:0000h
  5910. Return: CF clear if successful
  5911.         DX:AX -> IP address of host
  5912.         destination buffer filled with canonical host name
  5913.     CF set on error
  5914.         AX = error code (see INT 61"PC/TCP")
  5915. Note:    this function calls DOS, and can fail if the DOS call fails
  5916. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5917. --------N-6152-------------------------------
  5918. INT 61 - PC/TCP kernel v2.05+ - "nm_domain" - RESOLVE NAME USING DNS
  5919.     AH = 52h
  5920.     CX = size of destination buffer
  5921.     DS:DX -> ASCIZ host name (max 127 chars)
  5922.     ES:DI -> destination buffer or 0000h:0000h
  5923. Return: CF clear if successful
  5924.         DX:AX -> IP address of host
  5925.         destination buffer filled with canonical host name
  5926.     CF set on error
  5927.         AX = error code (see INT 61"PC/TCP")
  5928. Note:    this function will poll all configured domain name servers if necessary
  5929. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5930. --------N-6153-------------------------------
  5931. INT 61 - PC/TCP kernel v2.05- - "nm_ien116" - RESOLVE HOST NAME USING IEN116
  5932.     AH = 53h
  5933.     DS:DX -> ASCIZ name to be resolved (max 127 chars)
  5934. Return: CF clear if successful
  5935.         DX:AX -> IP address of host
  5936.     CF set on error
  5937.         AX = error code (see INT 61"PC/TCP")
  5938. Note:    this function is not supported by v2.10+
  5939. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5940. --------N-6154-------------------------------
  5941. INT 61 - PC/TCP kernel v2.05+ - "nm_res_name" - RESOLVE HOST NAME
  5942.     AH = 54h
  5943.     CX = size of destination buffer
  5944.     DS:DX -> ASCIZ host name (max 127 chars)
  5945.     ES:DI -> destination buffer or 0000h:0000h
  5946. Return: CF clear if successful
  5947.         DX:AX -> IP address of host
  5948.         destination buffer filled with canonical host name
  5949.     CF set on error
  5950.         AX = error code (see INT 61"PC/TCP")
  5951. Note:    this function uses all configured methods in turn to resolve the
  5952.       name (numerical, then host table, then DNS, then IEN116)
  5953. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  5954.       greater than 54h in AH may crash the system.    Other kernels may have
  5955.       this bug as well; it has been fixed in the v2.2 SLIPDRV kernel.
  5956. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=50h,INT 61/AH=51h
  5957. SeeAlso: INT 61/AH=52h,INT 61/AH=53h
  5958. --------*-62---------------------------------
  5959. INT 62 - reserved for user interrupt
  5960. --------d-62---------------------------------
  5961. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5962. Notes:    this vector stores the third four bytes of the parameter table for
  5963.       hard disk 0
  5964. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  5965. --------b-62---------------------------------
  5966. INT 62 - HP 95LX - USED BY CALCULATOR
  5967. SeeAlso: INT 60"HP 95LX"
  5968. ----------62---------------------------------
  5969. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  5970.     AH = function (00h to 07h)
  5971.     CX = FFFEh
  5972.     DX = FFFFh
  5973.     ???
  5974. Return: ???
  5975. Note:    the installation check consists of testing for the string "DBLIBRARY"
  5976.       2 bytes past the interrupt handler
  5977. SeeAlso: AH=08h"SQL"
  5978. Index:    installation check;MS SQL Server|installation check;Sybase DBLIBRARY
  5979. --------V-620000-----------------------------
  5980. INT 62 u - FGDRIVER v1.10 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
  5981.     AX = 0000h
  5982.     ES:BX -> ???
  5983. Return: AX = current video mode number
  5984. Notes:    FGDRIVER is the external video driver for the shareware
  5985.       Fastgraph/Light by Ted Gruber Software
  5986.     the installation check consists of testing for the signature "FG" ten
  5987.       bytes beyond the start of the interrupt handler
  5988. SeeAlso: AX=0001h,AX=0006h
  5989. Index:    installation check;Fastgraph/Light
  5990. --------V-620001-----------------------------
  5991. INT 62 u - FGDRIVER v1.10 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
  5992.     AX = 0001h
  5993.     BX = new video mode or FFFFh for current mode
  5994.     ES:DX -> ???
  5995. Notes:    video modes are the same as the BIOS video modes except for
  5996.         0Bh Hercules graphics 720x348
  5997.         0Ch Hercules graphics 320x200
  5998.         15h VGA graphics 320x400x256
  5999.         16h VGA graphics 320x240x256
  6000.         17h VGA graphics 320x480x256
  6001.     this call resets the active video page to page 0000h, the clipping
  6002.       region to the entire screen, text rows to 25, etc.
  6003. SeeAlso: AX=0000h,AX=0002h,INT 10/AH=00h
  6004. --------V-620002-----------------------------
  6005. INT 62 u - FGDRIVER v1.10 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
  6006.     AX = 0002h
  6007.     BX = desired video mode (00h-17h)
  6008.     CX = required number of video pages (ignore memory size if <= 0)
  6009. Return: AX = status
  6010.         0000h mode not available with requested number of pages
  6011.         0001h mode is available
  6012. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0005h
  6013. --------V-620003-----------------------------
  6014. INT 62 u - FGDRIVER v1.10 - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
  6015.     AX = 0003h
  6016.     BX = horizontal resolution
  6017.     CX = vertical resolution
  6018.     DX = number of video pages required (both physical and virtual)
  6019. Return: AX = proposed video mode number or FFFFh if no matching video mode
  6020. SeeAlso: AX=0002h,AX=0004h
  6021. --------V-620004-----------------------------
  6022. INT 62 u - FGDRIVER v1.10 - "FG_AUTOMODE" - GET VIDEO MODE WITH MOST FEATURES
  6023.     AX = 0004h
  6024. Return: AX = proposed video mode number
  6025. Note:    FGDRIVER is the external video driver for the shareware
  6026.       Fastgraph/Light by Ted Gruber Software
  6027. SeeAlso: AX=0002h,AX=0003h,AX=0005h
  6028. --------V-620005-----------------------------
  6029. INT 62 u - FGDRIVER v1.10 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
  6030.     AX = 0005h
  6031. Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
  6032.         without an Enhanced Color Display
  6033. SeeAlso: AX=0002h,AX=0003h
  6034. --------V-620006-----------------------------
  6035. INT 62 u - FGDRIVER v1.10 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
  6036.     AX = 0006h
  6037. Notes:    this call is ignored in graphics modes
  6038.     the screen attributes are only restored if ANSI.SYS is loaded
  6039. SeeAlso: AX=0000h
  6040. --------V-620007-----------------------------
  6041. INT 62 u - FGDRIVER v1.10 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
  6042.     AX = 0007h
  6043.     BX = new state (0000h invisible, 0001h visible)
  6044. Note:    this call is ignored in text modes
  6045. --------V-620008-----------------------------
  6046. INT 62 - FGDRIVER v1.10 - UNUSED
  6047.     AX = 0008h to 0009h
  6048. Return: AX = 0000h
  6049. --------V-62000A-----------------------------
  6050. INT 62 u - FGDRIVER v1.10 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
  6051.     AX = 000Ah
  6052. Return: AX = maximum X coordinate in screen space
  6053.         (or character space if in text mode)
  6054. SeeAlso: AX=000Bh,AX=0045h
  6055. --------V-62000B-----------------------------
  6056. INT 62 u - FGDRIVER v1.10 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
  6057.     AX = 000Bh
  6058. Return: AX = maximum Y coordinate in screen space
  6059.         (or character space if in text mode)
  6060. SeeAlso: AX=000Ah,AX=0045h
  6061. --------V-62000C-----------------------------
  6062. INT 62 u - FGDRIVER v1.10 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
  6063.     AX = 000Ch
  6064.     BX = screen space column
  6065. Return: AX = character space column containing specified coordinate
  6066. SeeAlso: AX=000Dh,AX=000Eh
  6067. --------V-62000D-----------------------------
  6068. INT 62 u - FGDRIVER v1.10 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
  6069.     AX = 000Dh
  6070.     BX = screen space row
  6071. Return: AX = character space row containing specified coordinate
  6072. SeeAlso: AX=000Ch,AX=000Fh
  6073. --------V-62000E-----------------------------
  6074. INT 62 u - FGDRIVER v1.10 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
  6075.     AX = 000Eh
  6076.     BX = character space column
  6077. Return: AX = screen space column of leftmost pixel in specified character col
  6078. SeeAlso: AX=000Ch,AX=000Fh
  6079. --------V-62000F-----------------------------
  6080. INT 62 u - FGDRIVER v1.10 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
  6081.     AX = 000Fh
  6082.     BX = character space row
  6083. Return: AX = screen space row of topmost pixel in specified character row
  6084. SeeAlso: AX=000Dh,AX=000Eh
  6085. --------V-620010-----------------------------
  6086. INT 62 u - FGDRIVER v1.10 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
  6087.     AX = 0010h
  6088. Return: AX = number of text rows on screen in current video mode
  6089. SeeAlso: AX=0011h
  6090. --------V-620011-----------------------------
  6091. INT 62 u - FGDRIVER v1.10 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
  6092.     AX = 0011h
  6093.     BX = new screen size (25, 43, 50)
  6094. SeeAlso: AX=0010h
  6095. --------V-620012-----------------------------
  6096. INT 62 - FGDRIVER v1.10 - UNUSED
  6097.     AX = 0012h to 0013h
  6098. Return: AX = 0000h
  6099. --------V-620014-----------------------------
  6100. INT 62 u - FGDRIVER v1.10 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
  6101.     AX = 0014h
  6102.     BX = color index (0000h-00FFh)
  6103.     CX = new color value (0 to maximum color value for current video mode)
  6104. Note:    this call is ignored in text modes and 256-color graphics modes
  6105. SeeAlso: AX=0015h,AX=0016h,AX=001Dh
  6106. --------V-620015-----------------------------
  6107. INT 62 u - FGDRIVER v1.10 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
  6108.     AX = 0015h
  6109. Return: AX = current text attribute or color index (graphics modes)
  6110. Note:    FGDRIVER is the external video driver for the shareware
  6111.       Fastgraph/Light by Ted Gruber Software
  6112. SeeAlso: AX=0019h,AX=001Ah
  6113. --------V-620016-----------------------------
  6114. INT 62 u - FGDRIVER v1.10 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
  6115.     AX = 0016h
  6116.     BX = color index (0000h to 00FFh)
  6117. Return: AX = color value for specified color index
  6118. Note:    this call returns the value passed to it in text and 256-color
  6119.       graphics modes
  6120. SeeAlso: AX=0014h,AX=001Ch
  6121. --------V-620017-----------------------------
  6122. INT 62 u - FGDRIVER v1.10 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
  6123.     AX = 0017h
  6124. ---CGA 4-color graphics---
  6125.     BX = CGA paletee number
  6126.     CX = background color
  6127. ---CGA 2-color graphics---
  6128.     BX ignored
  6129.     CX = foreground color
  6130. ---16-color graphics---
  6131.     BX = palette register number
  6132.     CX = palette value
  6133. ---256-color graphics---
  6134.     BX = DAC register number
  6135.     CX =  DAC value
  6136. Notes:    ignored in text modes and Hercules graphics modes
  6137.     few EGA/VGA adapters correctly set the foreground color in CGA mode 6
  6138. SeeAlso: AX=0018h,AX=001Dh
  6139. --------V-620018-----------------------------
  6140. INT 62 u - FGDRIVER v1.10 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
  6141.     AX = 0018h
  6142.     ES:BX -> array of 16 WORDs containing values for palette registers
  6143.         (or first 16 DAC registers in 256-color modes)
  6144. Note:    ignored in text modes, CGA and Hercules graphics modes
  6145. SeeAlso: AX=0017h
  6146. --------V-620019-----------------------------
  6147. INT 62 u - FGDRIVER v1.10 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
  6148.     AX = 0019h
  6149.     BX = foreground
  6150.     CX = background
  6151.     DX = blink (0000h nonblinking, 0001h blink)
  6152. Note:    this call is ignored in graphics modes
  6153. SeeAlso: AX=0015h,AX=001Ah,AX=0037h
  6154. --------V-62001A-----------------------------
  6155. INT 62 u - FGDRIVER v1.10 - "FG_SETCOLOR" - SET CURRENT COLOR
  6156.     AX = 001Ah
  6157.     BX = new color index (or text attribute in text modes)
  6158. SeeAlso: AX=0015h,AX=0019h
  6159. --------V-62001B-----------------------------
  6160. INT 62 u - FGDRIVER v1.10 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
  6161.     AX = 001Bh
  6162.     BX = palette or DAC register number
  6163.     CX = red color component
  6164.     DX = green component
  6165.     SI = blue component
  6166. Notes:    the register number may be negative for Tandy, PCjr, and 200-line
  6167.       EGA graphics modes to specify an intense color
  6168.     this call has no effect in text, CGA graphics, and Hercules graphics
  6169.       modes
  6170. SeeAlso: AX=001Ch,AX=00A5h
  6171. --------V-62001C-----------------------------
  6172. INT 62 u - FGDRIVER v1.10 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
  6173.     AX = 001Ch
  6174.     ES:BX -> variable pointer record (see below)
  6175.     CX = DAC register number
  6176. Return: variables updated
  6177. Note:    this call is ignored in text modes and CGA/EGA video modes (since
  6178.       they do not use DAC registers)
  6179. SeeAlso: AX=001Bh,AX=001Dh,AX=00A4h
  6180.  
  6181. Format of variable pointer record:
  6182. Offset    Size    Description
  6183.  00h    WORD    segment of WORD buffer for red component of DAC register
  6184.  02h    WORD    offset of WORD buffer for red component
  6185.  04h    WORD    segment of WORD buffer for green component of DAC register
  6186.  06h    WORD    offset of WORD buffer for green component
  6187.  08h    WORD    segment of WORD buffer for blue component of DAC register
  6188.  0Ah    WORD    offset of WORD buffer for blue component
  6189. --------V-62001D-----------------------------
  6190. INT 62 u - FGDRIVER v1.10 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
  6191.     AX = 001Dh
  6192.     BX = red component
  6193.     CX = green component
  6194.     DX = blue component
  6195. Return: AX = mode-specific palette value corresponding to specified components
  6196. Note:    only meaningful in 16-color graphics modes
  6197. SeeAlso: AX=0015h,AX=0017h
  6198. --------V-62001E-----------------------------
  6199. INT 62 u - FGDRIVER v1.10 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
  6200.     AX = 001Eh
  6201. Note:    sets each pixel to 0 in graphics modes, each character cell to a blank
  6202.       with a gray foreground attribute in text modes
  6203. --------V-62001F-----------------------------
  6204. INT 62 u - FGDRIVER v1.10 - "FG_POINT" - DISPLAY A PIXEL
  6205.     AX = 001Fh
  6206.     BX = column
  6207.     CX = row
  6208. Note:    this call is ignored in text modes
  6209. SeeAlso: AX=0020h
  6210. --------V-620020-----------------------------
  6211. INT 62 u - FGDRIVER v1.10 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
  6212.     AX = 0020h
  6213.     BX = column in screen space
  6214.     CX = row in screen space
  6215. Return: AX = color value of pixel (0 to num_colors-1)
  6216.         0000h in text modes
  6217. SeeAlso: AX=001Fh
  6218. --------V-620021-----------------------------
  6219. INT 62 u - FGDRIVER v1.10 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
  6220.     AX = 0021h
  6221. Return: AX = screen space X coordinate of graphics cursor position
  6222. SeeAlso: AX=0022h,AX=0023h,AX=0024h
  6223. --------V-620022-----------------------------
  6224. INT 62 u - FGDRIVER v1.10 - "FG_GETXPOS" - GET GRAPHICS CURSOR ROW
  6225.     AX = 0022h
  6226. Return: AX = screen space Y coordinate of graphics cursor position
  6227. SeeAlso: AX=0021h,AX=0023h,AX=0024h
  6228. --------V-620023-----------------------------
  6229. INT 62 u - FGDRIVER v1.10 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
  6230.     AX = 0023h
  6231.     BX = new column
  6232.     CX = new row
  6233. Note:    this call is ignored in text modes
  6234. SeeAlso: AX=0021h,AX=0022h,AX=0024h
  6235. --------V-620024-----------------------------
  6236. INT 62 u - FGDRIVER v1.10 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
  6237.     AX = 0024h
  6238.     BX = column offset
  6239.     CX = row offset
  6240. Note:    this call is ignored in text modes
  6241. SeeAlso: AX=0021h,AX=0022h,AX=0023h
  6242. --------V-620025-----------------------------
  6243. INT 62 u - FGDRIVER v1.10 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
  6244.     AX = 0025h
  6245.     BX = endpoint column
  6246.     CX = endpoint row
  6247. Notes:    this call is ignored in text modes
  6248.     the starting point is the current graphics cursor position; the cursor
  6249.       position is updated
  6250. SeeAlso: AX=0026h,AX=0027h
  6251. --------V-620026-----------------------------
  6252. INT 62 u - FGDRIVER v1.10 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
  6253.     AX = 0026h
  6254.     BX = endpoint column offset
  6255.     CX = endpoint row offset
  6256. Notes:    this call is ignored in text modes
  6257.     the starting point is the current graphics cursor position; the cursor
  6258.       position is updated
  6259. SeeAlso: AX=0025h,AX=0028h
  6260. --------V-620027-----------------------------
  6261. INT 62 u - FGDRIVER v1.10 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
  6262.     AX = 0027h
  6263.     BX = endpoint column
  6264.     CX = endpoint row
  6265.     DX = dash pattern (set bits cause drawn pixels)
  6266. Notes:    this call is ignored in text modes
  6267.     the starting point is the current graphics cursor position; the cursor
  6268.       position is updated
  6269. SeeAlso: AX=0025h,AX=0028h
  6270. --------V-620028-----------------------------
  6271. INT 62 u - FGDRIVER v1.10 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
  6272.     AX = 0028h
  6273.     BX = endpoint column offset
  6274.     CX = endpoint row offset
  6275.     DX = dash pattern (set bits cause drawn pixels)
  6276. Notes:    this call is ignored in text modes
  6277.     the starting point is the current graphics cursor position; the cursor
  6278.       position is updated
  6279. SeeAlso: AX=0026h,AX=0027h
  6280. --------V-620029-----------------------------
  6281. INT 62 u - FGDRIVER v1.10 - "FG_SETCLIP" - SET CLIPPING REGION
  6282.     AX = 0029h
  6283.     BX = left edge of clipping region
  6284.     CX = right edge of clipping region
  6285.     DX = top edge of clipping region
  6286.     SI = bottom edge of clipping region
  6287. SeeAlso: AX=004Ah,AX=004Ch,AX=0052h,AX=0054h
  6288. --------V-62002A-----------------------------
  6289. INT 62 u - FGDRIVER v1.10 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
  6290.     AX = 002Ah
  6291.     BX = left edge column
  6292.     CX = right edge column
  6293.     DX = top edge row
  6294.     SI = bottom edge row
  6295. SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=00A2h
  6296. --------V-62002B-----------------------------
  6297. INT 62 u - FGDRIVER v1.10 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
  6298.     AX = 002Bh
  6299.     BX = screen space column of left edge
  6300.     CX = screen space column of right edge
  6301.     DX = screen space row of top edge
  6302.     SI = screen space row of bottom edge
  6303. Note:    this call is ignored in text modes
  6304. SeeAlso: AX=002Ah,AX=002Ch,AX=00A2h
  6305. --------V-62002C-----------------------------
  6306. INT 62 u - FGDRIVER v1.10 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
  6307.     AX = 002Ch
  6308.     BX = screen space column of left edge
  6309.     CX = screen space column of right edge
  6310.     DX = screen space row of top edge
  6311.     SI = screen space row of bottom edge
  6312.     ES:DI -> dithering matrix (video-mode dependent)
  6313. Note:    this call is ignored in text modes
  6314. SeeAlso: AX=002Bh,AX=00A2h
  6315. --------V-62002D-----------------------------
  6316. INT 62 u - FGDRIVER v1.10 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
  6317.     AX = 002Dh
  6318.     BX = horizontal semi-axis length in screen space units
  6319.     CX = vertical semi-axis length in screen space units
  6320. Notes:    this call is ignored in text modes
  6321.     the ellipse is centered at the current graphics cursor position
  6322. SeeAlso: AX=002Ah,AX=002Eh,AX=00A2h
  6323. --------V-62002E-----------------------------
  6324. INT 62 u - FGDRIVER v1.10 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
  6325.     AX = 002Eh
  6326.     CX = number of vertices in polygon
  6327.     ES:BX -> variable pointer record (see below)
  6328. SeeAlso: AX=002Dh,AX=0030h,AX=00A2h
  6329.  
  6330. Format of variable pointer record:
  6331. Offset    Size    Description
  6332.  00h    WORD    segment of WORD array containing vertex columns
  6333.  02h    WORD    offset of WORD array containing vertex columns
  6334.  04h    WORD    segment of WORD array containing vertex rows
  6335.  06h    WORD    offset of WORD array containing vertex rows
  6336. --------V-62002F-----------------------------
  6337. INT 62 u - FGDRIVER v1.10 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
  6338.     AX = 002Fh
  6339.     BX = column
  6340.     CX = row
  6341. Notes:    fills an arbitrary closed region around the specified point with the
  6342.       current color; the screen edges are not considered region boundaries
  6343.     ignored in text modes
  6344. --------V-620030-----------------------------
  6345. INT 62 u - FGDRIVER v1.10 - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
  6346.     AX = 0030h
  6347.     BX = radius in horizontal screen space units (> 0)
  6348. Notes:    the circle is drawn in screen space, centered at the current graphics
  6349.       cursor position
  6350.     this call is ignored in text modes
  6351. SeeAlso: AX=00A2h
  6352. --------V-620031-----------------------------
  6353. INT 62 - FGDRIVER v1.10 - UNUSED
  6354.     AX = 0031h
  6355. Return: AX = 0000h
  6356. --------V-620032-----------------------------
  6357. INT 62 u - FGDRIVER v1.10 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
  6358.     AX = 0032h
  6359.     CX = length of string
  6360.     ES:BX -> string
  6361. Notes:    the string is displayed staring at the text cursor position using the
  6362.       current text attribute (text modes) or color index (graphics modes)
  6363.     the text cursor position is updated after this call
  6364. SeeAlso: AX=001Ah,AX=0033h,AX=0035h,AX=0036h
  6365. --------V-620033-----------------------------
  6366. INT 62 u - FGDRIVER v1.10 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
  6367.     AX = 0033h
  6368.     BX = row
  6369.     CX = column
  6370. Note:    there are only eight text cursors shared by successive groups of
  6371.       eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
  6372.       share the second, etc)
  6373. SeeAlso: AX=0034h
  6374. --------V-620034-----------------------------
  6375. INT 62 u - FGDRIVER v1.10 - "FG_WHERE" - GET CURRENT CURSOR POSITION
  6376.     AX = 0034h
  6377.     ES:BX -> variable pointers (see below)
  6378. Return: indicated variables filled with cursor row and column for active
  6379.       display
  6380. Note:    FGDRIVER is the external video driver for the shareware
  6381.       Fastgraph/Light by Ted Gruber Software
  6382. SeeAlso: AX=0033h
  6383.  
  6384. Format of variable pointers:
  6385. Offset    Size    Description
  6386.  00h    WORD    segment of WORD buffer for cursor row
  6387.  02h    WORD    offset of WORD buffer for cursor row
  6388.  04h    WORD    segment WORD buffer for cursor column
  6389.  06h    WORD    offset WORD buffer for cursor column
  6390. --------V-620035-----------------------------
  6391. INT 62 u - FGDRIVER v1.10 - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
  6392.     AX = 0035h
  6393.     BX = number of characters to recolor
  6394. Notes:    this call is ignored in graphics modes
  6395.     starting at the current text cursor position, the specified number of
  6396.       characters have their attributes to the current text attribute
  6397. SeeAlso: AX=0036h
  6398. --------V-620036-----------------------------
  6399. INT 62 u - FGDRIVER v1.10 - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
  6400.     AX = 0036h
  6401.     CX = length of string
  6402.     ES:BX -> string to be displayed
  6403. Return: text cursor updated
  6404. Note:    this call is ignored in graphics modes
  6405. SeeAlso: AX=0032h,AX=0035h
  6406. --------V-620037-----------------------------
  6407. INT 62 u - FGDRIVER v1.10 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
  6408.     AX = 0037h
  6409.     BX = row
  6410.     CX = column
  6411. Return: AX = character attribute at specified location on active video page
  6412. Note:    this call is ignored in graphics modes
  6413. SeeAlso: AX=0019h,AX=0038h
  6414. --------V-620038-----------------------------
  6415. INT 62 u - FGDRIVER v1.10 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
  6416.     AX = 0038h
  6417.     BX = row
  6418.     CX = column
  6419. Return: AX = character at specified location on active video page
  6420. Note:    this call is ignored in graphics modes
  6421. SeeAlso: AX=0037h
  6422. --------V-620039-----------------------------
  6423. INT 62 - FGDRIVER v1.10 - UNUSED
  6424.     AX = 0039h to 003Bh
  6425. Return: AX = 0000h
  6426. --------V-62003C-----------------------------
  6427. INT 62 u - FGDRIVER v1.10 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
  6428.     AX = 003Ch
  6429. Return: AX = active video page (0000h-003Fh)
  6430. SeeAlso: AX=003Dh,AX=003Eh,AX=0040h
  6431. --------V-62003D-----------------------------
  6432. INT 62 u - FGDRIVER v1.10 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
  6433.     AX = 003Dh
  6434.     BX = new video page (0000h to 003Fh)
  6435. Note:    the specified page must be a physical or virtual page
  6436. SeeAlso: AX=0001h,AX=003Ch,AX=003Fh,AX=0041h
  6437. --------V-62003E-----------------------------
  6438. INT 62 u - FGDRIVER v1.10 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
  6439.     AX = 003Eh
  6440. Return: AX = visible video page (0000h-003Fh)
  6441. SeeAlso: AX=003Ch,AX=003Fh,AX=0040h
  6442. --------V-62003F-----------------------------
  6443. INT 62 u - FGDRIVER v1.10 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
  6444.     AX = 003Fh
  6445.     BX = new video page (0000h to 003Fh)
  6446. Note:    the specified page must be a physical or virtual page
  6447. SeeAlso: AX=0001h,AX=003Dh,AX=003Eh,AX=0041h
  6448. --------V-620040-----------------------------
  6449. INT 62 u - FGDRIVER v1.10 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
  6450.     AX = 0040h
  6451. Return: AX = current hidden video page number (0000h-003Fh)
  6452. SeeAlso: AX=003Ch,AX=003Eh,AX=0041h
  6453. --------V-620041-----------------------------
  6454. INT 62 u - FGDRIVER v1.10 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
  6455.     AX = 0041h
  6456.     BX = new hidden page (0000h to 003Fh)
  6457. Note:    specified page must be a physical page or a virtual page
  6458. SeeAlso: AX=003Dh,AX=003Fh,AX=0040h
  6459. --------V-620042-----------------------------
  6460. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
  6461.     AX = 0042h
  6462.     BX = page number (0000h-003Fh)
  6463. Return: AX = status
  6464.         0000h successful
  6465.         0001h specified page is a physical or logical page
  6466.         0007h virtual page created, but memory control blocks corrupted
  6467.         0008h not enough memory
  6468. Notes:    FGDRIVER is the external video driver for the shareware
  6469.       Fastgraph/Light by Ted Gruber Software
  6470.     the amount of memory required by the virtual video page depends on the
  6471.       current video mode
  6472. SeeAlso: AX=0043h,AX=009Dh,AX=009Fh
  6473. --------V-620043-----------------------------
  6474. INT 62 u - FGDRIVER v1.10 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
  6475.     AX = 0043h
  6476.     BX = page number (0000h-003Fh)
  6477. Return: AX = status
  6478.         0000h successful
  6479.         0001h specified page is a physical page
  6480.         0007h virtual page released, but memory control blocks corrupted
  6481.         0009h attempt to free a page which was never created
  6482. SeeAlso: AX=0042h,AX=009Dh,AX=009Eh,AX=009Fh
  6483. --------V-620044-----------------------------
  6484. INT 62 u - FGDRIVER v1.10 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
  6485.     AX = 0044h
  6486. Return: AX = segment of active video page
  6487. --------V-620045-----------------------------
  6488. INT 62 u - FGDRIVER v1.10 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
  6489.     AX = 0045h
  6490.     BX = new page width in pixels
  6491.     CX = new page height in pixels
  6492. Notes:    the visible page must be set to 0000h before making this call
  6493.     mouse, joysticks, expanded memory, and extended memory must be
  6494.       reinitialized after this call
  6495. SeeAlso: AX=000Ah,AX=000Bh,AX=0075h,AX=007Ah,AX=00A0h,AX=00A1h
  6496. --------V-620046-----------------------------
  6497. INT 62 u - FGDRIVER v1.10 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
  6498.     AX = 0046h
  6499.     ES:BX -> buffer for video mode-independent bitmap
  6500.     CX = width of bitmap in bytes
  6501.     DX = height of bitmap in pixel rows
  6502. Return: each bit in bitmap is set if corresponding pixel is of the current
  6503.       color, cleared otherwise
  6504. Note:    this call is ignored in text modes
  6505. SeeAlso: AX=0047h,AX=0048h
  6506. --------V-620047-----------------------------
  6507. INT 62 u - FGDRIVER v1.10 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
  6508.     AX = 0047h
  6509.     ES:BX -> bitmap (each set bit is pixel drawn in current color)
  6510.     CX = width of bitmap in bytes
  6511.     DX = height of bitmap in pixel rows
  6512. SeeAlso: AX=0046h,AX=004Ah,AX=004Dh,AX=0052h
  6513. --------V-620048-----------------------------
  6514. INT 62 u - FGDRIVER v1.10 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
  6515.     AX = 0048h
  6516.     ES:BX -> buffer for video mode-specific bitmap
  6517.     CX = width of bitmap in bytes
  6518.     DX = height of bitmap in pixel rows
  6519. SeeAlso: AX=0046h,AX=0049h,AX=0062h
  6520. --------V-620049-----------------------------
  6521. INT 62 u - FGDRIVER v1.10 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
  6522.     AX = 0049h
  6523.     ES:BX -> video mode-specific bitmap
  6524.     CX = width of bitmap in bytes
  6525.     DX = height of bitmap in pixel rows
  6526. Note:    the image will be drawn with its lower left corner at the current
  6527.       cursor position (either text or graphics)    
  6528. SeeAlso: AX=0048h,AX=004Ah,AX=0062h
  6529. --------V-62004A-----------------------------
  6530. INT 62 u - FGDRIVER v1.10 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
  6531.     AX = 004Ah
  6532.     ES:BX -> mode-specific bitmap
  6533.     CX = width of bit map in bytes
  6534.     DX = height of bit map in pixel rows
  6535. Notes:    this call is ignored in text modes
  6536.     the image is drawn with its lower left corner at the current graphics
  6537.       cursor position
  6538.     the current clipping region is used, extended to a byte boundary
  6539. SeeAlso: AX=0029h,AX=0047h,AX=0049h,AX=004Ch,AX=0052h
  6540. --------V-62004B-----------------------------
  6541. INT 62 u - FGDRIVER v1.10 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
  6542.     AX = 004Bh
  6543.     ES:BX -> mode-specific bitmap
  6544.     CX = width of bitmap in bytes
  6545.     DX = height of bitmap in pixel rows
  6546. Notes:    this call is ignored in text modes
  6547.     the image is drawn with its lower left corner at the current graphics
  6548.       cursor position
  6549. SeeAlso: AX=004Ah,AX=004Ch
  6550. --------V-62004C-----------------------------
  6551. INT 62 u - FGDRIVER v1.10 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
  6552.     AX = 004Ch
  6553.     ES:BX -> mode-specific bitmap
  6554.     CX = width of bit map in bytes
  6555.     DX = height of bit map in pixel rows
  6556. Notes:    this call is ignored in text modes
  6557.     the image is drawn with its lower left corner at the current graphics
  6558.       cursor position
  6559.     the current clipping region is used, extended to a byte boundary
  6560. SeeAlso: AX=0029h,AX=004Ah
  6561. --------V-62004D-----------------------------
  6562. INT 62 u - FGDRIVER v1.10 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
  6563.     AX = 004Dh
  6564.     ES:BX -> pixel run map (pairs of bytes: color index, count)
  6565.     CX = number of pixel runs to display
  6566.     DX = width of image in pixels (> 0)
  6567. Notes:    this call is ignored in text modes
  6568.     the image is displayed with its lower left corner at the current
  6569.       graphics cursor position
  6570. SeeAlso: AX=0047h,AX=004Eh,AX=004Fh,AX=0050h,AX=0060h
  6571. --------V-62004E-----------------------------
  6572. INT 62 u - FGDRIVER v1.10 - "FG_DISPLAY" - DISPLAY IMAGE (PACKED PIXEL RUN FMT)
  6573.     AX = 004Eh
  6574.     ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
  6575.         contains the color for the first run in its high nybble and the
  6576.         color for the second run in its low nybble)
  6577.     CX = number of pixel runs to display
  6578.     DX = width of image in pixels (> 0)
  6579. Notes:    this call is ignored in text modes
  6580.     the image is displayed with its lower left corner at the current
  6581.       graphics cursor position
  6582. SeeAlso: AX=004Dh,AX=004Fh,AX=0050h,AX=0060h
  6583. --------V-62004F-----------------------------
  6584. INT 62 u - FGDRIVER v1.10 - "FG_DISPFILE" - DISPLAY STORED IMAGE
  6585.     AX = 004Fh
  6586.     ES:BX -> ASCIZ filename
  6587.     CX = image width in pixels (> 0)
  6588.     DX = image format
  6589.         0000h Fastgraph standard pixel run format
  6590.         0001h packed pixel run format
  6591. Notes:    this call is ignored in text modes
  6592.     the image is displayed with its lower left corner at the current
  6593.       graphics cursor position
  6594. SeeAlso: AX=004Dh,AX=004Eh,AX=0050h,AX=0060h
  6595. --------V-620050-----------------------------
  6596. INT 62 u - FGDRIVER v1.10 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
  6597.     AX = 0050h
  6598.     BX = index of pattern to define
  6599.     CX = number of predefined display pattern
  6600. Notes:    when displaying a pixel run map, Fastgraph uses the pattern associated
  6601.       with each color index rather than displaying the actual color
  6602.     this call has no effect in text and 256-color graphics modes
  6603. SeeAlso: AX=004Dh,AX=004Eh,AX=004Fh
  6604. --------V-620051-----------------------------
  6605. INT 62 u - FGDRIVER v1.10 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
  6606.     AX = 0051h
  6607.     ES:BX -> array containing image stores as a masking map (see below)
  6608.     CX = number of pixel runs in masking map
  6609.     DX = width of masking map in pixels
  6610. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  6611.       modes
  6612.     the image is drawn with its lower left corner at the current graphics
  6613.       cursor position
  6614. SeeAlso: AX=0052h
  6615.  
  6616. Format of masking map:
  6617. Offset    Size    Description
  6618.  00h    BYTE    length of first "protect" run (pixels remain unchanged)
  6619.  01h    BYTE    length of first "zero" run (pixels set to background color)
  6620.  02h    BYTE    length of second "protect" run
  6621.  03h    BYTE    length of second "zero" run
  6622.     ...
  6623. --------V-620052-----------------------------
  6624. INT 62 u - FGDRIVER v1.10 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
  6625.     AX = 0052h
  6626.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  6627.     CX = number of pixel runs in masking map
  6628.     DX = width of masking map in pixels
  6629. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  6630.       modes
  6631.     the image is drawn with its lower left corner at the current graphics
  6632.       cursor position
  6633. SeeAlso: AX=0029h,AX=004Ah,AX=0051h,AX=0053h,AX=0054h
  6634. --------V-620053-----------------------------
  6635. INT 62 u - FGDRIVER v1.10 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
  6636.     AX = 0053h
  6637.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  6638.     CX = number of pixel runs in masking map
  6639.     DX = width of masking map in pixels
  6640. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  6641.       modes
  6642.     the image is drawn with its lower left corner at the current graphics
  6643.       cursor position
  6644. SeeAlso: AX=0052h,AX=0054h
  6645. --------V-620054-----------------------------
  6646. INT 62 u - FGDRIVER v1.10 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
  6647.     AX = 0054h
  6648.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  6649.     CX = number of pixel runs in masking map
  6650.     DX = width of masking map in pixels
  6651. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  6652.       modes
  6653.     the image is drawn with its lower left corner at the current graphics
  6654.       cursor position
  6655. SeeAlso: AX=0029h,AX=0052h,AX=0053h
  6656. --------V-620055-----------------------------
  6657. INT 62 - FGDRIVER v1.10 - UNUSED
  6658.     AX = 0055h to 0059h
  6659. Return: AX = 0000h
  6660. --------V-62005A-----------------------------
  6661. INT 62 u - FGDRIVER v1.10 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
  6662.     AX = 005Ah
  6663.     BX = left edge column
  6664.     CX = right edge column
  6665.     DX = top edge row
  6666.     SI = bottom edge row
  6667. Note:    left and right edges are adjusted to byte boundaries if necessary
  6668. SeeAlso: AX=005Bh
  6669. --------V-62005B-----------------------------
  6670. INT 62 u - FGDRIVER v1.10 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
  6671.     AX = 005Bh
  6672.     BX = left edge column
  6673.     CX = right edge column
  6674.     DX = top edge row
  6675.     SI = bottom edge row
  6676. Note:    left and right edges are adjusted to byte boundaries if necessary
  6677. SeeAlso: AX=005Ah,AX=0064h
  6678. --------V-62005C-----------------------------
  6679. INT 62 u - FGDRIVER v1.10 - "FG_TRANSFER" - COPY REGION
  6680.     AX = 005Ch
  6681.     CX = source video page
  6682.     DX = destination video page
  6683.     ES:BX -> copy record (see below)
  6684. Note:    source and destination regions must not overlap if on the same page
  6685. SeeAlso: AX=005Dh,AX=005Fh
  6686.  
  6687. Format of copy record:
  6688. Offset    Size    Description
  6689.  00h    WORD    left edge column of source region
  6690.  02h    WORD    right edge column of source region
  6691.  04h    WORD    top edge row of source region
  6692.  06h    WORD    bottom edge row of source region
  6693.  08h    WORD    left edge of destination
  6694.  0Ah    WORD    bottom edge of destination
  6695. --------V-62005D-----------------------------
  6696. INT 62 u - FGDRIVER v1.10 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
  6697.     AX = 005Dh
  6698.     CX = source video page
  6699.     DX = destination video page
  6700.     ES:BX -> copy record (see AX=005Ch)
  6701. Notes:    pixels which are in any of the colors defined as transparent with
  6702.       AX=005Eh are left unchanged in the destination region
  6703.     source and destination regions must not overlap if on the same page
  6704.     this call is ignored in text modes
  6705. SeeAlso: AX=005Ch,AX=005Eh
  6706. --------V-62005E-----------------------------
  6707. INT 62 u - FGDRIVER v1.10 - "FG_TCMASK" - SET TRANSPARENT COLORS
  6708.     AX = 005Eh
  6709.     BX = colors to consider transparent (bit 0 = color 0, etc)
  6710. Notes:    this call is ignored in text modes
  6711.     the specified colors are considered transparent by AX=005Dh
  6712. SeeAlso: AX=005Dh
  6713. --------V-62005F-----------------------------
  6714. INT 62 u - FGDRIVER v1.10 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
  6715.     AX = 005Fh
  6716.     BX = source page number (0000h-003Fh)
  6717.     CX = destination page number (0000h-003Fh)
  6718. Note:    if both source and destination pages are logical pages, they must both
  6719.       be located in the same type (conventional, EMS, XMS) of memory
  6720. SeeAlso: AX=005Ch,AX=009Dh,AX=009Eh,AX=009Fh
  6721. --------V-620060-----------------------------
  6722. INT 62 u - FGDRIVER v1.10 - "FG_DISPPCX" - DISPLAY PCX FILE
  6723.     AX = 0060h
  6724.     ES:BX -> ASCIZ filename
  6725.     CX = flags
  6726.         bit 0: use current palette rather than PCX file's palette
  6727.         bits 1-15 reserved (0)
  6728. Return: AX = status
  6729.         0000h success
  6730.         0001h file not found
  6731.         0002h file is not a valid PCX file
  6732. Notes:    this call is ignored in text modes and Hercules low-resolution graphics
  6733.     the image is displayed with its upper left corner at the current
  6734.       graphics cursor position
  6735. SeeAlso: AX=004Dh,AX=004Eh,AX=004Fh,AX=0061h
  6736. --------V-620061-----------------------------
  6737. INT 62 u - FGDRIVER v1.10 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
  6738.     AX = 0061h
  6739.     BX = left edge in screen space units
  6740.     CX = right edge in screen space units
  6741.     DX = top edge in screen space units
  6742.     SI = bottom edge in screen space units
  6743.     ES:DI -> ASCIZ filename of PCX file to create
  6744. Return: AX = status
  6745.         0000h successful
  6746.         0001h file not created
  6747. Notes:    the PCX file is created from the specified region of the active video
  6748.       page; the left and right edges are adjusted to a byte boundary if
  6749.       necessary
  6750.     if the specified file already exists, it is overwritten
  6751.     this call is ignored in text and Hercules low-resolution graphics modes
  6752. SeeAlso: AX=0060h
  6753. --------V-620062-----------------------------
  6754. INT 62 u - FGDRIVER v1.10 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
  6755.     AX = 0062h
  6756.     BX = image width in pixels
  6757.     CX = image height in pixels
  6758. Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
  6759. SeeAlso: AX=0048h
  6760. --------V-620063-----------------------------
  6761. INT 62 - FGDRIVER v1.10 - UNUSED
  6762.     AX = 0063h
  6763. Return: AX = 0000h
  6764. --------V-620064-----------------------------
  6765. INT 62 u - FGDRIVER v1.10 - "FG_FADEIN" - FADE IN HIDDEN PAGE
  6766.     AX = 0064h
  6767.     BX = delay (0000h = fastest possible fade-in)
  6768. Notes:    the current hidden page is copied to the current visible page in small
  6769.       random sections to produce a fade-in effect
  6770.     this call is ignored in text modes
  6771. SeeAlso: AX=005Bh,AX=0065h
  6772. --------V-620065-----------------------------
  6773. INT 62 u - FGDRIVER v1.10 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
  6774.     AX = 0065h
  6775.     BX = delay (0000h = fastest possible fade-out)
  6776. Notes:    this call is ignored in text modes
  6777.     the current visible page is filled with pixels of the current color in
  6778.       small random sections to give a fade-out effect
  6779. SeeAlso: AX=0064h
  6780. --------V-620066-----------------------------
  6781. INT 62 u - FGDRIVER v1.10 - "FG_PAN" - SET SCREEN ORIGIN
  6782.     AX = 0066h
  6783.     BX = new column for screen origin
  6784.     CX = new row for screen origin
  6785. SeeAlso: AX=0067h
  6786. --------V-620067-----------------------------
  6787. INT 62 u - FGDRIVER v1.10 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
  6788.     AX = 0067h
  6789.     BX = left edge column
  6790.     CX = right edge column
  6791.     DX = top edge row
  6792.     SI = bottom edge row
  6793.     DI = number of pixels by which to scroll (positive scrolls up,
  6794.         negative scrolls down)
  6795.     ES = type of scroll
  6796.         0000h circular (rows scrolled off are copied to vacated rows)
  6797.         else vacated rows are filled with the current color
  6798. Notes:    in graphics modes, the left and right edges are adjusted to byte
  6799.       boundaries if necessary
  6800.     circular scrolling uses part of the hidden page as a workspace
  6801. SeeAlso: AX=0066h
  6802. --------V-620068-----------------------------
  6803. INT 62 - FGDRIVER v1.10 - UNUSED
  6804.     AX = 0068h to 006Ch
  6805. Return: AX = 0000h
  6806. --------V-62006D-----------------------------
  6807. INT 62 u - FGDRIVER v1.10 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
  6808.     AX = 006Dh
  6809. Return: after next key pressed
  6810. SeeAlso: AX=006Eh,AX=006Fh,AX=0096h
  6811. --------V-62006E-----------------------------
  6812. INT 62 u - FGDRIVER v1.10 - "FG_GETKEY" - GET NEXT KEYSTROKE
  6813.     AX = 006Eh
  6814.     ES:BX -> variable pointer record (see below)
  6815. Return: (after next keystroke if no typeahead) variables updated
  6816. SeeAlso: AX=006Dh,AX=006Fh,AX=0070h
  6817.  
  6818. Format of variable pointer record:
  6819. Offset    Size    Description
  6820.  00h    WORD    segment of BYTE buffer for ASCII keycode
  6821.  02h    WORD    offset of BYTE buffer for ASCII keycode
  6822.  04h    WORD    segment of BYTE buffer for extended keycode
  6823.  06h    WORD    offset of BYTE buffer for extended keycode
  6824. --------V-62006F-----------------------------
  6825. INT 62 u - FGDRIVER v1.10 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
  6826.     AX = 006Fh
  6827.     ES:BX -> variable pointer record (see below)
  6828. Return: variables updated
  6829. Note:    if the keyboard buffer is empty, both the ASCII and extended keycodes
  6830.       are set to 00h
  6831. SeeAlso: AX=006Dh,AX=006Eh,AX=0070h,AX=0079h
  6832.  
  6833. Format of variable pointer record:
  6834. Offset    Size    Description
  6835.  00h    WORD    segment of BYTE buffer for ASCII keycode
  6836.  02h    WORD    offset of BYTE buffer for ASCII keycode
  6837.  04h    WORD    segment of BYTE buffer for extended keycode
  6838.  06h    WORD    offset of BYTE buffer for extended keycode
  6839. --------V-620070-----------------------------
  6840. INT 62 u - FGDRIVER v1.10 - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
  6841.     AX = 0070h
  6842. Return: AX = CapsLock state (0000h off, 0001h on)
  6843. SeeAlso: AX=006Eh,AX=006Fh,AX=0071h,AX=0072h,AX=0074h
  6844. --------V-620071-----------------------------
  6845. INT 62 u - FGDRIVER v1.10 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
  6846.     AX = 0071h
  6847.     BX = new state (0000h off, 0001h on)
  6848. SeeAlso: AX=0070h,AX=0073h
  6849. --------V-620072-----------------------------
  6850. INT 62 u - FGDRIVER v1.10 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
  6851.     AX = 0072h
  6852. Return: AX = NumLock state (0000h off, 0001h on)
  6853. SeeAlso: AX=0070h,AX=0074h
  6854. --------V-620073-----------------------------
  6855. INT 62 u - FGDRIVER v1.10 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
  6856.     AX = 0073h
  6857.     BX = new state (0000h off, 0001h on)
  6858. SeeAlso: AX=0071h,AX=0072h
  6859. --------V-620074-----------------------------
  6860. INT 62 u - FGDRIVER v1.10 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
  6861.     AX = 0074h
  6862. Return: AX = ScrollLock state (0000h off, 0001h on)
  6863. SeeAlso: AX=0070h,AX=0072h
  6864. --------V-620075-----------------------------
  6865. INT 62 u - FGDRIVER v1.10 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
  6866.     AX = 0075h
  6867.     BX = joystick number (0001h or 0002h)
  6868. Return: AX = status
  6869.         0000h successful
  6870.         FFFFh joystick not connected or no game port
  6871. Note:    Fastgraph assumes that the requested joystick is centered at the time
  6872.       this function is called
  6873. SeeAlso: AX=0076h,AX=0077h,AX=0078h,AX=0079h
  6874. --------V-620076-----------------------------
  6875. INT 62 u - FGDRIVER v1.10 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
  6876.     AX = 0076h
  6877.     BX = joystick number (0001h or 0002h)
  6878. Return: AX = horizontal position of joystick
  6879.         FFFFh if joystick uninitialized or not present
  6880. Notes:    the actual coordinates are processor- and joystick-dependent
  6881.     you must call AX=0075h before this function
  6882. SeeAlso: AX=0075h,AX=0077h,AX=0078h
  6883. --------V-620077-----------------------------
  6884. INT 62 u - FGDRIVER v1.10 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
  6885.     AX = 0077h
  6886.     BX = joystick number (0001h or 0002h)
  6887. Return: AX = vertical position of joystick
  6888.         FFFFh if joystick uninitialized or not present
  6889. Notes:    the actual coordinates are processor- and joystick-dependent
  6890.     you must call AX=0075h before this function
  6891. SeeAlso: AX=0075h,AX=0076h,AX=0078h
  6892. --------V-620078-----------------------------
  6893. INT 62 u - FGDRIVER v1.10 - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
  6894.     AX = 0078h
  6895.     BX = joystick number (0001h or 0002h)
  6896. Return: AX = button states
  6897.         bit 0: top button pressed
  6898.         bit 1: bottom button pressed
  6899. SeeAlso: AX=0075h,AX=0076h,AX=0077h,AX=0079h
  6900. --------V-620079-----------------------------
  6901. INT 62 u - FGDRIVER v1.10 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
  6902.     AX = 0079h
  6903.     CX = joystick number (0001h or 0002h)
  6904.     ES:BX -> variable pointer record (see below)
  6905. Notes:    if the indicated joystick has not been initialized with AX=0075h, both
  6906.       the button code and joystick position will be set to 00h
  6907.     if either button is pressed, a button code of 0Dh is returned;
  6908.       otherwise, a button code of 00h is returned
  6909. SeeAlso: AX=006Fh,AX=0075h,AX=0078h
  6910.  
  6911. Format of variable pointer record:
  6912. Offset    Size    Description
  6913.  00h    WORD    segment of BYTE buffer for button code
  6914.  02h    WORD    offset of BYTE buffer for button code
  6915.  04h    WORD    segment of BYTE buffer for joystick position
  6916.  06h    WORD    offset of BYTE buffer for joystick position
  6917. --------V-62007A-----------------------------
  6918. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
  6919.     AX = 007Ah
  6920. Return: AX = status
  6921.         0002h two-button mouse
  6922.         0003h three-button mouse
  6923.         FFFFh initialization failed
  6924. Note:    after this call, the mouse cursor is invisible
  6925. SeeAlso: AX=007Bh,AX=007Ch,AX=007Eh,AX=0080h,INT 33/AX=0000h
  6926. --------V-62007B-----------------------------
  6927. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
  6928.     AX = 007Bh
  6929.     BX = new state (0000h invisible, 0001h visible)
  6930. SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0001h,INT 33/AX=0002h
  6931. --------V-62007C-----------------------------
  6932. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
  6933.     AX = 007Ch
  6934.     CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
  6935.               -1=left release, -2=right release, -3=middle release)
  6936.     ES:BX -> variable pointer record (see below)
  6937. Return: variables updated
  6938. Note:    returns the count of presses or releases since the last call to this
  6939.       function; if the count is zero, row and col will also be zero
  6940. SeeAlso: AX=007Ah,INT 33/AX=0005h,INT 33/AX=0006h
  6941.  
  6942. Format of variable pointer record:
  6943. Offset    Size    Description
  6944.  00h    WORD    segment of WORD buffer for press/release count
  6945.  02h    WORD    offset of WORD buffer for press/release count
  6946.  04h    WORD    segment of WORD buffer for screen space col of last press/rls
  6947.  06h    WORD    offset of WORD buffer for screen space col of last press/rels
  6948.  08h    WORD    segment of WORD buffer for screen space row of last press/rls
  6949.  0Ah    WORD    offset of WORD buffer for screen space row of last press/rls
  6950. --------V-62007D-----------------------------
  6951. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
  6952.     AX = 007Dh
  6953.     ES:BX -> variable pointer record (see below)
  6954. SeeAlso: AX=007Ah,AX=0081h
  6955.  
  6956. Format of variable pointer record:
  6957. Offset    Size    Description
  6958.  00h    WORD    segment of WORD buffer for mouse column
  6959.  02h    WORD    offset of WORD buffer for mouse column
  6960.  04h    WORD    segment of WORD buffer for mouse row
  6961.  06h    WORD    offset of WORD buffer for mouse row
  6962.  08h    WORD    segment of WORD buffer for button status
  6963.  0Ah    WORD    offset of WORD buffer for button status
  6964. Note:    button status: bit 0 = left button, bit 1 = right, bit 2 = middle
  6965. --------V-62007E-----------------------------
  6966. INT 62 u - FGDRIVER v1.10 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
  6967.     AX = 007Eh
  6968.     BX = screen mask
  6969.     CX = cursor mask
  6970. Note:    this call is ignored in graphics modes
  6971. SeeAlso: AX=007Ah,AX=007Fh,INT 33/AX=000Ah
  6972. --------V-62007F-----------------------------
  6973. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
  6974.     AX = 007Fh
  6975.     ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
  6976.     CX = X offset of hot spot from upper left corner
  6977.     DX = Y offset of hot spot from upper left corner
  6978. Note:    this call is ignored in text modes
  6979. SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0009h
  6980. --------V-620080-----------------------------
  6981. INT 62 u - FGDRIVER v1.10 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
  6982.     AX = 0080h
  6983.     BX = left-most position allowed for mouse cursor
  6984.     CX = right-most position allowed
  6985.     DX = top-most position allowed
  6986.     SI = bottom-most position allowed
  6987. SeeAlso: AX=007Ah,AX=0081h,INT 33/AX=0007h,INT 33/AX=0008h
  6988. --------V-620081-----------------------------
  6989. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
  6990.     AX = 0081h
  6991.     BX = new column
  6992.     CX = new row
  6993. Note:    will not move the mouse cursor outside the bounding box specified with
  6994.       AX=0080h
  6995. SeeAlso: AX=007Ah,AX=007Dh,AX=0080h,INT 33/AX=0004h
  6996. --------V-620082-----------------------------
  6997. INT 62 u - FGDRIVER v1.10 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
  6998.     AX = 0082h
  6999.     BX = horizontal mickeys per eight pixels of movement (default 16)
  7000.     CX = vertical mickeys per eight pixels of movement (default 16)
  7001. SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
  7002. --------V-620083-----------------------------
  7003. INT 62 - FGDRIVER v1.10 - UNUSED
  7004.     AX = 0083h to 0087h
  7005. Return: AX = 0000h
  7006. --------V-620088-----------------------------
  7007. INT 62 u - FGDRIVER v1.10 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
  7008.     AX = 0088h
  7009.     BX = frequency in Hertz (18-32767)
  7010.     CX = duration in clock ticks (0000h or negative for continuous sound)
  7011. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  7012.       progress
  7013. SeeAlso: AX=0089h,AX=008Ah,AX=008Eh,AX=0090h
  7014. --------V-620089-----------------------------
  7015. INT 62 u - FGDRIVER v1.10 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
  7016.     AX = 0089h
  7017.     CX = number of times to cycle through sound list
  7018.     ES:BX -> sounds array (see below)
  7019. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  7020.       progress
  7021. SeeAlso: AX=0088h,AX=008Eh,AX=008Fh
  7022.  
  7023. Format of sounds array element:
  7024. Offset    Size    Description
  7025.  00h    WORD    frequency of sound in Hertz (0000h ends array)
  7026.  02h    WORD    duration of sound in clock ticks
  7027. --------V-62008A-----------------------------
  7028. INT 62 u - FGDRIVER v1.10 - "FG_VOICE" - START SOUND
  7029.     AX = 008Ah
  7030.     BX = channel on TI sound chip
  7031.         1-3 = channels 1-3, 4 = channel 4 with periodic noise,
  7032.         5 = channel 4 with white noise
  7033.     CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz, 
  7034.         2=2048 Hz for channels 4 and 5)
  7035.     DX = volume
  7036.     SI = duration in clock ticks (continuous if <= 0)
  7037. Notes:    FGDRIVER is the external video driver for the shareware
  7038.       Fastgraph/Light by Ted Gruber Software
  7039.     only available on PCjr and Tandy 1000
  7040. SeeAlso: AX=0088h,AX=008Bh,AX=008Ch
  7041. --------V-62008B-----------------------------
  7042. INT 62 u - FGDRIVER v1.10 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
  7043.     AX = 008Bh
  7044.     ES:BX -> tone array (see below)
  7045.     CX = number of times to repeat tone array
  7046. Notes:    FGDRIVER is the external video driver for the shareware
  7047.       Fastgraph/Light by Ted Gruber Software
  7048.     only available on PCjr and Tandy 1000
  7049. SeeAlso: AX=008Ah,AX=008Dh,AX=008Eh,AX=008Fh,AX=0091h
  7050.  
  7051. Format of tone array element:
  7052. Offset    Size    Description
  7053.  00h    WORD    channel number (0000h terminates array)
  7054.  02h    WORD    frequency
  7055.  04h    WORD    volume
  7056.  06h    WORD    duration in 1/72.8 seconds
  7057. --------V-62008C-----------------------------
  7058. INT 62 u - FGDRIVER v1.10 - "FG_MUSIC" - PLAY SERIES OF NOTES
  7059.     AX = 008Ch
  7060.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  7061. Return: after music completed
  7062. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  7063.       progress
  7064. SeeAlso: AX=008Ah,AX=008Dh
  7065. --------V-62008D-----------------------------
  7066. INT 62 u - FGDRIVER v1.10 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
  7067.     AX = 008Dh
  7068.     CX = number of repetitions (negative = continuous play)
  7069.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  7070. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  7071.       progress
  7072. SeeAlso: AX=008Bh,AX=008Ch,AX=008Eh,AX=008Fh,AX=0091h
  7073. --------V-62008E-----------------------------
  7074. INT 62 u - FGDRIVER v1.10 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
  7075.     AX = 008Eh
  7076. Note:    immediately stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
  7077.       or AX=008Bh; ignored if no asynchronous sound is playing
  7078. SeeAlso: AX=0088h,AX=008Bh,AX=008Fh,AX=0090h,AX=0091h
  7079. --------V-62008F-----------------------------
  7080. INT 62 u - FGDRIVER v1.10 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
  7081.     AX = 008Fh
  7082. Note:    stops any sounds started with "FG_MUSICB", "FG_SOUNDS", or AX=008Bh
  7083.       after the current repetition completes; ignored unless asynchronous
  7084.       sound is continuous
  7085. SeeAlso: AX=008Bh,AX=008Eh,AX=0090h
  7086. --------V-620090-----------------------------
  7087. INT 62 u - FGDRIVER v1.10 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
  7088.     AX = 0090h
  7089. Note:    this call has no effect if there is no continuous sound playing
  7090. SeeAlso: AX=008Eh,AX=008Fh,AX=0091h
  7091. --------V-620091-----------------------------
  7092. INT 62 u - FGDRIVER v1.10 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
  7093.     AX = 0091h
  7094. Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
  7095. SeeAlso: AX=008Bh,AX=008Dh,AX=0090h
  7096. --------V-620092-----------------------------
  7097. INT 62 u - FGDRIVER v1.10 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
  7098.     AX = 0092h
  7099. SeeAlso: AX=008Eh,AX=008Fh,AX=0090h
  7100. --------V-620093-----------------------------
  7101. INT 62 u - FGDRIVER v1.10 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
  7102.     AX = 0093h
  7103. Notes:    this call has no effect if there is no asynchronous sound in progress
  7104.     the program must not exit while sound is suspended
  7105. SeeAlso: AX=0092h
  7106. --------V-620094-----------------------------
  7107. INT 62 - FGDRIVER v1.10 - UNUSED
  7108.     AX = 0094h to 0095h
  7109. Return: AX = 0000h
  7110. --------V-620096-----------------------------
  7111. INT 62 u - FGDRIVER v1.10 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
  7112.     AX = 0096h
  7113.     BX = duration in clock ticks
  7114. Return: after delay elapses
  7115. SeeAlso: AX=006Dh,AX=0097h,INT 1A/AX=FF01h
  7116. --------V-620097-----------------------------
  7117. INT 62 u - FGDRIVER v1.10 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
  7118.     AX = 0097h
  7119.     BX = duration in processor-dependent delay units (see AX=0098h)
  7120. Return: after delay elapses
  7121. SeeAlso: AX=0096h,AX=0098h,INT 2F/AX=1224h
  7122. --------V-620098-----------------------------
  7123. INT 62 u - FGDRIVER v1.10 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
  7124.     AX = 0098h
  7125. Return: AX = delay units per clock tick (processor-dependent)
  7126. Note:    delay units are used by "FG_STALL" (AX=0097h)
  7127. SeeAlso: AX=0097h
  7128. --------V-620099-----------------------------
  7129. INT 62 u - FGDRIVER v1.10 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
  7130.     AX = 0099h
  7131. Return: DX:AX = number of clock ticks since midnight
  7132. Note:    FGDRIVER is the external video driver for the shareware
  7133.       Fastgraph/Light by Ted Gruber Software
  7134. --------V-62009A-----------------------------
  7135. INT 62 - FGDRIVER v1.10 - UNUSED
  7136.     AX = 009Ah
  7137. Return: AX = 0000h
  7138. --------V-62009B-----------------------------
  7139. INT 62 u - FGDRIVER v1.10 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
  7140.     AX = 009Bh
  7141. Return: DX:AX = number of bytes of conventional memory available
  7142. SeeAlso: AX=009Dh
  7143. --------V-62009C-----------------------------
  7144. INT 62 u - FGDRIVER v1.10 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
  7145.     AX = 009Ch
  7146.     BX = operation
  7147.         0000h replacement
  7148.         0001h AND
  7149.         0002h OR
  7150.         0003h XOR
  7151. Note:    only available in native EGA/VGA graphics mode (0Dh to 12h)
  7152. --------V-62009D-----------------------------
  7153. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONVMEM)
  7154.     AX = 009Dh
  7155.     BX = page number (0001h-003Fh)
  7156. Return: AX = status
  7157.         0000h successful
  7158.         FFFCh insufficient memory
  7159.         FFFDh page already created, or exists as physical or virtual page
  7160.         FFFEh invalid page number
  7161. Note:    the only operation which is allowed on logical pages is AX=005Fh
  7162. SeeAlso: AX=0043h,AX=005Fh,AX=009Bh,AX=009Eh,AX=009Fh
  7163. --------V-62009E-----------------------------
  7164. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
  7165.     AX = 009Eh
  7166.     BX = page number (0001h-003Fh)
  7167. Return: AX = status
  7168.         0000h successful
  7169.         FFFCh insufficient memory
  7170.         FFFDh page already created, or exists as physical or virtual page
  7171.         FFFEh invalid page number
  7172.         FFFFh memory manager not initialized
  7173. Notes:    must first call AX=00A0h
  7174.     the only operation which is allowed on logical pages is AX=005Fh
  7175. SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Fh,AX=00A0h
  7176. --------V-62009F-----------------------------
  7177. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
  7178.     AX = 009Fh
  7179.     BX = page number (0001h-003Fh)
  7180. Return: AX = status (see AX=009Eh)
  7181. Notes:    must first call AX=00A1h
  7182.     the only operation which is allowed on logical pages is AX=005Fh
  7183. SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Eh,AX=00A1h
  7184. --------V-6200A0-----------------------------
  7185. INT 62 u - FGDRIVER v1.10 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
  7186.     AX = 00A0h
  7187. Return: AX = status
  7188.         0000h successful
  7189.         FFFFh expanded memory manager inaccessible or not installed
  7190. SeeAlso: AX=009Eh,AX=00A1h
  7191. --------V-6200A1-----------------------------
  7192. INT 62 u - FGDRIVER v1.10 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
  7193.     AX = 00A1h
  7194. Return: AX = status
  7195.         0000h successful
  7196.         FFFFh extended memory manager inaccessible or not installed
  7197. SeeAlso: AX=009Fh,AX=00A0h
  7198. --------V-6200A2-----------------------------
  7199. INT 62 u - FGDRIVER v1.10 - "FG_BOX" - DRAW UNFILLED RECTANGLE
  7200.     AX = 00A2h
  7201.     BX = left column
  7202.     CX = right column
  7203.     DX = top row
  7204.     SI = bottom row
  7205. Notes:    FGDRIVER is the external video driver for the shareware
  7206.       Fastgraph/Light by Ted Gruber Software
  7207.     the rectangle is drawn in screen space, respecting the clipping region,
  7208.       width edges of the width specified with AX=00A3h (default = 1 is set
  7209.       by "FG_SETMODE")
  7210.     this function has no effect in text modes
  7211. SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=0030h,AX=00A3h
  7212. --------V-6200A3-----------------------------
  7213. INT 62 u - FGDRIVER v1.10 - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
  7214.     AX = 00A3h
  7215.     BX = width of left and right edges in pixels (> 0)
  7216.     CX = width of top and bottom edges in pixels (> 0)
  7217. SeeAlso: AX=00A2h
  7218. --------V-6200A4-----------------------------
  7219. INT 62 u - FGDRIVER v1.10 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
  7220.     AX = 00A4h
  7221.     CX = number of DAC registers to return (0001h to 0100h)
  7222.     DX = starting DAC register number (0000h to 00FFh)
  7223.     ES:BX -> buffer for DAC red/green/blue triples
  7224. Note:    the register number wraps back to zero after FFh
  7225. SeeAlso: AX=001Ch,AX=00A5h
  7226. --------V-6200A5-----------------------------
  7227. INT 62 u - FGDRIVER v1.10 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
  7228.     AX = 00A5h
  7229.     CX = number of DAC registers to set (0001h to 0100h)
  7230.     DX = starting DAC register number (0000h to 00FFh)
  7231.     ES:BX -> buffer containing DAC red/green/blue triples
  7232. Notes:    the register number wraps back to zero after FFh
  7233.     this call has no effect in text modes or graphics modes below 11h
  7234. SeeAlso: AX=001Bh,AX=00A4h
  7235. --------T-6201-------------------------------
  7236. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  7237.     AH = 01h
  7238. Program: Cswitch is a set of multitasking functions by Herb Rose
  7239. SeeAlso: AH=05h,AH=06h,INT 15/AX=1000h
  7240. --------T-6202-------------------------------
  7241. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  7242.     AH = 02h
  7243.     DX = semaphore number (0-63)
  7244. Return: AX = FFFFh bad semaphore number
  7245.          else  success
  7246. SeeAlso: AH=03h,AH=04h
  7247. --------T-6203-------------------------------
  7248. INT 62 - Cswitch - CHECK SEMAPHORE
  7249.     AH = 03h
  7250.     DX = semaphore number (0-63)
  7251. Return: AX = FFFFh not owned
  7252.          else  owned
  7253. SeeAlso: AH=02h,AH=04h
  7254. --------T-6204-------------------------------
  7255. INT 62 - Cswitch - TRIGGER SEMAPHORE
  7256.     AH = 04h
  7257.     DX = semaphore number (0-63)
  7258. Return: AX = FFFFh bad semaphore number
  7259.          else  success
  7260. SeeAlso: AH=02h,AH=03h
  7261. --------T-6205-------------------------------
  7262. INT 62 - Cswitch - SLEEP
  7263.     AH = 05h
  7264.     BX = seconds to sleep
  7265. SeeAlso: AH=01h,AH=06h,AH=08h"Cswitch"
  7266. --------T-6206-------------------------------
  7267. INT 62 - Cswitch - SUSPEND
  7268.     AH = 06h
  7269. SeeAlso: AH=05h,AH=08h"Cswitch"
  7270. --------T-6207-------------------------------
  7271. INT 62 - Cswitch - SPAWN
  7272.     AH = 07h
  7273.     ES:BX -> function address to start executing at
  7274.     CX = priority (1-10)
  7275. Return: AX = FFFDh  no free memory control blocks
  7276.        = FFFEh  no free task control blocks
  7277.        = FFFFh  not enough memory to create new task stack
  7278.        = >0        the tcb number of the new task, indicating no error
  7279. SeeAlso: AH=0Fh,AH=10h
  7280. --------T-6208-------------------------------
  7281. INT 62 - Cswitch - WAKE UP TASK
  7282.     AH = 08h
  7283.     BX = tcb identifier
  7284. SeeAlso: AH=05h,AH=06h
  7285. ----------6208--CXFFFE-----------------------
  7286. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  7287.     AH = 08h
  7288.     CX = FFFEh
  7289.     DX = FFFFh
  7290. Return: AX = PSP address of resident DBLIBRARY
  7291. Note:    this call does not free the memory allocated to the TSR; the calling
  7292.       code must do the deallocation.
  7293. SeeAlso: INT 62"DBLIBRARY"
  7294. --------T-6209-------------------------------
  7295. INT 62 - Cswitch - SET PRIORITY
  7296.     AH = 09h
  7297.     BX = new base priority (1-10)
  7298. Note:    the lower the priority is numerically, the more often the task will run
  7299. --------T-620A-------------------------------
  7300. INT 62 - Cswitch - TEST MESSAGE QUEUE
  7301.     AH = 0Ah
  7302.     DX = queue number (0-63)
  7303. Return: AX = FFFFh bad queue number
  7304.        = 0000h nothing on queue
  7305.          else  number of bytes in first message in queue
  7306. SeeAlso: AH=0Bh,AH=0Ch
  7307. --------T-620B-------------------------------
  7308. INT 62 - Cswitch - SEND MESSAGE
  7309.     AH = 0Bh
  7310.     CX = number of bytes to write
  7311.     DS:SI -> buffer
  7312.     DX = queue number (0-63)
  7313. Return: AX = FFFEh triggered by something arriving, redo the call
  7314.        = FFFFh bad queue number
  7315.        = 0000h no message was on queue
  7316.          else  number of bytes in message
  7317. SeeAlso: AH=0Ah,AH=0Ch
  7318. --------T-620C-------------------------------
  7319. INT 62 - Cswitch - READ MESSAGE
  7320.     AH = 0Ch
  7321.     CX = number of bytes to read
  7322.     DS:SI -> buffer
  7323.     DX = queue number (0-63)
  7324. Return: AX = FFFFh bad queue number
  7325.          else  number of bytes transferred
  7326. SeeAlso: AH=0Ah,AH=0Bh
  7327. --------T-620D-------------------------------
  7328. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  7329.     AH = 0Dh
  7330. SeeAlso: AH=0Eh
  7331. --------T-620E-------------------------------
  7332. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  7333.     AH = 0Eh
  7334. SeeAlso: AH=0Dh
  7335. --------T-620F-------------------------------
  7336. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  7337.     AH = 0Fh
  7338.     ES:BX -> command line
  7339.     CX = priority (1-10)
  7340.     DX = background flag
  7341.        = != 0000h  allows loading to EMS
  7342. Return: AX = 0000h task loader queue is full
  7343.        = 0001h  no error
  7344. SeeAlso: AH=07h,AH=10h,AH=13h
  7345. --------T-6210-------------------------------
  7346. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  7347.     AH = 10h
  7348. SeeAlso: AH=07h,AH=0Fh
  7349. --------T-6211-------------------------------
  7350. INT 62 - Cswitch - GET TCB INFORMATION
  7351.     AH = 11h
  7352.     ES:BX -> a pointer which will be set to the tcb address
  7353. Return: AX = tcb indentifier
  7354. SeeAlso: AH=12h
  7355. --------T-6212-------------------------------
  7356. INT 62 - Cswitch - GET TCB ADDRESS
  7357.     AH = 12h
  7358.     ES:BX -> a pointer which will be set to the tcb table address
  7359. Return: AX = tcb indentifier
  7360. SeeAlso: AH=11h
  7361. --------T-6213-------------------------------
  7362. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  7363.     AH = 13h
  7364. Return: AX = FFFCh no Memory Control Blocks available
  7365.        = FFFDh no TCBs available
  7366.        = FFFEh insufficient memory
  7367.        = FFFFh cannot open file
  7368.        = 0000h load in progress (not done yet)
  7369.          else  tcb indentifier
  7370. SeeAlso: AH=0Fh
  7371. --------R-6247-------------------------------
  7372. INT 62 - PC Tools 7 COMMUTE - ???
  7373.     AH = 47h
  7374.     AL = subfunction (00h-31h)
  7375.     ???
  7376.     CF set
  7377. Return: ???
  7378. --------R-6248-------------------------------
  7379. INT 62 - PC Tools 7 COMMUTE - ???
  7380.     AH = 48h
  7381.     AL = ???
  7382.     ???
  7383.     CF set
  7384. Return: ???
  7385. --------R-6249-------------------------------
  7386. INT 62 - PC Tools 7 COMMUTE - ???
  7387.     AH = 49h
  7388.     ???
  7389.     CF set
  7390. Return: ???
  7391. Note:    may be the same as AH=4Ch
  7392. --------R-624A-------------------------------
  7393. INT 62 - PC Tools 7 COMMUTE - ???
  7394.     AH = 4Ah
  7395.     AL = subfunction (00h-46h)
  7396.     ???
  7397.     CF set
  7398. Return: ???
  7399. --------R-624B--BX1234-----------------------
  7400. INT 62 - PC Tools 7 COMMUTE - ???
  7401.     AH = 4Bh
  7402.     BX = 1234h
  7403.     CX = 1234h
  7404.     ES = ???
  7405.     CF set
  7406. Return: ???
  7407. --------R-624C-------------------------------
  7408. INT 62 - PC Tools 7 COMMUTE - ???
  7409.     AH = 4Ch
  7410.     BL = subfunction
  7411.         00h ???
  7412.         02h ???
  7413. Return: CF clear if successful
  7414.     CF set on error
  7415. --------R-626262-----------------------------
  7416. INT 62 - PC Tools 7 COMMUTE - INSTALLATION CHECK
  7417.     AX = 6262h
  7418.     CF set
  7419. Return: AX = 0000h
  7420.     BX = segment of resident code's PSP
  7421. --------*-63---------------------------------
  7422. INT 63 - reserved for user interrupt
  7423. --------d-63---------------------------------
  7424. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  7425. Notes:    this vector stores the last four bytes of the parameter table for
  7426.       hard disk 0
  7427. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  7428. ----------63---------------------------------
  7429. INT 63 - Oracle SQL Protected Mode Executive - ???
  7430. --------d-63---------------------------------
  7431. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  7432.    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
  7433.    has been moved there) and places the old value here
  7434. ----------63---------------------------------
  7435. INT 63 - Kofax KF9X00 image manipulation card interface
  7436. --------Q-63---------------------------------
  7437. INT 63 - DESQview/X - SOCKET API
  7438. Notes:    parameters are passed by patching!! data field immediately following
  7439.       the entry point, as detailed below; the preferred method for calling
  7440.       the socket API is via INT 15/AX=DE2Eh
  7441.     the installation check consists of testing for the string "dvxunix"
  7442.       (yes, lowercase) at offset 9 from the interrupt handler start
  7443. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  7444. Index:    installation check;DESQview/X socket interface
  7445.  
  7446. Format of interrupt handler entry:
  7447. Offset    Size    Description
  7448.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  7449.  03h    WORD    offset from following pointer for initial top of local stack
  7450.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  7451.  09h  7 BYTEs    signature "dvxunix"
  7452. --------*-64---------------------------------
  7453. INT 64 - reserved for user interrupt
  7454. --------d-64---------------------------------
  7455. INT 64 - Adaptec controllers - DRIVE 1 DATA
  7456. Notes:    this vector stores the first four bytes of the parameter table for
  7457.       hard disk 1
  7458.     these vectors are used by the following Adaptec controllers:
  7459.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  7460.     these vectors are NOT used by the following Adaptec controllers:
  7461.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  7462. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  7463. ----------64---------------------------------
  7464. INT 64 - Oracle SQL Protected Mode Executive - ???
  7465. --------N-64---------------------------------
  7466. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  7467. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  7468.       versions do not use this interrupt for IPX/SPX access, instead
  7469.       getting an entry point from INT 2F/AX=7A00h
  7470. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  7471. --------h-64---------------------------------
  7472. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7473. SeeAlso: INT 65"DG10",INT 66"DG10"
  7474. --------r-64---------------------------------
  7475. INT 64 - Extended Batch Language v3.14+
  7476.     AH = function
  7477.         00h to 5Fh chained to previous handler
  7478.         60h to 6Ch reserved, return immediately
  7479.         80h to FFh chained to previous handler
  7480.         6Dh (v4.01+) insert tone in queue
  7481.         AL = ???
  7482.         CX = frequency in Hertz
  7483.         DL = duration in clock ticks
  7484.         Return: AL = 00h if note stored
  7485.                = 01h if no room to store
  7486.         6Eh clear ??? counter/flag
  7487.         6Fh return counter/flag that AH=6Eh clears
  7488.         70h ???
  7489.         AL = ???
  7490.         71h ???
  7491.         AL = ???
  7492.         72h ???
  7493.         73h insert byte at end of keyboard buffer
  7494.         AL = byte to insert
  7495.         Return: AL = 00h if byte inserted
  7496.                = 01h if no room to store
  7497.         74h insert byte at front of keyboard buffer
  7498.         AL = byte to insert
  7499.         Return: AL = 00h if byte inserted
  7500.                = 01h if no room to store
  7501.         75h ???
  7502.         76h get keyboard "stack" status
  7503.         AL = 'K' if kbd read will read physical keyboard
  7504.              'S' if it will read EBL internal keyboard buffer
  7505.         AH = ???
  7506.         77h clear internal keyboard buffer
  7507.         78h ???
  7508.         AL = ???
  7509.         79h ???
  7510.         7Ah ???
  7511.         AL = ???
  7512.         7Bh ???
  7513.         AL = ???
  7514.         7Ch ???
  7515.         AL = ???
  7516.         7Dh ???
  7517.         AL = ???
  7518.         7Eh clear buffer for ???
  7519.         7Fh installation check
  7520.         Return: CX = version in BCD
  7521.             DI = segment of ???
  7522.             BX = segment of next program's PSP???
  7523. Program: Extended Batch Language is a batch-file enhancer by Seaware
  7524. Notes:    the chaining does not check whether the interrupt had been hooked
  7525.       before, so if you try to chain when the previous vector was 
  7526.       0000h:0000h, you'll be in trouble
  7527.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  7528.       floating-point and extended function packages
  7529. Index:    installation check;EBL|installation check;Extended Batch Language
  7530. --------d-64---------------------------------
  7531. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7532. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  7533.       It can either destroy 4 vectors and take no memory or TSR and take
  7534.       up some memory.
  7535. SeeAlso: INT 65"Pdisk"
  7536. --------*-65---------------------------------
  7537. INT 65 - reserved for user interrupt
  7538. --------d-65---------------------------------
  7539. INT 65 - Adaptec controllers - DRIVE 1 DATA
  7540. Note:    this vector stores the second four bytes of the parameter table for
  7541.       hard disk 1
  7542. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  7543. --------h-65---------------------------------
  7544. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7545. SeeAlso: INT 64"DG10",INT 66"DG10"
  7546. --------N-65---------------------------------
  7547. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  7548. --------U-65---------------------------------
  7549. INT 65 - SD.COM v6.2
  7550.    The unregistered version of SD62.COM uses the low byte of this vector to
  7551.    count the number of invocations, displaying a registration reminder each
  7552.    time after the 20th use.
  7553. --------d-65---------------------------------
  7554. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7555. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  7556. --------s-65---------------------------------
  7557. INT 65 - Ad Lib SOUND.COM - INTERFACE
  7558.     SI = function number (see also entries below)
  7559.         0000h Init
  7560.         0002h RelTimeStart
  7561.         0003h SetState
  7562.         0004h GetState
  7563.         0005h Flush
  7564.         0006h SetMode
  7565.         0007h GetMode
  7566.         0008h SetRelVolume
  7567.         0009h SetTempo
  7568.         000Ah SetTranspose
  7569.         000Bh GetTranspose
  7570.         000Ch SetActVoice
  7571.         000Dh GetActVoice
  7572.         000Eh PlayNoteDel
  7573.         000Fh PlayNote
  7574.         0010h SetTimbre
  7575.         0011h SetPitch
  7576.         0012h SetTickBeat
  7577.         0013h NoteOn
  7578.         0014h NoteOff
  7579.         0015h Timbre
  7580.         0016h SetPitchBend
  7581.         0017h WaveForm
  7582.     ES:BX -> arguments
  7583. Note:    the installation check consists of checking for the signature block
  7584.       immediately preceding the interrupt handler (see below)
  7585. Index:    installation check;Ad Lib SOUND.COM
  7586.  
  7587. Format of signature block:
  7588. Offset    Size    Description
  7589.  00h    WORD    version number
  7590.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  7591.  15h    BYTE    01h
  7592.  16h    BYTE    01h
  7593.  17h    BYTE    00h
  7594. --------s-65----SI0000-----------------------
  7595. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  7596.     SI = 0000h
  7597. --------s-65----SI0003-----------------------
  7598. INT 65 - Ad Lib SOUND.COM - SET STATE
  7599.     SI = 0003h
  7600.     ES:BX -> WORD state = 0000h disabled 
  7601.                 = 0001h enabled
  7602. SeeAlso: SI=0004h
  7603. --------s-65----SI0004-----------------------
  7604. INT 65 - Ad Lib SOUND.COM - GET STATE
  7605.     SI = 0004h
  7606. Return: AX = 0000h all done playing sounds
  7607.        = else  still playing sounds
  7608. SeeAlso: SI=0003h
  7609. --------s-65----SI0006-----------------------
  7610. INT 65 - Ad Lib SOUND.COM - SET MODE
  7611.     SI = 0006h
  7612.     ES:BX -> WORD mode = 0000h melodic
  7613.                = 0001h percussive
  7614. SeeAlso: SI=0007h
  7615. --------s-65----SI0007-----------------------
  7616. INT 65 - Ad Lib SOUND.COM - GET MODE
  7617.     SI = 0007h
  7618. Return: AX = 0000h melodic
  7619.        = 0001h percussive
  7620. SeeAlso: SI=0006h
  7621. --------s-65----SI000C-----------------------
  7622. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  7623.     SI = 000Ch
  7624.     ES:BX -> WORD voice = 0000h to 0008h
  7625. SeeAlso: SI=000Dh
  7626. --------s-65----SI000D-----------------------
  7627. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  7628.     SI = 000Dh
  7629. Return: AX = voice (0000h to 0008h)
  7630. SeeAlso: SI=000Ch
  7631. --------*-66---------------------------------
  7632. INT 66 - reserved for user interrupt
  7633. --------d-66---------------------------------
  7634. INT 66 - Adaptec controllers - DRIVE 1 DATA
  7635. Note:    this vector stores the third four bytes of the parameter table for
  7636.       hard disk 1
  7637. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  7638. --------h-66---------------------------------
  7639. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7640. SeeAlso: INT 64"DG10"
  7641. --------N-66---------------------------------
  7642. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  7643. Program: TurboNET is a NetBIOS-based file redirector and server
  7644. Note:    hooked but not used (IRET) by both redirector and server; called from
  7645.       server's INT 28 handler
  7646. SeeAlso: INT 2F/AX=8100h
  7647. --------d-66---------------------------------
  7648. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7649. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  7650. --------W-66---------------------------------
  7651. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  7652. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  7653.       which will expire and call INT 66.  This timer can be used to
  7654.       calculate elapsed execution time etc.
  7655. --------F-6601-------------------------------
  7656. INT 66 - BitFax Scheduler - SET MODE???
  7657.     AH = 01h
  7658. SeeAlso: AH=02h
  7659. --------F-6602-------------------------------
  7660. INT 66 - BitFax Scheduler - SET MODE???
  7661.     AH = 02h
  7662. SeeAlso: AH=01h
  7663. --------F-6603-------------------------------
  7664. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  7665.     AH = 03h
  7666.     ???
  7667. Return: ???
  7668. SeeAlso: AH=05h
  7669. --------F-6604-------------------------------
  7670. INT 66 - BitFax Scheduler - GET STATUS???
  7671.     AH = 04h
  7672. Return: AX = ??? (0000h or 0001h)
  7673.     DX = BitSched version???  (for versions >= 3.00)
  7674.         9796h (ver. 3.00)
  7675.         97E6h (ver. 3.02)
  7676.         92D0h (ver. 3.04.06)
  7677.         9510h (ver. 3.06.02)
  7678. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  7679. --------F-6605-------------------------------
  7680. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  7681.     AH = 05h
  7682.     BX:CX -> command block (see below)
  7683.     ???
  7684. Return: ???
  7685. SeeAlso: AH=03h
  7686.  
  7687. Format of command block:
  7688. Offset    Size    Description
  7689.  00h 18 BYTEs    configuration bytes???
  7690.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  7691.  52h    BYTEs    ASCIZ directory containing BitFax executables
  7692.  92h    BYTEs    ASCIZ telephone number
  7693.  C2h    BYTE    00h don't send cover page
  7694.         01h send cover page
  7695.  C3h 15 BYTEs    configuration bytes???
  7696.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  7697.         configuration information???)
  7698. 122h    BYTEs    configuration bytes???
  7699. 12Ch    BYTE    00h don't send cover page
  7700.         01h send cover page
  7701. 12Dh  7 BYTEs    configuration bytes???
  7702. 134h    BYTEs    ASCIZ path of file to send
  7703. 174h    BYTEs    more configuration bytes???
  7704.     ???
  7705. --------F-6606-------------------------------
  7706. INT 66 - BitFax Scheduler - SET MODE???
  7707.     AH = 06h
  7708. Return: DX = BitSched version??? (same as AH=04h)
  7709. SeeAlso: AH=04h
  7710. --------s-660688-----------------------------
  7711. INT 66 - IBMSND driver - PLAY 8-BIT DIGITIZED SOUND
  7712.     AX = 0688h
  7713.     DS:SI -> SNDSTRUC (see below)
  7714. Return: ???
  7715. Program: The IBMSND driver is part of John W. Ratcliff's
  7716.        The IBM Digitized Sound Package
  7717. Note:    the installation check consists of looking for a valid signature
  7718.       string six bytes prior to the interrupt handler; this string may
  7719.       be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
  7720.       determine whether IBMSND is installed)
  7721. SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
  7722.  
  7723. Format of SNDSTRUC:
  7724. Offset    Size    Description
  7725.  00h    DWORD    -> audio data
  7726.  04h    WORD    length of audio data in bytes
  7727.  06h    DWORD    -> playback status flag
  7728.  0Ah    WORD    playback frequency
  7729. --------s-660689-----------------------------
  7730. INT 66 - IBMSND driver - REPORT SOUND DRIVER STATUS
  7731.     AX = 0689h
  7732. Return: AX = status
  7733.         0000h no sound playing
  7734.         0001h sound effect is currently playing
  7735. SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
  7736. --------s-66068A-----------------------------
  7737. INT 66 - IBMSND driver - PREFORMAT SOUND
  7738.     AX = 068Ah
  7739.     DS:SI -> SNDSTRUC (see AX=0688h)
  7740. Desc:    convert audio data into output hardware format
  7741. SeeAlso: AX=068Bh
  7742. --------s-66068B-----------------------------
  7743. INT 66 - IBMSND driver - PLAY PREFORMATTED SOUND
  7744.     AX = 068Bh
  7745.     DS:SI -> SNDSTRUC (see AX=0688h)
  7746. Return: AX = ???
  7747. SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
  7748. --------s-66068C-----------------------------
  7749. INT 66 - IBMSND driver - REPORT AUDIO DRIVER CAPABILITIES
  7750.     AX = 068Ch
  7751. Return: AX = capabilities (see below)
  7752.     DX = playback rate if fixed-frequency playback
  7753. SeeAlso: AX=0689h,AX=068Dh
  7754.  
  7755. Bitfields for capabilities:
  7756.  bit 0    can play audio in background
  7757.  bit 1    data is massaged
  7758.  bit 2    driver plays at fixed frequency, resampling input data to fit
  7759.  bit 3    driver uses timer interrupt
  7760. --------s-66068D-----------------------------
  7761. INT 66 - IBMSND driver - REPORT CURRENT SAMPLE ADDRESS
  7762.     AX = 068Dh
  7763. Return: AX = current playback address
  7764. Desc:    determine what point in the audio data the playback has reached, for
  7765.       synchronization with video or animation effects
  7766. Notes:    this function applies to background playback only
  7767.     the reported address may be an approximation rather than the exact
  7768.       address
  7769. SeeAlso: AX=068Ch,AX=0691h
  7770. --------s-66068E-----------------------------
  7771. INT 66 - IBMSND driver - SET CALLBACK ADDRESS
  7772.     AX = 068Eh
  7773.     BX:DX -> callback function
  7774.         0000h:0000h to disable callback
  7775.     DS = value to load into DS when calling the callback function
  7776. Desc:    specify the function to be called when playback of a sound effect is
  7777.       completed
  7778. Note:    the callback function will typically be called during a hardware
  7779.       interrupt, so all the usual precautions should be taken except for
  7780.       preserving registers
  7781. SeeAlso: AX=0691h
  7782. --------s-66068F-----------------------------
  7783. INT 66 - IBMSND driver - STOP CURRENT SOUND
  7784.     AX = 068Fh
  7785. Desc:    cause any currently-playing sound effect to be terminated
  7786. SeeAlso: AX=0688h,AX=068Bh
  7787. --------s-660690-----------------------------
  7788. INT 66 - IBMSND driver - "SetAudioHardware" SET UP HARDWARE INFO [obsolete]
  7789.     AX = 0690h
  7790. Note:    this function is no longer implemented
  7791. --------s-660691-----------------------------
  7792. INT 66 - IBMSND driver - REPORT CALLBACK ADDRESS
  7793.     AX = 0691h
  7794. Return: AX:DX -> current callback function
  7795.     BX = original caller's DS register
  7796. Program: The IBMSND driver is part of John W. Ratcliff's
  7797.        The IBM Digitized Sound Package
  7798. SeeAlso: AX=068Eh
  7799. --------s-660701-----------------------------
  7800. INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
  7801.     AX = 0701h
  7802. Return: AX = digitized sound capabilities
  7803.         0000h if digitized sound driver (functions 06xxh) not available
  7804. Note:    the installation check for the MIDI driver is to test for the signature
  7805.       "MIDI" six bytes before the interrupt handler
  7806. SeeAlso: AX=0688h
  7807. --------F-663345-----------------------------
  7808. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  7809.     AX = 3345h
  7810. Return: AX = FFFFh error removing TSR
  7811. Note:    the installation check consists of checking for the signature
  7812.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  7813. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  7814. Index:    installation check;BitFax Scheduler
  7815. --------t-66FFFBBXFFFB-----------------------
  7816. INT 66 - MicroHelp Stay-Res Plus - ???
  7817.     AX = FFFBh
  7818.     BX = FFFBh
  7819.     ???
  7820. Return: ???
  7821. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  7822. --------t-66FFFEBXFFFE-----------------------
  7823. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  7824.     AX = FFFEh
  7825.     BX = FFFEh
  7826. Return: only if unsuccessful
  7827. Notes:    installation check is for the interrupt handler to begin with the bytes
  7828.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  7829.       appear at offset 0005h (older versions) or the offset returned by
  7830.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  7831.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  7832.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  7833. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  7834. Index:    installation check;MicroHelp Stay-Res|installation check;ThesPlus
  7835. Index:    installation check;Personal Calendar|installation check;CAL
  7836. --------t-66FFFFBXFFF0-----------------------
  7837. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  7838.     AX = FFFFh
  7839.     BX = FFF0h
  7840. Return: DI = offset of program name in interrupt handler segment
  7841. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  7842. --------d-67---------------------------------
  7843. INT 67 - Adaptec controllers - DRIVE 1 DATA
  7844. Note:    this vector stores the last four bytes of the parameter table for
  7845.       hard disk 1
  7846. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  7847. --------d-67---------------------------------
  7848. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7849. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  7850. --------I-67---------------------------------
  7851. INT 67 - Sangoma CCPOP 3270 resident module
  7852. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  7853. --------U-67---------------------------------
  7854. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  7855. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  7856.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  7857. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  7858.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  7859.       the signature value 434Ch:4F4Bh ('CLOK')
  7860. --------N-6700-------------------------------
  7861. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  7862.     AH = 00h
  7863.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7864. Return: AL = status
  7865.         00h successful
  7866.         01h invalid function
  7867.         02h semaphore already locked
  7868.         03h unable to lock semaphore
  7869.         04h semaphore space exhausted
  7870.     AH = semaphore owner if status=02h
  7871. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  7872. --------N-6701-------------------------------
  7873. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  7874.     AH = 01h
  7875.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7876. Return: AL = status (see AH=00h)
  7877.     AH = semaphore owner if status=02h
  7878. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  7879. --------N-6702-------------------------------
  7880. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  7881.     AH = 02h
  7882.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7883. Return: AL = status (see AH=00h)
  7884.     AH = semaphore owner if status=02h
  7885. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  7886. --------m-673F--CX5145-----------------------
  7887. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  7888.     AH = 3Fh
  7889.     CX = 5145h ("QE")
  7890.     DX = 4D4Dh ("MM")
  7891. Return: AH = 00h if installed
  7892.         ES:DI -> QEMM API entry point
  7893. Notes:    if no other program has hooked INT 67, an alternate installation
  7894.       check is to test for the string
  7895.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  7896.       handler's segment; the word at offset 12h contains the offset in
  7897.       the handler's segment of the API entry point
  7898.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  7899.       the alternate QEMM installation check and entry point functions 00h,
  7900.       02h, and 03h; version 4D only provides the signature string if the
  7901.       commandline argument "DV" is provided
  7902.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  7903.       recognize the returned entry point as providing QEMM's capabilities
  7904.       because a) only functions 0Ch (different from QEMM 0Ch) and
  7905.             1000h-1009h are supported,
  7906.           b) status is returned as for EMS functions, not QEMM funcs
  7907.           c) the protected-mode entry point returned by function 1000h
  7908.             only supports functions    0Ch, 1004h, 1005h, and 100Ah
  7909.     the string check mentioned above is not supported by 386MAX
  7910. SeeAlso: AH=DDh,AX=5BF0h,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h"QEMM"
  7911. SeeAlso: INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  7912.  
  7913. Call QEMM entry point with:
  7914.     AH = 00h get QEMM state
  7915.         Return: CF clear
  7916.             AL = QEMM state
  7917.                 bit 0 set if QEMM turned OFF
  7918.                 bit 1 set if in "Auto" mode
  7919.     AH = 01h set QEMM state
  7920.         AL = new state
  7921.             bit 0 set: place QEMM in OFF state
  7922.         Return: CF clear if successful
  7923.             CF set on error
  7924.     AH = 02h get ???
  7925.         Return: CF clear
  7926.             AX = segment of ??? data structure
  7927.             Data Structure
  7928.             Offset    Size    Description
  7929.              00h    DWORD    page table entry for ???
  7930.                 ???
  7931.     AH = 03h get QEMM version
  7932.         Return: CF clear
  7933.             AX = BX = version in BCD
  7934.         Notes:    the official docs only state that the version is
  7935.               returned in BX
  7936.             MICEMM returns AX=0001h, BX unchanged
  7937.     AH = 04h allocate 4K page and set AUTO/ON mode
  7938.         Return: CF clear if successful
  7939.                 DX = page number of a 4K page
  7940.             CF set if unable to allocate page
  7941.         Note:    QEMM mode unchanged if not AUTO/OFF
  7942.     AH = 05h free 4K page and turn QEMM off
  7943.         DX = page number returned by function 04h
  7944.         Return: CF clear
  7945.         Note:    QEMM mode unchanged if not AUTO/ON
  7946.     AH = 06h make new mapping context???
  7947.         DX = page number of 4K page to hold page table
  7948.         Return: CF clear
  7949.         Note:    copies page table into given page and then sets ???
  7950.               page table entry to point at copy
  7951.     AH = 07h get mapping context
  7952.         Return: CF clear
  7953.             DX = page number of page table for current mapping
  7954.                 context
  7955.     AH = 08h set mapping context???
  7956.         DX = linear page number of page table
  7957.         Return: CF clear
  7958.     AH = 09h get linear page number for page table entry
  7959.         CX = page table index
  7960.         Return: CF clear
  7961.             DX = linear page number
  7962.     AH = 0Ah set linear page number for page table entry
  7963.         CX = page table index
  7964.         DX = linear page number
  7965.         Return: CF clear
  7966.     AH = 0Bh map 4K pages
  7967.         BX = number of pages
  7968.         CX = first page number (must be 0100h to allocate HMA)
  7969.         DX = EMS handle (memory belonging to EMS handle will be mapped
  7970.             into the address space beginning with the first page
  7971.             allocated to the handle)
  7972.         Return: AH = 00h
  7973.     AH = 0Ch get available memory
  7974.         Return: CF clear
  7975.             BX = 0001h
  7976.             CX = total 4K pages???
  7977.             DX = number of 4K pages free
  7978.     AH = 0Dh ??? (related to callbacks)
  7979.         AL = 00h/01h/02h ???
  7980.         Return: CF clear
  7981.     AH = 0Eh set ??? callbacks
  7982.         DS:BX -> FAR routine for ???
  7983.         ES:DX -> FAR routine for ???
  7984.         Return: CF clear
  7985.         Note:    DS:BX callback should return BX=???; ES:DX is called
  7986.               with BX=???, and should set the ??? from which the
  7987.               other handler read the value of BX.  BH and BL
  7988.               appear to be separate values.
  7989.     AH = 0Fh unmap 4K pages
  7990.         CX = first page number
  7991.         DX = number of pages
  7992.         Return: CF clear
  7993.             AL = 00h/01h if ???
  7994.         Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  7995.               simulate a disabled A20
  7996.     AX = 1000h get protected-mode interface
  7997.         DS:SI -> 16-byte buffer for two GDT entries
  7998.         ES:DI -> buffer for 4K page table
  7999.         Return: CF clear
  8000.             EAX = offset of protected-mode API entry point
  8001.             DS:SI buffer filled with two GDT descriptors
  8002.                 first is QEMM code segment, second is data???
  8003.             ES:DI buffer filled with 4K page table
  8004.             DI points to first unused page table entry
  8005.         SeeAlso: INT 67/AX=DE01h
  8006.     AX = 1001h get CPU debug registers
  8007.         ES:DI -> buffer for debug registers (8 DWORDs)
  8008.         Return: CF clear
  8009.             BL = INT01 handling (see function 1002h)
  8010.             ES:DI buffer filled
  8011.     AX = 1002h set CPU debug registers
  8012.         BL = INT01 handling
  8013.             00h     reflect all debugging exceptions as V86-mode INT 01's
  8014.             else convert debugging exceptions other than single-step
  8015.                into V86-mode INT 03's, single-step to INT 01's
  8016.         ES:DI -> buffer containing debug registers (8 DWORDs)
  8017.         Return: CF clear
  8018.         Notes:    identical to INT 67/AX=DE09h if BL=01h
  8019.             the INT01 handling flag is set to 01h by the general-
  8020.               protection violation handler for certain privileged
  8021.               instructions
  8022.     AX = 1003h get machine status word CR0
  8023.         Return: CF clear
  8024.             EAX = contents of CR0
  8025.         SeeAlso: INT 67/AX=DE07h
  8026.     AX = 1004h allocate a 4K page
  8027.         Return: CF clear if successful
  8028.                 EDX = linear address of allocated page
  8029.             CF set on error
  8030.         SeeAlso: INT 67/AX=DE04h
  8031.     AX = 1005h free 4K page
  8032.         EDX = linear address of page to free
  8033.         Return: CF clear
  8034.         SeeAlso: INT 67/AX=DE05h
  8035.     AX = 1006h NOP
  8036.         Return: CF set
  8037.     AX = 1007h get maximum physical memory address
  8038.         Return: CF clear
  8039.             EDX = physical address of highest 4K memory page
  8040.         SeeAlso: INT 67/AX=DE02h
  8041.     AX = 1008h get physical address of page in first megabyte
  8042.         CX = page number (linear address shifted right 12 bits)
  8043.         Return: CF clear
  8044.             EDX = linear address of page
  8045.         SeeAlso: function 1F00h
  8046.     AX = 1009h switch to protected mode
  8047.         ESI = linear address in first megabyte of system reg values
  8048.             (see INT 67/AX=DE0Ch)
  8049.         interrupts disabled
  8050.         Return: interrupts disabled
  8051.             GDTR, IDTR, LDTR, TR loaded
  8052.             SS:ESP must have at least 16 bytes space, and the
  8053.                 entry point is required to set up a new stack
  8054.                 before enabling interrupts
  8055.             EAX, ESI, DS, ES, FS, GS destroyed
  8056.     AX = 100Ah switch back to virtual-86 mode
  8057.         DS = selector for data segment from function 1000h
  8058.         SS:ESP in first megabyte of linear memory
  8059.         interrupts disabled
  8060.         STACK:    QWORD  return address from FAR call to 32-bit segment
  8061.             DWORD  EIP
  8062.             DWORD  CS
  8063.             DWORD  reserved for EFLAGS
  8064.             DWORD  ESP
  8065.             DWORD  SS
  8066.             DWORD  ES
  8067.             DWORD  DS
  8068.             DWORD  FS
  8069.             DWORD  GS
  8070.         will switch to virtual86 mode with interrupts disabled, all
  8071.           segment registers loaded, and EAX destroyed.
  8072.     AH = 11h get memory type map
  8073.         AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  8074.             by QEMM 6.00)
  8075.         ES:DI -> 256-byte buffer for memory types
  8076.         Return: CF clear
  8077.             BL = ???
  8078.             ES:DI buffer filled
  8079.         Note:    each byte of the buffer corresponds to a 4K page, and
  8080.               contains the type of that page: 00h = mappable,
  8081.               02h = mapped ROM, 03h = high RAM, 04h = excluded,
  8082.               05h = video, 06h = ROM, 07h = adapter ROM,
  8083.               08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  8084.               0Bh = conventional
  8085.     AH = 12h get HIRAM chain
  8086.         Return: CF clear
  8087.             BX = segment of first MCB in high memory
  8088.                 0000h if no high memory
  8089.     AX = 1300h VIDRAMEGA???
  8090.         BL = 00h copy ???
  8091.              nonzero copy ??? (reverse)
  8092.         Return: CF clear
  8093.             AL = 00h if all pages clean
  8094.                = 01h if any page dirty
  8095.     AX = 1301h check if ???
  8096.         DX:DI = start address of range to check ???
  8097.         CX = length of range
  8098.         Return: CF clear
  8099.             CX = ??? (0000h or 1000h)
  8100.     AX = 1302h ???
  8101.         BL = ???
  8102.         BH = ???
  8103.         CX = ???
  8104.         SI = offset of ???
  8105.         DI = offset of ???
  8106.         ???
  8107.         Return: CF clear
  8108.             ???
  8109.         Note:    disables certain interrupts at the two 8259 PICs during
  8110.               execution; also modifies CRT controller during
  8111.               execution under certain circumstances
  8112.     AX = 1303h EMS allocation???
  8113.         BX = number of pages (less 1) of EMS to allocate
  8114.         Return: CF clear if successful
  8115.                 DX = EMS handle
  8116.             CF set on error
  8117.     AX = 1304h EMS deallocation
  8118.         DX = EMS handle
  8119.         Return: CF clear
  8120.     AX = 1305h ???
  8121.         CX = ???
  8122.         Return: CF clear
  8123.         Note:    disables certain interrupts at the two 8259 PICs during
  8124.               execution (see AX=130Ch)
  8125.     AX = 1306h set DESQview critical section counter address
  8126.         ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  8127.         Return: CF clear
  8128.         Note:    also sets pointer in low-memory part of QEMM to current
  8129.               value of INT 15 if ES:BX not 0000h:0000h
  8130.     AX = 1307h ???
  8131.         Return: CF clear
  8132.         Note:    disables certain interrupts at the two 8259 PICs during
  8133.               execution (see AX=130Ch)
  8134.     AX = 1308h ???
  8135.         BL = ??? (zero/nonzero)
  8136.         Return: CF clear
  8137.     AX = 1309h Hercules mode-change support
  8138.         ES:BX -> new address for Hercules mode-change callback
  8139.         Return: CF clear
  8140.         Note:    the callback function is called whenever the CRTC mode
  8141.               register is written, with AL set to the value written
  8142.     AX = 130Ah virtualize EGA/VGA I/O ports 03C8h/03C9h???
  8143.         CX:DX -> buffer for storing CRTC register contents???
  8144.             or 0000h:0000h to disable
  8145.         Return: CF clear
  8146.     AX = 130Bh ???
  8147.         BL = ???
  8148.         Return: CF clear
  8149.             ???
  8150.     AX = 130Ch set interrupts to mask
  8151.         BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  8152.             AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  8153.         Return: CF clear
  8154.     AX = 130Dh ???
  8155.         ???
  8156.         Return: CF clear
  8157.         Note:    disables certain interrupts at the two 8259 PICs during
  8158.               execution (see AX=130Ch)
  8159.     AX = 130Eh ??? (modifies CRT controller setup)
  8160.         ???
  8161.         Return: CF clear
  8162.     AX = 130Fh reset ???
  8163.         Return: CF clear
  8164.     AX = 1310h ???
  8165.         ???
  8166.         Return: CF clear
  8167.         Note:    disables certain interrupts at the two 8259 PICs during
  8168.               execution (see AX=130Ch)
  8169.     AX = 1311h set ???
  8170.         BL = ???
  8171.         Return: CF clear
  8172.     AX = 1312h (v6.02) NOP???
  8173.         Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  8174.     AX = 1400h ???
  8175.         ES:DI -> ??? data structure (at least 24 bytes)
  8176.         BL = ???
  8177.         Return: AX = ???
  8178.         Data structure
  8179.         Offset    Size    Description
  8180.          00h    WORD    ???
  8181.          02h    DWORD    far pointer to ???
  8182.          06h    DWORD    far pointer to ??? pointer array (see below)
  8183.          0Ah    DWORD    far pointer to ???
  8184.          0Eh    DWORD    ???
  8185.          12h    WORD    segment of ???
  8186.          14h    DWORD    far pointer to ???
  8187.         Pointer array
  8188.         Offset    Size    Description
  8189.          00h    WORD    number of pointers to follow
  8190.          02h  N DWORDs    far pointers to ???
  8191.         Note: QEMM converts the pointers into linear addresses in place
  8192.     AX = 1401h ???
  8193.         Return: CF clear
  8194.             ???
  8195.     AX = 1402h ???
  8196.         BL = function
  8197.             00h NOP
  8198.             01h ???
  8199.             02h ???
  8200.             other ???
  8201.         ES:DI -> ???
  8202.         Return: CF clear
  8203.             ???
  8204.         Data structure
  8205.         Offset    Size    Description
  8206.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  8207.          02h    WORD    segment of ??? (word at X:0124h set to this)
  8208.          04h    WORD    number of paragraphs of ???
  8209.          06h  3 WORDs    ??? (copied to X:0000h)
  8210.          0Ch    WORD    ???
  8211.     AX = 1403h add ??? to list and ??? (execute func 1406h)
  8212.         ES:DI -> ??? structure added to end of ??? list
  8213.             (at least 31 bytes, DWORD at offset 06h used for
  8214.              storing pointer to next struc, WORD at offset 00h
  8215.              seems to be a key or index)
  8216.         Return: CF clear
  8217.     AX = 1404h NOP
  8218.     AX = 1405h remove ??? from ??? list
  8219.         BX = key???
  8220.         Return: CF clear
  8221.     AX = 1406h ???
  8222.         ???
  8223.         Return: CF clear
  8224.             ???
  8225.     AX = 1407h ???
  8226.         ???
  8227.         Return: CF clear
  8228.             ???
  8229.     AX = 1408h ???
  8230.         ???
  8231.         Return: CF clear
  8232.             ???
  8233.     AX = 1409h ???
  8234.         ???
  8235.         Return: CF clear
  8236.             ???
  8237.     AX = 140Ah ???
  8238.         BX = ???
  8239.         Return: CF clear
  8240.             ???
  8241.     AX = 140Bh ???
  8242.         BX = ???
  8243.         Return: CF clear
  8244.             SI = segment of 256-byte buffer???
  8245.     AH = 15h ???
  8246.         ES:BX -> ??? or 0000h:0000h
  8247.         Return: CF clear
  8248.      ---QEMM v5.00+ ---
  8249.     AX = 1600h get memory access status
  8250.         ES:DI -> 256-byte buffer
  8251.         Return: ES:DI buffer filled
  8252.         Note:    each byte of the buffer indicates the status of a 4K
  8253.               page (bit 0 set if read, bit 1 set if written)
  8254.     AX = 1601h set memory access status
  8255.         ES:DI -> 256-byte buffer containing access statuses (see above)
  8256.     AH = 17h get memory usage statistics
  8257.         ES:DI -> 81-byte buffer for memory statistics (see below)
  8258.         Return: CF clear
  8259.      ---QEMM v5.11+ ---
  8260.     AH = 18h check whether conventional memory mapped into address range
  8261.         ES:BX = starting address
  8262.         CX = number of 4K pages
  8263.         Return: CF clear
  8264.             AL = 00h one or more pages is remapped
  8265.                  01h all pages in range are conventional memory
  8266.                 (physical address == virtual address)
  8267.     AH = 19h NOP
  8268.         Return: CF set
  8269.     AH = 1Ah I/O port access
  8270.         AL = subfunction
  8271.             00h get byte from I/O port
  8272.             Return: BL = port value
  8273.             01h send byte to I/O port
  8274.             BL = value to send
  8275.             02h send byte to I/O port, get byte from following port
  8276.             BH = value to send
  8277.             Return: BL = value read
  8278.             03h send bytes to two consecutive I/O ports
  8279.             BH = value for first I/O port (DX)
  8280.             BL = value for second I/O port (DX+1)
  8281.         DX = port number
  8282.         Return: CF clear
  8283.     AH = 1Bh MS Windows 3.x support
  8284.         AL = subfunction
  8285.             00h get EMM Import Structure address
  8286.             ES:DI -> buffer for EMM import data structure
  8287.             Return: CF set on error
  8288.                 CF clear if successful
  8289.             EMM Import data structure:
  8290.             Offset    Size    Description
  8291.              00h    DWORD    physical address of EMM import struct
  8292.              04h    BYTE    major version (v6.00 sets to 01h)
  8293.              05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  8294.             SeeAlso: INT 21/AX=4402h"QEMM-386 v6+"
  8295.             01h ???
  8296.             Return: CF set on error
  8297.                 CF clear if successful
  8298.             02h ???
  8299.             Return: CF set on error
  8300.                 CF clear if successful
  8301.             03h MS Windows initializing
  8302.             CX = segment from which Windows init broadcast made???
  8303.             DL = Windows startup flags???
  8304.             DI = Windows version number (major in upper byte)
  8305.             Return: ???
  8306.             SeeAlso: INT 2F/AX=1605h
  8307.             04h MS Windows terminating
  8308.             Return: CF clear
  8309.             05h determine whether program is driver???
  8310.             DS:DX -> ASCIZ filename
  8311.             Return: CF clear
  8312.                 AL = 01h if string ends in ".DRV"
  8313.                    = FFh if string ends in "GDI.EXE"
  8314.                    = 00h otherwise
  8315.             06h ???
  8316.             CX = length of data pointed at by DS:DX
  8317.             DS:DX -> ???
  8318.             Return: CF clear
  8319.             07h BUG: QEMM 6.00-6.03 accept this and branch randomly
  8320.             else Return: CF set
  8321.     AH = 1Ch protected-mode hardware interrupt handlers ???
  8322.         AL = subfunction
  8323.             00h restore??? IRQ0-7 handlers
  8324.             01h set??? IRQ0-7 handlers
  8325.             ES:DI -> 8 DWORDs containing ???
  8326.             02h restore??? IRQ8-15 handlers
  8327.             03h set??? IRQ8-15 handlers
  8328.             ES:DI -> 8 DWORDs containing ???
  8329.         BUG: although the jump table only contains four entries,
  8330.             QEMM 6.00 will attempt to use it for any value of
  8331.             AL between 00h and 2Ah, thus branching unpredictably
  8332.             for AL=04h-2Ah
  8333.      ---QEMM v6.00+ ---
  8334.     AH = 1Dh Stealth interrupts
  8335.         AL = subfunction
  8336.             00h switch to pre-Stealth interrupt vector table
  8337.             Note:    also switches VGA Save table pointer
  8338.                   (0040h:00A8h)    and overwrites the vectors
  8339.                   currently assigned for use by the two
  8340.                   interrupt controllers (see INT 67/AX=DE0Ah)
  8341.                   with the vectors for INT 08-0F and 70-77 (to
  8342.                   avoid crashing the system).
  8343.             01h restore user interrupt vector table
  8344.             Notes:    interrupts should be disabled around the
  8345.                   AX=1D00h and AX=1D01h calls because QEMM does
  8346.                   not modify the memory maps to map in ROM, so
  8347.                   an interrupt could be disastrous
  8348.                 clears any pending IRQ7 at end of function
  8349.             else
  8350.             Return: CF set
  8351.     AH = 1Eh Stealth information
  8352.         AL = subfunction
  8353.             00h get Stealth configuration
  8354.             Return: BL = flags
  8355.                     bit 0: conventional memory sorted
  8356.                     bit 1: conventional memory filled
  8357.                     bit 2: ???
  8358.                     bit 3: ???
  8359.                     bit 4: expanded memory is in use
  8360.                     bit 5: ???
  8361.                 BH = ??? (always 00h for v6.00)
  8362.                 CL = stealth type (00h none,46h Frame,4Dh Map)
  8363.                 CH = ??? (zero/nonzero important)
  8364.                 DX = ??? (always 0000h for v6.00)
  8365.                 SI = ??? (always 0000h for v6.00)
  8366.                 DI = ??? (always 0000h for v6.00)
  8367.             01h get number of Stealth'ed ROMs
  8368.             Return: CF clear
  8369.                 BX = number of Stealth'ed ROMs
  8370.             02h get Stealth'ed ROM info
  8371.             ES:DI -> buffer for Stealth ROM info (see below)
  8372.             Return: CF clear
  8373.                 BX = number of Stealth'ed ROMs
  8374.                 ES:DI buffer filled
  8375.             else
  8376.             Return: CF set
  8377.     AH = 1Fh page table manipulation
  8378.         AL = subfunction
  8379.             00h get page table entry
  8380.             CX = page number
  8381.             Return: EDX = page table entry
  8382.                 CF clear
  8383.             01h set page table entry
  8384.             CX = page number
  8385.             EDX = page table entry
  8386.             Return: CF clear
  8387.             SeeAlso: function 1008h
  8388.             else
  8389.             Return: CF set
  8390.     AH = 20h asynchronous disk access support???
  8391.         AL = subfunction
  8392.             00h get ???
  8393.             Return: CF clear
  8394.                 BL = flags
  8395.                     bit 7: ??? (set if Stealth:F or :M active)
  8396.                     bit 0: ???
  8397.             01h set ???
  8398.             BL = ??? (bit 0 only)
  8399.             Return: CF clear
  8400.             else
  8401.             Return: CF set
  8402.     AH = 21h Stealth support
  8403.         AL = subfunction
  8404.             00h copy data from Stealthed address space
  8405.             DS:SI -> start address of hidden memory to copy
  8406.             ES:DI -> buffer for copied data
  8407.             ECX = number of bytes to copy
  8408.             Return: CF clear if successful
  8409.                 CF set on error (DS:SI < C000h:0000h or
  8410.                          DS:SI + ECX > 1M)
  8411.             else
  8412.             Return: CF set
  8413.     ---QEMM v6.03+ ---
  8414.     AH = 22h DESQview/X support
  8415.         AL = subfunction
  8416.             00h get ???
  8417.             Return: CF clear
  8418.                 ES:DI -> ???
  8419.             01h set ???
  8420.             ES:DI -> ??? or 0000h:0000h
  8421.             Return: CF clear if successful
  8422.                 CF set on error
  8423.     ---QEMM v6.04 only---
  8424.     AH = 23h ???
  8425.         AL = subfunction
  8426.             00h get ???
  8427.                 BX = which ??? to get (must be 0000h for v6.04)
  8428.             Return: CF clear if successful
  8429.                     ES:DI -> ???
  8430.                 CF set on error
  8431.             01h set ???
  8432.                 BX = which ??? to set (must be 0000h for v6.04)
  8433.             ES:DI -> ???
  8434.             Return: CF clear if successful
  8435.                 CF set on error
  8436.             02h clear specified ???
  8437.                 BX = which ??? to clear (must be 0000h for v6.04)
  8438.             Return: CF clear if successful
  8439.                 CF set on error
  8440.             FFh clear all ???
  8441.             else
  8442.                 Return: CF set
  8443.     other
  8444.         Return: CF set
  8445.  
  8446. Format of QEMM 6.0 memory statistics:
  8447. Offset    Size    Description
  8448.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  8449.  01h    DWORD    initial conventional memory in bytes
  8450.  05h    DWORD    initial extended memory in bytes
  8451.  09h    DWORD    initial expanded memory in bytes
  8452.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  8453.  11h    DWORD    Unavailable conventional memory in bytes
  8454.  15h    DWORD    Unavailable extended memory in bytes
  8455.  19h    DWORD    Unavailable expanded memory in bytes
  8456.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  8457.         Add to offset 49h for Total unavailable top/shadow.
  8458.  21h    DWORD    QEMM code size in bytes
  8459.  25h    DWORD    QEMM data size in bytes
  8460.  29h    DWORD    bytes used for TASKS=
  8461.  2Dh    DWORD    DMA buffer size
  8462.  31h    DWORD    bytes used for MAPS=
  8463.  35h    DWORD    bytes of high RAM
  8464.  39h    DWORD    bytes used by mapped ROMs
  8465.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  8466.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  8467.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  8468.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  8469.         Add to offset 1Dh for Total unavailable top/shadow.
  8470.  4Dh    DWORD    conventional memory overhead in bytes
  8471.         (set to 0 by QEMM.COM prior to call)
  8472.  
  8473. Format of Stealth ROM info [array]:
  8474. Offset    Size    Description
  8475.  00h    WORD    starting segment of ROM
  8476.  02h    WORD    length of ROM in paragraphs
  8477. --------m-6740-------------------------------
  8478. INT 67 - LIM EMS - GET MANAGER STATUS
  8479.     AH = 40h
  8480. Return: AH = status (00h,80h,81h,84h) (see below)
  8481. Note:    this call can be used only after establishing that the EMS driver is in
  8482.       fact present
  8483. SeeAlso: AH=3Fh,AX=FFA5h
  8484.  
  8485. Values for EMS function status:
  8486.  00h successful
  8487.  80h internal error
  8488.  81h hardware malfunction
  8489.  83h invalid handle
  8490.  84h undefined function requested by application
  8491.  85h no more handles available
  8492.  86h error in save or restore of mapping context
  8493.  87h insufficient memory pages in system
  8494.  88h insufficient memory pages available
  8495.  89h zero pages requested
  8496.  8Ah invalid logical page number encountered
  8497.  8Bh invalid physical page number encountered
  8498.  8Ch page-mapping hardware state save area is full
  8499.  8Dh save of mapping context failed
  8500.  8Eh restore of mapping context failed
  8501.  8Fh undefined subfunction
  8502.  90h undefined attribute type
  8503.  91h feature not supported
  8504.  92h successful, but a portion of the source region has been overwritten
  8505.  93h length of source or destination region exceeds length of region
  8506.      allocated to either source or destination handle
  8507.  94h conventional and expanded memory regions overlap
  8508.  95h offset within logical page exceeds size of logical page
  8509.  96h region length exceeds 1M
  8510.  97h source and destination EMS regions have same handle and overlap
  8511.  98h memory source or destination type undefined
  8512.  9Ah specified DMA register set not supported
  8513.  9Bh all DMA register sets currently allocated
  8514.  9Ch alternate DMA sets not supported
  8515.  9Dh undefined or unallocated DMA register set
  8516.  9Eh dedicated DMA channels not supported
  8517.  9Fh specified dedicated DMA channel not supported
  8518.  A0h no such handle name
  8519.  A1h a handle found had no name, or duplicate handle name
  8520.  A2h attempted to wrap around 1M conventional address space
  8521.  A3h source array corrupted
  8522.  A4h operating system denied access
  8523. --------m-6741-------------------------------
  8524. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  8525.     AH = 41h
  8526. Return: AH = 00h function successful
  8527.         BX = segment of page frame
  8528.     AH = error code (see AH=40h)
  8529. SeeAlso: AH=58h,AH=68h
  8530. --------m-6742-------------------------------
  8531. INT 67 - LIM EMS - GET NUMBER OF PAGES
  8532.     AH = 42h
  8533. Return: AH = 00h function successful
  8534.         BX = number of unallocated pages
  8535.         DX = total number of pages
  8536.     AH = error code (see AH=40h)
  8537. SeeAlso: INT 2F/AX=2702h
  8538. --------m-6743-------------------------------
  8539. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  8540.     AH = 43h
  8541.     BX = number of logical pages to allocate
  8542. Return: AH = status
  8543.         00h function successful
  8544.         DX = handle
  8545.         80h internal error
  8546.         81h hardware malfunction
  8547.         84h undefined function requested
  8548.         85h no more handles available
  8549.         87h more pages requested than physically exist
  8550.         88h more pages requested than currently available
  8551.         89h zero pages requested
  8552. SeeAlso: AH=45h
  8553. --------m-6744-------------------------------
  8554. INT 67 - LIM EMS - MAP MEMORY
  8555.     AH = 44h
  8556.     AL = physical page number (0-3)
  8557.     BX = logical page number
  8558.     DX = handle
  8559. Return: AH = status
  8560.         00h function successful
  8561.         80h internal error
  8562.         81h hardware malfunction
  8563.         83h invalid handle
  8564.         84h undefined function requested
  8565.         8Ah invalid logical page number
  8566.         8Bh illegal physical-page number
  8567. SeeAlso: AH=69h
  8568. --------m-6745-------------------------------
  8569. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  8570.     AH = 45h
  8571.     DX = EMM handle
  8572. Return: AH = status
  8573.         00h successful
  8574.         80h internal error
  8575.         81h hardware malfunction
  8576.         83h invalid handle
  8577.         84h undefined function requested
  8578.         86h error in save or restore of mapping context
  8579. SeeAlso: AH=43h
  8580. --------m-6746-------------------------------
  8581. INT 67 - LIM EMS - GET EMM VERSION
  8582.     AH = 46h
  8583. Return: AH = status
  8584.         00h successful
  8585.         AL = EMM version number
  8586.         80h internal error
  8587.         81h hardware malfunction
  8588.         84h undefined function requested
  8589. --------m-6747-------------------------------
  8590. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  8591.     AH = 47h
  8592.     DX = handle
  8593. Return: AH = status
  8594.         00h successful
  8595.         80h internal error
  8596.         81h hardware malfunction
  8597.         83h invalid handle
  8598.         84h undefined function requested
  8599.         8Ch page-mapping hardware state save area is full
  8600.         8Dh save of mapping context failed
  8601. SeeAlso: AH=48h
  8602. --------m-6748-------------------------------
  8603. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  8604.     AH = 48h
  8605.     DX = handle
  8606. Return: AH = status
  8607.         00h successful
  8608.         80h internal error
  8609.         81h hardware malfunction
  8610.         83h invalid handle
  8611.         84h undefined function requested
  8612.         8Eh restore of mapping context failed
  8613. SeeAlso: AH=47h
  8614. --------m-6749-------------------------------
  8615. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  8616.     AH = 49h
  8617. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  8618. --------m-674A-------------------------------
  8619. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  8620.     AH = 4Ah
  8621. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  8622. --------m-674B-------------------------------
  8623. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  8624.     AH = 4Bh
  8625. Return: AH = status
  8626.         00h successful
  8627.         BX = number of EMM handles
  8628.         80h internal error
  8629.         81h hardware malfunction
  8630.         83h invalid handle
  8631.         84h undefined function requested
  8632. --------m-674C-------------------------------
  8633. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  8634.     AH = 4Ch
  8635.     DX = EMM handle
  8636. Return: AH = status
  8637.         00h successful
  8638.         BX = number of logical pages
  8639.         80h internal error
  8640.         81h hardware malfunction
  8641.         83h invalid handle
  8642.         84h undefined function requested
  8643. SeeAlso: AH=4Dh
  8644. --------m-674D-------------------------------
  8645. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  8646.     AH = 4Dh
  8647.     ES:DI -> array to receive information
  8648. Return: AH = status
  8649.         00h successful
  8650.         BX = number of active EMM handles
  8651.         array filled with 2-word entries, consisting of a handle
  8652.           and the number of pages allocated to that handle
  8653.         80h internal error
  8654.         81h hardware malfunction
  8655.         84h undefined function requested
  8656. SeeAlso: AH=4Ch
  8657. --------m-674E-------------------------------
  8658. INT 67 - LIM EMS - GET OR SET PAGE MAP
  8659.     AH = 4Eh
  8660.     AL = 00h if getting mapping registers
  8661.          01h if setting mapping registers
  8662.          02h if getting and setting mapping registers at once
  8663.          03h if getting size of page-mapping array
  8664.     DS:SI -> array holding information (AL=01/02)
  8665.     ES:DI -> array to receive information (AL=00/02)
  8666. Return: AH = status
  8667.         00h successful
  8668.         AL = bytes in page-mapping array (AL=03h only)
  8669.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  8670.         80h internal error
  8671.         81h hardware malfunction
  8672.         84h undefined function requested
  8673.         8Fh undefined subfunction parameter
  8674.         A3h contents of source array corrupted (EMS 4.0?)
  8675. Note:    this function was designed to be used by multitasking operating systems
  8676.       and should not ordinarily be used by appplication software.
  8677. SeeAlso: AH=4Fh
  8678. --------m-674F-------------------------------
  8679. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  8680.     AH = 4Fh
  8681.     AL = subfunction
  8682.         00h get partial page map
  8683.            DS:SI -> structure containing list of segments whose mapping
  8684.             contexts are to be saved
  8685.            ES:DI -> array to receive page map
  8686.         01h set partial page map
  8687.            DS:SI -> structure containing saved partial page map
  8688.         02h get size of partial page map
  8689.            BX = number of mappable segments in the partial map to be saved
  8690. Return: AH = status
  8691.         00h successful
  8692.         80h internal error
  8693.         81h hardware malfunction
  8694.         84h undefined function requested
  8695.         8Bh one of specified segments is not mappable
  8696.         8Fh undefined subfunction parameter
  8697.         A3h contents of partial page map corrupted or count of mappable
  8698.         segments exceeds total number of mappable segments in system
  8699.     AL = size of partial page map for subfunction 02h
  8700. SeeAlso: AH=4Eh
  8701. --------m-6750-------------------------------
  8702. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  8703.     AH = 50h
  8704.     AL = subfunction
  8705.         00h use physical page numbers
  8706.         01h use segment addresses
  8707.     DX = handle
  8708.     CX = number of entries in array
  8709.     DS:SI -> mapping array (see below)
  8710. Return: AH = status
  8711.         00h successful
  8712.         80h internal error
  8713.         81h hardware malfunction
  8714.         83h invalid handle
  8715.         84h undefined function requested
  8716.         8Ah one or more logical pages are invalid
  8717.         8Bh one or more physical pages are invalid
  8718.         8Fh invalid subfunction
  8719. SeeAlso: AH=40h
  8720.  
  8721. Format of mapping array entry:
  8722. Offset    Size    Description
  8723.  00h    WORD    logical page number or FFFFh to unmap physical page
  8724.  02h    WORD    physical page number or segment address
  8725. --------m-6751-------------------------------
  8726. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  8727.     AH = 51h
  8728.     DX = handle
  8729.     BX = number of pages to be allocated to handle
  8730. Return: BX = actual number of pages allocated to handle
  8731.     AH = status
  8732.         00h successful
  8733.         80h internal error
  8734.         81h hardware malfunction
  8735.         83h invalid handle
  8736.         84h undefined function requested
  8737.         87h more pages requested than present in system
  8738.         88h more pages requested than currently available
  8739. --------m-6752-------------------------------
  8740. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  8741.     AH = 52h
  8742.     AL = subfunction
  8743.         00h get handle attributes
  8744.         Return: AL = attribute
  8745.                 00h handle is volatile
  8746.                 01h handle is nonvolatile
  8747.         01h set handle attributes
  8748.         BL = new attribute (see returned AL)
  8749.         02h get attribute capability
  8750.         Return: AL = attribute capability
  8751.                 00h only volatile handles supported
  8752.                 01h both volatile and non-volatile supported
  8753.     DX = handle
  8754. Return:    AH = status
  8755.         00h successful
  8756.         80h internal error
  8757.         81h hardware malfunction
  8758.         83h invalid handle
  8759.         84h undefined function requested
  8760.         8Fh undefined subfunction
  8761.         90h undefined attribute type
  8762.         91h feature not supported
  8763. SeeAlso: AH=53h
  8764. --------m-6753-------------------------------
  8765. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  8766.     AH = 53h
  8767.     AL = subfunction
  8768.         00h get handle name
  8769.            ES:DI -> 8-byte buffer for handle name
  8770.         01h set handle name
  8771.            DS:SI -> 8-byte handle name
  8772.     DX = handle
  8773. Return: AH = status
  8774.         00h successful
  8775.         80h internal error
  8776.         81h hardware malfunction
  8777.         83h invalid handle
  8778.         84h undefined function requested
  8779.         8Fh undefined subfunction
  8780.         A1h duplicate handle name
  8781. SeeAlso: AH=52h
  8782. --------m-6754-------------------------------
  8783. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  8784.     AH = 54h
  8785.     AL = subfunction
  8786.         00h get handle directory
  8787.            ES:DI -> buffer for handle directory (see below)
  8788.         01h search for named handle
  8789.            DS:SI -> 8-byte name
  8790.         02h get total number of handles
  8791. Return: AL = number of entries in handle directory (subfunction 00h)
  8792.     DX = value of named handle (subfunction 01h)
  8793.     BX = total number of handles (subfunction 02h)
  8794.     AH = status
  8795.         00h successful
  8796.         80h internal error
  8797.         81h hardware malfunction
  8798.         84h undefined function requested
  8799.         8Fh undefined subfunction
  8800.         A0h no such handle name
  8801.         A1h a handle found had no name
  8802.  
  8803. Format of handle directory entry:
  8804. Offset    Size    Description
  8805.  00h    WORD    handle
  8806.  02h  8 BYTEs    handle's name
  8807. --------m-6755-------------------------------
  8808. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  8809.     AH = 55h
  8810.     AL = subfunction
  8811.         00h physical page numbers provided by caller
  8812.         01h segment addresses provided by caller
  8813.     DX = handle
  8814.     DS:SI -> structure containing map and jump address
  8815. Return: (at target address unless error)
  8816.     AH = status
  8817.         00h successful
  8818.         80h internal error
  8819.         81h hardware failure
  8820.         83h invalid handle
  8821.         84h undefined function requested
  8822.         8Ah invalid logical page number encountered
  8823.         8Bh invalid physical page number encountered
  8824.         8Fh invalid subfunction
  8825. SeeAlso: AH=56h
  8826. --------m-6756-------------------------------
  8827. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  8828.     AH = 56h
  8829.     AL = subfunction
  8830.         00h physical page numbers provided by caller
  8831.         DX = handle
  8832.         DS:SI -> structure containing page map and call address
  8833.         01h segment addresses provided by caller
  8834.         DX = handle
  8835.         DS:SI -> structure containing page map and call address
  8836.         02h get page map stack space required
  8837.         Return: BX = stack space required
  8838. Return: (if successful, the target address is called.  Use a RETF to return and
  8839.      restore mapping context)
  8840.     AH = status (see AH=55h)
  8841. SeeAlso: AH=55h
  8842. --------m-6757-------------------------------
  8843. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  8844.     AH = 57h
  8845.     AL = subfunction
  8846.         00h move memory region
  8847.         01h exchange memory region
  8848.     DS:SI -> structure describing source and destination (see below)
  8849. Return: AH = status
  8850.         00h successful
  8851.         80h internal error
  8852.         81h hardware failure
  8853.         83h invalid handle
  8854.         84h undefined function requested
  8855.         8Ah invalid logical page number encountered
  8856.         8Fh undefined subfunction
  8857.         92h successful, but a portion of the source region has been
  8858.         overwritten
  8859.         93h length of source or destination region exceeds length of region
  8860.         allocated to either source or destination handle
  8861.         94h conventional and expanded memory regions overlap
  8862.         95h offset within logical page exceeds size of logical page
  8863.         96h region length exceeds 1M
  8864.         97h source and destination EMS regions have same handle and overlap
  8865.         98h memory source or destination type undefined
  8866.         A2h attempted to wrap around 1M conventional address space
  8867. Note:    source and destination may overlap for a move, in which case the copy
  8868.       direction is chosen such that the destination receives an intact copy
  8869.       of the source region
  8870.  
  8871. Format of EMS copy data:
  8872. Offset    Size    Description
  8873.  00h    DWORD    region length in bytes
  8874.  04h    BYTE    source memory type
  8875.         00h conventional
  8876.         01h expanded
  8877.  05h    WORD    source handle (0000h if conventional memory)
  8878.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  8879.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  8880.  0Bh    BYTE    destination memory type
  8881.         00h conventional
  8882.         01h expanded
  8883.  0Ch    WORD    destination handle
  8884.  0Eh    WORD    destination initial offset
  8885.  10h    WORD    destination initial segment or page
  8886. --------m-6758-------------------------------
  8887. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  8888.     AH = 58h
  8889.     AL = subfunction
  8890.         00h get mappable physical address array
  8891.         ES:DI -> buffer to be filled with array
  8892.         01h get number of entries in m.p.a. array
  8893. Return: CX = number of entries in array
  8894.     AH = status
  8895.         00h successful
  8896.         80h internal error
  8897.         81h hardware failure
  8898.         84h undefined function requested
  8899.         8Fh undefined subfunction
  8900. Note:    the returned array for subfunction 00h is filled in physical segment
  8901.       address order
  8902.  
  8903. Format of mappable physical address entry:
  8904. Offset    Size    Description
  8905.  00h    WORD    physical page segment
  8906.  02h    WORD    physical page number
  8907. --------m-675857-----------------------------
  8908. INT 67 U - NETROOM??? - ???
  8909.     AX = 5857h
  8910.     BX = function??? (0057h,0059h,0159h seen)
  8911.     ???
  8912. Return: ???
  8913. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  8914.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  8915.       AX=580xh or AX=5857h/BX=0x59h should be used
  8916. SeeAlso: AX=5BF0h
  8917. --------m-6759-------------------------------
  8918. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  8919.     AH = 59h
  8920.     AL = subfunction
  8921.         00h get hardware configuration array
  8922.         ES:DI -> buffer to be filled with array (see below)
  8923.         01h get unallocated raw page count
  8924.         Return: BX = unallocated raw pages
  8925.             DX = total raw pages
  8926. Return:    AH = status (see also AH=58h"EMS 4.0")
  8927.         A4h access denied by operating system
  8928. Note:    subfunction 00h is for use by operating systems only, and can be
  8929.       enabled or disabled at any time by the operating system
  8930.  
  8931. Format of hardware configuration array:
  8932. Offset    Size    Description
  8933.  00h    WORD    size of raw EMM pages in paragraphs
  8934.  02h    WORD    number of alternate register sets
  8935.  04h    WORD    size of mapping-context save area in bytes
  8936.  06h    WORD    number of register sets assignable to DMA
  8937.  08h    WORD    DMA operation type
  8938.         0000h DMA with alternate register sets
  8939.         0001h only one DMA register set
  8940. --------m-675A-------------------------------
  8941. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  8942.     AH = 5Ah
  8943.     AL = subfunction
  8944.         00h allocate standard pages
  8945.         01h allocate raw pages
  8946.     BX = number of pages to allocate
  8947. Return: DX = handle
  8948.     AH = status
  8949.         00h successful
  8950.         80h internal error
  8951.         81h hardware failure
  8952.         84h undefined function requested
  8953.         85h no more handles available
  8954.         87h insufficient memory pages in system
  8955.         88h insufficient memory pages available
  8956.         8Fh undefined subfunction
  8957. --------m-675B-------------------------------
  8958. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  8959.     AH = 5Bh
  8960.     AL = subfunction
  8961.         00h get alternate map register set
  8962.         Return: BL = current active alternate map register set number
  8963.             ES:DI -> map register context save area if BL=00h
  8964.         01h set alternate map register set
  8965.         BL = new alternate map register set number
  8966.         ES:DI -> map register context save area if BL=0
  8967.         02h get alternate map save array size
  8968.         Return: DX = array size in bytes
  8969.         03h allocate alternate map register set
  8970.         Return: BL = number of map register set; 00h = not supported
  8971.         04h deallocate alternate map register set
  8972.         BL = number of alternate map register set
  8973. Return: AH = status
  8974.         00h successful
  8975.         80h internal error
  8976.         81h hardware malfunction
  8977.         84h undefined function requested
  8978.         8Fh undefined subfunction
  8979.         9Ah specified alternate map register set not supported
  8980.         9Bh all alternate map register sets currently allocated
  8981.         9Ch alternate map register sets not supported
  8982.         9Dh undefined or unallocated alternate map register set
  8983.         A3h source array corrupted
  8984.         A4h operating system denied access
  8985. Note:    this function is for use by operating systems only, and can be
  8986.       enabled or disabled at any time by the operating system
  8987. --------m-675B-------------------------------
  8988. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  8989.     AH = 5Bh
  8990.     AL = subfunction
  8991.         05h allocate DMA register set
  8992.         Return: BL = DMA register set number, 00h if not supported
  8993.         06h enable DMA on alternate map register set
  8994.            BL = DMA register set number
  8995.            DL = DMA channel number
  8996.         07h disable DMA on alternate map register set
  8997.            BL = DMA register set number
  8998.         08h deallocate DMA register set
  8999.            BL = DMA register set number
  9000. Return: AH = status
  9001.         00h successful
  9002.         80h internal error
  9003.         81h hardware malfunction
  9004.         84h undefined function requested
  9005.         8Fh undefined subfunction
  9006.         9Ah specified DMA register set not supported
  9007.         9Bh all DMA register sets currently allocated
  9008.         9Ch alternate DMA sets not supported
  9009.         9Dh undefined or unallocated DMA register set
  9010.         9Eh dedicated DMA channels not supported
  9011.         9Fh specified dedicated DMA channel not supported
  9012.         A3h source array corrupted
  9013.         A4h operating system denied access
  9014. Note:    this function is for use by operating systems only, and can be
  9015.       enabled or disabled at any time by the operating system
  9016. --------m-675BE0-----------------------------
  9017. INT 67 - MICEMM v4D - GET LINEAR ADDRESS OF MEMORY
  9018.     AX = 5BE0h
  9019.     ES:BX -> memory for which to get linear address
  9020. Return: AH = 00h
  9021.     DX:CX = linear address of physical memory corresponding to ES:BX
  9022. SeeAlso: AX=5BF0h,AX=5BF1h
  9023. --------m-675BF0-----------------------------
  9024. INT 67 - MICEMM v4D, NETROOM - INSTALLATION CHECK
  9025.     AX = 5BF0h
  9026. Return: AH = 00h if MICEMM or NETROOM present
  9027.         BX = code segment of driver
  9028. Note:    MICEMM is the Micronics Expanded Memory Manager
  9029. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  9030. --------m-675BF1-----------------------------
  9031. INT 67 - MICEMM v4D - GET MEMORY TYPES
  9032.     AX = 5BF1h
  9033.     ES:BX -> 256-byte buffer for memory types
  9034. Return: AH = 00h
  9035.     ES:BX buffer filled
  9036. Note:    each byte in the buffer specifies the type of a 4K page of memory:
  9037.         00h unused
  9038.         02h DOS extension
  9039.         04h shadowed ROM
  9040.         08h mappable EMS
  9041.         10h page frame
  9042.         20h ROM
  9043.         40h reserved (video memory, etc)
  9044.         80h RAM
  9045. SeeAlso: AX=5BE0h,AX=5BF0h
  9046. --------m-675C-------------------------------
  9047. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  9048.     AH = 5Ch
  9049. Return: AH = status
  9050.         00h successful
  9051.         80h internal error
  9052.         81h hardware malfunction
  9053.         84h undefined function requested
  9054. --------m-675D-------------------------------
  9055. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  9056.     AH = 5Dh
  9057.     AL = subfunction
  9058.         00h enable OS Function Set
  9059.         01h disable OS Function Set
  9060.         02h return access key (resets memory manager, returns access key at
  9061.         next invocation)
  9062.     BX,CX = access key returned by first invocation
  9063. Return: BX,CX = access key, returned only on first invocation of function
  9064.     AH = status (see also AH=5Ch)
  9065.         8Fh undefined subfunction
  9066.         A4h operating system denied access
  9067. --------m-6760-------------------------------
  9068. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  9069.     AH = 60h
  9070.     ES:DI -> buffer
  9071. Return: AH = status (see also AH=40h)
  9072.     AL = number of entries
  9073.     buffer at ES:DI filled
  9074. --------m-6761-------------------------------
  9075. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  9076.     AH = 61h
  9077.     ???
  9078. Return: ???
  9079. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  9080.       ensuring that the cache accurately reflects what the processor would
  9081.       see without the cache.
  9082. --------m-6768-------------------------------
  9083. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  9084.     AH = 68h
  9085.     ES:DI -> buffer
  9086. Return: AH = status (see also AH=40h)
  9087.     AL = number of entries
  9088.     buffer at ES:DI filled
  9089. Note:    equivalent to LIM 4.0 function 58h
  9090. --------m-6769-------------------------------
  9091. INT 67 - EEMS - MAP PAGE INTO FRAME
  9092.     AH = 69h
  9093.     AL = frame number
  9094.     BX = page number
  9095.     DX = handle
  9096. Return: AH = status (see also AH=40h)
  9097. Note:    similar to EMS function 44h
  9098. SeeAlso: AH=44h,AH=50h,AH=6Ah
  9099. --------m-676A-------------------------------
  9100. INT 67 - EEMS - PAGE MAPPING
  9101.     AH = 6Ah
  9102.     AL = subfunction
  9103.         00h save partial page map
  9104.         CH = first page frame
  9105.         CL = number of frames
  9106.         ES:DI -> buffer which is to be filled
  9107.         01h restore partial page map
  9108.         CH = first page frame
  9109.         CL = number of frames
  9110.         DI:SI -> previously saved page map
  9111.         02h save and restore partial page map
  9112.         CH = first page frame
  9113.         CL = number of frames
  9114.         ES:DI = buffer for current page map
  9115.         DI:SI = new page map
  9116.         03h get size of save array
  9117.         CH = first page frame
  9118.         CL = number of frames
  9119.         Return: AL = size of array in bytes
  9120.         04h switch to standard map register setting
  9121.         05h switch to alternate map register setting
  9122.         06h deallocate pages mapped to frames in conventional memory
  9123.         CH = first page frame
  9124.         CL = number of frames
  9125. Return: AH = status (see also AH=40h)
  9126. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  9127.       specified
  9128. SeeAlso: AH=69h
  9129. --------m-676B-------------------------------
  9130. INT 67 - DESQview 2.42-2.53 - BUG
  9131.     AH = 6Bh
  9132. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  9133.       function due to a fencepost error
  9134. --------m-67DD-------------------------------
  9135. INT 67 - Quadtel QMAPS - API
  9136.     AH = DDh
  9137.     AL = function
  9138.     ???
  9139. Return: ???
  9140. Notes:    details are not yet available
  9141.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  9142.       supports this API
  9143. SeeAlso: AH=3Fh,AX=FFA5h
  9144. --------E-67DE00-----------------------------
  9145. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  9146.     AX = DE00h
  9147. Return: AH = 00h    VCPI is present
  9148.         BH = major version number
  9149.         BL = minor version number
  9150.     AH nonzero  VCPI not present
  9151. SeeAlso: INT 2F/AX=1687h
  9152. --------E-67DE01-----------------------------
  9153. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  9154.     AX = DE01h
  9155.     ES:DI -> 4K page table buffer
  9156.     DS:SI -> three descriptor table entries in GDT
  9157.         first becomes code segment descriptor, other two for use by
  9158.         main control program
  9159. Return: AH = 00h successful
  9160.         DI -> first unused page table entry in buffer
  9161.         EBX -> protected mode entry point in code segment
  9162.     AH = nonzero  failed
  9163. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  9164.       AX=DE0Ch (in each case, all other registers as appropriate for
  9165.       the function)
  9166. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  9167.  
  9168. QEMM v6.03 protected mode entry point may also be called with:
  9169.     AX = DF00h ???
  9170.         ???
  9171.         Return: ???
  9172.     AX = DF01h ???
  9173.         ???
  9174.         Return: ???
  9175. --------E-67DE02-----------------------------
  9176. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  9177.     AX = DE02h
  9178. Return: AH = 00h  successful
  9179.         EDX = physical address of highest 4K memory page
  9180.     AH nonzero: failed
  9181. SeeAlso: AH=3Fh
  9182. --------E-67DE03-----------------------------
  9183. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  9184.     AX = DE03h
  9185. Return: AH = 00h  successful
  9186.         EDX = number of free 4K pages
  9187.     AH nonzero: failed
  9188. Notes:    returns total number of pages available to ALL tasks in system
  9189.     also available in protected mode by calling the protected-mode VCPI
  9190.       entry point
  9191. SeeAlso: AX=DE04h
  9192. --------E-67DE04-----------------------------
  9193. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  9194.     AX = DE04h
  9195. Return: AH = 00h successful
  9196.         EDX = physical address of allocated page
  9197.     AH nonzero: failed
  9198. Notes:    the client program is responsible for freeing all memory allocated
  9199.       with this call before terminating
  9200.     also available in protected mode by calling the protected-mode VCPI
  9201.       entry point
  9202. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  9203. --------E-67DE05-----------------------------
  9204. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  9205.     AX = DE05h
  9206.     EDX = physical address of 4K page
  9207. Return: AH = 00h successful
  9208.     AH nonzero: failed
  9209. Note:    also available in protected mode by calling the protected-mode VCPI
  9210.       entry point
  9211. SeeAlso: AH=3Fh,AX=DE04h
  9212. --------E-67DE06-----------------------------
  9213. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  9214.     AX = DE06h
  9215.     CX = page number (linear address shifted right 12 bits)
  9216. Return: AH = 00h successful
  9217.         EDX = physical address of page
  9218.     AH nonzero: invalid page number (AH = 8Bh recommended)
  9219. --------E-67DE07-----------------------------
  9220. INT 67 - Virtual Control Program Interface - READ CR0
  9221.     AX = DE07h
  9222. Return: AH = 00h
  9223.     EBX = value of Control Register 0
  9224. SeeAlso: AH=3Fh,AX=DE07h
  9225. --------E-67DE08-----------------------------
  9226. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  9227.     AX = DE08h
  9228.     ES:DI -> array of 8 DWORDs
  9229. Return: AH = 00h
  9230.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  9231. SeeAlso: AH=3Fh,AX=DE09h
  9232. --------E-67DE09-----------------------------
  9233. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  9234.     AX = DE09h
  9235.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  9236. Return: AH = 00h
  9237. Note:    values for DR4 and DR5 ignored
  9238. SeeAlso: AH=3Fh,AX=DE08h
  9239. --------E-67DE0A-----------------------------
  9240. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  9241.     AX = DE0Ah
  9242. Return: AH = 00h successful
  9243.         BX = first vector used by master 8259 (IRQ0)
  9244.         CX = first vector used by slave 8259 (IRQ8)
  9245.     AH nonzero: failed
  9246. Note:    CX is undefined in systems without a slave 8259
  9247. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  9248. --------E-67DE0B-----------------------------
  9249. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  9250.     AX = DE0Bh
  9251.     BX = first vector used by master 8259
  9252.     CX = first vector used by slave 8259
  9253.     interrupts disabled
  9254. Return: AH = 00h successful
  9255.     AH nonzero: failed 
  9256. Notes:    This call merely informs the server that the client has changed the
  9257.       interrupt mappings.  The client may not change the mappings if they
  9258.       have already been changed by the server or another client, and is
  9259.       responsible for restoring the original mappings before terminating.
  9260. SeeAlso: AX=DE0Ah
  9261. --------E-67DE0C-----------------------------
  9262. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  9263.     AX = DE0Ch
  9264.     ESI = linear address in first megabyte of values for system registers
  9265.     interrupts disabled
  9266. Return: interrupts disabled
  9267.     GDTR, IDTR, LDTR, TR loaded
  9268.     SS:ESP must have at least 16 bytes space, and the entry point is
  9269.         required to set up a new stack before enabling interrupts
  9270.     EAX, ESI, DS, ES, FS, GS destroyed
  9271. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  9272.  
  9273. Note:    in protected mode, calling the protected-mode VCPI entry point with 
  9274.       AX = DE0Ch
  9275.       DS = segment selector mapping entire linear address space obtained
  9276.         via AX=DE01h
  9277.       SS:ESP in first megabyte of linear memory
  9278.       STACK:QWORD  return address from FAR call to 32-bit segment
  9279.         DWORD  EIP
  9280.         DWORD  CS
  9281.         DWORD  reserved for EFLAGS
  9282.         DWORD  ESP
  9283.         DWORD  SS
  9284.         DWORD  ES
  9285.         DWORD  DS
  9286.         DWORD  FS
  9287.         DWORD  GS
  9288.       and interrupts disabled, will switch to virtual86 mode with
  9289.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  9290.  
  9291. Format of system register values for switch to protected mode:
  9292. Offset    Size    Description
  9293.  00h    DWORD    value for CR3
  9294.  04h    DWORD    linear address in first megabyte of value for GDTR
  9295.  08h    DWORD    linear address in first megabyte of value for IDTR
  9296.  0Ch    WORD    value for LDTR
  9297.  0Eh    WORD    value for TR
  9298.  10h    PWORD    CS:EIP of protected mode entry-point
  9299. --------m-67FFA5-----------------------------
  9300. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  9301.     AX = FFA5h
  9302. Return: AX = 845Ah if loaded
  9303.         BX:CX -> API entry point
  9304. Notes:    this call is available even if EMM386 is not providing EMS
  9305.     if no other program has hooked INT 67, an alternate installation
  9306.       check is to search for the string
  9307.       "MICROSOFT EXPANDED MEMORY MANAGER 386" early in the INT 67
  9308.       handler's segment, usually at offset 14h; the word immediately
  9309.       preceding this string contains the offset of the API entry point
  9310. SeeAlso: AH=3Fh,INT 21/AX=4402h"EMM386.EXE"
  9311.  
  9312. Call API entry point with:
  9313.     AH = 00h get memory manager's status
  9314.         Return: AH = status
  9315.             bit 0: not active (OFF)
  9316.             bit 1: in "Auto" mode
  9317.     AH = 01h set memory manager's state
  9318.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  9319.     AH = 02h Weitek coprocessor support
  9320.         AL = subfunction
  9321.         00h get Weitek support state
  9322.             Return: AL = status
  9323.                 bit 0: Weitek coprocessor is present
  9324.                 bit 1: Weitek support is enabled
  9325.         01h turn on Weitek support
  9326.         02h turn off Weitek support
  9327.      --- v4.20-4.41 only ---
  9328.     AH = 03h Windows support???
  9329.         AL = subfunction (00h, 01h)
  9330.     AH = 04h print copyright notice to standard output
  9331.          (using INT 21/AH=09h)
  9332.     AH = 05h print available report
  9333.          (the one shown when running EMM386 from the DOS prompt)
  9334. ---------------------------------------------
  9335.