Set object bits

Entry:
AH = 12h
BH = 0Ah
BL = object
00h handle is DWORD on top of stack
Window: write characters and attributes
Timer: start timer for specified interval
Pointer: set control flags
01h write characters and attributes to task's default window
02h send message/status by value to mailbox
(task's handle on stack)
03h send message/status by value to current task's
default mailbox
04h set control flags on KEYBOARD object
(handle on top of stack)
05h set control flags on task's default KEYBOARD object
STACK: (if mailbox) DWORD status
DWORD length of message
DWORD address
(if timer) DWORD duration in 1/100 seconds
(if window) DWORD count of characters
DWORD address of characters
DWORD count of attributes
DWORD address of attributes
(otherwise) DWORD bits to set

For keyboard objects, the bits have the following significance:

Bit 15 reserved, can't be set
Bit 14 unused
Bit 13 reserved, can't be set
Bit 12-5 unused
Bit 4 filter all keys (used with handler established by SETESC)
Bit 3 program continues executing while input in progress
Bit 2 insert mode active
Bit 1 keyboard is active
Bit 0 keyboard is in field mode

For pointer objects, the bits have the following significance:

Bit 15 reserved, can't be set
Bit 14-8 unused
Bit 7 mouse pointer is hidden while in window
Bit 6 get messages even if window not topmost
Bit 5 get messages even if window not foreground
Bit 4 mouse button must be held 1/2 second before it "clicks"
Bit 3 pointer position is relative to screen origin, not window origin
Bit 2 send message on button release as well as button press
Bit 1 unused???
Bit 0 send message only on button activity, not movement
DV-specific, and INT 15h/AX=DE0Fh must have been called first