DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 6148 (0x1804) Types: TextFile Names: »VOL_STRUCTURES.S«
└─⟦b8af24a88⟧ Bits:30005796 CR80 Disc Pack ( MINICAMPS ) └─ ⟦this⟧ »GENS.D!SWELLPREFIX.D!VOL_STRUCTURES.S«
"----------------------------------------------------------------------- " " " MODULE NAME: VOLUME STRUCTURES (VOL_STRUCTURES.S) " MODULE ID NMB: CSS/882 " MODULE VERSION: 0101 " MODULE TYPE: PREFIX " MERGE FILES: - " " SPECIFICATIONS: - " AUTHOR/DATE: MAC/801120 " " DELIVERABLE: - " SOURCE LANGUAGE: SWELL " COMPILE COMPUTER: CR80 " TARGET COMPUTER: CR80 " OPER. SYSTEM: AMOS " "----------------------------------------------------------------------- " " CHANGE RECORD " " VERSION AUTHOR/DATE DESCRIPTION OF CHANGE " ------- ----------- --------------------- " " 1.1 MAC/801121 INITIAL RELEASE " "----------------------------------------------------------------------- "PAGE«ff» " NOTE: THE PREFIX FMSPARAMS.S SHOULD BE INCLUDED BEFORE THIS PREFIX." " ==== THIS PREFIX CANNOT BE USED IF THE PREFIX IOSPARAMS.S IS INCLUDED." "*************************" " INITIAL VOLUME LAYOUT " "*************************" CONST "SECTOR ADDRESSES:" HBADDR_LEAST=0; "HOME BLOCK." HBADDR_MOST =0; MAX_BAD_SECTORS = 8; "INITIAL ENTRIES IN THE BFD:" BFDENTRYNBR_LEAST=0; BFDENTRYNBR_MOST =0; MDENTRYNBR_LEAST =1; MDENTRYNBR_MOST =0; BMENTRYNBR_LEAST =2; BMENTRYNBR_MOST =0; SYSTEMFILECOUNT =3; TYPE SPECIAL_ENTRY_NBRS = ( BFD_ENTRY_NBR, MD_ENTRY_NBR, BM_ENTRY_NBR); BAD_SECTOR_TABLE = ARRAY[0..MAX_BAD_SECTORS-1] OF LONG; HOMEBLOCK= RECORD VOLNAME : VOLUME_NAME; "NAME ASSIGNED TO VOLUME" BFDADDR : LONG; "ADDRESS OF DESCRIPTION OF BFD" FREE_ENTRIES : LONG; "NUMBER OF FREE ENTRIES IN BFD" FIRST_FREE : LONG; "ADDRESS OF FIRST FREE ENTRY IN BFD" SECTORS : LONG; "NUMBER OF SECTORS ON VOLUME" VOL_THRESHOLD : LONG; "NUMBER OF SECTORS WHICH MAY BE ALLOCATED" SECTORS_ALLOCATED : LONG; "NUMBER OF SECTORS WHICH HAVE BEEN ALLOCATED" ASF_PRESENT : BOOLEAN; "IF FALSE THEN DISKDRIVERFAILURE" ASF_ADDR : LONG; "BODY ADDRESS OF ASF" BST : BAD_SECTOR_TABLE; CREATION_DATE : LONG; ACCESS_DATE : LONG; EXPIRATION_DATE : LONG; NOTUSED : ARRAY[47..255] OF INTEGER; END "HOMEBLOCK"; "**************" " PROTECTION " "**************" CONST SYSTEMUSER=#FFFF; "-1" FILESYSTEMUSERID=#FFFE; "-2" NOUSER=#FFFD; "-3" PUBLICUSER=#FFFC; "-4" CONST AREADBYTES=0; AMODIFYBYTES=1; AAPPENDBYTES=2; AENTER=5; ALOOKUP=6; ARENAME=7; AREMOVE=8; ARESET=10; AGETFILEINFORMATION=11; APROTECT=12; A_SET_FILE_THRESHOLD=13; AOFFER=14; AGETVOLINFORMATION=15; ACREATOR1=#7C07; ACREATOR2=0; APUBLIC1=#4801; APUBLIC2=0; ADIRECTORY1=#79E1; ADIRECTORY2=0; APUBLICDIRECTORY1=#4841; APUBLICDIRECTORY2=0; TYPE ACCESSTYPE=AREADBYTES..AOFFER; ACCESS_TYPES= RECORD ACCESS1,ACCESS2:INTEGER END "ACCESS_TYPES"; ACCESSTYPES=ACCESS_TYPES; USER_IDENT = INTEGER; ACCESSRIGHT= RECORD USER :USER_IDENT; "IDENTITY OF USER" ACCESS :ACCESS_TYPES "PERMISSIBLE ACCESS FOR USER" END "ACCESSRIGHT"; CONST PUBLICINDEX=0; LASTACCESSRIGHT=73; TYPE ACCESSCONTROLLISTINDEX=0..LASTACCESSRIGHT; ACCESSCONTROLLIST=ARRAY[0..(LASTACCESSRIGHT + 1) * SIZE(ACCESSRIGHT) -1] OF INTEGER; "************************" " BASIC FILE DIRECTORY " "************************" DATE = LONG; ENTRY_STATE = (ENTRY_FREE,ENTRY_USED); CONST DIRECTORY =10; CONTIGUOUS =12; RANDOM =14; MAX_FILE_THRESHOLD_LEAST = #FFFF; MAX_FILE_THRESHOLD_MOST = #7FFF; TYPE FILE_ORGANIZATION=DIRECTORY..RANDOM; FILEORGANIZATION=FILE_ORGANIZATION; BFDENTRY= RECORD "ADMINISTRATIVE DATA:" STATE :ENTRY_STATE; "STATE (FREE/USED) OF ENTRY" NEXT_FREE :LONG; "LINK TO NEXT FREE ENTRY IN BFD" "PHYSICAL LAYOUT OF FILE:" ORGANIZATION :FILE_ORGANIZATION; SIZE_BYTE :LONG; "SIZE OF FILE IN BYTES" ALLOCSIZE :LONG; "NUMBER OF AREAS ALLOCATED TO FILE" AREASIZE :INTEGER; "SIZE OF AN ALLOCATION AREA IN SECTORS" BODYADDR :LONG; "ADDRESS OF INDEX OR FIRST BLOCK IN FILE" "PROTECTION:" ACL :ACCESSCONTROLLIST; "PERTINENT DATES:" CREATIONDATE :DATE; ACCESSDATE :DATE; EXPIRATIONDATE :DATE; "USAGE:" LINKS :INTEGER; "NUMBER OF SFD REFERENCES TO FILE" "THRESHOLD" FILE_THRESHOLD :LONG; "MAX NUMBER OF BYTES THAT MAY BE ALLOCATED TO THIS FILE" "REST OF ENTRY:" NOT_USED:ARRAY[242..255] OF INTEGER END "BFDENTRY"; "***************************" " SYMBOLIC FILE DIRECTORY " "***************************" FILE_NAME = ARRAY[0..7] OF INTEGER; SFDENTRY= RECORD STATE :ENTRY_STATE; "STATE (FREE/USED) OF ENTRY" NAME :FILE_NAME; "NAME OF FILE" BFDNBR :LONG; "INDEX OF FILE IN BFD" NOTUSED:ARRAY[1..5] OF INTEGER END "SFDENTRY"; CONST SFDPAGESIZE =16; "NUMBER OF SFD ENTRIES IN A PAGE" TYPE SFDPAGEINDEX=1..SFDPAGESIZE; SFDPAGE=ARRAY[1..SFDPAGESIZE * SIZE(SFDENTRY)] OF INTEGER; CONST INDEXPAGESIZE =126; "NUMBER OF ENTRIES IN AN INDEX BLOCK" AREAS_PER_INDEX = 126; AREAS_PER_INDEX_LEAST = 126; AREAS_PER_INDEX_MOST = 0; INDEX_SIZE_LEAST = 1; "NUMBER OF SECTORS USED BY AN INDEX" INDEX_SIZE_MOST = 0; TYPE INDEXPAGEINDEX=0..125; INDEXPAGE=ARRAY[INDEXPAGEINDEX] OF LONG; INDEXSECTOR= RECORD BACK_PTR :LONG; "ADDRESS OF PREVIOUS INDEX BLOCK" INDEX :INDEXPAGE; "INDEX INFORMATION" FORWARD_PTR :LONG; "ADDRESS OF NEXT INDEX BLOCK" END "INDEXSECTOR"; INDEX_NUMBER = INTEGER; "NUMBER OF AN INDEX WITHIN A CHAIN OF INDICES" «a5»