>!Implement

NOTES ON THE IMPLEMENTATION OF ADFS

This document has the following sections:

  1. contents of source files
  2. conventions
  3. debugging
  4. 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.