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 - download
Length: 18182 (0x4706) Types: TextFile Names: »FMSPARAMS.S«
└─⟦e0c43619c⟧ Bits:30005797 CR80 Disc pack ( Vol:FNJ1 861029/EC CR80 S/W Package II+III+IV+V+VII ) └─ ⟦this⟧ »CSP005_V0501.D!CSS877.D!FMSPARAMS.S«
"----------------------------------------------------------------------- " " " MODULE NAME: FMS PARAMETERS (FMSPARAMS.S) " MODULE ID NMB: CSS/877 " MODULE VERSION: 0606 " MODULE TYPE: PREFIX " MERGE FILES: - " " SPECIFICATIONS: CR80 AMOS, FMS, File Manager, PSP, CSS/920/PSP/0048 " AUTHOR/DATE: DAK/850430 " " 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. " 0606 DAK/850430 A NEW COMPL. CODE DIFFERENT_ACCESS_DATES_1 " HAS BEEN ADDED. THIS MEANS THAT A MOUNT " COMMAND WAS REQUESTED WITH A VOLUME USE " PARAMETER THAT SPECIFIED THAT THE VOLUMES " TO BE MOUNTED SHOULD BE DUAL, WHEREAS THE " SPECIFIED VOLUMES DID NOT CARRY THE SAME " TIME-STAMPS. DUAL DISK NUMBER 1 DID CON- " TAIN THE NEWEST ACCESS TIME-STAMP. " THE NAME OF COMPL. CODE DIFFERENT_ACCESS_ " DATES HAS BEEN CHANGED TO DIFFERENT_ACCESS_ " DATES_0. DUAL DISK NUMBER 0 DID CONTAIN " THE NEWEST ACCESS TIME-STAMP. "----------------------------------------------------------------------- "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_0 = #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; DIFFERENT_ACCESS_DATES_1 = #45B; 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 «a5»