Create new object

Entry:
AH = 12h
BH = 01h
BL = object
00h (DV 2.0x only) handle is DWORD on top of stack
01h (DV 2.0x only) use task's window handle
02h (DV 2.0x only) given task's mailbox
(task's handle on stack)
03h (DV 2.0x only) current task's mailbox
04h (DV 2.0x only) given task's keyboard
(task's handle on stack)
05h (DV 2.0x only) current task's keyboard object
08h WINDOW class
09h MAILBOX class
0Ah KEYBOARD class
0Bh TIMER object (counts down 32-bit time in 10ms increments)
0Fh POINTER object
10h PANEL object
STACK: (if window object or WINDOW class)
DWORD address to jump to (no new task if high word == 0)
DWORD (reserved) 0 = non-task window, FFFFh = task window
DWORD bytes for task's private stack (FFFFh == default
of 0100h)
DWORD bytes system memory allocation (0 == none,
-1 == default)
DWORD window size, columns
DWORD window size, rows
DWORD length of window title
DWORD address of window title

Return:
DWORD on top of stack is new object handle

Note: If a new task is created, it is started with
AX = BX = CX = SI = DI = BP = 0
DX = segment of parent's object handle
DS = ES = SS = segment of private stack
(and new task's object handle)