>!Implement

NOTES ON THE IMPLEMENTATION OF ADFS
===================================

This document has the following sections:

1) contents of source files
2) conventions
3) debugging

1) contents of source files
---------------------------

Hdr_x,xx   release version, date, and highest fix number to be applied
ArchieHdr  sets switches for Archimedes version
A500Hdr    sets switches for A500
Fixes      documents and sets switches for fixes since image became stable
DevVersion declares development version number for test versions, incremented
           with each assembly and GETs system header files
Adfs00     declares constants, allocates workspace, sets debug switches, and
           GETs AdfsMacros, CoreHdr and AdfsErrors
AdfsMacros macro definitions
CoreHdr    filecore interface declarations
AdfsErrors declares error numbers and builds error table
Adfs05     useful subroutines
Adfs10     winnie drivers without MEMC1A optimisations - no longer used
Adfs11     winnie drivers with MEMC1A optimisations
Adfs15     floppy drivers and low level disc op entry
Adfs20     code for other FileCore routines eg mount, poll disc changed
Adfs50     module interfaces and * commands

2) conventions
--------------
a) The routines are mostly callee save ie registers not explicitly returning
a result are preserved. The exceptions to this are mainly those in the device
drivers that are optimised for speed. Many subroutine calls document the
registers expected for parameters and results eg.

 BL     SkipSpaces              ;(R1->R0,R1,C)

means that R1 is a parameter and that R0 and R1 are modified by the call. Flags
are listed in the result if they have significant meaning after the call and it
cannot be assumed that other flags are preserved.

b) errors are kept in a different format internally - see Errors


3) Debugging
------------
Adfs00 contains various switches which can be turned on to aid debugging.
Some of the more specialised are:

SpoolOff - To turn spooling off for debugging text to prevent illegal reentry
IrqDebug - To disable debugging while IrqSema set to avoid being swamped by
           background scheduling debugging.
