Up ] Docs Home ]

Call European MS-DOS 4.0 device helper function with

Back ] Next ]

Data:
DL =
00h "SchedClock" called on each timer tick
Data: AL = tick interval in milliseconds
01h "DevDone" device I/O complete
Data: ES:BX

request header
Note:

Must update status word first; may be called from an interrupt handler.

02h "PullRequest" pull next request from queue
Data: DS:SI

DWORD pointer to start of device's request queue

Return:

ZF - clear if pending request
ES:BX request header
ZF - set if no more requests
03h "PullParticular" remove specific request from queue

Data:

DS:SI DWORD pointer to start of device's request queue
ES:BX request header
Return: ZF - set if request header not found
04h "PushRequest" push the request onto the queue

Data:

DS:SI DWORD pointer to start of device's request queue
ES:BX request header
interrupts - disabled
05h "ConsInputFilter" keyboard input check
Data: AX = character (high byte 00h if PC ASCII character)

Return:

ZF - set if character should be discarded
ZF - clear if character should be handled normally
Note:

Called by keyboard interrupt handler so DOS can scan for special input characters.

06h "SortRequest" push request in sorted order by starting sector

Data:

DS:SI DWORD pointer to start of device's request queue
ES:BX request header
interrupts - disabled
07h "SigEvent" send signal on keyboard event
Data: AH = event identifier

Return:

AL - destroyed
FLAGS - destroyed
09h "ProcBlock" block on event

Data:

AX:BX = k process and schedules another to run
CX = timeout in ms or 0000h for never
DH = interruptable flag (nonzero if pause may be interrupted)
interrupts - disabled

Return:

after corresponding ProcRun call

CF - clear if event wakeup, set if unusual wakeup
ZF - set if timeout wakeup, clear if interrupted
AL = wakeup code, nonzero if unusual wakeup
interrupts - enabled
BX - destroyed
CX - destroyed
DX - destroyed
Note:

Block process and schedules another to run.

0Ah "ProcRun" unblock process
Data: AX:BX = event identifier (typically a pointer)

Return:

AX = number of processes awakened
ZF - set if no processes awakened
BX - destroyed
CX - destroyed
DX - destroyed
0Bh "QueueInit" initialize/clear character queue
Data: DS:BX character queue structure (see #02600)
Note:

The queue size field must be set before calling.

0Dh "QueueWrite" put a character in the queue
Data: DS:BX character queue (see #02600)
AL = character to append to end of queue
Return: ZF - set if queue is full
ZF - clear if character stored
0Eh "QueueRead" get a character from the queue
Data: DS:BX character queue (see #02600)

Return:

ZF - set if queue is empty
ZF - clear if characters in queue
AL = first character in queue
10h "GetDOSVar" return pointer to DOS variable

Data:

AL = index of variable
03h = current process ID
BX = index into variable if AL specifies an array
CX = expected length of variable

Return:

CF - clear if successful
DX:AX variable
CF - set on error
AX - destroyed
DX - destroyed
BX - destroyed
CX - destroyed
Note:

The variables may not be modified.

14h "Yield" yield CPU if higher-priority task ready to run
Return: FLAGS - destroyed
1Bh "CritEnter" begin system critical section
Data: DS:BX semaphore (6 BYTEs, initialized to zero)

Return:

AX - destroyed
BX - destroyed
CX - destroyed
DX - destroyed
1Ch "CritLeave" end system critical section
Data: DS:BX semaphore (6 BYTEs, initialized to zero)

Return:

AX - destroyed
BX - destroyed
CX - destroyed
DX - destroyed
Note:

Must be called in the context of the process which called CritEnter on the semaphore.

Notes: The DWORD pointing at the request queue must be allocated by the driver and initialized to 0000h:0000h. It always points at the next request to be executed.