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