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: 6588 (0x19bc) Types: TextFile Names: »FMSDATA.S«
└─⟦e0c43619c⟧ Bits:30005797 CR80 Disc pack ( Vol:FNJ1 861029/EC CR80 S/W Package II+III+IV+V+VII ) └─ ⟦this⟧ »CSP005_V0501.D!CSS933.D!FMSDATA.S«
"---------------------------------------------------------------------- PROJECT: AMOS UTILITIES MODULE NAME: PASCAL FMS DATA PREFIX MODULE ID NMB: CSS/933 MODULE VERSION: 0301 MODULE TYPE: PASCAL PREFIX SPECIFICATIONS: - AUTHOR/DATE: - DELIVERABLE: YES SOURCE LANGUAGE: CR80 PASCAL COMPILE COMPUTER: CR80 TARGET COMPUTER: CR80 OPER. SYSTEM: AMOS/XAMOS ----------------------------------------------------------------------- CHANGE RECORD: VERSION AUTHOR/DATE DESCRIPTION OF CHANGE ------- ----------- --------------------- 0101 NMJ/800916 Initial release. 0201 GMC/820222 Change to the format of BFD entry and HB, to conform with AMOS FMS Vs 0402, and the DAMOS FMS. 0202 GMC/820819 The access rights to purge a file, and change its security profile are defined. The initial access rights of the creator are thus also redefined. 0203 MAC/821119 Two new fields of five words are introduced to the Home Block. These are namely ; CHANGE_BY_SALV : DATE; BOOT_ENTRY : LONG_INTEGER; 0301 SMA/831104 In connection with expansion of max_bad_sectors to 100 the lay_out of the homeblock is changed: - The BST_SIZE is renamed to BST_SIZE1. - A new field BST_SIZE2 is added. - The size of the BST is expanded to 100. The field CHANGE_BY_SALV is removed. ----------------------------------------------------------------------" TYPE ENTRYSTATE= (FREE,USED); CONST DIRECTORY= 10; CONTIGUOUS= 12; RANDOM= 14; TYPE FILE_ORGANIZATION= DIRECTORY..RANDOM; CONST HBADDR= 0L; NBROFENTRIESINBFD= 4; "SYSTEM ENTRIES IN BFD" BFDENTRYNBR= 0; MDENTRYNBR= 1; BMENTRYNBR= 2; ASFENTRYNBR= 3; BFDNAME= 'BFD(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)'; MDNAME = 'MD(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)'; BMNAME = 'BM(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)'; ASFNAME= 'ASF(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)(:0:)'; CONST STANDARDNAMESIZE= 8; TYPE USER_IDENT= INTEGER; CONST PAGESIZE= 512; "IN BYTES" BITSPRPAGE= 4096; "BITS IN A PAGE" TYPE PAGEINDEX= 0..255; PAGE= ARRAY[PAGEINDEX] OF INTEGER; CONST MAX_BST_SIZE = 100; MAX_BST_INDEX = 99; TYPE BAD_SECTOR_TABLE = ARRAY [0..MAX_BST_INDEX] OF LONG_INTEGER; DATE = ARRAY [0..2] OF INTEGER; VOL_STATE = (AMOS_VOL, MOUNTED_SINGLE, MOUNTED_DUAL, DISMOUNTED_SINGLE, DISMOUNTED_DUAL); TYPE HOMEBLOCK= RECORD VOLNAME :VOLUME_NAME; "NAME ASSIGNED TO VOLUME" BFDADDR :LONG_INTEGER; "ADDRESS OF DESCRIPTION OF BFD" FREE_ENTRIES :LONG_INTEGER; "NUMBER OF FREE ENTRIES IN BFD" FIRST_FREE :LONG_INTEGER; "ADDRESS OF FIRST FREE ENTRY IN BFD" SECTORS :LONG_INTEGER; "NUMBER OF SECTORS ON VOLUME" BST_SIZE1 :0..16; "ACTUAL SIZE OF BST FOR OLD FMS" ASF_ADDR :LONG_INTEGER; "ADDRESS OF ASF" BST :BAD_SECTOR_TABLE; BST_SIZE2 :0..MAX_BST_SIZE; "SIZE OF BST FOR CURRENT FMS" NOTUSED :ARRAY[220..245] OF INTEGER; BOOT_ENTRY :LONG_INTEGER; CREATION_DATE :DATE; ACCESS_DATE :DATE; FORMAT :INTEGER; "IDENTIFIACTION OF LAYOUT OF VOL" STATE :VOL_STATE END; INDEXPAGEINDEX= 0..125; INDEXPAGE= ARRAY[INDEXPAGEINDEX] OF LONG_INTEGER; INDEXSECTOR= RECORD BACK_PTR :LONG_INTEGER; "ADDRESS ON PREVIOUS INDEX BLOCK" INDEX :INDEXPAGE; "INDEX INFORMATION" FORWARD_PTR :LONG_INTEGER "ADDRESS ON NEXT INDEX BLOCK" END; TYPE SFDENTRY= RECORD STATE :ENTRYSTATE; "STATE (FREE/USED) OF ENTRY" NAME :FILE_NAME; "NAME OF FILE" BFDNBR :LONG_INTEGER; "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[SFDPAGEINDEX] OF SFDENTRY; "************* * PROTECTION * *************" CONST SYSTEMUSER= #FFFF; FILESYSTEMUSERID= #FFFE; NOUSER= #FFFD; PUBLICUSER= #FFFC; CONST AREADBYTES= 0; AMODIFYBYTES= 1; AAPPENDBYTES= 2; AENTER= 5; ALOOKUP= 6; ARENAME= 7; AREMOVE= 8; ARESET= 10; AGETFILEINFORMATION= 11; APROTECT= 12; APURGEFILE= 13; AOFFER= 14; ACHANGESECURITYPROFILE= 15; ACREATOR1= #FC07; ACREATOR2= 0; APUBLIC1= #4801; APUBLIC2= 0; ADIRECTORY1= #D9E1; ADIRECTORY2= 0; APUBLICDIRECTORY1= #4841; APUBLICDIRECTORY2= 0; TYPE ACCESSTYPE= AREADBYTES..ACHANGESECURITYPROFILE; TYPE ACCESSTYPES= RECORD ACCESS1, ACCESS2: INTEGER END; ACCESSRIGHTS= RECORD USER :USER_IDENT; ACCESS :ACCESSTYPES END; "ACCESSRIGHTS" CONST PUBLICINDEX= 0; LASTACCESSRIGHT= 73; TYPE ACCESSCONTROLINDEX= 0..LASTACCESSRIGHT; ACCESSCONTROLLIST= ARRAY[ACCESSCONTROLINDEX] OF ACCESSRIGHTS; "*********************** * BASIC FILE DIRECTORY * ***********************" BFDENTRY= RECORD "ADMINISTRATIVE DATA:" STATE :ENTRYSTATE; "STATE (FREE/USED) OF ENTRY" NEXT_FREE :LONG_INTEGER; "LINK TO NEXT FREE ENTRY IN BFD" "PHYSICAL LAYOUT OF FILE:" ORGANIZATION :FILE_ORGANIZATION; SIZE :LONG_INTEGER; "SIZE OF FILE IN BYTES" ALLOCSIZE :LONG_INTEGER; "NUMBER OF SECTORS ALLOCATED" AREASIZE :INTEGER; "SIZE OF AN ALLOCATION AREA" BODYADDR :LONG_INTEGER; "ADDRESS OF INDEX OR FIRST BLOCK" "PROTECTION:" ACL :ACCESSCONTROLLIST; UN_USED :ARRAY [233..238] OF INTEGER; "USAGE:" LINKS :INTEGER; "NUMBER OF SFD REFERENCES TO FILE" "DATES:" CREATION_DATE :DATE; ACCESS_DATE :DATE; CHANGE_DATE :DATE; "DAMOS FIELDS:" SEC_PROF :INTEGER; "SECURITY PROFILE, USED IN DAMOS" "REST OF ENTRY:" NOT_USED:ARRAY[250..255] OF INTEGER END "BFDENTRY"; "PAGE"«ff»