Apple II
Technical Notes
_____________________________________________________________________________
                                                  Developer Technical Support


GS/OS
#6:    Drivers and GS/OS Direct Page

Revised by:    Matt Deatherage                                   January 1991
Written by:    Matt Deatherage                                     March 1989

This Technical Note corrects an error in the preliminary GS/OS documentation
and provides an alternate suggestion for developers who are writing GS/OS
drivers.
Changes since September 1990:  Updated the list of calls which do not require
the GS/OS direct page and updated the documentation references.
_____________________________________________________________________________

Preliminary GS/OS documentation, including the beta draft of GS/OS Reference,
Volume 2, incorrectly states that locations $5A through $5F are available for
device drivers, and that locations $66 through $6B are shared by device
drivers and supervisory drivers (and may be corrupted by either a driver or
supervisory driver call).

This is not correct.  The locations in question are used by GS/OS; destroying
these locations can cause system failure and media corruption.

Drivers which require direct page space of their own should request it from
the Memory Manager when they are started.  Upon receiving a call, a driver can
save the value of the D register (containing the GS/OS direct page) and switch
to its own direct page.  The driver may keep the value of its direct page
inside the driver itself; no space on GS/OS direct page is available for this
purpose.  The driver must restore the D register to point to the GS/OS direct
page before returning from the call, and it should also dispose of its direct
page space when it shuts down.

The driver must also set the D register to point to the GS/OS direct page
before making any system service call other than SET_SPEED, DYN_SLOT_ARBITER,
MOVE_INFO, SIGNAL, and INSTALL_DRIVER.

Note:  The location of the GS/OS direct page is guaranteed to
       remain the same between Driver_StartUp and Driver_ShutDown calls.


Further Reference
_____________________________________________________________________________
    o    GS/OS Device Driver Reference
