/*      BCPL Header for Filing System Version 2.1
*/

GET "FH2MAN"
// The manifests are separate to prevent confusion in commands that
// Need to know about the filing system structure but may not be
// able to copy the disc description out of a file-handler's globals
// (e.g. Disced )

// Globals:
GLOBAL
$( // Globals common to RESTART and the file handler:
   DeviceId             : ug+0
   UnitNo               : ug+1
// ug+2 to ug+7 are used by EX

   Error                : ug+10 // Error(Message, Arg)
   Device               : ug+11 // Device(Action, Key, Buffer)
   Seek                 : ug+12 // Seek(Cylinder)

   // Important data structure pointers:
   Map                  : ug+21
   Cache                : ug+22

   // Functions and routines:
   Clear                : ug+51 // rtn(Vector, Size)
   Get.Vec              : ug+52 // Vector := fn(UpperBound)
   Set.Vec              : ug+53 // rtn(Vector, Size, Values ...)
   Get.Lock             : ug+54 // Lock := fn(Key)
   SetArgs              : ug+55 // rtn(Packet)
   Append               : ug+56
   FindKey              : ug+57 // Key := fn(NearKey)
   Put                  : ug+58 // rtn(Vector, Offset, Value)
   Free.Lock            : ug+59 // rtn(Lock)
   CheckBlock           : ug+60 // rtn(Block)
   CheckSum             : ug+61 // Sum := fn(Vector, Size)
   initialise.environment : ug+62

   size.block           : ug+70
   sector.origin        : ug+71
   n.surfaces           : ug+72
   n.sectorsperblock    : ug+73
   n.blockspertrack     : ug+74
   n.reservedblocks     : ug+75
   preallocationfactor  : ug+76
   interleavefactor     : ug+77
   lowercylinder        : ug+78
   uppercylinder        : ug+79
   n.blockspercylinder  : ug+80
   keylowerbound        : ug+81
   keyupperbound        : ug+82
   n.blocks             : ug+83
   rootkey              : ug+84
   b.file.secondarytype : ug+85
   b.file.infobits      : ug+86
   b.file.parentdir     : ug+87
   b.file.hashchain     : ug+88
   b.file.filename      : ug+89
   b.file.creationdate  : ug+90
   b.file.infobase      : ug+91 ||\ SHARED
   b.file.keyvectorbase : ug+91 ||/ GLOBAL
   b.dir.hashtablelimit : ug+92
   size.hashtable       : ug+93 ||\ SHARED
   size.veryshortfile   : ug+93 ||/ GLOBAL
   size.fcb             : ug+94
   size.bitmap          : ug+95

   Starting             : ug+100 // rtn()
   Main                 : ug+101 // rtn()
   Work                 : ug+102 // rtn(Pkt)
   Access               : ug+103 // rtn()
   GetBlock             : ug+104 // Block := fn(Key, Access)
   FindSlot             : ug+105 // Block := fn(Key, Access)
   FHPktWait            : ug+106 // Pkt := fn(Pkt)
   OldPktWait           : ug+107 // Pkt := fn(Pkt)
   Resume               : ug+108 // Value := fn(Action, Key)
   HashValue            : ug+109 // Value := fn(String)
   DirectoryEntry       : ug+110 // Key := fn(DirKey, Name)
   EntryLock            : ug+111 // Lock := fn(DirLock, Name, Access)
   FailPkt              : ug+112 // rtn(Code)
   Trust.Lock           : ug+113 // Key := fn(Lock)
   Trust.Name           : ug+114 // rtn(Name)
   ConstructHeader      : ug+115 // Block := fn(Name, HashChain,
                                 //    SecondaryType, ParentKey)
   WriteProtected       : ug+116 // Bool := fn()
   AllocateKey          : ug+117 // rtn(Key)
   FreeKey              : ug+118 // rtn(Key)
   WriteBlock           : ug+119 // rtn(Key, AfterKey)
   PreAllocate          : ug+120
   MakeNextData         : ug+121
   FindOut              : ug+122
   WriteV               : ug+123
   WriteOut             : ug+124
   FH1Read              : ug+125
   FH1Write             : ug+126
   FHEndRead            : ug+127
   FHEndWrite           : ug+128

   note.fn              : ug+148
   point.fn             : ug+149
   Packet               : ug+150 // Current packet
   Main.Co              : ug+151 // Coroutine
   Work.Co              : ug+152 // Coroutine
   Access.Co            : ug+153 // Coroutine
   Next.Co              : ug+154 // Coroutine
   Access.Action        : ug+155
   Access.Key           : ug+156
   Access.Idle          : ug+157
   Block                : ug+158
   Co.Result            : ug+159
   Work.Level           : ug+160
   Continue             : ug+161
   Fail                 : ug+162
   Word                 : ug+163
   Mask                 : ug+164
   Packet.Queue         : ug+165
   Lock.Queue           : ug+166
   Work.Idle            : ug+167

   Arg1                 : ug+168
   Arg2                 : ug+169
   Arg3                 : ug+170
   Arg4                 : ug+171

   WriteProtect         : ug+172
   LastBlock.Lookup     : ug+173
   Offset.Lookup        : ug+174
   HeadBlock.Lookup     : ug+175
   DirectorySType.Lookup        : ug+176
   bitmap.checked               : ug+177
   handler.segment              : ug+178
$)