Author: Matt Deatherage
Year: 1989
... discusses changes to the documented behavior of SET_DISKSW in System Software 5.0. Relevant for driver authors.
Apple II
Technical Notes
_____________________________________________________________________________
Developer Technical Support
GS/OS
#7: Behavior of SET_DISKSW
Written by: Matt Deatherage July 1989
This Technical Note discusses changes to the documented behavior of SET_DISKSW
in System Software 5.0. This Note is primarily of interest to device driver
authors.
_____________________________________________________________________________
GS/OS Reference, Volume 2, states that the system service call SET_DISKSW
($01FC90) will remove a device's blocks from the cache and place its volumes
off line.
With System Software 5.0, this behavior is slightly changed. SET_DISKSW also
posts insertion and ejection notices to the GS/OS Notify Procedure queue, so
that notification procedures may be called. This requires SET_DISKSW to check
the current status of the device to know if the disk switched condition
indicates an insertion or an ejection (by comparing the current device status
against the device-dispatcher maintained status).
A GS/OS driver may have an interrupt handler present to handle interrupts
generated by its device on insertion or ejection (if the hardware is capable
of generating such interrupts). Such an interrupt handler will probably want
to call SET_DISKSW when an insertion or ejection is detected to make the rest
of the operating system aware of it. However, SET_DISKSW obtains the device's
status based on the deviceNum and callNum on the GS/OS direct page.
Any driver or interrupt handler calling SET_DISKSW must first save the values
for deviceNum and callNum on the GS/OS direct page, replacing callNum with the
number of a driver call that accesses media (Apple suggests Driver_Read,
$0002) and replacing deviceNum with the number of the device for which
SET_DISKSW is being called. The caller must restore the original values after
SET_DISKSW returns.
Although SET_DISKSW saves and restores the GS/OS direct page, the caller must
know where the GS/OS direct page is located so it can place the proper
parameters there. The value used for the GS/OS direct page should be the
value of the D register when the driver receives its Driver_StartUp call. The
GS/OS direct page is now guaranteed to remain constant between Driver_StartUp
and Driver_ShutDown calls.
Further Reference
_____________________________________________________________________________
o GS/OS Reference, Volume 2