Int 15 Fn 12 - Topview - Send Message - "read" - Get Next Record From Ob [Q]

AH = 12h
BH = 04h
BL = object
00h handle is DWORD on top of stack
mailbox: wait for and get next message
keyboard: wait for and get pointer to next input buffer
pointer: wait for and get next message
02h get next message from mailbox (task's handle on top of stack)
03h get next message from current task's mailbox
04h get the next input from keyboard (handle on top of stack)
05h get the next input from task's default keyboard
06h wait for input from any object in OBJECTQ (handle on stack)
07h wait for input from any object in task's default OBJECTQ

Return: STACK: (if objectq) DWORD handle of object with input
(otherwise) DWORD number of bytes
DWORD address of pointer message (see #0363)

Notes: for a keyboard in keystroke mode, the input buffer is a single byte
containing the character code as returned by the BIOS; the BIOS scan
code is available via the STATUS call if the character is zero
for a keyboard in field mode, the input buffer format is determined
by the field table header for the window the keyboard is attached to
keyboard input buffers and mailbox message buffers may be invalidated
by the next READ, ERASE, CLOSE, or FREE message to the same object

See Also: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h

Format of DESQview pointer message:
Offset Size Description (Table 0363)
00h WORD row
02h WORD column
04h BYTE status (see #0364)
05h BYTE field number or zero (APILEVEL >= 2.00 only)

Bitfields for DESQview pointer status:
Bit(s) Description (Table 0364)
7-2 number of clicks-1 if multiple-click mode active
7 set when press/release mode active and button pressed
6 set when press/release mode active and button released
1-0 button pressed (00=none,01=button1,10=button2)

See Also: #0363