// AltoFileSys.D -- Definitions for things kept on a disk. // Copyright Xerox Corporation 1979 // Last modified November 17, 1980 4:32 PM by Boggs manifest maxStringIndex = 255 structure STRING: [ length byte; char↑1,maxStringIndex byte ] manifest lSTRING = size STRING/16 structure TIME: [ h word 1; l word 1 ] manifest lTIME = size TIME/16 // F I L E D E S C R I P T O R S //--------------------------------------------------------------------------- structure SN: // File Serial Number //--------------------------------------------------------------------------- [ word1 word = [ directory bit 1 // this file is a directory random bit 1 nolog bit // no longer used part1 bit 13 ] word2 word = part2 word ] manifest lSN = size SN/16 // file pointer -- describes a particular file by label & leader page position //--------------------------------------------------------------------------- structure FP: // File Pointer //--------------------------------------------------------------------------- [ serialNumber @SN version word blank word // expansion to 2-word virtual Da's leaderVirtualDa word ] manifest lFP = size FP/16 // file address -- describes a particular spot in some file, but // does not contain enough info to read it (SN, vn missing) //--------------------------------------------------------------------------- structure FA: // File Address //--------------------------------------------------------------------------- [ da word // Virtual DA for the page pageNumber word // Page number in file (0, 1, ....) charPos word // Byte position on the page ] manifest lFA = size FA/16 // complete file address -- complete information needed to address // any byte in the file structure //--------------------------------------------------------------------------- structure CFA: // Complete File Address //--------------------------------------------------------------------------- [ fp @FP fa @FA ] manifest lCFA = size CFA/16 // D I S K D E S C R I P T O R //--------------------------------------------------------------------------- structure KDH: // Disk Descriptor Header //--------------------------------------------------------------------------- [ kd word = // First word (for lv...) nDisks word // Number of disks nTracks word // Number of tracks nHeads word // Number of heads nSectors word // Number of sectors lastSn @SN // Last serial number used on disk blank word // formerly bitTableChanged (OS17 and before) diskBTsize word // Number of valid words in the disk bit table defaultVersionsKept word // Default # file versions retained // (0 implies no multiple version feature) freePages word blank word 6 ] manifest lKDHeader = size KDH/16 // L E A D E R P A G E // leader page -- note that the definition is independent of page size // (assumes at least 256 words can be stored) manifest maxLengthFn = 39 //For all OS routines manifest maxLengthFnInWords = (maxLengthFn+2)/2 //enough for final "." //--------------------------------------------------------------------------- structure LD: // Leader Page //--------------------------------------------------------------------------- [ created @TIME written @TIME read @TIME name word maxLengthFnInWords leaderProps word 210 // Properties stored in leader page spare word 256-3*lTIME-maxLengthFnInWords-210-2-lFP-lFA propertyBegin byte // Index in LD of leaderProps propertyLength byte // number of words = 210 consecutive bit // Hint that file is allocated consecutively blank1 bit 7 changeSerial bit 8 // Bumped each time name => FP map changes dirFp word lFP // Hint for directory hintLastPageFa @FA // EOF hint ] //--------------------------------------------------------------------------- structure FPROP: // File properties (partly in leader) //--------------------------------------------------------------------------- [ // 0 terminates list type bit 8 length bit 8 ] manifest [ // FPROP types 0-177b are reserved for the system. fpropTypeDShape = 1 // contains a DSHAPE (in leader page of SysDir) fpropTypePartitionName = 2 // contains a STRING which is the name of this // partition (in leader page of SysDir) // FRPOP types 200b-277b are for users. // type 200b used by Bravo X // type 201b used by E. Schmidt ] //--------------------------------------------------------------------------- structure DSHAPE: // Shape of the disk (a property in leader of SysDir) //--------------------------------------------------------------------------- [ nDisks word // Number of disks nTracks word // Number of tracks nHeads word // Number of heads nSectors word // Number of sectors ] manifest lDSHAPE = size DSHAPE/16 // D I R E C T O R I E S //--------------------------------------------------------------------------- structure DV: // Directory entry value //--------------------------------------------------------------------------- [ type bit 6 length bit 10 fp @FP name @STRING ] manifest lDV = offset DV.name/16 //** note: length of header only manifest // DV types [ dvTypeFree = 0 dvTypeFile = 1 ]