DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦0ebceaa39⟧ TextFile

    Length: 6894 (0x1aee)
    Types: TextFile
    Names: »VOL_STRUCTURES.S«

Derivation

└─⟦e0c43619c⟧ Bits:30005797 CR80 Disc pack ( Vol:FNJ1 861029/EC CR80 S/W Package II+III+IV+V+VII )
    └─ ⟦this⟧ »CSP005_V0501.D!CSS882.D!VOL_STRUCTURES.S« 

TextFile

"-----------------------------------------------------------------------
"
"
"  MODULE NAME:      VOLUME STRUCTURES  (VOL_STRUCTURES.S)
"  MODULE ID NMB:    CSS/882
"  MODULE VERSION:   0603
"  MODULE TYPE:      PREFIX
"  MERGE  FILES:     -
"
"  SPECIFICATIONS:   CR80 AMOS, FMS, File Manager, PSP, CSS/920/PSP/0048
"  AUTHOR/DATE:      DAK/840103
"
"  DELIVERABLE:      -
"  SOURCE LANGUAGE:  SWELL
"  COMPILE COMPUTER: CR80S
"  TARGET COMPUTER:  CR80S
"  OPER. SYSTEM:     AMOS
"
"-----------------------------------------------------------------------
"
"  CHANGE RECORD
"
"  VERSION    AUTHOR/DATE    DESCRIPTION OF CHANGE
"  -------    -----------    ---------------------
"
"     1.1     MAC/801121      INITIAL RELEASE
"     2.1     GMC/810402      FILE EXPANSION DELETED. COMPATIBLE WITH
"                             VERSION 2 OF THE FMS (CSS/920).
"     3.1     GMC/810521      DEFINITIONM OF PROTECTION PARAMETERS,
"                             GET FILE INFORMATION PARAMETERS
"                             AND FILE_NAME REMOVED, AS THEY ARE NOW
"                             PRESENT IN FMSPARAMS.
"     4.1     GMC/820216      Definition of DATE, HOMEBLOCK and
"                             BFDENTRY changed, to be same as in DAMOS.
"                             The bad sector table now has a variable
"                             size, defined by the filed BST_SIZE in
"                             the HB. The max size is 16.
"     5.1     PHF/830913      Definition of BOOT_ENTRY in HOMEBLOCK
"     6.1     DAK/840104      MAX_BAD_SECTORS is expanded to 100.
"                             The old HB field BST_SIZE is split in two
"                             fields - BST_SIZE1 and BST_SIZE2.
"                             BST_SIZE1 is used by FM versions older than
"                             V0601 only capable of substituting up to 16
"                             bad sectors.
"                             BST_SIZE2 is used by FMS version V0601 and
"                             on.
"     6.2     DAK/840124      The field ENTER_COUNT has been added to
"                             BFDENTRY.  The field is only valid for
"                             directory BFD's.  The field contains
"                             number of files entered in directory.
"                             The field ORGANIZATION has been added to
"                             SFDENTRY.
"     6.3     JAS/840807      The type ACCESSRIGHT added
"                             (from FMSPARAMS.S).
"
"-----------------------------------------------------------------------
"PAGE«ff»


" NOTE: THE PREFIX FMSPARAMS.S OR IOSPARAMS.S
"       SHOULD BE INCLUDED BEFORE THIS PREFIX.



"*************************"
"  INITIAL VOLUME LAYOUT  "
"*************************"


CONST

  "SECTOR ADDRESSES:"
  HBADDR_LEAST=0;   "HOME BLOCK."
  HBADDR_MOST =0;

  "INITIAL ENTRIES IN THE BFD:"
  BFDENTRYNBR_LEAST=0;
  BFDENTRYNBR_MOST =0;
  MDENTRYNBR_LEAST =1;
  MDENTRYNBR_MOST  =0;
  BMENTRYNBR_LEAST =2;
  BMENTRYNBR_MOST  =0;
  ASFENTRYNBR_LEAST=3;
  ASFENTRYNBR_MOST =0;

  OLD_MAX_BAD_SECTORS = 16;
  MAX_BAD_SECTORS     = 100;

TYPE
  BAD_SECTOR_TABLE = ARRAY[0..MAX_BAD_SECTORS-1] OF LONG;
  DATE = ARRAY [0..2] OF INTEGER;

  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
    BST_SIZE1       : INTEGER;      "BST_SIZE USED BY OLD FMS VERSION
                                    "IF 0 THEN THERE IS NO ASF
    ASF_ADDR        : LONG;         "BODY ADDRESS OF ASF
    BST             : BAD_SECTOR_TABLE;
    BST_SIZE2       : INTEGER;       "BST_SIZE USED BY CURRENT VERSION OF FMS
                                     "IF 0 THEN THERE IS NO ASF
    NOTUSED         : ARRAY[220..245] OF INTEGER;
    BOOT_ENTRY      : LONG;         "USED IN DAMOS AND MX
    CREATION_DATE   : DATE;
    ACCESS_DATE     : DATE;
    FORMAT          : INTEGER;  "IDENTIFICATION OF FORMAT OF VOLUME
    STATE           : VOL_STATE;
  END "HOMEBLOCK";



"**************"
"  PROTECTION  "
"**************"


CONST

  "INITIAL ACCESS RIGHTS
  ACREATOR1=#5C07;
  ACREATOR2=0;
  APUBLIC1=#4801;
  APUBLIC2=0;
  ADIRECTORY1=#59E1;
  ADIRECTORY2=0;
  APUBLICDIRECTORY1=#4841;
  APUBLICDIRECTORY2=0;

CONST
  PUBLICINDEX=0;
  LASTACCESSRIGHT=73;

TYPE
  ACCESSRIGHT=
  RECORD
    USER           :INTEGER;           "IDENTITY OF USER"
    ACCESS         :ACCESS_TYPES       "PERMISSIBLE ACCESS FOR USER"
  END "ACCESSRIGHT";

  ACL_INDEX = 0..LASTACCESSRIGHT;
  ACCESSCONTROLLIST = ARRAY [ACL_INDEX] OF ACCESSRIGHT;



"************************"
"  BASIC FILE DIRECTORY  "
"************************"


  ENTRY_STATE = (ENTRY_FREE,ENTRY_USED);


  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;

    UN_USED        :ARRAY [233..237] OF INTEGER;

    "USAGE:
    ENTER_COUNT    :INTEGER;     "NUMBER OF FILES ENTERED IN SFD
    LINKS          :INTEGER;     "NUMBER OF SFD REFERENCES TO FILE

    "PERTINENT DATES:
    CREATION_DATE  :DATE;
    ACCESS_DATE    :DATE;
    CHANGE_DATE    :DATE;

    SEC_PROF       :INTEGER;  "USED IN DAMOS

    "REST OF ENTRY:
    NOT_USED       :ARRAY [250..255] OF INTEGER;

  END "BFDENTRY";



"***************************"
"  SYMBOLIC FILE DIRECTORY  "
"***************************"


  SFDENTRY=
  RECORD
    STATE          :ENTRY_STATE;        "STATE (FREE/USED) OF ENTRY"
    NAME           :FILE_NAME;         "NAME OF FILE"
    BFDNBR         :LONG;              "INDEX OF FILE IN BFD"
    ORGANIZATION   : FILE_ORGANIZATION;"DIRECTORY/CONTIGUOUS/RANDOM
    NOTUSED : ARRAY[12..15] OF INTEGER
  END "SFDENTRY";

CONST
  SFDPAGESIZE      =16;                "NUMBER OF SFD ENTRIES IN A PAGE"
TYPE
  SFDPAGEINDEX=1..SFDPAGESIZE;
  SFDPAGE = ARRAY [SFDPAGEINDEX] OF SFDENTRY;



"***************"
" INDEX SECTORS "
"***************"


CONST
  FIRST_INDEX = 0;
  LAST_INDEX = 125;

TYPE
  INDEXES = ARRAY [FIRST_INDEX..LAST_INDEX] OF LONG;
  INDEXSECTOR=
  RECORD
    BACK_PTR       :LONG;     "ADDRESS OF PREVIOUS INDEX BLOCK"
    INDEX          :INDEXES;  "INDEX INFORMATION
    FORWARD_PTR    :LONG;     "ADDRESS OF NEXT INDEX BLOCK"
  END "INDEXSECTOR";
 «a5»