home *** CD-ROM | disk | FTP | other *** search
/ Hot Shareware 32 / hot34.iso / ficheros / DTOOL / INTER57A.ZIP / INTERRUP.C < prev    next >
Text File  |  1998-03-22  |  356KB  |  9,354 lines

  1. Interrupt List, part 3 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998 Ralf Brown
  3. --------T-1512-------------------------------
  4. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  5.     AH = 12h
  6.     STACK:    WORD    process ID
  7. Return: AX = status (SYS_OK or SYS_ERROR)
  8. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  9. --------T-1512-------------------------------
  10. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  11.     AH = 12h
  12. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  13. SeeAlso: AH=11h"MultiDOS"
  14. Index:    hotkeys;MultiDOS Plus
  15. --------Q-1512--BH00-------------------------
  16. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  17.     AH = 12h
  18.     BH = 00h
  19.     BL = which handle to return
  20.         00h handle in DWORD on top of stack
  21.         01h current task's window handle
  22.         02h given task's mailbox handle (task's handle on stack)
  23.         03h current task's mailbox handle
  24.         04h given task's keyboard handle (task's handle on stack)
  25.         05h current task's keyboard object handle
  26.         06h given task's OBJECTQ handle (task's handle on stack)
  27.         07h current task's OBJECTQ handle
  28.         08h      \
  29.           thru > return 0000:0000 under DV < 2.26
  30.         10h      /
  31.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  32.         0Dh (2.26+) task handle of owner (parent) of current task
  33. Return: DWORD on top of stack is object handle
  34. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  35.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  36.       window)
  37. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  38. --------Q-1512--BH01-------------------------
  39. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  40.     AH = 12h
  41.     BH = 01h
  42.     BL = object type to create (see #0361)
  43.     STACK: (only if window object or WINDOW class)
  44.            DWORD address to jump to (no new task if high word == 0)
  45.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  46.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  47.            DWORD bytes system memory for input buffer for READ/READN
  48.             (0 == none, -1 == default--same as logical window size)
  49.            DWORD window size, columns
  50.            DWORD window size, rows
  51.            DWORD length of window title
  52.            DWORD address of window title
  53. Return: DWORD on top of stack is new object handle
  54. Notes:    if a new task is created, it is started with
  55.       AX = BX = SI = DI = BP = 0
  56.       DX:CX = handle of parent task
  57.       DS = ES = SS = segment of private stack (and new task's handle)
  58.     new windows are orphans, inherit the colors/hidden status of the
  59.       creating task's window, and are placed in the upper left hand corner
  60.       of the screen but not automatically redrawn
  61.     new keyboards are closed, and have all object bits cleared except for
  62.       the hardware cursor bit
  63. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  64.  
  65. (Table 0361)
  66. Values for TopView/DESQview object type (for creation):
  67.  00h    (DV 2.0x only) handle is DWORD on top of stack
  68.  01h    (DV 2.0x only) use task's window handle
  69.  02h    (DV 2.0x only) given task's mailbox (task's handle on stack)
  70.  03h    (DV 2.0x only) current task's mailbox
  71.  04h    (DV 2.0x only) given task's keyboard (task's handle on stack)
  72.  05h    (DV 2.0x only) current task's keyboard object
  73.  08h    WINDOW class
  74.  09h    MAILBOX class
  75.  0Ah    KEYBOARD class
  76.  0Bh    TIMER object (counts down 32-bit time in 10ms increments)
  77.  0Fh    POINTER object
  78.  10h    PANEL object
  79. --------Q-1512--BH02-------------------------
  80. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  81.     AH = 12h
  82.     BH = 02h
  83.     BL = object
  84.         00h handle in DWORD on top of stack
  85.         window: close window and free
  86.         timer: free timer
  87.         panel: free panel object
  88.         pointer: free pointer
  89.         01h task's window handle - kills task, never returns
  90.         02h given task's mailbox (task's handle on top of stack)
  91.         03h current task's mailbox
  92.         04h given task's keyboard (task's handle on top of stack)
  93.         05h current task's keyboard object
  94. Return: STACK popped if handle passed on stack
  95. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  96.       task windows also free any mailbox, objectq, and panel objects held
  97.       by the task and any child tasks
  98.     if the keyboard being freed is the default keyboard for a task, this
  99.       call is equivalent to CLOSE
  100.     panel and pointer objects are automatically closed if open
  101. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  102. --------Q-1512--BH03-------------------------
  103. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  104.     AH = 12h
  105.     BH = 03h
  106.     BL = object
  107.         00h mailbox handle in DWORD on top of stack
  108.         02h sender of last msg read from mailbox (task's handle on stack)
  109.         03h sender of last msg read from current task's mailbox
  110. Return: DWORD on stack is task handle of message sender
  111. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  112. --------Q-1512--BH03-------------------------
  113. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  114.     AH = 12h
  115.     BH = 03h
  116.     BL = window to be connected
  117.         00h handle of window to be attached in DWORD on top of stack
  118.         01h attach current task's main window
  119.     STACK: DWORD handle of window to attach to or 00000000h to detach
  120. Return: STACK popped
  121. Notes:    when two windows are connected, both will move if the user moves either
  122.     multiple windows may be attached to a single window, but each window
  123.       may only be attached to one window at a time
  124. SeeAlso: AH=12h/BH=83h
  125. --------Q-1512--BX0300-----------------------
  126. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  127.     AH = 12h
  128.     BX = 0300h
  129.     STACK: DWORD handle of panel object (see #0362)
  130. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  131.            DWORD address of directory
  132. Note:    a null string is returned if the object is not open
  133. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  134.  
  135. Format of TopView panel file:
  136. Offset    Size    Description    (Table 0362)
  137.  00h  2 BYTEs    C0h C3h
  138.  02h    BYTE    number of panels in file
  139.  03h    for each panel in file:
  140.         8 BYTEs  blank-padded panel name
  141.           DWORD  panel offset in file
  142.           WORD   panel length
  143.     data for panels (each consists of one or more window/query/manager
  144.       streams); first byte of each panel must be 1Bh, fifth byte must be
  145.       E5h
  146. --------Q-1512--BH04-------------------------
  147. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  148.     AH = 12h
  149.     BH = 04h
  150.     BL = window to read from
  151.         00h handle is DWORD on top of stack
  152.         01h use calling task's default window
  153.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  154.         0Dh (DV 2.26+) default window of parent task of current task
  155. Return: STACK:    DWORD number of bytes read
  156.         DWORD address of buffer
  157. Notes:    reading starts at the current logical cursor position; the cursor is
  158.       updated to point at the character following the last one read
  159.     any translucent blanks (FFh) which are visible on screen are changed
  160.       to the character which is seen through them
  161.     the string produced by the read is placed in an input buffer which may
  162.       be reused by the next READ or READN of a window
  163.     window stream opcodes D8h and D9h determine whether the read returns
  164.       characters or attributes
  165. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  166. --------Q-1512--BH04-------------------------
  167. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  168.     AH = 12h
  169.     BH = 04h
  170.     BL = object
  171.         00h handle is DWORD on top of stack
  172.         mailbox: wait for and get next message
  173.         keyboard: wait for and get pointer to next input buffer
  174.         pointer: wait for and get next message
  175.         02h get next message from mailbox (task's handle on top of stack)
  176.         03h get next message from current task's mailbox
  177.         04h get the next input from keyboard (handle on top of stack)
  178.         05h get the next input from task's default keyboard
  179.         06h wait for input from any object in OBJECTQ (handle on stack)
  180.         07h wait for input from any object in task's default OBJECTQ
  181. Return: STACK: (if objectq) DWORD handle of object with input
  182.            (otherwise)  DWORD number of bytes
  183.                 DWORD address of pointer message (see #0363)
  184. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  185.       containing the character code as returned by the BIOS; the BIOS scan
  186.       code is available via the STATUS call if the character is zero
  187.     for a keyboard in field mode, the input buffer format is determined
  188.       by the field table header for the window the keyboard is attached to
  189.     keyboard input buffers and mailbox message buffers may be invalidated
  190.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  191. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  192.  
  193. Format of DESQview pointer message:
  194. Offset    Size    Description    (Table 0363)
  195.  00h    WORD    row
  196.  02h    WORD    column
  197.  04h    BYTE    status (see #0364)
  198.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  199.  
  200. Bitfields for DESQview pointer status:
  201. Bit(s)    Description    (Table 0364)
  202.  7-2    number of clicks-1 if multiple-click mode active
  203.  7    set when press/release mode active and button pressed
  204.  6    set when press/release mode active and button released
  205.  1-0    button pressed (00=none,01=button1,10=button2)
  206. SeeAlso: #0363
  207. --------Q-1512--BX0400-----------------------
  208. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  209.     AH = 12h
  210.     BX = 0400h
  211.     STACK: DWORD timer's handle
  212. Return: after timer expires
  213.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  214. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  215. --------Q-1512--BX0400-----------------------
  216. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  217.     AH = 12h
  218.     BX = 0400h
  219.     STACK: DWORD handle of panel object
  220.            DWORD window's handle (or 0 for current task's window)
  221.            DWORD length of panel name
  222.            DWORD pointer to panel name
  223. Return: STACK: DWORD handle of window which was used
  224.            DWORD handle of keyboard or 0
  225. Notes:    status of APPLY may be checked with STATUS message
  226.     panel MUST have the following format
  227.       first byte must be 1Bh (i.e. must start with a stream)
  228.       first opcode in stream must be E5h
  229.         single byte arg of opcode is interpreted thus:
  230.           bits 7,6    11 means create new window
  231.             10 means create new field table for existing window
  232.             01 means use existing window and field table
  233.           bit 5 if set, panel contains a field table
  234.             (creates a new keyboard and puts it in field mode)
  235.           bit 4 if set, panel contains input fields
  236.           bit 3 if set, panel contains select fields but no input fields
  237.     if the panel contains input or select fields, a keyboard handle is
  238.       returned; either the window's current open keyboard or a
  239.       newly-created keyboard object.  The caller should read that keyboard
  240.       to obtain input from the panel.
  241. SeeAlso: AH=12h/BH=84h
  242. --------Q-1512--BH05------------------------
  243. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  244.     AH = 12h
  245.     BH = 05h
  246.     BL = object
  247.         00h handle is DWORD on top of stack
  248.         timer: start timer to end at a specified time
  249.         keyboard: add input buffer to queue
  250.         pointer: move pointer icon to specified position
  251.         02h send message by value/status=0 to mbox (task's handle on stack)
  252.         03h send message by value/status=0 to current task's mailbox
  253.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  254.         05h add input buffer to task's default KEYBOARD queue
  255.         06h add an object to OBJECTQ (handle on top of stack)
  256.         07h add an object to task's default OBJECTQ
  257.     STACK: (if mailbox)  DWORD length
  258.                  DWORD address
  259.            (if keyboard) DWORD status (scan code in keystroke mode)
  260.                  DWORD length (should be 1 in keystroke mode)
  261.                  DWORD address
  262.            (if objectq)  DWORD handle of object to add
  263.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  264.                    only accurate to 1/18 sec)
  265.            (if pointer)  DWORD column relative to origin of window
  266.                  DWORD row relative to origin of window
  267. Return: STACK popped
  268. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  269.     the data and status written to a keyboard object must match the format
  270.       returned by the keyboard object in the current mode
  271.     the pointer position is scaled according to the current scaling factors
  272. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  273. --------Q-1512--BH05-------------------------
  274. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  275.     AH = 12h
  276.     BH = 05h
  277.     BL = window to write to
  278.         00h DWORD on top of stack is window handle
  279.         01h write string to task's default window
  280.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  281.         0Dh (DV 2.26+) default window of parent of current task
  282.     STACK: DWORD object handle if handle passed on stack
  283.            DWORD total length of string (high word == 0)
  284.            DWORD address of string to display (see #0365)
  285. Return: indicated actions performed
  286.     a. non-control characters are displayed (opcodes DEh and DFh control
  287.        whether the attributes are left or changed to the current attrib)
  288.     b. CR/LF/BS/Tab cause the usual cursor movement
  289.     c. ESC starts a data structure with additional commands if following
  290.        byte is less than 20h; otherwise, it is written to the window
  291.     STACK:    DWORD handle of new window if window stream opcode E6h
  292.         else nothing (arguments have been popped)
  293. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  294.  
  295. Format of stream data structure:
  296. Offset    Size    Description    (Table 0365)
  297.  00h    BYTE    1Bh magic value identifying start of stream
  298.  01h    BYTE    stream type (00h, 01h, 10h, 14h-1Fh legal)
  299.         (see #0366,#0372,#0373,#0374)
  300.  02h    WORD    length of remainder of stream in bytes
  301.     var-length fields follow, each an OPCODE followed by
  302.          zero or more args
  303.  
  304. (Table 0366)
  305. Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
  306. Opcodes:args
  307.  00h  display 20h blanks with the default attribute
  308.  01h-1Fh display OPCODE blanks with the default attribute
  309.  20h  display char with default attribute 20h times
  310.     BYTE char to repeat
  311.  21h-3Fh display char with default attribute OPCODE-20h times
  312.     BYTE char to repeat
  313.  40h  display 20h blanks with specified attribute
  314.     BYTE attribute of blanks
  315.  41h-5Fh display OPCODE-40h blanks with specified attribute
  316.     BYTE attribute of blanks
  317.  60h  display next 20h characters
  318.     20h BYTEs characters to display
  319.  61h-7Fh display next OPCODE-60h characters
  320.     N BYTEs characters to display
  321.  80h-87h display N blanks with default attribute
  322.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  323.           [000h means 800h]
  324.  88h-8Fh display N copies of the character
  325.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  326.           [000h means 800h]
  327.     BYTE character to repeat
  328.  90h-97h display N blanks with specified attribute
  329.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  330.           [000h means 800h]
  331.     BYTE attribute
  332.  98h-9Fh display string at logical cursor pos
  333.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  334.           [000h means 800h]
  335.     N BYTEs string to display
  336.  A0h  set logical cursor row
  337.     BYTE row number (0 is top)
  338.  A1h  set logical cursor column
  339.     BYTE column number (0 is leftmost)
  340.  A2h  set top edge of scrolling region
  341.     BYTE row
  342.  A3h  set left edge of scrolling region
  343.     BYTE column
  344.  A4h  set row of physical window position
  345.     BYTE line
  346.  A5h  set column of physical window position
  347.     BYTE column
  348.  A6h  set height of physical window
  349.     BYTE number of rows
  350.  A7h  set width of physical window
  351.     BYTE number of columns
  352.  A8h  set viewport row
  353.     BYTE row
  354.  A9h  set viewport column
  355.     BYTE column
  356.  AAh  set virtual screen height [contents of window unpredictable after]
  357.     BYTE rows
  358.  ABh  set virtual screen width [contents of window unpredictable after]
  359.     BYTE columns
  360.  ACh-AEh unused
  361.  AFh  set compatible/preferred video modes
  362.     BYTE compatibility/preference mask
  363.         bit 7    compatible with monochrome
  364.         bit 6    compatible with color text, EGA/VGA graphics
  365.         bit 5    compatible with medium-resolution CGA graphics
  366.         bit 4    compatible with high-resolution CGA graphics
  367.         bit 3    prefer monochrome
  368.         bit 2    prefer color text, EGA/VGA graphics
  369.         bit 1    prefer medium-resolution CGA graphics
  370.         bit 0    prefer high-resolution CGA graphics
  371.  B0h  move logical cursor down
  372.     BYTE number of rows (signed, negative values move up)
  373.         [if rows=0 and hardware cursor owner, update hardware cursor]
  374.  B1h  move logical cursor right
  375.     BYTE number of columns (signed, negative values move left)
  376.         [if cols=0 and hardware cursor owner, update hardware cursor]
  377.  B2h  shift top edge of scrolling region
  378.     BYTE number of rows (signed)
  379.  B3h  shift left edge of scrolling region
  380.     BYTE number of columns (signed)
  381.  B4h  shift physical window down
  382.     BYTE number of lines (signed)
  383.  B5h  shift physical window right
  384.     BYTE number of columns (signed)
  385.  B6h  expand physical window vertically
  386.     BYTE number of lines (signed)
  387.  B7h  expand physical window horizontally
  388.     BYTE number of columns (signed)
  389.  B8h  adjust viewport row
  390.     BYTE number of rows (signed)
  391.  B9h  adjust viewport column
  392.     BYTE number of columns (signed)
  393.  BAh  adjust virtual screen height [contents of window unpredict after]
  394.     BYTE number of rows to increase (signed)
  395.  BBh  adjust virtual screen width [contents of window unpredictbl after]
  396.     BYTE number of columns to increase (signed)
  397.  BCh-BFh reserved (currently unused)
  398.  C0h  set logical cursor position
  399.     BYTE row number (0 is top border)
  400.     BYTE column number (0 is left border)
  401.  C1h  set top left corner of scrolling region
  402.     BYTE row
  403.     BYTE column
  404.  C2h  set physical window pos
  405.     BYTE upper left row (no top border if 0)
  406.     BYTE upper left column (no left border if 0)
  407.  C3h  set current window size
  408.     BYTE number of rows
  409.     BYTE number of columns
  410.  C4h  set upper left corner of viewport (portion of virtual screen displayed
  411.       in window)
  412.     BYTE row
  413.     BYTE column
  414.  C5h  set size of virtual screen [contents unpredictable afterwards]
  415.     BYTE number of rows
  416.     BYTE number of columns
  417.  C6h  unused
  418.  C7h  unused
  419.  C8h  set logical cursor relative to current position
  420.     BYTE number of rows to move down (signed)
  421.     BYTE number of columns to move right (signed)
  422.         [if rows=cols=0 and hardware cursor owner, update hardw cursor]
  423.  C9h  shift top left corner of scrolling region
  424.     BYTE number of rows (signed)
  425.     BYTE number of columns (signed)
  426.  CAh  set window pos relative to current position
  427.     BYTE number of rows to shift down (signed)
  428.     BYTE number of columns to shift right (signed)
  429.  CBh  set window size relative to current size
  430.     BYTE number of rows to expand (signed)
  431.     BYTE number of cols to expand (signed)
  432.  CCh  shift viewport relative to current position
  433.     BYTE rows to shift (signed)
  434.     BYTE cols to shift (signed)
  435.  CDh  resize virtual screen
  436.     BYTE number of rows to expand (signed)
  437.     BYTE number of columns to expand (signed)
  438.  CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  439.  CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  440.  D0h  allow window frame to extend beyond screen
  441.  D1h  always display a complete frame, even if window extends beyond edge of
  442.       screen
  443.  D2h  allow DV to change logical colors on video mode switch (default)
  444.  D3h  application changes logical attributes
  445.  D4h  window is visible [must redraw to actually make visible]
  446.  D5h  window is hidden [must redraw to actually remove]
  447.  D6h  window has frame (default)
  448.  D7h  window unframed [must redraw to actually remove frame]
  449.  D8h  READ/READN will read characters from window (default)
  450.  D9h  READ/READN will read attributes from window
  451.  DAh  use logical attributes, which may be remapped (see #0367)
  452.  DBh  use physical attributes for characters
  453.  DCh  enable special actions for control characters (default)
  454.  DDh  disable special control char handling, all chars displayable by BIOS TTY
  455.       call
  456.  DEh  write both character and attribute (default)
  457.  DFh  write character only, leave attribute untouched
  458.  E0h  repeat following commands through E1h opcode
  459.     BYTE number of times to repeat (00h means 256 times)
  460.  E1h  end of commands to repeat, start repeating them
  461.  E2h  set current output color
  462.     BYTE color
  463.  E3h  clear virtual screen from scroll origin to end using current color
  464.  E4h  redraw window
  465.  E5h  select menu style
  466.     BYTE style (normally 18h)
  467.         bits 5,4 = 01 use two-letter menu entries for remainder of
  468.           this stream
  469.  E5h  (panel file only)
  470.     BYTE modifier
  471.         bits 7,6 = 11 panel stream creates new window
  472.              = 10 panel defines new field table for existing window
  473.              = 01 panel stream uses existing window & field table
  474.         bit 5 = 1 stream contains a field table (create kyboard object)
  475.         bit 4 = 1 stream defines input fields (create keyboard object)
  476.         bit 3 = 1 stream defines select fields but not input fields
  477.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  478.         bit 1 reserved
  479.         bit 0 reserved
  480.  E6h  create new window and perform rest of manipulations in new window
  481.     BYTE number of rows
  482.     BYTE number of columns
  483.     Return: DWORD object handle of new window returned on stack at end
  484.     Note:    the window is created with a physical size of 0x0 at the
  485.           same position as the window to which this stream was sent
  486.  E7h  no operation
  487.  E8h  scroll area up (top left corner defined by opcode C1h)
  488.     BYTE height
  489.     BYTE width
  490.  E9h  scroll area down (top left corner defined by opcode C1h)
  491.     BYTE height
  492.     BYTE width
  493.  EAh  scroll area left (top left corner defined by opcode C1h)
  494.     BYTE height
  495.     BYTE width
  496.  EBh  scroll area right (top left corner defined by opcode C1h)
  497.     BYTE height
  498.     BYTE width
  499.  ECh  set logical attributes for window contents
  500.     BYTE video modes command applies to
  501.         bit 7    monochrome
  502.         bit 6    color text, EGA/VGA graphics
  503.         bit 5    medium-resolution CGA graphics
  504.         bit 4    high-resolution CGA graphics
  505.     BYTE which attributes to set
  506.         bit 7    if set, copy single following byte to indicated attribs
  507.         bits 4-6  number of first attribute to change - 1
  508.         bits 0-3  number of consecutive attributes to change
  509.     N BYTEs new attributes
  510.  EDh  set logical attributes for window frame
  511.     BYTE video modes command applies to (also see opcode ECh)
  512.     BYTE which attributes to set
  513.         bit 7    if set, copy single following byte to indicated attrs
  514.         bits 4-6  number of first attribute to change - 1
  515.         bits 0-3  number of consecutive attributes to change
  516.     N BYTEs new attributes
  517.           attributes
  518.                1 = top left corner
  519.                2 = top right corner
  520.                3 = bottom left corner
  521.                4 = bottom right corner
  522.                5 = top edge
  523.                6 = bottom edge
  524.                7 = left edge
  525.                8 = right edge
  526.  EEh  set characters for window frame
  527.     BYTE video modes command applies to (also see opcode ECh)
  528.     BYTE which characters to set
  529.         bit 7    if set, copy single following byte to indicated chars
  530.         bits 4-6  number of first character to change - 1
  531.         bits 0-3  number of consecutive characters to change
  532.     N BYTEs new chars (same relative position as attributes above)
  533.  EFh  set window name
  534.     BYTE length of name (should be in range 0 to logical screen width)
  535.     N BYTEs name
  536.  F0h  clear input field to blanks
  537.     BYTE field number
  538.  F1h  fill input field with character
  539.     BYTE field number
  540.     BYTE char
  541.  F2h  set color of input field
  542.     BYTE field number (1-N)
  543.     BYTE attribute
  544.  F3h  set initial contents of input field
  545.     BYTE field number (1-N)
  546.     N BYTEs enough chars to exactly fill field as defined by op FFh
  547.  F4h  position cursor to start of specific input field
  548.     BYTE field number (1-N)
  549.  F5h  change field table entry
  550.     BYTE field number
  551.     7-8 BYTEs field table entry (also see opcode FFh below)
  552.  F6h  set field type
  553.     BYTE field number
  554.     BYTE type
  555.         00h inactive
  556.         40h output field
  557.         80h input field
  558.         C0h deselected field
  559.         C2h selected field
  560.  F7h  "broadcast write"    write data to fields with program output bit set in
  561.       the field table entry, in field number order
  562.     N BYTEs (total length of all program output fields)
  563.  F8h  scroll field up a line
  564.     BYTE field number
  565.  F9h  scroll field down a line
  566.     BYTE field number
  567.  FAh  scroll field left
  568.     BYTE field number
  569.  FBh  scroll field right
  570.     BYTE field number
  571.  FCh  set field table header
  572.     6 BYTEs    field table header (see #0368)
  573.  FDh  reset modified bit for all fields
  574.  FEh  reset selected and modified bits for all fields
  575.  FFh  set up input fields
  576.     6 BYTEs    table header (see #0368)
  577.     7/8N BYTEs the field table entries, one for each field (see #0370)
  578.     Note:    DESQview uses and updates the actual copy of the information
  579.           which is contained in the stream.  Thus this info must remain
  580.           intact until after the data entry is complete.
  581. SeeAlso: #0365,#0372
  582.  
  583. (Table 0367)
  584. Values for TopView logical attributes:
  585.  01h    normal text
  586.  02h    highlighted normal text
  587.  03h    help text
  588.  04h    highlighted help text
  589.  05h    error message
  590.  06h    highlighted error message
  591.  07h    emphasized text
  592.  08h    marked text
  593.  9-16    reverse video versions of 1-8
  594. SeeAlso: #0366
  595.  
  596. Format of TopView field table header:
  597. Offset    Size    Description    (Table 0368)
  598.  00h    BYTE    number of fields (must be <= existing number of fields)
  599.  01h    BYTE    screen behavior bits (see #0369)
  600.  02h    BYTE    current input field (updated by DESQview)
  601.  03h    BYTE    current select field (updated by DESQview)
  602.  04h    BYTE    attribute for select fields when they are pointed at
  603.  05h    BYTE    attribute for select fields which have been selected
  604. SeeAlso: #0366,#0370
  605.  
  606. Bitfields for TopView screen behavior bits:
  607. Bit(s)    Description    (Table 0369)
  608.  7    reserved
  609.  6    menu items may be selected via keyboard
  610.  5    left mouse button in "status" mode (press anywhere in window
  611.       immediately returns control to application)
  612.  4    right mouse button in "status" mode
  613.  3    select fields return contents or blanks rather than 'Y' or 'N'
  614.  2    modified bits reset on return to application
  615.  1-0    type of data returned
  616.     00 no data returned on read of keyboard
  617.     01 data returned as array of characters containing all fields packed
  618.           together, with no field numbers
  619.     10 data returned as numbered variable-length records for all fields
  620.     11 data returned as numbered variable-length records for the fields
  621.           which were modified
  622. SeeAlso: #0366
  623.  
  624. Format of TopView field table entry:
  625. Offset    Size    Description    (Table 0370)
  626.  00h    BYTE    start row    \
  627.  01h    BYTE    start column  \ if menu selection and start is to
  628.  02h    BYTE    end row          / right or below end, select from kbd only
  629.  03h    BYTE    end column   /
  630.  04h    BYTE    field type (see #0371)
  631.  05h    BYTE    modifier
  632.         if type is fill-in, then bit flags to determine behavior
  633.           bit 7     automatically enter CR when field full
  634.           bit 6     move to next field when current field is full
  635.           bit 5     enter text from right end (for numbers)
  636.           bit 4     force input to uppercase
  637.           bit 3     clear old contents on first keystroke
  638.           bit 2     input returned when cursor moves out of
  639.               modified field ("validate", API level 2.02+)
  640.           bit 1     reserved
  641.           bit 0     reserved
  642.         if select field, first key to press to activate
  643.           00h if have to point-&-click or is an extended-ASCII
  644.               keystroke (only if two-key menus enabled)
  645.  06h    BYTE    (select field only) normal color of field
  646.  07h    BYTE    second key for select field.  This byte is present iff
  647.           two-letter menu entries selected with opcode E5h, and in that
  648.           case is present regardless of field type
  649. SeeAlso: #0368
  650.  
  651. Bitfields for TopView field type:
  652. Bit(s)    Description    (Table 0371)
  653.  7,6    field class
  654.     00 inactive (non-entry) field
  655.     01 echos keystrokes input to make menu selection
  656.     10 fill-in field
  657.     11 select field
  658.  5    field can be filled by broadcast write (F7h opcode)
  659.  4    reserved
  660.  3    reserved
  661.  2    reserved
  662.  1    set if field selected
  663.  0    set if field modified
  664. SeeAlso: #0370
  665.  
  666. (Table 0372)
  667. Values for MODE 01h "QUERY STREAM" opcodes:
  668. (valid only for those opcodes listed here)
  669.  A0h return logical cursor row in next byte
  670.  A1h return logical cursor column in next byte
  671.  A2h return top row of scrolling region in next byte
  672.  A3h return left column of scrolling region in next byte
  673.  A4h return row of physical window origin in next byte
  674.  A5h return column of physical window origin in next byte
  675.  A6h return height of physcial window in next byte
  676.  A7h return width of physical window in next byte
  677.  A8h return row of viewport origin in next byte
  678.  A9h return column of viewport origin in next byte
  679.  AAh return height of virtual screen in next byte
  680.  ABh return width of virtual screen in next byte
  681.  AFh return current video mode in next byte
  682.  C0h return current logical cursor position in next two bytes
  683.  C1h return top left corner of scrolling region in next two bytes
  684.  C2h return current window position in next two bytes
  685.  C3h return current window size in next two bytes
  686.  C4h return current viewport origin in next two bytes
  687.  C5h return current virtual screen size in next two bytes
  688.  D0h \ overwritten with D0h if frames may fall off screen edge
  689.  D1h /               D1h if frames always displayed entirely
  690.  D2h \ overwritten with D2h if DESQview controls color palette
  691.  D3h /               D3h if application changes color palette
  692.  D4h \ overwritten with D4h if window visible
  693.  D5h /               D5h if window hidden
  694.  D6h \ overwritten with D6h if window has frame
  695.  D7h /               D7h if window unframed
  696.  D8h \ overwritten with D8h if reading characters from window
  697.  D9h /               D9h if reading attributes from window
  698.  DAh \ overwritten with DAh if using logical attributes
  699.  DBh /               DBh if using physical attributes
  700.  DCh \ overwritten with DCh if TTY control char interpretation on
  701.  DDh /               DDh if TTY control char interpretation off
  702.  DEh \ overwritten with DEh if writing both characters and attributes
  703.  DFh /               DFh if leaving attributes untouched
  704.  E2h return current color in next byte
  705.  ECh get logical attributes for window contents
  706.     BYTE execute call if currently in specified video mode
  707.         bit 7    monochrome
  708.         bit 6    color text, EGA/VGA graphics
  709.         bit 5    medium-resolution CGA graphics
  710.         bit 4    high-resolution CGA graphics
  711.     BYTE which attributes to get
  712.         bit 7    unused???
  713.         bits 4-6 first attribute to get - 1
  714.         bits 0-3 number of consecutive attributes
  715.     N BYTEs buffer to hold attributes
  716.  EDh get logical attributes for window frame
  717.     BYTE execute call if currently in video mode (also see opcode ECh)
  718.     BYTE which attributes to get
  719.         bit 7    unused???
  720.         bits 4-6 first attribute to get - 1
  721.         bits 0-3 number of consecutive attributes
  722.     N BYTEs buffer to hold attributes
  723.  EEh get characters for window frame
  724.     BYTE execute call if currently in video mode (also see opcode ECh)
  725.     BYTE which attributes to get
  726.         bit 7    unused???
  727.         bits 4-6 first char to get - 1
  728.         bits 0-3 number of consecutive chars
  729.     N BYTEs buffer to hold chars
  730.  EFh return first N characters of current window name
  731.     BYTE    max length of returned name
  732.     N BYTEs buffer to hold window name
  733.  F3h return contents of specified field
  734.     BYTE field number
  735.     N BYTEs buffer to hold field contents (size equal to field size)
  736.  F5h get field table entry
  737.     BYTE field number
  738.     7-8 BYTEs buffer to hold field table entry (see #0370)
  739.     Notes:    DV < 2.26 always returns 7 bytes
  740.         DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
  741.           is using 8-byte entries and eighth byte after    F5h is E7h
  742.           (NOP); otherwise, 7 bytes are returned
  743.         DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
  744.           on the field table entry size
  745.  F6h get type of a field
  746.     BYTE field number
  747.     BYTE type
  748.  FCh get field table header
  749.     6 BYTEs buffer to store field table header (see #0368)
  750. SeeAlso: #0365,#0373
  751.  
  752. (Table 0373)
  753. Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
  754.  00h allow window to be moved horizontally
  755.  01h allow window to be moved vertically
  756.  02h allow window to change width
  757.  03h allow window to change height
  758.  04h allow window to be scrolled horizontally
  759.  05h allow window to be scrolled vertically
  760.  06h allow "Close Window" menu selection for application
  761.  07h allow "Hide Window" menu selection for application
  762.  08h allow application to be suspended ("Rearrange/Freeze")
  763.  0Eh allow "Scissors" menu
  764.  10h allow DESQview main menu to be popped up
  765.  11h allow "Switch Windows" menu
  766.  12h allow "Open Window" menu
  767.  13h allow "Quit" menu selection
  768.  20h-33h opposite of 00h-13h, disallow specified action
  769.  40h notify if horizontal position of window changes
  770.  41h notify if vertical position of window changes
  771.  42h notify if width of window changes
  772.  43h notify if height of window changes
  773.  44h notify if window scrolled horizontally
  774.  45h notify if window scrolled vertically
  775.  46h notify if window is closed--program has to clean up and exit itself
  776.  47h notify if window is hidden
  777.  48h notify if "?" on main menu selected
  778.  49h notify if pointer message sent to window
  779.  4Ah notify if window is placed in foreground
  780.  4Bh notify if window is placed in background
  781.  4Ch notify if video mode changes
  782.  4Dh notify if "Scissors" menu "Cut" option selected
  783.  4Eh notify if "Scissors" menu "Copy" option selected
  784.  4Fh notify if "Scissors" menu "Paste" option selected
  785.  50h notify if DESQview main menu about to pop up
  786.  51h notify if DESQview main menu popped down
  787.  60h-71h     opposite of 40h-51h: don't notify on specified event
  788.  84h attach window to parent task's window (both move together)
  789.  85h detach window from parent task's window (may move independently)
  790.  86h disable background operation for application
  791.  87h enable running in background
  792.  88h set minimum size of physical window
  793.     BYTE rows
  794.     BYTE columns
  795.  89h set maximum size of physical window
  796.     BYTE rows
  797.     BYTE cols
  798.  8Ah set primary asynchronous notification routine (see #0375)
  799.     DWORD address of routine, 0000h:0000h means none (see also below)
  800.  8Bh set async notification parameter
  801.     DWORD 32-bit value passed to 8Ah async routine in DS:SI
  802.  ACh (DV2.2+) perform regular select field attribute processing
  803.  ADh (DV2.2+) protect attributes in selected field from being lost
  804.  AEh make window default notify window for owning app (API level 2.00+)
  805.  AFh set selected field marker character
  806.     BYTE character to display at left edge of selected fields
  807.  BCh set standard field processing mode
  808.  BDh set alternate field processing mode (enables cursor pad for menus)
  809.  BEh disables changing reverse logical attributes with ECh opcode
  810.  BFh enables changing reverse logical attributes with ECh opcode
  811.  C0h make current window topmost in system
  812.  C1h force current process into foreground
  813.  C2h make current window topmost in process
  814.  C3h position mouse pointer relative to origin of current field
  815.     BYTE rows below upper left corner of field
  816.     BYTE columns to right of upper left corner of field
  817.  C4h position mouse pointer relative to origin of given field
  818.     BYTE field number
  819.     BYTE rows below upper left corner of field
  820.     BYTE columns to right of upper left corner of field
  821.  C5h orphan current window (also hides it)
  822.     Note: must be last in stream; all subsequent commands ignored
  823.  C6h show all windows for this process
  824.  C7h hide all windows for this process
  825.  C8h suspend process and hide all its windows
  826.  C9h force current process into background
  827.  CAh make current window bottom-most in process
  828.  CBh cancel current window manager operation, remove DV menu, give control
  829.       to topmost application
  830.  CCh orphan window and give it to the system for use as paste data
  831.  CEh reorder windows
  832.     DWORD pointer to null-terminated list of words; each word is segment
  833.           of object handle for a window
  834.  FFh no operation
  835. SeeAlso: #0365,#0372,#0374
  836.  
  837. (Table 0374)
  838. Values for MODES 14h to 1Fh "USER STREAMS":
  839.     normally NOPs, but may be defined by SETESC message to invoke FAR
  840.     routines, one for each mode number
  841.       on entry to handler,
  842.         DS:SI -> first byte of actual stream (not header)
  843.         CX = number of bytes in stream
  844.         ES:DI = window's handle
  845. SeeAlso: #0372,#0373
  846.  
  847. (Table 0375)
  848. Values asynchronous notification routine defined by man.stream 8Ah called with:
  849.     ES:DI = handle of window
  850.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  851.        mailbox contains message indicating event
  852.           Opcode
  853.            40h  horizontal movement
  854.            DWORD object handle of window
  855.            BYTE     new row
  856.            BYTE     new col
  857.            41h  vertical movement
  858.            DWORD object handle of window
  859.            BYTE     new row
  860.            BYTE     new col
  861.            42h  horizontal size change
  862.            DWORD object handle of window
  863.            BYTE     new rows
  864.            BYTE     new cols
  865.            43h  vertical size change
  866.            DWORD object handle of window
  867.            BYTE     new rows
  868.            BYTE     new cols
  869.            44h  scrolled horizontally
  870.            DWORD object handle of window
  871.            BYTE     mouse row within window
  872.            BYTE     mouse column within window
  873.            BYTE     field mouse is on, 0 if none
  874.            BYTE     amount moved: >0 right, <0 left, 0 done
  875.            45h  scrolled vertically
  876.            DWORD object hande of window
  877.            BYTE     mouse row within window
  878.            BYTE     mouse column within window
  879.            BYTE     field mouse is on, 0 if none
  880.            BYTE     amount moved: >0 down, <0 up, 0 done
  881.            46h  window close request
  882.            DWORD object handle of window
  883.            BYTE     mouse pointer row
  884.            BYTE     mouse pointer column
  885.            BYTE     field mouse is on, 0 if none
  886.            47h  application's windows hidden
  887.            48h  Help for Program selected
  888.            DWORD object handle of window
  889.            BYTE     mouse pointer row
  890.            BYTE     mouse pointer column
  891.            BYTE     field mouse is on, 0 if none
  892.            49h  pointer message sent to window
  893.            DWORD pointer handle which received message
  894.            4Ah  switched to window from another ("raise")
  895.            4Bh  switched away from the window ("lower")
  896.            4Ch  video mode changed
  897.            BYTE new BIOS video mode
  898.            4Dh  Scissors/cUt selected
  899.            DWORD object handle of window
  900.            BYTE     row of upper left corner
  901.            BYTE     column of upper left corner
  902.            BYTE     field number ul corner is in, 0=none
  903.            DWORD handle of orphaned window created with
  904.              copy of data from specified region
  905.            BYTE     height of region
  906.            BYTE     width of region
  907.            4Eh  Scissors/Copy selected
  908.            DWORD object handle of window
  909.            BYTE     row of upper left corner
  910.            BYTE     column of upper left corner
  911.            BYTE     field number ul corner is in, 0=none
  912.            DWORD handle of orphaned window created with
  913.              copy of data from specified region
  914.            BYTE     height of region
  915.            BYTE     width of region
  916.            4Fh  Scissors/Paste selected
  917.            DWORD object handle of window
  918.            BYTE     row of upper left corner
  919.            BYTE     column of upper left corner
  920.            BYTE     field number ul corner is in, 0=none
  921.            DWORD handle of orphaned window with data
  922.            BYTE     height of region
  923.            BYTE     width of region
  924.             Note: orphaned data window should be adopted or freed
  925.                 when done
  926.            50h  main menu about to pop up
  927.            51h  main menu popped down
  928. Return: all registers unchanged
  929. --------Q-1512--BH06-------------------------
  930. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  931.     AH = 12h
  932.     BH = 06h
  933.     BL = object
  934.         00h object handle in DWORD on top of stack
  935.         mailbox, keyboard, pointer, or timer
  936.         (DV 2.50+) window
  937.         01h (DV 2.50+) current task's window
  938.         04h given task's keyboard (task's handle on top of stack)
  939.         05h current task's default keyboard
  940.     STACK: DWORD new priority of object in task's OBJECTQ
  941.             (new priority of task if window handle)
  942. Return: STACK popped
  943. Notes:    initially all objects have the same default value.  Should only make
  944.       relative adjustments to this default value.
  945.     when changing priorities, all objects already on the objectq are
  946.       reordered
  947.     for window handles, only the non-blocked task(s) with the highest
  948.       priority receive CPU time under DESQview 2.50-2.52; the default
  949.       priority is 0Ah
  950. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  951. --------Q-1512--BH07-------------------------
  952. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  953.     AH = 12h
  954.     BH = 07h
  955.     BL = object
  956.         00h object handle in DWORD on top of stack
  957.         mailbox, keyboard, pointer, or timer
  958.         (DV 2.50+) window
  959.         01h (DV 2.50+) current task's window
  960.         04h given task's keyboard (task's handle on top of stack)
  961.         05h current task's default keyboard
  962. Return: STACK: DWORD object priority
  963. Note:    initially all objects have the same default value.  Should only make
  964.       relative adjustments to this default value.
  965. SeeAlso: AH=12h/BH=06h
  966. --------Q-1512--BH08-------------------------
  967. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  968.     AH = 12h
  969.     BH = 08h
  970.     BL = object
  971.         00h handle in DWORD on top of stack
  972.         window: total character positions in window
  973.         timer: elapsed time since timer started
  974.         pointer: number of messages queued to pointer object
  975.         panel: number of panels in panel file
  976.         keyboard: number of input buffers queued
  977.         01h total chars in current task's default window
  978.         02h number of messages in task's mailbox (task's handle on stack)
  979.         03h number of messages in current task's mailbox
  980.         04h number of input buffers queued in task's kbd (handle on stack)
  981.         05h number of input buffers queued for current task's default kbd
  982.         06h number of objects queued in OBJECTQ (task's handle on stack)
  983.         07h number of objects queued in current task's OBJECTQ
  984.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  985.         0Dh (DV 2.26+) total chars in parent task's window
  986. Return: DWORD on top of stack is result (any handle on stack has been popped)
  987. Note:    for panel objects, a count of zero is returned if no panel file is open
  988.       for the object
  989. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  990. --------Q-1512--BH09-------------------------
  991. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  992.     AH = 12h
  993.     BH = 09h
  994.     BL = object
  995.         00h handle in DWORD on top of stack
  996.         window: get chars/line
  997.         timer: get 1/100 seconds remaining before timer expires
  998.         mailbox: (DV/X) get number of bytes queued to mailbox
  999.         01h get number of chars/line in current task's default window
  1000.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  1001.         0Dh (DV 2.26+) get chars/line in parent task's window
  1002. Return: DWORD on top of stack is length (any handle on stack has been popped)
  1003. SeeAlso: AH=12h/BH=08h
  1004. --------Q-1512--BH0A-------------------------
  1005. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  1006.     AH = 12h
  1007.     BH = 0Ah
  1008.     BL = window to write to
  1009.         00h window handle is DWORD on top of stack
  1010.         01h current task's default window
  1011.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  1012.         0Dh (DV 2.26+) default window of parent of current task
  1013.     STACK:    DWORD count of attributes
  1014.         DWORD address of attribute string
  1015.         DWORD count of characters
  1016.         DWORD address of character string
  1017. Return: STACK popped
  1018. Notes:    if one string is longer than the other, the shorter one will be reused
  1019.       until the longer one is exhausted
  1020.     the cursor is left just after the last character written
  1021. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  1022. --------Q-1512--BH0A-------------------------
  1023. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  1024.     AH = 12h
  1025.     BH = 0Ah
  1026.     BL = mailbox to write to
  1027.         00h handle is DWORD on top of stack
  1028.         02h default mailbox of task whose handle is on top of stack
  1029.         03h current task's default mailbox
  1030.     STACK:    DWORD    status (low byte)
  1031.         DWORD    length of message
  1032.         DWORD    address of message
  1033. Return: STACK popped
  1034. Notes:    the message is copied into either system or common memory
  1035.     insufficient memory normally causes the process to be aborted; under
  1036.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  1037. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  1038. --------Q-1512--BH0A-------------------------
  1039. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  1040.     AH = 12h
  1041.     BH = 0Ah
  1042.     BL = object
  1043.         00h handle is DWORD on top of stack
  1044.         timer: start timer for specified interval
  1045.         pointer: set control flags (see #0377)
  1046.         keyboard: set control flags (see #0376)
  1047.         04h set control flags on KEYBOARD object (handle on top of stack)
  1048.         05h set control flags on task's default KEYBOARD object
  1049.     STACK: (if timer)   DWORD duration in 1/100 seconds
  1050.            (otherwise)  DWORD bits to set
  1051. Return: STACK popped
  1052. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  1053.  
  1054. Bitfields for DESQview keyboard object bits:
  1055. Bit(s)    Description    (Table 0376)
  1056.  15    reserved, can't be set
  1057.  14    unused
  1058.  13    reserved, can't be set
  1059.  12-6    unused
  1060.  5    (DV 2.2+) exclusive input
  1061.  4    filter all keys (used with handler established by SETESC)
  1062.     if 0, only keys that would normally be displayed are filtered
  1063.  3    program continues executing while input in progress
  1064.  2    insert mode active for field mode
  1065.  1    hardware cursor displayed when task is hardware cursor owner
  1066.     must be set if keyboard in field mode and field table includes input
  1067.       fields
  1068.  0    keyboard is in field mode rather than keystroke mode
  1069.  
  1070. Bitfields for DESQview pointer object bits:
  1071. Bit(s)    Description    (Table 0377)
  1072.  15    reserved, can't be set
  1073.  14-8    unused
  1074.  7    mouse pointer is hidden while in window
  1075.  6    get messages even if window not topmost
  1076.  5    get messages even if window not foreground
  1077.  4    multiple clicks separated by less than 1/3 second are counted and
  1078.       returned in a single message
  1079.  3    pointer position is relative to screen origin, not window origin
  1080.  2    send message on button release as well as button press
  1081.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  1082.       pointer leaves the window
  1083.  0    send message only on button activity, not movement
  1084.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  1085. --------Q-1512--BH0B-------------------------
  1086. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  1087.     AH = 12h
  1088.     BH = 0Bh
  1089.     BL = window to write attributes to
  1090.         00h handle is DWORD on top of stack
  1091.         01h current task's default window
  1092.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  1093.         0Dh (DV 2.26+) default window of parent of current task
  1094.     STACK:    DWORD number of attributes to write
  1095.         DWORD address of attributes
  1096. Return: STACK popped
  1097. Note:    the attributes are written starting at the current cursor position; the
  1098.       cursor is left just after the last position written
  1099. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  1100. --------Q-1512--BH0B-------------------------
  1101. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  1102.     AH = 12h
  1103.     BH = 0Bh
  1104.     BL = mailbox to write to
  1105.         00h handle is DWORD on top of stack
  1106.         02h default mailbox of task whose handle is on top of stack
  1107.         03h current task's default mailbox
  1108.     STACK:    DWORD    status (low byte)
  1109.         DWORD    length of message
  1110.         DWORD    address of message
  1111. Return: STACK popped
  1112. Notes:    only a pointer to the message is stored, but the write may still fail
  1113.       due to insufficient memory
  1114.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  1115. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  1116. --------Q-1512--BH0B-------------------------
  1117. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  1118.     AH = 12h
  1119.     BH = 0Bh
  1120.     BL = OBJECTQ from which to remove all copies of a particular object
  1121.         06h OBJECTQ of task whose handle is on top of stack
  1122.         07h task's default OBJECTQ
  1123.     STACK:    DWORD    handle of object to remove
  1124. Return: STACK popped
  1125. Note:    should be sent whenever an object is erased or closed
  1126. --------Q-1512--BH0B-------------------------
  1127. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  1128.     AH = 12h
  1129.     BH = 0Bh
  1130.     BL = object
  1131.         00h handle is DWORD on top of stack
  1132.         pointer: reset control flags
  1133.         keyboard: reset control flags
  1134.         04h clear control flags on KEYBOARD object (handle on top of stack)
  1135.         05h clear control flags on task's default KEYBOARD object
  1136.     STACK:    DWORD    which bits to clear (see #0376,#0377)
  1137. Return: STACK popped
  1138. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  1139. --------Q-1512--BH0C-------------------------
  1140. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  1141.     AH = 12h
  1142.     BH = 0Ch
  1143.     BL = object
  1144.         00h handle is DWORD on top of stack
  1145.         window:      fill with given character from scroll origin to end
  1146.         keyboard: attach to a window
  1147.         timer:      open
  1148.         pointer:  start taking input for window
  1149.         panel:      associate with a panel file
  1150.         01h fill task's default window with given char from scrl org to end
  1151.         02h open given task's mailbox for input (task's handle on stack)
  1152.         03h open current task's mailbox
  1153.         04h attach a KEYBOARD to a window (handle on top of stack)
  1154.         05h attach task's default KEYBOARD to a window
  1155.         06h open a task's OBJECTQ (task's handle on top of stack)
  1156.         07h open current task's OBJECTQ
  1157.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  1158.         0Dh (DV 2.26+) fill default window of parent of current task
  1159.      STACK: (if window)   DWORD character to fill with
  1160.         (if keyboard) DWORD handle of window to attach to
  1161.         (if pointer)  DWORD handle of window to attach to
  1162.         (if panel)    DWORD length of filename or resident panel
  1163.                   DWORD address of filename or resident panel
  1164.         (otherwise)   nothing
  1165. Return: STACK popped
  1166. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  1167.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  1168.       the panel file
  1169.     result code of open may be retrieved with STATUS message
  1170.     logical cursor is left at scroll origin after filling window
  1171.     the task opening a mailbox becomes its owner, and the only task allowed
  1172.       to read the mailbox
  1173.     messages are only sent to a pointer object when the mouse is positioned
  1174.       in the window to which the pointer has been attached
  1175.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  1176.       messages automatically open the timer
  1177. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  1178. --------Q-1512--BH0D-------------------------
  1179. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  1180.     AH = 12h
  1181.     BH = 0Dh
  1182.     BL = object
  1183.         00h handle is DWORD on top of stack
  1184.         timer:      close
  1185.         keyboard: detach from window and discard queued input
  1186.         pointer:  stop taking input
  1187.         panel:      close
  1188.         mailbox:  close, unlock, and discard any pending messages
  1189.         02h close given task's mailbox (task's handle on top of stack)
  1190.         03h close task's default mailbox
  1191.         04h close KEYBOARD object (handle on top of stack)
  1192.         05h close task's default KEYBOARD
  1193.         06h close given task's OBJECTQ (task's handle on top of stack)
  1194.         07h close current task's OBJECTQ
  1195. Return: STACK popped if handle passed on stack
  1196. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  1197.       ERASE message (AH=12h/BH=0Eh)
  1198.     when a panel object is closed, the panel file and any panels currently
  1199.       in use are freed; window and keyboard objects created by APPLY are
  1200.       not affected, but field mode input ceases
  1201.     open but idle timer objects consume a small amount of CPU time
  1202. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  1203. --------Q-1512--BH0E-------------------------
  1204. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  1205.     AH = 12h
  1206.     BH = 0Eh
  1207.     BL = object
  1208.         00h handle is DWORD on top of stack
  1209.         window:      clear from scroll origin to end of window
  1210.         keyboard: discard input
  1211.         timer:      cancel current interval
  1212.         pointer:  discard all pending messages
  1213.         mailbox:  discard all pending messages
  1214.         01h clear task's default window from scroll origin to end
  1215.         02h discard all queued messages in mailbox (handle on top of stack)
  1216.         03h discard all queued messages in current task's default mailbox
  1217.         04h discard all input queued to KEYBOARD (handle on top of stack)
  1218.         05h discard all input queued to task's default KEYBOARD
  1219.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  1220.         07h remove all objects from current task's OBJECTQ
  1221.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  1222.         0Dh (DV 2.26+) clear default window of parent of current task
  1223. Return: STACK popped if handle passed on stack
  1224. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  1225. SeeAlso: AH=12h/BH=02h
  1226. --------Q-1512--BH0F-------------------------
  1227. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  1228.     AH = 12h
  1229.     BH = 0Fh
  1230.     BL = object
  1231.         00h handle is DWORD on top of stack
  1232.         timer:     is it running?
  1233.         pointer: return status of last message
  1234.         panel:     verify success of last OPEN or APPLY
  1235.         02h return status of last msg READ from mailbox (handle on stack)
  1236.         03h return status of last msg READ from task's default mailbox
  1237.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  1238.         05h get status of last msg from task's default KEYBOARD
  1239.         06h return whether OBJECTQ is open or not (handle on top of stack)
  1240.         07h return whether task's default OBJECTQ is open or not
  1241. Return: DWORD on top of stack is status (any handle passed on stack popped)
  1242. Notes:    if object is a panel object, the status indicates the error code:
  1243.       00h successful
  1244.       14h panel name not in panel directory
  1245.       15h not enough memory to apply panel
  1246.       16h invalid panel format
  1247.       17h panel file already open
  1248.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  1249.       95h not enough memory to open panel file     > that the panel was
  1250.       98h null panel file name            /  not opened
  1251.     if object is a timer, the status is:
  1252.       00000000h open but not running
  1253.       40000000h open and running
  1254.       80000000h closed
  1255.     if object is an OBJECTQ, the status is:
  1256.       00000000h open
  1257.       80000000h closed
  1258.     if object is a keyboard in keystroke mode, the status is the extended
  1259.       character code (scan code) of the last keystroke
  1260.     if object is a keyboard in field mode, the status indicates the reason
  1261.       for the last return from the field manager
  1262.       00h Enter key pressed
  1263.       01h Button 1 or keystroke selection
  1264.       02h Button 2
  1265.       03h validation
  1266.       04h auto Enter on field
  1267.       1Bh Escape pressed
  1268.       46h ^Break pressed
  1269.       other: extended code for key terminating input
  1270.     the status of mailbox messages sent by the window manager is always 80h
  1271.     the status of a pointer message is the same as the status field in the
  1272.       message
  1273. SeeAlso: AH=12h/BH=04h"READ"
  1274. --------Q-1512--BH10-------------------------
  1275. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  1276.     AH = 12h
  1277.     BH = 10h
  1278.     BL = object
  1279.         00h handle is DWORD on top of stack
  1280.         window: return TRUE if logical cursor past end of window
  1281.         mailbox: ???
  1282.         01h returns TRUE if logical cursor past end of task's def window
  1283.         02h return ??? for task's mailbox (task's handle on top of stack)
  1284.         03h return ??? for current task's mailbox
  1285.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  1286.         0Dh (DV 2.26+) check log cursor of window of parent task
  1287. Return: DWORD on top of stack is status (any handle on stack has been popped)
  1288. --------Q-1512--BH11-------------------------
  1289. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  1290.     AH = 12h
  1291.     BH = 11h
  1292.     BL = window for which to move cursor
  1293.         00h window's handle is DWORD on top of stack
  1294.         01h task's default window
  1295.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  1296.         0Dh (DV 2.26+) default window of parent of current task
  1297.     STACK: DWORD column
  1298.            DWORD row
  1299. Return: STACK popped
  1300. --------Q-1512--BH11-------------------------
  1301. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  1302.     AH = 12h
  1303.     BH = 11h
  1304.     BL = mailbox to name
  1305.         00h DWORD on top of stack is mailbox handle
  1306.         02h use given task's mailbox (task's handle on top of stack)
  1307.         03h use current task's default mailbox
  1308.     STACK: DWORD length of name
  1309.            DWORD address of name
  1310. Return: STACK popped
  1311. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  1312. --------Q-1512--BX1100-----------------------
  1313. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  1314.     AH = 12h
  1315.     BX = 1100h
  1316.     STACK: DWORD object handle for pointer object
  1317.            DWORD number of colums to scale pointer position to
  1318.            DWORD number of rows to scale pointer position to
  1319. Return: STACK popped
  1320. SeeAlso: AH=12h/BX=1200h
  1321. --------Q-1512--BH12-------------------------
  1322. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  1323.     AH = 12h
  1324.     BH = 12h
  1325.     BL = window to read from
  1326.         00h handle is DWORD on top of stack
  1327.         01h read next N chars or attributes on task's default window
  1328.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  1329.         0Dh (DV 2.26+) read default window of parent of current task
  1330.     STACK: DWORD count
  1331. Return: STACK: DWORD number of bytes actually read
  1332.            DWORD address of buffer containing data
  1333. Notes:    reading starts at the current logical cursor position; the cursor is
  1334.       updated to point at the character following the last one read
  1335.     any translucent blanks (FFh) which are visible on screen are changed
  1336.       to the character which is seen through them
  1337.     the string produced by the read is placed in an input buffer which may
  1338.       be reused by the next READ or READN of a window
  1339.     window stream opcodes D8h and D9h determine whether the read returns
  1340.       characters or attributes
  1341. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  1342. --------Q-1512--BH12-------------------------
  1343. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  1344.     AH = 12h
  1345.     BH = 12h
  1346.     BL = mailbox for which to retrieve name
  1347.         00h DWORD on top of stack is mailbox handle
  1348.         02h use given task's mailbox (task's handle on top of stack)
  1349.         03h use current task's default mailbox
  1350.     STACK: DWORD length of buffer for name
  1351.            DWORD pointer to buffer
  1352. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  1353. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  1354. Note:    the returned name is not NUL-terminated
  1355. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  1356. --------Q-1512--BX1200-----------------------
  1357. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  1358.     AH = 12h
  1359.     BX = 1200h
  1360.     STACK: DWORD object handle for pointer
  1361. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  1362.            DWORD pointer pos scaled as if window were this many rows high
  1363. SeeAlso: AH=12h/BX=1100h
  1364. --------Q-1512--BH13-------------------------
  1365. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  1366.     AH = 12h
  1367.     BH = 13h
  1368.     BL = window object
  1369.         00h DWORD on top of stack is handle for window to redraw
  1370.         01h redraw task's default window
  1371.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  1372.         0Dh (DV 2.26+) redraw default window of parent of current task
  1373. Return: STACK popped if handle was passed on stack
  1374. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  1375. --------Q-1512--BH13-------------------------
  1376. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  1377.     AH = 12h
  1378.     BH = 13h
  1379.     BL = mailbox from which to read
  1380.         00h DWORD on top of stack is mailbox handle
  1381.         02h use given task's mailbox (task's handle on top of stack)
  1382.         03h use current task's default mailbox
  1383.     STACK: DWORD size of buffer in bytes
  1384.            DWORD pointer to buffer
  1385. Return: STACK: DWORD number of bytes read
  1386. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  1387. Notes:    this call blocks if no input is available, but will return less than
  1388.       the requested number of bytes if some (but insufficient) data is
  1389.       available
  1390.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  1391.       4 or 5 set, as common memory may be exhausted by that call when
  1392.       attempting to read the next message
  1393. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  1394. --------Q-1512--BX1300-----------------------
  1395. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  1396.     AH = 12h
  1397.     BX = 1300h
  1398.     STACK: DWORD object handle for pointer
  1399.            DWORD character to use for pointer
  1400. Return: STACK popped
  1401. --------Q-1512--BH14-------------------------
  1402. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  1403.     AH = 12h
  1404.     BH = 14h
  1405.     BL = message modifier
  1406.         00h handle is DWORD on top of stack
  1407.         01h define user stream
  1408.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  1409.         05h intercept keystrokes from task's default KEYBOARD to a window
  1410.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  1411.                  DWORD address of FAR user stream handler
  1412.            (if keyboard) DWORD address of FAR filter function (see #0378)
  1413. Return: STACK popped
  1414.  
  1415. (Table 0378)
  1416. Values keyboard filter function is called with when keyboard is in field mode:
  1417.     AL = character
  1418.     AH = 00h or extended ASCII code if AL = 00h
  1419.     BL = field number
  1420.     CH = cursor column
  1421.     CL = cursor row
  1422.     DL = field type modifier (sixth item in field table entry)
  1423.     DH = seventh item in field table entry
  1424.     ES:SI = window's handle
  1425.     DS:DI -> field table entry for field containing the cursor
  1426. Return: AH = action to take
  1427.         00h use keystroke
  1428.         01h ignore keystroke
  1429.         FFh beep and ignore keystroke
  1430. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  1431. --------Q-1512--BH14-------------------------
  1432. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  1433.     AH = 12h
  1434.     BH = 14h
  1435.     BL = object
  1436.         00h mailbox handle is DWORD on top of stack
  1437.         02h use given task's mailbox (task's handle on top of stack)
  1438.         03h use current task's default mailbox
  1439. Return: STACK popped if BL=00h
  1440. Note:    release exclusive access by sending CLOSE message to mailbox
  1441.     access may be requested multiple times, and requires multiple CLOSEs
  1442. SeeAlso: AH=12h/BH=0Dh
  1443. --------Q-1512--BH15-------------------------
  1444. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  1445.     AH = 12h
  1446.     BH = 15h
  1447.     BL = object
  1448.         00h DWORD on top of stack
  1449.         mailbox, keyboard, or pointer only
  1450.         02h mailbox for task whose handle is on top of stack
  1451.         03h mailbox for current task
  1452.         04h keyboard for task whose handle is on top of stack
  1453.         05h keyboard for current task
  1454.     STACK: DWORD flags (see #0379,#0380)
  1455. Return: STACK popped
  1456. Notes:    only available if the API level has been set to at least 2.20
  1457.     equivalent to performing SUBFROM and ADDTO calls on the object
  1458.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  1459.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  1460. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  1461.  
  1462. Bitfields for DESQview mailbox object flags:
  1463. Bit(s)    Description    (Table 0379)
  1464.  0    all mail messages in common memory
  1465.  1    allow write even if closed
  1466.  2    don't erase messages when mailbox closed
  1467.  4    (DV/X) append messages with like status and sender (stream-oriented
  1468.       mail)
  1469.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  1470.  6    (DV/X) make mailbox into non-owned mailbox
  1471.  
  1472. Bitfields for DESQview keyboard object flags:
  1473. Bit(s)    Description    (Table 0380)
  1474.  5    exclusive input when keyboard in use for input
  1475. --------Q-1512--BH16-------------------------
  1476. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  1477.     AH = 12h
  1478.     BH = 16h
  1479.     BL = object
  1480.         00h DWORD on top of stack
  1481.         mailbox, keyboard, or pointer only
  1482.         02h mailbox for task whose handle is on top of stack
  1483.         03h mailbox for current task
  1484.         04h keyboard for task whose handle is on top of stack
  1485.         05h keyboard for current task
  1486. Return: STACK: DWORD current control flags (see #0379,#0380)
  1487. Notes:    only available if the API level has been set to at least 2.20
  1488.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  1489.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  1490. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  1491. --------Q-1512--BH17-------------------------
  1492. INT 15 - DESQview v2.42-2.52 - BUG
  1493.     AH = 12h
  1494.     BH = 17h
  1495.     BL = object
  1496.         00h DWORD on top of stack
  1497.         mailbox, keyboard, or pointer only
  1498.         02h mailbox for task whose handle is on top of stack
  1499.         03h mailbox for current task
  1500.         04h keyboard for task whose handle is on top of stack
  1501.         05h keyboard for current task
  1502. Return: STACK popped if handle passed on stack
  1503. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  1504.       keyboards, and pointers, but causes a random branch
  1505.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  1506. --------Q-1512--BH80-------------------------
  1507. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  1508.     AH = 12h
  1509.     BH = 80h
  1510. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  1511.       not pop up a "Programming Error" window, instead returning an error
  1512.       code in AL (see #0381)
  1513. SeeAlso: AH=12h/BH=00h
  1514.  
  1515. (Table 0381)
  1516. Values for DESQview error code:
  1517.  00h    no error
  1518.  01h    invalid values
  1519.  02h    alias invalid
  1520.  03h    handle valid but wrong type
  1521.  04h    invalid handle
  1522. --------Q-1512--BH81-------------------------
  1523. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  1524.     AH = 12h
  1525.     BH = 81h
  1526. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  1527.       not pop up a "Programming Error" window, instead returning an error
  1528.       code in AL (see #0381)
  1529. SeeAlso: AH=12h/BH=01h
  1530. --------Q-1512--BH82-------------------------
  1531. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  1532.     AH = 12h
  1533.     BH = 82h
  1534. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  1535.       not pop up a "Programming Error" window, instead returning an error
  1536.       code in AL (see #0381)
  1537. SeeAlso: AH=12h/BH=02h
  1538. --------Q-1512--BH83-------------------------
  1539. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  1540.     AH = 12h
  1541.     BH = 83h
  1542. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  1543.       not pop up a "Programming Error" window, instead returning an error
  1544.       code in AL (see #0381)
  1545. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  1546. --------Q-1512--BH84-------------------------
  1547. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  1548.     AH = 12h
  1549.     BH = 84h
  1550. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  1551.       not pop up a "Programming Error" window, instead returning an error
  1552.       code in AL (see #0381)
  1553. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  1554. --------Q-1512--BH85-------------------------
  1555. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  1556.     AH = 12h
  1557.     BH = 85h
  1558. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  1559.       not pop up a "Programming Error" window, instead returning an error
  1560.       code in AL (see #0381)
  1561. SeeAlso: AH=12h/BH=05h
  1562. --------Q-1512--BH86-------------------------
  1563. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  1564.     AH = 12h
  1565.     BH = 86h
  1566. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  1567.       not pop up a "Programming Error" window, instead returning an error
  1568.       code in AL (see #0381)
  1569. SeeAlso: AH=12h/BH=06h
  1570. --------Q-1512--BH87-------------------------
  1571. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  1572.     AH = 12h
  1573.     BH = 87h
  1574. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  1575.       not pop up a "Programming Error" window, instead returning an error
  1576.       code in AL (see #0381)
  1577. SeeAlso: AH=12h/BH=07h
  1578. --------Q-1512--BH88-------------------------
  1579. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  1580.     AH = 12h
  1581.     BH = 88h
  1582. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  1583.       not pop up a "Programming Error" window, instead returning an error
  1584.       code in AL (see #0381)
  1585. SeeAlso: AH=12h/BH=08h
  1586. --------Q-1512--BH89-------------------------
  1587. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  1588.     AH = 12h
  1589.     BH = 89h
  1590. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  1591.       not pop up a "Programming Error" window, instead returning an error
  1592.       code in AL (see #0381)
  1593. SeeAlso: AH=12h/BH=09h
  1594. --------Q-1512--BH8A-------------------------
  1595. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  1596.     AH = 12h
  1597.     BH = 8Ah
  1598. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  1599.       not pop up a "Programming Error" window, instead returning an error
  1600.       code in AL (see #0381)
  1601. SeeAlso: AH=12h/BH=0Ah
  1602. --------Q-1512--BH8B-------------------------
  1603. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  1604.     AH = 12h
  1605.     BH = 8Bh
  1606. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  1607.       not pop up a "Programming Error" window, instead returning an error
  1608.       code in AL (see #0381)
  1609. SeeAlso: AH=12h/BH=0Bh
  1610. --------Q-1512--BH8C-------------------------
  1611. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  1612.     AH = 12h
  1613.     BH = 8Ch
  1614. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  1615.       not pop up a "Programming Error" window, instead returning an error
  1616.       code in AL (see #0381)
  1617. SeeAlso: AH=12h/BH=0Ch
  1618. --------Q-1512--BH8D-------------------------
  1619. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  1620.     AH = 12h
  1621.     BH = 8Dh
  1622. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  1623.       not pop up a "Programming Error" window, instead returning an error
  1624.       code in AL (see #0381)
  1625. SeeAlso: AH=12h/BH=0Dh
  1626. --------Q-1512--BH8E-------------------------
  1627. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  1628.     AH = 12h
  1629.     BH = 8Eh
  1630. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  1631.       not pop up a "Programming Error" window, instead returning an error
  1632.       code in AL (see #0381)
  1633. SeeAlso: AH=12h/BH=0Eh
  1634. --------Q-1512--BH8F-------------------------
  1635. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  1636.     AH = 12h
  1637.     BH = 8Fh
  1638. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  1639.       not pop up a "Programming Error" window, instead returning an error
  1640.       code in AL (see #0381)
  1641. SeeAlso: AH=12h/BH=0Fh
  1642. --------Q-1512--BH90-------------------------
  1643. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  1644.     AH = 12h
  1645.     BH = 90h
  1646. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  1647.       not pop up a "Programming Error" window, instead returning an error
  1648.       code in AL (see #0381)
  1649. SeeAlso: AH=12h/BH=10h
  1650. --------Q-1512--BH91-------------------------
  1651. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  1652.     AH = 12h
  1653.     BH = 91h
  1654. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  1655.       not pop up a "Programming Error" window, instead returning an error
  1656.       code in AL (see #0381)
  1657. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  1658. --------Q-1512--BH92-------------------------
  1659. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  1660.     AH = 12h
  1661.     BH = 92h
  1662. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  1663.       not pop up a "Programming Error" window, instead returning an error
  1664.       code in AL (see #0381)
  1665. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  1666. --------Q-1512--BH93-------------------------
  1667. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  1668.     AH = 12h
  1669.     BH = 93h
  1670. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  1671.       not pop up a "Programming Error" window, instead returning an error
  1672.       code in AL (see #0381)
  1673. SeeAlso: AH=12h/BH=13h
  1674. --------Q-1512--BH94-------------------------
  1675. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  1676.     AH = 12h
  1677.     BH = 94h
  1678. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  1679.       not pop up a "Programming Error" window, instead returning an error
  1680.       code in AL (see #0381)
  1681. SeeAlso: AH=12h/BH=14h
  1682. --------Q-1512--BH95-------------------------
  1683. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  1684.     AH = 12h
  1685.     BH = 95h
  1686. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  1687.       not pop up a "Programming Error" window, instead returning an error
  1688.       code in AL (see #0381)
  1689. SeeAlso: AH=12h/BH=15h
  1690. --------Q-1512--BH96-------------------------
  1691. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  1692.     AH = 12h
  1693.     BH = 96h
  1694. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  1695.       not pop up a "Programming Error" window, instead returning an error
  1696.       code in AL (see #0381)
  1697. SeeAlso: AH=12h/BH=16h
  1698. --------T-1513-------------------------------
  1699. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  1700.     AH = 13h
  1701.     STACK:    WORD    process ID
  1702. Return: AX = status (SYS_OK or SYS_ERROR)
  1703. SeeAlso: AH=12h"VMiX"
  1704. --------T-1513-------------------------------
  1705. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  1706.     AH = 13h
  1707. Return: BX:AX -> task control block (see #0382)
  1708. SeeAlso: AH=15h"MultiDOS"
  1709.  
  1710. Format of MultiDOS Plus v4.0 task control block:
  1711. Offset    Size    Description    (Table 0382)
  1712.  00h    DWORD    pointer to next TCB
  1713.  04h  8 BYTEs    ASCIZ task name
  1714.  0Ch  2 BYTEs    ???
  1715.  0Eh    WORD    task PSP segment
  1716.  10h    WORD    abort/suspend flags
  1717.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  1718.  14h    WORD    priority level (0000h-FFFEh)
  1719.  16h    WORD    time slice counter
  1720.  18h  2 BYTEs    ???
  1721.  1Ah    WORD    suspend timer value
  1722.  1Ch    WORD    stack segment
  1723.  1Eh    WORD    stack pointer
  1724.  20h    WORD    display type
  1725.  22h    WORD    display memory
  1726.  24h  2 BYTEs    ???
  1727.  26h    WORD    termination count
  1728.  28h    WORD    equipment flag for BIO10 driver
  1729.  2Ah    BYTE    background CRT mode
  1730.  2Bh    WORD    screen width in columns
  1731.  2Dh    WORD    screen size in bytes
  1732.  2Fh    WORD    segment of physical screen memory
  1733.  31h 16 BYTEs    eight cursor positions
  1734.  41h    WORD    current cursor shape
  1735.  43h    BYTE    active display page
  1736.  44h    WORD    CRT controller I/O port base
  1737.  46h  2 BYTEs    ???
  1738.  48h    WORD    foreground task flag
  1739.  4Ah  6 BYTEs    ???
  1740.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  1741.  52h    DWORD    old INT 22
  1742.  56h    DWORD    old INT 23
  1743.  5Ah    DWORD    old INT 24
  1744.  5Eh    WORD    top of memory for task
  1745.  60h  4 BYTEs    ???
  1746.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  1747.  66h    WORD    DTA offset
  1748.  68h  4 BYTEs    ???
  1749.  6Ch    BYTE    current ANSI.SYS attribute
  1750.  6Dh    BYTE    current ANSI.SYS column
  1751.  6Eh    BYTE    current ANSI.SYS row
  1752.  6Fh    BYTE    current ANSI.SYS display state
  1753.  70h    BYTE    maximum ANSI.SYS columns
  1754.  71h    BYTE    current ANSI.SYS page
  1755.  72h    WORD    saved ANSI.SYS cursor position
  1756.  74h    BYTE    ANSI.SYS parameter buffer index
  1757.  75h    BYTE    current ANSI.SYS screen mode
  1758.  76h    BYTE    ANSI.SYS wrap flag
  1759.  77h  6 BYTEs    ANSI.SYS parameter buffer
  1760.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  1761.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  1762.  85h  3 BYTEs    ???
  1763.  88h 16 BYTEs    request header for DOS driver calls
  1764.  98h 14 BYTEs    ???
  1765.  A6h    WORD    segment of EMS map if EMS task
  1766.  A8h    WORD    flag: task makes EMS calls
  1767.  AAh    WORD    EMS handle for task
  1768.  ACh    WORD    keyboard shift state
  1769.  AEh 12 BYTEs    ???
  1770.  BAh    WORD    TCB of parent if child task
  1771.  BCh    WORD    termination code
  1772.  BEh    WORD    COM port number
  1773.  C0h  4 BYTEs    ???
  1774.  C4h    WORD    current IRQ number
  1775.  C6h  2 BYTEs    ???
  1776.  C8h    WORD    miscellaneous flag word
  1777.  CAh  2 BYTEs    ???
  1778.  CCh    DWORD    old INT 10
  1779.  D0h    WORD    EMS alternate map set number
  1780.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  1781. --------T-1514-------------------------------
  1782. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  1783.     AH = 14h
  1784.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  1785.         WORD    bottom right corner of window (high = row, low = col)
  1786. Return: AX = status (SYS_OK)
  1787. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  1788. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  1789. --------T-1514-------------------------------
  1790. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  1791.     AH = 14h
  1792. Return: AX = current state
  1793.         0000h MultiDOS Plus command prompt is background task
  1794.         0001h command prompt is foreground task
  1795. SeeAlso: AH=0Bh"MultiDOS"
  1796. --------T-1515-------------------------------
  1797. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  1798.     AH = 15h
  1799.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  1800. Return: AX = status (SYS_OK)
  1801. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  1802. --------T-1515-------------------------------
  1803. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  1804.     AH = 15h
  1805. Return: BX:AX -> system block (see #0383)
  1806. SeeAlso: AH=13h"MultiDOS"
  1807.  
  1808. Format of MultiDOS Plus 4.0 system block:
  1809. Offset    Size    Description    (Table 0383)
  1810.  00h    WORD    segment of system control block
  1811.  02h    WORD    redirection flag set by /NOREDIRECT
  1812.  04h    WORD    no-INT 10 flag set by /NO10
  1813.  06h    DWORD    old INT 10
  1814.  0Ah    DWORD    new INT 10
  1815.  0Eh    DWORD    pointer to WORD with current TCB offset (see #0382)
  1816.  12h    DWORD    pointer to WORD with idle task TCB offset
  1817.  16h    DWORD    pointer to WORD with foreground TCB offset (see #0382)
  1818.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset (see #0382)
  1819.  1Eh    WORD    Task Control Block size
  1820.  20h    WORD    number of TCBs
  1821.  22h    WORD    flag: EMS present
  1822.  24h    WORD    EMS page frame base segment
  1823.  26h    WORD    16K pages in EMS page frame
  1824.  28h    WORD    base segment for conventional memory tasks
  1825.  2Ah    WORD    conventional memory size in paragraphs
  1826.  2Ch    DWORD    pointer to list of queue pointers
  1827. --------T-1516-------------------------------
  1828. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  1829.     AH = 16h
  1830.     STACK:    DWORD    pointer to I/O Request Packet
  1831.         WORD    top left corner of window (high byte = row, low = col)
  1832.         WORD    bottom right corner of window (high = row, low = col)
  1833. Return: AX = status (SYS_OK or SYS_ERROR)
  1834. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  1835. --------T-1516-------------------------------
  1836. INT 15 - MultiDOS Plus - INITIALIZATION
  1837.     AH = 16h
  1838. Note:    used internally during initialization; any other calls will cause
  1839.       unpredictable results
  1840. --------T-1517-------------------------------
  1841. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  1842.     AH = 17h
  1843. Return: AH = foreground color
  1844.     AL = background color
  1845. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  1846. --------T-1517-------------------------------
  1847. INT 15 - MultiDOS Plus - MAP IRQ
  1848.     AH = 17h
  1849.     AL = IRQ to map (01h-0Fh)
  1850.     BX = offset of task control block (see #0382) to associate with IRQ
  1851. Return: AX = status
  1852.         0000h successful
  1853.         other invalid IRQ
  1854. Note:    the EMS map of the specified TCB is associated with the given interrupt
  1855. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  1856. --------T-1518-------------------------------
  1857. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  1858.     AH = 18h
  1859.     STACK:    WORD    new background/foreground colors
  1860.             bits 3-0: foreground
  1861.             bits 7-4: background
  1862.             bits 15-8: unused
  1863. Return: AX = color
  1864. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  1865. --------T-1518-------------------------------
  1866. INT 15 - MultiDOS Plus - UNMAP IRQ
  1867.     AH = 18h
  1868.     AL = IRQ to unmap (01h-0Fh)
  1869. Return: AX = status
  1870.         0000h successful
  1871.         0001h invalid IRQ
  1872. Note:    results are unpredictable if the IRQ has not been mapped
  1873. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  1874. --------T-1519-------------------------------
  1875. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  1876.     AH = 19h
  1877.     STACK:    WORD    new background/foreground colors
  1878.             bits 3-0: foreground
  1879.             bits 7-4: background
  1880.             bits 15-8: unused
  1881. Return: AX = color
  1882. SeeAlso: AH=18h"VMiX"
  1883. --------T-1519-------------------------------
  1884. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  1885.     AH = 19h
  1886. Return: AX destroyed
  1887. Note:    for MultiDOS internal use only
  1888. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  1889. --------T-151A-------------------------------
  1890. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  1891.     AH = 1Ah
  1892.     STACK:    WORD    interrupt number
  1893.         DWORD    pointer to register structure
  1894. Return: AX = returned flags
  1895. --------T-151A-------------------------------
  1896. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  1897.     AH = 1Ah
  1898.     DS:SI -> 8-byte name
  1899. Return: AL = status
  1900.         00h successful
  1901.         AH = semaphore number (20h-3Fh)
  1902.         04h out of string space
  1903. Notes:    all eight bytes of the name are significant
  1904.     if the name does not already exist, it is added to the name table and
  1905.       associated with a free semaphore number
  1906.     names cannot be destroyed
  1907. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  1908. --------T-151B-------------------------------
  1909. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  1910.     AH = 1Bh
  1911.     STACK:    DWORD    source address
  1912.         DWORD    destination address
  1913.         WORD    number of words to move
  1914. Return: nothing
  1915. --------T-151B-------------------------------
  1916. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  1917.     AH = 1Bh
  1918.     DS:SI -> 8-byte name
  1919. Return: AH = status
  1920.         00h successful
  1921.         02h invalid semaphore number
  1922.         03h caller already owns semaphore
  1923.         04h out of string space
  1924. Notes:    (see AH=01h"MultiDOS")
  1925.     equivalent to AH=1Ah followed by AH=01h
  1926. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  1927. --------T-151C-------------------------------
  1928. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  1929.     AH = 1Ch
  1930.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  1931.         DWORD    pointer to object bitmap
  1932.         WORD    object width in pixels
  1933.         WORD    object height in pixels
  1934. Return: nothing
  1935. SeeAlso: AH=1Dh"VMiX"
  1936. --------T-151C-------------------------------
  1937. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  1938.     AH = 1Ch
  1939.     DS:SI -> 8-byte name
  1940. Return: AH = status
  1941.         00h successful
  1942.         01h not semaphore owner
  1943.         02h invalid semaphore number
  1944.         04h out of string space
  1945. Notes:    (see AH=02h"MultiDOS")
  1946.     equivalent to AH=1Ah followed by AH=02h
  1947. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  1948. --------T-151D-------------------------------
  1949. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  1950.     AH = 1Dh
  1951. Return: AX = current font number (00h-03h)
  1952. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  1953. --------T-151D-------------------------------
  1954. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  1955.     AH = 1Dh
  1956.     DS:SI -> 8-byte name
  1957. Return: AH = status
  1958.         00h semaphore not in use
  1959.         01h semaphore owned by another task
  1960.         02h invalid semaphore number
  1961.         03h caller owns semaphore
  1962.         04h out of string space
  1963. Notes:    (see AH=10h"MultiDOS")
  1964.     equivalent to AH=1Ah followed by AH=10h
  1965. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  1966. --------T-151E-------------------------------
  1967. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  1968.     AH = 1Eh
  1969.     STACK: WORD new font number (00h-03h)
  1970. Return: AX = current font number (00h-03h)
  1971. SeeAlso: AH=1Dh"VMiX"
  1972. --------T-151E00-----------------------------
  1973. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  1974.     AX = 1E00h
  1975.     DX = event/trigger number (00h-3Fh)
  1976. Return: AH = status
  1977.         00h successful
  1978. SeeAlso: AX=1E01h,AX=1E02h
  1979. --------T-151E01-----------------------------
  1980. INT 15 - MultiDOS Plus - TRIGGER EVENT
  1981.     AX = 1E01h
  1982.     DX = event/trigger number (00h-3Fh)
  1983. Return: AH = status
  1984.         00h successful
  1985.         01h invalid event/trigger number
  1986. Notes:    schedules any task waiting for event; if no task is waiting, the event
  1987.       counter is incremented (and will roll over if it was 65535)
  1988.     may be invoked by interrupt handler
  1989. SeeAlso: AX=1E00h,AX=1E02h
  1990. --------T-151E02-----------------------------
  1991. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  1992.     AX = 1E02h
  1993.     DX = event/trigger number (00h-3Fh)
  1994. Return: AH = status
  1995.         00h successful
  1996.         01h invalid event/trigger number
  1997. Note:    if the event counter is zero, the task is suspended until the event is
  1998.       triggered with AX=1E01h; else, the counter is decremented and the
  1999.       call returns immediately
  2000. SeeAlso: AX=1E00h,AX=1E01h
  2001. --------T-151E08-----------------------------
  2002. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  2003.     AX = 1E08h
  2004.     DX:BX -> context save handler (see #0384)
  2005.     DX:CX -> context restore handler (see #0384)
  2006. Return: nothing
  2007. Note:    handlers may be removed by setting addresses to 0000h:0000h
  2008.  
  2009. (Table 0384)
  2010. Values MultiDOS Plus context-switch handlers are called with:
  2011.     ES:BX -> task's TCB
  2012. Return: all registers preserved
  2013. --------T-151F-------------------------------
  2014. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  2015.     AH = 1Fh
  2016.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  2017.         WORD    bottom right corner of window
  2018. Return: AX = status (SYS_OK)
  2019. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  2020. --------T-151F-------------------------------
  2021. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  2022.     AH = 1Fh
  2023. Return: BX = first segment of conventional memory
  2024.     DX = first segment of EMS swap frame into which MultiDOS will load
  2025.         programs
  2026. --------T-1520-------------------------------
  2027. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  2028.     AH = 20h
  2029. Return: AX = current state
  2030.         0000h multitasking enabled
  2031.         other TCB of task that disabled multitasking
  2032. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  2033. --------c-152000-----------------------------
  2034. INT 15 U - DOS 3.0+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  2035.     AX = 2000h
  2036. Return: nothing
  2037. Desc:    stop setting user flag on entry to PRINT critical region
  2038. Note:    also supported by PC Network v1.00 RECEIVER.COM
  2039. SeeAlso: AX=2001h
  2040. --------c-152001-----------------------------
  2041. INT 15 U - DOS 3.0+ PRINT.COM - SET CRITICAL REGION FLAG
  2042.     AX = 2001h
  2043.     ES:BX -> byte which is to be incremented while in a DOS call
  2044. Return: nothing
  2045. Desc:    specify a user flag which PRINT should set to let an interested
  2046.       application know it is in a critical region
  2047. Note:    also supported by PC Network v1.00 RECEIVER.COM
  2048. SeeAlso: AX=2000h
  2049. --------O-152010-----------------------------
  2050. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  2051.     AX = 2010h
  2052.     ???
  2053. Return: ???
  2054. SeeAlso: AX=2011h
  2055. --------O-152011-----------------------------
  2056. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  2057.     AX = 2011h
  2058.     ???
  2059. Return: ???
  2060. SeeAlso: AX=2010h
  2061. --------B-1521-------------------------------
  2062. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  2063.     AH = 21h
  2064.     AL = subfunction
  2065.         00h read POST log
  2066.         01h write POST log
  2067.         BH = device ID
  2068.         BL = error code
  2069. Return: CF clear if successful
  2070.     CF set on error
  2071.     AH = status
  2072.         00h OK
  2073.         01h list full
  2074.         02h unsupported subfunction
  2075.         80h invalid command
  2076.         86h unsupported function
  2077.     if function 00h:
  2078.        BX = number of error codes stored
  2079.        ES:DI -> error log
  2080. Notes:    the log is a series of words, the first byte of which identifies the
  2081.       error code and the second the device.
  2082.     supported by AMI PCI BIOS
  2083.     IBM considers this a required BIOS function
  2084.     if the device ID is FFh, the "error code" is the actual device number
  2085.       minus 255 (thus these devices have no specific error codes)
  2086. SeeAlso: AH=23h"SYSTEM",AH=24h"SYSTEM"
  2087. --------B-1522-------------------------------
  2088. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  2089.     AH = 22h
  2090. Return: CF set on error
  2091.         AH = status (86h if function not supported)
  2092.     CF clear on success
  2093.         AH = 00h
  2094.         ES:BX -> ROM BASIC
  2095. Notes:    if this function is not supported, ROM BASIC is at F600h:0000h
  2096.     IBM classifies this function as optional
  2097. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  2098. --------B-152300-----------------------------
  2099. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ??? CMOS DATA
  2100.     AX = 2300h
  2101. Return: CF clear if successful
  2102.         CL = value of CMOS location 2Dh
  2103.         CH = value of CMOS location 2Eh
  2104.     CF set on error
  2105.         AH = error code (80h,86h)
  2106. Note:    IBM classifies this function as optional
  2107. SeeAlso: AX=2301h,AX=2304h,AX=2305h
  2108. --------B-152301-----------------------------
  2109. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SET ??? CMOS DATA
  2110.     AX = 2301h
  2111.     CL = new value for CMOS location 2Dh
  2112.     CH = new value for CMOS location 2Eh
  2113. Return: CF clear if successful
  2114.     CF set on error
  2115.         AH = error code (80h,86h)
  2116. Notes:    sets the contents of CMOS locations 2Dh and 2Eh
  2117.     IBM classifies this function as optional
  2118. SeeAlso: AX=2300h,AX=2304h,AX=2305h
  2119. --------B-152302-----------------------------
  2120. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ROM STARTUP VIDEO REG TABLES
  2121.     AX = 2302h
  2122.     BL = data index (00h-0Dh) (see #0385)
  2123. Return: ES:BX -> table for register (see #0386,#0387)
  2124.     CX = size of table in bytes (may be 0000h)
  2125. Note:    IBM classifies this function as optional
  2126. SeeAlso: AX=2300h,AX=2301h,AX=2303h
  2127.  
  2128. (Table 0385)
  2129. Values for PS/1 ROM startup video register tables:
  2130.  00h    DAC registers
  2131.  01h    ???
  2132.  02h    Palette registers
  2133.  03h-0Dh ???
  2134.  
  2135. Format of PS/1 ROM startup DAC register table:
  2136. Offset    Size    Description    (Table 0386)
  2137.  00h    WORD    number of DAC registers in table
  2138.  02h    var    array of 3-byte DAC register values, starting at register 00h
  2139. SeeAlso: #0385
  2140.  
  2141. Format of PS/1 ROM startup Palette register table:
  2142. Offset    Size    Description    (Table 0387)
  2143.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  2144.  10h    BYTE    border color
  2145. SeeAlso: #0385,#0017
  2146. --------B-152303-----------------------------
  2147. INT 15 U - IBM BIOS - SMART ENERGY SYSTEM - ???
  2148.     AX = 2303h
  2149.     BX = ??? ('x')
  2150.     DX = 'y' and 'z'
  2151.         bits 15-7 = 'y'
  2152.         bits 6-3 unused
  2153.         bits 2-0 = 'z'
  2154.     DI = ??? (0352h)
  2155. Return: ???
  2156. Notes:    performs graphics functions, writes to segment A000h and VGA I/O ports
  2157.     IBM classifies this function as optional
  2158. --------B-152304-----------------------------
  2159. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SYSTEM SETUP
  2160.     AX = 2304h
  2161.     DX = segment of 32K buffer
  2162. Return: CF clear if successful
  2163.         AX = 0003h (left over from setting video mode 3)
  2164.         BX,CX,DX,BP,DS,ES destroyed
  2165.     CF set on error
  2166.         AH = error code (80h,86h)
  2167. Desc:    run system setup utility, and optionally save any changed settings to
  2168.       CMOS RAM
  2169. Note:    IBM classifies this function as optional
  2170. SeeAlso: AX=2301h,AX=2305h
  2171. --------B-152305-----------------------------
  2172. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET PROCESSOR SPEED
  2173.     AX = 2305h
  2174. Return: CF clear if successful
  2175.         AL = processor speed in MHz
  2176.     CF set on error
  2177.         AL = FFh (speed unknown or >80 MHz)
  2178.         AL = error code (80h,86h = unsupported function)
  2179. Note:    IBM classifies this function as optional
  2180. SeeAlso: AX=2301h,AX=2304h,AH=BCh
  2181. --------b-152400-----------------------------
  2182. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  2183.     AX = 2400h
  2184. Return: CF clear if successful
  2185.         AH = 00h
  2186.     CF set on error
  2187.         AH = status
  2188.         01h keyboard controller is in secure mode
  2189.         86h function not supported
  2190. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  2191.     IBM classifies this function as optional
  2192. BUG:    AMI BIOS v1.00.03.AV0M never reports an error on failure to disable
  2193.       the A20 gate; it simply writes 0 to PORT 0092h
  2194. SeeAlso: AX=2401h,AX=2402h,AX=2403h,PORT 0092h
  2195. --------b-152401-----------------------------
  2196. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  2197.     AX = 2401h
  2198. Return: CF clear if successful
  2199.         AH = 00h
  2200.     CF set on error
  2201.         AH = status
  2202.         01h keyboard controller is in secure mode
  2203.         86h function not supported
  2204. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  2205.     IBM classifies this function as optional
  2206. SeeAlso: AX=2400h,AX=2402h,PORT 0092h
  2207. --------b-152402-----------------------------
  2208. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  2209.     AX = 2402h
  2210. Return: CF clear if successful
  2211.         AH = 00h
  2212.         AL = current state (00h disabled, 01h enabled)
  2213.         CX = ??? (set to 0000h-000Bh or FFFFh by AMI BIOS v1.00.03.AV0M)
  2214.         FFFFh if keyboard controller does not become ready within C000h
  2215.              read attempts
  2216.     CF set on error
  2217.         AH = status
  2218.         01h keyboard controller is in secure mode
  2219.         86h function not supported
  2220. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  2221.     IBM classifies this function as optional
  2222. SeeAlso: AX=2400h,AX=2401h
  2223. --------b-152403-----------------------------
  2224. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  2225.     AX = 2403h
  2226. Return: CF clear if successful
  2227.         AH = 00h
  2228.         BX = status of A20 gate support (see #0388)
  2229.     CF set on error
  2230.         AH = status
  2231.         01h keyboard controller is in secure mode
  2232.         86h function not supported
  2233. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  2234.     IBM classifies this function as optional
  2235. BUG:    at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
  2236.       version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
  2237.       thus causing a random branch on any value of AL greater than 3.
  2238. SeeAlso: AX=2402h
  2239.  
  2240. Bitfields for A20 gate support status:
  2241. Bit(s)    Description    (Table 0388)
  2242.  0    supported on keyboard controller
  2243.  1    supported with bit 1 of I/O port 92h
  2244.  14-2    reserved
  2245.  15    additional data is available (location not yet defined)
  2246. --------T-153000-----------------------------
  2247. INT 15 - Object Kernel for DOS - INSTALLATION CHECK
  2248.     AX = 3000h
  2249. Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
  2250.         CX = resident segment
  2251. Program: the Object Kernel is a program by M.W. Pieters which is currently
  2252.       under development
  2253. Note:    Central Point's CPBACKUP v9 calls INT 15/AX=3000h at startup, but it
  2254.       may be checking for a different program's presence
  2255. SeeAlso: AX=3001h,AX=3008h
  2256. --------T-153001-----------------------------
  2257. INT 15 - Object Kernel for DOS - GET STATUS BLOCK
  2258.     AX = 3001h
  2259. Return: AX = FFFFh
  2260.     ES:DI -> status block
  2261. SeeAlso: AX=3000h,AX=3008h
  2262. --------T-153002-----------------------------
  2263. INT 15 - Object Kernel for DOS - KILL PROCESS
  2264.     AX = 3002h
  2265.     (not yet implemented)
  2266. SeeAlso: AX=3000h
  2267. --------T-153003-----------------------------
  2268. INT 15 - Object Kernel for DOS - STOP PROCESS
  2269.     AX = 3003h
  2270.     (not yet implemented)
  2271. SeeAlso: AX=3000h
  2272. --------T-153004-----------------------------
  2273. INT 15 - Object Kernel for DOS - START PROCESS
  2274.     AX = 3004h
  2275.     (not yet implemented)
  2276. SeeAlso: AX=3000h
  2277. --------T-153005-----------------------------
  2278. INT 15 - Object Kernel for DOS - RESTART PROCESS
  2279.     AX = 3005h
  2280.     (not yet implemented)
  2281. SeeAlso: AX=3000h
  2282. --------T-153006-----------------------------
  2283. INT 15 - Object Kernel for DOS - EXECUTE PROCESS
  2284.     AX = 3006h
  2285.     (not yet implemented)
  2286. SeeAlso: AX=3000h
  2287. --------T-153007-----------------------------
  2288. INT 15 - Object Kernel for DOS - LIST PROCESSES
  2289.     AX = 3007h
  2290.     (not yet implemented)
  2291. SeeAlso: AX=3000h
  2292. --------T-153008-----------------------------
  2293. INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
  2294.     AX = 3008h
  2295.     BH = new state (00h disabled, 01h enabled)
  2296. Return: AX = FFFFh
  2297. SeeAlso: AX=3000h,AX=3009h
  2298. --------T-153009-----------------------------
  2299. INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
  2300.     AX = 3009h to 30FFh
  2301. SeeAlso: AX=3000h
  2302. Program: the Object Kernel is a program by M.W. Pieters which is currently
  2303.       under development
  2304. ----------153D-------------------------------
  2305. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  2306.     AH = 3Dh
  2307. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  2308. ----------153E-------------------------------
  2309. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  2310.     AH = 3Eh
  2311. SeeAlso: AH=3Dh"IBM",AH=3Fh"IBM"
  2312. ----------153F-------------------------------
  2313. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  2314.     AH = 3Fh
  2315. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  2316. --------B-1540-------------------------------
  2317. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  2318.     AH = 40h
  2319.     AL = subfunction
  2320.         00h get system profile in CX and BX
  2321.         01h set system profile from CX and BX
  2322.         02h get internal modem profile in BX
  2323.         03h set internal modem profile from BX
  2324. Return: CF clear if successful
  2325.         AH = 00h
  2326.     CF set on error
  2327.         AH = status (80h = profile execution failed)
  2328. --------V-154000-----------------------------
  2329. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  2330.     AX = 4000h
  2331. Return: AX = 4000h
  2332.     CL = timeout in minutes, 00h if disabled
  2333. SeeAlso: AX=4001h,AX=4600h
  2334. --------V-154001-----------------------------
  2335. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  2336.     AX = 4001h
  2337.     CL = timeout in minutes, 00h to disable
  2338. Return: AL = status
  2339.         00h timeout modified
  2340.         01h timeout cannot be modified
  2341.         40h timeout cannot be modified
  2342.     CL = timeout in minutes, 00h if disabled
  2343. SeeAlso: AX=4000h,AX=4601h
  2344. --------B-1541-------------------------------
  2345. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  2346.     AH = 41h
  2347.     AL = condition type (see #0389)
  2348.     BH = condition compare or mask value
  2349.     BL = timeout value times 55 milliseconds
  2350.         00h means no timeout
  2351.     DX = I/O port address if AL bit 4 set
  2352.     ES:DI -> user byte if AL bit 4 clear
  2353. Return: after event or timeout occurs
  2354. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  2355.       this function is supported
  2356. SeeAlso: AH=83h,AH=86h,AH=C0h
  2357.  
  2358. Bitfields for external event wait condition type:
  2359. Bit(s)    Description    (Table 0389)
  2360.  0-2    condition to wait for
  2361.     0 any external event
  2362.     1 compare and return if equal
  2363.     2 compare and return if not equal
  2364.     3 test and return if not zero
  2365.     4 test and return if zero
  2366.  3    reserved
  2367.  4    1=port address, 0=user byte
  2368.  5-7    reserved
  2369. --------B-1542-------------------------------
  2370. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  2371.     AH = 42h
  2372.     AL = suspend type
  2373.         00h to use system profile
  2374.         01h to force suspend regardless of system profile
  2375. Return: nothing
  2376. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  2377.       power-up, execution will resume following the instruction calling
  2378.       this function
  2379. SeeAlso: AH=44h
  2380. --------b-154280-----------------------------
  2381. INT 15 - Compaq SLT/286 - ENTER STANDBY
  2382.     AX = 4280h
  2383. Return: AH = 42h
  2384.     CF clear if successful
  2385.     CF set if unable to enter standby
  2386. SeeAlso: AX=4600h,AX=5307h/CX=0001h"STAND-BY"
  2387. --------B-1543-------------------------------
  2388. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  2389.     AH = 43h
  2390. Return: AL = status bits (see #0390)
  2391.  
  2392. Bitfields for Convertible system status:
  2393. Bit(s)    Description    (Table 0390)
  2394.  7    power low
  2395.  6    external power in use
  2396.  5    standby power lost
  2397.  4    power activated by alarm
  2398.  3    internal modem powered on
  2399.  2    RS232/parallel adapter powered on
  2400.  1    reserved
  2401.  0    LCD detached
  2402. --------B-1544-------------------------------
  2403. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  2404.     AH = 44h
  2405.     AL = new modem power state (00h power off, 01h power on)
  2406. Return: nothing
  2407. SeeAlso: AH=42h
  2408. --------b-1544C0-----------------------------
  2409. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  2410.     AX = 44C0h
  2411.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  2412.     ES:SI -> ??? buffer
  2413. Return: ES:DI -> old DSP procedure
  2414.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  2415.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  2416. Note:    this function is also supported by XBIOS.COM
  2417. SeeAlso: AX=44C9h
  2418. --------b-1544C1-----------------------------
  2419. INT 15 - Olivetti Quaderno - ???
  2420.     AX = 44C1h
  2421.     ???
  2422. Return: ???
  2423. Note:    this function is also supported by XBIOS.COM
  2424. SeeAlso: AX=44C9h
  2425. --------b-1544C2-----------------------------
  2426. INT 15 - Olivetti Quaderno - ???
  2427.     AX = 44C2h
  2428.     DL = byte to be written to I/O port 350h
  2429. Note:    this function is also supported by XBIOS.COM
  2430. SeeAlso: AX=44C3h,AX=44C9h
  2431. --------b-1544C3-----------------------------
  2432. INT 15 - Olivetti Quaderno - GET ???
  2433.     AX = 44C3h
  2434. Return: DH = bitfields (see #0391)
  2435.     DL = value read from I/O port 350h
  2436. Note:    this function is also supported by XBIOS.COM
  2437. SeeAlso: AX=44C2h,AX=44C9h
  2438.  
  2439. Bitfields for Olivetti Quaderno ???:
  2440. Bit(s)    Description    (Table 0391)
  2441.  5-7    5-7 read from I/O port 351h
  2442.  2-4    zero
  2443.  1-0    "tres complique"
  2444. --------b-1544C4-----------------------------
  2445. INT 15 - Olivetti Quaderno - ???
  2446.     AX = 44C4h and 44C5h
  2447.     ???
  2448. Return: ???
  2449. Note:    this function is also supported by XBIOS.COM
  2450. SeeAlso: AX=44C9h
  2451. --------b-1544C6-----------------------------
  2452. INT 15 - Olivetti Quaderno - READ LCD
  2453.     AX = 44C6h
  2454. Return: DX = FFFFh clock is displayed on LCD display
  2455.     DX = other: hex number displayed in first four positions of display
  2456.     BH = left alphanumeric character on display (see #0392)
  2457.     BL = right alphanumeric character on display (see #0392)
  2458.     CL = colon flags (see #0393)
  2459. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  2460.       is an alphanumeric character
  2461.     this function is also supported by XBIOS.COM
  2462. SeeAlso: AX=44C7h,AX=44C9h
  2463.  
  2464. (Table 0392)
  2465. Values for Olivetti Quaderno LCD alphanumeric characters:
  2466.  00h-0Fh hex digit
  2467.  2Bh    "+"
  2468.  2Dh    "-"
  2469.  30h-39h "0" to "9"
  2470.  41h-5Ah "A" to "Z"
  2471.  61h-6Ah "a" to "z"
  2472.  else    blank
  2473.  
  2474. Bitfields for Olivetti Quaderno LCD colon flags:
  2475. Bit(s)    Description    (Table 0393)
  2476.  0    left colon on
  2477.  1    right colon on
  2478.  2-7    unused
  2479. --------b-1544C7-----------------------------
  2480. INT 15 - Olivetti Quaderno - WRITE LCD
  2481.     AX = 44C7h
  2482.     DX = hex display
  2483.         FFFFh display clock and "HI", "Md", or "Lo"
  2484.         BH,BL,CL unused
  2485.         other: display specified hex number in first four positions
  2486.         BH = left alphanumeric character on display (see #0392)
  2487.         BL = right alphanumeric character on display (see #0392)
  2488.         CL = colon flags (see #0393)
  2489. Return: nothing
  2490. Note:    this function is also supported by XBIOS.COM
  2491. SeeAlso: AX=44C6h
  2492. --------b-1544C8-----------------------------
  2493. INT 15 - Olivetti Quaderno - ???
  2494.     AX = 44C8h
  2495.     CL = ??? (00h,02h,21h)
  2496.     CH = ???
  2497.     ???
  2498. Return: ???
  2499. Note:    this function is also supported by XBIOS.COM
  2500. SeeAlso: AX=44C9h
  2501. --------b-1544C9-----------------------------
  2502. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  2503.     AX = 44C9h
  2504. Return: AL = major version
  2505.     AH = minor version
  2506. Note:    this function is also supported by XBIOS.COM
  2507. --------B-1544F1-----------------------------
  2508. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  2509.     AX = 44F1h
  2510.     DS:DX -> byte with 00h ???
  2511. Return: ???
  2512. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  2513.       between USER and SUPERVISOR security level
  2514. SeeAlso: AX=44F2h,AX=44F3h
  2515. --------B-1544F2BX0604-----------------------
  2516. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  2517.     AX = 44F2h
  2518.     BX = 0604h ???
  2519. Return: CF = ???
  2520.     AH = ???
  2521.     DX = ???
  2522. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  2523.       between USER and SUPERVISOR security level
  2524. SeeAlso: AX=44F1h,AX=44F3h
  2525. --------B-1544F3-----------------------------
  2526. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  2527.     AX = 44F3h
  2528.     DS:DX -> byte with 00h or 01h ???
  2529. Return: DS:DX -> changed ???
  2530. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  2531.       between USER and SUPERVISOR security level
  2532. SeeAlso: AX=44F1h,AX=44F2h
  2533. --------b-1545-------------------------------
  2534. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTROL STATUS
  2535.     AH = 45h
  2536.     AL = new display control status
  2537.         bit 0: DISPCTL flag +C instead of -C
  2538.         bit 1: DISPCTL flag +K instead of -K
  2539. SeeAlso: AH=46h"HP",AH=47h"HP"
  2540. --------b-1546-------------------------------
  2541. INT 15 U - HP 100LX/200LX - SET POWER OFF TIMEOUT
  2542.     AH = 46h
  2543.     BX = timeout value in ticks
  2544.         0000h inhibit auto power off
  2545. Note:    the 200LX default timeout is 0CCDh = 3277 ticks = approx. 3 min.
  2546. SeeAlso: AH=45h"HP",AH=47h"HP"
  2547. --------b-154600-----------------------------
  2548. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  2549.     AX = 4600h
  2550. Return: AH = modem configuration information (see #0394)
  2551.     AL = power conservation status information (see #0395)
  2552.     BH = default system inactivity timeout (1-21 minutes)
  2553.     BL = current system inactivity timeout (1-21 minutes)
  2554.     CH = default video display inactivity timeout (1-63 minutes)
  2555.     CL = current video display inactivity timeout (1-63 minutes)
  2556.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  2557.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  2558. SeeAlso: AX=4280h,AX=4601h,INT 77
  2559.  
  2560. Bitfields for Compaq SLT/286 modem configuration information:
  2561. Bit(s)    Description    (Table 0394)
  2562.  0    powerup state (0 off, 1 on)
  2563.  1    modem installed
  2564.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  2565.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  2566.  4    modem state (0 not assigned, 1 assigned)
  2567.  5    modem is on
  2568.  
  2569. Bitfields for Compaq SLT/286 power conservation status:
  2570. Bit(s)    Description    (Table 0395)
  2571.  0    power source (0 internal, 1 external)
  2572.  1-2    low battery state
  2573.     00 no low battery condition
  2574.     01 low battery 1
  2575.     10 reserved
  2576.     11 low battery 2
  2577.  3-4    power conservation mode
  2578.     00 automatic, 01 on, 10 off, 11 reserved
  2579. --------b-154601-----------------------------
  2580. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  2581.     AX = 4601h
  2582.     BL = system inactivity timeout (1-21 minutes)
  2583.         FFh do not change
  2584.     CL = video display inactivity timeout (1-63 minutes)
  2585.         FFh do not change
  2586.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  2587.         FFh do not change
  2588.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  2589. Return: CF clear if successful
  2590.         AH = 00h
  2591.         BL = current system inactivity timeout (1-21 minutes)
  2592.         CL = current video display inactivity timeout (1-63 minutes)
  2593.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  2594.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  2595.     CF set on error
  2596.         AH = error code
  2597.         01h input is out of range
  2598.         02h no modem present
  2599. SeeAlso: AX=4600h,INT 77
  2600. --------b-154604-----------------------------
  2601. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  2602.     AX = 4604h
  2603. Return: CF clear if successful
  2604.         AL = byte read from I/O port 03F8h
  2605.     CF set on error (not supported)
  2606.         AH = 86h (unsupported function)
  2607. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  2608. --------b-154605-----------------------------
  2609. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  2610.     AX = 4605h
  2611. Return: CF clear if successful
  2612.     CF set on error (not supported)
  2613.         AH = 86h (unsupported function)
  2614. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  2615.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  2616.       LTE Lite 386 ROM
  2617. --------b-1547-------------------------------
  2618. INT 15 U - HP 100LX/200LX - GET/SET DISPLAY CONTRAST
  2619.     AH = 47h
  2620.     AL = subfunction
  2621.        00h set contrast
  2622.         BL = new contrast
  2623.             (00h-0Fh, 0Fh is darkest, 10h-FFh are same as 0Fh)
  2624.        other get current contrast
  2625. Return: AL = contrast (00h-0Fh, 0Fh is darkest)
  2626. Note:    may be for backward compatibility with HP95LX, as INT 15/AH=62h does
  2627.       substantially the same thing as this function
  2628. SeeAlso: AH=45h"HP",AH=48h"HP",AH=62h"HP"
  2629. --------b-1548-------------------------------
  2630. INT 15 U - HP 100LX/200LX - SET BUZZER VOLUME
  2631.     AH = 48h
  2632.     AL = volume (00h-03h; 03h is loudest, 04h-FFh are same as 03h)
  2633. SeeAlso: AH=47h"HP"
  2634. --------S-1549-------------------------------
  2635. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE SELECT
  2636.     AH = 49h
  2637.     AL = serial interface
  2638.         00h wired (COM1)
  2639.         01h infrared
  2640. Note:    interface should only be changed in deactivated state (see AH=4Ah)
  2641. SeeAlso: AH=4Ah"HP"
  2642. --------J-154900-----------------------------
  2643. INT 15 - Far East MS-DOS - GET BIOS TYPE
  2644.     AX = 4900h
  2645. Return: CF clear if successful
  2646.         AH = 00h
  2647.         BL = BIOS mode
  2648.         00h DOS/V
  2649.         01h standard DBCS DOS (hardware DBCS support)
  2650.     CF set on error
  2651.         AH = 86h (function not supported)
  2652. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  2653. SeeAlso: AH=50h,INT 21/AH=30h
  2654. --------S-154A-------------------------------
  2655. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE CONTROL
  2656.     AH = 4Ah
  2657.     AL = control
  2658.         00h deactivate
  2659.         01h activate
  2660. Note:    interface selected with AH=49h will be (de)activated
  2661. SeeAlso: AH=49h"HP",AH=4Bh"HP"
  2662. --------b-154B-------------------------------
  2663. INT 15 U - HP 100LX/200LX - ADJUST SYSTEM TIME
  2664.     AH = 4Bh
  2665. Desc:    adjust system time based on real-time clock
  2666. SeeAlso: AH=4Ah"HP",INT 1A/AH=02h,INT 21/AH=2Ch
  2667. --------b-154DD4-----------------------------
  2668. INT 15 - HP 95LX/100LX/200LX - INSTALLATION CHECK
  2669.     AX = 4DD4h
  2670. Return: BX = 4850h ("HP") if HP 95LX/100LX/200LX
  2671.         CX = model
  2672.         0101h HP 95LX
  2673.         0102h HP 100LX/200LX
  2674.         DH = ???
  2675.         02h HP 200LX 2MB BIOS 1.01 A D german
  2676.         DL = ???
  2677.         00h HP 95LX
  2678.         01h HP 200LX 2MB BIOS 1.01 A D german
  2679. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  2680. SeeAlso: INT 61"HP 95LX"
  2681. --------b-154E-------------------------------
  2682. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  2683.     AH = 4Eh
  2684.     AL = light sleep
  2685.         00h disabled
  2686.         01h enabled
  2687. Note:    when light sleep is disabled, the system will continue running at full
  2688.       speed; when enabled, it may automatically slow to conserve batteries
  2689. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  2690. ----------154E-------------------------------
  2691. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  2692.     AH = 4Eh
  2693. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  2694. --------B-154F-------------------------------
  2695. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  2696.     AH = 4Fh
  2697.     AL = hardware scan code (see #0005)
  2698.     CF set
  2699. Return: CF set to continue processing scan code
  2700.        AL = possibly-altered hardware scan code (see #0005)
  2701.     CF clear
  2702.        scan code should be ignored
  2703. Notes:    called by INT 09 handler to translate scan codes; the INT 09 code does
  2704.       not examine the scan code it reads from the keyboard until after
  2705.       this function returns.  This permits software to rearrange the
  2706.       keyboard; for example, swapping the CapsLock and Control keys, or
  2707.       turning the right Shift key into Enter.
  2708.     DOS 6 KEYB.COM will not pass through this function if Ctrl-Alt-Del is
  2709.       pressed and a SmartDrive v4-compatible cache is installed which has
  2710.       dirty cache buffers; some other disk caches such as HyperDisk
  2711.       operate similarly in order to prevent loss of cached data which has
  2712.       not yet been written to disk
  2713.     IBM classifies this function as required
  2714. SeeAlso: INT 09,INT 15/AH=C0h
  2715. --------J-1550-------------------------------
  2716. INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
  2717.     AH = 50h
  2718.     AL = which function address to retrieve
  2719.         00h "read font" function
  2720.         01h "write font" function
  2721.     BL = 00h
  2722.     BH = character size (00h single-byte, 01h double-byte)
  2723.     DH = width of character cell
  2724.     DL = height of character cell
  2725.     BP = code page (see #0396)
  2726. Return: CF clear if successful
  2727.         AH = 00h
  2728.         ES:BX -> requested function's address
  2729.     CF set on error
  2730.         AH = error code (see #0397)
  2731. SeeAlso: AH=49h
  2732.  
  2733. (Table 0396)
  2734. Values for DOS/V code page:
  2735.  0    default
  2736.  437    US English
  2737.  932    Japanese
  2738.  934    Korea
  2739.  936    China
  2740.  938    Taiwan
  2741. SeeAlso: #1446
  2742.  
  2743. (Table 0397)
  2744. Values for DOS/V error code:
  2745.  01h    invalid font type in BH
  2746.  02h    BL not zero
  2747.  03h    invalid font size
  2748.  04h    invalid code page
  2749.  80h    unsupported function (PC)
  2750.  86h    unsupported function (XT)
  2751. SeeAlso: #1366
  2752. --------T-1550-------------------------------
  2753. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  2754.     AH = 50h
  2755.     BX = segment of page directory table
  2756.     CX = page number of page table
  2757. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  2758. --------T-1551-------------------------------
  2759. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  2760.     AH = 51h
  2761.     STACK:    DWORD    selector:offset of function
  2762. Return: registers as returned by function
  2763. Note:    executes function with privilege level 0 (highest privilege)
  2764. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  2765. --------B-155101-----------------------------
  2766. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  2767.     AX = 5101h
  2768. Return: CF set if successful
  2769.         AH = 00h
  2770.         AL = current configuration number
  2771.         00h system unit only
  2772.         FFh configuration not recognized
  2773.         BX = status flag
  2774.         bits 0-14: reserved
  2775.         bit 15: additional data is available (location TBD)
  2776.     CF clear on error
  2777.         AH = status
  2778.         01h expansion unit is not present
  2779.         86h function not supported
  2780. Note:    CF convention is the reverse of the standard convention for this
  2781.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  2782. --------T-1552-------------------------------
  2783. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  2784.     AH = 52h
  2785. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  2786. --------d-1552-------------------------------
  2787. INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
  2788.     AH = 52h
  2789.     DL = drive number
  2790. Return: CF clear if OK to eject media
  2791.         AH = 00h
  2792.     CF set if ejection disallowed
  2793.         AH = error code (B1h,B3h) (see #0166)
  2794. Note:    called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection
  2795.       request is made
  2796. SeeAlso: INT 13/AH=46h"INT 13 Extensions"
  2797. --------p-155300-----------------------------
  2798. INT 15 - Advanced Power Management v1.0+ - INSTALLATION CHECK
  2799.     AX = 5300h
  2800.     BX = device ID of system BIOS (0000h)
  2801. Return: CF clear if successful
  2802.         AH = major version (BCD)
  2803.         AL = minor version (BCD)
  2804.         BX = 504Dh ("PM")
  2805.         CX = flags (see #0398)
  2806.     CF set on error
  2807.         AH = error code (06h,09h,86h) (see #0399)
  2808. BUG:    early versions of the Award Modular BIOS with built-in APM support
  2809.       reportedly do not set BX on return
  2810.  
  2811. Bitfields for APM flags:
  2812. Bit(s)    Description    (Table 0398)
  2813.  0    16-bit protected mode interface supported
  2814.  1    32-bit protected mode interface supported
  2815.  2    CPU idle call reduces processor speed
  2816.  3    BIOS power management disabled
  2817.  4    BIOS power management disengaged (APM v1.1)
  2818.  5-7    reserved
  2819.  
  2820. (Table 0399)
  2821. Values for APM error code:
  2822.  01h    power management functionality disabled
  2823.  02h    interface connection already in effect
  2824.  03h    interface not connected
  2825.  04h    real-mode interface not connected
  2826.  05h    16-bit protected-mode interface already connected
  2827.  06h    16-bit protected-mode interface not supported
  2828.  07h    32-bit protected-mode interface already connected
  2829.  08h    32-bit protected-mode interface not supported
  2830.  09h    unrecognized device ID
  2831.  0Ah    invalid parameter value in CX
  2832.  0Bh    (APM v1.1) interface not engaged
  2833.  0Ch    (APM v1.2) function not supported
  2834.  0Dh    (APM v1.2) Resume Timer disabled
  2835.  0Eh-1Fh reserved for other interface and general errors
  2836.  20h-3Fh reserved for CPU errors
  2837.  40h-5Fh reserved for device errors
  2838.  60h    can't enter requested state
  2839.  61h-7Fh reserved for other system errors
  2840.  80h    no power management events pending
  2841.  81h-85h reserved for other power management event errors
  2842.  86h    APM not present
  2843.  87h-9Fh reserved for other power management event errors
  2844.  A0h-FEh reserved
  2845.  FFh    undefined
  2846. --------p-155301-----------------------------
  2847. INT 15 - Advanced Power Management v1.0+ - CONNECT REAL-MODE INTERFACE
  2848.     AX = 5301h
  2849.     BX = device ID of system BIOS (0000h)
  2850. Return: CF clear if successful
  2851.     CF set on error
  2852.         AH = error code (02h,05h,07h,09h) (see #0399)
  2853. Note:    on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  2854.       compatibility mode until it is informed that the user supports a
  2855.       newer version of APM (see AX=530Eh)
  2856. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  2857. --------p-155302-----------------------------
  2858. INT 15 R - Advanced Power Management v1.0+ - CONNECT 16-BIT PROTMODE INTERFACE
  2859.     AX = 5302h
  2860.     BX = device ID of system BIOS (0000h)
  2861. Return: CF clear if successful
  2862.         AX = real-mode segment base address of protected-mode 16-bit code
  2863.         segment
  2864.         BX = offset of entry point
  2865.         CX = real-mode segment base address of protected-mode 16-bit data
  2866.         segment
  2867.         ---APM v1.1---
  2868.         SI = APM BIOS code segment length
  2869.         DI = APM BIOS data segment length
  2870.     CF set on error
  2871.         AH = error code (02h,05h,06h,07h,09h) (see #0399)
  2872. Notes:    the caller must initialize two consecutive descriptors with the
  2873.       returned segment base addresses; these descriptors must be valid
  2874.       whenever the protected-mode interface is called, and will have
  2875.       their limits arbitrarily set to 64K.
  2876.     the protected mode interface is invoked by making a far call with the
  2877.       same register values as for INT 15; it must be invoked while CPL=0,
  2878.       the code segment descriptor must have a DPL of 0, the stack must be
  2879.       in a 16-bit segment and have enough room for BIOS use and possible
  2880.       interrupts, and the current I/O permission bit map must allow access
  2881.       to the I/O ports used for power management.
  2882.     functions 00h-03h are not available from protected mode
  2883.     on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  2884.       compatibility mode until it is informed that the user supports a
  2885.       newer version of APM (see AX=530Eh)
  2886. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  2887. --------p-155303-----------------------------
  2888. INT 15 - Advanced Power Management v1.0+ - CONNECT 32-BIT PROTMODE INTERFACE
  2889.     AX = 5303h
  2890.     BX = device ID of system BIOS (0000h)
  2891. Return: CF clear if successful
  2892.         AX = real-mode segment base address of protected-mode 32-bit code
  2893.         segment
  2894.         EBX = offset of entry point
  2895.         CX = real-mode segment base address of protected-mode 16-bit code
  2896.         segment
  2897.         DX = real-mode segment base address of protected-mode 16-bit data
  2898.         segment
  2899.         ---APM v1.1---
  2900.         SI = APM BIOS code segment length
  2901.         DI = APM BIOS data segment length
  2902.     CF set on error
  2903.         AH = error code (02h,05h,07h,08h,09h) (see #0399)
  2904. Notes:    the caller must initialize three consecutive descriptors with the
  2905.       returned segment base addresses for 32-bit code, 16-bit code, and
  2906.       16-bit data, respectively; these descriptors must be valid whenever
  2907.       the protected-mode interface is called, and will have their limits
  2908.       arbitrarily set to 64K.
  2909.     the protected mode interface is invoked by making a far call to the
  2910.       32-bit code segment with the same register values as for INT 15; it
  2911.       must be invoked while CPL=0, the code segment descriptor must have a
  2912.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  2913.       for BIOS use and possible interrupts, and the current I/O permission
  2914.       bit map must allow access to the I/O ports used for power management.
  2915.     functions 00h-03h are not available from protected mode
  2916.     on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  2917.       compatibility mode until it is informed that the user supports a
  2918.       newer version of APM (see AX=530Eh)
  2919. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  2920. --------p-155304-----------------------------
  2921. INT 15 - Advanced Power Management v1.0+ - DISCONNECT INTERFACE
  2922.     AX = 5304h
  2923.     BX = device ID of system BIOS (0000h)
  2924. Return: CF clear if successful
  2925.     CF set on error
  2926.         AH = error code (03h,09h) (see #0399)
  2927. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  2928. --------p-155305-----------------------------
  2929. INT 15 - Advanced Power Management v1.0+ - CPU IDLE
  2930.     AX = 5305h
  2931. Return: CF clear if successful (after system leaves idle state)
  2932.     CF set on error
  2933.         AH = error code (03h,0Bh) (see #0399)
  2934. Notes:    call when the system is idle and should be suspended until the next
  2935.       system event or interrupt
  2936.     should not be called from within a hardware interrupt handler to avoid
  2937.       reentrance problems
  2938.     if an interrupt causes the system to resume normal processing, the
  2939.       interrupt may or may not have been handled when the BIOS returns
  2940.       from this call; thus, the caller should allow interrupts on return
  2941.     interrupt handlers may not retain control if the BIOS allows
  2942.       interrupts while in idle mode even if they are able to determine
  2943.       that they were called from idle mode
  2944.     the caller should issue this call continuously in a loop until it needs
  2945.       to perform some processing of its own
  2946. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  2947. --------p-155306-----------------------------
  2948. INT 15 - Advanced Power Management v1.0+ - CPU BUSY
  2949.     AX = 5306h
  2950. Return: CF clear if successful
  2951.     CF set on error
  2952.         AH = error code (03h,0Bh) (see #0399)
  2953. Notes:    called to ensure that the system runs at full speed even on systems
  2954.       where the BIOS is unable to recognize increased activity (especially
  2955.       if interrupts are hooked by other programs and not chained to the
  2956.       BIOS)
  2957.     this call may be made even when the system is already running at full
  2958.       speed, but it will create unnecessary overhead
  2959.     should not be called from within a hardware interrupt handler to avoid
  2960.       reentrance problems
  2961. SeeAlso: AX=5305h
  2962. --------p-155307-----------------------------
  2963. INT 15 - Advanced Power Management v1.0+ - SET POWER STATE
  2964.     AX = 5307h
  2965.     BX = device ID (see #0400)
  2966.     CX = system state ID (see #0401)
  2967. Return: CF clear if successful
  2968.     CF set on error
  2969.         AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0399)
  2970. Note:    should not be called from within a hardware interrupt handler to avoid
  2971.       reentrance problems
  2972. SeeAlso: AX=530Ch
  2973.  
  2974. (Table 0400)
  2975. Values for APM device IDs:
  2976.  0000h    system BIOS
  2977.  0001h    all devices for which the system BIOS manages power
  2978.  01xxh    display (01FFh for all attached display devices)
  2979.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  2980.  03xxh    parallel ports (03FFh for all attached parallel ports)
  2981.  04xxh    serial ports (04FFh for all attached serial ports)
  2982. ---APM v1.1+ ---
  2983.  05xxh    network adapters (05FFh for all attached network adapters)
  2984.  06xxh    PCMCIA sockets (06FFh for all)
  2985.  0700h-7FFFh reserved
  2986.  80xxh    system battery devices (APM v1.2)
  2987.  8100h-DFFFh reserved
  2988.  Exxxh    OEM-defined power device IDs
  2989.  F000h-FFFFh reserved
  2990.  
  2991. (Table 0401)
  2992. Values for system state ID:
  2993.  0000h    ready (not supported for device ID 0001h)
  2994.  0001h    stand-by
  2995.  0002h    suspend
  2996.  0003h    off (not supported for device ID 0001h)
  2997. ---APM v1.1---
  2998.  0004h    last request processing notification (only for device ID 0001h)
  2999.  0005h    last request rejected (only for device ID 0001h)
  3000.  0006h-001Fh reserved system states
  3001.  0020h-003Fh OEM-defined system states
  3002.  0040h-007Fh OEM-defined device states
  3003.  0080h-FFFFh reserved device states
  3004. --------p-155307CX0001-----------------------
  3005. INT 15 - Advanced Power Management v1.0+ - SYSTEM STAND-BY
  3006.     AX = 5307h
  3007.     CX = 0001h
  3008.     BX = 0001h (device ID for all power-managed devices)
  3009. Return: CF clear
  3010. Notes:    puts the entire system into stand-by mode; normally called in response
  3011.       to a System Stand-by Request notification after any necessary
  3012.       processing, but may also be invoked at the caller's discretion
  3013.     should not be called from within a hardware interrupt handler to avoid
  3014.       reentrance problems
  3015.     the stand-by state is typically exited on an interrupt
  3016. SeeAlso: AX=4280h,AX=5307h/CX=0002h"SUSPEND",AX=530Bh
  3017. --------p-155307CX0002-----------------------
  3018. INT 15 - Advanced Power Management v1.0+ - SUSPEND SYSTEM
  3019.     AX = 5307h
  3020.     CX = 0002h
  3021.     BX = 0001h (device ID for all power-managed devices)
  3022. Return: after system is resumed
  3023.     CF clear
  3024. Notes:    puts the entire system into a low-power suspended state; normally
  3025.       called in response to a Suspend System Request notification after
  3026.       any necessary processing, but may also be invoked at the caller's
  3027.       discretion
  3028.     should not be called from within a hardware interrupt handler to avoid
  3029.       reentrance problems
  3030.     the caller may need to update its date and time values because the
  3031.       system could have been suspended for a long period of time
  3032. SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh
  3033. --------p-155308-----------------------------
  3034. INT 15 - Advanced Power Management v1.0+ - ENABLE/DISABLE POWER MANAGEMENT
  3035.     AX = 5308h
  3036.     BX = device ID for all devices power-managed by APM
  3037.         0001h (APM v1.1+)
  3038.         FFFFh (APM v1.0)
  3039.     CX = new state
  3040.         0000h disabled
  3041.         0001h enabled
  3042. Return: CF clear if successful
  3043.     CF set on error
  3044.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0399)
  3045. Notes:    when power management is disabled, the system BIOS will not
  3046.       automatically power down devices, enter stand-by or suspended mode,
  3047.       or perform any power-saving actions in response to AX=5305h calls
  3048.     should not be called from within a hardware interrupt handler to avoid
  3049.       reentrance problems
  3050.     the APM BIOS should never be both disabled and disengaged at the same
  3051.       time
  3052. SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
  3053. --------p-155309-----------------------------
  3054. INT 15 - Advanced Power Management v1.0+ - RESTORE POWER-ON DEFAULTS
  3055.     AX = 5309h
  3056.     BX = device ID for all devices power-managed by APM
  3057.         0001h (APM v1.1)
  3058.         FFFFh (APM v1.0)
  3059. Return: CF clear if successful
  3060.     CF set on error
  3061.         AH = error code (03h,09h,0Bh) (see #0399)
  3062. Note:    should not be called from within a hardware interrupt handler to avoid
  3063.       reentrance problems
  3064. SeeAlso: AX=5308h
  3065. --------p-15530A-----------------------------
  3066. INT 15 - Advanced Power Management v1.0+ - GET POWER STATUS
  3067.     AX = 530Ah
  3068.     BX = device ID
  3069.         0001h all devices power-managed by APM
  3070.         80xxh specific battery unit number XXh (01h-FFh) (APM v1.2)
  3071. Return: CF clear if successful
  3072.         BH = AC line status
  3073.         00h off-line
  3074.         01h on-line
  3075.         02h on backup power (APM v1.1)
  3076.         FFh unknown
  3077.         other reserved
  3078.         BL = battery status (see #0402)
  3079.         CH = battery flag (APM v1.1+) (see #0403)
  3080.         CL = remaining battery life, percentage
  3081.         00h-64h (0-100) percentage of full charge
  3082.         FFh unknown
  3083.         DX = remaining battery life, time (APM v1.1) (see #0404)
  3084.         ---if specific battery unit specified---
  3085.         SI = number of battery units currently installed
  3086.     CF set on error
  3087.         AH = error code (09h,0Ah) (see #0399)
  3088. Notes:    should not be called from within a hardware interrupt handler to avoid
  3089.       reentrance problems
  3090.     supported in real mode (INT 15) and both 16-bit and 32-bit protected
  3091.       mode
  3092.  
  3093. (Table 0402)
  3094. Values for APM v1.0+ battery status:
  3095.  00h    high
  3096.  01h    low
  3097.  02h    critical
  3098.  03h    charging
  3099.  FFh    unknown
  3100.  other    reserved
  3101. SeeAlso: #0403,#0404
  3102.  
  3103. Bitfields for APM v1.1+ battery flag:
  3104. Bit(s)    Description    (Table 0403)
  3105.  0    high
  3106.  1    low
  3107.  2    critical
  3108.  3    charging
  3109.  4    selected battery not present (APM v1.2)
  3110.  5-6    reserved (0)
  3111.  7    no system battery
  3112. Note:    all bits set (FFh) if unknown
  3113. SeeAlso: #0402,#0404
  3114.  
  3115. Bitfields for APM v1.1+ remaining battery life:
  3116. Bit(s)    Description    (Table 0404)
  3117.  15    time units: 0=seconds, 1=minutes
  3118.  14-0    battery life in minutes or seconds
  3119. Note:    all bits set (FFFFh) if unknown
  3120. SeeAlso: #0402,#0403
  3121. --------p-15530B-----------------------------
  3122. INT 15 - Advanced Power Management v1.0+ - GET POWER MANAGEMENT EVENT
  3123.     AX = 530Bh
  3124. Return: CF clear if successful
  3125.         BX = event code (see #0405)
  3126.         CX = event information (APM v1.2) if BX=0003h or BX=0004h
  3127.         bit 0: PCMCIA socket was powered down in suspend state
  3128.     CF set on error
  3129.         AH = error code (03h,0Bh,80h) (see #0399)
  3130. Notes:    although power management events are often asynchronous, notification
  3131.       will not be made until polled via this call to permit software to
  3132.       only receive event notification when it is prepared to process
  3133.       power management events; since these events are not very time-
  3134.       critical, it should be sufficient to poll once or twice per second
  3135.     the critical resume notification is made after the system resumes
  3136.       from an emergency suspension; normally, the system BIOS only notifies
  3137.       its partner that it wishes to suspend and relies on the partner to
  3138.       actually request the suspension, but no notification is made on an
  3139.       emergency suspension
  3140.     should not be called from within a hardware interrupt handler to avoid
  3141.       reentrance problems
  3142. SeeAlso: AX=5307h,AX=5307h/CX=0001h"STAND-BY",AX=5307h/CX=0002h"SUSPEND"
  3143.  
  3144. (Table 0405)
  3145. Values for APM event code:
  3146.  0001h    system stand-by request
  3147.  0002h    system suspend request
  3148.  0003h    normal resume system notification
  3149.  0004h    critical resume system notification
  3150.  0005h    battery low notification
  3151. ---APM v1.1---
  3152.  0006h    power status change notification
  3153.  0007h    update time notification
  3154.  0008h    critical system suspend notification
  3155.  0009h    user system standby request notification
  3156.  000Ah    user system suspend request notification
  3157.  000Bh    system standby resume notification
  3158. ---APM v1.2---
  3159.  000Ch    capabilities change notification (see AX=5310h)
  3160. ------
  3161.  000Dh-00FFh reserved system events
  3162.  01xxh    reserved device events
  3163.  02xxh    OEM-defined APM events
  3164.  0300h-FFFFh reserved
  3165. --------p-15530C-----------------------------
  3166. INT 15 - Advanced Power Management v1.1+ - GET POWER STATE
  3167.     AX = 530Ch
  3168.     BX = device ID (see #0400)
  3169. Return: CF clear if successful
  3170.         CX = system state ID (see #0401)
  3171.     CF set on error
  3172.         AH = error code (01h,09h) (see #0399)
  3173. SeeAlso: AX=5307h
  3174. --------p-15530D-----------------------------
  3175. INT 15 - Advanced Power Management v1.1+ - EN/DISABLE DEVICE POWER MANAGEMENT
  3176.     AX = 530Dh
  3177.     BX = device ID (see #0400)
  3178.     CX = function
  3179.         0000h disable power management
  3180.         0001h enable power management
  3181. Return: CF clear if successful
  3182.     CF set on error
  3183.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0399)
  3184. Desc:    specify whether automatic power management should be active for a
  3185.       given device
  3186. SeeAlso: AX=5308h,AX=530Fh
  3187. --------p-15530E-----------------------------
  3188. INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION
  3189.     AX = 530Eh
  3190.     BX = device ID of system BIOS (0000h)
  3191.     CH = APM driver major version (BCD)
  3192.     CL = APM driver minor version (BCD) (02h for APM v1.2)
  3193. Return: CF clear if successful
  3194.         AH = APM connection major version (BCD)
  3195.         AL = APM connection minor version (BCD)
  3196.     CF set on error
  3197.         AH = error code (03h,09h,0Bh) (see #0399)
  3198. SeeAlso: AX=5300h,AX=5303h
  3199. --------p-15530F-----------------------------
  3200. INT 15 - Advanced Power Management v1.1+ - ENGAGE/DISENGAGE POWER MANAGEMENT
  3201.     AX = 530Fh
  3202.     BX = device ID (see #0400)
  3203.     CX = function
  3204.         0000h disengage power management
  3205.         0001h engage power management
  3206. Return: CF clear if successful
  3207.     CF set on error
  3208.         AH = error code (01h,09h) (see #0399)
  3209. Notes:    unlike AX=5308h, this call does not affect the functioning of the APM
  3210.       BIOS
  3211.     when cooperative power management is disengaged, the APM BIOS performs
  3212.       automatic power management of the system or device
  3213. SeeAlso: AX=5308h,AX=530Dh
  3214. --------p-155310-----------------------------
  3215. INT 15 - Advanced Power Management v1.2 - GET CAPABILITIES
  3216.     AX = 5310h
  3217.     BX = device ID (see #0400)
  3218.         0000h (APM BIOS)
  3219.         other reserved
  3220. Return: CF clear if successful
  3221.         BL = number of battery units supported (00h if no system batteries)
  3222.         CX = capabilities flags (see #0406)
  3223.     CF set on error
  3224.         AH = error code (01h,09h,86h) (see #0399)
  3225. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  3226.       32-bit protected mode interfaces; it does not require that a
  3227.       connection be established prior to use
  3228.     this function will return the capabilities currently in effect, not
  3229.       any new settings which have been made but do not take effect until
  3230.       a system restart
  3231. SeeAlso: AX=5300h,AX=530Fh,AX=5311h,AX=5312h,AX=5313h
  3232.  
  3233. Bitfields for APM v1.2 capabilities flags:
  3234. Bit(s)    Description    (Table 0406)
  3235.  0    can enter global standby state
  3236.  1    can enter global suspend state
  3237.  2    resume timer will wake up system from standby mode
  3238.  3    resume timer will wake up system from suspend mode
  3239.  4    Resume on Ring Indicator will wake up system from standby mode
  3240.  5    Resume on Ring Indicator will wake up system from suspend mode
  3241.  6    PCMCIA Ring Indicator will wake up system from standby mode
  3242.  7    PCMCIA Ring Indicator will wake up system from suspend mode
  3243. --------p-155311-----------------------------
  3244. INT 15 - Advanced Power Management v1.2 - GET/SET/DISABLE RESUME TIMER
  3245.     AX = 5311h
  3246.     BX = device ID (see #0400)
  3247.         0000h (APM BIOS)
  3248.         other reserved
  3249.     CL = function
  3250.         00h disable Resume Timer
  3251.         01h get Resume Timer
  3252.         02h set Resume Timer
  3253.         CH = resume time, seconds (BCD)
  3254.         DL = resume time, minutes (BCD)
  3255.         DH = resume time, hours (BCD)
  3256.         SI = resume date (BCD), high byte = month, low byte = day
  3257.         DI = resume date, year (BCD)
  3258. Return: CF clear if successful
  3259.         ---if getting timer---
  3260.         CH = resume time, seconds (BCD)
  3261.         DL = resume time, minutes (BCD)
  3262.         DH = resume time, hours (BCD)
  3263.         SI = resume date (BCD), high byte = month, low byte = day
  3264.         DI = resume date, year (BCD)
  3265.     CF set on error
  3266.         AH = error code (03h,09h,0Ah,0Bh,0Ch,0Dh,86h) (see #0399)
  3267. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  3268.       32-bit protected mode interfaces
  3269. SeeAlso: AX=5300h,AX=5310h,AX=5312h,AX=5313h
  3270. --------p-155312-----------------------------
  3271. INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE RESUME ON RING
  3272.     AX = 5312h
  3273.     BX = device ID (see #0400)
  3274.         0000h (APM BIOS)
  3275.         other reserved
  3276.     CL = function
  3277.         00h disable Resume on Ring Indicator
  3278.         01h enable Resume on Ring Indicator
  3279.         02h get Resume on Ring Indicator status
  3280. Return: CF clear if successful
  3281.         CX = resume status (0000h disabled, 0001h enabled)
  3282.     CF set on error
  3283.         AH = error code (03h,09h,0Ah,0Bh,0Ch,86h) (see #0399)
  3284. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  3285.       32-bit protected mode interfaces
  3286. SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5313h
  3287. --------p-155313-----------------------------
  3288. INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE TIMER-BASED REQUESTS
  3289.     AX = 5313h
  3290.     BX = device ID (see #0400)
  3291.         0000h (APM BIOS)
  3292.         other reserved
  3293.     CL = function
  3294.         00h disable timer-based requests
  3295.         01h enable timer-based requests
  3296.         02h get timer-based requests status
  3297. Return: CF clear if successful
  3298.         CX = timer-based requests status (0000h disabled, 0001h enabled)
  3299.     CF set on error
  3300.         AH = error code (03h,09h,0Ah,0Bh,86h) (see #0399)
  3301. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  3302.       32-bit protected mode interfaces
  3303. SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5312h
  3304. --------p-155380BH00-------------------------
  3305. INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE
  3306.     AX = 5380h
  3307.     BH = 00h
  3308. Return: CF clear if successful
  3309.         AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH)
  3310.         BL = sustdbymode (see #0407)
  3311. SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh
  3312.  
  3313. Bitfields for APM SL sustdbymode:
  3314. Bit(s)    Description    (Table 0407)
  3315.  2    ???
  3316.  1    Auto Power Off Timer Enable (APWR_TMR_EN)
  3317.  0    ???
  3318. --------p-155380BH01-------------------------
  3319. INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE
  3320.     AX = 5380h
  3321.     BH = 01h
  3322.     BL = sustdbymode (see #0407)
  3323. Return: CF clear if successful
  3324. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  3325. --------p-155380BH02-------------------------
  3326. INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER
  3327.     AX = 5380h
  3328.     BH = 02h
  3329. Return: CF clear if successful
  3330.     SI:DI = timer count in seconds (actually 1.024 seconds)
  3331. Desc:    reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  3332. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh
  3333. --------p-155380BH03-------------------------
  3334. INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER
  3335.     AX = 5380h
  3336.     BH = 03h
  3337.     SI:DI = timer count in seconds (actually 1.024 seconds)
  3338. Return: CF clear if successful
  3339. Desc:    sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  3340. Note:    the maximum timer count is 268431 seconds
  3341. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh
  3342. --------p-155380BH04-------------------------
  3343. INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER
  3344.     AX = 5380h
  3345.     BH = 04h
  3346. Return: CF clear if successful
  3347.     SI:DI = timer count in seconds (actually 1.024 seconds)
  3348. Desc:    reads the value of 82360SL APWR_TMRH & APWR_TMRL registers
  3349. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh
  3350. --------p-155380BH05-------------------------
  3351. INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER
  3352.     AX = 5380h
  3353.     BH = 05h
  3354.     SI:DI = timer count in seconds (actually 1.024 seconds)
  3355. Return: CF clear if successful
  3356. Desc:    sets the value of 82360SL APWR_TMRH & APWR_TMRL registers
  3357. Note:    the maximum timer count is 134213 seconds
  3358. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh
  3359. --------p-155380BH06-------------------------
  3360. INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION
  3361.     AX = 5380h
  3362.     BH = 06h
  3363. Return: CF clear if successful
  3364.         BL = resume condition (see #0408)
  3365. Desc:    reads the value of 82360SL RESUME_MASK register
  3366. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh
  3367.  
  3368. Bitfields for APM SL resume condition:
  3369. Bit(s)    Description    (Table 0408)
  3370.  7-2    reserved (0)
  3371.  1    alarm enabled (resume on CMOS alarm)
  3372.  0    ring enabled
  3373. --------p-155380BH07-------------------------
  3374. INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION
  3375.     AX = 5380h
  3376.     BH = 07h
  3377.     BL = resume condition (see #0408)
  3378. Return: CF clear if successful
  3379. Desc:    sets the value of 82360SL RESUME_MASK register
  3380. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh
  3381. --------p-155380BH08-------------------------
  3382. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME
  3383.     AX = 5380h
  3384.     BH = 08h
  3385. Return: CF clear if successful
  3386.         CH = hours
  3387.         CL = minutes
  3388.         SI = seconds
  3389.     CF set on error
  3390.         AH = error code (see #0409)
  3391. Desc:    gets calendar event time from CMOS ram
  3392. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  3393.  
  3394. (Table 0409)
  3395. Values for APM SL error code:
  3396.  02h    no alarm set
  3397.  03h    no battery
  3398. --------p-155380BH09-------------------------
  3399. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME
  3400.     AX = 5380h
  3401.     BH = 09h
  3402.     CH = hours
  3403.     CL = minutes
  3404.     SI = seconds
  3405. Return: CF clear if successful
  3406.     CF set on error
  3407.         AH = error code (see #0409)
  3408. Desc:    sets calendar event time in CMOS ram, enables Alarm resume
  3409. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh
  3410. --------p-155380BH0A-------------------------
  3411. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE
  3412.     AX = 5380h
  3413.     BH = 0Ah
  3414. Return: CF clear if successful
  3415.         SI = century
  3416.         DI = year
  3417.         CH = month
  3418.         CL = day
  3419.     CF set on error
  3420.         AH = error code (see #0409)
  3421. Desc:    reads calendar event date from Extended CMOS ram
  3422. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh
  3423. --------p-155380BH0B-------------------------
  3424. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE
  3425.     AX = 5380h
  3426.     BH = 0Bh
  3427.     SI = century
  3428.     DI = year
  3429.     CH = month
  3430.     CL = day
  3431. Return: CF clear if successful
  3432.     CF set on error
  3433.         AH = error code (see #0409)
  3434. Desc:    sets calendar event date in Extended CMOS ram
  3435. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  3436. --------p-155380BH0C-------------------------
  3437. INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE
  3438.     AX = 5380h
  3439.     BH = 0Ch
  3440. Return: CF clear if successful
  3441.     CL = CPU clock divider (1,2,4 or 8)
  3442.     BL = autocpumode ???
  3443. Desc:    reads bits 4-5 of CPUPWRMODE register
  3444. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh
  3445. --------p-155380BH0D-------------------------
  3446. INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE
  3447.     AX = 5380h
  3448.     BH = 0Dh
  3449.     CL = CPU clock divider (1,2,4 or 8)
  3450.     BL = autocpumode ???
  3451. Return: CF clear if successful
  3452. Desc:    writes bits 4-5 of CPUPWRMODE register
  3453. SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh
  3454. --------p-155380BH7E-------------------------
  3455. INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER
  3456.     AX = 5380h
  3457.     BH = 7Eh
  3458. Return: AL = ???
  3459.         03h on A-Step 386SL BIOSes
  3460.         12h on later steps
  3461.     BX = Control port (00B0h)
  3462. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  3463. --------p-155380BH7F-------------------------
  3464. INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
  3465.     AX = 5380h
  3466.     BH = 7Fh
  3467. Return: CF clear if successful
  3468.         BX = OEM identifier
  3469.         all other registers OEM-defined
  3470.         ---Intel SL Enhanced Option BIOS---
  3471.         BX = 534Ch ('SL')
  3472.         CL = 4Fh ('O')
  3473.         AL = version (10h = 1.0)
  3474.         ---HP APM BIOS---
  3475.         BX = 4850h ('HP')
  3476.         CX = version (0001h)
  3477.     CF set on error
  3478.         AH = error code (03h) (see #0399)
  3479. SeeAlso: AX=5380h/BH=00h
  3480. --------p-155380-----------------------------
  3481. INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
  3482.     AX = 5380h
  3483.     BH <> 7Fh
  3484.     all other registers OEM-defined
  3485. Return: OEM-defined
  3486. SeeAlso: AX=5380h/BH=7Fh
  3487. --------X-1553B0BH00-------------------------
  3488. INT 15 - Intel System Management Bus - RESERVED
  3489.     AX = 53B0h
  3490.     BH = 00h
  3491. Program: the SMBus is a variant of ACCESS.bus being used by Intel and Duracell
  3492.       for the Smart Battery proposal, but designed to be generic enough to
  3493.       handle other devices besides batteries
  3494. --------X-1553B0BH01-------------------------
  3495. INT 15 - Intel System Management Bus - INSTALLATION CHECK
  3496.     AX = 53B0h
  3497.     BH = 01h
  3498.     BL = 72h ('r')
  3499.     CX = 6164h ('ad')
  3500. Return: CF clear if installed
  3501.         AH = SMBus BIOS Interface Specification major version (01h)
  3502.         AL = SMBus BIOS Interface Specification minor version (00h)
  3503.         BL = number of SMBus devices present
  3504.         CX = 6941h ('iA')
  3505.         DX = vendor-specified SMBus hardware code
  3506.         0000h means undefined hardware type
  3507.     CF set if error
  3508.         AH = Error code 0Ah, 86h (see #0410)
  3509. Note:    this function is only supported in INT 15h mode
  3510. SeeAlso: AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=06h
  3511. SeeAlso: #3865 at INT 1A/AX=B10Ah/SF=8086h
  3512.  
  3513. (Table 0410)
  3514. Values for Intel System Management Bus error codes:
  3515.  00h    SMBus OK
  3516.  01h    SMBus connect failed
  3517.  02h    SMBus already connected (see also #0411)
  3518.  03h    SMBus disconnect failed
  3519.  04h    SMBus not connected
  3520.  05h    SMBus INT 15 interface disabled
  3521.  06h    SMBus device address request out of range
  3522.  07h    SMBus unknown failure
  3523.  08h    SMBus message list empty
  3524.  09h    SMBus message list overflow
  3525.  0Ah    SMBus invalid signature
  3526.  10h    SMBus device address not acknowledged
  3527.  11h    SMBus device error detected
  3528.  12h    SMBus device command access denied
  3529.  13h    SMBus unknown error
  3530.  14h    SMBus transaction pending
  3531.  15h    SMBus no transaction pending
  3532.  16h    SMBus request does not match pending transaction
  3533.  17h    SMBus device access denied
  3534.  18h    SMBus timeout
  3535.  19h    SMBus protocol not supported
  3536.  1Ah    SMBus busy
  3537.  1Bh    SMBus SMI detected
  3538.  80h    SMBus OK (previously unreported SMI occurred)
  3539.  86h    SMBus not supported
  3540.  
  3541. (Table 0411)
  3542. Values for Intel System Management Bus Already Connected sub-error codes:
  3543.  01h    real mode connect already established
  3544.  02h    16-bit PMode connect already established
  3545.  03h    32-bit PMode connect already established
  3546. SeeAlso: #0410
  3547. --------X-1553B0BH02-------------------------
  3548. INT 15 - Intel System Management Bus - REAL MODE CONNECT
  3549.     AX = 53B0h
  3550.     BH = 02h
  3551.     CX = 6941h ('iA')
  3552. Return: CF clear if successful
  3553.         AX = SMBus Real mode code segment
  3554.         BX = offset of entry point into SMBus BIOS Interface
  3555.         CX = SMBus Real mode data segment
  3556.     CF set if error
  3557.         AH = error code (01h,02h,0Ah,86h) (see #0410)
  3558.         AL = sub-error code if error code is 02h (see #0411)
  3559. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  3560.       to the supplied entry point instead of INT 15 (with registers
  3561.       identical to those described here for INT 15)
  3562. Notes:    Support for this function is optional
  3563.     this function is only supported in INT 15 mode when implemented
  3564. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  3565. --------X-1553B0BH03-------------------------
  3566. INT 15 - Intel System Management Bus - 16-BIT PROTECTED-MODE CONNECT
  3567.     AX = 53B0h
  3568.     BH = 03h
  3569.     CX = 6941h ('iA')
  3570. Return: CF clear if successful
  3571.         AX = SMBus 16-bit code segment (real mode base address)
  3572.         BX = offset of entry point into SMBus BIOS Interface
  3573.         CX = SMBus 16-bit data segment (real mode base address)
  3574.         SI = code segment length in bytes
  3575.         DI = data segment length in bytes
  3576.     CF set if error
  3577.         AH = error code (01h,02h,0Ah,86h) (see #0410)
  3578.         AL = sub-error code if error code is 02h (see #0411)
  3579. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  3580.       to the supplied entry point instead of INT 15 (with registers
  3581.       identical to those described here for INT 15)
  3582. Notes:    before calling the entry point, two descriptors must be initialized
  3583.       in the GDT or LDT.  They must be consecutive and be in the order of
  3584.       code, then data.  At the time    of the call, the descriptors must be
  3585.       valid and have CPL=0.
  3586.     the code descriptor must be ring-0 privilege
  3587.     this function is only supported in INT 15 mode
  3588. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  3589. --------X-1553B0BH04-------------------------
  3590. INT 15 - Intel System Management Bus - 32-BIT PROTECTED-MODE CONNECT
  3591.     AX = 53B0h
  3592.     BH = 04h
  3593.     CX = 6941h ('iA')
  3594. Return: CF clear if successful
  3595.         AX = SMBus 32-bit code segment (real mode base address)
  3596.         EBX = offset of entry point into SMBus BIOS Interface
  3597.         CX = SMBus 16-bit code segment (real mode base address)
  3598.         DX = SMBus data segment (real mode base address)
  3599.         SI = code segment length in bytes
  3600.         DI = data segment length in bytes
  3601.     CF set if error
  3602.         AH = error code (01h,02h,0Ah,86h) (see #0410)
  3603.         AL = sub-error code if error code is 02h (see #0411)
  3604. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  3605.       to the supplied entry point instead of INT 15 (with registers
  3606.       identical to those described here for INT 15)
  3607. Notes:    before calling the entry point, two descriptors must be initialized in
  3608.       the GDT or LDT.  They must be consecutive and be in the order of
  3609.       32-bit code, 16-bit code, then data.    At the time of the call, the
  3610.       descriptors must be valid and have CPL=0.
  3611.     the code descriptors must be ring-0 privilege
  3612.     this function is supported only in INT 15 mode
  3613. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=05h
  3614. --------X-1553B0BH05-------------------------
  3615. INT 15 - Intel System Management Bus - DISCONNECT
  3616.     AX = 53B0h
  3617.     BH = 05h
  3618.     CX = 6941h ('iA')
  3619. Return: CF clear if successful
  3620.         AH = 00h (SMBus OK)
  3621.     CF set if error
  3622.         AH = error code (03h,04h,05h,0Ah,86h) (see #0410)
  3623. Note:    this function is supported in connected mode (far CALL entry point)
  3624.       only
  3625. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h
  3626. --------X-1553B0BH06-------------------------
  3627. INT 15 - Intel System Management Bus - GET DEVICE ADDRESSES
  3628.     AX = 53B0h
  3629.     BH = 06h
  3630.     BL = position in list to report
  3631.     CH = 6941h ('iA')
  3632. Return: CF clear if successful
  3633.         AH = 00h (SMBus OK)
  3634.         BH = number of SMBus devices
  3635.         BL = SMBus Device Address of device at position BL in list
  3636.         (see #0412)
  3637.     CF set if error
  3638.         AH = error code (06h,0Ah,86h) (see #0410)
  3639. Desc:    retrieves already assigned SMBus device addresses
  3640. Notes:    this function is supported in INT 15h mode only
  3641.     bit 0 of the device address indicates read/write, so a device may
  3642.       be listed at both xxxxxxx0b and xxxxxxx1b
  3643. SeeAlso: I2C A0h [and I2C.LST in general]
  3644.  
  3645. (Table 0412)
  3646. Values for System Management Bus predefined device addresses:
  3647.  10h    SMBus host
  3648.  12h    Smart Battery charger
  3649.  14h    Smart Battery selector
  3650.  16h    Smart Battery
  3651.  18h    SMBus Alert response
  3652.  50h    ACCESS.bus host
  3653.  58h    LCD contrast controller
  3654.  5Ah    CCFL backlight driver
  3655.  6Eh    ACCESS.bus default address
  3656.  80h-86h PCMCIA socket controllers
  3657.  88h    VGA graphics controller
  3658.  90h-96h unrestricted addresses
  3659.  82h    SMBus device default address
  3660. --------X-1553B0BH07-------------------------
  3661. INT 15 - Intel System Management Bus - RETRIEVE CRITICAL MESSAGES
  3662.     AX = 53B0h
  3663.     BH = 07h
  3664.     CX = 6941h ('iA')
  3665. Return: CF clear if successful
  3666.         AH = 00h (SMBus OK)
  3667.         AL = device address
  3668.         BX = device message
  3669.     CF set if error
  3670.         AH = error code (05h,07h,08h,09h,0Ah,86h) (see #0410)
  3671. Desc:    retrieves oldest queued critical message from an SMBus device to the
  3672.       host
  3673. Notes:    up to five messages are queued; if the queue is full, messages will be
  3674.       lost and error 09h returned
  3675. --------X-1553B0BH08-------------------------
  3676. INT 15 - Intel System Management Bus - RESERVED
  3677.     AX = 53B0h
  3678.     BH = 08h-0Fh
  3679. --------X-1553B0BH10-------------------------
  3680. INT 15 - Intel System Management Bus - REQUEST
  3681.     AX = 53B0h
  3682.     BH = 10h
  3683.     BL = protocol (see #0413)
  3684.     CH = device address
  3685.     CL = device command (see #0414)
  3686.     DH = MSB Data or block length (for BlockWrite)
  3687.     DL = LSB Data or first byte of block (for BlockWrite)
  3688. Return: CF clear if successful
  3689.         AH = 00h or 80h (SMBus OK)
  3690.          (80h indicates a previously unreported SMI took place)
  3691.     CF set if error
  3692.         AH = error code (05h,10h,11h,12h,13h,14h,17h,19h,1Ah,86h)
  3693.           (see #0410)
  3694. Desc:    request access to a device on the SMBus
  3695. SeeAlso: AX=53B0h/BH=11h, AX=53B0h/BH=13h
  3696.  
  3697. (Table 0413)
  3698. Values for Intel System Management Bus protocol codes:
  3699.  00h    Quick Command
  3700.  01h    Send Byte
  3701.  02h    Receive Byte
  3702.  03h    Write Byte
  3703.  04h    Read Byte
  3704.  05h    Write Word
  3705.  06h    Read Word
  3706.  07h    Block Write
  3707.  08h    Block Read
  3708.  09h    Process Call
  3709.  0Ah-FFh reserved
  3710. SeeAlso: #0414
  3711.  
  3712. (Table 0414)
  3713. Values for Intel System Management Bus Smart Battery command codes:
  3714.  Cmd    Protocol(s)    Description
  3715.  00h    Rd/Wr Word    "ManufacturerAccess" implementation-specific
  3716.  01h    Rd/Wr Word    get/set Low Capacity Alarm threshold
  3717.  02h    Rd/Wr Word    get/set Remaining Time Alarm value (in minutes)
  3718.  03h    Rd/Wr Word    get/set battery characteristics (see #0415)
  3719.  04h    Rd/Wr Word    "AtRate" indicate charge/discharge rate
  3720.  05h    Read Word    "AtRateTimeToFull" time to completely charge (in min.)
  3721.  06h    Read Word    "AtRateTimeToEmpty" time to entirely discharge (min.)
  3722.  07h    Read Word    "AtRateOK" boolean: can battery supply another 10sec?
  3723.  08h    Read Word    internal battery temperature (in 0.1 Kelvins)
  3724.  09h    Read Word    current battery voltage in millivolts
  3725.  0Ah    Read Word    current flowing through battery in milliamperes
  3726.             (positive if charging, negative if discharging)
  3727.  0Bh    Read Word    average current over the past minute
  3728.  0Ch    Read Word    expected error margin in capacity computations in %
  3729.  0Dh    Read Word    predicted remaining charge as % of full charge
  3730.  0Eh    Read Word    predicted remaining charge as % of design capacity
  3731.  0Fh    Read Word    predicted remaining charge in mAh or 10mWh
  3732.  10h    Read Word    predicted full charge capacity in mAh or 10mWh
  3733.  11h    Read Word    predicted remaining battery life in minutes
  3734.             FFFFh = not discharging
  3735.  12h    Read Word    rolling average of predicted life over past minute
  3736.  13h    Read Word    rolling average of predicted charge time over past min.
  3737.             FFFFh = not charging
  3738.  14h    Read Word    get battery's desired charging current in mA
  3739.  14h    Write Word    set charging current in mA
  3740.  15h    Read Word    get battery's desired charging current in mV
  3741.  15h    Write Word    set desired charging voltage in mV
  3742.  16h    Read Word    get current battery status (see #0416)
  3743.  17h    Read Word    get number of charge/discharge cycles for battery
  3744.  18h    Read Word    get design capacity in mAh or 10mWh
  3745.  19h    Read Word    get design voltage
  3746.  1Ah    Read Word    get specification information (see #0417)
  3747.  1Bh    Read Word    get manufacture date (see #1351 at INT 21/AX=5700h)
  3748.  1Ch    Read Word    get serial number
  3749.  1Dh-1Fh        reserved
  3750.  20h    Read Block    get manufacturer's name
  3751.  21h    Read Block    get device name
  3752.  22h    Read Block    get device chemistry (see #0418)
  3753.  23h    Read Block    get manufacturer data
  3754.  24h-2Eh        reserved
  3755.  2Fh            manufacturer-specific
  3756.  30h-3Bh        reserved
  3757.  3Ch-3Fh        manufacturer-specific
  3758. Note:    bits 7-6 are reserved for addressing multiple batteries in a future
  3759.       version of the specification
  3760. SeeAlso: #0413
  3761.  
  3762. Bitfields for Smart Battery battery characteristics:
  3763. Bit(s)    Description    (Table 0415)
  3764.  0    battery has internal charge controller (read-only)
  3765.  1    primary/secondary battery support (read-only)
  3766.  6-2    reserved
  3767.  7    conditioning cycle requested
  3768.  8    internal charge controller enabled
  3769.  9    battery operating in primary mode
  3770.  13-10    reserved
  3771.  14    disable broadcast to charger
  3772.  15    report capacity in units of 10mW / 10mWh instead of mA / mAh
  3773. SeeAlso: #0414,#0416
  3774.  
  3775. Bitfields for Smart Battery battery status:
  3776. Bit(s)    Description    (Table 0416)
  3777.  15    overcharged
  3778.  14    terminate-charge alarm
  3779.  13    reserved
  3780.  12    over-temperature alarm
  3781.  11    terminate-discharge alarm
  3782.  10    reserved
  3783.  9    remaining-capacity alarm
  3784.  8    remaining-time alarm
  3785.  7    initialized
  3786.  6    charging
  3787.  5    fully charged
  3788.  4    fully discharged
  3789.  3-0    error codes
  3790.     0000 OK
  3791.     0001 busy
  3792.     0010 reserved command
  3793.     0011 unsupported command
  3794.     0100 access denied (tried to write to read-only value)
  3795.     0101 overflow/underflow
  3796.     0110 bad size
  3797.     0111 unknown error
  3798. SeeAlso: #0414,#0415,#0417
  3799.  
  3800. Bitfields for Smart Battery specification information:
  3801. Bit(s)    Description    (Table 0417)
  3802.  3-0    SmartBattery specification minor revision number
  3803.  7-4    SmartBattery specification version number
  3804.  11-8    voltage scaling (0-3, multiply voltages by 10^scale)
  3805.  15-12    current scaling (0-3, multiply currents by 10^scale)
  3806. SeeAlso: #0414,#0416
  3807.  
  3808. (Table 0418)
  3809. Values for Smart Battery device chemistry (not case-sensitive):
  3810.  "LION"    Lithium ion
  3811.  "NiMH"    Nickel metal hydride
  3812.  "PbAc"    lead-acid
  3813.  "NiCd" Nickel Cadmium
  3814.  "NiZn" Nickel Zinc
  3815.  "RAM"    rechargeable Alkaline Manganese
  3816.  "ZnAr" Zinc-Air
  3817. SeeAlso: #0414
  3818. --------X-1553B0BH11-------------------------
  3819. INT 15 - Intel System Management Bus - REQUEST CONTINUATION
  3820.     AX = 53B0h
  3821.     BH = 11h
  3822.     BL = protocol (see #0413)
  3823.     CH = device address
  3824.     CL = number of valid bytes in DX (1 or 2)
  3825.     DH = MSB Data (CL = 1 or 2)
  3826.     DL = LSB Data (CL = 2)
  3827. Return: CF clear if successful
  3828.         AH = 00h (SMBus OK)
  3829.         CL = SMBus status
  3830.         00h SMBus hardware not ready for more data
  3831.         01h SMBus hardware ready for 2 more data bytes
  3832.     CF set if error
  3833.         AH = error code (05h,11h,13h,15h,16h,18h,1Bh,86h) (see #0410)
  3834. Desc:    continue WriteBlock protocol started with function 10h
  3835. SeeAlso: AX=53B0h/BH=10h, AX=53B0h/BH=13h
  3836. --------X-1553B0BH12-------------------------
  3837. INT 15 - Intel System Management Bus - REQUEST ABORT
  3838.     AX = 53B0h
  3839.     BH = 12h
  3840.     BL = protocol (see #0413)
  3841.     CH = device address
  3842.     CL = device command
  3843. Return: CF clear if successful
  3844.         AH = 00h (SMBus OK)
  3845.     CF set if error
  3846.         AH = error code (05h,13h,15h,16h,86h) (see #0410)
  3847. Desc:    stop the currently pending SMBus request; usually used to terminate
  3848.       a request after an SMI Detected error
  3849. --------X-1553B0BH13-------------------------
  3850. INT 15 - Intel System Management Bus - REQUEST DATA AND STATUS
  3851.     AX = 53B0h
  3852.     BH = 13h
  3853.     BL = protocol (see #0413)
  3854.     CH = device address
  3855.     CL = device command
  3856. Return: CF clear if successful
  3857.         AH = 00h (SMBus OK)
  3858.         CH = status
  3859.         00h no data pending, transaction complete
  3860.         01h no data pending, transaction continues
  3861.         02h data pending
  3862.         CL = number of valid bytes in DX (0-2)
  3863.         DH = MSB data
  3864.         DL = LSB data
  3865.     CF set if error
  3866.         AH = error code (05h,10h,11h,13h,15h,16h,18h,1Bh,86h) (see #0410)
  3867. Desc:    determine when a transaction is complete, gather data returned by read
  3868.       transactions
  3869. Note:    for Block Read protocol (08h), first call returns block    length in DH
  3870.       and the first byte of the block in DL
  3871. ----------1554-------------------------------
  3872. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  3873.     AH = 54h
  3874. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  3875. --------T-155400-----------------------------
  3876. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  3877.     AX = 5400h
  3878.     ES:BX -> device information tables
  3879.     DI:DX -> dispatcher entry point
  3880. Note:    called by OmniView to notify programs loaded before OmniView of state
  3881.       changes inside OmniView
  3882. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  3883. --------T-155401-----------------------------
  3884. INT 15 C - Omniview Multitasker - PROCESS CREATION
  3885.     AX = 5401h
  3886.     ES:BX = process handle
  3887. Note:    called by OmniView to notify programs loaded before OmniView of state
  3888.       changes inside OmniView
  3889. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  3890. --------T-155402-----------------------------
  3891. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  3892.     AX = 5402h
  3893.     ES:DX = process handle
  3894. Note:    called by OmniView to notify programs loaded before OmniView of state
  3895.       changes inside OmniView
  3896. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  3897. --------T-155403-----------------------------
  3898. INT 15 C - Omniview Multitasker - SAVE
  3899.     AX = 5403h
  3900.     ES:DX = process swapping out
  3901. Note:    called by OmniView to notify programs loaded before OmniView of state
  3902.       changes inside OmniView
  3903. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  3904. --------T-155404-----------------------------
  3905. INT 15 C - Omniview Multitasker - RESTORE
  3906.     AX = 5404h
  3907.     ES:DX = process swapping in
  3908. Note:    called by OmniView to notify programs loaded before OmniView of state
  3909.       changes inside OmniView
  3910. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  3911. --------T-155405-----------------------------
  3912. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  3913.     AX = 5405h
  3914.     ES:DX = process swapping in
  3915. Note:    called by OmniView to notify programs loaded before OmniView of state
  3916.       changes inside OmniView
  3917. SeeAlso: AX=5406h
  3918. --------T-155406-----------------------------
  3919. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  3920.     AX = 5406h
  3921.     ES:DX = process swapping in
  3922. Note:    called by OmniView to notify programs loaded before OmniView of state
  3923.       changes inside OmniView
  3924. SeeAlso: AX=5405h
  3925. --------T-155407-----------------------------
  3926. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  3927.     AX = 5407h
  3928. Note:    called by OmniView to notify programs loaded before OmniView of state
  3929.       changes inside OmniView
  3930. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  3931. --------V-155F31-----------------------------
  3932. INT 15 C - Chips & Technologies '65530' BIOS - POST INITIALIZATION NOTIFICATION
  3933.     AX = 5F31h
  3934. Return:    nothing
  3935. Desc:    this function is called after the video BIOS completes power-up
  3936.       initialization and just prior to displaying the sign-on message
  3937. SeeAlso: AX=5F33h,AX=5F35h,INT 10/AX=5F50h
  3938. --------V-155F33-----------------------------
  3939. INT 15 C - Chips & Technologies '65530' BIOS - MODE SET HOOK
  3940.     AX = 5F33h
  3941.     BL = current width in characters
  3942.     BH = curent video mode
  3943.     CH = active display page
  3944. Return:    nothing
  3945. Desc:    this function is called at the end of a video mode set
  3946. Note:    the OEM has the option of enabling or disabling this callout, as well
  3947.       as specifying whether the callout occurs on INT 15h or INT 42h
  3948. SeeAlso: AX=5F31h,AX=5F35h,INT 10/AX=5F50h,INT 42/AX=5F33h
  3949. --------V-155F35-----------------------------
  3950. INT 15 C - Chips & Technologies '65530' BIOS - MONITOR SENSING HOOK
  3951.     AX = 5F35h
  3952. Return:    DL = boot display
  3953.         00h CRT
  3954.         01h flat panel (LCD)
  3955.         02h both simultaneously
  3956.         leave unchanged to boot according to BIOS settings
  3957. SeeAlso: AX=5F31h,AX=5F33h,INT 10/AX=5F50h
  3958. --------b-1560------------------------------------
  3959. INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
  3960.     AH = 60h
  3961.     AL = new speed
  3962.         00h normal (8 MHz)
  3963.         01h Slow Mode 1 (4 MHz)
  3964.         02h Slow Mode 2 (2 MHz)
  3965. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  3966.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  3967. SeeAlso: AX=6301h
  3968. --------p-156000-----------------------------
  3969. INT 15 U - HP 100LX/200LX - GET MAIN BATTERY LEVEL
  3970.     AX = 6000h
  3971. Return: AX = battery level
  3972. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  3973. SeeAlso: AX=6001h,AX=6002h,AX=6003h,AX=6004h
  3974. --------p-156001-----------------------------
  3975. INT 15 U - HP 100LX/200LX - GET BACKUP BATTERY LEVEL
  3976.     AX = 6001h
  3977. Return: AX = battery level
  3978. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  3979. SeeAlso: AX=6000h,AX=6002h
  3980. --------p-156002-----------------------------
  3981. INT 15 U - HP 100LX/200LX - GET POWER INFO
  3982.     AX = 6002h
  3983. Return: AL = power settings (see #0419)
  3984. SeeAlso: AX=6000h,AX=6003h,AX=6004h
  3985.  
  3986. Bitfields for power settings:
  3987. Bit(s)    Description    (Table 0419)
  3988.  0-1    unused ???
  3989.  2    card battery status low (OK if bit clear)
  3990.  3    battery charging off (disabled if bits 3-5 clear)
  3991.  4    battery charging slow
  3992.  5    battery charging fast
  3993.  6    power adaptor active
  3994.  7    battery type NiCad (alkaline if bit clear)
  3995. --------p-156003-----------------------------
  3996. INT 15 U - HP 100LX/200LX - SET MAIN BATTERY TYPE
  3997.     AX = 6003h
  3998.     BL = battery type
  3999.         00h alkaline
  4000.         01h NiCad
  4001. SeeAlso: AX=6000h,AX=6004h
  4002. --------p-156004-----------------------------
  4003. INT 15 U - HP 100LX/200LX - SET BATTERY CHARGING MODE
  4004.     AX = 6004h
  4005.     BL = charging
  4006.         00h disabled
  4007.         01h enabled
  4008. SeeAlso: AX=6000h,AX=6003h
  4009. --------b-1561------------------------------------
  4010. INT 15 - HUNTER 16 - GET POWER LEVEL
  4011.     AH = 61h
  4012. Return: AH = percentage of full power left (0..100)
  4013. Desc:    determine how much battery power is left
  4014. SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
  4015. --------b-1561-------------------------------
  4016. INT 15 U - HP 100LX/200LX - SET ANNOUNCIATORS POSITION
  4017.     AH = 61h
  4018.     AL = position (20h = left, 60h = right)
  4019. Note:    The announciators are the indicator symbols for the Shift and Fn keys
  4020.       in the bottom line
  4021. SeeAlso: AH=62h"HP",INT 16/AH=02h
  4022. --------b-1562------------------------------------
  4023. INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
  4024.     AH = 62h
  4025.     AL = level (00h 5%, 01h 10%, ... 12h 95%)
  4026.     BX = interval between power low warnings in seconds (1..600)
  4027. Return: AH = Status
  4028. Desc:    set the level (relative to full power) when power-low warnings begin
  4029.       and the interval between the warnings
  4030. SeeAlso: AH=61h,AH=65h,AH=66h
  4031. --------b-1562-------------------------------
  4032. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTRAST
  4033.     AH = 62h
  4034.     BL = contrast (00h-1Fh, 1Fh is the darkest)
  4035. SeeAlso: AH=47h"HP",AH=61h"HP"
  4036. --------b-156300----------------------------------
  4037. INT 15 - HUNTER 16 - GET IDLE TIMEOUT
  4038.     AX = 6300h
  4039. Return: AH = status
  4040.     BX = timeout in seconds (0-3600)
  4041. Desc:    get the idle timeout value, the interval without keyboard or
  4042.        communications activity before the system shuts down
  4043. SeeAlso: AX=6301h
  4044. --------b-156301----------------------------------
  4045. INT 15 - HUNTER 16 - SET IDLE TIMEOUT
  4046.     AX = 6301h
  4047.     BX = timeout in seconds (0-3600)
  4048. Desc:    sets the idle timeout value, the interval without keyboard or
  4049.       communications activity before the system shuts down
  4050. SeeAlso: AX=6300h
  4051. --------b-1564------------------------------------
  4052. INT 15 - HUNTER 16 - CONTROL RESUME MODE
  4053.     AH = 64h
  4054.     AL = new state
  4055.         00h disable Resume mode
  4056.         01h enable Resume mode
  4057. Return: AH = status
  4058. Desc:    turn Resume mode on or off. In Resume mode the system starts in
  4059.       the application that was running when it shut down as if nothing
  4060.       had happened.
  4061. SeeAlso: AH=67h,AH=68h,AH=69h
  4062. --------b-1565------------------------------------
  4063. INT 15 - HUNTER 16 - AUTHORISE CHARGING
  4064.     AH = 65h
  4065.     AL = charging level
  4066.         01h charging not allowed
  4067.         02h charging allowed until power down
  4068.         03h charging allowed until batteries changed or fail.
  4069.         Ask user if charging is still allowed on next poweron
  4070.         04h charging allowed indefinitely
  4071.     BX = 0203h
  4072.     CX = 0405h
  4073.     DX = 0607h
  4074. Return: AH = status
  4075. SeeAlso: AH=66h,AH=68h
  4076. --------b-1566------------------------------------
  4077. INT 15 - HUNTER 16 - SET BATTERY LEVEL
  4078.     AH = 66h
  4079.     AL = level in percent of maximum (0..100)
  4080. Return: AH = status
  4081. SeeAlso: AH=61h,AH=65h
  4082. --------b-1567------------------------------------
  4083. INT 15 - HUNTER 16 - CONTROL STOP MODE
  4084.     AH = 67h
  4085.     AL = mode when waiting for input
  4086.         00h use STOP mode (allows communication)
  4087.         01h use HALT mode (disallows communication)
  4088. Return: AH = status
  4089. Desc:    select the power save mode to use when waiting for input
  4090. SeeAlso: AH=69h
  4091. --------b-1568------------------------------------
  4092. INT 15 - HUNTER 16 - REQUEST POWER DOWN
  4093.     AH = 68h
  4094. Desc:    turns off the Hunter 16 if power down is allowed (see AH=69h)
  4095. SeeAlso: AH=69h
  4096. --------b-1569------------------------------------
  4097. INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
  4098.     AH = 69h
  4099.     AL = mode
  4100.         00h inhibit power down
  4101.         01h allow power down
  4102. Return: AH = status
  4103. SeeAlso: AH=67h,AH=68h,AH=6Ah
  4104. --------b-156A------------------------------------
  4105. INT 15 - HUNTER 16 - CONTROL SLOW MODE
  4106.     AH = 6Ah
  4107.     AL = mode
  4108.         00h inhibit Slow mode
  4109.         01h allow Slow mode
  4110. Return: AH = status
  4111. SeeAlso: AH=69h
  4112. --------b-156B------------------------------------
  4113. INT 15 - HUNTER 16 - GET ROM BIOS VERSION
  4114.     AH = 6Bh
  4115. Return: BH = version number (ASCII)
  4116.     BL = release number (ASCII)
  4117.     CH = major??? release number (ASCII)
  4118.     CL = minor??? release number (ASCII)
  4119. SeeAlso: AH=6Ch
  4120. --------b-156C------------------------------------
  4121. INT 15 - HUNTER 16 - GET SERIAL NUMBER
  4122.     AH = 6Ch
  4123. Return: BL:CX = BCD serial number
  4124. Note:    when shipped, all Hunter 16s have the same Serial Number, but a
  4125.       different number can be stored (see AH=72h)
  4126. SeeAlso: AH=6Bh,AH=72h
  4127. --------b-156D------------------------------------
  4128. INT 15 - HUNTER 16 - GET EVENT DETAIL
  4129.     AH = 6Dh
  4130. Return: AH = 00h if successful
  4131.     CX:BX = event flags bit 0..31 (see #0420)
  4132. Note:    this function allows testing for events
  4133. SeeAlso: AH=6Eh,AH=6Fh
  4134.  
  4135. Bitfields for HUNTER 16 events:
  4136. Bit(s)    Description    (Table 0420)
  4137.  6    RI received
  4138.  5    RTC Alarm
  4139.  4    data received on COM2
  4140.  3    data received on COM1
  4141.  2    error on COM2
  4142.  1    error on COM1
  4143.  0    PWR button pressed
  4144. --------b-156E------------------------------------
  4145. INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
  4146.     AH = 6Eh
  4147.     AL = Software Interrupt
  4148.           00h  do not trap event
  4149.           else trap as software interrupt number AL
  4150.     BH = event number (see AH=6Dh)
  4151.     BL = enable mask
  4152.         00h disable event
  4153.         01h enable event
  4154. Return: AH = 00h if successful
  4155. SeeAlso: AH=6Dh,AH=6Fh
  4156. --------b-156F------------------------------------
  4157. INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
  4158.     AH = 6Fh
  4159.     AL = event number (see AH=6Dh)
  4160. Return: AH = 00h if successful
  4161. Desc:    Acknowledges the event, so the next similar event can be detected
  4162. SeeAlso: AH=6Dh"HUNTER",AH=6Eh
  4163. --------b-1570------------------------------------
  4164. INT 15 - HUNTER 16 - CONTROL SOUND
  4165.     AH = 70h
  4166.     AL = new state
  4167.         00h disable sound
  4168.         else enable sound
  4169. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  4170.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  4171. --------x-157000-----------------------------
  4172. INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
  4173.     AX = 7000h
  4174.     BL = number of word to read (00h-3Fh)
  4175. Return: CF clear if function supported
  4176.         DX = contents of EEPROM word
  4177. Note:    newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
  4178.       the clock chip to store system configuration information
  4179. SeeAlso: AX=7001h
  4180. --------x-157001-----------------------------
  4181. INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
  4182.     AX = 7001h
  4183.     BL = number of word to read (00h-3Fh)
  4184.     DX = new value for EEPROM word
  4185. Return: CF clear if function supported
  4186. Note:    the EEPROMs are normally written only by the system setup program;
  4187.       changing the values can badly mess up a Tandy
  4188. SeeAlso: AX=7000h
  4189. ----------157002-----------------------------
  4190. INT 15 U - Tandy 1000 Model ??? - GET ROM PAGE
  4191.     AX = 7002h
  4192. Return: AL = ROM page mapped at 0E0000h (0-6 (13?))
  4193. Note:    some Tandy machines have DOS and DeskMate in a 512k paged ROM.    The
  4194.       BIOS uses this call to determine what ROM page is mapped in the 64k
  4195.       segment at 0E0000h.
  4196.     the 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  4197.       0F0000h.  There may be 16 32k ROM pages on other systems.
  4198. SeeAlso: AX=7003h,INT E0"DeskMate"
  4199. ----------157003-----------------------------
  4200. INT 15 U - Tandy 1000 Model ??? - SET ROM PAGE
  4201.     AX = 7003h
  4202.     DL = ROM page to be mapped at 0E0000h (0-6 (13?))
  4203. Return: CF clear if valid ROM page specified
  4204. Note:    Some Tandy machines have DOS and DeskMate in a 512k paged ROM.    The
  4205.       BIOS uses this call to map ROM pages in the 64k segment at 0E0000h.
  4206.     The 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  4207.       0F0000h.  There may be 16 32k ROM pages on other systems.
  4208. SeeAlso: AX=7002h,INT E0"DeskMate"
  4209. --------b-1571------------------------------------
  4210. INT 15 - HUNTER 16 - SELECT POWER UP KEYS
  4211.     AH = 71h
  4212.     BL = column
  4213.     BH = row
  4214.     AL = column switch (00h disable, 01h enable)
  4215.     CL = row switch (00h disable, 01h enable)
  4216. Return: AH = status
  4217. SeeAlso: AH=7Bh,AH=88h
  4218. --------b-157200----------------------------------
  4219. INT 15 - HUNTER 16 - RESET SERIAL NUMBER
  4220.     AX = 7200h
  4221. Return: AH = 00h if successful
  4222. Desc:    reset the serial number to the default serial number present when the
  4223.       Hunter 16 was shipped
  4224. SeeAlso: AH=6Ch,AH=72h
  4225. --------b-1572------------------------------------
  4226. INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
  4227.     AH = 72h
  4228.     AL nonzero
  4229.     DS:BX -> new serial number (6 ASCII digits)
  4230. Return: AH = 00h if successful
  4231. Desc:    install a new serial number
  4232. SeeAlso: AH=6Ch,AX=7200h
  4233. --------b-1573------------------------------------
  4234. INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
  4235.     AH = 73h
  4236.     AL = drive (0: A:, 1: B:)
  4237. Return: AH = status
  4238.         00h successful
  4239.         FFh Oracle GT drive not connected
  4240.     AL = power level in percent of maximum (0..100)
  4241. Desc:    get the power remaining in the Oracle GT batteries
  4242. SeeAlso: AH=61h
  4243. --------b-1574------------------------------------
  4244. INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
  4245.     AH = 74h
  4246.     AL = new level
  4247.         01h off
  4248.         02h unchanged
  4249.         03h change level
  4250.         BL = desired level (00h-7Fh)
  4251. Return: AH = status
  4252. Desc:    select the backlight level to use when the Hunter is next turned on
  4253. SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
  4254. --------b-1575------------------------------------
  4255. INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
  4256.     AH = 75h
  4257.     AL = new level
  4258.         01h off
  4259.         02h unchanged
  4260.         03h change level
  4261.         BL = desired level (00h-7Fh)
  4262. Return: AH = status
  4263. Desc:    select the LCD contrast level to use when the Hunter is next turned on
  4264. SeeAlso: AH=63h,AH=74h
  4265. --------b-1576------------------------------------
  4266. INT 15 - HUNTER 16 - CONTROL POWER SAVE
  4267.     AH = 76h
  4268.     BX = power save control (see #0421)
  4269. SeeAlso: AH=74h
  4270.  
  4271. Bitfields for HUNTER 16 power save control:
  4272. Bit(s)    Description    (Table 0421)
  4273.  0    power save enabled
  4274.  1    inhibit power save when waiting for COM1 data
  4275.  2    inhibit power save when waiting for COM2 data
  4276.  3    inhibit power save when waiting for data from barcode wand
  4277.  4    inhibit power up on timer tick
  4278. --------b-1579------------------------------------
  4279. INT 15 - HUNTER 16 - REDIRECT LPT1
  4280.     AH = 79h
  4281.     AL = port to which to redirect (00h COM1, 01h COM2)
  4282. --------b-157A------------------------------------
  4283. INT 15 - HUNTER 16 - INVOKE HOT KEY
  4284.     AH = 7Ah
  4285. Desc:    this function has the same effect as pressing the HOT key
  4286. SeeAlso: AH=7Bh
  4287. --------b-157B------------------------------------
  4288. INT 15 - HUNTER 16 - CONTROL HOT KEY
  4289.     AH = 7Bh
  4290.     AL = 00h prevent HOT key
  4291.         else allow HOT key
  4292. Desc:    Allow or prevent the HOT key function which is used to examine and
  4293.       change the Hunter setup
  4294. SeeAlso: AH=71h,AH=7Ah,AH=7Ch
  4295. --------b-157C------------------------------------
  4296. INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
  4297.     AH = 7Ch
  4298.     AL = 00h prevent HOT key power option
  4299.         else allow HOT key power option
  4300. Desc:    allow or prevent changing the power options
  4301. SeeAlso: AH=7Bh,AH=7Dh
  4302. --------b-157D------------------------------------
  4303. INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
  4304.     AH = 7Dh
  4305.     AL = 00h turn off after 10 warnings
  4306.         else never turn off
  4307. Desc:    specify whether the Hunter 16 turns off after 10 low power warnings
  4308. SeeAlso: AH=7Ch
  4309. --------b-157E------------------------------------
  4310. INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
  4311.     AH = 7Eh
  4312.     AL = 00h do not prompt
  4313.         else prompt
  4314. Desc:    select whether the user is prompted for the battery state if the
  4315.       battery cap has been off when the system is turned on
  4316. SeeAlso: AH=7Fh
  4317. --------b-157F------------------------------------
  4318. INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
  4319.     AH = 7Fh
  4320.     AL = battery type
  4321.         00h     non-rechargeable
  4322.         else rechargeable
  4323. SeeAlso: AH=7Eh
  4324. --------B-1580-------------------------------
  4325. INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
  4326.     AH = 80h
  4327.     BX = device ID
  4328.     CX = process ID
  4329.     CF clear
  4330. Return: CF clear if successful
  4331.         AH = 00h
  4332.     CF set on error
  4333.         AH = status (see #0422)
  4334. Note:    this function should be hooked by a multitasker which wishes to keep
  4335.       track of device ownership; the default BIOS handler merely returns
  4336.       successfully
  4337. SeeAlso: AH=81h,AH=82h
  4338.  
  4339. (Table 0422)
  4340. Values for status:
  4341.  80h    invalid command (PC,PCjr)
  4342.  86h    function not supported (XT)
  4343. --------b-1580------------------------------------
  4344. INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
  4345.     AH = 80h
  4346.     AL = function
  4347.         00h get
  4348.         Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
  4349.         else set
  4350.         BL = battery capacity (same as AL above)
  4351. SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
  4352. --------B-1581-------------------------------
  4353. INT 15 C - OS HOOK - DEVICE CLOSE
  4354.     AH = 81h
  4355.     BX = device ID
  4356.     CX = process ID
  4357.     CF clear
  4358. Return: CF clear if successful
  4359.         AH = 00h
  4360.     CF set on error
  4361.         AH = status (see #0422)
  4362. Note:    this function should be hooked by a multitasker which wishes to keep
  4363.       track of device ownership; the default BIOS handler merely returns
  4364.       successfully
  4365. SeeAlso: AH=80h,AH=82h
  4366. --------b-1581------------------------------------
  4367. INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
  4368.     AH = 81h
  4369.     AL = new state of power output (00h off, nonzero on)
  4370. Desc:    turn the +5V low power output on or off
  4371. SeeAlso: AH=80h"HUNTER"
  4372. --------B-1582-------------------------------
  4373. INT 15 C - OS HOOK - PROGRAM TERMINATION
  4374.     AH = 82h
  4375.     BX = process ID
  4376.     CF clear
  4377. Return: CF clear if successful
  4378.         AH = 00h
  4379.     CF set on error
  4380.         AH = status (see #0422)
  4381. Notes:    closes all devices opened by the given process ID with function 80h
  4382.     this function should be hooked by a multitasker which wishes to keep
  4383.       track of device ownership; the default BIOS handler merely returns
  4384.       successfully
  4385. SeeAlso: AH=80h,AH=81h
  4386. --------b-1582------------------------------------
  4387. INT 15 - HUNTER 16 - SOUND OUTPUT
  4388.     AH = 82h
  4389.     DX = length (duration in seconds = DX * 666670 / frequency)
  4390.     BX = pitch (see #0423)
  4391. Desc:    Sound the tone specified in BX for the duration in DX
  4392. SeeAlso: AX=1019h
  4393.  
  4394. (Table 0423)
  4395. Values for HUNTER 16 sound pitch:
  4396. BX(dec)     Note    Frequency    BX(dec)     Note    Frequency
  4397.   425    G    1568.000     1515    A     440.000
  4398.   451    F#    1479.503     1605    G#     415.307
  4399.   477    F    1396.900     1701    G     392.000
  4400.   506    E    1318.500     1802    F#     369.998
  4401.   536    D#    1244.523     1909    F     349.230
  4402.   568    D    1174.700     2022    E     329.630
  4403.   601    C#    1108.749     2143    D#     311.127
  4404.   637    C    1046.500     2270    D     293.660
  4405.   675    B     958.770     2405    C#     277.183
  4406.   715    A#     932.329     2548    MID C     261.630
  4407.   758    A     880.000     2700    B     246.940
  4408.   803    G#     830.609     2860    A#     233.081
  4409.   850    G     783.990     3030    A     220.000
  4410.   901    F#     739.990     3210    G#     207.654
  4411.   954    F     698.460     3401    G     196.000
  4412.  1011    E     659.260     3604    F#     184.996
  4413.  1071    D#     622.257     3818    F     174.610
  4414.  1135    D     587.330     4045    E     164.810
  4415.  1203    C#     554.365     4286    D#     155.560
  4416.  1274    C     523.250     4540    D     146.830
  4417.  1350    B     493.880     4668    C#     142.827
  4418.  1430    A#     466.162     4803    C     138.810
  4419. --------B-1583-------------------------------
  4420. INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
  4421.     AH = 83h
  4422.     AL = subfunction
  4423.         00h set interval
  4424.         CX:DX = microseconds to delay
  4425.         ES:BX -> byte whose high bit is to be set at end of interval
  4426.         01h cancel wait interval
  4427. Return: CF set on error or function already busy
  4428.         AH = status
  4429.         80h invalid command (PC,PCjr)
  4430.         86h function not supported (XT and later)
  4431.     CF clear if successful
  4432. Notes:    the resolution of the wait period is 977 microseconds on many systems
  4433.       because many BIOSes use the 1/1024 second fast interrupt from the AT
  4434.       real-time clock chip which is available on INT 70
  4435.     IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
  4436. SeeAlso: AH=41h,AH=86h,INT 70,MEM 0040h:0098h,MEM 0040h:009Ch
  4437. --------b-1583------------------------------------
  4438. INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
  4439.     AH = 83h
  4440.     AL = state of LCD window (00h disabled, nonzero enabled)
  4441. Desc:    Enable/disable the facility where the displayed window tracks the
  4442.       cursor output to keep the focus visible
  4443. --------B-1584-------------------------------
  4444. INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
  4445.     AH = 84h
  4446.     DX = subfunction
  4447.         0000h read joystick switches
  4448.         Return: AL bits 7-4 = switch settings
  4449.         0001h read positions of joysticks
  4450.         Return: AX = X position of joystick A
  4451.             BX = Y position of joystick A
  4452.             CX = X position of joystick B
  4453.             DX = Y position of joystick B
  4454. Return: CF set on error
  4455.         AH = status (see #0422)
  4456.     CF clear if successful
  4457. Notes:    if no game port is installed, subfunction 0000h returns AL=00h (all
  4458.       switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
  4459.     a 250kOhm joystick typically returns 0000h-01A0h
  4460. SeeAlso: AH=84h"V20-XT-BIOS"
  4461. --------b-1584-------------------------------
  4462. INT 15 - V20-XT-BIOS - JOYSTICK SUPPORT
  4463.     AH = 84h
  4464.     DX = subfunction
  4465.         0000h read joystick switches
  4466.         Return: AL bits 7-4 = switch settings
  4467.         other: read positions of joysticks as indicated by bits 0-3
  4468.         Return: AX = X position of joystick A (if DX bit 0 set)
  4469.             BX = Y position of joystick A (if DX bit 1 set)
  4470.             CX = X position of joystick B (if DX bit 2 set)
  4471.             DX = Y position of joystick B (if DX bit 3 set)
  4472. Return: CF set on error
  4473.         AH = status (see #0422)
  4474.     CF clear if successful
  4475. Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
  4476.        Koehlmann / c't magazine
  4477. SeeAlso: AH=84h"PS",INT 10/AH=0Eh/CX=ABCDh
  4478. --------b-158400----------------------------------
  4479. INT 15 - HUNTER 16 - GET DISKETTE PORT
  4480.     AX = 8400h
  4481.     BH = Drive (0: A:, 1: B:)
  4482. Return: AL = Port (0: COM1, >0: COM2)
  4483. Desc:    return the COM port used for the floppy drive
  4484. SeeAlso: AX=8401h
  4485. --------b-158401----------------------------------
  4486. INT 15 - HUNTER 16 - SET DISKETTE PORT
  4487.     AX = 8401h
  4488.     BH = Drive (0: A:, 1: B:)
  4489.     BL = Port (0: COM1, >0: COM2)
  4490. Desc:    set the COM port used for the floppy drive
  4491. SeeAlso: AX=8400h
  4492. --------B-1585-------------------------------
  4493. INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
  4494.     AH = 85h
  4495.     AL = SysReq key action (00h pressed, 01h released)
  4496.     CF clear
  4497. Return: CF clear if successful
  4498.         AH = 00h
  4499.     CF set on error
  4500.         AH = status (see #0422)
  4501. Notes:    called by keyboard decode routine
  4502.     the default handler simply returns successfully; programs which wish
  4503.       to monitor the SysReq key must hook this call
  4504.     the SysReq key is often labeled SysRq
  4505. SeeAlso: INT 09
  4506. --------b-158500----------------------------------
  4507. INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
  4508.     AX = 8500h
  4509. Desc:    restore the standard power menu
  4510. SeeAlso: AX=8501h"HUNTER"
  4511. --------b-158501----------------------------------
  4512. INT 15 - HUNTER 16 - SET POWER MENU (APM)
  4513.     AX = 8501h
  4514.     BL = user software interrupt number
  4515. Desc:    install an alternate power menu routine
  4516. SeeAlso: AX=8500h"HUNTER"
  4517. --------B-1586-------------------------------
  4518. INT 15 - BIOS - WAIT (AT,PS)
  4519.     AH = 86h
  4520.     CX:DX = interval in microseconds
  4521. Return: CF clear if successful (wait interval elapsed)
  4522.     CF set on error or AH=83h wait already in progress
  4523.         AH = status (see #0422)
  4524. Note:    the resolution of the wait period is 977 microseconds on many systems
  4525.       because many BIOSes use the 1/1024 second fast interrupt from the AT
  4526.       real-time clock chip which is available on INT 70; because newer
  4527.       BIOSes may have much more precise timers available, it is not
  4528.       possible to use this function accurately for very short delays unless
  4529.       the precise behavior of the BIOS is known (or found through testing)
  4530. SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
  4531. --------b-1586------------------------------------
  4532. INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
  4533.     AH = 86h
  4534.     AL = function (00h get, nonzero set)
  4535.     BX = 1234h
  4536.     DS:SI -> 256-byte Attribute buffer
  4537. Note:    In text modes each character has its attribute byte XOR'd with the
  4538.       corresponding byte in the attribute table.  If the attribute is 15,
  4539.       15 is XOR'd with Table[15]
  4540. --------B-1587-------------------------------
  4541. INT 15 - SYSTEM - COPY EXTENDED MEMORY
  4542.     AH = 87h
  4543.     CX = number of words to copy (max 8000h)
  4544.     ES:SI -> global descriptor table (see #0425)
  4545. Return: CF set on error
  4546.     CF clear if successful
  4547.     AH = status (see #0424)
  4548. Notes:    copy is done in protected mode with interrupts disabled by the default
  4549.       BIOS handler; many 386 memory managers perform the copy with
  4550.       interrupts enabled
  4551.     this function is incompatible with the OS/2 compatibility box
  4552. SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
  4553.  
  4554. (Table 0424)
  4555. Values for extended-memory copy status:
  4556.  00h    source copied into destination
  4557.  01h    parity error
  4558.  02h    interrupt error
  4559.  03h    address line 20 gating failed
  4560.  80h    invalid command (PC,PCjr)
  4561.  86h    unsupported function (XT,PS30)
  4562.  
  4563. Format of global descriptor table:
  4564. Offset    Size    Description    (Table 0425)
  4565.  00h 16 BYTEs    zeros (used by BIOS)
  4566.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  4567.  12h  3 BYTEs    24-bit linear source address, low byte first
  4568.  15h    BYTE    source segment access rights (93h)
  4569.  16h    WORD    (286) zero
  4570.         (386+) extended access rights and high byte of source address
  4571.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  4572.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  4573.  1Dh    BYTE    destination segment access rights (93h)
  4574.  1Eh    WORD    (286) zero
  4575.         (386+) extended access rights and high byte of destin. address
  4576.  20h 16 BYTEs    zeros (used by BIOS to build CS and SS descriptors)
  4577. --------b-1587------------------------------------
  4578. INT 15 - HUNTER 16 - SET INT 72h VECTOR
  4579.     AH = 87h
  4580.     DS:DX = new service routine
  4581. Desc:    set the INT 72h vector which is called in 2 cases:
  4582.       - when the machine is about to turn off or reboot, INT 72h is called
  4583.         with AH=0
  4584.       - when the machine is powering up INT 72h is called with AH=01h
  4585. Note:    the actual INT 72h vector must also be changed with INT 21/AH=25h
  4586. --------B-1588-------------------------------
  4587. INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
  4588.     AH = 88h
  4589. Return: CF clear if successful
  4590.         AX = number of contiguous KB starting at absolute address 100000h
  4591.     CF set on error
  4592.         AH = status
  4593.         80h invalid command (PC,PCjr)
  4594.         86h unsupported function (XT,PS30)
  4595. Notes:    TSRs which wish to allocate extended memory to themselves often hook
  4596.       this call, and return a reduced memory size.    They are then free to
  4597.       use the memory between the new and old sizes at will.
  4598.     the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
  4599.       for memory beyond 16MB
  4600.     not all BIOSes correctly return the carry flag, making this call
  4601.       unreliable unless one first checks whether it is supported through
  4602.       a mechanism other than calling the function and testing CF
  4603. SeeAlso: AH=87h,AH=8Ah"Phoenix",AH=C7h,AX=DA88h,AX=E801h,AX=E820h
  4604. --------b-1588------------------------------------
  4605. INT 15 - HUNTER 16 - GET POWER UP KEYS
  4606.     AH = 88h
  4607. Return: AH = 00h
  4608.     BX = column
  4609.     CL = row
  4610. SeeAlso: AH=71h
  4611. --------B-1589-------------------------------
  4612. INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
  4613.     AH = 89h
  4614.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  4615.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  4616.     ES:SI -> GDT for protected mode (see #0426)
  4617. Return: CF set on error
  4618.        AH = FFh  error enabling address line 20
  4619.     CF clear if successful
  4620.        AH = 00h
  4621.        in protected mode at specified address
  4622.        BP may be destroyed; all segment registers change
  4623. Notes:    BL and BH must be multiples of 8
  4624.     the protected-mode CS must reference the same memory as the CS this
  4625.       function is called from because execution continues with the address
  4626.       following the interrupt call
  4627. SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
  4628.  
  4629. Format of BIOS switch-to-protected-mode Global Descriptor Table:
  4630. Offset    Size    Description    (Table 0426)
  4631.  00h  8 BYTEs    null descriptor (initialize to zeros)
  4632.  08h  8 BYTEs    GDT descriptor (see #0427)
  4633.  10h  8 BYTEs    IDT descriptor
  4634.  18h  8 BYTEs    DS descriptor
  4635.  20h  8 BYTEs    ES
  4636.  28h  8 BYTEs    SS
  4637.  30h  8 BYTEs    CS
  4638.  38h  8 BYTEs    uninitialized, used to build descriptor for BIOS CS
  4639.  
  4640. Format of segment descriptor table entry:
  4641. Offset    Size    Description    (Table 0427)
  4642.  00h    WORD    segment limit, low word
  4643.  02h  3 BYTEs    segment base address, low 24 bits
  4644.  05h    BYTE    access mode (see #0428)
  4645.  06h    BYTE    386+ extended access mode (see #0429)
  4646.  07h    BYTE    386+ segment base address, high 8 bits
  4647. SeeAlso: #0426,INT 2C/AX=0002h,INT 31/AX=0009h
  4648.  
  4649. Bitfields for segment descriptor table access mode field:
  4650. Bit(s)    Description    (Table 0428)
  4651.  3-0    segment type (see #3724,#3725)
  4652.  4    descriptor type (1 = application, 0 = system)
  4653.  6-5    descriptor privilege level
  4654.  7    segment is present in RAM
  4655. SeeAlso: #0427,#0429
  4656.  
  4657. (Table 3724)
  4658. Values for system segment descriptor type:
  4659.  0    reserved
  4660.  1    available 16-bit TSS
  4661.  2    LDT
  4662.  3    busy 16-bit TSS
  4663.  4    16-bit call gate
  4664.  5    task gate
  4665.  6    16-bit interrupt gate
  4666.  7    16-bit trap gate
  4667.  8    reserved
  4668.  9    available 32-bit TSS
  4669.  10    reserved
  4670.  11    busy 32-bit TSS
  4671.  12    32-bit call gate
  4672.  13    reserved
  4673.  14    32-bit interrupt gate
  4674.  15    32-bit trap gate
  4675. SeeAlso: #0428,#3725
  4676.  
  4677. Bitfields for application segment descriptor type:
  4678. Bit(s)    Description    (Table 3725)
  4679.  3    code/data
  4680.     0 date
  4681.     1 code
  4682. ---data segments---
  4683.  2    expand down
  4684.  1    writeable
  4685. ---code segments---
  4686.  2    conforming
  4687.  1    readable
  4688. ------
  4689.  0    accessed
  4690. SeeAlso: #0428,#3724
  4691.  
  4692. Bitfields for 386+ segment descriptor table extended access mode field:
  4693. Bit(s)    Description    (Table 0429)
  4694.  3-0    high 4 bits of segment limit
  4695.  4    available
  4696.  5    reserved (0)
  4697.  6    default operation size (1 = 32 bits, 0 = 16 bits)
  4698.  7    granularity (1 = 4K, 0 = byte)
  4699. SeeAlso: #0427,#0428,#2245
  4700. --------b-158900----------------------------------
  4701. INT 15 - HUNTER 16 - GET POWER MODE
  4702.     AX = 8900h
  4703. Return: AH = 00h
  4704.     BL = current power mode
  4705.         00h Standard Power Mode (SPM)
  4706.         01h Advanced Power Mode (APM)
  4707. SeeAlso: AX=8901h
  4708. --------b-158901----------------------------------
  4709. INT 15 - HUNTER 16 - SET POWER MODE
  4710.     AX = 8901h
  4711.     BL = new mode
  4712.         00h Standard Power Mode (SPM)
  4713.         01h Advanced Power Mode (APM)
  4714. Return: AH = 00h
  4715. SeeAlso: AX=8900h
  4716. --------b-158A------------------------------------
  4717. INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
  4718.     AH = 8Ah
  4719.     AL = new state of Power Input (00h disabled, nonzero enabled)
  4720.     SI = 1234h
  4721.     DI = 5678h
  4722. Return: AH = status
  4723.         00h success
  4724.         FFh failure
  4725. Desc:    Enable or disable Power Input. When Power Input is disabled the AC
  4726.       adapter will neither charge the batteries nor supply power to the
  4727.       Hunter 16. Disable Power Input if using Alkaline batteries.
  4728. --------b-158A-------------------------------
  4729. INT 15 - Phoenix BIOS v4.0 - GET BIG MEMORY SIZE
  4730.     AH = 8Ah
  4731. Return: DX:AX = extended memory size in K
  4732. SeeAlso: AH=88h,AX=E801h,AX=E820h
  4733. --------b-158B------------------------------------
  4734. INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
  4735.     AH = 8Bh
  4736.     AL = function
  4737.         00h get
  4738.         Return:    BH = Maximum charging temperature
  4739.                 Temp = -20 + (n * 0.63) degrees Centigrade
  4740.             BL = Minimum charging temperature
  4741.         else set
  4742.         BH = maximum charging temperature (as above)
  4743.         BL = minimum charging temperature (as above)
  4744. Return: AH = status
  4745.         00h success
  4746.         FFh failure
  4747. Desc:    get/set the temperature interval within which the charger should
  4748.       operate
  4749. --------b-158C------------------------------------
  4750. INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
  4751.     AH = 8Ch
  4752.     AL = function
  4753.         00h get
  4754.         Return: BX = which operations disable power save (see #0430)
  4755.         else set
  4756.         BX = which operations should disable power save (see #0430)
  4757. SeeAlso: AH=8Dh
  4758.  
  4759. Bitfields for HUNTER 16 operations disabling power save:
  4760. Bit(s)    Description    (Table 0430)
  4761.  0    INT 10h prevents power save
  4762.  1    INT 13h prevents power save
  4763.  2    INT 14h prevents power save
  4764.  3    INT 15h prevents power save
  4765.  4    INT 1Ah prevents power save
  4766.  5    INT 21h prevents power save
  4767.  6    direct write to video RAM prevents power save
  4768.  7    access to 8250 UART prevents power save
  4769.  8    access to 8253 (Sound) prevents power save
  4770. --------b-158D------------------------------------
  4771. INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
  4772.     AH = 8Dh
  4773.     AL = function
  4774.         00h get
  4775.         Return: AL = Fast Charge state (00h prevented, else allowed)
  4776.         nonzero set
  4777.         BH = Fast Charge state (00h prevent, nonzero allow)
  4778. Return: AH = status
  4779.         00h success
  4780.         FFh failure
  4781. Desc:    control whether Fast Charging (200ma rather than 70ma) is allowed
  4782. SeeAlso: AH=8Ch
  4783. --------B-1590-------------------------------
  4784. INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
  4785.     AH = 90h
  4786.     AL = device type (see #0431)
  4787.     ES:BX -> request block for type codes 80h through BFh
  4788.     CF clear
  4789. Return: CF set if wait time satisfied
  4790.     CF clear if driver must perform wait
  4791.         AH = 00h
  4792. Notes:    type codes are allocated as follows:
  4793.       00-7F non-reentrant devices; OS must arbitrate access
  4794.       80-BF reentrant devices; ES:BX points to a unique control block
  4795.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  4796.     floppy and hard disk BIOS code uses this call to implement a timeout;
  4797.       for device types 00h and 01h, a return of CF set means that the
  4798.       timeout expired before the disk responded.
  4799.     this function should be hooked by a multitasker to allow other tasks
  4800.       to execute while the BIOS is waiting for I/O completion; the default
  4801.       handler merely returns with AH=00h and CF clear
  4802. SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
  4803.  
  4804. (Table 0431)
  4805. Values for device type:
  4806.  00h    disk
  4807.  01h    diskette
  4808.  02h    keyboard
  4809.  03h    PS/2 pointing device
  4810.  21h    waiting for keyboard input (Phoenix BIOS)
  4811.  80h    network
  4812.  FBh    digital sound (Tandy)
  4813.  FCh    disk reset (PS)
  4814.  FDh    diskette motor start
  4815.  FEh    printer
  4816. --------B-1591-------------------------------
  4817. INT 15 - OS HOOK - DEVICE POST (AT,PS)
  4818.     AH = 91h
  4819.     AL = device type (see #0431)
  4820.     ES:BX -> request block for type codes 80h through BFh
  4821.     CF clear
  4822. Return: AH = 00h
  4823. Note:    this function should be hooked by a multitasker to allow other tasks
  4824.       to execute while the BIOS is waiting for I/O completion; the default
  4825.       handler merely returns with AH=00h and CF clear
  4826. SeeAlso: AH=90h
  4827. --------B-1592-------------------------------
  4828. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  4829.     AH = 92h
  4830. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  4831. --------B-15A0-------------------------------
  4832. INT 15 - IBM SurePath BIOS - ACCESS LOADABLE-ABIOS SIGNATURE
  4833.     AH = A0h
  4834.     AL = function
  4835.         00h get loadable-ABIOS signature
  4836.         Return: BL = signature value
  4837.                 00h loadable-ABIOS prompting not required
  4838.                 A1h loadable-ABIOS prompting is required
  4839.         01h write loadable-ABIOS signature
  4840.         BL = new signature value
  4841.             00h loadable-ABIOS prompting not required
  4842.             A1h loadable-ABIOS prompting is required
  4843. Return: CF clear if successful
  4844.     CF set on error
  4845.     AH = status
  4846.         00h successful
  4847.         01h invalid subfunction
  4848.         02h unable to read/write signature
  4849.         86h function not supported
  4850. Note:    IBM classifies this function as optional
  4851. SeeAlso: AH=08h"IBM"
  4852. --------x-15A100-----------------------------
  4853. INT 15 U - AMI PCI BIOS - SET ??? FLAG
  4854.     AX = A100h
  4855. Return: AX = 0000h
  4856.     CF clear
  4857.     BX,CX,DI may be destroyed
  4858. Desc:    sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in
  4859.       locations 3Eh and 3Fh
  4860. Notes:    in the examined version of the BIOS, nonzero values in AL cause it to
  4861.       drop through to checking the next possible value of AH, i.e. only
  4862.       subfunction 00h is supported
  4863.     also supported by Dell XPS P90 and IBM PS/PV 6384, which also use
  4864.       AMI BIOSes
  4865. --------B-15AB-------------------------------
  4866. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  4867.     AH = ABh
  4868. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  4869. ----------15B001CX5354-----------------------
  4870. INT 15 - Stac ??? - INSTALLATION CHECK
  4871.     AX = B001h
  4872.     CX = 5354h ('ST')
  4873.     DX = 4143h ('AC')
  4874. Return: AX = 4F4Bh ('OK') if installed
  4875. Note:    this function is called by Novell DOS 7 NWCACHE v1.01
  4876. --------n-15BA10-----------------------------
  4877. INT 15 - HP OmniShare - Pen Driver - REPORT PEN CONTROL AREA EVENT
  4878.     AX = BA10h
  4879.     BL = event
  4880.        00h the pen left control areas
  4881.        01h the pen entered the Brightness- area
  4882.        02h the pen entered the Brightness+ area
  4883.        03h the pen entered the Contrast- area
  4884.        04h the pen entered the Contrast+ area
  4885. Return: CF clear if successfully processed
  4886.     CF set on error (function not supported, ie. not an OmniShare BIOS)
  4887. Note:    The pen driver is responsible for detecting when the pen enters and
  4888.       leaves control areas of the OmniShare tablet, and notifying the BIOS.
  4889.     The BIOS manages the events, including the autorepetition, and sets
  4890.       the status LEDs.
  4891. SeeAlso: AX=BA20h,AX=BA13h
  4892. --------n-15BA11-----------------------------
  4893. INT 15 - HP OmniShare - Pen Driver - SET THE COMMUNICATION LED STATE
  4894.     AX = BA11h
  4895.     BL = new LED state (00h steady, 01h flashing)
  4896. Return: CF clear if successful
  4897.     CF set on error
  4898. Note:    this function is for use by communication software to give visual
  4899.       feedback of active communications even if the display is in standby
  4900.       mode.
  4901. SeeAlso: AX=BA10h,AX=BA24h
  4902. --------n-15BA12-----------------------------
  4903. INT 15 - HP OmniShare - Pen Driver - STORE PEN BATTERY CHARGE
  4904.     AX = BA12h
  4905.     BL = new battery state (00h good, 01h low charge)
  4906. Return: CF set on error
  4907.     CF clear if successfully stored in CMOS
  4908. Note:    The last report will be displayed by the Power-On Self Test the next
  4909.       time the OmniShare boots.  This allows something meaningful to be
  4910.       reported even if the pen is not detected during the POST.
  4911. SeeAlso: AX=BA13h
  4912. --------n-15BA13-----------------------------
  4913. INT 15 - HP OmniShare - Pen Driver - GET PEN BATTERY CHARGE
  4914.     AX = BA13h
  4915. Return: CF clear if successful
  4916.         BL = pen battery state (00h good, 01h low charge)
  4917.     CF set on error
  4918. Note:    returns the last value set by AX=BA12h.
  4919. SeeAlso: AX=BA12h
  4920. --------p-15BA20-----------------------------
  4921. INT 15 - HP OmniShare - STANDBY.COM - INSTALLATION CHECK
  4922.     AX = BA20h
  4923. Return: CF clear if successful (installed)
  4924.     CF set on error (not installed)
  4925. Notes:    The display controller can enter a standby mode after a given timeout,
  4926.       to conserve power or (for the OmniShare) to increase the life of
  4927.       the backlight.
  4928.     A side effect of standby mode is that the communications LED turns on
  4929.       automatically when the display is in standby mode.  This is done in
  4930.       hardware, and is intended to show that the unit is still on.
  4931. SeeAlso: AX=BA10h,AX=BA20h,AX=BA22h,AX=BA24h,AX=BA26h
  4932. --------p-15BA21-----------------------------
  4933. INT 15 - HP OmniShare - STANDBY.COM - SET STANDBY DURATION
  4934.     AX = BA21h
  4935.     BL = new timeout before standby mode in minutes (01h-0Fh)
  4936.         00h to disable automatic switch to standby mode
  4937. Return: CF clear if successful
  4938.     CF set on error (function not supported)
  4939. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  4940.       instead of (N*60) seconds as documented.
  4941. SeeAlso: AX=BA20h,AX=BA22h
  4942. --------p-15BA22-----------------------------
  4943. INT 15 - HP OmniShare - STANDBY.COM - GET STANDBY DURATION
  4944.     AX = BA22h
  4945. Return: CF clear if successful
  4946.        BL = standy duration in minutes (01h-0Fh), or 00h if disabled
  4947.     CF set on error (function not supported)
  4948. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  4949.       instead of (N*60) seconds as documented.
  4950. SeeAlso: AX=BA20h,AX=BA21h
  4951. --------p-15BA23-----------------------------
  4952. INT 15 - HP OmniShare - STANDBY.COM - TURN ON THE SCREEN IMMEDIATELY
  4953.     AX = BA23h
  4954. Return: CF clear if successful
  4955.     CF set on error
  4956. SeeAlso: AX=BA11h,AX=BA20h,AX=BA24h
  4957. --------p-15BA24-----------------------------
  4958. INT 15 - HP OmniShare - STANDBY.COM - TURN OFF THE SCREEN IMMEDIATELY
  4959.     AX = BA24h
  4960. Return: CF clear if successful
  4961.     CF set on error
  4962. Note:    This function is not implemented yet. Reserved for future versions
  4963.       of the OmniShare.
  4964. SeeAlso: AX=BA11h,AX=BA20h,AX=BA23h
  4965. --------p-15BA25-----------------------------
  4966. INT 15 - HP OmniShare - STANDBY.COM - PREPARE FOR UNINSTALL
  4967.     AX = BA25h
  4968. Return: CF clear if successful
  4969.         AX = 25BAh
  4970.         BX = PSP of STANDBY.COM resident portion
  4971.         DX:CX -> previous INT 15 handler
  4972.     CF set on error
  4973. Note:    This function is used internally by the STANDBY.COM /u option, and
  4974.       should not be used by application programs.
  4975. SeeAlso: AX=BA20h
  4976. --------p-15BA26-----------------------------
  4977. INT 15 - HP OmniShare - STANDBY.COM - IS THE DISPLAY IN STANDBY MODE?
  4978.     AX = BA26h
  4979. Return: CF clear if successful
  4980.         AL    = display state (00h active, 01h in standby mode)
  4981.     CF set on error (function not supported)
  4982. SeeAlso: AX=BA20h,AX=BA23h
  4983. --------p-15BA27-----------------------------
  4984. INT 15 - HP OmniShare - STANDBY.COM - RESERVED FUNCTIONS
  4985.     AX = BA27h to BA2Fh
  4986. Desc:    reserved for future use
  4987. --------b-15BC-------------------------------
  4988. INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
  4989.     AH = BCh
  4990. Return: CF clear
  4991.     (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
  4992.     (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
  4993. Note:    this function reads system timer channel 0 twice, then does
  4994.       calculations on the returned values to determine the delay loop
  4995.       counter needed by the BIOS for beeps and floppy timeouts
  4996. SeeAlso: AX=2305h,MEM 0040h:00B0h
  4997. --------E-15BF00-----------------------------
  4998. INT 15 - Rational Systems DOS/16M - ???
  4999.     AX = BF00h
  5000.     ???
  5001. Return: ???
  5002. Note:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  5003. SeeAlso: AX=BF02h
  5004. --------E-15BF01-----------------------------
  5005. INT 15 - Rational Systems DOS/16M - ???
  5006.     AX = BF01h
  5007.     ???
  5008. Return: ???
  5009. Notes:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  5010.     called by DOS/4GW
  5011. SeeAlso: AX=BF00h,AX=BF02h
  5012. --------E-15BF02DX0000-----------------------
  5013. INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
  5014.     AX = BF02h
  5015.     DX = 0000h
  5016. Return: DX = nonzero if installed
  5017.         DX:SI -> XBRK structure (see #0432)
  5018. Note:    this function is also supported by DOS/4G
  5019. SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
  5020. SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
  5021.  
  5022. Format of DOS/16M XBRK structure:
  5023. Offset    Size    Description    (Table 0432)
  5024.  00h    DWORD    linear address of first available byte
  5025.  04h    DWORD    linear address of last available byte + 1 ???
  5026.  08h    DWORD    real-mode address of XBRK structure???
  5027.  0Ch    DWORD    ???
  5028.  10h  2 BYTEs    ???
  5029.  12h    WORD    segment of ???
  5030.  14h  8 BYTEs    ???
  5031.  1Ch 512 BYTEs    protected-mode IDT
  5032. 21Ch  N BYTEs    protected-mode GDT
  5033. --------E-15BF03-----------------------------
  5034. INT 15 - Rational Systems DOS/4GW - UNINSTALL???
  5035.     AX = BF03h
  5036.     BX = PSP segment of extender
  5037.     ???
  5038. Return: ???
  5039. Note:    if BX is not the PSP segment of the extender, it passes the call down
  5040.       the INT 15 chain; this allows nested instances of the extender
  5041. SeeAlso: AX=BF06h
  5042. --------E-15BF04-----------------------------
  5043. INT 15 - Rational Systems DOS/4GW - ???
  5044.     AX = BF04h
  5045.     BX = PSP segment of extender
  5046. Return: nothing???
  5047. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  5048.       the INT 15 chain; this allows nested instances of the extender
  5049.     grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
  5050. SeeAlso: INT 2F/AX=1607h/BX=22C0h
  5051. --------E-15BF05-----------------------------
  5052. INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
  5053.     AX = BF05h
  5054.     BX = PSP segment of extender
  5055. Return: nothing???
  5056. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  5057.       the INT 15 chain; this allows nested instances of the extender
  5058.     calls INT 67/AX=DE01h if ???
  5059. --------E-15BF06-----------------------------
  5060. INT 15 - Rational Systems DOS/4GW - ???
  5061.     AX = BF06h
  5062.     BX = PSP segment of extender
  5063.     ???
  5064. Return: ???
  5065. Note:    if BX is not the PSP segment of the extender, it passes the call down
  5066.       the INT 15 chain; this allows nested instances of the extender
  5067. SeeAlso: AX=BF03h
  5068. --------E-15BFDCDX0000-----------------------
  5069. INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
  5070.     AX = BFDCh
  5071.     DX = 0000h
  5072.     SI = 0000h
  5073. Return: DX = nonzero if installed
  5074.         DX:SI -> XBRK structure (see #0432)
  5075. SeeAlso: AX=BF02h
  5076. --------E-15BFDEBX0000-----------------------
  5077. INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
  5078.     AX = BFDEh
  5079.     BX = 0000h
  5080. Return: AX = ??? (0003h)
  5081.     BX = FFFFh
  5082. SeeAlso: AX=BF02h
  5083. --------E-15BFDEBX0001-----------------------
  5084. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
  5085.     AX = BFDEh
  5086.     BX = 0001h
  5087. Return: BX = 0000h (success)
  5088.     CX:DX -> name of process manager executable
  5089. SeeAlso: AX=BFDEh/BX=0000h
  5090. --------E-15BFDEBX0002-----------------------
  5091. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  5092.     AX = BFDEh
  5093.     BX = 0002h
  5094.     CX:DX -> ???
  5095. Return: BX = 0000h (success)
  5096. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
  5097. --------E-15BFDEBX0003-----------------------
  5098. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5099.     AX = BFDEh
  5100.     BX = 0003h
  5101. Return: BX = 0000h (success)
  5102.     CX:DX -> ???
  5103. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
  5104. --------E-15BFDEBX0004-----------------------
  5105. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5106.     AX = BFDEh
  5107.     BX = 0004h
  5108.     CL = ???
  5109. Return: BX = 0000h (success)
  5110.     CX:DX -> XBRK structure (see #0432)
  5111. SeeAlso: AX=BFDEh/BX=0000h
  5112. --------E-15BFDEBX0005-----------------------
  5113. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5114.     AX = BFDEh
  5115.     BX = 0005h
  5116.     CX = new value for ???
  5117. Return: BX = 0000h (success)
  5118.     AX = old value of ???
  5119.     DS:SI -> ??? (if AX nonzero on return)
  5120.     ES:DI -> ??? (if AX zero on return)
  5121. Note:    called by DOS4GW.EXE
  5122. SeeAlso: AX=BFDEh/BX=0000h
  5123. --------E-15BFDEBX0006-----------------------
  5124. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5125.     AX = BFDEh
  5126.     BX = 0006h
  5127. Return: BX = 0000h (success)
  5128.     AH = interrupt number??? (BEh)
  5129.     CX:DX = ???
  5130. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
  5131. --------E-15BFDEBX0007-----------------------
  5132. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  5133.     AX = BFDEh
  5134.     BX = 0007h
  5135.     CX:DX = ???
  5136. Return: BX = 0000h (success)
  5137. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
  5138. --------E-15BFDEBX0008-----------------------
  5139. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5140.     AX = BFDEh
  5141.     BX = 0008h
  5142.     CX = segment of ???
  5143.     DS = ???
  5144. Return: BX = status
  5145.         0000h successful
  5146.         AL = ??? (80h or C0h)
  5147.         DX = ??? (0603h) if AL=C0h
  5148.         0001h failed
  5149.         AX = 0000h
  5150. Note:    called by DOS4GW.EXE
  5151. SeeAlso: AX=BFDEh/BX=0000h
  5152. --------E-15BFDEBX0009-----------------------
  5153. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
  5154.     AX = BFDEh
  5155.     BX = 0009h
  5156. Return: BX = 0000h (success)
  5157.     CX:DX -> full pathname to LOAD32.EXP
  5158. SeeAlso: AX=BFDEh/BX=0000h
  5159. --------E-15BFDEBX000A-----------------------
  5160. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
  5161.     AX = BFDEh
  5162.     BX = 000Ah
  5163. Return: BX = 0000h (success)
  5164.     AX = new value of ??? counter
  5165. Notes:    also resets a variety of values if the counter goes negative
  5166.     called by DOS4GW.EXE
  5167. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
  5168. --------E-15BFDEBX000B-----------------------
  5169. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
  5170.     AX = BFDEh
  5171.     BX = 000Bh
  5172. Return: AX = new value of ??? counter
  5173. Note:    called by DOS4GW.EXE
  5174. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
  5175. --------E-15BFDEBX000C-----------------------
  5176. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5177.     AX = BFDEh
  5178.     BX = 000Ch
  5179.     CL = ???
  5180.         00h
  5181.         nonzero
  5182. Return: ???
  5183. SeeAlso: AX=BFDEh/BX=0000h
  5184. --------E-15BFDEBX000D-----------------------
  5185. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5186.     AX = BFDEh
  5187.     BX = 000Dh
  5188.     ???
  5189. Return: ???
  5190. SeeAlso: AX=BFDEh/BX=0000h
  5191. --------E-15BFDEBX000E-----------------------
  5192. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5193.     AX = BFDEh
  5194.     BX = 000Eh
  5195.     DX:CX -> ???
  5196. Return: AX = segment of handle for calling task
  5197.     BX = ??? (probably destroyed)
  5198.     DX:CX -> ???
  5199. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
  5200. --------E-15BFDEBX000F-----------------------
  5201. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5202.     AX = BFDEh
  5203.     BX = 000Fh
  5204. Return: AX = segment of handle for calling task
  5205.     BX = ??? (probably destroyed)
  5206.     DX:CX -> ???
  5207. Note:    identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
  5208. SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
  5209. --------E-15BFDEBX0010-----------------------
  5210. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
  5211.     AX = BFDEh
  5212.     BX = 0010h
  5213. Return: AX = segment of caller's task handle
  5214.     BX destroyed
  5215. SeeAlso: AX=BFDEh/BX=000Fh
  5216. --------E-15BFDEBX0011-----------------------
  5217. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5218.     AX = BFDEh
  5219.     BX = 0011h
  5220. Return: CX = code segment of DVDOS4GX.DVR
  5221.     BX = ??? (0004h)
  5222. SeeAlso: AX=BFDEh/BX=0000h
  5223. --------E-15BFDEBX0012-----------------------
  5224. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5225.     AX = BFDEh
  5226.     BX = 0012h
  5227. Return: DX = code segment of DVDOS4GX.DVR
  5228.     BX = ??? (012Ch)
  5229.     CX = ??? (0006h)
  5230. SeeAlso: AX=BFDEh/BX=0000h
  5231. --------E-15BFDEBX0013-----------------------
  5232. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5233.     AX = BFDEh
  5234.     BX = 0013h
  5235. Return: DX:CX -> ???
  5236. SeeAlso: AX=BFDEh/BX=000Eh
  5237. --------E-15BFDEBX0014-----------------------
  5238. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
  5239.     AX = BFDEh
  5240.     BX = 0014h
  5241.     CX = index of ??? mailbox
  5242.         (0000h-0004h valid, but no range checking done)
  5243. Return: AX,BX destroyed
  5244. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  5245. --------E-15BFDEBX0015-----------------------
  5246. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
  5247.     AX = BFDEh
  5248.     BX = 0015h
  5249.     CX = index of ??? mailbox
  5250.         (0000h-0004h valid, but no range checking done)
  5251. Return: AX,BX destroyed
  5252. SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
  5253. --------E-15BFDEBX0016-----------------------
  5254. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
  5255.     AX = BFDEh
  5256.     BX = 0016h
  5257.     CX = index of ??? mailbox
  5258.         (0000h-0004h valid, but no range checking done)
  5259. Return: AX = status
  5260.         0000h no one owns mailbox
  5261.         0001h mailbox has an owner
  5262.     BX destroyed
  5263. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  5264. --------E-15BFDEBX0017-----------------------
  5265. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
  5266.     AX = BFDEh
  5267.     BX = 0017h
  5268.     CX = index of ??? mailbox
  5269.         (0000h-0004h valid, but no range checking done)
  5270. Return: AX = segment of mailbox owner's handle
  5271.     BX = segment of caller's task handle
  5272. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
  5273. --------E-15BFDEBXFFFD-----------------------
  5274. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5275.     AX = BFDEh
  5276.     BX = FFFDh
  5277. Return: CX:DX = ???
  5278. SeeAlso: AX=BFDEh/BX=FFFEh
  5279. --------E-15BFDEBXFFFE-----------------------
  5280. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  5281.     AX = BFDEh
  5282.     BX = FFFEh
  5283.     CX:DX = ???
  5284. SeeAlso: AX=BFDEh/BX=FFFDh
  5285. --------E-15BFDEBXFFFF-----------------------
  5286. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
  5287.     AX = BFDEh
  5288.     BX = FFFFh
  5289. SeeAlso: AX=BFDEh/BX=0000h
  5290. --------B-15C0-------------------------------
  5291. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  5292.     AH = C0h
  5293. Return: CF set if BIOS doesn't support call
  5294.     CF clear on success
  5295.         ES:BX -> ROM table (see #0433)
  5296.     AH = status
  5297.         00h successful
  5298.         86h unsupported function
  5299. Notes:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  5300.     the configuration table is at F000h:E6F5h in 100% compatible BIOSes
  5301.     Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
  5302.       and a model byte at absolute address FE845h (see #0440)
  5303.     Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
  5304.       a product identifier at F000h:00FAh (see #0443)
  5305.     Compaq machines can be identified by the signature string "COMPAQ" at
  5306.       F000h:FFEAh, and is preceded by additional information (see #0441)
  5307.     Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
  5308.       the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
  5309.       first three data bytes (model/submodel/revision) in the returned
  5310.       table
  5311.     Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
  5312.       a laptop information record at F000h:E000h (see #0444)
  5313.     some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
  5314.       past the end of the configuration table
  5315.     the Phoenix 386 BIOS contains a second version and date string
  5316.       (presumably the last modification for that OEM version) beginning at
  5317.       F000h:FFD8h, with each byte doubled (so that both ROM chips contain
  5318.       the complete information)
  5319. SeeAlso: AH=C7h,AH=C9h,AX=D100h,AX=D103h
  5320.  
  5321. Format of ROM configuration table:
  5322. Offset    Size    Description    (Table 0433)
  5323.  00h    WORD    number of bytes following
  5324.  02h    BYTE    model (see #0439)
  5325.  03h    BYTE    submodel (see #0439)
  5326.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  5327.  05h    BYTE    feature byte 1 (see #0434)
  5328.  06h    BYTE    feature byte 2 (see #0435)
  5329.  07h    BYTE    feature byte 3 (see #0436)
  5330.  08h    BYTE    feature byte 4 (see #0437)
  5331.  09h    BYTE    feature byte 5 (see #0438)
  5332.         ??? (08h) (Phoenix 386 v1.10)
  5333.         ??? (0Fh) (Phoenix 486 v1.03 PCI)
  5334. ---AWARD BIOS---
  5335.  0Ah  N BYTEs    AWARD copyright notice
  5336. ---Phoenix BIOS---
  5337.  0Ah    BYTE    ??? (00h)
  5338.  0Bh    BYTE    major version
  5339.  0Ch    BYTE    minor version (BCD)
  5340.  0Dh  4 BYTEs    ASCIZ string "PTL" (Phoenix Technologies Ltd)
  5341. ---Quadram Quad386---
  5342.  0Ah 17 BYTEs    ASCII signature string "Quadram Quad386XT"
  5343.  
  5344. Bitfields for feature byte 1:
  5345. Bit(s)    Description    (Table 0434)
  5346.  7    DMA channel 3 used by hard disk BIOS
  5347.  6    2nd 8259 installed
  5348.  5    Real-Time Clock installed
  5349.  4    INT 15/AH=4Fh called upon INT 09h
  5350.  3    wait for external event (INT 15/AH=41h) supported
  5351.  2    extended BIOS area allocated (usually at top of RAM)
  5352.  1    bus is Micro Channel instead of ISA
  5353.  0    system has dual bus (Micro Channel + ISA)
  5354. SeeAlso: #0433,#0435
  5355.  
  5356. Bitfields for feature byte 2:
  5357. Bit(s)    Description    (Table 0435)
  5358.  7    32-bit DMA supported
  5359.  6    INT 16/AH=09h (keyboard functionality) supported (see #0509)
  5360.  5    INT 15/AH=C6h (get POS data) supported
  5361.  4    INT 15/AH=C7h (return memory map info) supported
  5362.  3    INT 15/AH=C8h (en/disable CPU functions) supported
  5363.  2    non-8042 keyboard controller
  5364.  1    data streaming supported
  5365.  0    reserved
  5366. SeeAlso: #0433,#0436,AH=C6h,AH=C7h,AH=C8h,INT 16/AH=09h
  5367.  
  5368. Bitfields for feature byte 3:
  5369. Bit(s)    Description    (Table 0436)
  5370.  7    not used
  5371.  6-5    reserved
  5372.  4    POST supports ROM-to-RAM enable/disable
  5373.  3    SCSI subsystem supported on system board
  5374.  2    information panel installed
  5375.  1    IML (Initial Machine Load) system (BIOS loaded from disk)
  5376.  0    SCSI supported in IML
  5377. SeeAlso: #0433,#0435,#0436
  5378.  
  5379. Bitfields for feature byte 4:
  5380. Bit(s)    Description    (Table 0437)
  5381.  7    IBM "private" (set on N51SX, CL57SX)
  5382.  6    system has EEPROM
  5383.  5-3    ABIOS presence
  5384.     001 not supported
  5385.     010 supported in ROM
  5386.     011 supported in RAM (must be loaded)
  5387.  2    "private"
  5388.  1    system supports memory split at/above 16M
  5389.  0    POSTEXT directly supported by POST
  5390. SeeAlso: #0433,#0436,#0438
  5391.  
  5392. Bitfields for feature byte 5 (IBM):
  5393. Bit(s)    Description    (Table 0438)
  5394.  7-5    IBM "private"
  5395.  4-2    reserved
  5396.  1    system has enhanced mouse mode
  5397.  0    flash EPROM
  5398. SeeAlso: #0433,#0437
  5399.  
  5400. (Table 0439)
  5401. Values for model/submodel/revision:
  5402. Model  Submdl  Rev    BIOS date    System
  5403.  FFh    *    *    04/24/81    PC (original)
  5404.  FFh    *    *    10/19/81    PC (some bugfixes)
  5405.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  5406.  FFh    00h    rev      ???        Tandy 1000SL
  5407.  FFh    01h    rev      ???        Tandy 1000TL
  5408.  FFh    46h    ***      ???        Olivetti M15
  5409.  FEh    *    *    08/16/82    PC XT
  5410.  FEh    *    *    11/08/82    PC XT and Portable
  5411.  FEh    *    *    ../..x..    Toshiba laptops up to ~1987
  5412.                     ("x"=product ID) (see #0445)
  5413.  FEh    43h    ***      ???        Olivetti M240
  5414.  FEh    A6h    ???      ???        Quadram Quad386
  5415.  FDh    *    *    06/01/83    PCjr
  5416.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  5417.  FCh    *    *    02/25/93    Linux DOSEMU (all versions)
  5418.  FCh    00h    00h      ???        PC3270/AT
  5419.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  5420.  FCh    00h    > 01h      ???        7531/2 Industrial AT
  5421.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  5422.  FCh    01h    00h    09/17/87    Tandy 3000
  5423.  FCh    01h    00h    ../..x..    Toshiba laptops since ~1988
  5424.                     ("x"=product ID) (see #0445)
  5425.  FCh    01h    00h    03/08/93    Compaq DESKPRO/i
  5426.  FCh    01h    00h     various    Compaq DESKPRO, SystemPro, ProSignia
  5427.  FCh    01h    00h    07/20/93    Zenith Z-Lite 425L
  5428.  FCh    01h    00h    04/09/90    AMI BIOS
  5429.  FCh    01h    20h    06/10/92    AST
  5430.  FCh    01h    30h      ???        Tandy 3000NL
  5431.  FCh    01h    ???      ???        Compaq 286/386
  5432.  FCh    02h    00h    04/21/86    PC XT-286
  5433.  FCh    02h    00h     various    Compaq LTE Lite
  5434.  FCh    02h    00h    08/05/93    Compaq Contura 486/486c/486cx
  5435.  FCh    02h    00h    08/11/88    SoftWindows 1.0.1 (Power Macintosh)
  5436.  FCh    04h    00h    02/13/87     ** PS/2 Model 50 (10 MHz/1 ws 286)
  5437.  FCh    04h    01h    05/09/87    PS/2 Model 50 (10 Mhz 286, LW-type 32)
  5438.  FCh    04h    02h      ???        PS/2 Model 50
  5439.  FCh    04h    02h    01/28/88    PS/2 Model 50Z (10 Mhz 286, LW-type 33)
  5440.  FCh    04h    03h    04/18/88    PS/2 Model 50Z (10 MHz/0 ws 286)
  5441.  FCh    04h    04h      ???        PS/2 Model 50Z
  5442.  FCh    05h    00h    02/13/87     ** PS/2 Model 60 (10 MHz 286)
  5443.  FCh    06h    00h      ???        IBM 7552-140 "Gearbox"
  5444.  FCh    06h    01h      ???        IBM 7552-540 "Gearbox"
  5445.  FCh    08h    ***      ???        Epson, unknown model
  5446.  FCh    08h    00h      ???        PS/2 Model 25/286
  5447.  FCh    09h    00h      ???        PS/2 Model 25 (10 MHz 286)
  5448.  FCh    09h    00h    08/25/88    PS/2 Model 30 286 (10 Mhz, LW-type 37)
  5449.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  5450.  FCh    09h    02h    06/28/89    PS/2 Model 25 286 (10 Mhz, LW-type 37)
  5451.  FCh    0Bh    00h    12/01/89    PS/1 (LW-Type 44)
  5452.  FCh    0Bh    00h    02/16/90    PS/1 Model 2011 (10 MHz 286)
  5453.  FCh    20h    00h    02/18/93    Compaq ProLinea
  5454.  FCh    30h    ***      ???        Epson, unknown model
  5455.  FCh    31h    ***      ???        Epson, unknown model
  5456.  FCh    33h    ***      ???        Epson, unknown model
  5457.  FCh    42h    ***      ???        Olivetti M280
  5458.  FCh    45h    ***      ???        Olivetti M380 (XP 1, XP3, XP 5)
  5459.  FCh    48h    ***      ???        Olivetti M290
  5460.  FCh    4Fh    ***      ???        Olivetti M250
  5461.  FCh    50h    ***      ???        Olivetti M380 (XP 7)
  5462.  FCh    51h    ***      ???        Olivetti PCS286
  5463.  FCh    52h    ***      ???        Olivetti M300
  5464.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  5465.  FCh    81h    01h      ???        "OEM machine"
  5466.  FCh    82h    01h      ???        "OEM machine"
  5467.  FCh    94h    00h      ???        Zenith 386
  5468.  FBh    00h    01h    01/10/86    PC XT-089, Enh Keyb, 3.5" support
  5469.  FBh    00h    01h    05/13/94    HP 200LX 2MB BIOS 1.01 A D german
  5470.  FBh    00h    02h    05/09/86    PC XT
  5471.  FBh    00h    04h    08/19/93    HP 100LX 1MB BIOS 1.04 A
  5472.  FBh    4Ch    ***      ???        Olivetti M200
  5473.  FAh    00h    00h    09/02/86    PS/2 Model 30 (8 MHz 8086)
  5474.  FAh    00h    01h    12/12/86    PS/2 Model 30
  5475.  FAh    00h    02h    02/05/87    PS/2 Model 30
  5476.  FAh    01h    00h    06/26/87    PS/2 Model 25/25L (8 MHz 8086)
  5477.  FAh    30h    00h      ???        IBM Restaurant Terminal
  5478.  FAh    4Eh    ***      ???        Olivetti M111
  5479.  FAh    FEh    00h      ???        IBM PCradio 9075
  5480.  F9h    00h    00h    09/13/85    PC Convertible
  5481.  F9h    FFh    00h      ???        PC Convertible
  5482.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 (16MHz 386)
  5483.  F8h    00h    00h      ???        PS/2 Model 75 486 (33Mhz 486)
  5484.  F8h    01h    00h    10/07/87    PS/2 Model 80 (20MHz 386)
  5485.  F8h    02h    00h      ???        PS/2 Model 55-5571
  5486.  F8h    04h    00h    01/29/88    PS/2 Model 70 (20 Mhz 386DX,LW-type 33)
  5487.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  5488.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  5489.  F8h    05h    00h      ???        IBM PC 7568
  5490.  F8h    06h    00h      ???        PS/2 Model 55-5571
  5491.  F8h    07h    00h      ???        IBM PC 7561/2
  5492.  F8h    07h    01h      ???        PS/2 Model 55-5551
  5493.  F8h    07h    02h      ???        IBM PC 7561/2
  5494.  F8h    07h    03h      ???        PS/2 Model 55-5551
  5495.  F8h    09h    00h    01/29/88    PS/2 Model 70 16MHz 386DX, type 1 sysbd
  5496.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  5497.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  5498.  F8h    09h    04h    12/15/89    PS/2 Model 70 (16 Mhz 386, LW-type 33)
  5499.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121) typ 2 sys brd
  5500.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  5501.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX (16 MHz 386SX)
  5502.  F8h    0Dh    00h      ???        PS/2 Model 70 25MHz, type 3 system brd
  5503.  F8h    0Dh    00h    06/08/88    PS/2 Model 70 386 25MHz, type 3 sys brd
  5504.  F8h    0Dh    01h    02/20/89    PS/2 Model 70 386 25MHz, type 3 sys brd
  5505.  F8h    0Dh    ???    12/01/89    PS/2 Model 70 486 25Mhz, type 3 sys brd
  5506.  F8h    0Eh    00h      ???        PS/1 486SX
  5507.  F8h    0Fh    00h      ???        PS/1 486DX
  5508.  F8h    10h    00h      ???        PS/2 Model 55-5551
  5509.  F8h    11h    00h    10/01/90    PS/2 Model 90 XP (25 MHz 486)
  5510.  F8h    12h    00h      ???        PS/2 Model 95 XP
  5511.  F8h    13h    00h    10/01/90    PS/2 Model 90 XP (33 MHz 486)
  5512.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9 (25 MHz 486), 95 XP
  5513.  F8h    15h    00h      ???        PS/2 Model 90 XP
  5514.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD / 95XP486 (33MHz 486)
  5515.  F8h    17h    00h      ???        PS/2 Model 90 XP
  5516.  F8h    19h    05h      ???        PS/2 Model 35/35LS or 40 (20 MHz 386SX)
  5517.  F8h    19h    05h    03/15/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  5518.  F8h    19h    06h    04/04/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  5519.  F8h    1Ah    00h      ???        PS/2 Model 95 XP
  5520.  F8h    1Bh    00h    09/29/89    PS/2 Model 70 486 (25 Mhz 386DX)
  5521.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486 (25 MHz 486)
  5522.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121 / 65 SX (16MHz 386SX)
  5523.  F8h    1Eh    00h    02/08/90    PS/2 Model 55LS (16 MHz 386SX)
  5524.  F8h    23h    00h      ???        PS/2 Model L40 SX
  5525.  F8h    23h    01h      ???        PS/2 Model L40 SX (20 MHz 386SX)
  5526.  F8h    23h    02h    02/27/91    PS/2 Model L40 SX (20Mhz386SX,LW-typ37)
  5527.  F8h    25h    00h      ???        PS/2 Model 57 SLC
  5528.  F8h    25h    06h      ???        PS/2 Model M57 (20 MHz 386SLC)
  5529.  F8h    26h    00h      ???        PS/2 Model 57 SX
  5530.  F8h    26h    01h      ???        PS/2 Model 57 (20 MHz 386SX)
  5531.  F8h    26h    02h    07/03/91    PS/2 Model 57 SX (20Mhz 386SX, SCSI)
  5532.  F8h    28h    00h      ???        PS/2 Model 95 XP
  5533.  F8h    29h    00h      ???        PS/2 Model 90 XP
  5534.  F8h    2Ah    00h      ???        PS/2 Model 95 XP (50 MHz 486)
  5535.  F8h    2Bh    00h      ???        PS/2 Model 90 / 90XP486 (50 MHz 486)
  5536.  F8h    2Ch    00h      ???        PS/2 Model 95 XP
  5537.  F8h    2Ch    01h      ???        PS/2 Model 95 (20 MHz 486SX)
  5538.  F8h    2Dh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX)
  5539.  F8h    2Eh    00h      ???        PS/2 Model 95 XP
  5540.  F8h    2Eh    00h      ???        PS/2 Model 95 XP486 (20 Mhz 486SX)
  5541.  F8h    2Eh    01h      ???        PS/2 Model 95 (20 MHz 486SX + 487SX)
  5542.  F8h    2Fh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX + 487SX)
  5543.  F8h    30h    00h      ???        PS/1 Model 2121 (16 MHz 386SX)
  5544.  F8h    33h    00h      ???        PS/2 Model 30-386
  5545.  F8h    34h    00h      ???        PS/2 Model 25-386
  5546.  F8h    36h    00h      ???        PS/2 Model 95 XP
  5547.  F8h    37h    00h      ???        PS/2 Model 90 XP
  5548.  F8h    38h    00h      ???        PS/2 Model 57
  5549.  F8h    39h    00h      ???        PS/2 Model 95 XP
  5550.  F8h    3Fh    00h      ???        PS/2 Model 90 XP
  5551.  F8h    40h    00h      ???        PS/2 Model 95 XP
  5552.  F8h    41h    00h      ???        PS/2 Model 77
  5553.  F8h    45h    00h      ???        PS/2 Model 90 XP (Pentium)
  5554.  F8h    46h    00h      ???        PS/2 Model 95 XP (Pentium)
  5555.  F8h    47h    00h      ???        PS/2 Model 90/95 E (Pentium)
  5556.  F8h    48h    00h      ???        PS/2 Model 85
  5557.  F8h    49h    00h      ???        PS/ValuePoint 325T
  5558.  F8h    4Ah    00h      ???        PS/ValuePoint 425SX
  5559.  F8h    4Bh    00h      ???        PS/ValuePoint 433DX
  5560.  F8h    4Eh    00h      ???        PS/2 Model 295
  5561.  F8h    50h    00h      ???        PS/2 Model P70 (8573) (16 MHz 386)
  5562.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  5563.  F8h    52h    00h      ???        PS/2 Model P75 (33 MHz 486)
  5564.  F8h    56h    00h      ???        PS/2 Model CL57 SX
  5565.  F8h    57h    00h      ???        PS/2 Model 90 XP
  5566.  F8h    58h    00h      ???        PS/2 Model 95 XP
  5567.  F8h    59h    00h      ???        PS/2 Model 90 XP
  5568.  F8h    5Ah    00h      ???        PS/2 Model 95 XP
  5569.  F8h    5Bh    00h      ???        PS/2 Model 90 XP
  5570.  F8h    5Ch    00h      ???        PS/2 Model 95 XP
  5571.  F8h    5Dh    00h      ???        PS/2 Model N51 SLC
  5572.  F8h    5Eh    00h      ???        IBM ThinkPad 700
  5573.  F8h    61h    ***      ???        Olivetti P500
  5574.  F8h    62h    ***      ???        Olivetti P800
  5575.  F8h    80h    00h      ???        PS/2 Model 80 (25 MHz 386)
  5576.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21 (25 Mhz 386)
  5577.  F8h    81h    00h      ???        PS/2 Model 55-5502
  5578.  F8h    87h    00h      ???        PS/2 Model N33SX
  5579.  F8h    88h    00h      ???        PS/2 Model 55-5530T
  5580.  F8h    97h    00h      ???        PS/2 Model 55 Note N23SX
  5581.  F8h    99h    00h      ???        PS/2 Model N51 SX
  5582.  F8h    F2h    30h      ???        Reply Model 32
  5583.  F8h    F6h    30h      ???        Memorex Telex
  5584.  F8h    FDh    00h      ???        IBM Processor Complex (with VPD)
  5585.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX)
  5586.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX)
  5587.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX + 487SX)
  5588.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX + 487SX)
  5589.  E4h    ???    ???      ???        Triumph Adler PC/XT
  5590.  E1h    ???    ???      ???        ??? (checked for by DOS4GW.EXE)
  5591.  E1h    00h    00h      ???        PS/2 Model 55-5530 Laptop
  5592.  D9h    ???    ???      ???        Peacock XT
  5593.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  5594.  30h    ???    ???      ???        Sperry PC
  5595.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  5596.  ???    56h    ???      ???        Olivetti, unknown model
  5597.  ???    74h    ???      ???        Olivetti, unknown model
  5598. Notes:    BIOS dates may vary without changes to the revision code, especially
  5599.       for non-IBM machines
  5600.     * This BIOS call is not implemented in these early versions or under
  5601.       Linux's DOSEMU.  Read the Model byte at F000h:FFFEh and BIOS date at
  5602.       F000h:FFF5h instead.
  5603.    ** These BIOS versions require the DASDDRVR.SYS patches.
  5604.   *** These Olivetti and Epson machines store the submodel in the byte at
  5605.     F000h:FFFDh.
  5606. SeeAlso: #0433,#0440
  5607.  
  5608. (Table 0440)
  5609. Values for Dell model byte:
  5610.  02h    Dell 200
  5611.  03h    Dell 300
  5612.  05h    Dell 220
  5613.  06h    Dell 310
  5614.  07h    Dell 325
  5615.  09h    Dell 310A
  5616.  0Ah    Dell 316
  5617.  0Bh    Dell 220E
  5618.  0Ch    Dell 210
  5619.  0Dh    Dell 316SX
  5620.  0Eh    Dell 316LT
  5621.  0Fh    Dell 320LX
  5622.  11h    Dell 425E
  5623. SeeAlso: #0433,#0439
  5624.  
  5625. Format of Compaq product information:
  5626. Address        Size    Description    (Table 0441)
  5627.  F000h:FFE4h    BYTE    product family code (first byte)
  5628.  F000h:FFE4h    BYTE    Point release number
  5629.  F000h:FFE4h    BYTE    ROM version code
  5630.  F000h:FFE4h    BYTE    product family code (second byte)
  5631.  F000h:FFE8h    WORD    BIOS type code
  5632. SeeAlso: #0442,#0444
  5633.  
  5634. Format of Hewlett-Packard ROM ID at F000h:00F8h:
  5635. Offset    Size    Description    (Table 0442)
  5636.  00h  2 BYTEs    signature "HP" (48h 50h)
  5637.  02h  2 BYTEs    00h 00h
  5638.  04h    BYTE    secondary code revision
  5639.  05h    BYTE    primary code revision
  5640.  06h    BYTE    date code, year-1960 (BCD)
  5641.  07h    BYTE    date code, week of year (BCD)
  5642. SeeAlso: #0441,#0443
  5643.  
  5644. Bitfields for Hewlett-Packard product identifier:
  5645. Bit(s)    Description    (Table 0443)
  5646.  4-0    machine code
  5647.     0 original Vectra
  5648.     1 ES/12
  5649.     2 RS/20
  5650.     3 Portable/CS
  5651.     4 ES
  5652.     5 CS
  5653.     6 RS/16
  5654.     other reserved
  5655.  7-5    CPU type
  5656.     0 = 80286
  5657.     1 = 8088
  5658.     2 = 8086
  5659.     3 = 80386
  5660.     other reserved
  5661. SeeAlso: #0442
  5662.  
  5663. Format of Toshiba laptop information:
  5664. Offset    Size    Description    (Table 0444)
  5665.  00h  8 BYTEs    ASCII product number (e.g. "T2200SX ")
  5666.  08h  8 BYTEs    ASCII version number (e.g. "V1.20   ")
  5667.  10h  8 BYTEs    ASCII signature string "TOSHIBA "
  5668.  18h  8 BYTEs    always zero???
  5669.  20h    DWORD    -> built-in BIOS setup program entry point or 0000h:0000h
  5670. Note:    this record is located at F000h:E000h
  5671. SeeAlso: #0441,#0442
  5672.  
  5673. (Table 0445)
  5674. Values for Toshiba product ID:
  5675. model prodID   version      date       product number
  5676.  FEh    29h        ../..)..   Toshiba T1000LE
  5677.  FEh    2Ah        ../..*..   Toshiba T1000XE
  5678.  FEh    2Bh        ../..+..   Toshiba T1000SE
  5679.  FEh    2Ch        ../..,..   Toshiba T1000
  5680.  FEh    2Dh        ../..-..   Toshiba T1200F
  5681.  FEh    2Dh    V4.00    12/26-87   Toshiba T1200H
  5682.  FEh    2Eh        ../.....   Toshiba T1100+
  5683.  FCh    22h        ../.."..   Toshiba T8500
  5684.  FCh    26h        01/15&88   Toshiba T5200
  5685.  FCh    27h        ../..'..   Toshiba T5100
  5686.  FCh    28h        ../..(..   Toshiba T2000
  5687.  FCh    2Ah        12/26*89   Toshiba T1200XE
  5688.  FCh    2Bh        ../..+..   Toshiba T1600
  5689.  FCh    2Ch        ../..,..   Toshiba T3100e
  5690.  FCh    2Dh        ../..-..   Toshiba T3200
  5691.  FCh    2Fh        ../../..   Toshiba T3100
  5692.  FCh    34h    V1.50    02/04494   Toshiba T100X
  5693.  FCh    38h        ../..8..   Toshiba T2000SXe
  5694.  FCh    39h    V1.20    09/16991   Toshiba T2200SX
  5695.  FCh    39h    V1.40    10/01992   Toshiba T2200SX
  5696.  FCh    3Ch    V1.50    01/28<91   Toshiba T2000SX
  5697.  FCh    3Dh        ../..=..   Toshiba T3200SXC
  5698.  FCh    3Eh        ../..>..   Toshiba T3100SX
  5699.  FCh    3Fh        ../..?..   Toshiba T3200SX
  5700.  FCh    40h        ../..@..   Toshiba T4500C
  5701.  FCh    41h    V1.20    04/05A92   Toshiba T4500     ("T4500SXC" ???)
  5702.  FCh    45h    V3.20    04/14E92   Toshiba T4400SX   ("C" or "SXC" on cover)
  5703.  FCh    45h        01/13E93   Toshiba T4400SXC
  5704.  FCh    46h *        ../..F..   Toshiba T6400
  5705.  FCh    46h *        ../..F..   Toshiba T6400C
  5706.  FCh    5Fh    V1.40    01/18_94   Toshiba T3300SL
  5707.  FCh    69h        ../..i..   Toshiba T1900C    ("T1900CT" ???)
  5708.  FCh    6Ah    V1.30    05/19j93   Toshiba T1900     ("T1900S" ???)
  5709.  FCh    6Dh    V1.10    12/25m92   Toshiba T1850C
  5710.  FCh    6Eh    V1.00    08/19n92   Toshiba T1850
  5711.  FCh    6Eh    V1.10    12/25n92   Toshiba T1850
  5712.  FCh    6Fh    V1.00    07/17o92   Toshiba T1800
  5713.  FCh    6Fh    V1.10    12/25o92   Toshiba T1800
  5714.  FCh    7Eh    V1.30    06/17~93   Toshiba T4600C
  5715.  FCh    7Fh    V1.40    11/10x94   Toshiba T4600
  5716.  FCh    8Ah    V1.30    10/22x93   Toshiba T6600C
  5717.  FCh    91h    V1.20    07/15x94   Toshiba T2400CT
  5718.  FCh    91h    V5.00    07/28x95   Toshiba T2400CS/CT
  5719.  FCh    92h    V5.00    07/28x95   Toshiba T3600CT
  5720.  FCh    96h *    V1.40    12/08x94   Toshiba T200
  5721.  FCh    96h *    V1.50    12/08x94   Toshiba T200CS    (T200)
  5722.  FCh    97h        ../..x..   Toshiba T4800CT
  5723.  FCh    98h *    V1.10    12/22x93   Toshiba T1910
  5724.  FCh    98h *    V2.40    07/12x94   Toshiba T1910/CS    (T19XX)
  5725.  FCh    99h        ../..x..   Toshiba T4700CS
  5726.  FCh    9Bh    V2.30    01/31x94   Toshiba T4700CT
  5727.  FCh    9Bh    V2.50    03/22x94   Toshiba T4700CT
  5728.  FCh    9Bh    V5.00    07/28x95   Toshiba T4700CT
  5729.  FCh    9Ch    V1.30    01/11x94   Toshiba T1950CT
  5730.  FCh    9Ch    V2.50    07/22x94   Toshiba T1950CT    (T19XX)
  5731.  FCh    9Dh *    V2.40    07/12x94   Toshiba T1950/CS    (T19XX)
  5732.  FCh    9Eh *    V1.20    12/25x93   Toshiba T3400
  5733.  FCh    9Eh *    V1.30    03/22x94   Toshiba T3400/CT
  5734.  FCh    B5h **    V5.10    08/25x95   Toshiba T2110/CS    (T21XX)
  5735.  FCh    B5h    V5.10    08/25x95   Toshiba T2130CS/CT    (T21XX)
  5736.  FCh    BAh    V1.30    02/16x95   Toshiba T2150CDS/CDT
  5737.  FCh    BAh    V5.00    07/27x95   Toshiba T2150CDS/CDT (T2150)
  5738.  FCh    BBh **    V1.30    01/25x95   Toshiba T2100/CS/CT
  5739.  FCh    BBh **    V5.00    07/27x95   Toshiba T2100/CS/CT
  5740.  FCh    BCh    V1.20    12/05x94   Toshiba T2450CT
  5741.  FCh    BCh    V5.00    07/28x95   Toshiba T2450CT
  5742.  FCh    BEh    V5.00    07/28x95   Toshiba T4850CT
  5743.  FCh    C0h    V5.20    05/30x96   Toshiba 420CDS/CDT
  5744.  FCh    C1h    V5.20    03/27x96   Toshiba 100CS
  5745.  FCh    C3h    V5.60    07/19x96   Toshiba 710CDT / 720CDT
  5746.  FCh    C6h    V5.30    11/30x95   Toshiba 410CS/CDT
  5747.  FCh    CAh    V5.10    08/18x95   Toshiba 400CS/CDT
  5748.  FCh    CAh    V5.40    12/18x95   Toshiba 400CS/CDT
  5749.  FCh    CBh    V5.10    09/01x95   Toshiba 610CT
  5750.  FCh    CCh    V5.50    06/13x96   Toshiba 700CS/CT
  5751.  FCh    CFh    V5.00    08/07x95   Toshiba T4900CT
  5752.  FCh    DCh    V5.10    06/17x96   Toshiba 650CT
  5753.  FCh    DCh    V5.10    05/10x96   Toshiba 110CS/CT
  5754.  FCh    DDh    V5.10    05/10x96   Toshiba 110CS/CT
  5755.  FCh    DFh    V5.20    05/27x96   Toshiba 500CS/CDT
  5756.  FCh    ???    V5.???    ../..x..   Toshiba 620CT
  5757.  FCh    ???    V5.???    ../..x..   Toshiba 660CDT
  5758.  FCh    ???    V5.30    11/22/96   Toshiba 730CDT
  5759.  FCh    ???    V6.00    09/20/96   Toshiba 200CDS/CDT
  5760.  FCh    ???    V6.20    11/14/96   Toshiba 430CDS/CDT
  5761.  FCh    ???    V6.40    12/05/96   Toshiba 510CS/CDT
  5762. Notes:    the 8-bit ASCII graphics character in the "date" column above
  5763.       has been substituted by "x" if larger than 80h
  5764.     BIOS version numbers and dates may vary, esp. due to harddisk and
  5765.       (flash) BIOS upgrades; all BIOS versions 5.xx are flash updates
  5766.       for Windows95, the product number may indicate the series only
  5767.       (T21XX) or does no longer contain the exact type suffix (CS/CT)
  5768.     the most recent versions of the BIOS have stopped including the
  5769.       product ID code in the BIOS date
  5770.     [*] These models have monochrome and color versions which can be
  5771.       distinguished with INT 42/AX=7503h (WD90C24 chipset)
  5772.     [**] These models have monochrome and color versions which can be
  5773.       distinguished with INT 10/AX=5F50h (CT655xx chipset)
  5774.     models not found here like T21x5 are variants differing only in
  5775.       bundled software
  5776. SeeAlso: #0439
  5777. --------B-15C1-------------------------------
  5778. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  5779.     AH = C1h
  5780. Return: CF set on error
  5781.     CF clear if successful
  5782.         ES = segment of data area (see #M001,#M004,#M005)
  5783. SeeAlso: AH=04h"ABIOS",MEM 0040h:000Eh"DATA"
  5784. --------M-15C200-----------------------------
  5785. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  5786.     AX = C200h
  5787.     BH = new state
  5788.         00h disabled
  5789.         01h enabled
  5790. Return: CF set on error
  5791.     AH = status (see #0446)
  5792. Note:    IBM classifies this function as required
  5793. SeeAlso: AX=C201h,AX=C207h,AX=C208h
  5794.  
  5795. (Table 0446)
  5796. Values for pointing device function status:
  5797.  00h    successful
  5798.  01h    invalid function
  5799.  02h    invalid input
  5800.  03h    interface error
  5801.  04h    need to resend
  5802.  05h    no device handler installed
  5803. --------M-15C201-----------------------------
  5804. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  5805.     AX = C201h
  5806. Return: CF set on error
  5807.         AH = status (see #0446)
  5808.     CF clear if successful
  5809.         BH = device ID
  5810.         BL = value returned by attached device after reset
  5811.         AAh if device is a mouse
  5812. Notes:    after successful completion of this call, the pointing device is set
  5813.       as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
  5814.       scaling 1:1, unchanged data package size
  5815.     IBM classifies this function as required
  5816. SeeAlso: INT 33/AX=0000h,AX=C200h,AX=C207h
  5817. --------M-15C202-----------------------------
  5818. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  5819.     AX = C202h
  5820.     BH = sampling rate
  5821.         00h 10/second
  5822.         01h 20/second
  5823.         02h 40/second
  5824.         03h 60/second
  5825.         04h 80/second
  5826.         05h 100/second
  5827.         06h 200/second
  5828. Return: CF set on error
  5829.         AH = status (see #0446)
  5830. SeeAlso: INT 33/AX=001Ch
  5831. --------M-15C203-----------------------------
  5832. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  5833.     AX = C203h
  5834.     BH = resolution (see #0447)
  5835. Return: CF set on error
  5836.         AH = status (see #0446)
  5837.  
  5838. (Table 0447)
  5839. Values for pointing device resolution:
  5840.  00h    one count per mm
  5841.  01h    two counts per mm
  5842.  02h    four counts per mm
  5843.  03h    eight counts per mm
  5844. --------M-15C204-----------------------------
  5845. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  5846.     AX = C204h
  5847. Return: CF set on error
  5848.         AH = status (see #0446)
  5849.     CF clear if successful
  5850.         BH = device ID
  5851. --------M-15C205-----------------------------
  5852. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  5853.     AX = C205h
  5854.     BH = data package size (1 - 8 bytes)
  5855. Return: CF set on error
  5856.         AH = status (see #0446)
  5857. Note:    the pointing device is set as follows: disabled, 100 Hz sample rate,
  5858.       resolution 4 counts/mm, scaling 1:1
  5859. SeeAlso: AX=C201h
  5860. --------M-15C206-----------------------------
  5861. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
  5862.     AX = C206h
  5863.     BH = subfunction
  5864.         00h return device status
  5865.         Return: BL = pointing device status (see #0448)
  5866.             CL = resolution (see #0447)
  5867.             DL = sample rate, reports per second
  5868.         01h set scaling at 1:1
  5869.         02h set scaling at 2:1
  5870. Return: CF set on error
  5871.         AH = status (see #0446)
  5872.  
  5873. Bitfields for pointing device status:
  5874. Bit(s)    Description    (Table 0448)
  5875.  0    right button pressed
  5876.  1    reserved
  5877.  2    left button pressed
  5878.  3    reserved
  5879.  4    0 if 1:1 scaling, 1 if 2:1 scaling
  5880.  5    device enabled
  5881.  6    0 if stream mode, 1 if remote mode
  5882.  7    reserved
  5883. --------M-15C207-----------------------------
  5884. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  5885.     AX = C207h
  5886.     ES:BX -> FAR user device handler or 0000h:0000h to cancel
  5887. Return: CF set on error
  5888.         AH = status (see #0446)
  5889. Note:    when the subroutine is called, it is passed the following values on
  5890.       the stack; the handler should return with a FAR return without
  5891.       popping the stack:
  5892.         WORD 1: status (see #0449)
  5893.         WORD 2: X data (high byte = 00h)
  5894.         WORD 3: Y data (high byte = 00h)
  5895.         WORD 4: 0000h
  5896. SeeAlso: INT 33/AX=000Ch
  5897.  
  5898. Bitfields for pointing device status:
  5899. Bit(s)    Description    (Table 0449)
  5900.  15-8    reserved (0)
  5901.  7    Y data overflowed
  5902.  6    X data overflowed
  5903.  5    Y data is negative
  5904.  4    X data is negative
  5905.  3    reserved (1)
  5906.  2    reserved (0)
  5907.  1    right button pressed
  5908.  0    left button pressed
  5909. --------M-15C208-----------------------------
  5910. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - WRITE TO POINTER PORT
  5911.     AX = C208h
  5912.     BL = byte to be sent to the pointing device
  5913. Note:    IBM classifies this function as optional
  5914. SeeAlso: AX=C200h,AX=C209h
  5915. --------M-15C209-----------------------------
  5916. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - READ FROM POINTER PORT
  5917.     AX = C209h
  5918. Return: BL = first byte read from pointing device
  5919.     CL = second byte read
  5920.     DL = third byte read
  5921. Note:    IBM classifies this function as optional
  5922. SeeAlso: AX=C200h,AX=C208h
  5923. --------M-15C2-------------------------------
  5924. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  5925.     AH = C2h
  5926.     AL = 10h-23h
  5927. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  5928. --------B-15C3------------------------------
  5929. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  5930.     AH = C3h
  5931.     AL = function
  5932.         00h disable PS/2 watchdog timer
  5933.         01h enable PS/2 watchdog timer
  5934.         BX = timer counter (0001h-00FFh)
  5935.         02h disable Gearbox system
  5936.         03h enable Gearbox system
  5937. Return: CF set on error
  5938.     CF clear if successful
  5939. Note:    the watchdog timer generates an NMI
  5940. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  5941. --------B-15C4-------------------------------
  5942. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  5943.     AH = C4h
  5944.     AL = subfunction
  5945.         00h return base POS register address
  5946.         01h enable selected slot for setup
  5947.         BL = slot number (1 to 8)
  5948.         02h disable setup for all slots (enable adapter)
  5949. Return: CF set on error
  5950.     DX = base POS register address (if subfunction 00h)
  5951. SeeAlso: AH=C6h
  5952. --------B-15C5-------------------------------
  5953. INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
  5954.     AH = C5h
  5955.     AL = interrupt being invoked
  5956.         01h INT 19
  5957.         02h INT 14
  5958.         03h INT 16
  5959.         04h INT 40 (floppy INT 13)
  5960.         05h INT 17
  5961.         06h INT 10
  5962.         07h INT 12
  5963.         08h INT 11
  5964.         09h INT 1A
  5965. Return: all registers except AX must be preserved
  5966. Notes:    called as the very first action of the indicated ROM BIOS interrupt
  5967.       handlers on the PS/2 Models 30/286, 50Z, and 95
  5968.     default handler does nothing and returns CF clear for the above
  5969.       subfunctions, CF set and AH=86h for all other subfunctions
  5970.     value of AX passed to the original interrupt handler is pushed on
  5971.       stack immediately prior to call
  5972. --------B-15C6-------------------------------
  5973. INT 15 U - later PS/2 models - GET POS DATA
  5974.     AH = C6h
  5975.     ???
  5976. Return: ???
  5977. Notes:    this function is referenced by name and number in some IBM BIOS manuals
  5978.     IBM reports that "there are a number of problems with this call" and
  5979.       does not recommend its use.
  5980. SeeAlso: AH=C4h
  5981. --------B-15C7-------------------------------
  5982. INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
  5983.     AH = C7h
  5984.     DS:SI -> user supplied memory map table (see #0450)
  5985. Notes:    call AH=C0h and examine bit 4 of feature byte 2 to check if this
  5986.       function is supported
  5987.     IBM classifies this function as optional
  5988. Return: CF set on error, clear if successful
  5989. SeeAlso: AH=C0h,AH=C9h,AH=D1h,AX=E820h
  5990.  
  5991. Format of memory-map table structure:
  5992. Offset    Size    Description    (Table 0450)
  5993.  00h    WORD    length of table (excluding this word)
  5994.  02h    DWORD    local memory between 1M and 16M, in 1K blocks
  5995.  06h    DWORD    local memory between 16M and 4G, in 1K blocks
  5996.  0Ah    DWORD    system memory between 1M and 16M, in 1K blocks
  5997.  0Eh    DWORD    system memory between 16M and 4G, in 1K blocks
  5998.  12h    DWORD    cacheable memory between 1M and 16M, in 1K blocks
  5999.  16h    DWORD    cacheable memory between 16M and 4G, in 1K blocks
  6000.  1Ah    DWORD    1K blocks before start of non-system memory between 1M and 16M
  6001.  1Eh    DWORD    1K blocks before start of non-system memory between 16M and 4G
  6002.  22h    WORD    start segment of largest free block from C0000h-DFFFFh
  6003.  24h    WORD    size of largest free block
  6004.  26h    DWORD    reserved
  6005. --------B-15C8-------------------------------
  6006. INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
  6007.     AH = C8h
  6008.     AL = function
  6009.         00h disable L1 cache
  6010.         01h enable L1 cache
  6011.         ---models 90 and 95 only---
  6012.         02h disable L2 cache
  6013.         03h enable L2 cache
  6014.         04h disable both caches
  6015.         05h enable both caches
  6016.         06h return status of both caches
  6017.         07h-FFh Reserved
  6018. Return: CF set on error
  6019.     CF clear if successful
  6020.     AH = status (see #0451)
  6021.     For subfunction 06h only:
  6022.         BL = status of L1 cache
  6023.         00h enabled
  6024.         01h disabled or not installed
  6025.         02h disabled due to test error (can not be enabled)
  6026.         BH = status of L2 cache (same codes as BL)
  6027. Notes:     supported by at least PS/2 70, 70/486, 80-A21, 90, 95
  6028.     call AH=C0h and examine bit 3 of feature byte 2 to check if this
  6029.       function is supported.
  6030.     on a 486 system, any external caches must be disabled when the
  6031.       on-chip cache (L1) is disabled.
  6032. SeeAlso: AH=C0h
  6033.  
  6034. (Table 0451)
  6035. Values for status:
  6036.  00h    operation successful
  6037.  01h    function choice (in AL) is invalid
  6038.  02h    NVRAM data is invalid
  6039.  03h    cache test error
  6040.  04h    (90 and 95 only) cannot perform operation requested due to state of
  6041.       other cache (also see note above)
  6042.  05h    no L2 cache is present
  6043.  07h    invalid input values
  6044.  09h    CPU in protected mode
  6045. --------B-15C9-------------------------------
  6046. INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
  6047.     AH = C9h
  6048.     AL = 10h (may be required on some non-PS BIOSes)
  6049. Return: CF clear if successful
  6050.         AH = 00h
  6051.         CH = CPU type (see #0452)
  6052.         CL = mask revision (stepping level) (see #0453)
  6053.     CF set on error
  6054.         AH = status (80h,86h = function not supported)
  6055. Notes:    the BIOS must save DX at startup in order to be able to support this
  6056.       call; PS/2 Models 56, 57, 90, and 95 are known to support it
  6057.     the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
  6058.     IBM classifies this function as optional
  6059. SeeAlso: AX=D100h,AX=DA92h,MEM 0040h:00BCh
  6060.  
  6061. (Table 0452)
  6062. Values for CPU type:
  6063.  03h    80386DX or clone
  6064.  04h    80486
  6065.  05h    Pentium
  6066.  23h    80386SX or clone
  6067.  33h    Intel i376
  6068.  43h    80386SL or clone
  6069.  A3h    IBM 386SLC
  6070.  A4h    IBM 486SLC
  6071.  
  6072. (Table 0453)
  6073. Values for stepping level:
  6074. ---i376 (type code 33h)---
  6075.  05h    A0
  6076.  08h    B
  6077. ---80386/80386DX (type code 03h)---
  6078.  03h    Intel B1 to B10, Am386DX/DXL step A
  6079.  05h    Intel D0
  6080.  08h    Intel D1/D2/E1, Am386DX/DXL step B
  6081. ---80386SL (type code 43h)---
  6082.  05h    A
  6083.  1xh    B
  6084. ---80386SX (type code 23h)---
  6085.  04h    Intel A0
  6086.  05h    Intel B, Am386SX/SXL step A1
  6087.  08h    Intel C/D1, Am386SX/SXL step B
  6088.  09h    Intel 386CX/386EX/386SXstatic step A
  6089. ---80486DX (type code 04h)---
  6090.  00h    Intel A0/A1
  6091.  01h    Intel B2 to B6
  6092.  02h    Intel C0
  6093.  03h    Intel C1
  6094.  04h    Intel D0
  6095.  10h    Intel cA2/cA3, Cx486SLC step A
  6096.  11h    Intel cB0/cB1
  6097. ---486DX2 (type code 04h)---
  6098.  02h    Am486DX2 (unknown stepping)
  6099.  32h    Intel DX2/Overdrive steps A0 to A2
  6100.  33h    Intel DX2/Overdrive step B1
  6101. ---486SX (type code 04h)---
  6102.  20h    Intel A0
  6103.  22h    Intel B0
  6104.  27h    Intel cA0
  6105.  28h    Intel cB0
  6106. ---486SL (type code 04h)---
  6107.  40h    Intel A
  6108. ---IntelSX2 (type code 04h)---
  6109.  5xh    Intel A
  6110. ---IntelDX4 (type code 04h)---
  6111.  8xh    Intel A
  6112. ---487SX (type code 04h)---
  6113.  20h    Intel A0
  6114.  21h    Intel B0
  6115. ---Pentium (type code 05h)---
  6116.  0xh    Intel P5 steps Ax (1993)
  6117.  1xh    Intel P5 steps Bx (1994)
  6118.  2xh    Intel P54C step A
  6119. ---RapidCAD (type code 03h)---
  6120.  40h    A
  6121. --------B-15CA-------------------------------
  6122. INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
  6123.     AH = CAh
  6124.     AL = function
  6125.         00h read CMOS
  6126.         Return: CL = value of CMOS location
  6127.         01h write CMOS
  6128.         CL = new value for CMOS location
  6129.     BL = CMOS location (0Eh-3Fh)
  6130. Return: CF clear if successful
  6131.         AH = 00h
  6132.     CF set on error
  6133.         AH = error code (see #0454)
  6134. Note:    writes do not update the CMOS checksum
  6135.  
  6136. (Table 0454)
  6137. Values for CMOS read/write error code:
  6138.  01h    CMOS lost power or has invalid checksum
  6139.  03h    specified location out of range (too high)
  6140.  04h    specified location out of range (too low)
  6141.  80h    unsupported function (PC)
  6142.  86h    unsupported function (XT)
  6143. --------B-15CB-------------------------------
  6144. INT 15 U - PS/2 Model 95 - RESERVED
  6145.     AH = CBh
  6146.     ???
  6147. Return: ???
  6148. --------B-15CC-------------------------------
  6149. INT 15 U - PS/2 Model 95 - RESERVED
  6150.     AH = CCh
  6151.     ???
  6152. Return: ???
  6153. --------V-15CCCC-----------------------------
  6154. INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
  6155.     AX = CCCCh
  6156. Return: AX = ABCDh if installed
  6157. Note:    supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
  6158.       older versions have the string "VCHAD" 2 bytes after the address of
  6159.       the INT 15 handler which is hooked by all versions for the SysReq key
  6160. SeeAlso: AH=85h
  6161. --------B-15CD-------------------------------
  6162. INT 15 U - PS/2 Model 95 - RESERVED
  6163.     AH = CDh
  6164.     ???
  6165. Return: ???
  6166. --------B-15CE--BL00-------------------------
  6167. INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
  6168.     AH = CEh
  6169.     BL = 00h-0Eh arbitration level to be allocated
  6170.          0Fh-FFh reserved
  6171.     AL = option byte
  6172.         bit 7-1: reserved (0)
  6173.         bit 0: 0 = need DMA channel for arbitration level requested
  6174.            1 = no channel required for arbitration level
  6175. Return: CF set on error
  6176.         AH = status (80h,86h = function not supported)
  6177.     CF clear on success
  6178.         AL = channel number
  6179.         00h-07h channel number allocated for the arbiration level
  6180.         08h-FEh reserved
  6181.         FFh    no channel requested for arbitration level
  6182.         AH = status (see #0455)
  6183. Notes:     arbitration level 00h has the highest priority, 0Eh the lowest
  6184.      to perform a DMA transfer operation, be sure to call this function
  6185.        first, and call AH=CFh afterward.  Failure to use this function
  6186.        can cause unpredictable results.
  6187. SeeAlso: AH=CFh
  6188.  
  6189. (Table 0455)
  6190. Values for DMA arbitration status:
  6191.  00h    success
  6192.  01h    arbitration level not available
  6193.  02h    channel not available
  6194.  03h    invalid arbitration level passed
  6195. --------B-15CF-------------------------------
  6196. INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
  6197.     AH = CFh
  6198.     BL = arbitration level to be deallocated (see AH=CEh)
  6199. Return: CF set on error
  6200.         AH = status (80h,86h = function not supported)
  6201.     CF clear on success
  6202.         AH = status
  6203.         00h success
  6204.         04h arbitration level not allocated
  6205. SeeAlso: AH=CEh
  6206. --------B-15D0-------------------------------
  6207. INT 15 - later PS/2s - RESERVED
  6208.     AH = D0h
  6209.     ???
  6210. Return: ???
  6211. ----------15D042BL00-------------------------
  6212. INT 15 R - Intel Pentium Pro BIOS UPDATE - INSTALLATION CHECK
  6213.     AX = D042h
  6214.     BL = 00h
  6215. Return: CF clear if successful
  6216.     CF set on error
  6217.     AH = status
  6218.         00h successful
  6219.         EBX:ECX = signature "INTELPEP"
  6220.         EDX = BIOS update loader version
  6221.         SI = number of 2K update blocks which can be recorded in NVRAM
  6222.         86h not implemented
  6223.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  6224.         00h successful
  6225. Program: the Pentium Pro BIOS update allows the system BIOS or other software
  6226.       to install a microcode patch into the Pentium Pro processor
  6227. Notes:    this API must be called from actual real mode, not V86 mode
  6228.     at least 32K stack space must be available when this function is called
  6229. SeeAlso: AX=D042h/BL=01h,AX=D042h/BL=02h,AX=D042h/BL=03h
  6230. SeeAlso: @xxxxh:xxxxh"Intel BIOS Upgrade",MSR 00000079h
  6231. ----------15D042BL01-------------------------
  6232. INT 15 R - Intel Pentium Pro BIOS UPDATE - WRITE BIOS UPDATE AREA
  6233.     AX = D042h
  6234.     BL = 01h
  6235.     ES:DI -> microcode update block (see #0457)
  6236.     CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
  6237. Return: CF clear if successful
  6238.     CF set on error
  6239.     AH = status (see #0456)
  6240.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  6241.         00h successful
  6242. Notes:    a microcode update may also be initiated by a WRMSR instruction
  6243.       with ECX=0079h, EDX=00000000h, and EAX=linear address of update
  6244.       block (see #0457)
  6245.     at least 32K stack space must be available when this function is called
  6246. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h,MSR 00000079h
  6247.  
  6248. (Table 0456)
  6249. Values for Pentium Pro BIOS update status:
  6250.  00h    successful
  6251.  86h    not implemented
  6252.  90h    unable to erase NVRAM device
  6253.  91h    unable to write to NVRAM device
  6254.  92h    unable to read storage
  6255.  93h    NVRAM is full
  6256.  94h    specified processor stepping is not present in system
  6257.  95h    invalid header or loader version
  6258.  96h    wrong checksum in header
  6259.  97h    processor rejected the update
  6260.  98h    the same or a more recent update is already stored
  6261.  99h    update block number was out of range
  6262.  
  6263. Format of Pentium Pro microcode update block:
  6264. Offset    Size    Description    (Table 0457)
  6265.  00h    DWORD    update header version number (currently 00000001h)
  6266.         FFFFFFFFh = unused block
  6267.  04h    DWORD    revision number of this microcode update
  6268.  08h    DWORD    update creation date, as BCD mmddyyyy (month,day,year)
  6269.  0Ch    DWORD    family/model/stepping of processor to which update applied
  6270.         (same value as returned by CPUID instruction)
  6271.  10h    DWORD    checksum (used to force sum of all 512 DWORDs of the update
  6272.         block to 00000000h)
  6273.  14h    DWORD    revision number of loader needed to install update
  6274.         (currently 00000001h)
  6275.  18h 24 BYTEs    reserved for future expansion
  6276.  30h 2000 BYTEs    encrypted microcode data
  6277. SeeAlso: MSR 00000079h,OPCODE "CPUID"
  6278. ----------15D042BL02-------------------------
  6279. INT 15 R - Intel Pentium Pro BIOS UPDATE - BIOS UPDATE CONTROL
  6280.     AX = D042h
  6281.     BL = 02h
  6282.     BH = function
  6283.         01h enable update loading at initialization time
  6284.         02h check whether update loading is enabled
  6285.     CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
  6286. Return: CF clear if successful
  6287.     CF set on error
  6288.     AH = status (see #0456)
  6289.         00h successful
  6290.         BL = enabled/disabled flag
  6291.         86h not implemented
  6292.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  6293.         00h successful
  6294. Notes:    this API must be called from actual real mode, not V86 mode
  6295.     at least 32K stack space must be available when this function is called
  6296.     there is no call to disable update loading due to security risks; the
  6297.       BIOS setup can disable loading
  6298. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h
  6299. ----------15D042BL03-------------------------
  6300. INT 15 R - Intel Pentium Pro BIOS UPDATE - READ BIOS UPDATE AREA
  6301.     AX = D042h
  6302.     BL = 03h
  6303.     ES:DI -> buffer for microcode update block (see #0457)
  6304.     ECX = two real-mode 64K scratchpad segments (upper and lower words)
  6305.     DX = segment of 64K scratchpad area for BIOS use
  6306.     SI = zero-based index number of update block to retrieve
  6307. Return: CF clear if successful
  6308.     CF set on error
  6309.     AH = status
  6310.         00h successful
  6311.         ES:DI buffer filled with 2048-byte update block
  6312.         86h not implemented
  6313.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  6314.         00h successful
  6315. Program: the Pentium Pro BIOS update allows the system BIOS or other software
  6316.       to install a microcode patch into the Pentium Pro processor
  6317. Notes:    this API must be called from actual real mode, not V86 mode
  6318.     at least 32K stack space must be available when this function is called
  6319. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=01h,AX=D042h/BL=03h
  6320. --------B-15D100DX0000-----------------------
  6321. INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
  6322.     AX = D100h
  6323.     DX = 0000h (reserved, must set to 0)
  6324. Return: BL = size of one DDT entry, in bytes
  6325.     CX = number of DDT entries
  6326.     AH = return code (see #0458)
  6327.     CF set on error
  6328.     CF clear on success
  6329. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
  6330.  
  6331. (Table 0458)
  6332. Values for return code:
  6333.  00h    success
  6334.  01h    requested DDT entry not found
  6335.  02h    DDT data not valid
  6336.  86h    function not supported
  6337. --------B-15D101-----------------------------
  6338. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
  6339.     AX = D101h
  6340.     BX = number of requested entry (starting with 1)
  6341.     DX = 0000h (reserved, must be set to 0)
  6342.     ES:DI -> buffer to contain DDT entry (see #0459)
  6343. Return: AH = return code (see #0458)
  6344.     CF set on error
  6345.     CF clear on success
  6346.         ES:DI buffer filled with DDT entry
  6347. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
  6348.  
  6349. Format of Device Descriptor Table (DDT):
  6350. Offset    Size    Description    (Table 0459)
  6351.  00h    BYTE    bits 7-4: reserved (set to 0)
  6352.         bits 3-0: slot of device (0 = system board)
  6353.  01h    BYTE    bits 7-4: second interrupt for this device (0 = none)
  6354.         bits 3-0: first interrupt for this device (0 = none)
  6355.  02h    BYTE    bits 7-4: second arbitration level for this device
  6356.         bits 3-0: first arbitration level for this device
  6357.  03h    WORD    DDT indicators (see #0460)
  6358.  05h    BYTE    reserved (0)
  6359.  06h    WORD    device ID (0 = none)
  6360.  08h    WORD    starting address of first  I/O block (0 = none)
  6361.  0Ah    WORD    starting address of second I/O block (0 = none)
  6362.  OCh    WORD    starting address of third  I/O block (0 = none)
  6363.  OEh    DWORD    start of first non-system memory block (0 = none)
  6364.  12h    WORD    size of first non-system memory block (in kilobytes)
  6365.  14h    DWORD    start of second non-system memory block (0 = none)
  6366.  18h    WORD    size of second non-system memory block (in kilobytes)
  6367.  1Ah    BYTE    implementation identifier of the device
  6368.  1Bh    BYTE    implementation revision level of the device
  6369. Note:    I/O block addresses and non-system memory addresses are listed in
  6370.       ascending order in each DDT entry.
  6371.  
  6372. Bitfields for DDT indicators:
  6373. Bit(s)    Description    (Table 0460)
  6374.  15    reserved (0)
  6375.  14    second arbitration level exists
  6376.  13    first arbitration level exists
  6377.  12    serial interface is RS-422
  6378.  11    not address limited
  6379.  10    DMA channel used
  6380.  9    second arbitration level can be shared
  6381.  8    first arbitration level can be shared
  6382.  7-0    reserved (0)
  6383. --------B-15D102-----------------------------
  6384. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
  6385.     AX = D102h
  6386.     BX = entry number at which to start searching
  6387.     CX = requested I/O port address
  6388.     DX = 0000h (reserved, must be set to 0)
  6389.     ES:DI -> buffer to contain DDT entry (see #0459)
  6390. Return: AH = return code (see #0458)
  6391.     BX = DDT entry number where I/O port was found, or total entries
  6392.          plus 1 if port was not found.
  6393.     CF set on error
  6394.     CF clear on success
  6395.         ES:DI buffer filled with DDT entry
  6396. Desc:    the DDT is searched from the specified entry for the I/O port in CX,
  6397.       and the first entry in which it is found is returned
  6398. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
  6399. --------B-15D103DX0000-----------------------
  6400. INT 15 - later PS/2s - RETURN ENTIRE DDT
  6401.     AX = D103h
  6402.     DX = 0000h (reserved, must be set to 0)
  6403.     ES:DI -> buffer to contain DDT entry (see #0459)
  6404. Return: AH = return code (see #0458)
  6405.     CF set on error
  6406.     CF clear on success
  6407.         ES:DI buffer filled with DDT entry
  6408. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
  6409. --------B-15D104-----------------------------
  6410. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
  6411.     AX = D104h
  6412.     BX = entry number at which to start searching
  6413.     CX = requested device ID
  6414.     DX = 0000h (reserved, must be set to 0)
  6415.     ES:DI -> buffer to contain DDT entry (see #0459)
  6416. Return: AH = return code (see #0458)
  6417.     BX = DDT entry number where device ID was found, or total entries
  6418.           plus 1 if port was not found.
  6419.     CF set on error
  6420.     CF clear on success
  6421.         ES:DI buffer filled with DDT entry
  6422. Desc:    the DDT is searched from the specified entry for the device ID in CX,
  6423.       and the first entry in which it is found is returned.
  6424. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
  6425. --------B-15D2-------------------------------
  6426. INT 15 - later PS/2s - RESERVED
  6427.     AH = D2h
  6428.     ???
  6429. Return: ???
  6430. --------B-15D3-------------------------------
  6431. INT 15 - later PS/2s - RESERVED
  6432.     AH = D3h
  6433.     ???
  6434. Return: ???
  6435. --------B-15D4-------------------------------
  6436. INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
  6437.     AH = D4h
  6438.     DL = logical fixed disk drive number
  6439. Return: AH = return code (see #0461)
  6440.     CF set on error
  6441.     CF clear on success
  6442.         AL = physical fixed disk drive number
  6443.  
  6444. (Table 0461)
  6445. Values for return code:
  6446.  00h    success
  6447.  01h    specified logical drive number is invalid
  6448.  80h    function not supported (on PCjr and PC)
  6449.  86h    function not supported
  6450. --------B-15D5-------------------------------
  6451. INT 15 - later PS/2s - RESERVED
  6452.     AH = D5h
  6453.     ???
  6454. Return: ???
  6455. --------B-15D600BL00-------------------------
  6456. INT 15 - later PS/2s - READ BOOT DEVICE ID
  6457.     AX = D600h
  6458.     BL = 00h
  6459.     DX = device ID
  6460. Return: CF clear if successful
  6461.         AH = 00h
  6462.     CF set on error
  6463.         AH = status (86h for function not supported)
  6464. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
  6465. --------B-15D600BL01-------------------------
  6466. INT 15 - later PS/2s - WRITE BOOT DEVICE ID
  6467.     AX = D600h
  6468.     BL = 01h
  6469.     DX = device ID
  6470. Return: CF clear on success
  6471.         AH = 00h
  6472.     CF set on error
  6473.         AH = status (86h for function not supported)
  6474. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
  6475. --------B-15D601BL00-------------------------
  6476. INT 15 - later PS/2s - READ BOOT DEVICE KEY
  6477.     AX = D601h
  6478.     BL = 00h
  6479.     DX = device ID
  6480. Return: CF clear on success
  6481.         AH = 00h
  6482.     CF set on error
  6483.         AH = status (86h for function not supported)
  6484. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
  6485. --------B-15D601BL01-------------------------
  6486. INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
  6487.     AX = D601h
  6488.     BL = 01h
  6489.     DX = device ID
  6490. Return: CF clear on success
  6491.         AH = 00h
  6492.     CF set on error
  6493.         AH = status (86h for function not supported)
  6494. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
  6495. --------B-15D602-----------------------------
  6496. INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
  6497.     AX = D602h
  6498. Return: CF clear on success
  6499.         AH = 00h
  6500.         AL = status of reference-partition boot request
  6501.         00h boot not requested
  6502.         01h boot requested
  6503.     CF set on error
  6504.         AH = status (86h for function not supported)
  6505. SeeAlso: AX=D601h/BL=00h
  6506. --------X-15D800-----------------------------
  6507. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  6508.     AX = D800h
  6509.     CL = slot number (including embedded and virtual)
  6510. Return: CF clear if successful
  6511.         AH = 00h
  6512.     CF set on error
  6513.         AH = error code (80h,82h,83h,86h,87h)(see #0463)
  6514.     AL = bit flags (see #0462)
  6515.     BH = major revision level of configuration utility
  6516.     BL = minor revision level of configuration utility
  6517.     CX = checksum of configuration file
  6518.     DH = number of device functions
  6519.     DL = combined function information byte (see #0464)
  6520.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  6521. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  6522. SeeAlso: AX=D801h,AX=D804h
  6523.  
  6524. Bitfields for EISA AL bit flags:
  6525. Bit(s)    Description    (Table 0462)
  6526.  7    set if duplicate IDs
  6527.  6    set if product ID readable
  6528.  4,5    slot type (00=expansion, 01=embedded, 10=virtual device)
  6529.  0-3    duplicate ID number if bit 7 set
  6530. SeeAlso: #0464
  6531.  
  6532. (Table 0463)
  6533. Values for EISA error code:
  6534.  80h    invalid slot number
  6535.  81h    invalid function number
  6536.  82h    EISA CMOS corrupt
  6537.  83h    empty slot
  6538.  84h    error clearing CMOS
  6539.  85h    EISA CMOS is full
  6540.  86h    invalid BIOS-FW function call
  6541.  87h    invalid system configuration
  6542.  88h    config utility version not supported
  6543.  
  6544. Bitfields for EISA combined function information byte:
  6545. Bit(s)    Description    (Table 0464)
  6546.  7    reserved
  6547.  6    slot has free-form data entries
  6548.  5    slot has port initialization entries
  6549.  4    slot has port-range entries
  6550.  3    slot has DMA entries
  6551.  2    slot has IRQ entries
  6552.  1    slot has memory entries
  6553.  0    slot has function type entries
  6554. SeeAlso: #0462
  6555. --------X-15D801-----------------------------
  6556. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  6557.     AX = D801h
  6558.     CH = function number to read
  6559.     CL = slot number (including embedded and virtual)
  6560.     DS:SI -> 320-byte buffer for standard configuration data block
  6561. Return: CF clear if successful
  6562.         AH = 00h
  6563.         DS:SI buffer filled
  6564.     CF set on error
  6565.         AH = error code (80h-83h,86h,87h) (see #0463)
  6566.     BX destroyed
  6567. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  6568. --------X-15D802-----------------------------
  6569. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  6570.     AX = D802h
  6571.     BH = EISA config utility major revision level
  6572.     BL = EISA config utility minor revision level
  6573. Return: CF clear if successful
  6574.         AH = 00h
  6575.     CF set on error
  6576.         AH = error code (84h,86h,88h) (see #0463)
  6577. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  6578. SeeAlso: AX=D803h
  6579. --------X-15D803-----------------------------
  6580. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  6581.     AX = D803h
  6582.     CX = length of data structure (0000h = empty slot)
  6583.         includes two bytes for config file checksum
  6584.     DS:SI -> configuration data
  6585. Return: CF clear if successful
  6586.         AH = 00h
  6587.     CF set on error
  6588.         AH = error code (84h-86h) (see #0463)
  6589. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  6590. SeeAlso: AX=D802h
  6591. --------X-15D804-----------------------------
  6592. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  6593.     AX = D804h
  6594.     CL = slot number (including embedded and virtual)
  6595. Return: CF clear if successful
  6596.         AH = 00h
  6597.     CF set on error
  6598.         AH = error code (80h,83h,86h) (see #0463)
  6599.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  6600. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  6601. SeeAlso: AX=D800h
  6602. --------b-15D820-----------------------------
  6603. INT 15 - Compaq LTE Lite - GET ???
  6604.     AX = D820h
  6605.     DS:SI -> 17-byte buffer for ???
  6606. Return: DS:SI buffer filled (first byte is length of remaining data, unless
  6607.       it is greater than 10h, in which case the second byte is 00h and no
  6608.       other data is returned)
  6609. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  6610.       486/486c/486cx and recent DESKPRO/i ROMs
  6611. SeeAlso: AX=D821h
  6612. --------b-15D821-----------------------------
  6613. INT 15 - Compaq LTE Lite - SET ???
  6614.     AX = D821h
  6615.     DS:SI -> counted string (should not be more than 16 bytes)
  6616. Return: AH = 00h
  6617. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  6618.       486/486c/486cx and recent DESKPRO/i ROMs
  6619. SeeAlso: AX=D820h
  6620. --------b-15D822BL00-------------------------
  6621. INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
  6622.     AX = D822h
  6623.     BL = 00h
  6624.     CX = size of buffer or 0000h to retrieve required buffer size
  6625.     DS:SI -> buffer for ??? (if CX nonzero)
  6626. Return: CF clear if successful
  6627.         AH = 00h
  6628.         DH = 08h
  6629.         CX = required buffer size to retrieve all data (if CX=0 on entry)
  6630.         DS:SI buffer filled (if CX nonzero on entry)
  6631.     CF set on error (BL nonzero)
  6632.         AH = 86h
  6633. --------b-15D823-----------------------------
  6634. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  6635.     AX = D823h
  6636.     BL = subfunction??? (00h or 80h)
  6637.     BH = ???
  6638.     DS:SI -> buffer for ??? (see #0465)
  6639. Return: CF clear if successful
  6640.         AH = 00h
  6641.         DH = 08h
  6642.         DL = ???
  6643.     CF set on error
  6644.         AH = error code
  6645.         86h BL neither 00h nor 80h
  6646.         87h ???
  6647.  
  6648. Format of Compaq EISA buffer:
  6649. Offset    Size    Description    (Table 0465)
  6650.  00h    BYTE    ???
  6651.  01h    WORD    ???
  6652.  03h    BYTE    ???
  6653.  04h    WORD    ???
  6654.  06h    WORD    ???
  6655.     ???
  6656. ----------15D824-----------------------------
  6657. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  6658.     AX = D824h
  6659.     CX = ???
  6660.     DS:SI -> ASCIZ string containing ???
  6661. Return: CF clear if successful
  6662.         AH = 00h
  6663.         CX = ???
  6664.     CF set on error
  6665.         AH = error code
  6666.         87h ??? failed
  6667.         88h ???
  6668. Note:    these functions are only available if ??? from keyboard controller
  6669.       command C0h
  6670. ----------15D825-----------------------------
  6671. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  6672.     AX = D825h
  6673.     CX = ???
  6674.     SI = ???
  6675.     DI = ???
  6676.     ???
  6677. Return: CF clear if successful
  6678.         AH = 00h
  6679.         CX = ???
  6680.     CF set on error
  6681.         AH = error code
  6682.         87h ??? failed
  6683.         88h ???
  6684.             CX = ???
  6685. Note:    these functions are only available if ??? from keyboard controller
  6686.       command C0h
  6687. ----------15D826-----------------------------
  6688. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  6689.     AX = D826h
  6690.     BX = ???
  6691.     CX = size of buffer in bytes
  6692.     DS:SI -> buffer for ???
  6693.     ???
  6694. Return: CF clear if successful
  6695.         AH = 00h
  6696.         CX = ???
  6697.     CF set on error
  6698.         AH = error code
  6699.         87h ??? failed
  6700.         88h ???
  6701. Note:    these functions are only available if ??? from keyboard controller
  6702.       command C0h
  6703. --------X-15D8-------------------------------
  6704. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  6705.     AH = D8h
  6706.     AL = 80h to 84h
  6707.     other registers as appropriate for AL=00h to 04h
  6708. Return: as appropriate for AL=00h to 04h
  6709. Note:    these functions are identical to AX=D800h to D804h, except that they
  6710.       should be called when using 32-bit CS addressing mode (pointers use
  6711.       ESI rather than SI as offset) instead of 16-bit addressing mode
  6712. SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
  6713. --------b-15D8-------------------------------
  6714. INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
  6715.     AH = D8h
  6716.     AL = A0h to A6h
  6717.     other registers as appropriate for AL=20h to 26h
  6718. Return: as appropriate for AL=20h to 26h
  6719. Note:    these functions are identical to AX=D820h to D826h, except that they
  6720.       should be called when using 32-bit CS addressing mode
  6721. ----------15DA-------------------------------
  6722. INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
  6723.     AH = DAh
  6724.     AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h)
  6725.     other registers vary by function
  6726. Return: CF clear if successful
  6727.         varies by function
  6728.     CF set on error
  6729.         AH = error code (86h unsupported [sub]function)
  6730. Note:    functions not listed above always return CF set and AH=86h; in the
  6731.       examined BIOS, functions 02h-04h,06h-07h,89h-8Bh, and 8Dh also
  6732.       always return CF set and AH=86h
  6733. SeeAlso: AX=DA00h,AX=DA01h,AX=DA88h,AX=DA99h,AX=DB00h
  6734. --------b-15DA00-----------------------------
  6735. INT 15 U - AMI PCI BIOS - ???
  6736.     AX = DA00h
  6737.     CL = subfunction
  6738.         00h ???
  6739.         01h ???
  6740.         02h get ???
  6741.     ???
  6742. Return: CF clear if successful
  6743.         ???
  6744.     CF set on error
  6745.         AH = error code (86h unsupported subfunction)
  6746. Note:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h always return
  6747.       failure
  6748. SeeAlso: AX=DA01h
  6749. --------b-15DA01-----------------------------
  6750. INT 15 U - AMI PCI BIOS - CPU SPEED CONTROL
  6751.     AX = DA01h
  6752.     CL = subfunction (00h-02h)
  6753.         00h set low CPU speed
  6754.         01h set high CPU speed
  6755.         02h get current CPU speed
  6756. Return: CF clear if successful
  6757.         AH = current/new CPU speed (00h low, 01h high)
  6758.         AL = ??? (00h)
  6759.     CF set on error
  6760.         AH = error code (86h unsupported subfunction)
  6761. Notes:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h are NOPs in both
  6762.       protected and V86 modes due to a test of MSW bit 0
  6763.     setting the CPU speed also generates the same audible signals generated
  6764.       when manually switching speeds with Ctrl-Alt-Gray- and Ctrl-Alt-Gray+
  6765. BUG:    the BIOS apparently intends to return CF set if ???, but fails to use
  6766.       a different exit path in that case, resulting in CF clear
  6767. ----------15DA05-----------------------------
  6768. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  6769.     AX = DA05h
  6770.     ES:SI -> 8-byte buffer for ??? and BIOS revision strings
  6771. Return: CF clear
  6772.     ES:SI buffer filled
  6773.     AL = 00h
  6774.     CX = ??? (0000h)
  6775. Notes:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  6776.       string is "AX1 "
  6777. SeeAlso: AX=DA15h,AX=DB04h
  6778. ----------15DA08-----------------------------
  6779. INT 15 U - AMI PCI BIOS - ???
  6780.     AX = DA08h
  6781.     ???
  6782. Return: CF clear if successful
  6783.         ???
  6784.     CF set on error
  6785.         AH = error code (86h unsupported subfunction)
  6786. Note:    in the examined v1.00.05.AX1 BIOS, this call always returns failure
  6787. ----------15DA12-----------------------------
  6788. INT 15 U - AMI PCI BIOS - v1.00.05.AX1 - ???
  6789.     AX = DA12h
  6790.     CL = subfunction
  6791.         00h ???
  6792.         01h    ???
  6793.         02h get ???
  6794.         03h ???
  6795.         04h ???
  6796.     ???
  6797. Return: CF clear if successful
  6798.         ???
  6799.     CF set on error
  6800.         AH = error code (86h unsupported subfunction)
  6801. Desc:    ??? performs various manipulations on system chipset registers
  6802. Notes:    subfunctions 00h and 01h are NOPs in protected and V86 modes due to
  6803.       a test of MSW bit 0
  6804.     subfunctions 00h-02h always return success
  6805. ----------15DA14-----------------------------
  6806. INT 15 U - AMI PCI BIOS - GET/SET ???
  6807.     AX = DA14h
  6808.     CL = subfunction
  6809.         00h read
  6810.         01h write
  6811.         DH = new value for ??? (00h-02h)
  6812.     DL = index of ??? (00h-03h, but not range-checked)
  6813.     ???
  6814. Return: CF clear if successful
  6815.         DH = current value of ??? if reading
  6816.     CF set on error
  6817.         AH = error code (86h unsupported subfunction)
  6818. Note:    the values for indexes 00h and 01h are stored in CMOS RAM location 19h,
  6819.       and the values for 02h and 03h are stored in location 36h
  6820. BUG:    the v1.00.05.AX1 BIOS range-checks DH on subfunction 00h instead of
  6821.       subfunction 01h, even though DH is never used by subfunction 00h
  6822. ----------15DA15-----------------------------
  6823. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  6824.     AX = DA15h
  6825.     ES:DI -> 8-byte buffer for ??? and BIOS revision strings
  6826. Return: CF clear
  6827.     ES:DI buffer filled
  6828.     AL = 00h
  6829. Note:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  6830.       string is "AX1 "
  6831. SeeAlso: AX=DA05h,AX=DB04h
  6832. ----------15DA19-----------------------------
  6833. INT 15 U - AMI PCI BIOS - GET/SET ???
  6834.     AX = DA19h
  6835.     CL = subfunction
  6836.         00h get first ???
  6837.         01h get second ???
  6838.         02h set first ???
  6839.         BX = ???
  6840.         DX = ???
  6841.         03h set second ???
  6842.         BX = ???
  6843.         DX = ???
  6844. Return: CF clear if successful
  6845.         AX = 0000h
  6846.         BX,DX = ??? (subfunctions 00h and 01h only)
  6847.     CF set on error
  6848.         AH = error code (86h unsupported subfunction)
  6849. Note:    the first ??? is stored in CMOS RAM locations 1Bh-1Eh, the second in
  6850.       locations 1Fh-22h in the v1.00.05.AX1 BIOS
  6851. --------b-15DA20-----------------------------
  6852. INT 15 U - AMI PCI BIOS v1.00.12.AX1T - CMOS RAM BITFIELD MANIPULATION
  6853.     AX = DA20h
  6854.     BL = subfunction
  6855.         00h set CMOS data field
  6856.         BH = CMOS data field number (00h-4Dh)
  6857.         CH = new value for bitfield (in lowest bits of register)
  6858.         01h read CMOS data field
  6859.         BH = CMOS data field number (00h-4Dh)
  6860.         Return: CH = value of bitfield
  6861.             CL = mask of valid bits
  6862.         Note:    both CL/CH shifted to move valid bits into lowest pos
  6863.         02h set CMOS byte
  6864.         CL = CMOS RAM address (00h-7Fh)
  6865.         CH = new value for CMOS byte
  6866.         03h get CMOS byte
  6867.         CL = CMOS RAM address (00h-7Fh)
  6868.         Return: CH = value of CMOS byte
  6869.         04h update CMOS checksums
  6870.         Note:    sets 2Eh/2Fh to checksum of 10h-2Dh and 7Eh/7Fh to
  6871.               checksum of 48h-7Dh
  6872.         05h verify CMOS checksums
  6873.         Return:    CF clear if checksums OK
  6874.                 AH = 00h
  6875.             CF set if checksum mismatch
  6876.                 AH = 01h
  6877. Return: CF clear if successful
  6878.         AH = 00h
  6879.     CF set on error
  6880.         AH = error code (86h unsupported function/data field)
  6881. Notes:    this function was not supported by the v1.00.05.AX1 BIOS, but had been
  6882.       added by 1.00.12.AX1T
  6883.     after using subfunctions 00h or 02h, the application must call
  6884.       subfunction 04h to update the checksums to prevent an error the next
  6885.       time the system is booted
  6886.  
  6887. (Table 0466)
  6888. Values for AMI BIOS v1.00.12.AX1T CMOS bitfield identifier:
  6889.  ID    address    bit(s)    contents
  6890.  00h    1Ah    7-6
  6891.  01h    1Dh    7-6
  6892.  02h    6Eh    1
  6893.  03h    77h    0
  6894.  04h    77h    1
  6895.  05h    77h    2
  6896.  06h    77h    3
  6897.  07h    77h    5
  6898.  08h    77h    6
  6899.  09h    77h    7
  6900.  0Ah    78h    7    power management enabled???
  6901.  0Bh    78h    6
  6902.  0Ch    10h    7-4    first floppy drive type
  6903.  0Dh    10h    3-0    second floppy drive type
  6904.  0Eh    11h    7
  6905.  0Fh    20h    4-0    selected language for error messages/setup utility
  6906.  10h    11h    2-1
  6907.  11h    11h    4
  6908.  12h    11h    0
  6909.  13h    11h    3
  6910.  14h    13h    7
  6911.  15h    13h    6-5
  6912.  16h    13h    4-2
  6913.  17h    19h    7
  6914.  18h    19h    6
  6915.  19h    19h    5
  6916.  1Ah    19h    4
  6917.  1Bh    1Eh    2-0
  6918.  1Ch    1Bh    7-6
  6919.  1Dh    1Ch    7
  6920.  1Eh    1Ch    3
  6921.  1Fh    1Ah    5-4
  6922.  20h    1Dh    5-4
  6923.  21h    1Bh    5-4
  6924.  22h    1Ch    6
  6925.  23h    1Ch    2
  6926.  24h    1Ah    3-2
  6927.  25h    1Dh    3-2
  6928.  26h    1Bh    3-2
  6929.  27h    1Ch    5
  6930.  28h    1Ch    1
  6931.  29h    1Ah    1-0
  6932.  2Ah    1Dh    1-0
  6933.  2Bh    1Bh    1-0
  6934.  2Ch    1Ch    4
  6935.  2Dh    1Ch    0
  6936.  2Eh    50h    7-0
  6937.  2Fh    51h    7-0
  6938.  30h    52h    7-0
  6939.  31h    53h    7-0
  6940.  32h    60h    0
  6941.  33h    60h    0
  6942.  34h    60h    0
  6943.  35h    60h    0
  6944.  36h    60h    0
  6945.  37h    60h    0
  6946.  38h    60h    1
  6947.  39h    61h    7
  6948.  3Ah    60h    2
  6949.  3Bh    61h    6-4
  6950.  3Ch    61h    2-0
  6951.  3Dh    60h    7-6
  6952.  3Eh    60h    5-4
  6953.  3Fh    78h    5-4
  6954.  40h    6Eh    5
  6955.  41h    1Eh    3
  6956.  42h    6Eh    0
  6957.  43h    6Eh    2
  6958.  44h    6Fh    1-0
  6959.  45h    6Fh    1-0
  6960.  46h    28h    4-2
  6961.  47h    28h    7-5
  6962.  48h    6Eh    4
  6963.  49h    6Eh    3
  6964.  4Ah    76h    7-0
  6965.  4Bh    77h    4
  6966.  4Ch    11h    6
  6967.  4Dh    1Fh    7-0
  6968. ----------15DA88-----------------------------
  6969. INT 15 U - AMI PCI BIOS - GET EXTENDED MEMORY SIZE
  6970.     AX = DA88h
  6971. Return: CF clear (successful)
  6972.     AX = 0000h
  6973.     CL:BX = extended memory size in KBytes
  6974. SeeAlso: AH=88h
  6975. ----------15DA8C-----------------------------
  6976. INT 15 U - AMI PCI BIOS - GET BIOS AND CHIPSET IDENTIFICATION
  6977.     AX = DA8Ch
  6978.     CL = subfunction
  6979.         00h get BIOS version string
  6980.         ES:DI -> 12-byte buffer for version string
  6981.         01h get chipset identification
  6982.         BL = what to retrieve
  6983.             (00h host/PCI bridge,01h motherboard chipset)
  6984.         ES:DI -> 12-byte buffer for chipset identification (see #0467)
  6985. Return: CF clear if successful
  6986.         ES:DI buffer filled
  6987.     CF set on error
  6988.         AH = error code (86h unsupported subfunction)
  6989. Notes:    the v1.00.05.AX1 BIOS returns "1.00.05.AX1 " as its version string
  6990.     subfunction 01h returns the five bytes read from the PCI configuration
  6991.       registers 00h-05h (see #0798), padded to 12 bytes with NULs
  6992. SeeAlso: AX=DB04h,PORT C000h"Neptune"
  6993.  
  6994. Format of AMI PCI BIOS chipset identification:
  6995. Offset    Size    Description    (Table 0467)
  6996.  00h    WORD    vendor ID (see #0656 at AX=B102h)
  6997.         8086h = Intel
  6998.  02h    WORD    device ID
  6999.         0484h (BL=01h)
  7000.         04A3h (BL=00h)
  7001.  04h    BYTE    low byte of PCI Command Register
  7002.  05h  7 BYTEs    unused (00h)
  7003. ----------15DA8E-----------------------------
  7004. INT 15 U - AMI PCI BIOS - ???
  7005.     AX = DA8Eh
  7006.     ???
  7007. Return: CF clear if successful
  7008.         ???
  7009.     CF set on error
  7010.         AH = error code (86h unsupported subfunction)
  7011. Note:    in the    v1.00.05.AX1 BIOS, this call always returns failure
  7012. ----------15DA92-----------------------------
  7013. INT 15 U - AMI PCI BIOS - GET CPU TYPE AND SPEED
  7014.     AX = DA92h
  7015. Return: CF clear (successful)
  7016.     AL = CPU stepping (see also #0453 at INT 15/AH=C9h)
  7017.     AH = CPU model
  7018.     BL = CPU family (05h = Pentium, etc.)
  7019.     CX = external clock speed in MHz (BCD)
  7020.         (0040h,0050h,0060h,0066h are possible return values on my
  7021.           Pentium with the Intel "Neptune" chipset)
  7022.     EAX high word destroyed
  7023. Note:    90 MHz and faster Pentium CPUs can be configured to run at varying
  7024.       multiples of the external clock speed, i.e. a typical 90 MHz Pentium
  7025.       system will run the motherboard at 60 MHz (my 90 MHz Pentium returns
  7026.       0060h in CX)
  7027. SeeAlso: AH=C9h
  7028. ----------15DA99-----------------------------
  7029. INT 15 U - AMI PCI BIOS - GET/SET ??? FLAG
  7030.     AX = DA99h
  7031.     CL = subfunction
  7032.         00h check if ???
  7033.         01h set ??? flag
  7034.         02h clear ??? flag
  7035. Return: CF clear if successful
  7036.         AH = ??? (00h,01h)
  7037.         AL = 00h
  7038.     CF set on error
  7039.         AH = error code (86h unsupported subfunction)
  7040. Note:    the flag is stored in bit 0 of CMOS RAM location 2Ch for BIOS
  7041.       v1.00.05.AX1
  7042. --------b-15DB00-----------------------------
  7043. INT 15 U - AMI BIOS - Flash ROM - READ FLASH BIOS
  7044.     AX = DB00h
  7045.     DS:SI -> parameter block (see #0468)
  7046.     ES:DI -> buffer for copied information
  7047. Return: CF clear if successful
  7048.     CF set on error
  7049.         AH = status (86h if not implemented)
  7050.     DS,ES destroyed, possibly other registers
  7051. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  7052. SeeAlso: AH=DAh,AX=DB01h,AX=DB04h
  7053.  
  7054. Format of AMI BIOS Flash ROM parameter block:
  7055. Offset    Size    Description    (Table 0468)
  7056.  00h 32 BYTEs    ASCIZ description of the file's contents
  7057.  20h    BYTE    Logical area type (see #0469)
  7058.  21h    DWORD    logical area size (overall size of area)
  7059.  25h    BYTE    flag: load from file (FF=yes, 00=no)
  7060.  26h    BYTE    flag: reboot after update (FF=yes, 00=no)
  7061.  27h    BYTE    flag: update entire image (FF=yes, 00=no)
  7062.  28h 24    BYTEs    ASCIZ logical area name (cooresponds to offset 20)
  7063.         "System BIOS"
  7064.         "Logo Data Area", etc.
  7065.  40h 15 BYTEs    ASCIZ time stamp string: MM/DD/YY-HH:MM
  7066.  4Fh    BYTE    checksum for this header (sum of all bytes except this one)
  7067.         if checksum would be 00h,01h, or FFh, it is set to 2Ah
  7068.  50h    DWORD    this file's starting address (offset in image)
  7069.  54h    DWORD    size of image chunk in this file
  7070.  58h    BYTE    logical area type - same as offset 20h
  7071.  59h    BYTE    flag: last file in chain (FF=yes, 00=no)
  7072.  5Ah  6 BYTEs    ASCIZ signature "FLASH"
  7073.  60h 16 BYTEs    ASCIZ filename of next file in chain
  7074.  70h 16 BYTEs    ASCIZ BIOS reserved string (usually version #)
  7075. Notes:    this block is identical in format to the 128-byte header on an AMI
  7076.       BIOS Update file
  7077.     for AX=DB00h, the following fields must be specified: 50h,54h,58h;
  7078.       the fields at offset 20h and 5Ah should also be set if possible
  7079.     the fields at offsets 40h and 70h will be set on return, if available
  7080. SeeAlso: #0470
  7081. --------b-15DB01-----------------------------
  7082. INT 15 U - AMI BIOS - Flash ROM - GET BIOS SUBSYSTEM INFORMATION
  7083.     AX = DB01h
  7084.     CL = BIOS subsystem information identifier (see #0469)
  7085. Return: CF clear if successful
  7086.         AX = 0000h
  7087.         ES:DI -> 56-byte record describing subsystem (see #0470)
  7088.     CF set on error
  7089.         AH = status
  7090.         01h nonexistent subsystem
  7091.         86h function not supported
  7092.         AL = 00h
  7093. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  7094. SeeAlso: AX=DB00h,AX=DB02h
  7095.  
  7096. (Table 0469)
  7097. Values for AMI BIOS subsystem identifier:
  7098.  00h    recovery code
  7099.  01h    system BIOS
  7100.  02h    PCI configuration data
  7101.  03h    OEM logo data area (see #0471)
  7102.  04h    system BIOS/Language Set (one system)
  7103.     configuration utility (another system)
  7104. SeeAlso: #0470
  7105.  
  7106. Format of AMI BIOS subsystem information:
  7107. Offset    Size    Description    (Table 0470)
  7108.  00h    BYTE    subsystem identifier/logical area type (see #0469)
  7109.  01h    DWORD    subsystem (FlashROM page) size in bytes
  7110.  05h    BYTE    flag: loadable from file (FFh=yes)
  7111.  06h    BYTE    flag: reboot after update (FFh=yes)
  7112.  07h    BYTE    flag: update entire image (FFh=yes)
  7113.  08h 24 BYTEs    subsystem/logical area name
  7114.  20h    BYTE    subsystem identifier???
  7115.  21h    BYTE    flag: reprogrammable if FFh
  7116.  22h    BYTE    ??? (01h,02h seen)
  7117.  23h  5 BYTEs    ??? (apparently always 00h)
  7118.  28h 16 BYTEs    BIOS reserved string (usually version number)
  7119. SeeAlso: #0468
  7120.  
  7121. Format of AMI OEM Logo data area:
  7122. Offset    Size    Description    (Table 0471)
  7123.  00h  8 BYTEs    signature
  7124.         "TEXTLOGO" if text-mode OEM logo
  7125.         8 DUP (FFh) if unused
  7126.  08h    WORD    offset of logo font definition table
  7127.  0Ah    WORD    offset of logo data
  7128.  0Ch    WORD    size of logo font table in words
  7129.  0Eh    WORD    offset of upper left corner of logo in video page
  7130.  10h    WORD    width of logo
  7131.  12h    WORD    height of logo
  7132.  14h    BYTE    reserved???
  7133.  var    var    logo font definition (16 bytes per character)
  7134.  var    var    logo data as character/attribute pairs
  7135. Note:    the attribute for the logo characters specifies which font will be used
  7136.       for that character.  If bit 3 is cleared, the normal system font is
  7137.       used; if bit 3 is set, the logo font is used, with screen colors
  7138.       adjusted to match the corresponding non-bright attribute for the
  7139.       system font
  7140. SeeAlso: #0469,#0470
  7141. --------b-15DB02-----------------------------
  7142. INT 15 U - AMI BIOS - Flash ROM - GET SIZE OF FLASH ROM PROGRAMMING CODE
  7143.     AX = DB02h
  7144. Return: CF clear
  7145.     AX = 0000h
  7146.     BX = size of ROM programming code in bytes
  7147. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  7148. SeeAlso: AX=DB00h,AX=DB03h
  7149. --------b-15DB03-----------------------------
  7150. INT 15 U - AMI BIOS - Flash ROM - GET FLASH ROM PROGRAMMING CODE
  7151.     AX = DB03h
  7152.     DS:SI -> ???
  7153.     ES:DI -> buffer for Flash ROM programming code
  7154.     BX = ???
  7155.     DX = ???
  7156. Return: CF clear if successful
  7157.         AH = ???
  7158.         BX = ???
  7159.         DX = ???
  7160.     CF set on error
  7161.         AH = error code
  7162. Notes:    the entry point for the copied code (which is fully relocatable) is
  7163.       the very first byte (see #0472)
  7164.     used by FMUP.EXE, Intel's Flash Memory Update utility
  7165. SeeAlso: AX=DB00h,AX=DB02h
  7166.  
  7167. (Table 0472)
  7168. Call AMI BIOS ??? code with:
  7169.     AL = function
  7170.         00h erase Flash ROM block
  7171.         CX = ???
  7172.             bit 8: address line A16 inverted
  7173.         ???
  7174.         01h program new data into Flash ROM
  7175.         ???
  7176.         02h perform cold reboot
  7177.     DS:SI -> ??? (see #0473)
  7178.     ES:DI -> ???
  7179. Return: AH = status
  7180.         00h successful
  7181.         01h invalid function
  7182.         02h ???
  7183.         03h ???
  7184.         04h ???
  7185. Note:    DS:SI and ES:DI are ignored for function 02h
  7186.  
  7187. Format of AMI BIOS Flash ROM programming parameters:
  7188. Offset    Size    Description    (Table 0473)
  7189.  00h 32 BYTEs    ???
  7190.  20h    BYTE    BIOS section number
  7191.  21h    DWORD    length of BIOS code/data in bytes
  7192.  25h 43 BYTEs    ???
  7193.  50h    DWORD    ???
  7194.  54h 44 BYTEs    ???
  7195. SeeAlso: #0472
  7196. --------b-15DB04-----------------------------
  7197. INT 15 U - AMI BIOS - Flash ROM - GET BIOS REVISION
  7198.     AX = DB04h
  7199. Return: CF clear if supported
  7200.         BL:BH:DL:DH = BIOS revision string
  7201.         (e.g. 'AX1 ' for v1.00.05.AX1, 'AV0M' for v1.00.03.AV0M)
  7202.         CL = flag: DH valid?
  7203.         00h ignore DH; ignore DL as well if 20h (space)
  7204.         01h ignore DH if 20h (space)
  7205.         CH = BIOS status
  7206.         00h normal mode
  7207.         01h ROM recovery mode
  7208.         AL = ??? (02h)
  7209. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  7210. SeeAlso: AX=DA05h,AX=DA15h,AX=DA8Ch,AX=DB00h,AX=DB03h
  7211. --------Q-15DE00-----------------------------
  7212. INT 15 - DESQview - GET PROGRAM NAME
  7213.     AX = DE00h
  7214. Return: AX = offset into DESQVIEW.DVO of program most recently selected from
  7215.           the "Switch Windows" menu (see #0474)
  7216. Note:    always returns AX=0000h under DESQview/X
  7217. SeeAlso: AX=DE07h
  7218.  
  7219. Format of program entry in DESQVIEW.DVO:
  7220. Offset    Size    Description    (Table 0474)
  7221.  00h    BYTE    length of name (FFh if end of file)
  7222.  01h  N BYTEs    name
  7223.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  7224.     BYTE    program type
  7225.         00h normal program
  7226.         04h divider
  7227.         80h Delete a Program
  7228.         81h Change a Program
  7229.     WORD    ??? apparently always 0000h
  7230. --------Q-15DE01-----------------------------
  7231. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  7232.     AX = DE01h
  7233. Return: nothing
  7234. Notes:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  7235.     NOP for DESQview/X
  7236. --------Q-15DE02-----------------------------
  7237. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  7238.     AX = DE02h
  7239. Return: nothing
  7240. Note:    this call is a NOP in DV 2.x
  7241. SeeAlso: AX=DE03h
  7242. --------Q-15DE03-----------------------------
  7243. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  7244.     AX = DE03h
  7245. Return: AX = ??? for current window
  7246.     BX = ??? for current window
  7247. Note:    this call is a NOP in DV 2.x
  7248. SeeAlso: AX=DE02h
  7249. --------Q-15DE04-----------------------------
  7250. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  7251.     AX = DE04h
  7252. Return: BX = bytes of common memory available
  7253.     CX = largest block available
  7254.     DX = total common memory in bytes
  7255. SeeAlso: AX=DE05h,AX=DE06h
  7256. --------Q-15DE05-----------------------------
  7257. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  7258.     AX = DE05h
  7259. Return: BX = KB of memory available
  7260.     CX = largest block available
  7261.     DX = total conventional memory in KB
  7262. SeeAlso: AX=DE04h,AX=DE06h
  7263. --------Q-15DE06-----------------------------
  7264. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  7265.     AX = DE06h
  7266. Return: BX = KB of expanded memory available
  7267.     CX = largest block available
  7268.     DX = total expanded memory in KB
  7269. SeeAlso: AX=DE04h,AX=DE05h
  7270. --------Q-15DE07-----------------------------
  7271. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  7272.     AX = DE07h
  7273. Return: AX = number of program as it appears on the "Switch Windows" menu
  7274. Note:    this API call may be made from a hardware interrupt handler
  7275. SeeAlso: AX=DE00h
  7276. --------Q-15DE08-----------------------------
  7277. INT 15 - DESQview - GET ???
  7278.     AX = DE08h
  7279. Return: AX = 0000h if ??? is not set to the current task
  7280.          0001h if ??? is set to the current task
  7281. --------Q-15DE09-----------------------------
  7282. INT 15 - DESQview - UNIMPLEMENTED
  7283.     AX = DE09h
  7284. Return: nothing (NOP in DV 1.x and 2.x)
  7285. --------Q-15DE0A-----------------------------
  7286. INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  7287.     AX = DE0Ah
  7288.     BL = character
  7289. Return: character displayed, next call will display in next position (which
  7290.     wraps back to the start of the line if off the right edge of screen)
  7291. Notes:    displays character on bottom line of *physical* screen, regardless
  7292.       of current size of window (even entirely hidden)
  7293.     does not know about graphics display modes, just pokes the characters
  7294.       into display memory
  7295.     this API call may be made from a hardware interrupt handler
  7296. SeeAlso: AX=1003h
  7297. --------Q-15DE0B-----------------------------
  7298. INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  7299.     AX = DE0Bh
  7300.     BL = API level minor version number
  7301.     BH = API level major version number
  7302. Return: AX = maximum API level (AH = major, AL = minor)
  7303. Notes:    if the requested API level is greater than the version of DESQview, a
  7304.       "You need a newer version" error window is popped up
  7305.     the API level defaults to 1.00, and is inherited by child tasks
  7306. --------Q-15DE0C-----------------------------
  7307. INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  7308.     AX = DE0Ch
  7309.     BX = number of bytes
  7310. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  7311. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  7312.       system memory
  7313. SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
  7314. --------Q-15DE0D-----------------------------
  7315. INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  7316.     AX = DE0Dh
  7317.     ES:DI -> previously allocated block
  7318. Return: nothing
  7319. SeeAlso: AX=1002h,AX=DE0Ch
  7320. --------Q-15DE0E-----------------------------
  7321. INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
  7322.     AX = DE0Eh
  7323.     ES:DI -> name to find (see #0475)
  7324.     CX = length of name
  7325. Return: BX = 0000h not found
  7326.          0001h found
  7327.         DS:SI = object handle
  7328. SeeAlso: AH=12h/BH=11h,AH=12h/BH=12h"GETNAME"
  7329.  
  7330. (Table 0475)
  7331. Values for special DESQview mailbox names:
  7332.  "COM1" ... "COM4"    RBcomm using COM1 ... COM4
  7333.  "DESQview/X Help Engine"
  7334.  "DESQview/X Network Server"  Network Manager
  7335.  "DESQview X Server0"    X-Windows server
  7336.  "DESQview X Server7"    X-Windows printing service
  7337.  "INBOX"        DESQview/X LPD requests
  7338.  "OUTBOX"        DESQview/X LPD responses
  7339.  "WAITBOX"        semaphore to synchronize DESQview/X LPD communications
  7340.  "_DVNM_"        DV/X v1.10 network manager
  7341. --------Q-15DE0F-----------------------------
  7342. INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
  7343.     AX = DE0Fh
  7344. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  7345. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  7346.     enables an additional mouse mode
  7347. --------Q-15DE10-----------------------------
  7348. INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  7349.     AX = DE10h
  7350.     BH = scan code
  7351.     BL = character
  7352. Return: nothing
  7353. Notes:    a later read will get the keystroke as if it had been typed by the user
  7354.     multiple pushes are read last-in first-out
  7355.     if a script exists for the pushed key in the current application, the
  7356.       script will be executed
  7357.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  7358. SeeAlso: INT 16/AH=05h
  7359. --------Q-15DE11BL00-------------------------
  7360. INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
  7361.     AX = DE11h
  7362.     BL = 00h      viewport will not move automatically
  7363.          nonzero  viewport will move to keep cursor visible (default)
  7364. Return: nothing
  7365. --------Q-15DE12BX0000-----------------------
  7366. INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  7367.     AX = DE12h
  7368.     BX = 0000h    select normal style (linefeed only moves down)
  7369.          nonzero  select C style (linefeed moves to start of next line)
  7370. Return: nothing
  7371. Note:    set on a per-task basis, and inherited from the parent task
  7372. --------Q-15DE13-----------------------------
  7373. INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
  7374.     AX = DE13h
  7375. Return: BX = number of calls to BEGINC or ENTERC
  7376.           (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
  7377.           (see INT 15/AX=101Ch)
  7378. Note:    this API call may be made from within a hardware interrupt handler
  7379. SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
  7380. --------Q-15DE14-----------------------------
  7381. INT 15 - DESQview v2.20+ - GET OBJECT TYPE
  7382.     AX = DE14h
  7383.     ES:DI -> object
  7384. Return: BL = 00h not an object
  7385.          08h window or task
  7386.          09h mailbox
  7387.          0Ah keyboard
  7388.          0Bh timer
  7389.          0Ch objectq
  7390.          0Fh pointer
  7391.          10h panel
  7392. SeeAlso: AX=1016h
  7393. --------Q-15DE15-----------------------------
  7394. INT 15 - DESQview v2.20+ - SET ERROR HANDLING
  7395.     AX = DE15h
  7396.     BL = error handling mode
  7397.         00h post system error on all error conditions
  7398.         01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  7399.         messages sent to mailboxes which fail due to lack of system
  7400.         or common memory
  7401.         02h (v2.26+) same as 01h, but also return null pointer for GETMEM
  7402.         calls which fail due to lack of system memory
  7403. Return: nothing
  7404. SeeAlso: AX=DE0Ch,AX=DE16h
  7405. --------Q-15DE16-----------------------------
  7406. INT 15 - DESQview v2.20+ - GET ERROR HANDLING
  7407.     AX = DE16h
  7408. Return: BL = current mode
  7409.         00h always post system error
  7410.         01h return carry flag set on failed mailbox writes
  7411.         02h return CF set on failed mailbox writes and NULL on failed
  7412.         GETMEM calls
  7413. SeeAlso: AX=DE15h
  7414. --------Q-15DE17-----------------------------
  7415. INT 15 - DESQview v2.20-2.25 - reserved
  7416.     AX = DE17h
  7417. Return: pops up "Programming error" window
  7418. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  7419. SeeAlso: AX=1117h
  7420. --------Q-15DE17-----------------------------
  7421. INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  7422.     AX = DE17h
  7423.     BX = function
  7424.         0000h   get current mapping context without setting
  7425.         nonzero set new mapping context to BX
  7426. Return: BX = mapping context in effect before call
  7427. Notes:    mapping contexts determine conventional-memory addressability; setting
  7428.       a mapping context ensures that the associated program and data areas
  7429.       are in memory for access.  Usable by drivers, TSRs and shared
  7430.       programs.
  7431.     caller need not be running under DESQview
  7432.     this API call may be made from a hardware interrupt handler
  7433. SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
  7434. --------Q-15DE18-----------------------------
  7435. INT 15 - DESQview v2.20+ - internal - ???
  7436.     AX = DE18h
  7437.     BP = function number
  7438.         high byte must be 10h
  7439.         low byte is function
  7440.         00h set ???
  7441.             BL = ???  (00h-10h, video mode???)
  7442.             BH = value to store
  7443.         03h set ???
  7444.             BL = ??? (stored in driver)
  7445.         0Ah get ???
  7446.             ES:DI -> 18-byte buffer to hold ???
  7447. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  7448. --------Q-15DE19-----------------------------
  7449. INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  7450.     AX = DE19h
  7451.     BX = number of bytes to allocate
  7452. Return: AX = 0000h successful
  7453.         ES:DI -> allocated block
  7454.          nonzero insufficient memory
  7455. Note:    this API call may be made from within a hardware interrupt handler
  7456. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  7457. --------Q-15DE1A-----------------------------
  7458. INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  7459.     AX = DE1Ah
  7460.     ES:DI -> previously allocated block
  7461. Return: AX = 0000h (successful)
  7462. Note:    this function may be called from within a hardware interrupt handler
  7463. SeeAlso: AX=DE0Dh,AX=DE19h
  7464. --------Q-15DE1B-----------------------------
  7465. INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  7466.     AX = DE1Bh
  7467. Return: nothing
  7468. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  7469. --------Q-15DE1C-----------------------------
  7470. INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  7471.     AX = DE1Ch
  7472. Return: nothing
  7473. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  7474.       that DOS is free
  7475.     the official documentation states that this call should be paired with
  7476.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  7477.     this API call may be made from within a hardware interrupt handler
  7478. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  7479. --------Q-15DE1D-----------------------------
  7480. INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  7481.     AX = DE1Dh
  7482.     DX = segment of handle for task to receive keystroke
  7483.     BL = character
  7484.     BH = scan code
  7485. Return: AX = 0000h if successful
  7486.        nonzero if receiver's keyboard buffer was full
  7487. Notes:    the key is treated as though the user had pressed it, ignoring any
  7488.       script which may be bound to the key, and using the current field
  7489.       table if the keyboard object is in field processing mode
  7490.     multiple PUTKEYs are seen in the order in which they are executed
  7491. SeeAlso: AX=DE10h
  7492. --------Q-15DE1E-----------------------------
  7493. INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  7494.     AX = DE1Eh
  7495. Return: CL = actual number of rows on screen
  7496.     CH = actual number of columns on screen
  7497.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  7498. Note:    this API call may be made from a hardware interrupt handler
  7499. SeeAlso: INT 10/AH=0Fh
  7500. --------Q-15DE1F-----------------------------
  7501. INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  7502.     AX = DE1Fh
  7503. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  7504. Note:    this API call may be made from within a hardware interrupt handler
  7505. SeeAlso: AX=DE13h,INT 21/AH=34h
  7506. --------Q-15DE20-----------------------------
  7507. INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  7508.     AX = DE20h
  7509.     BX = segment of handle of task to interupt
  7510.     DX:CX -> FAR interrupt routine
  7511.     BP,SI,DI,DS,ES as required by interrupt routine
  7512. Return: nothing
  7513. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  7514.       making the DISPATCHINT call
  7515.     multiple "DISPATCHINT" calls are processed in the order in which they
  7516.       were executed
  7517.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  7518.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  7519.       needs to be preserved
  7520.     this API call may be made from within a hardware interrupt handler
  7521. SeeAlso: AX=1021h,AX=DE2Ah
  7522. --------Q-15DE21-----------------------------
  7523. INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  7524.     AX = DE21h
  7525.     BX = new state
  7526.         0000h turn off
  7527.         nonzero turn on
  7528. Return: BX = old state of virtualization
  7529. Notes:    this API call may be made from within a hardware interrupt handler
  7530.     under DV 2.40 and 2.42, this call appears to have no effect and always
  7531.       returns a nonzero value in BX which appears to be the offset within
  7532.       the DV common memory segment of the caller's task object; it may
  7533.       only have an effect within a hardware interrupt handler
  7534. SeeAlso: AX=1117h,AX=DE17h
  7535. --------Q-15DE22-----------------------------
  7536. INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  7537.     AX = DE22h
  7538.     DX = segment of task handle
  7539. Return: DX = total amount of memory in paragraphs
  7540.     BX = amount of system memory in paragraphs
  7541.     CX = largest block of system memory available in paragraphs
  7542.     AX = memory flags (see #0476)
  7543. Notes:    if the task handle is a child task, the returned values will be for the
  7544.       process containing the task, rather than the task itself
  7545.     if the process's system memory is swapped out, BX,CX,DX remain
  7546.       unchanged, because the memory usage cannot be determined
  7547. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  7548.  
  7549. Bitfields for DESQview process memory flags:
  7550. Bit(s)    Description    (Table 0476)
  7551.  0    system memory resides in shared memory
  7552.  1    process's memory is swapped out
  7553.  2    process's system memory is swapped out
  7554. --------Q-15DE23-----------------------------
  7555. INT 15 U - DESQview v2.31+ - ???
  7556.     AX = DE23h
  7557.     BX = ??? IRQ number on first PIC?
  7558.     CX = ??? IRQ number on second PIC?
  7559. Return: ???
  7560. Note:    called by QEMM 6.00+
  7561. --------Q-15DE24-----------------------------
  7562. INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
  7563.     AX = DE24h
  7564.     BX = length of .DVP data
  7565.     CX = length of ??? string
  7566.     DS:SI -> ??? string
  7567.     ES:DI -> .DVP data (see #0353 at AX=102Ch)
  7568. Return: BX = segment of task handle??? or 0000h on error
  7569. Note:    this call is similar to AX=102Ch except that it can interpret the
  7570.       extended DVP data
  7571. SeeAlso: AX=102Ch
  7572. --------Q-15DE25-----------------------------
  7573. INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
  7574.     AX = DE25h
  7575.     ES:DI -> 67-byte buffer for ASCIZ directory name
  7576. Return: ES:DI buffer filled with directory from which DESQview was started
  7577. BUG:    DV 2.42 does not place a terminating NUL at the end of the directory
  7578.       name, so if the buffer is not cleared to zeros before the call,
  7579.       there is no way to tell where the directory name ends.  This bug
  7580.       has been fixed in DV 2.52 (DV/X 1.02)
  7581. SeeAlso: AX=DE2Eh,INT 21/AH=47h
  7582. --------Q-15DE26-----------------------------
  7583. INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
  7584.     AX = DE26h
  7585. Return: BX = segment of handle for task with keyboard focus
  7586. Note:    under DESQview/X, the X server always has the keyboard focus unless a
  7587.       "direct" window is active
  7588. SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
  7589. --------Q-15DE27-----------------------------
  7590. INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
  7591.     AX = DE27h
  7592.     BX = type
  7593.         0000h process
  7594.         0001h task
  7595.     ES:DI -> list of Instance Item Structures (see #0477)
  7596. Return: CF clear if successful
  7597.         AX = ???
  7598.         BX = ???
  7599.     CF set on error
  7600.         AX = error code???
  7601.         0004h invalid BX value
  7602. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7603. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
  7604.  
  7605. Format of DESQview Instance Item Structure [one element of list]:
  7606. Offset    Size    Description    (Table 0477)
  7607.  00h    WORD    length of data area DESQview should save and restore on context
  7608.           switches (0000h = end of list)
  7609.  02h    DWORD    pointer to area to be saved/restored
  7610. --------Q-15DE28-----------------------------
  7611. INT 15 U - DESQview v2.50+ - ???
  7612.     AX = DE28h
  7613.     BX = segment of ??? or 0000h for default
  7614.     ???
  7615. Return: ???
  7616. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7617. SeeAlso: AX=DE2Ah
  7618. --------Q-15DE29BX0000-----------------------
  7619. INT 15 U - DESQview/X - ???
  7620.     AX = DE29h
  7621.     BX = 0000h
  7622.     ???
  7623. Return: CF clear if successful
  7624.         ???
  7625.     CF set on error
  7626. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7627.     under DESQview 2.60, this function and all other subfunctions of
  7628.       AX=DE29h always return CF set, as they are unique to DESQview/X
  7629. --------Q-15DE29BX0001-----------------------
  7630. INT 15 U - DESQview/X - ???
  7631.     AX = DE29h
  7632.     BX = 0001h
  7633.     DX = segment of window handle
  7634. Return: CF clear if successful
  7635.         AX = ???
  7636.         DX = ???
  7637.     CF set on error
  7638. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7639. --------Q-15DE29BX0002-----------------------
  7640. INT 15 U - DESQview/X - ???
  7641.     AX = DE29h
  7642.     BX = 0002h
  7643.     DX = segment of window handle
  7644. Return: CF clear if successful
  7645.         AX = ???
  7646.         DX = ???
  7647.     CF set on error
  7648. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7649. --------Q-15DE29BX0003-----------------------
  7650. INT 15 U - DESQview/X - ???
  7651.     AX = DE29h
  7652.     BX = 0003h
  7653.     DX = segment of window handle
  7654. Return: CF clear if successful
  7655.         ???
  7656.     CF set on error
  7657. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7658. --------Q-15DE29BX0004-----------------------
  7659. INT 15 U - DESQview/X - GET DISPLAY NAME
  7660.     AX = DE29h
  7661.     BX = 0004h
  7662.     CX = size of buffer in bytes
  7663.     DX = segment of window handle
  7664.     ES:DI -> buffer for display name
  7665. Return: CF clear if successful
  7666.         buffer filled with ASCIZ display name (truncated if necessary) or
  7667.           null string if no display
  7668.     CF set on error
  7669. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7670.     the name ":0" refers to the local display
  7671. --------Q-15DE29BX0005-----------------------
  7672. INT 15 U - DESQview/X - ???
  7673.     AX = DE29h
  7674.     BX = 0005h
  7675.     ???
  7676. Return: CF clear if successful
  7677.         ???
  7678.     CF set on error
  7679. Note:    under DESQview 2.60, this function and all other subfunctions of
  7680.       AX=DE29h always return CF set, as they are unique to DESQview/X
  7681. --------Q-15DE2A-----------------------------
  7682. INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
  7683.     AX = DE2Ah
  7684.     BX = segment of handle for task to interrupt or 0000h for caller
  7685.     DX:CX -> interrupt routine
  7686.     BP,SI,DI,DS,ES as required by interrupt routine
  7687. Return: nothing
  7688. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7689.     this call is the same as AX=DE20h except that it will delay
  7690.       interrupting the specified task until after it has exited DOS
  7691. SeeAlso: AX=1021h,AX=DE20h
  7692. --------Q-15DE2B-----------------------------
  7693. INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
  7694.     AX = DE2Bh
  7695.     ES:DI -> starting object
  7696.         0000h:0000h for first object in list???
  7697. Return: AX = status
  7698.         0000h successful
  7699.         ES:DI -> next object of same type (window/non-window)
  7700.         0001h failed (ES:DI was not a valid handle)
  7701. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7702.     there are two separate lists, one for window/task objects and one
  7703.       for all other objects
  7704. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
  7705. --------Q-15DE2C-----------------------------
  7706. INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
  7707.     AX = DE2Ch
  7708.     DX = window information format version (0100h for DESQview 2.5x)
  7709.     BX = segment of window handle or 0000h for default
  7710.     ES:DI -> buffer for window information (see #0478)
  7711. Return: AX = status
  7712.         0000h successful
  7713. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7714. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
  7715.  
  7716. Format of DESQview window information:
  7717. Offset    Size    Description    (Table 0478)
  7718.  00h    BYTE    task flag: 00h window, 01h task
  7719.  01h    BYTE    process number if owner task
  7720.         00h if non-owner task
  7721.  02h    WORD    segment of owner's handle, 0000h if orphaned
  7722.  04h    WORD    mapping context (see #0342 at AX=1016h)
  7723.  06h    BYTE    task status (see #0479)
  7724.  07h    BYTE    unused
  7725.  08h    WORD    status bits (see #0480)
  7726.  0Ah    BYTE    01h if foreground-only window
  7727.  
  7728. (Table 0479)
  7729. Values for DESQview task status:
  7730.  00h    "Waiting" waiting for input
  7731.  01h    "Idle" keyboard poll limit reached
  7732.  03h    same as 01h
  7733.  04h    "Pausing" INT 15/AX=1000h pause called
  7734.  04h    DV/X direct: user did something to allow task switch
  7735.  05h    "ModeChg" video mode about to be changed
  7736.  06h    "ModeNtf" notify that video mode changed
  7737.  07h    "MoniCh" requested change to other monitor
  7738.  08h    "StartPgm" control relinquished to start new process
  7739.  09h    "MgrCan" made window manager CANCEL command
  7740.  0Ah    "Slicing" time slice expired
  7741.  0Bh    "Exit DOS" notify on DOS calls
  7742.  0Ch    "Enter DOS" process is re-entering DOS
  7743.  0Dh    "Terminate" INT 21/AH=4Ch or task freed
  7744.  0Eh    "BrkNxt" Control-Break pressed
  7745.  0Fh    "MgrCol" keyboard focus taken away
  7746.  10h    "PgmInt" interrupted by API call from another task
  7747.  11h    "BldOpen" call to INT 15/AX=DE01h
  7748.  
  7749. Bitfields for DESQview task status bits:
  7750. Bit(s)    Description    (Table 0480)
  7751.  6    task is freeing another task
  7752.  5    process is being created
  7753.  4    user suspended process
  7754.  3    process suspended itself
  7755.  2    process is resized direct window (suspended)
  7756.  1    process swapped out
  7757.  0    DESQview process
  7758. --------Q-15DE2D-----------------------------
  7759. INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
  7760.     AX = DE2Dh
  7761.     CX = direction
  7762.         FFFFh set socket handler
  7763.         DX:BX -> FAR function for socket interface
  7764.             must be of the format described under INT 63"DESQview"
  7765.               at #3186
  7766.         other get socket handler
  7767.         Return: DX:BX -> socket handler (see #3186)
  7768. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7769.     the "set" subfunction is normally called only by SOCKET.DVR
  7770. SeeAlso: AX=DE2Eh,INT 63"DESQview",#3186
  7771. --------Q-15DE2E-----------------------------
  7772. INT 15 U - DESQview v2.50+ - SOCKET API
  7773.     AX = DE2Eh
  7774.     DX:BX -> socket record (see #0482)
  7775.         0000h:0000h to create a new socket record
  7776. Return: CX = size of socket record in bytes
  7777.     DX:BX -> socket record which was used
  7778. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7779.     socket records are allocated from common memory
  7780.     for Unix compatibility, each socket and connection on a socket is
  7781.       allocated a DOS file handle (referencing an SFT for NUL) which is
  7782.       used on various calls to specify which of possibly multiple
  7783.       connections is to be operated upon
  7784. SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
  7785.  
  7786. (Table 0481)
  7787. Values for DESQview/X socket API function number:
  7788.  0000h    initialize socket???
  7789.  0001h    "gethostname"
  7790.  0002h    "ioctl" check for input
  7791.  0003h    "sleep" delay for specified period
  7792.  0004h    "htons" convert word to network (big-endian) byte order
  7793.  0005h    "select"
  7794.  0006h    "bsd_close"/"so_close" close socket
  7795.  0007h    NOP
  7796.  0008h    "connect" initiate connection on socket
  7797.  0009h    "recv"/"recvfrom" read from socket
  7798.  000Ah    "socket"
  7799.  000Bh    ???
  7800.  000Ch    "gethostbyname"
  7801.  000Dh    "send"/"sendto" write to socket
  7802.  000Eh    ??? (does something to all connections for process)
  7803.  000Fh    "getpid" get process identifier
  7804.  0010h    "gettimeofday"
  7805.  0011h    "bind" assign name to socket
  7806.  0012h    "listen" listen for connections on socket
  7807.  0013h    "accept" accept connection on socket
  7808.  0014h    connect to X server
  7809.  0015h    "gethostbyaddr" get host information for an address
  7810.  0016h    "getprotobyname"
  7811.  0017h    "getprotobynumber"
  7812.  0018h    "getservbyname"
  7813.  0019h    "getservbyport"
  7814.  001Ah    "getsockname" determine name bound to socket
  7815.  001Bh    "getpeername" get name of connected peer
  7816.  001Ch    "getsockopt"/"setsockopt"
  7817.  001Dh    "so_exit"     close all sockets for calling process
  7818.  001Eh    "issock" determine whether file handle references socket
  7819.  001Fh    "so_attach" reattach previously detached socket
  7820.  0020h    "so_detach" temporarily detach socket
  7821.  0021h    "dvpath" get DESQview directory (see also AX=DE24h)
  7822.  0022h    "NewProc" start new application (see also AX=102Ch)
  7823.  0023h    "so_linkup"
  7824.  0024h    "CanonicalPath" canonicalize filename (see also INT 21/AH=60h)
  7825.  0025h    indirect INT 15h call
  7826.  0026h    Network Manager interface
  7827.  0027h    "so_unlink"    close connection from "so_linkup"
  7828.  0028h    "raisepriority"
  7829.  0029h    "lowerpriority"
  7830.  002Ah    "so_private" ???
  7831.  FFFFh    "NetExit" (appears to be a NOP)
  7832.  
  7833. Format of DESQview/X socket record:
  7834. Offset    Size    Description    (Table 0482)
  7835.  00h    WORD    signature F0ADh
  7836.  02h    WORD    function number (see #0481)
  7837.  04h    WORD    returned error code (see #0502)
  7838.  06h    WORD    maximum message size??? (usually 0400h)
  7839.  08h    WORD    PSP segment to use or 0000h if socket not valid
  7840.  0Ah    WORD    scratch space (JFT size)
  7841.  0Ch    DWORD    scratch space (JFT address)
  7842.  10h    DWORD    mailbox handle (initialized by function 0000h)
  7843.  14h    DWORD    timer object handle (initialized by function 0000h)
  7844. ---function 0000h---
  7845.  18h    WORD    (ret) ???
  7846. ---function 0001h---
  7847.  18h    WORD    (ret) status???
  7848.  1Ah 128 BYTEs    (ret) ASCIZ hostname (empty string if not on network)
  7849.  9Ah    WORD    maximum length of hostname to return
  7850. ---function 0002h---
  7851.  18h    WORD    (ret) status
  7852.  1Ah    WORD    socket's file handle
  7853.  1Ch    WORD    IOCTL function
  7854.         05h "FIONREAD" determine available input
  7855.         06h "FIONBIO" set blocking state of socket
  7856.  1Eh    WORD    (return, subfn 05h) number of bytes available for reading
  7857.         (call, subfn 06h) 0000h blocking, nonzero nonblocking
  7858. ---function 0003h---
  7859.  18h  2 BYTEs    unused
  7860.  1Ah    WORD    delay time in seconds
  7861. ---function 0004h---
  7862.  18h    WORD    (ret) result in network (big-endian) byte order
  7863.  1Ah    WORD    value to convert to network byte order
  7864. ---function 0005h---
  7865.  18h    WORD    (ret) number of handles meeting the specified conditions???
  7866.  1Ah    WORD    number of file handles in each bitset
  7867.  1Ch    DWORD    bitset of socket handles to check for readability
  7868.  20h    DWORD    bitset of socket handles to check for writability
  7869.  24h    DWORD    bitset of socket handles to check for errors
  7870.  28h    WORD    timeout in ??? or 0000h to block until some socket ready
  7871.  2Ah    DWORD    ???
  7872.  2Eh    DWORD    ???
  7873. ---function 0006h---
  7874.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7875.  1Ah    WORD    socket's file handle
  7876. ---function 0008h---
  7877.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7878.  1Ah    WORD    socket's file handle
  7879.  1Ch    WORD    0001h if socket name specified, 0000h if not
  7880.  1Eh    WORD    length of socket name
  7881.  20h  N BYTEs    name of socket to which to connect
  7882. ---function 0009h---
  7883.  18h    WORD    (ret) number of bytes actually read, 0000h if connection
  7884.             closed, or FFFFh on error
  7885.  1Ah    WORD    socket's file handle
  7886.  1Ch    WORD    number of bytes to read
  7887.  1Eh    WORD    flags
  7888.  20h    WORD    0000h if no source address desired
  7889.         0001h if source address is to be stored (datagram sockets)
  7890.  22h    WORD    length of source address
  7891.  24h 110 BYTEs    source address
  7892.  92h 1K BYTEs    buffer for data to be read
  7893. ---function 000Ah---
  7894.  18h    WORD    (ret) socket's file handle or FFFFh on error
  7895.  1Ah    WORD    address family (0001h,0002h)
  7896.  1Ch    WORD    socket type
  7897.  1Eh    WORD    protocol
  7898. ---function 000Bh---
  7899.  18h    WORD    (ret) 0001h if ??? or FFFFh on error
  7900.  1Ah    WORD    socket's file handle
  7901.  1Eh    WORD    (call) ???
  7902. ---function 000Ch---
  7903.  18h 128 BYTEs    ASCIZ hostname (special case if empty string or "unix")
  7904.  98h    ???    (ret) packed 'hostent' structure
  7905.  A2h    ???    (ret) ???
  7906. ---function 000Dh---
  7907.  18h    WORD    (ret) number of bytes actually written or FFFFh on error
  7908.  1Ah    WORD    socket's file handle
  7909.  1Ch    WORD    number of bytes to write
  7910.  1Eh    WORD    number of bytes to follow in subsequent writes???
  7911.  20h    WORD    flags
  7912.  22h    WORD    0000h if no destination specified, 0001h if destination present
  7913.  24h    WORD    0001h if broadcast message???, 0000h if not
  7914.         (ignored if no destination specified)
  7915.  26h    WORD    length of destination address
  7916.  28h 110 BYTEs    destination address
  7917.  96h 1K BYTEs    buffer containing data to be written
  7918. ---function 000Eh---
  7919.  no additional fields
  7920. ---function 000Fh---
  7921.  18h    DWORD    (ret) DESQview task handle of calling process
  7922. ---function 0010h---
  7923.  18h    DWORD    (ret) current time
  7924.  1Ch    DWORD    (ret) ???
  7925. ---function 0011h---
  7926.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7927.  1Ah    WORD    socket's file handle
  7928.  1Ch    WORD    length of name
  7929.  1Eh  N BYTEs    buffer for socket name
  7930. ---function 0012h---
  7931.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7932.  1Ah    WORD    socket's file handle
  7933.  1Ch    WORD    maximum backlog of pending connections allowed on socket
  7934. ---function 0013h---
  7935.  18h    WORD    (ret) file handle for new connection or FFFFh on error
  7936.  1Ah    WORD    listen()ing socket's file handle
  7937.  1Ch    WORD    (call) length of buffer for connecting entity's address
  7938.         (ret) actual length of address
  7939.  1Eh  N BYTEs    buffer for connecting entity's address (110 bytes???)
  7940. ---function 0014h---
  7941.  18h    WORD    (ret) socket's file handle or FFFFh on error
  7942.  1Ah  4 BYTEs    (ret) ???
  7943.  1Eh    WORD    (ret) ???
  7944.  20h    WORD    (ret) ???
  7945.  22h 256 BYTEs    ASCIZ X display name
  7946. 122h    ???
  7947. ---function 0015h---
  7948.  18h    WORD    (call) type of address??? (test for 0001h seen)
  7949.  1Ah    WORD    (call) length of buffer for host address
  7950.  1Ch 110 BYTEs    buffer containing ASCIZ host address
  7951.  8Ah    WORD    (ret) offset of official host name
  7952.  8Ch    WORD    (ret) offset of alias list???
  7953.  8Eh    WORD    (ret) address type???
  7954.  90h    WORD    (ret) length of an address in bytes???
  7955.  92h    WORD    (ret) offset of address???
  7956.  9Ah  N BYTEs    (ret) buffer for hostname, alias list, and host address
  7957. ---function 0016h---
  7958.  18h    ???    buffer for ASCIZ protocol name
  7959.  98h    ???
  7960. ---function 0017h---
  7961.  18h    WORD    (call) protocol number
  7962.  1Ah    WORD    (ret) ??? or 0001h
  7963. ---function 0018h---
  7964.  18h 128 BYTEs    buffer containing ASCIZ ???
  7965.  98h 128 BYTEs    buffer containing ASCIZ ???
  7966. 118h    WORD    (ret) ???
  7967. ---function 0019h---
  7968.  18h    WORD    port number
  7969.  1Ah 128 BYTEs    (call) ASCIZ host name
  7970.         (ret) packed servent strctures???
  7971.  9Ah    WORD    (ret) ???
  7972. ---function 001Ah---
  7973.  18h    WORD    (ret) 0000h if successful, FFFFh on error
  7974.  1Ah    WORD    socket's file handle
  7975.  1Ch    WORD    (call) length of buffer for socket name
  7976.         (ret) actual length of socket name
  7977.  1Eh  N BYTEs    buffer for socket name
  7978. ---function 001Bh---
  7979.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7980.  1Ah    WORD    socket's file handle
  7981.  1Ch    WORD    (call) size of buffer for name
  7982.         (ret) actual size of name
  7983.  1Eh  N BYTEs    buffer for peer's name
  7984. ---function 001Ch---
  7985.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7986.  1Ah    WORD    direction: 0000h to get, 0001h to set
  7987.  1Ch    WORD    socket's file handle
  7988.  1Eh    WORD    option level
  7989.  20h    WORD    option name
  7990.  22h    WORD    (call) length of buffer for option value
  7991.         (ret) actual length of option value
  7992.  24h  N BYTEs    buffer for option value
  7993. ---function 001Dh---
  7994.  no additional fields
  7995. ---function 001Eh---
  7996.  18h    WORD    (ret) status: 0000h ??? or 0001h ???
  7997.  1Ah    WORD    file handle which may or may not be a socket
  7998. ---function 001Fh---
  7999.  18h    WORD    (ret) file handle or FFFFh on error
  8000.  1Ah    DWORD    (call) pointer to Socket Context Record (see #0503) of a
  8001.             previously detached socket
  8002. ---function 0020h---
  8003.  18h    WORD    (ret) status: 0000h if successful or FFFFh on error
  8004.  1Ah    WORD    socket's file handle
  8005.  1Ch    DWORD    (ret) pointer to Socket Context Record (see #0503) for
  8006.             the file handle
  8007. ---function 0021h---
  8008.  18h 64 BYTEs    buffer for DESQview startup directory (see AX=DE25h)
  8009. ---function 0022h---
  8010.  18h    DWORD    (ret) task handle of new application
  8011.  1Ch    WORD    size of .DVP data
  8012.  1Eh 129 BYTEs    ASCIZ ???
  8013.  9Fh  N BYTEs    .DVP data (see #0353 at AX=102Ch)
  8014. ---function 0023h---
  8015.  18h    WORD    (ret) ??? or FFFFh on error
  8016.  1Ah    WORD    socket's file handle???
  8017. ---function 0024h---
  8018.  18h    WORD    (ret) DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
  8019.             0000h if successful
  8020.  1Ah 129 BYTEs    ASCIZ filename/pathname
  8021. 11Bh 129 BYTEs    ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
  8022. ---function 0025h---
  8023.  18h    WORD    value of AX
  8024.  1Ah    WORD    value of BX
  8025.  1Ch    WORD    (call) value of CX for call if AH value other than 12h
  8026.         (call) number of stack parameters if AH value is 12h
  8027.         (ret) returned CX for calls other than INT 15/AH=12h
  8028.  1Eh    WORD    value of DX
  8029.  20h    WORD    value of DI
  8030.  22h    WORD    value of SI
  8031.  24h    WORD    value of DS
  8032.  26h    WORD    value of ES
  8033.  28h    WORD    (ret) value of FLAGS after call
  8034.  2Ah  N DWORDs    (call) stack parameters for INT 15/AH=12h call
  8035.         (ret) stack results from INT 15/AH=12h call
  8036. ---function 0026h---
  8037.  18h    WORD    (call) Network Manager subfunction (see #0483)
  8038.         (ret) status??? (0000h on error)
  8039.  1Ah    WORD    (call) size of parameter data
  8040.         (ret) size of returned data
  8041.  1Ch  N BYTEs    (call) parameter data required by call (see #0484,#0485,#0501)
  8042.         (ret) result data (see #0494,#0495,#0500)
  8043. ---function 0027h---
  8044.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  8045.  1Ah    WORD    socket's file handle
  8046. ---functions 0028h,0029h---
  8047.  18h    WORD    (call) file handle for which to set priority low/high
  8048.             FFFFh to change calling task's priority
  8049. ---function 002Ah---
  8050.  no additional fields
  8051.  
  8052. (Table 0483)
  8053. Values for DESQview/X Network Manager subfunction:
  8054.  0004h    "so_exit"???
  8055.  0005h    "gethostbyname"
  8056.  0006h    "gethostname"
  8057.  0009h    "socket"
  8058.  000Dh    "gethostbyaddr"
  8059.  000Fh    "getprotobyname"
  8060.  0010h    get protocol name for protocol number
  8061.  0011h    "getservbyname"
  8062.  0012h    "getservbyport" (see #0487)
  8063.  0013h    "getsockname"??? (see #0488)
  8064.  0016h    "shutdown" (see #0489)
  8065.  0017h    kill Network Manager
  8066.  0018h    "getpeername"??? (see #0490)
  8067.  0019h    ??? (called by socket function 0000h) (see #0491)
  8068.  001Ah    ??? (see #0492)
  8069.  001Bh    "so_linkup" (see #0493)
  8070.  001Dh    "getnetstatus" get network services (see #0494)
  8071.  001Fh    "getpwuid"
  8072.  0020h    "getpwnam"
  8073.  0021h    "getpwvar"
  8074.  0022h    "crypt"
  8075.  0023h    "so_unlink"
  8076.  0024h    "getlogin" (see #0495)
  8077.  0028h    "sethostent"
  8078.  0029h    "gethostent"
  8079.  002Ah    "soaddhost"
  8080.  002Bh    "soupdatehost"
  8081.  002Ch    "sodeletehost"
  8082.  002Dh    "setservent"
  8083.  002Eh    "getservent"
  8084.  002Fh    "setpwent"
  8085.  0030h    "getpwent" (see #0496)
  8086.  0031h    "sethostpath" (see #0497)
  8087.  0032h    "endservent"
  8088.  0033h    "endhostent"
  8089.  0034h    "getnettype" get IP network number (see #0498)
  8090.  0035h    ??? (pops up Network Manager window)
  8091.  0037h    "getnettimeout" (see #0499)
  8092.  0038h    get machine name and IP address (see #0500)
  8093.  0039h    "getuid" (see #0501)
  8094. ---DV/X v2.0+ ---
  8095.  0041h    "deletepwnam"
  8096.  0045h    "renamepw"
  8097.  
  8098. Format of Function 0026h/Subfunction 000Fh data:
  8099. Offset    Size    Description    (Table 0484)
  8100.  00h  8 BYTEs    (ret) ???
  8101.  
  8102. Format of Function 0026h/Subfunction 0010h data:
  8103. Offset    Size    Description    (Table 0485)
  8104.  00h  2 BYTEs    (ret) ???
  8105.  02h    WORD    (ret) protocol number
  8106.  04h    WORD    (call) protocol number for which to get name
  8107.  06h    WORD    (ret) ???
  8108.  08h    var    (ret) ASCIZ protocol name
  8109.  N    var    (ret) ASCIZ protocol name
  8110.  
  8111. Format of Function 0026h/Subfunction 0011h data:
  8112. Offset    Size    Description    (Table 0486)
  8113.  00h  8 BYTEs    ???
  8114.  08h    var    (ret) ASCIZ protocol name
  8115.     var    (ret) ASCIZ ??? name
  8116.     var    (ret) ASCIZ ??? name
  8117.  
  8118. Format of Function 0026h/Subfunction 0012h data:
  8119. Offset    Size    Description    (Table 0487)
  8120.  00h  8 BYTEs    (ret) ???
  8121.  
  8122. Format of Function 0026h/Subfunction 0013h data:
  8123. Offset    Size    Description    (Table 0488)
  8124.  00h 116 BYTEs    (ret) ???
  8125.  
  8126. Format of Function 0026h/Subfunction 0016h ("shutdown") data:
  8127. Offset    Size    Description    (Table 0489)
  8128.  00h    WORD    (ret) shutdown status (0000h successful, FFFFh error)
  8129.  02h  4 BYTEs    (ret) ???
  8130.  04h    WORD    (call) socket handle
  8131.  06*h    WORD    (call) what (0 = receives, 1 = sends, 2 = both)
  8132.  
  8133. Format of Function 0026h/Subfunction 0018h data:
  8134. Offset    Size    Description    (Table 0490)
  8135.  00h 116 BYTEs    (ret) ???
  8136.  
  8137. Format of Function 0026h/Subfunction 0019h data:
  8138. Offset    Size    Description    (Table 0491)
  8139.  00h  4 BYTEs    (ret) ???
  8140.  04h    DWORD    (ret) task handle of ???
  8141.  
  8142. Format of Function 0026h/Subfunction 001Ah data:
  8143. Offset    Size    Description    (Table 0492)
  8144.  00h 38 BYTEs    (ret) ???
  8145.  
  8146. Format of Function 0026h/Subfunction 001Bh data:
  8147. Offset    Size    Description    (Table 0493)
  8148.  00h 10 BYTEs    (ret) ???
  8149.  
  8150. Format of Function 0026h/Subfunction 001Dh return data [array]:
  8151. Offset    Size    Description    (Table 0494)
  8152.  00h    WORD    ??? or FFFFh if end of array
  8153.  02h  7 BYTEs    ???
  8154.  09h 27 BYTEs    ASCIZ name of service
  8155.  
  8156. Format of Function 0026h/Subfunction 0024h return data:
  8157. Offset    Size    Description    (Table 0495)
  8158.  00h    var    ASCIZ username
  8159.  
  8160. Format of Function 0026h/Subfunction 0030h data:
  8161. Offset    Size    Description    (Table 0496)
  8162.  00h    WORD    (call) UID or 0000h for current user
  8163.         (ret) ???
  8164.  02h    WORD    (ret) UID
  8165.  04h  6 BYTEs    (ret) ???
  8166.  0Ah    var    (ret) ASCIZ username
  8167.     var    (ret) ASCIZ encrypted password
  8168.     var    (ret) ASCIZ initial ("home") directory
  8169.  
  8170. Format of Function 0026h/Subfunction 0031h ("sethostpath") data:
  8171. Offset    Size    Description    (Table 0497)
  8172.  00h   4 BYTEs    ???
  8173.  04h 144 BYTEs    ASCIZ ???
  8174.  
  8175. Format of Function 0026h/Subfunction 0034h data:
  8176. Offset    Size    Description    (Table 0498)
  8177.  00h  1-3 BYTEs IP network number of caller's machine (low byte first)
  8178.  
  8179. Format of Function 0026h/Subfunction 0037h ("getnettimeout") return data:
  8180. Offset    Size    Description    (Table 0499)
  8181.  00h    WORD    (ret) timeout
  8182.  02h  2 BYTEs    (ret) ???
  8183.  
  8184. Format of Function 0026h/Subfunction 0038h return data:
  8185. Offset    Size    Description    (Table 0500)
  8186.  00h    BYTE    ???
  8187.  01h  4 BYTEs    IP address
  8188.  05h    var    ASCIZ machine name
  8189.     ???
  8190.  
  8191. Format of Function 0026h/Subfunction 0039h ("getuid") return data:
  8192. Offset    Size    Description    (Table 0501)
  8193.  00h    WORD    user ID
  8194.  02h  2 BYTEs    ???
  8195. SeeAlso: #0497,#0500
  8196.  
  8197. (Table 0502)
  8198. Values for DESQview/X socket error code:
  8199.  0000h    successful
  8200.  0009h    "BADF" bad file handle
  8201.  000Ch    "ENOMEM" out of memory
  8202.  000Eh    "EFAULT" bad address
  8203.  0016h    "EINVAL" invalid argument
  8204.  0018h    "EMFILE" too many open files
  8205.  0020h    "EPIPE" ??? broken pipe
  8206.  0023h    "EWOULDBLOCK" operation cannot be completed at this time
  8207.  0024h    "EINPROGRESS" operation now in progress
  8208.  0026h    "ENOTSOCK" socket invalid
  8209.  0028h    "EMSGSIZE" message too long to send atomically
  8210.  002Ch    "ESOCKTNOSUPPORT" socket type not supported
  8211.  002Fh    "EAFNOSUPPORT" address family not supp. by protocol fam.
  8212.  0031h    "EDOM" argument too large
  8213.  0038h    "EISCONN" socket is already connected
  8214.  0039h    "ENOTCONN" socket is not connected
  8215.  
  8216. Format of DESQview/X Socket Context Record:
  8217. Offset    Size    Description    (Table 0503)
  8218.  00h    DWORD    pointer to next Socket Context Record, 0000h:0000h if last
  8219.  04h    WORD    SFT index for socket, 00FFh if not connected, FFFFh if detached
  8220.  06h    WORD    PSP segment of owner or 0000h
  8221.  08h    WORD    mapping context of owning window (see #0342 at AX=1016h)
  8222.  0Ah  2 BYTEs    ???
  8223.  0Ch    WORD    address family
  8224.  0Eh    WORD    socket type
  8225.  10h    WORD    protocol
  8226.  12h    WORD    socket state
  8227.         0001h created
  8228.         0002h bound
  8229.         0003h listening???
  8230.         0005h connected
  8231.  14h    DWORD    timer object handle
  8232.  18h    DWORD    object handle (mailbox???)
  8233.  1Ch    DWORD    object handle of parent of above object or 0000h:0000h
  8234.  20h    DWORD    pointer to ??? or 0000h
  8235.  24h  6 BYTEs    ???
  8236.  2Ah    WORD    file handle for socket or FFFFh
  8237.  2Ch  2 BYTEs    ???
  8238.  2Eh    WORD    nonzero if socket nonblocking
  8239. ---network connections only---
  8240.  30h  2 BYTEs    ???
  8241.  32h    WORD    ???
  8242.  34h  4 BYTEs    (big-endian) IP address of remote
  8243.  38h  6 BYTEs    ???
  8244. --------Q-15DE2F-----------------------------
  8245. INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
  8246.     AX = DE2Fh
  8247. Return: BX = status
  8248.         0001h keyboard focus has been given to a direct window since the
  8249.         last call
  8250.         0000h if not
  8251. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  8252.     Quarterdeck stated that this call would not be available under future
  8253.       versions of DESQview Classic, but it is still present in v2.60
  8254. --------Q-15DE30-----------------------------
  8255. INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
  8256.     AX = DE30h
  8257. Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
  8258. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  8259.     you must first check the DESQview version to verify that it is 2.50 or
  8260.       greater
  8261. SeeAlso: INT 21/AH=2Bh/CX=4445h
  8262. --------Q-15DE31-----------------------------
  8263. INT 15 - DESQview/X v1.10 - ???
  8264.     AX = DE31h
  8265.     CX = ???
  8266.         0000h ???
  8267.         nonzero ???
  8268.     ???
  8269. Return: ???
  8270. --------b-15DF-------------------------------
  8271. INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
  8272.     AH = DFh
  8273.     AL = function
  8274.         00h turn on Turbo mode
  8275.         01h turn off Turbo mode
  8276.         02h set Turbo mode according to hardware switch
  8277. SeeAlso: INT 13/AX=FFFFh
  8278. --------b-15E00F-----------------------------
  8279. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  8280.     AX = E00Fh
  8281.     ES:BX -> start of 2nd processor's execution
  8282. Return: AL = status
  8283.         0Fh successful
  8284.         00h failure
  8285. SeeAlso: AX=E10Eh,AX=E200h
  8286. --------b-15E10E-----------------------------
  8287. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  8288.     AX = E10Eh
  8289.     ES:BX -> start of 2nd processor's execution
  8290. Return: AL = status
  8291.         0Fh successful (halted)
  8292.         00h failure (not halted)
  8293. SeeAlso: AX=E00Fh,AX=E200h
  8294. --------b-15E200-----------------------------
  8295. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  8296.     AX = E200h
  8297. Return: AX bit 15 set if 2nd processor available
  8298. SeeAlso: AX=E00Fh,AX=E10Eh
  8299. --------b-15E4-------------------------------
  8300. INT 15 - Tandy??? - ???
  8301.     AH = E4h
  8302.     AL = subfunction
  8303.         21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
  8304.     DL = ???
  8305. Return: DL = 00h if successful???
  8306. Note:    the section of code in 386MAX which calls these functions also checks
  8307.       whether the ROM BIOS has both Tandy and Phoenix Technologies
  8308.       signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
  8309.       support this function, however, returning the usual CF set/AH=86h for
  8310.       "unsupported function".
  8311. --------b-15E4-------------------------------
  8312. INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
  8313.     AH = E4h
  8314.     AL = subfunction
  8315.         00h get ???
  8316.         Return: CF clear
  8317.             AH = 00h
  8318.             CX = 0000h
  8319.             BX = ??? (read from [XBDA:0094h])
  8320.         01h,02h unsupported by this ROM version
  8321.         Return: CF set, AH = 86h
  8322.         80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
  8323.         Return: CF clear
  8324.             AH = 00h
  8325.             CX = 0000h
  8326.             BX = ???
  8327.         81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
  8328.         Return: CF set, AH = 86h
  8329. Notes:    functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
  8330.     these functions are not supported by the 7/26/93 LTE Lite 386 ROM
  8331. --------b-15E800-----------------------------
  8332. INT 15 - Compaq Contura - GET ???
  8333.     AX = E800h
  8334. Return: AX = 0000h
  8335.     BH = 00h
  8336.     BL = ??? (read from port 0C7Ch)
  8337.     CH = ???
  8338.     CL = ???
  8339.     DX = 0000h
  8340. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  8341. --------b-15E800-----------------------------
  8342. INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE???
  8343.     AX = E800h
  8344.     BX = ??? (0000h)
  8345. Return: CF clear if successful
  8346.         BH = 02h
  8347.         BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h)
  8348.     CF set on error
  8349.     others???
  8350. Notes:    used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether
  8351.       the Enhanced Parallel Port expected by that driver is available
  8352.     used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether
  8353.       volume control hardware expected by that driver is available
  8354. --------b-15E800-----------------------------
  8355. INT 15 - Compaq Prolinea - GET ???
  8356.     AX = E800h
  8357.     BX = ??? (1369h)
  8358. Return: BH = 01h
  8359.     BL = ???
  8360.     others???
  8361. Note:    used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether
  8362.       the fix that driver applies is required (will not install if BX on
  8363.       return is other than 010Eh or 010Fh)
  8364. SeeAlso: AX=E802h
  8365. --------b-15E801-----------------------------
  8366. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS
  8367.     AX = E801h
  8368. Return: CF clear if successful
  8369.         AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  8370.         BX = extended memory above 16M, in 64K blocks
  8371.         CX = configured memory 1M to 16M, in K
  8372.         DX = configured memory above 16M, in 64K blocks
  8373.     CF set on error
  8374. Notes:    supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well
  8375.       as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM
  8376.       BIOS
  8377.     supported by AMI BIOSes dated 8/23/94 or later
  8378.     this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
  8379.       used as a fall-back by newer versions if AX=E820h is not supported
  8380. SeeAlso: AH=8Ah"Phoenix",AX=E802h,AX=E820h,AX=E881h"Phoenix"
  8381. --------b-15E802-----------------------------
  8382. INT 15 - Compaq Contura - GET ???
  8383.     AX = E802h
  8384. Return: CF clear
  8385.     AX = 0000h
  8386.     BX = ???
  8387.     CX = 0000h
  8388. Note:    this function is also supported by the LTE Lite 25c, 25E, and 486; not
  8389.       supported by LTE Lite 20 and 25.
  8390. SeeAlso: AX=E801h"Phoenix"
  8391. --------b-15E820-----------------------------
  8392. INT 15 - newer BIOSes - GET SYSTEM MEMORY MAP
  8393.     AX = E820h
  8394.     EAX = 0000E820h
  8395.     EDX = 534D4150h ('SMAP')
  8396.     EBX = continuation value or 00000000h to start at beginning of map
  8397.     ECX = size of buffer for result, in bytes (should be >= 20 bytes)
  8398.     ES:DI -> buffer for result (see #0505)
  8399. Return: CF clear if successful
  8400.         EAX = 534D4150h ('SMAP')
  8401.         ES:DI buffer filled
  8402.         EBX = next offset from which to copy or 00000000h if all done
  8403.         ECX = actual length returned in bytes
  8404.     CF set on error
  8405.         AH = error code (86h) (see #0422 at INT 15/AH=80h)
  8406. Notes:    originally introduced with the Phoenix BIOS v4.0, this function is
  8407.       now supported by most newer BIOSes, since various versions of Windows
  8408.       call it to find out about the system memory
  8409.     a maximum of 20 bytes will be transferred at one time, even if ECX is
  8410.       higher; some BIOSes (e.g. Award Modular BIOS v4.50PG) ignore the
  8411.       value of ECX on entry, and always copy 20 bytes
  8412.     some BIOSes expect the high word of EAX to be clear on entry, i.e.
  8413.       EAX=0000E820h
  8414.     if this function is not supported, an application should fall back
  8415.       to AX=E802h, AX=E801h, and then AH=88h
  8416.     the BIOS is permitted to return a nonzero continuation value in EBX
  8417.       and indicate that the end of the list has already been reached by
  8418.       returning with CF set on the next iteration
  8419.     this function will return base memory and ISA/PCI memory contiguous
  8420.       with base memory as normal memory ranges; it will indicate
  8421.       chipset-defined address holes which are not in use and motherboard
  8422.       memory-mapped devices, and all occurrences of the system BIOS as
  8423.       reserved; standard PC address ranges will not be reported
  8424. SeeAlso: AH=C7h,AX=E801h"Phoenix",AX=E881h,MEM xxxxh:xxx0h"ACPI"
  8425.  
  8426. Format of Phoenix BIOS system memory map address range descriptor:
  8427. Offset    Size    Description    (Table 0504)
  8428.  00h    QWORD    base address
  8429.  08h    QWORD    length in bytes
  8430.  10h    DWORD    type of address range (see #0505)
  8431.  
  8432. (Table 0505)
  8433. Values for System Memory Map address type:
  8434.  01h    memory, available to OS
  8435.  02h    reserved, not available (e.g. system ROM, memory-mapped device)
  8436.  03h    ACPI Reclaim Memory (usable by OS after reading ACPI tables)
  8437.  04h    ACPI NVS Memory (OS is required to save this memory between NVS
  8438.       sessions)
  8439.  other    not defined yet -- treat as Reserved
  8440. SeeAlso: #0504
  8441. --------b-15E881-----------------------------
  8442. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit)
  8443.     AX = E881h
  8444. Return: CF clear if successful
  8445.         EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  8446.         EBX = extended memory above 16M, in 64K blocks
  8447.         ECX = configured memory 1M to 16M, in K
  8448.         EDX = configured memory above 16M, in 64K blocks
  8449.     CF set on error
  8450. Notes:    supported by AMI BIOSes dated 8/23/94 or later
  8451.     this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
  8452.       used as a fall-back by newer versions if AX=E820h is not supported
  8453. SeeAlso: AX=E801h"Phoenix",AX=E820h"Phoenix"
  8454. --------m-15F200CX454D-----------------------
  8455. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALIZATION CHECK ???
  8456.     AX = F200h
  8457.     CX = 454Dh
  8458. Return: CF clear if hardware already initialised
  8459.         BX = upper RAM areas in use
  8460.         bit 0: C000-C3FF
  8461.         bit 1: C400-C7FF
  8462.         ...
  8463.         bit 11: EC00-EFFF
  8464.     CF set if hardware not initialised yet
  8465. --------B-1600-------------------------------
  8466. INT 16 - KEYBOARD - GET KEYSTROKE
  8467.     AH = 00h
  8468. Return: AH = BIOS scan code
  8469.     AL = ASCII character
  8470. Notes:    on extended keyboards, this function discards any extended keystrokes,
  8471.       returning only when a non-extended keystroke is available
  8472.     the BIOS scan code is usually, but not always, the same as the hardware
  8473.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  8474.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  8475.       differs for shifted special keys
  8476.     some (older) clone BIOSes do not discard extended keystrokes and manage
  8477.       function AH=00h and AH=10h the same
  8478.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  8479.       keystrokes (same as with functions 10h and 20h), but will always
  8480.       translate prefix E0h to 00h. This allows old programs to use extended
  8481.       keystrokes and should not cause compatibility problems
  8482. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,AX=AF4Dh"K3PLUS",INT 18/AH=00h
  8483. SeeAlso: INT 09,INT 15/AH=4Fh
  8484. --------B-1601-------------------------------
  8485. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  8486.     AH = 01h
  8487. Return: ZF set if no keystroke available
  8488.     ZF clear if keystroke available
  8489.         AH = BIOS scan code
  8490.         AL = ASCII character
  8491. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  8492.       however, any extended keystrokes which are not compatible with 83/84-
  8493.       key keyboards are removed by IBM and most fully-compatible BIOSes in
  8494.       the process of checking whether a non-extended keystroke is available
  8495.     some (older) clone BIOSes do not discard extended keystrokes and manage
  8496.       function AH=00h and AH=10h the same
  8497.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  8498.       keystrokes (same as with functions 10h and 20h), but will always
  8499.       translate prefix E0h to 00h. This allows old programs to use extended
  8500.       keystrokes and should not cause compatibility problems
  8501. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h,INT 09,INT 15/AH=4Fh
  8502. --------B-1602-------------------------------
  8503. INT 16 - KEYBOARD - GET SHIFT FLAGS
  8504.     AH = 02h
  8505. Return: AL = shift flags (see #0506)
  8506.     AH destroyed by many BIOSes
  8507. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h,MEM 0040h:0017h
  8508.  
  8509. Bitfields for keyboard shift flags:
  8510. Bit(s)    Description    (Table 0506)
  8511.  7    Insert active
  8512.  6    CapsLock active
  8513.  5    NumLock active
  8514.  4    ScrollLock active
  8515.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  8516.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  8517.  1    left shift key pressed
  8518.  0    right shift key pressed
  8519. SeeAlso: #0511,#3414,MEM 0040h:0017h,#M010
  8520. --------B-1603-------------------------------
  8521. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  8522.     AH = 03h
  8523.     AL = subfunction
  8524.         00h set default delay and rate (PCjr and some PS/2)
  8525.         01h increase delay before repeat (PCjr)
  8526.         02h decrease repeat rate by factor of 2 (PCjr)
  8527.         03h increase delay and decrease repeat rate (PCjr)
  8528.         04h turn off typematic repeat (PCjr and some PS/2)
  8529.         05h set repeat rate and delay (AT,PS)
  8530.         BH = delay value (00h = 250ms to 03h = 1000ms)
  8531.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  8532.         06h get current typematic rate and delay (newer PS/2s)
  8533.         Return: BL = repeat rate (above)
  8534.             BH = delay (above)
  8535. Return: AH destroyed by many BIOSes
  8536. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  8537.       supported
  8538. SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
  8539. --------B-1604-------------------------------
  8540. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  8541.     AH = 04h
  8542.     AL = keyclick state
  8543.         00h off
  8544.         01h on
  8545. Return: AH destroyed by many BIOSes
  8546. SeeAlso: AH=03h,AH=04h"K3PLUS"
  8547. --------b-1604-------------------------------
  8548. INT 16 - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER
  8549.     AH = 04h
  8550. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  8551. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=05h"Tandy 2000"
  8552. SeeAlso: INT 51"Tandy 2000"
  8553. --------K-1604-------------------------------
  8554. INT 16 - K3PLUS v6.22+ - SET KEYCLICK
  8555.     AH = 04h
  8556.     AL = keyclick state
  8557.         00h keyclick off, leave loudness setting unchanged
  8558.         01h keyclick on, leave loudness setting unchanged
  8559.         else
  8560.            bit 0: keyclick enabled if set
  8561.            bits 7-1: new keyclick loudness (non-zero)
  8562. Return: AH destroyed by many BIOSes
  8563. Note:    Applications which try to set a new loudness, but are unsure of the
  8564.       results of other INT 16/AH=04h implementations, should set the new
  8565.       loudness first, and then call this function again with AL=01h or
  8566.       AL=00h
  8567. SeeAlso: AH=03h,AH=04h"KEYBOARD",AX=AF4Dh
  8568. --------B-1605-------------------------------
  8569. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  8570.     AH = 05h
  8571.     CH = BIOS scan code
  8572.     CL = ASCII character
  8573. Return: AL = status
  8574.         00h if successful
  8575.         01h if keyboard buffer full
  8576.     AH destroyed by many BIOSes
  8577. Notes:    under DESQview, a number of "keystrokes" invoke specific
  8578.       DESQview-related actions when they are read from the keyboard
  8579.       buffer (see #0507)
  8580.     similarly, some "keystrokes" invoke special functions on the HP 100LX
  8581.       and HP 200LX (see #0508)
  8582. SeeAlso: AH=00h,AH=25h"K3",AH=71h,AX=AF4Dh,AH=FFh,INT 15/AX=DE10h
  8583. SeeAlso: MEM 0040h:001Eh
  8584.  
  8585. (Table 0507)
  8586. Values for pseudo-keystrokes for DESQview:
  8587.  38FBh or FB00h    switch to next window (only if main menu already popped up)
  8588.  38FCh or FC00h    pop up DESQview main menu
  8589.  38FEh or FE00h    close the current window
  8590.  38FFh or FF00h    pop up DESQview learn menu
  8591.  
  8592. (Table 0508)
  8593. Values for pseudo-keystrokes for HP 100LX/200LX:
  8594.  EE00h    pop up topcard display and set other system manager applications
  8595.       into sleep mode
  8596. --------B-1605-------------------------------
  8597. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  8598.     AH = 05h
  8599.     AL = function
  8600.         01h set keyboard layout to French
  8601.         02h set keyboard layout to German
  8602.         03h set keyboard layout to Italian
  8603.         04h set keyboard layout to Spanish
  8604.         05h set keyboard layout to UK
  8605.         80h check if function supported
  8606.         Return: AL <> 80h if supported
  8607. Return: ???
  8608.     AH destroyed by many BIOSes
  8609. Note:    this function is called by the DOS 3.2 KEYBxx.COM
  8610. SeeAlso: AH=92h,AH=A2h,AX=AF4Dh
  8611. --------b-1605-------------------------------
  8612. INT 16 - Tandy 2000 - KEYBOARD - RESET KEYBOARD
  8613.     AH = 05h
  8614. Desc:    reset the keyboard and flush the keyboard buffer
  8615. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  8616. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=03h,INT 51"Tandy 2000"
  8617. --------B-1609-------------------------------
  8618. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  8619.     AH = 09h
  8620. Return: AL = supported keyboard functions (see #0509)
  8621.     AH destroyed by many BIOSes
  8622. Note:    this function is only available if bit 6 of the second feature byte
  8623.       returned by INT 15/AH=C0h is set (see #0433)
  8624. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  8625.  
  8626. Bitfields for supported keyboard functions:
  8627. Bit(s)    Description    (Table 0509)
  8628.  7    reserved
  8629.  6    INT 16/AH=20h-22h supported (122-key keyboard support)
  8630.  5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  8631.  4    INT 16/AH=0Ah supported
  8632.  3    INT 16/AX=0306h supported
  8633.  2    INT 16/AX=0305h supported
  8634.  1    INT 16/AX=0304h supported
  8635.  0    INT 16/AX=0300h supported
  8636. SeeAlso: #0435
  8637. --------K-160A-------------------------------
  8638. INT 16 - KEYBOARD - GET KEYBOARD ID
  8639.     AH = 0Ah
  8640. Return: BX = keyboard ID (see #0510)
  8641.     AH destroyed by many BIOSes
  8642. Notes:    check return value from AH=09h to determine whether this function is
  8643.       supported
  8644.     this function is also supported by the K3PLUS v6.00+ INT 16 BIOS
  8645.       replacement
  8646. SeeAlso: AH=09h,AX=AF4Dh,MEM 0040h:00C2h"AMI"
  8647.  
  8648. (Table 0510)
  8649. Values for keyboard ID:
  8650.  0000h    no keyboard attached
  8651.  41ABh    Japanese "G" keyboard (translate mode)
  8652.     MF2 Keyboard (usually in translate mode)
  8653.  54ABh    Japanese "P" keyboard (translate mode)
  8654.  83ABh    Japanese "G" keyboard (pass-through mode)
  8655.     MF2 Keyboard (pass-through mode)
  8656.  84ABh    Japanese "P" keyboard (pass-through mode)
  8657.  90ABh    old Japanese "G" keyboard
  8658.  91ABh    old Japanese "P" keyboard
  8659.  92ABh    old Japanese "A" keyboard
  8660. --------B-1610-------------------------------
  8661. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  8662.     AH = 10h
  8663. Return: AH = BIOS scan code
  8664.     AL = ASCII character
  8665. Notes:    if no keystroke is available, this function waits until one is placed
  8666.       in the keyboard buffer
  8667.     the BIOS scan code is usually, but not always, the same as the hardware
  8668.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  8669.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  8670.       differs for shifted special keys.
  8671.     unlike AH=00h, this function does not discard extended keystrokes
  8672.     INT 16/AH=09h can be used to determine whether this function is
  8673.       supported, but only on later model PS/2s
  8674. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h,MEM 0040h:0019h,MEM 0040h:001Eh
  8675. --------B-1611-------------------------------
  8676. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  8677.     AH = 11h
  8678. Return: ZF set if no keystroke available
  8679.     ZF clear if keystroke available
  8680.         AH = BIOS scan code
  8681.         AL = ASCII character
  8682. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  8683.     unlike AH=01h, this function does not discard extended keystrokes
  8684.     some versions of the IBM BIOS Technical Reference erroneously report
  8685.       that CF is returned instead of ZF
  8686.     INT 16/AH=09h can be used to determine whether this function is
  8687.       supported, but only on later model PS/2s
  8688. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h,INT 09,INT 15/AH=4Fh
  8689. --------B-1612-------------------------------
  8690. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  8691.     AH = 12h
  8692. Return: AL = shift flags 1 (same as returned by AH=02h) (see #0511)
  8693.     AH = shift flags 2 (see #0512)
  8694. Notes:    AL bit 3 set only for left Alt key on many machines
  8695.     AH bits 7 through 4 always clear on a Compaq SLT/286
  8696.     INT 16/AH=09h can be used to determine whether this function is
  8697.       supported, but only on later model PS/2s
  8698.     many BIOSes (including at least some versions of Phoenix and AMI) will
  8699.       destroy AH on return from functions higher than AH=12h, returning
  8700.       12h less than was in AH on entry (due to a chain of DEC/JZ
  8701.       instructions)
  8702. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh,MEM 0040h:0017h
  8703.  
  8704. Bitfields for keyboard shift flags 1:
  8705. Bit(s)    Description    (Table 0511)
  8706.  7    Insert active
  8707.  6    CapsLock active
  8708.  5    NumLock active
  8709.  4    ScrollLock active
  8710.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  8711.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  8712.  1    left shift key pressed
  8713.  0    right shift key pressed
  8714. SeeAlso: #0506,#0512,MEM 0040h:0017h,#M010
  8715.  
  8716. Bitfields for keyboard shift flags 2:
  8717. Bit(s)    Description    (Table 0512)
  8718.  7    SysReq key pressed (SysReq is often labeled SysRq)
  8719.  6    CapsLock pressed
  8720.  5    NumLock pressed
  8721.  4    ScrollLock pressed
  8722.  3    right Alt key pressed
  8723.  2    right Ctrl key pressed
  8724.  1    left Alt key pressed
  8725.  0    left Ctrl key pressed
  8726. SeeAlso: #0511,MEM 0040h:0018h,#M011
  8727. --------J-1613-------------------------------
  8728. INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
  8729.     AH = 13h
  8730.     AL = function
  8731.         00h set shift status
  8732.         DX = shift status (see #0513), must preserve internal status
  8733.               bits
  8734.         01h get shift status
  8735.         Return: DX = current shift status (see #0513)
  8736. Note:    these functions are supplied by the Japanese Front-End Processor
  8737. SeeAlso: AH=14h,INT 21/AX=6301h
  8738.  
  8739. Bitfields for DOS/V shift status:
  8740. Bit(s)    Description    (Table 0513)
  8741.  0    full-size rather than half-size
  8742.  2-1    character input mode
  8743.     00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
  8744.  5-3    internal status
  8745.  6    Romaji enabled
  8746.  7    Katakana to Kanji conversion enabled
  8747.  15-8    internal status
  8748. --------J-1614-------------------------------
  8749. INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
  8750.     AH = 14h
  8751.     AL = function
  8752.         00h enable display
  8753.         01h disable display
  8754.         02h get display state
  8755.         Return: AL = current state (00h enabled, 01h disabled)
  8756. Desc:    control the screen-bottom shift status row(s) for the Japanese
  8757.       Front-End Processor
  8758. SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
  8759. --------B-1620-------------------------------
  8760. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  8761.     AH = 20h
  8762. Return: AH = BIOS scan code (see AH=10h)
  8763.     AL = ASCII character
  8764. Note:    use AH=09h to determine whether this function is supported
  8765. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  8766. --------b-1620------------------------------------
  8767. INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
  8768.     AH = 20h
  8769.     AL = shift status (see #0514)
  8770. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  8771.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  8772.     the user can override the specified settings by pressing the keys
  8773.  
  8774. Bitfields for HUNTER 16 shift status:
  8775. Bit(s)    Description    (Table 0514)
  8776.  4    Scroll Lock on
  8777.  5    Num Lock on
  8778.  6    Caps Lock on
  8779. --------K-1620-------------------------------
  8780. INT 16 O - K3 v1.5x, K3PLUS v5.xx - GET EXTENDED BUFFER STATE
  8781.     AH = 20h
  8782. Return: AX = K3 version
  8783.     ES:BX -> extended keyboard buffer start
  8784.     ES:DX -> extended keyboard buffer end
  8785.     ES:SI -> next keystroke
  8786.     ES:DI -> last keystroke in buffer
  8787.     CX = number of keystrokes in buffer
  8788. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  8789.       Frinke, originally based on the K3 extended German keyboard driver
  8790.       by Martin Gerdes published in c't magazine in 1988
  8791. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  8792.       is no longer supported by v6.30+; use AX=AF20h instead
  8793. SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h
  8794. --------B-1621-------------------------------
  8795. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  8796.     AH = 21h
  8797. Return: ZF set if no keystroke available
  8798.     ZF clear if keystroke available
  8799.         AH = BIOS scan code
  8800.         AL = ASCII character
  8801. Notes:    use AH=09h to determine whether this function is supported
  8802.     some versions of the IBM BIOS Technical Reference erroneously report
  8803.       that CF is returned instead of ZF
  8804.     K3PLUS v6.00+ supports this function as an alias of AH=11h
  8805. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  8806. --------b-1621------------------------------------
  8807. INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
  8808.     AH = 21h
  8809.     AL = shift keys to control (see #0506)
  8810.     BL = shift state for disabled keys
  8811. Note:    If a bit in AL is set the key is disabled and set to the state of the
  8812.       corresponding bit in BL
  8813. SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
  8814. --------B-1622-------------------------------
  8815. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  8816.     AH = 22h
  8817. Return: AL = shift flags 1 (see #0511)
  8818.     AH = shift flags 2 (see #0512)
  8819. Notes:    use AH=09h to determine whether this function is supported
  8820.     K3PLUS v6.00+ supports this function as an alias of AH=12h
  8821. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  8822. --------b-1622------------------------------------
  8823. INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
  8824.     AH = 22h
  8825.     AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
  8826.     BX = 0708h
  8827.     CX = 0910h
  8828.     DX = 1112h
  8829. Return: AL = 00h if successful
  8830. SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
  8831. --------b-1623------------------------------------
  8832. INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
  8833.     AH = 23h
  8834.     AL = new state of breakout (00h enabled, nonzero disabled)
  8835.     BX = 0708h
  8836.     CX = 0910h
  8837.     DX = 1112h
  8838. Return: AL = 00h if successful
  8839. Desc:    Enables or disables the emergency breakout feature, where the
  8840.       Hunter 16 at power on checks whether the X and P keys are pressed.
  8841.       If so the machine will boot rather than continue the running program
  8842. SeeAlso: AH=22h"HUNTER"
  8843. --------b-1624------------------------------------
  8844. INT 16 - HUNTER 16 - REDEFINE KEY CODES
  8845.     AH = 24h
  8846.     AL = Matrix Code (see #0515)
  8847.     BL = new Key code
  8848. Return: AL = status (00h successful, nonzero failed)
  8849. SeeAlso: AH=2Bh,AH=2Ch
  8850.  
  8851. (Table 0515)
  8852. Values for HUNTER 16 Matrix Code:
  8853.  Code  Key        Code    Key        Code    Key
  8854.  00h   Esc key        1Eh    Space        3Bh    L
  8855.  01h   1        21h    0        3Ch    ,
  8856.  02h   Q        22h    -        3Eh    Right shift
  8857.  03h   Tab        23h    '        42h    8
  8858.  04h   Num Lock        24h    Keypad 4    43h    7
  8859.  05h   \        25h    Enter        44h    U
  8860.  08h   LShift        26h    Keypad 7    45h    I
  8861.  09h   Ctrl        27h    .        46h    J
  8862.  0Ah   "Paw" key    28h    Keypad 1    47h    K
  8863.  0Bh   2        29h    Keypad 0    48h    M
  8864.  0Ch   W        2Ch    =        49h    N
  8865.  0Dh   A        2Dh    Backspace    4Ah    /
  8866.  0Eh   S        2Eh    Keypad 8    4Dh    6
  8867.  0Fh   Z        2Fh    Keypad 9    4Eh    5
  8868.  11h   Alt        30h    Keypad 5    4Fh    T
  8869.  16h   4        31h    Keypad 6    50h    Y
  8870.  17h   3        32h    Keypad 2    51h    G
  8871.  18h   E        33h    Keypad 3    52h    H
  8872.  19h   R        34h    Keypad .    53h    B
  8873.  1Ah   D        37h    9        54h    V
  8874.  1Bh   F        38h    O        55h    #
  8875.  1Ch   X        39h    P        58h    Pwr
  8876.  1Dh   C        3Ah    ;        59h    Shift Pwr
  8877. --------b-1625------------------------------------
  8878. INT 16 - HUNTER 16 - RESET KEYBOARD
  8879.     AH = 25h
  8880. Return: AL = 00h
  8881. Desc:    restores the standard keyboard layout after any remapping
  8882. SeeAlso: AH=24h,AH=2Bh,AH=2Ch
  8883. --------K-1625-------------------------------
  8884. INT 16 O - K3 v1.5x, K3PLUS v5.xx - COPY INTO EXTENDED BUFFER
  8885.     AH = 25h
  8886.     CX = number of keystrokes to copy
  8887.     ES:SI -> buffer containing keystrokes
  8888. Return: CF clear if successful
  8889.     CF set on error (i.e. buffer full)
  8890.         CX = number of keystrokes NOT transferred
  8891.         ES:SI -> first keystroke not transferred
  8892. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  8893.       is no longer supported by v6.30+; use AX=AF25h instead
  8894. SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h
  8895. --------b-1626------------------------------------
  8896. INT 16 - HUNTER 16 - CONTROL KEYCLICK
  8897.     AH = 26h
  8898.     AL = new state of keyclicks (00h disabled, 01h enabled)
  8899. Return: AL = 00h
  8900. SeeAlso: AH=2Ah
  8901. --------b-1627------------------------------------
  8902. INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
  8903.     AH = 27h
  8904.     AL = what to dump
  8905.         00h whole (virtual) window
  8906.         01h LCD window only
  8907. Return: AL = 00h
  8908. Desc:    control whether printscren dumps the whole 80x25 screen or only the
  8909.       part displayed in the LCD window
  8910. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  8911.       a 640x200 virtual screen
  8912. --------b-1629------------------------------------
  8913. INT 16 - HUNTER 16 - GET KEY REPEAT
  8914.     AH = 29h
  8915. Return: BL = Typematic rate (characters per second) (see #0516)
  8916.     BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
  8917. SeeAlso: AH=03h,AH=2Ah
  8918.  
  8919. (Table 0516)
  8920. Values for HUNTER 16 Typematic rate:
  8921.  00h    30.0     08h    15.0     10h    7.5     18h    3.7
  8922.  01h    26.7     09h    13.3     11h    6.7     19h    3.3
  8923.  02h    24.0     0Ah    12.0     12h    6.0     1Ah    3.0
  8924.  03h    21.8     0Bh    10.9     13h    5.5     1Bh    2.7
  8925.  04h    20.0     0Ch    10.0     14h    5.0     1Ch    2.5
  8926.  05h    18.5     0Dh     9.2     15h    4.6     1Dh    2.3
  8927.  06h    17.1     0Eh     8.6     16h    4.3     1Eh    2.1
  8928.  07h    16.0     0Fh     8.0     17h    4.0     1Fh    2.0
  8929. SeeAlso: AH=2Ah
  8930. --------b-162A------------------------------------
  8931. INT 16 - HUNTER 16 - CONTROL KEY REPEAT
  8932.     AH = 2Ah
  8933.     AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
  8934. SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
  8935. --------b-162B------------------------------------
  8936. INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
  8937.     AH = 2Bh
  8938.     AL = which key table to redefine
  8939.         00h unshifted
  8940.         01h shifted
  8941.         02h Numlock
  8942.     BH = standard scan code of key (00h-80h)
  8943.     BL = new scan code
  8944. Desc:    redefine the generated scan code from BH to BL
  8945. SeeAlso: AH=24h,AH=2Ah,AH=2Ch
  8946. --------b-162C------------------------------------
  8947. INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
  8948.     AH = 2Ch
  8949.     AL = Matrix code of key (see AH=29h)
  8950.     BL = new key code
  8951. Return: AL = status (00h success, nonzero failed)
  8952. Desc:    redefine the key code generated by holding the PAW key down and
  8953.       pressing the key in AL
  8954. SeeAlso: AH=24h,AH=2Bh
  8955. --------b-162D------------------------------------
  8956. INT 16 - HUNTER 16 - CONTROL BREAK KEYS
  8957.     AH = 2Dh
  8958.     AL = enabled break keys
  8959.         bit 0 Ctrl-C
  8960.         bit 1 Ctrl-Break
  8961.     BX = 0708h
  8962.     CX = 0910h
  8963.     DX = 1112h
  8964. Return: AL = status (00h success, FFh failed)
  8965. SeeAlso: AH=21h"HUNTER"
  8966. --------U-163577-----------------------------
  8967. INT 16 U - TextWare TWTSR - API
  8968.     AX = 3577h
  8969.     CX = function
  8970.         00CBh ???
  8971.         Return: AX = 0000h
  8972.             BX = 0000h
  8973.             DX:CX -> ???
  8974.         00CCh uninstall
  8975.         Return: AX = status
  8976.                 0000h successful
  8977.                 FFFDh unable to unload because vectors taken
  8978.         00CDh ???
  8979.         Return: AX = 0000h
  8980.             BX = 0000h
  8981.             DX:CX -> ???
  8982.         other
  8983.         Return: AX = 5345h ('SE')
  8984. Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
  8985.       popped up via hotkey
  8986. SeeAlso: AX=D724h
  8987. --------U-164252-----------------------------
  8988. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  8989.     AX = 4252h
  8990. Return: AX = 5242h if installed
  8991. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of
  8992.       the PC Magazine utility CAPTURE written by Tom Kihlken
  8993. SeeAlso: AX=4253h,AX=4254h
  8994. --------U-164253-----------------------------
  8995. INT 16 - TEXTCAP 2.0 - UNINSTALL
  8996.     AX = 4253h
  8997. Return: AX = segment of resident code
  8998. Notes:    the uninstall code does not check whether interrupt vectors have been
  8999.       chained by other programs
  9000.     the caller must free the main memory block (using the returned segment)
  9001. SeeAlso: AX=4252h,AX=4254h
  9002. --------U-164254-----------------------------
  9003. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  9004.     AX = 4254h
  9005. Return: AX = status
  9006.         4254h if screen dump will be written as soon as disk becomes idle
  9007.         5442h if screen dump written
  9008. SeeAlso: AX=4252h,AX=4253h
  9009. --------e-164500-----------------------------
  9010. INT 16 - Shamrock Software EMAIL - GET STATUS
  9011.     AX = 4500h
  9012.     DL = port number (01h = COM1)
  9013.     ES:BX -> 13-byte buffer for ASCIZ name
  9014. Return: AX = 4D00h if EMAIL installed on specified port
  9015.         ES:BX -> "" if no connection
  9016.           -> "*" if connection but caller has not identified name
  9017.           -> name otherwise
  9018.         CX = version (CH = major, CL = minor)
  9019.         DL = privilege level of user (00h = guest)
  9020.         DH = chosen language (00h German, 01h English)
  9021. SeeAlso: AX=4501h,AX=4502h
  9022. --------e-164501-----------------------------
  9023. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  9024.     AX = 4501h
  9025.     DL = port number (01h = COM1)
  9026. Return: AX = 4D00h if EMAIL installed on specified port
  9027.         BX = maximum connect time in clock ticks
  9028.         CX = maximum connect time for guests (without name) in clock ticks
  9029.         DX = elapsed connect time of current user in clock ticks
  9030. SeeAlso: AX=4500h
  9031. --------e-164502-----------------------------
  9032. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  9033.     AX = 4502h
  9034.     DL = port number (01h = COM1)
  9035. Return: AX = 4D00h if EMAIL installed on specified port
  9036.         BL = current value of serial port's Line Control Register
  9037.         BH = flags (see #0517)
  9038.         CX = selected country code (33 = France, 49 = Germany, etc)
  9039.         DX = baudrate divisor (115200/DX = baudrate)
  9040. SeeAlso: AX=4500h
  9041.  
  9042. Bitfields for Shamrock Software EMAIL flags:
  9043. Bit(s)    Description    (Table 0517)
  9044.  0    ISO code
  9045.  1    pause
  9046.  2    linefeed
  9047.  3    ANSI sequences
  9048. --------e-164503-----------------------------
  9049. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  9050.     AX = 4503h
  9051.     DL = port number (01h = COM1)
  9052.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  9053.     ES:BX -> ASCIZ string with new user command-word
  9054. Return: AX = 4D00h if EMAIL installed on specified port
  9055. Notes:    a single user command (consisting of only uppercase letters and digits)
  9056.       may be defined, and remains valid until it is overwritten or the
  9057.       EMAIL program terminates; the user command must be activated by
  9058.       calling AX=4504h at least once.
  9059.     an existing command word may be redefined with this function
  9060. SeeAlso: AX=4504h,AX=4505h
  9061. --------e-164504-----------------------------
  9062. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  9063.     AX = 4504h
  9064.     DL = port number (01h = COM1)
  9065.     ES:BX -> 80-byte buffer for ASCIZ user input line
  9066. Return: AX = 4D00h if EMAIL installed on specified port
  9067.         DL = flags
  9068.         bit 0: user function supported (always set)
  9069.         bit 1: user entered user-function command word
  9070.         if DL bit 1 set,
  9071.         ES:BX buffer contains line entered by user which begins with
  9072.             the defined command word and has been converted to all
  9073.             caps
  9074. Note:    caller must process the returned commandline and invoke AX=4505h
  9075.       within five seconds with the result of that processing
  9076. SeeAlso: AX=4503h,AX=4505h
  9077. --------e-164505-----------------------------
  9078. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  9079.     AX = 4505h
  9080.     DL = port number (01h = COM1)
  9081.     DH = error flag
  9082.         bit 3: set on error
  9083.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  9084. Return: AH = 4Dh if EMAIL installed on specified port
  9085.     AL = status
  9086.         00h successful
  9087.         02h unable to perform function (timeout, prev call not complete)
  9088.         other error
  9089. Notes:    if the error flag in DH is set, the string is not sent and an error
  9090.       message is generated instead; if this function is not called within
  9091.       five seconds of AX=4504h, EMAIL automatically generates an error
  9092.       message
  9093.     the string is copied into an internal buffer, allowing this function's
  9094.       caller to continue immediately
  9095. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  9096. --------e-164506-----------------------------
  9097. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  9098.     AX = 4506h
  9099.     DL = port number (01h = COM1)
  9100.     ES:BX -> 13-byte buffer for ASCIZ filename
  9101. Return: AX = 4D00h if EMAIL installed on specified port
  9102.         DH = Xmodem status
  9103.         00h no XGET command given
  9104.         01h XGET in progress
  9105.         02h XGET completed successfully
  9106.         ES:BX buffer filled with last filename given to XGET command
  9107.         (without path)
  9108. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  9109.       return DH=00h
  9110. SeeAlso: AX=4500h,INT 17/AX=2408h
  9111. --------K-164B-------------------------------
  9112. INT 16 - Frank Klemm Keyboard Driver v2.0 - API
  9113.     AH = 4Bh
  9114.     CX = code or action
  9115.         0000h-FEFFh key code
  9116.         FF00h-FFFFh action (see #0518)
  9117.     BL = scan code (normal keys) or scan code + 60h (enhanced keys)
  9118.     BH = shift state (see #0519)
  9119. Return: CX = previous code or action
  9120.  
  9121. (Table 0518)
  9122. Values for Frank Klemm Keyboard Driver action code:
  9123.  FF00h    no action
  9124.  FF01h    hardcopy
  9125.  FF02h    left shift
  9126.  FF03h    right shift
  9127.  FF04h    left Ctrl
  9128.  FF05h    right Ctrl
  9129.  FF06h    left Alt
  9130.  FF07h    right Alt / AltGr
  9131.  FF08h    CapsLock
  9132.  FF09h    NumLock
  9133.  FF0Ah    ScrlLock
  9134.  FF0Bh    Insert (returns code 5200h or 52E0h)
  9135.  FF0Ch    Pause
  9136.  FF0Dh    Ctrl-Break function
  9137.  FF0Eh    warm boot via far jump to F000h:FFF0h
  9138.  FF0Fh    terminate current program
  9139.  FF10h    key for entering keys via Alt-numpad (read-only)
  9140.  FF11h    clear keyboard buffer
  9141.  FF12h    reset (warmboot on XT)
  9142.  FF13h    mouse sensitivity (read-only)
  9143.  FF14h    keyjobs (read-only)
  9144.  FF15h    SysRq
  9145.  FF16h    turn on CPU cache (486+)
  9146.  FF17h    turn off CPU cache (486+)
  9147. SeeAlso: #0519
  9148.  
  9149. (Table 0519)
  9150. Values for Frank Klemm Keyboard Driver shift state:
  9151.  00h    no shift keys
  9152.  01h    either Shift
  9153.  02h    either Ctrl
  9154.  03h    left Alt
  9155.  04h    Ctrl + Alt
  9156. ---standard keyboard---
  9157.  05h    right Alt / AltGr
  9158. ---Russian keyboard---
  9159.  05h    Russian + no shift keys
  9160.  06h    Russian + either Shift
  9161. SeeAlso: #0518
  9162. --------K-164D4F-----------------------------
  9163. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  9164.     AX = 4D4Fh
  9165. Return: AX = 6F6Dh if installed
  9166.         ES = segment of resident code
  9167. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  9168. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  9169. --------J-165000-----------------------------
  9170. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  9171.     AX = 5000h
  9172.     BX = country code
  9173.         0001h USA (English), 0051h Japan
  9174. Return: AL = status
  9175.         00h successful
  9176.         01h bad country code
  9177.         02h other error
  9178. Notes:    the K3PLUS v6.00+ INT 16 BIOS replacement will switch between the
  9179.       supported country specific layout (e.g. BX=0031h Germany, BX=001Fh
  9180.       Netherlands, BX=0020h Belgium, BX=0022h Spain) (as with <Ctrl>+
  9181.       <Alt>+<F2>) and K3PLUS' transparent mode (as with <Ctrl>+<Alt>+<F1>).
  9182.     In transparent mode (BX=0001h), K3PLUS chains to the underlying
  9183.       driver (normally the BIOS driver with US-layout). K3PLUS beeps on
  9184.       mode changes
  9185. SeeAlso: AX=5001h,AX=AF4Dh,INT 10/AX=5000h,INT 17/AX=5000h
  9186. --------J-165001-----------------------------
  9187. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  9188.     AX = 5001h
  9189. Return: AL = status
  9190.         00h successful
  9191.         BX = country code
  9192.         02h error
  9193. Note:    also supported by K3PLUS v6.00+
  9194. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  9195. --------J-1651-------------------------------
  9196. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  9197.     AH = 51h
  9198. Return: AL = standard shift key states (see #0506,#0511)
  9199.     AH = Kana lock (00h off, 01h on)
  9200. Note:    also supported by K3PLUS v6.00+, but K3PLUS always returns AH=00h
  9201. SeeAlso: AH=02h,AH=12h,AH=22h
  9202. --------t-165453BX5242-----------------------
  9203. INT 16 - TSRBONES - INSTALLATION CHECK
  9204.     AX = 5453h ('TS')
  9205.     BX = 5242h ('RB')
  9206.     CX = 4F4Eh ('ON')
  9207.     DX = 4553h ('ES')
  9208. Return: AX = 4553h if installed
  9209.     BX = 4F4Eh if installed
  9210.     CX = 5242h if installed
  9211.     DX = 5453h if installed
  9212. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  9213. Note:    these values are the default as the TSRBONES package is distributed,
  9214.       but will normally be changed when implementing an actual TSR with
  9215.       the TSRBONES skeleton
  9216. SeeAlso: INT 2D/AL=00h"AMIS"
  9217. --------A-165500-----------------------------
  9218. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  9219.     AX = 5500h
  9220. Return: AX = 4D53h ('MS') if keyboard TSR present
  9221. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  9222.       that are present through this call.
  9223.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  9224.       handlers; otherwise it assumes that the TSR will handle the keyboard
  9225. SeeAlso: AX=55FFh,INT 1A/AX=3601h
  9226. --------A-1655FE-----------------------------
  9227. INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR
  9228.     AX = 55FEh
  9229.     DX = function
  9230.         0000h initialize
  9231.         ES:BX -> ??? function
  9232.         ES:CX -> ??? structure
  9233.         FFFFh shutdown/reset
  9234. Return: AX = result
  9235.         4D4Bh only the INT 1B handler will be installed.
  9236.         other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C
  9237.           are installed
  9238. Notes:    The pointer in ES:CX seems to point at a structure defining a callback
  9239.       function when new keyboard keys are pressed. If a TSR returns
  9240.       AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
  9241.     these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit,
  9242.       and before/after shelling out
  9243.     since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs
  9244.       will also cause this interface to be invoked
  9245.     K3PLUS v6.07+ supports this function, but will never invoke the
  9246.       callback function
  9247. SeeAlso: AX=5500h,AX=AF4Dh,INT 1A/AX=3601h
  9248. --------U-1655FF-----------------------------
  9249. INT 16 C - Microsoft Word - TSR COOPERATION???
  9250.     AX = 55FFh
  9251.     BX >= 0004h (version of Microsoft Word [BL = major] ???)
  9252.     CX = function
  9253.         0000h set ??? flag
  9254.         other clear ??? flag
  9255. Notes:    hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j,
  9256.       distributed with PC Tools v7, as well as the Trusted Access
  9257.       SCRNBLNK.COM; this may be part of the standard TesSeRact library
  9258.     known to be called by the German edition of Microsoft Word 5.0
  9259. SeeAlso: AX=5500h,INT 2F/AX=5453h
  9260. --------c-165758BX4858-----------------------
  9261. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  9262.     AX = 5758h
  9263.     BX = 4858h ('HX')
  9264.     DX = 4443h ('DC')
  9265.     CX <> 5758h
  9266. Return: BX = 6878h if installed
  9267.     CX = 6463h if installed
  9268.         AX = code segment of TSR
  9269.         CX = internal version??? (v3.00 returns 0100h)
  9270. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  9271. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  9272.     the cache statistics are located early in the segment pointed at by
  9273.       AX on return
  9274. SeeAlso: INT 2F/AX=5758h
  9275. --------m-165758BX5754-----------------------
  9276. INT 16 U - Netroom ??? - ???
  9277.     AX = 5758h
  9278.     BX = 5754h
  9279.     ???
  9280. Return: ???
  9281. --------m-165758BX5755-----------------------
  9282. INT 16 U - Netroom ??? - ???
  9283.     AX = 5758h
  9284.     BX = 5755h
  9285.     DS:SI -> ???
  9286. Return: ???
  9287. --------m-165758BX5756-----------------------
  9288. INT 16 U - Netroom ??? - INSTALLATION CHECK
  9289.     AX = 5758h
  9290.     BX = 5756h
  9291. Return: BX <> 5756h if installed
  9292. --------m-165758BX5858-----------------------
  9293. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  9294.     AX = 5758h
  9295.     BX = 5858h
  9296. Return: CF clear
  9297.     DX:BX -> saved copy of interrupt vector table
  9298. InstallCheck:    call this function and compare BX against 5858h on return; if
  9299.       it has changed, PRENET is installed
  9300. SeeAlso: AX=5758h/BX=5859h
  9301. Index:    installation check;Netroom PRENET
  9302. --------m-165758BX5859-----------------------
  9303. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  9304.     AX = 5758h
  9305.     BX = 5859h
  9306. Return: CF clear
  9307.     DX:BX -> saved copy of interrupt vector table
  9308. InstallCheck:    call this function and compare BX against 5859h on return; if
  9309.       it has changed, POSTNET is installed
  9310. SeeAlso: AX=5758h/BX=5858h
  9311. Index:    installation check;Netroom POSTNET
  9312. ----------166701-----------------------------
  9313. INT 16 - Doorway v2.30+ - INSTALLATION CHECK
  9314.     AX = 6701h
  9315. Return: AX = 8080h if running under Doorway
  9316. Program: Doorway is a program by Marshall Dudley which allows most DOS programs
  9317.       to run as a BBS door without modification
  9318. --------U-166969BX6968-----------------------
  9319. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  9320.     AX = 6969h
  9321.     BX = 6968h
  9322. Return: resident code unhooked, but not removed from memory
  9323. Index:    uninstall;BACKTALK
  9324. --------U-166969BX6969-----------------------
  9325. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  9326.     AX = 6969h
  9327.     BX = 6969h
  9328.     DX = 0000h
  9329. Return: DX nonzero if installed
  9330.         BX = CS of resident code
  9331.         DX = PSP segment of resident code
  9332.         DS:SI -> ASCIZ identification string "CPoint Talk"
  9333. --------i-166A6B-----------------------------
  9334. INT 16 U - FastJuice - DISABLE/UNLOAD???
  9335.     AX = 6A6Bh
  9336. Return: ???
  9337. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  9338. SeeAlso: AX=7463h
  9339. Index:    uninstall;FastJuice
  9340. --------G-166C63-----------------------------
  9341. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  9342.     AX = 6C63h ('lc')
  9343. Return: AX = 4C43h ('LC') if installed
  9344. Program: TMED is a freeware resident memory editor by Liang Chen
  9345. --------U-166D74-----------------------------
  9346. INT 16 - MTRTSR - INSTALLATION CHECK
  9347.     AX = 6D74h ('mt')
  9348. Return: AX = 4D54h ('MT') if installed
  9349. Program: MTRTSR is a part of the shareware MTR package by Mechon Mamre which
  9350.       permits searching the large corpus of classical Hebrew texts in the
  9351.       package
  9352. SeeAlso: INT 10/AX=6D74h"MTRFONTS"
  9353. --------!---Section--------------------------
  9354.