-- AltoFileDefs.Mesa Edited by Sandman on June 30, 1980 4:43 PM
-- Copyright Xerox Corporation 1979, 1980
DIRECTORY
AltoDefs USING [BYTE, PageNumber];
AltoFileDefs: DEFINITIONS =
BEGIN OPEN AltoDefs;
TIME: TYPE = MACHINE DEPENDENT RECORD [high, low: CARDINAL];
-- B A S I C D I S K S T U F F
-- virtual disk address
vDA: TYPE = RECORD [CARDINAL];
-- vDAs with special meaning
eofDA: vDA = vDA[177777B];
fillinDA: vDA = vDA[177776B];
-- virtual disk command
vDC: TYPE = {
ReadHLD, ReadLD, ReadD, WriteHLD, WriteLD, WriteD, SeekOnly, DoNothing};
-- F I L E D E S C R I P T O R S
-- serial number
SN: TYPE = MACHINE DEPENDENT RECORD [
bits: SNBits, part1: [0..17777B], part2: CARDINAL];
SNBits: TYPE = MACHINE DEPENDENT RECORD [directory, random, nolog: [0..1] ← 0];
DefaultSNBits: SNBits = [0, 0, 0];
DirSNBits: SNBits = [1, 0, 0];
NullSN: SN = SN[[1, 0, 1], 17777B, 177777B];
-- short file pointer
FP: TYPE = RECORD [serial: SN, leaderDA: vDA];
NullFP: FP = FP[serial: NullSN, leaderDA: eofDA];
-- complete file pointer
CFP: TYPE = MACHINE DEPENDENT RECORD [
serial: SN, version: CARDINAL, blank: UNSPECIFIED, leaderDA: vDA];
-- file hint
FH: TYPE = RECORD [da: vDA, page: PageNumber];
-- file index
FI: TYPE = RECORD [page: PageNumber, byte: CARDINAL];
-- file address
FA: TYPE = MACHINE DEPENDENT RECORD [da: vDA, page: CARDINAL, byte: CARDINAL];
-- complete file address
CFA: TYPE = RECORD [fp: FP, fa: FA];
-- L E A D E R P A G E
-- file properties (sans body)
FIP: TYPE = MACHINE DEPENDENT RECORD [type, length: BYTE];
-- leader page (page zero)
LD: TYPE = MACHINE DEPENDENT RECORD [
created, written, read: TIME,
name: ARRAY [0..FilenameWords) OF UNSPECIFIED,
props: ARRAY [0..210) OF UNSPECIFIED,
spare: ARRAY
[0..256 - 3*SIZE[TIME] - FilenameWords - 210 - 2 - SIZE[CFP] - SIZE[FA]) OF
UNSPECIFIED,
propBegin, propLength: BYTE,
consecutive: BOOLEAN,
blank: [0..177B],
newSN: BYTE,
dirFP: CFP,
eofFA: FA];
FilePropertyType: TYPE = BYTE;
DiskShape: FilePropertyType = 1;
PartitionName: FilePropertyType = 2;
-- D I S K D E S C R I P T O R
-- disk configuration
DISK: TYPE = MACHINE DEPENDENT RECORD [disks, tracks, heads, sectors: CARDINAL];
-- disk descriptor (diskKD)
KD: TYPE = MACHINE DEPENDENT RECORD [
disk: DISK,
lastSN: SN,
changed: WORD,
size: CARDINAL,
versions: CARDINAL,
freePages: CARDINAL, -- hint
blank: ARRAY [0..6) OF UNSPECIFIED,
table: ARRAY [0..0) OF WORD];
-- D I R E C T O R Y
-- file name lengths
FilenameChars: INTEGER = 39;
FilenameWords: INTEGER = 20;
-- hardwired locators
DirSN: CARDINAL = 100;
DirDA: vDA = vDA[1];
DirFP: FP = FP[SN[DirSNBits, 0, DirSN], DirDA];
-- directory entry types
DEfree: INTEGER = 0;
DEfile: INTEGER = 1;
DElast: INTEGER = 77B;
-- directory entry (sans name)
DV: TYPE = MACHINE DEPENDENT RECORD [
type: [DEfree..DElast], length: [0..1777B], fp: CFP];
END.