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

⟦f82c9e9cb⟧ TextFile

    Length: 6586 (0x19ba)
    Types: TextFile
    Names: »FMSDATA.S«

Derivation

└─⟦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« 

TextFile

"----------------------------------------------------------------------

  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