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

⟦82efcf4a6⟧ TextFile

    Length: 17276 (0x437c)
    Types: TextFile
    Names: »FMSPARAMS.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!SWELL.D!FMSPARAMS.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!SWELL.D!FMSPARAMS.S« 

TextFile

"-----------------------------------------------------------------------
"
"
"  MODULE NAME:      FMS PARAMETERS (FMSPARAMS.S)
"  MODULE ID NMB:    CSS/877
"  MODULE VERSION:   0604
"  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: CR80
"  TARGET COMPUTER:  CR80
"  OPER. SYSTEM:     AMOS
"
"-----------------------------------------------------------------------
"
"  CHANGE RECORD
"
"  VERSION    AUTHOR/DATE    DESCRIPTION OF CHANGE
"  -------    -----------    ---------------------
"
"   0103      MAC/801121     INITIAL RELEASE
"                            THIS VERSION MAKES VS0101 & VS0102 OBSOLETE
"
"   0104      AEK/801212     COMMANDS ADDED FOR THE MAGTAPE_DRIVER
"                            COMMANDS ADDED FOR FILE SYSTEM (#90,100,129)
"
"                            ERROR_CODES ADDED FOR THE FILE_SYSTEM
"
"   0105      AEK/801219     TQM_CMD CHANGED TO FIRST_TQM_CMD
"                            FILE_CMD_ID ALSO CHANGED
"
"   0106      AEK/810211     COMMANDS ADDED FOR RESERVE AND RELEASE
"                            ERROR_CODES ADDED FOR THE FILE_SYSTEM

"   0107      AEK/810303     ERROR_CODES CHANGED FOR THE FILE SYSTEM
"
"   0108      AEK/810324     ERROR_CODES ADDED FOR THE MAGTAPE_DRIVER
"
"   0201      GMC/810402     FILE EXPANSION DELETED. THIS VERSION OF
"                            THIS PREFIX IS COMPATIBLE WITH VERSION 2
"                            OF THE FMS.
"
"   0202      MAC/810421     CLOSE_UP_CMD   INCLUDED.
"
"   0301      GMC/810521     INDIVIDUAL COMMAND PARAMETER DEFINITIONS
"                            INCLUDED. SOME OF THESE HAVE BEEN TAKEN
"                            OUT OF VOL_STRUCTURES.S
"
"   0401      GMC/820316     THE COMPLETION CODES BAD_SECTOR_DURING_FORMAT,
"                            BAD_SECTOR_IN_ASF, KIND_UNIT_CONFLICT AND
"                            KIND_CTRLR_CONFLICT ARE INTRODUCED, TO
"                            AGREE WITH FMS VS0402.
"                            THE TYPES DEVICE_KIND, UNIT_NBR AND
"                            SUBUNIT_NBR ARE INCLUDED.
"
"   0501      GMC/820709     THE COMMAND IDS START_DUALIZE_CMD,
"                            FINISH_DUALIZE_CMD AND DUALIZE_SECTORS_CMD
"                            AND THE COMPLETION CODES ILLEGAL_START_DUALIZE
"                            AND NOT_DUALIZING ARE INCLUDED AS IN FMS V0501.
"
"
"   0502      HS/830505      MTBREAK_CMD AND MTRESUME_CMD ADDED.
"                            ERROR CODES END_OF_VOLUME, FILE_NO_BREAKABLE
"                            AND ILLEGAL_RESUME_FILE ADDED.
"
"   0601      JAS/831020     THE MAGTAPE COMPLETION CODES MOVED TO
"                            ANOTHER MODULE ID.
"                            NEW FMS COMPLETION CODES (TO CONFORM
"                            WITH DAMOS).
"                            NEW FILE SYSTEM COMMANDS (TO CONFORM
"                            WITH DAMOS).
"                            TYPE USER_NAME CHANGED   (TO CONFORM
"                            WITH DAMOS).
"   0602      DAK/840104     NEW FMS COMPLETION CODE.
"   0603      DAK/840124     NEW FMS COMPLETION CODE.
"             DAK/840127     THE FORMAT OF DEVICE_INFORMATION HAS BEEN
"                            CHANGED.
"             DAK/840216     NEW FMS CMDS AND COMPLETION CODES.
"                            A NEW STATE WRITE_PROTECTED HAS BEEN ADDED
"                            TO DEV_STATE.
"                            NEW DISK TYPE, FMD675, KIND 30.
"   0604      JAS/840806     END_OF_VOLUME CC RESTORED AS A MAGTAPE CC.
"                            NEW VOLUME USE - PARTIAL DUALIZABLE VOL.
"                            DEVICE TABLE ENTRY TYPE ADDED.
"                            INCLUDE_DEVICE_KIND_CMD ADDED.
"                            NEW COMPLETION CODE.
"                            ACCESSRIGHT TYPE REMOVED.
"-----------------------------------------------------------------------
"PAGE«ff»
" NOTE: THIS PREFIX MAY NOT BE INCLUDED IN THE SAME SCOPE AS IOSPARAMS
" ====



"FILE MANAGER COMMAND IDENTIFICATIONS"
"------------------------------------"


CONST

  USER_ON_CMD                 =   2;
  CLOSE_UP_CMD                =   3;
  USER_OFF_CMD                =   4;
  START_DUALIZE_CMD           =   5;
  FINISH_DUALIZE_CMD          =   6;
  DUALIZE_SECTORS_CMD         =   7;
  ASSIGN_CMD                  =   8;
  ASSIGNDUAL_CMD              =   9;
  DEASSIGN_CMD                =  10;
  DISCARD_CMD                 =  11;
  RESERVE_CMD                 =  12;
  RELEASE_CMD                 =  13;
  MOUNT_CMD                   =  14;
  CHANGE_VOLUME_ID_CMD        =  15;
  DISMOUNT_CMD                =  16;
  UPDATE_CMD                  =  17;
  GET_ROOT_CMD                =  18;
  GET_DEVICE_INFORMATION_CMD  =  19;
  CHANGE_BOOT_ENTRY_CMD       =  20;
  UNMOUNT_CMD                 =  21;
  CREATE_CMD                  =  22;
  EXMOUNT_CMD                 =  23;
  DISMANTLE_CMD               =  24;
  INCLUDE_DEVICE_KIND_CMD     =  25;
  RESET_CMD                   =  26;
  SET_FILE_SIZE_CMD           =  27;
  OFFER_CMD                   =  28;
  ACCEPT_CMD                  =  30;
  PROTECT_CMD                 =  34;
  GET_FILE_INF_CMD            =  36;
  ENTER_CMD                   =  38;
  LOOKUP_CMD                  =  40;
  DESCENT_CMD                 =  42;
  RENAME_CMD                  =  44;
  REMOVE_CMD                  =  46;
  READ_BYTES_CMD              =  50;
  MODIFY_BYTES_CMD            =  52;
  APPEND_BYTES_CMD            =  54;
  READ_SECTORS_CMD            =  60;
  WRITE_SECTORS_CMD           =  62;
  WRITE_AND_PROTECT_CMD       =  64;
  WRITE_AND_MARK_CMD          =  66;
  FORMAT_CMD                  =  70;

  MTBREAK_CMD                 =  78;
  MTRESUME_CMD                =  79;
  MTINIT_CMD                  =  80;
  MTMOUNT_CMD                 =  81;
  MTDISMOUNT_CMD              =  82;
  MTCREATE_CMD                =  83;
  MTFINDFILE_CMD              =  84;
  REWIND_CMD                  =  85;
  MTSKIPFILES_CMD             =  86;
  MTSKIPRECS_CMD              =  88;

  FIRST_TQM_CMD               =  90;

  FIRST_CRAM_CMD              = 100;
  LAST_CRAM_CMD               = 129;

TYPE

  FM_CMD_ID = USER_ON_CMD..FIRST_TQM_CMD - 1;


"COMMON PARAMETERS
"-----------------

  USER_NAME = RECORD
                USER_GROUP : INTEGER;   "IDENTITY OF THE USER"
                SEQ_NBR    : INTEGER;   "IDENTITY OF USER'S PROCESS"
              END  "USER_NAME";

  BYTE_POSN = (LOW_BYTE, HIGH_BYTE);
  TWO_CHARS = ARRAY [BYTE_POSN] OF BYTE;

  CONST

    DEV_NAME_SIZE = 4;
    VOL_NAME_SIZE = 16;
    FILE_NAME_SIZE = 16;

  TYPE

    DEVICE_NAME = ARRAY [0..DEV_NAME_SIZE/2-1] OF TWO_CHARS;
    VOLUME_NAME = ARRAY [0..VOL_NAME_SIZE/2-1] OF TWO_CHARS;
    FILE_NAME = ARRAY [0..FILE_NAME_SIZE/2-1] OF TWO_CHARS;

    FILE_SYSTEM_NAME =
      RECORD
        PNAME:      PROCESS_NAME;
        GNAME:      GROUP_NAME;
      END;

  CONST
    NAMELISTMAXINDEX = 10;
  TYPE
    NAMELISTTYPE = ARRAY [0..FILE_NAME_SIZE*NAMELISTMAXINDEX-1] OF CHAR;


"INCLUDE DEVICE KIND PARAMS
"--------------------------

CONST
  FD_SINGLE=10; FD_DOUBLE=12;
  MMD12=20; MMD24=22; MMD81=24; MMD82=26; MMD160=28;
  FMD675=30;
  SMD40=40; SMD80=42; SMD150=44; SMD300=46; SMD600=48;
  CMD32=60; CMD64=62; CMD96=64;
  PRINTER=70;
  CARD_READER=72;
  MAGNETIC_TAPE=74;
  FLOPPY = FD_SINGLE;

TYPE
  DEVICE_KIND=FD_SINGLE..MAGNETIC_TAPE;

  CDC_TYPE = (MINI_MODULE, STORAGE_MODULE, CARTRIDGE_MODULE);

  UNIT_NBR = 0..3;
  SUBUNIT_NBR = 0..1;

  DRIVER_KIND = (FLOPPY_DRIVER,CDC_DRIVER,
                 PRINTER_DRIVER,CARD_READER_DRIVER,
                 MAGNETIC_TAPE_DRIVER);

  DEVICE_TABLE_ENTRY =
    RECORD
      DEV_KIND             : DEVICE_KIND;
      CDC                  : CDC_TYPE;
      DRIVER               : DRIVER_KIND;
      LAST_UNIT            : UNIT_NBR;     "LAST UNIT ALLOWED BY DRIVER"
      SECTOR_COUNT0        : LONG;         "SECTORS ON SUBUNIT 0"
      SECTORS_PR_CYLINDER0 : INTEGER;      "SECTORS/CYLINDER ON SUBUNIT 0"
      SECTOR_COUNT1        : LONG;
      SECTORS_PR_CYLINDER1 : INTEGER;
    END "DEVICE_TABLE_ENTRY";


"ASSIGN AND ASSIGNDUAL PARAMS
"----------------------------


TYPE
  NEW_LOGICAL_DEVICE =
    RECORD
      KIND     : DEVICE_KIND;
      CR80ADDR : INTEGER;           "DEVICE INTERRUPT VECTOR(ADDRESS)"
      UNIT     : UNIT_NBR;          "THE 3 MSB NIBBLES CONTAIN THE RAM ADDR"
      SUBUNIT  : SUBUNIT_NBR;
      DEVNAME  : DEVICE_NAME        "NAME OF DEVICE"
    END "NEW LOGICAL DEVICE";

  NEW_LOGICAL_DUAL_DEVICE =
    RECORD
      NLD        : NEW_LOGICAL_DEVICE;
      CR80ADDR_D : INTEGER;
      UNIT_D     : UNIT_NBR;        "THE 3 MSB NIBBLES CONTAIN THE RAM ADDR"
    END "NEW LOGICAL DUAL DEVICE";


"MOUNT PARAMETER
"---------------

   VOLUME_USE = ( SINGLE_VOL, DUAL_VOL, DUALIZABLE_VOL,
                  PARTIAL_DUALIZABLE_VOL );


"GET DEVICE INFORMATION RECORD:
"------------------------------

CONST

  "LAY-OUT OF USED_UNIT:

  SUB_UNIT_POSITION = 0;
  SUB_UNIT_WIDTH    = 1;
  UNIT_POSITION     = 1;
  UNIT_WIDTH        = 15;

TYPE

  DEV_STATE       = (UNUSED, ASSIGNED, RESERVED, MOUNTED, DISK_CHANGED,
                     WRITE_PROTECTED);
  VOL_STATE       = (AMOS_VOL, MOUNTED_SINGLE, MOUNTED_DUAL,
                     DISMOUNTED_SINGLE, DISMOUNTED_DUAL,
                     DUALIZING_VOL);
  BFDNBR          = LONG;
  DUAL_DISK_STATE = (DISK_OPENED, DISK_REDUALISING, DISK_DUALISING,
                     DISK_CLOSED, DISK_DISCARDED);

  LOGICAL_DEVICE_INFO = RECORD
    STATE: DEV_STATE;       "ASSIGNED, RESERVED OR MOUNTED
    RESERVER: INTEGER;      "USER ID - ONLY VALID IF RESERVED
    DEVNAME: DEVICE_NAME;   "LOG DEVICE NAME
    DUAL: BOOLEAN;          "DUAL DISK OR NOT
    SECTORCOUNT: LONG;      "NUMBER OF SECTORS ON VOLUME
    NBR_ERRORS: INTEGER;    "NUMBER OF NON_REPORTED ERRORS
                            "HAVE OCCURED ON THIS DEVICE
  END;


  CTRL_INFO = RECORD
    IOADDR : INTEGER;
    RAMADDR: INTEGER;
  END;


  PHYSICAL_DEVICE_INFO = RECORD
    KIND           : DEVICE_KIND;
    USED_UNIT      : INTEGER;     "BIT 0     : SUB_UNIT
                                  "BIT 1 - 15: UNIT
    CONTROLLER_INFO: CTRL_INFO;
    STATUS         : DUAL_DISK_STATE;
  END;


  TIME = ARRAY [0..2] OF INTEGER;


  VOLUME_INFO = RECORD
    VOLNAME: VOLUME_NAME;   "NAME ASSIGNED TO VOLUME
    FREE_ENTRIES: LONG;     "NUMBER OF FREE ENTRIES IN BFD
    BOOT_ENTRY: BFDNBR;     "BFD NUMBER
    CREATION_DATE: TIME;
    ACCESS_DATE: TIME;
    FORMAT: INTEGER;        "IDENTIFICATION OF FORMAT OF VOLUME
    STATE: VOL_STATE;
  END;


  DEVICE_INFORMATION = RECORD
    LOG_DEV_INFO: LOGICAL_DEVICE_INFO;
    PHYS_DEV_INFO: ARRAY [0..1] OF PHYSICAL_DEVICE_INFO;
    VOL_INFO: VOLUME_INFO;      "ONLY VALID IF VOLUME MOUNTED
    FILLER: ARRAY [38..39] OF INTEGER;
  END;


"PROTECT PARAMS
"--------------

CONST

  "SPECIAL USERS
  SYSTEMUSER=#FFFF;  "-1
  FILESYSTEMUSERID=#FFFE;  "-2
  NOUSER=#FFFD;  "-3
  PUBLICUSER=#FFFC;  "-4

  "ACCESS TYPES
  AREADBYTES=0;
  AMODIFYBYTES=1;
  AAPPENDBYTES=2;
  AENTER=5;
  ALOOKUP=6;
  ARENAME=7;
  AREMOVE=8;
  ARESET=10;
  AGETFILEINFORMATION=11;
  APROTECT=12;
  AOFFER=14;
TYPE
  ACCESSTYPE=AREADBYTES..AOFFER;
  ACCESS_TYPES=
  RECORD
    ACCESS1,ACCESS2:INTEGER  "ARRAY [ACCESSTYPE] OF BITS
  END "ACCESS_TYPES";

  PROTECT_PARAMS =
    RECORD
      SUBJECT : USER_NAME;
      ACCESS  : ACCESS_TYPES
    END;


"CREATE PARAMS
"-------------

CONST
  DIRECTORY  =10;
  CONTIGUOUS =12;
  RANDOM     =14;
TYPE
  FILE_ORGANIZATION=DIRECTORY..RANDOM;

  NEW_ATTRIBUTES =
  RECORD
    VOLUME          : VOLUME_NAME;
    ORGANIZATION    : FILE_ORGANIZATION;
    ALLOCATION_SIZE : LONG;            "NUMBER OF SECTORS ALLOCATED TO
                                       "THE FILE, IF IT IS CONTIGUOUS
    AREA_SIZE       : INTEGER;         "NUMBER OF SECTORS PER AREA, IF
                                       "THE FILE IS RANDOM OR DIRECTORY
  END "NEW ATTRIBUTES";


"GET FILE INFORMATION PARAMS
"---------------------------

  FILE_INFORMATION_TYPE =
       (F_ORGANIZATION,
        F_BYTESIZE,
        F_ALLOCATIONSIZE,   "IF CONT FILE THEN SECTORS ELSE AREAS
        F_BODYADDRESS,      "LOGICAL SECTOR NUMBER OF INDEX OR BODY
        F_AREASIZE,         "SECTORS
        F_THRESHOLD,        "NOT USED
        F_LINKS,            "FROM DIRECTORIES
        F_IN_BFD,           "BOOLEAN
        F_BFD_NUMBER,       "BFD ENTRY NUMBER
        F_NBR_OF_USERS);    "NBR OF USERS OF FILE


"FORMAT OF COMMANDS
"------------------

  FILE_CMD = RECORD
                CMD_ID     : FM_CMD_ID;
                CALLER     : USER_NAME;
                FILE_1     : INTEGER;
                FILE_2     : INTEGER;
                FIRST_BYTE : LONG;
                BYTE_COUNT : LONG;
             END;

  SECT_CMD = RECORD
                CMD_ID     : FM_CMD_ID;
                CALLER     : USER_NAME;
                DEV_NAME   : DEVICE_NAME;
                FIRST_SECT : LONG;
                SECT_COUNT : LONG;
             END;


  REPLY = RECORD
            RESULT  : INTEGER;   "COMPLETION CODE"
            RESULT_PAR : LONG;  "COMMAND DEPENDANT RESULT PARAMETER"
          END  "REPLY";


"FMS COMPLETION CODES
"--------------------

CONST

     NONEXISTING_DEVICE       = #400;   ILLEGAL_DEVICE_KIND      = #401;
     ILLEGAL_CR80_ADDR        = #402;   DEVICE_NAME_IN_USE       = #403;
     ILLEGAL_UNIT             = #404;   ILLEGAL_SUBUNIT          = #405;
     WRONG_VOLUME_NAME        = #406;   NONEXISTING_VOLUME       = #407;
     VOLUME_MOUNTED           = #408;   DIFFERENT_VOLUMES        = #409;
     ILLEGAL_FILE             = #40A;   ILLEGAL_ORGANIZATION     = #40B;
     ILLEGAL_ALLOC_SIZE       = #40C;   ILLEGAL_AREA_SIZE        = #40D;
     ILLEGAL_WRITE            = #40E;   FILE_CLOSED              = #40F;
     FILES_OPEN               = #410;   NO_FILE_TO_ACCEPT        = #411;
     NONEXISTING_USER         = #412;   USER_ALREADY_ACTIVE      = #413;
     NO_CONNECTION            = #414;   ILLEGAL_USERGROUP        = #415;
     ILLEGAL_CALLER           = #416;   OTHER_USERS              = #417;
     NOT_CONTIGUOUS_DUALIZE   = #418;   OUT_OF_RANGE             = #419;
                                        FILE_FULL                = #41B;
     ACL_FULL                 = #41C;   PROTECTION_FAILURE       = #41D;

     ILLEGAL_DIRECTORY        = #420;   NAME_EXISTS              = #421;
     NONEXISTING_NAME         = #422;   NOT_ALLOCATABLE          = #423;
                                        KIND_UNIT_CONFLICT       = #425;
     KIND_CTRLR_CONFLICT      = #426;
     ILLEGAL_FILE_INF_TYPE    = #428;   NOT_A_DUAL_DISK          = #429;
     ILLEGAL_DISCARD          = #42A;
     UNKNOWN_COMMAND          = #42C;   BAD_SECTOR_DURING_FORMAT = #42D;
                                        UNIT_IS_IN_USE           = #42F;
     VOLUME_NAME_IS_IN_USE    = #430;   DEVICE_NOT_RESERVED      = #431;
     DEVICE_ALREADY_RESERVED  = #432;   DEVICE_NOT_SINGLE        = #433;
     DEVICE_NOT_DUAL          = #434;   ILLEGAL_DCB_INDEX        = #435;
     UNKNOWN_VOLUME_USE       = #436;   ILLEGAL_FINISH_DUALIZE   = #437;
                                        ILLEGAL_START_DUALIZE    = #43B;
     NOT_DUALIZING            = #43C;   DUALIZINGWITHOUTMOUNT    = #43D;
                                        BAD_SECTOR_READ          = #441;
     CORRUPT_HOMEBLOCK        = #442;   BAD_SECTOR_IN_ASF        = #443;
     BST_FULL                 = #444;
     BAD_SECTOR_REPLACED      = #448;   LAST_BAD_SECTOR_REPLACED = #449;
     DIFFERENT_VOLUME_NAMES   = #44A;   DIFFERENT_ACCESS_DATES   = #44B;
     NOT_ASSIGNED_DUAL        = #44C;   NOT_DISMOUNTED_DUAL      = #44D;
     NOT_MOUNTED_DUAL         = #44E;   SECTOR_COUNT_CONFLICT    = #44F;
     BST_SIZE_TOO_BIG         = #450;   NOT_EMPTY_DIRECTORY      = #451;
     NO_DISK_CHANGE           = #452;   NO_SPARE_DEVICE_KINDS    = #453;

                                        DRIVE_NOT_READY          = #481;
     WRITE_PROTECTED_DEVICE   = #482;   UNEXPEC_DISK_I_F_STATUS  = #483;
     DATA_OR_SYNC_ERROR       = #484;   ADDRESS_OR_SYNC_ERROR    = #485;
     BAD_SECTOR               = #486;   WRITE_PROTECTED_SECTOR   = #487;
     ILLEGAL_SECTOR           = #488;   TIMING_ERROR             = #489;
     SUBBUS_OVERRUN           = #48A;   PARITY_ERROR             = #48B;
     SELFTEST_RUNNING         = #48C;   CONTROLLER_RESET         = #48D;
     SELFTEST_FAILED          = #48E;   CONTROLLER_FAILURE       = #48F;

     TAPE_DEVICE_FAILURE      = #B00;   TAPE_SOFT_FAILURE        = #B01;
                                        TAPE_NOT_INITIATED       = #B03;
     TAPE_WRITE_PROTECTED     = #B04;   BEGINNING_OF_TAPE_SENSED = #B05;
     END_OF_TAPE_SENSED       = #B06;   LOGICAL_EOT_SENSED       = #B07;
     FILE_MARK_SENSED         = #B08;   INVALID_RECORD_LENGTH    = #B09;
     SHORT_DATA_RECORD        = #B0A;   LONG_DATA_RECORD         = #B0B;
     TAPE_MUST_BE_LABELED     = #B0C;
     FILE_MUST_BE_OPEN_FOR_INPUT        = #B0D;
     FILE_NOT_BREAKABLE       = #B0E;   ILLEGAL_RESUME_TAPE      = #B0F;
     END_OF_VOLUME            = #B10;


"END OF FMSPARAMS