|
|
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: 6586 (0x19ba)
Types: TextFile
Names: »FMSDATA.S«
└─⟦8c095a7f3⟧ Bits:30005798 CR80 Disc Pack ( Vol ILS systemdisk XAMOS TOS 10:01 hard boot #43c 19-7-87/JFJ )
└─⟦this⟧ »PREFIXES.D!XAMOS.D!PASCAL.D!FMSDATA.S«
└─⟦c2e810e96⟧ Bits:30005799 CR80 Disc Pack ( XAMOS 841129 ILS TOS 10-01 System Disk Tilhører ILS/MSG hard boot boot entry #43c )
└─⟦this⟧ »PREFIXES.D!XAMOS.D!PASCAL.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