/* 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 $)