// RWDD.bcpl - Read/Write DiskDescriptor
// temporary until I can fit this into the new BFS somehow
// Copyright Xerox Corporation 1979
// Last modified October 11, 1978 5:55 PM by Boggs
get "AltoFileSys.d"
get "Disks.d"
get "BFS.d"
external
[
//outgoing procedures
WriteDiskDescriptor; ReadDiskDescriptor
//incoming procedures
OpenFile; Closes; ReadBlock; PositionPage; GetCurrentFa
BFSWriteDiskDescriptor
//incoming statics
sysDisk; fpDiskDescriptor
]
// These routines only work on a BFSDSK
// and will be moved into a BFS module eventually.
//---------------------------------------------------------------------------
let WriteDiskDescriptor() = BFSWriteDiskDescriptor(sysDisk)
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
and ReadDiskDescriptor() be
//---------------------------------------------------------------------------
[
let dds = OpenFile("DiskDescriptor", 0, 0, 0, fpDiskDescriptor)
ReadBlock(dds, sysDisk>>DSK.diskKd, lKDHeader)
// Save virtual disk addresses of disk descriptor pages
for i = 1 to (lKDHeader+sysDisk>>BFSDSK.diskBTsize-1) rshift BFSlnWordsPerPage +1 do
[
PositionPage(dds, i)
let fa = vec lFA
GetCurrentFa(dds, fa)
sysDisk>>BFSDSK.VDAdiskDD↑i = fa>>FA.da
]
Closes(dds)
]