)
Call PHARLAPX VxD entry point with:
AX = function
0001h get PHARLAP.386 version
Return: AX = version number (AH = major, AL = minor)
---queue functions---
0101h allocate a new message queue
CX = size of queue data buffer in bytes
Return: DX:AX = handle for new queue, or 0000h:0000h on error
0102h allocate a new key queue
CX = size of queue data buffer in bytes
EDX = VM handle into which keys will be pasted
Return: DX:AX = handle for new queue, or 0000h:0000h on error
0103h free message queue
EDX = queue handle
Return: AX = status (0000h,0003h,0007h) (see #02695)
0104h free key queue
EDX = queue handle
Return: AX = status (0000h,0003h,0005h) (see #02695)
0105h add message to communications queue
EDX = queue handle
BX = length of message data in bytes
CX = length of message header in bytes
ES:(E)SI -> message header
GS:(E)DI -> message data
Return: AX = status (0000h-0003h,0007h) (see #02695)
0106h remove message from queue
EDX = queue handle
CX = length of buffer in bytes
ES:(E)SI -> buffer for message
Return: AX = status (0000h,0003h,0006h,0007h,0008h) (see #02695)
CX = length of returned message (if AX=0000h or 0008h)
0107h flush queue (remove all data)
EDX = queue handle
Return: AX = status (0000h,0003h) (see #02695)
0108h add PasteKey structure(s) to key queue
EDX = queue handle
CX = number of PasteKey structures in buffer
ES:(E)SI -> PasteKey array (see #02696)
Return: AX = status (0000h-0003h) (see #02695)
0109h register enqueueing callback function
EDX = queue handle
ECX = function argument
ES:(E)SI -> callback function
Return: AX = status (0000h,0003h,0009h) (see #02695)
010Ah register dequeueing callback function
EDX = queue handle
ECX = function argument
ES:(E)SI -> callback function
Return: AX = status (0000h,0003h,0009h) (see #02695)
010Bh unregister enqueueing callback function
EDX = queue handle
Return: AX = status (0000h,0003h,0009h) (see #02695)
010Ch unregister dequeueing callback function
EDX = queue handle
Return: AX = status (0000h,0003h,0009h) (see #02695)
010Dh get message queue status
EDX = queue handle
Return: AX = status (0000h,0003h) (see #02695)
CX = number of pending messages
010Eh peek at message in queue
EDX = queue handle
BX = number of message in queue (0000h = first)
CX = size of buffer in bytes
ES:(E)SI -> buffer for message
Return: AX = status (0000h,0003h,0006h,0008h) (see #02695)
CX = length of returned message (if AX=0000h or 0008h)
010Fh peek at last message in queue
EDX = queue handle
CX = size of buffer in bytes
ES:(E)SI -> buffer for message
Return: AX = status (0000h,0003h,0006h,0008h) (see #02695)
CX = length of returned message (if AX=0000h or 0008h)
0110h replace last message in queue
EDX = queue handle
CX = length of message header in bytes
BX = length of message data in bytes
ES:(E)SI -> message header
GS:(E)DI -> message data
Return: AX = status (0000h,0002h,0003h) (see #02695)
0111h set permitted message count for queue
EDX = queue handle
CX = maximum number of messages to enqueue (FFFFh = unlimited)
Return: AX = status (0000h,0003h) (see #02695)
---generalized VxD services---
0202h call VxD function
ES:(E)BX -> in/out register-set buffer
Return: buffer updated
0203h map flat
???
--system register functions---
0301h read system registers into buffer
ES:(E)SI -> 512-byte buffer
Return: AX = 0000h
buffer filled (mostly zeros)
0302h copy linear memory into buffer
EDX = linear address
CX = number of bytes to copy
ES:(E)SI -> buffer
Return: AX = 0000h
0303h copy data into linear memory
EDX = linear address
CX = number of bytes to copy
ES:(E)SI -> buffer
Return: AX = 0000h
0304h freeze VM
???
0305h unfreeze VM
???
---name registration functions---
0401h register name
EDX = magic number to associate with name
ES:(E)SI -> name to register
Return: AX = status (0000h,0009h) (see #02695)
0402h unregister name
ES:(E)SI -> name to be unregistered
Return: AX = status (0000h,0009h) (see #02695)
0403h look up name
ES:(E)SI -> name to look up
Return: DX:AX = magic number or 0000h:0000h if not registered
0404h get name list handle
Return: DX:AX = name list handle
0000h:0000h if not initialized
---special DOS server routines (undocumented)---
0501h register
0502h unregister
0503h validate VM
0504h get INT9 count
0505h get screen line
0506h get shift status
0507h get server PB pointer
0508h initialize DOS shell
0509h get last VM handle