Hi!
http://burks.brighton.ac.uk/burks/pcinfo/progdocs/xms30.htm
______________O\_/_________________________________\_/O______________
IMPLEMENTATION NOTES FOR DOS XMS DRIVERS:
* XMS drivers are required to hook INT 15h and watch for calls to
functions 87h (Block Move) and 88h (Extended Memory Available).
The INT 15h Block Move function must be hooked so that the state
of the A20 line is preserved across the call. The INT 15h Extended
Memory Available function must be hooked to return 0h to protect
the HMA.
* In order to maintain compatibility with existing device drivers,
DOS XMS drivers must not hook INT 15h until the first non-Version
Number call to the control function is made.
* XMS drivers are required to check for the presence of drivers
which use the IBM VDISK allocation scheme. Note that it is not
sufficient to check for VDISK users at installation time but at
the time when the HMA is first allocated. If a VDISK user is
detected, the HMA must not be allocated. Microsoft will publish a
standard method for detecting drivers which use the VDISK
allocation scheme.
* Allocation of a zero length extended memory buffer is allowed.
Programs which hook XMS drivers may need to reserve a handle for
private use via this method. Programs which hook an XMS driver
should pass all requests for zero length EMBs to the next driver
in the chain.
* Drivers should control the A20 line via an "enable count." Local
Enable only enables the A20 line if the count is zero. It then
increments the count. Local Disable only disables A20 if the count
is one. It then decrements the count. Global Enable/Disable keeps
a flag which indicates the state of A20. They use Local
Enable/Disable to actually change the state.
* Drivers should always check the physical A20 state in the local
Enable-Disable calls, to see that the physical state matches the
internal count. If the physical state does not match, it should be
modified so that it matches the internal count. This avoids
problems with applications that modify A20 directly.
IMPLEMENTATION NOTES FOR HIMEM.SYS:
* If HIMEM finds that the A20 line is already enabled when it is
invoked, it will NOT change the A20 line's state. The assumption
is that whoever enabled it knew what they were doing. HIMEM.SYS
displays the message "A20 Line Permanently Enabled" when this
situation occurs.
* HIMEM.SYS is incompatible with IBM's VDISK.SYS driver and other
drivers which use the VDISK scheme for allocating extended memory.
However, HIMEM does attempt to detect these drivers and will not
allocate the HMA if one is found.
_____________________________________________________________________
O/~\ /~\O
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel