|
|
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 - metrics - 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»