INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD          
  
    | 
       Input  | 
    
       Output  | 
   
  
    | 
       AX 
     | 
    12h | 
      | 
      | 
      | 
    AX | 
   
  
    | 
       BX 
     | 
     04h | 
    Object | 
      | 
      | 
    BX | 
   
  
    | 
       CX 
     | 
      | 
      | 
      | 
      | 
    CX | 
   
  
    | 
       DX 
     | 
      | 
      | 
      | 
      | 
    DX | 
   
  
    | ES:DI | 
      | 
      | 
    ES:DI | 
   
 Return: STACK: (if objectq) DWORD handle of object with input
               (otherwise)  DWORD number of bytes
                            DWORD address
Object:
        00h handle is DWORD on top of stack
            window: read next logical line
            mailbox: wait for and get next message
            pointer: wait for and get next message
        01h read the next logical line from task's default window
        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 |