INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
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
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
SeeAlso: AH=12h/BH=84h

Format of pointer message:
Offset  Size    Description
00h    WORD    row
02h    WORD    column
04h    BYTE    status
bit 6: set when press/release mode active and button released
bits 7-2: number of clicks-1 if multiple-click mode active
bits 1,0: button pressed (00=none,01=button1,10=button2)
05h    BYTE    field number or zero (APILEVEL >= 2.00 only)

See also: 1512

1512 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT