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

Reply via email to