Interrups | Categories | Contents |
AX = 1684h BX = 28A0h (virtual device ID for PHARLAPX device) (see #02642) ES:DI = 0000h:0000h
Return:
ES:DI -> VxD API entry point (see #02694) 0000h:0000h if the VxD does not support an API(Table 02694) 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 bytesReturn:
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 pastedReturn:
DX:AX = handle for new queue, or 0000h:0000h on error 0103h free message queue EDX = queue handleReturn:
AX = status (0000h,0003h,0007h) (see #02695) 0104h free key queue EDX = queue handleReturn:
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 dataReturn:
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 messageReturn:
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 handleReturn:
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 functionReturn:
AX = status (0000h,0003h,0009h) (see #02695) 010Ah register dequeueing callback function EDX = queue handle ECX = function argument ES:(E)SI -> callback functionReturn:
AX = status (0000h,0003h,0009h) (see #02695) 010Bh unregister enqueueing callback function EDX = queue handleReturn:
AX = status (0000h,0003h,0009h) (see #02695) 010Ch unregister dequeueing callback function EDX = queue handleReturn:
AX = status (0000h,0003h,0009h) (see #02695) 010Dh get message queue status EDX = queue handleReturn:
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 messageReturn:
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 messageReturn:
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 dataReturn:
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 bufferReturn:
Buffer updated 0203h map flat ???. --system register functions--- 0301h read system registers into buffer ES:(E)SI -> 512-byte bufferReturn:
AX = 0000h buffer filled (mostly zeros) 0302h copy linear memory into buffer EDX = linear address CX = number of bytes to copy ES:(E)SI -> bufferReturn:
AX = 0000h 0303h copy data into linear memory EDX = linear address CX = number of bytes to copy ES:(E)SI -> bufferReturn:
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 registerReturn:
AX = status (0000h,0009h) (see #02695) 0402h unregister name ES:(E)SI -> name to be unregisteredReturn:
AX = status (0000h,0009h) (see #02695) 0403h look up name ES:(E)SI -> name to look upReturn:
DX:AX = magic number or 0000h:0000h if not registered 0404h get name list handleReturn:
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(Table 02695) Values for PHARLAPX function status: 00h successful 01h data is too large to fit in queue 02h queue is full 03h invalid queue handle 04h invalid VM handle for queue 05h error starting a paste operation 06h queue is empty 07h a VM is blocked waiting on the queue 08h message was too long (truncated) 09h unable to register or unregister specified callback
See Also: #02694
Format of PHARLAPX PasteKey structure: Offset Size Description (Table 02696) 00h BYTE ASCII code 01h BYTE scan code (see #00006) 02h WORD shift states
See Also: #02694
Format of PHARLAPX VxD-call register structure: Offset Size Description (Table 02697) 00h DWORD call number 04h WORD input register map (see #02698) 06h WORD output register map (see #02698) 08h 7 DWORDs values for EAX, EBX, ECX, EDX, EBP, ESI, EDI on call 24h 4 WORDs values for DS, ES, FG, GS on call 2Ch DWORD EFLAGS on call 30h 7 DWORDs returned values of EAX, EBX, ECX, EDX, EBP, ESI, EDI 4Ch 4 WORDs returned values of DS, ES, FS, GS 54h DWORD returned EFLAGS
See Also: #02694
Bitfields for PHARLAPX VxD-call register map: Bit(s) Description (Table 02698) 0 value in EAX field is valid 1 value in EBX field is valid 2 value in ECX field is valid 3 value in EDX field is valid 4 value in EBP field is valid 5 value in ESI field is valid 6 value in EDI field is valid 7 value in DS field is valid 8 value in ES field is valid 9 value in FS field is valid 10 value in GS field is valid 11 value in EFLAGS field is valid
See Also: #02697
Category: Windows - Int 2Fh - M
Interrups | Categories | Contents |