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

⟦e6bc27590⟧ TextFile

    Length: 54708 (0xd5b4)
    Types: TextFile
    Names: »TOS.P«

Derivation

└─⟦8c095a7f3⟧ Bits:30005798 CR80 Disc Pack ( Vol ILS systemdisk XAMOS TOS 10:01 hard boot #43c 19-7-87/JFJ )
    └─ ⟦this⟧ »MXTOS_V0202.D!TOS.P« 
└─⟦c2e810e96⟧ Bits:30005799 CR80 Disc Pack ( XAMOS 841129 ILS TOS 10-01 System Disk Tilhører ILS/MSG hard boot boot entry #43c )
    └─ ⟦this⟧ »MXTOS_V0202.D!TOS.P« 

TextFile


***
*** CR80 LARGEPASCAL«nul»«nul»«nul»«nul»«nul» Compiler (Version: 09.00 From 841105)
*** Compilation Started 84«nul»11«nul»08 at 10:58 
*** Source File: @FILSYS-FILE*SSD*MXSYS.D*USERS.D*FP.D*TOS_0202.D*TOS.S
*** Object File: @FILSYS-FILE*SSD*MXSYS.D*USERS.D*FP.D*TOS_0202.D*TOS.L
*** Print  File: @FILSYS-FILE*SSD*MXSYS.D*USERS.D*FP.D*TOS_0202.D*TOS.P
*** Usercode   : #0003
*** Options    : /B /C /U /S /N /X /NF 
***



0001    0.0001  %LIST
0002    0.0002  $@FILSYS-FILE*SSD*GENS.D*PREFIX
 
0003    1.0001  "----------------------------------------------------------------------
0004    1.0002  
0005    1.0003    PROJECT:
0006    1.0004  
0007    1.0005    MODULE NAME:      AMOS/XAMOS PASCAL PREFIX
0008    1.0006    MODULE ID NMB:    CSS860
0009    1.0007    MODULE VERSION:   302
0010    1.0008    MODULE TYPE:      PREFIX
0011    1.0009    MODULE FILES:
0012    1.0010    MERGE FILES:
0013    1.0011  
0014    1.0012    SPECIFICATIONS:
0015    1.0013    AUTHOR/DATE:      PHF     800522
0016    1.0014  
0017    1.0015    DELIVERABLE:      YES
0018    1.0016    SOURCE LANGUAGE:  CR80 PASCAL
0019    1.0017    COMPILE COMPUTER: CR80
0020    1.0018    TARGET COMPUTER:  CR80
0021    1.0019    OPER. SYSTEM:     XAMOS/MX-AMOS
0022    1.0020  
0023    1.0021  -----------------------------------------------------------------------
0024    1.0022  
0025    1.0023    CHANGE RECORD:
0026    1.0024  
0027    1.0025    VERSION    AUTHOR/DATE    DESCRIPTION OF CHANGE
0028    1.0026    -------    -----------    ---------------------
0029    1.0027  
0030    1.0028    01xx        PHF/830128    UPDATED WITH 'F_USERS'
0031    1.0029  
0032    1.0030    0201        HS/830505     Standard PASCAL header included.
0033    1.0031                              Cosmetic changes.
0034    1.0032  
0035    1.0033    0301        JAS/831027    New FMS completion codes.
0036    1.0034                              MT completion codes added.
0037    1.0035                              New MOUNT parameter.
0038    1.0036  
0039    1.0037    0302        FP/840727     Volume use extended with partial_dualizable_vol
0040    1.0038                              BITNUMBER is now UNIV in TESTBIT, SETBIT, and
0041    1.0039                              CLEARBIT.
0042    1.0040  ----------------------------------------------------------------------"
0043    1.0041  
0044    1.0042  CONST NL = '(:10:)';  FF = '(:12:)';  CR = '(:13:)';  EM = '(:25:)';
0045    1.0043  CONST NULL = '(:0:)';  SP = ' ';
0046    1.0044  
0047    1.0045  CONST LINELENGTH = 132;
0048    1.0046  TYPE LINE = ARRAY [1..LINELENGTH] OF CHAR;
0049    1.0047  TYPE TEXT = LINE;
0050    1.0048  
0051    1.0049  TYPE PROGRESULT = (TERMINATED, OVERFLOW,     POINTERERROR,
0052    1.0050                     RANGEERROR, VARIANTERROR, HEAPLIMIT,
0053    1.0051                     STACKLIMIT, CODELIMIT,    TIMELIMIT,
0054    1.0052                     CALLERROR,  DATALIMIT);
0055    1.0053  
0056    1.0054  TYPE BITPOSITION = 0..15;
0057    1.0055  TYPE BITFIELDLENGTH = 0..16;
0058    1.0056  TYPE BITVALUE = (LOW, HIGH);
0059    1.0057  
0060    1.0058  TYPE MESSAGE_BUFFER = ARRAY [1..5] OF INTEGER;
0061    1.0059  
0062    1.0060  TYPE WORD_ADDRESS = RECORD
0063    1.0061                        MEMORY_SECTION: INTEGER;
0064    1.0062                        WORD_DISPLACEMENT:INTEGER
0065    1.0063                      END;
0066    1.0064  
0067    1.0065  TYPE BYTE_ADDRESS = RECORD
0068    1.0066                        BYTE_DISPLACEMENT: INTEGER;
0069    1.0067                        WORD_ADDR: WORD_ADDRESS
0070    1.0068                      END;
0071    1.0069  
0072    1.0070  TYPE FILE = INTEGER;
0073    1.0071  TYPE COMPLETION_CODE = INTEGER;
0074    1.0072  TYPE ELEMENT = ARRAY [1..1] OF INTEGER;
0075    1.0073  TYPE PACKED_NAME = ARRAY [0..7] OF INTEGER;
0076    1.0074  TYPE PACKED_NAME3 = ARRAY [0..2] OF INTEGER;
0077    1.0075  TYPE PACKED_NAME2 = ARRAY [0..1] OF INTEGER;
0078    1.0076  
0079    1.0077  TYPE PROCESS_NAME = RECORD
0080    1.0078                         NAME: PACKED_NAME3;
0081    1.0079                         NAME_IDENT: INTEGER
0082    1.0080                      END;
0083    1.0081  
0084    1.0082  TYPE FILE_SYSTEM_NAME = RECORD
0085    1.0083                             PNAME: PROCESS_NAME;
0086    1.0084                             GNAME: PACKED_NAME2
0087    1.0085                          END;
0088    1.0086  TYPE VOLUME_NAME = PACKED_NAME;
0089    1.0087  TYPE VOLUME_USE = (SINGLE_VOL, DUAL_VOL, DUALIZABLE_VOL,
0090    1.0088                     PARTIAL_DUALIZABLE_VOL);
0091    1.0089  CONST DIRECTORY = 10;  CONTIGUOUS = 12;  RANDOM = 14;
0092    1.0090  TYPE FILE_ORGANIZATION = DIRECTORY..RANDOM;
0093    1.0091  TYPE FILE_ATTRIBUTES = RECORD
0094    1.0092                            VOLUME: VOLUME_NAME;
0095    1.0093                            ORGANIZATION: FILE_ORGANIZATION;
0096    1.0094                            ALLOC_SIZE: LONG_INTEGER;
0097    1.0095                            AREA_SIZE: INTEGER
0098    1.0096                         END;
0099    1.0097  TYPE USERID = ARRAY [0..1] OF INTEGER;
0100    1.0098  TYPE ACCESS_DESCRIPTION = RECORD
0101    1.0099                               USER: USERID;
0102    1.0100                               RIGHTS: ARRAY [0..1] OF INTEGER
0103    1.0101                            END;
0104    1.0102  TYPE FILE_INFORMATION_TYPE = (F_ORGANIZATION, F_SIZE, F_ALLOCSIZE,
0105    1.0103                                F_BODYADDR, F_AREASIZE, F_THRESHOLD,
0106    1.0104                                F_LINKS, F_INBFD, F_BFDNBR, F_USERS);
0107    1.0105  TYPE DEVICE_NAME = PACKED_NAME2;
0108    1.0106  TYPE DEVICE_DESCRIPTION = RECORD
0109    1.0107                               DEVICE_KIND: INTEGER;
0110    1.0108                               DEVICE_ADDR: INTEGER;
0111    1.0109                               UNIT: INTEGER;
0112    1.0110                               SUBUNIT: INTEGER;
0113    1.0111                               DEVICE: DEVICE_NAME
0114    1.0112                            END;
0115    1.0113  TYPE PARTNER_DEVICE_ATTRIBUTES = RECORD
0116    1.0114                                      DEVICE_ADDR: INTEGER;
0117    1.0115                                      UNIT: INTEGER
0118    1.0116                                   END;
0119    1.0117  TYPE DUAL_DEVICE_DESCRIPTION = RECORD
0120    1.0118                                    DEVICE: DEVICE_DESCRIPTION;
0121    1.0119                                    PARTNER: PARTNER_DEVICE_ATTRIBUTES
0122    1.0120                                 END;
0123    1.0121  TYPE FILE_NAME = PACKED_NAME;
0124    1.0122  TYPE FILE_ADDRESS = RECORD
0125    1.0123                         FIRST_BYTE: LONG_INTEGER;
0126    1.0124                         BYTE_COUNT: LONG_INTEGER;
0127    1.0125                         TRANSFERRED_BYTES: LONG_INTEGER
0128    1.0126                      END;
0129    1.0127  TYPE SECTOR_ADDRESS = RECORD
0130    1.0128                           FIRST_SECTOR: LONG_INTEGER;
0131    1.0129                           SECTOR_COUNT: LONG_INTEGER;
0132    1.0130                           TRANSFERRED_SECTORS: LONG_INTEGER
0133    1.0131                        END;
0134    1.0132  TYPE MODE = (INPUT_MODE, OUTPUT_MODE);
0135    1.0133  TYPE STREAM = INTEGER;
0136    1.0134  TYPE STREAM_POSITION = LONG_INTEGER;
0137    1.0135  TYPE BYTE = 0..255;
0138    1.0136  TYPE OPERATION_REFERENCE = INTEGER;
0139    1.0137  TYPE MEMORY_PARM = INTEGER;
0140    1.0138  
0141    1.0139  TYPE BUFFER_LOCATION = (LOCAL, EXTERNAL);
0142    1.0140  TYPE BLEPTR = @BLE;
0143    1.0141  TYPE BLE = RECORD
0144    1.0142                LINK: BLEPTR;
0145    1.0143                CASE XL: BUFFER_LOCATION OF
0146    1.0144                   LOCAL: (BUFADDR, BUFSIZE_IN_BYTES: INTEGER);
0147    1.0145                   EXTERNAL: (MEMORY: MEMORY_PARM)
0148    1.0146             END;
0149    1.0147  
0150    1.0148  TYPE EVENT_TYPE = (SIGNAL, MESSAGE, ANSWER, SYSTEM_MESSAGE,
0151    1.0149                     SYSTEM_ANSWER, PATH_MESSAGE, PATH_ANSWER,
0152    1.0150                     INTERRUPT, TIME_OUT, PARENT_SIGNAL);
0153    1.0151  
0154    1.0152  TYPE EVENT_MASK = INTEGER;
0155    1.0153  
0156    1.0154  TYPE DATE_TIME_GROUP = RECORD
0157    1.0155                            YEAR, MONTH, DAY: INTEGER;
0158    1.0156                            HOUR, MIN, SEC: INTEGER
0159    1.0157                         END;
0160    1.0158  
0161    1.0159  TYPE PROC_TIME = ARRAY [0..2] OF INTEGER;
0162    1.0160  
0163    1.0161  TYPE PROCESS_ATTRIBUTES = RECORD
0164    1.0162                              ACCESS_RIGHTS, STATE: INTEGER;
0165    1.0163                              ERROR_CODE, ERROR_LOC: INTEGER;
0166    1.0164                              CONSUMED_TIME, CREATION_TIME: PROC_TIME
0167    1.0165                           END;
0168    1.0166  
0169    1.0167  TYPE CREATION_BLOCK = RECORD
0170    1.0168                           VNAME: PROCESS_NAME;
0171    1.0169                           VPROG, VINIT, VMICRO, VCAPAB: INTEGER;
0172    1.0170                           VCPU, VPRIO, VLEVEL, VBASE: INTEGER;
0173    1.0171                           VSIZE, VBOUND, VMEMORY, VMSGS: INTEGER;
0174    1.0172                           VUSER: USERID
0175    1.0173                        END;
0176    1.0174  
0177    1.0175  TYPE CPUPARAMETER = (VCPUNMB, VINTERRUPTMASK, VSCHEDULERESETCOUNT,
0178    1.0176                       VSLICESIZE, VELAPSEDTIME, VHWPRIORITY);
0179    1.0177  
0180    1.0178  TYPE CHAR_TYPE = (TSPACE, TDIGIT, TLETTER, TOTHER);
0181    1.0179  
0182    1.0180  CONST PAGELENGTH = 256;
0183    1.0181  TYPE PAGE = ARRAY [1..PAGELENGTH] OF INTEGER;
0184    1.0182  
0185    1.0183  TYPE ELEMENT_TYPE = (TERROR, TINTEGER, TIDENTIFIER,
0186    1.0184                       TSPECIAL, TLONG_INTEGER);
0187    1.0185  
0188    1.0186  TYPE ELEM_REC = RECORD
0189    1.0187                     DELIM: CHAR;
0190    1.0188                     BYTE_COUNT: INTEGER;
0191    1.0189                     CASE ELEM_TYPE: ELEMENT_TYPE OF
0192    1.0190                        TINTEGER:      (INT: INTEGER);
0193    1.0191                        TLONG_INTEGER: (LINT: LONG_INTEGER);
0194    1.0192                        TIDENTIFIER:   (NAME: PACKED_NAME);
0195    1.0193                        TSPECIAL:      (SPEC_CHAR: CHAR)
0196    1.0194                  END;
0197    1.0195  
0198    1.0196  TYPE POINTER = @INTEGER;
0199    1.0197  TYPE PARAMTYPE = RECORD
0200    1.0198                      FSN:      FILE_SYSTEM_NAME;  "CURRENT FILE SYSTEM NAME"
0201    1.0199                      VOL:      VOLUME_NAME;       "CURRENT VOLUME NAME"
0202    1.0200                      PFILE:    FILE;              "CURRENT PARAMETER FILE"
0203    1.0201                      DFILE:    FILE;              "CURRENT DIRECTORY FILE"
0204    1.0202                      IFILE:    FILE;              "CURRENT INPUT FILE"
0205    1.0203                      OFILE:    FILE;              "CURRENT OUTPUT FILE"
0206    1.0204                      PARENT:   PROCESS_NAME;      "PARENT OF PROCESS"
0207    1.0205                      PTR:      POINTER
0208    1.0206                   END;
0209    1.0207  
0210    1.0208  CONST
0211    1.0209     IO_OK                    =    0;   EOF                      = #201;
0212    1.0210     NO_FDS_AVAILABLE         = #202;   ILLEGAL_FD               = #203;
0213    1.0211     NO_IOCBS_AVAILABLE       = #204;   ILLEGAL_IOCB             = #205;
0214    1.0212     NO_STREAMS_AVAILABLE     = #206;   ILLEGAL_STREAM           = #207;
0215    1.0213     NO_XFELEMS_AVAILABLE     = #208;   ILLEGAL_ADDRESS          = #209;
0216    1.0214     ILLEGAL_BLE              = #20A;   FILE_NOT_OPEN            = #20B;
0217    1.0215     DIFFERENT_FILE_SYSTEMS   = #20C;   UNKNOWN_FILE_SYSTEM      = #20D;
0218    1.0216     ILLEGAL_COMMAND          = #20E;   IO_SYSTEM_ERROR          = #20F;
0219    1.0217     NOT_ENOUGH_SPACE         = #210;   ILLEGAL_MODE             = #211;
0220    1.0218     ILLEGAL_MEMORY_PARM      = #212;   NO_BUFFER_SPACE          = #213;
0221    1.0219     NOT_CONNECTED            = #214;   NOT_OUTPUT_MODE          = #215;
0222    1.0220     NOT_INPUT_MODE           = #216;   ELEMENT_OVERFLOW         = #217;
0223    1.0221     SYNTAX_ERROR             = #218;
0224    1.0222  
0225    1.0223     NONEXISTING_DEVICE       = #400;   ILLEGAL_DEVICE_KIND      = #401;
0226    1.0224     ILLEGAL_CR80_ADDR        = #402;   DEVICE_NAME_IN_USE       = #403;
0227    1.0225     ILLEGAL_UNIT             = #404;   ILLEGAL_SUBUNIT          = #405;
0228    1.0226     WRONG_VOLUME_NAME        = #406;   NONEXISTING_VOLUME       = #407;
0229    1.0227     VOLUME_MOUNTED           = #408;   DIFFERENT_VOLUMES        = #409;
0230    1.0228     ILLEGAL_FILE             = #40A;   ILLEGAL_ORGANIZATION     = #40B;
0231    1.0229     ILLEGAL_ALLOC_SIZE       = #40C;   ILLEGAL_AREA_SIZE        = #40D;
0232    1.0230     ILLEGAL_WRITE            = #40E;   FILE_CLOSED              = #40F;
0233    1.0231     FILES_OPEN               = #410;   NO_FILE_TO_ACCEPT        = #411;
0234    1.0232     NONEXISTING_USER         = #412;   USER_ALREADY_ACTIVE      = #413;
0235    1.0233     NO_CONNECTION            = #414;   ILLEGAL_USERGROUP        = #415;
0236    1.0234     ILLEGAL_CALLER           = #416;   OTHER_USERS              = #417;
0237    1.0235     NOT_CONTIGUOUS_DUALIZE   = #418;   OUT_OF_RANGE             = #419;
0238    1.0236                                        FILE_FULL                = #41B;
0239    1.0237     ACL_FULL                 = #41C;   PROTECTION_FAILURE       = #41D;
0240    1.0238  
0241    1.0239     ILLEGAL_DIRECTORY        = #420;   NAME_EXISTS              = #421;
0242    1.0240     NONEXISTING_NAME         = #422;   NOT_ALLOCATABLE          = #423;
0243    1.0241                                        KIND_UNIT_CONFLICT       = #425;
0244    1.0242     KIND_CTRLR_CONFLICT      = #426;
0245    1.0243     ILLEGAL_FILE_INF_TYPE    = #428;   NOT_A_DUAL_DISK          = #429;
0246    1.0244     ILLEGAL_DISCARD          = #42A;
0247    1.0245     UNKNOWN_COMMAND          = #42C;   BAD_SECTOR_DURING_FORMAT = #42D;
0248    1.0246     BAD_SECTOR_TABLE_FULL    = #42E;   UNIT_IS_IN_USE           = #42F;
0249    1.0247     VOLUME_NAME_IS_IN_USE    = #430;   DEVICE_NOT_RESERVED      = #431;
0250    1.0248     DEVICE_ALREADY_RESERVED  = #432;   DEVICE_NOT_SINGLE        = #433;
0251    1.0249     DEVICE_NOT_DUAL          = #434;   ILLEGAL_DCB_INDEX        = #435;
0252    1.0250     UNKNOWN_VOLUME_USE       = #436;   ILLEGAL_FINISH_DUALIZE   = #437;
0253    1.0251                                        ILLEGAL_START_DUALIZE    = #43B;
0254    1.0252     NOT_DUALIZING            = #43C;   DUALIZING_WITHOUT_MOUNT  = #43D;
0255    1.0253                                        BAD_SECTOR_READ          = #441;
0256    1.0254     CORRUPT_HOMEBLOCK        = #442;   BAD_SECTOR_IN_ASF        = #443;
0257    1.0255     BST_FULL                 = #444;
0258    1.0256     BAD_SECTOR_REPLACED      = #448;   LAST_BAD_SECTOR_REPLACED = #449;
0259    1.0257     DIFFERENT_VOLUME_NAMES   = #44A;   DIFFERENT_ACCESS_DATES   = #44B;
0260    1.0258     NOT_ASSIGNED_DUAL        = #44C;   NOT_DISMOUNTED_DUAL      = #44D;
0261    1.0259     NOT_MOUNTED_DUAL         = #44E;   SECTOR_COUNT_CONFLICT    = #44F;
0262    1.0260  
0263    1.0261                                        DRIVE_NOT_READY          = #481;
0264    1.0262     WRITE_PROTECTED_DEVICE   = #482;   UNEXPEC_DISK_I_F_STATUS  = #483;
0265    1.0263     DATA_OR_SYNC_ERROR       = #484;   ADDRESS_OR_SYNC_ERROR    = #485;
0266    1.0264     BAD_SECTOR               = #486;   WRITE_PROTECTED_SECTOR   = #487;
0267    1.0265     ILLEGAL_SECTOR           = #488;   TIMING_ERROR             = #489;
0268    1.0266     SUBBUS_OVERRUN           = #48A;   PARITY_ERROR             = #48B;
0269    1.0267     SELFTEST_RUNNING         = #48C;   CONTROLLER_RESET         = #48D;
0270    1.0268     SELFTEST_FAILED          = #48E;   CONTROLLER_FAILURE       = #48F;
0271    1.0269  
0272    1.0270     TAPE_DEVICE_FAILURE      = #B00;   TAPE_SOFT_FAILURE        = #B01;
0273    1.0271     TAPE_NOT_INITIATED       = #B03;   TAPE_WRITE_PROTECTED     = #B04;
0274    1.0272     BEGINNING_OF_TAPE_SENSED = #B05;   END_OF_TAPE_SENSED       = #B06;
0275    1.0273     LOGICAL_EOT_SENSED       = #B07;   FILE_MARK_SENSED         = #B08;
0276    1.0274     INVALID_RECORD_LENGTH    = #B09;   SHORT_DATA_RECORD        = #B0A;
0277    1.0275     LONG_DATA_RECORD         = #B0B;   TAPE_MUST_BE_LABELED     = #B0C;
0278    1.0276     FILE_MUST_BE_OPEN_FOR_INPUT        = #B0D;
0279    1.0277     FILE_NOT_BREAKABLE       = #B0E;   ILLEGAL_RESUME_TAPE      = #B0F;
0280    1.0278     END_OF_VOLUME            = #B10;
0281    1.0279  
0282    1.0280  CONST NAMELISTMAXINDEX = 10;
0283    1.0281  TYPE NAMELISTTYPE = ARRAY [1..NAMELISTMAXINDEX] OF PACKED_NAME;
0284    1.0282  «ff»
0285    1.0283  FUNCTION IAND(MASK1, MASK2: UNIV INTEGER): INTEGER;
0286    1.0284  FUNCTION IOR(MASK1, MASK2: UNIV INTEGER): INTEGER;
0287    1.0285  FUNCTION XOR(MASK1, MASK2: UNIV INTEGER): INTEGER;
0288    1.0286  FUNCTION INV(MASK: UNIV INTEGER): INTEGER;
0289    1.0287  
0290    1.0288  FUNCTION LEFTSHIFT(BITS: UNIV INTEGER; SHIFTS: INTEGER): INTEGER;
0291    1.0289  FUNCTION RIGHTSHIFT(BITS: UNIV INTEGER; SHIFTS: INTEGER): INTEGER;
0292    1.0290  
0293    1.0291  FUNCTION ADD(A, B: INTEGER): INTEGER;
0294    1.0292  FUNCTION SUBTRACT(A, B: INTEGER): INTEGER;
0295    1.0293  
0296    1.0294  FUNCTION GETBITS(BITS: UNIV INTEGER; LEFTMOST: BITPOSITION;
0297    1.0295                   FIELDLENGTH: BITFIELDLENGTH): INTEGER;
0298    1.0296  PROCEDURE PUTBITS(FROM: UNIV INTEGER; VAR TO_: UNIV INTEGER;
0299    1.0297                    LEFTTO: BITPOSITION; FIELDLENGTH: BITFIELDLENGTH);
0300    1.0298  FUNCTION TESTBIT(BITS: UNIV INTEGER; BITNUMBER: UNIV BITPOSITION): BOOLEAN;
0301    1.0299  PROCEDURE SETBIT(VAR BITS: UNIV INTEGER; BITNUMBER: UNIV BITPOSITION);
0302    1.0300  PROCEDURE CLEARBIT(VAR BITS: UNIV INTEGER; BITNUMBER: UNIV BITPOSITION);
0303    1.0301  
0304    1.0302  PROCEDURE SENSE_IO(DEVICE: INTEGER; VAR STATUS: UNIV INTEGER);
0305    1.0303  PROCEDURE READ_IO(DEVICE: INTEGER; VAR DATA: UNIV INTEGER);
0306    1.0304  PROCEDURE CONTROL_IO(DEVICE: INTEGER; STATUS: UNIV INTEGER);
0307    1.0305  PROCEDURE WRITE_IO(DEVICE: INTEGER; DATA: UNIV INTEGER);
0308    1.0306  
0309    1.0307  PROCEDURE RESERVE_INTERRUPT(DEVPR: INTEGER; VAR INTRPT: INTEGER);
0310    1.0308  PROCEDURE RELEASE_INTERRUPT(INTRPT: INTEGER);
0311    1.0309  PROCEDURE CLEAR_INTERRUPT(INTRPT: INTEGER);
0312    1.0310  PROCEDURE WAIT_INTERRUPT(DELAY, INTRPT: INTEGER; VAR TIMED_OUT: BOOLEAN);
0313    1.0311  PROCEDURE SET_INTERRUPT(INTRPT: INTEGER);
0314    1.0312  PROCEDURE SET_CYCLE(CYCLE: INTEGER);
0315    1.0313  
0316    1.0314  PROCEDURE SEND_MESSAGE(VAR RECEIVER: PROCESS_NAME;
0317    1.0315                         MSG: UNIV MESSAGE_BUFFER;
0318    1.0316                         VAR EVENT: INTEGER);
0319    1.0317  PROCEDURE SEND_SYSTEM_MESSAGE(VAR RECEIVER: PROCESS_NAME;
0320    1.0318                                MSG: UNIV MESSAGE_BUFFER;
0321    1.0319                                VAR EVENT: INTEGER);
0322    1.0320  PROCEDURE SEND_ANSWER(ANS: UNIV MESSAGE_BUFFER; EVENT: INTEGER);
0323    1.0321  PROCEDURE SEND_SYSTEM_ANSWER(ANS: UNIV MESSAGE_BUFFER; EVENT: INTEGER);
0324    1.0322  PROCEDURE SEND_SIGNAL(VAR RECEIVER: PROCESS_NAME);
0325    1.0323  PROCEDURE IDENTIFY_SENDER(EVENT: INTEGER; VAR PROC: INTEGER; VAR OK: BOOLEAN);
0326    1.0324  
0327    1.0325  PROCEDURE GET_PROC_NAME(VAR PROC_NAME: PROCESS_NAME);
0328    1.0326  PROCEDURE GET_PROC_IDENT(VAR PROC_NAME: PROCESS_NAME; VAR FOUND: BOOLEAN);
0329    1.0327  
0330    1.0328  PROCEDURE WAIT_MESSAGE(DELAY: INTEGER; VAR MSG: UNIV MESSAGE_BUFFER;
0331    1.0329                         VAR EVENT: INTEGER; VAR EVTTYPE: EVENT_TYPE);
0332    1.0330  PROCEDURE WAIT_SYSTEM_MESSAGE(DELAY: INTEGER;
0333    1.0331                                VAR MSG: UNIV MESSAGE_BUFFER;
0334    1.0332                                VAR EVENT: INTEGER;
0335    1.0333                                VAR EVTTYPE: EVENT_TYPE);
0336    1.0334  PROCEDURE WAIT_ANSWER(DELAY: INTEGER; EVENT: INTEGER;
0337    1.0335                        VAR ANS: UNIV MESSAGE_BUFFER;
0338    1.0336                        VAR EVTTYPE: EVENT_TYPE);
0339    1.0337  PROCEDURE WAIT_SYSTEM_ANSWER(DELAY: INTEGER; EVENT: INTEGER;
0340    1.0338                               VAR ANS: UNIV MESSAGE_BUFFER;
0341    1.0339                               VAR EVTTYPE: EVENT_TYPE);
0342    1.0340  PROCEDURE WAIT_EVENT(DELAY: INTEGER; EVTMSK: EVENT_MASK;
0343    1.0341                       VAR MSG: UNIV MESSAGE_BUFFER;
0344    1.0342                       VAR EVENT: INTEGER;
0345    1.0343                       VAR EVTTYPE: EVENT_TYPE);
0346    1.0344  PROCEDURE SAVE_EVENT(EVENT: INTEGER);
0347    1.0345  PROCEDURE RESTORE_EVENTS(EVTTYPE: EVENT_TYPE);
0348    1.0346  
0349    1.0347  PROCEDURE TERMINATE(CC: COMPLETION_CODE);
0350    1.0348  
0351    1.0349  PROCEDURE READ_TIME(VAR TIME: DATE_TIME_GROUP);
0352    1.0350  
0353    1.0351  PROCEDURE START_PROCESS(PROC: INTEGER; VAR ILLEGAL: BOOLEAN);
0354    1.0352  PROCEDURE STOP_PROCESS(PROC: INTEGER; VAR ILLEGAL: BOOLEAN);
0355    1.0353  PROCEDURE PROCESS_STATUS(PROC: INTEGER; VAR ILLEGAL: BOOLEAN;
0356    1.0354                           VAR PROC_ATTR: PROCESS_ATTRIBUTES);
0357    1.0355  PROCEDURE REMOVE_PROCESS(PROC: INTEGER; VAR ILLEGAL: BOOLEAN);
0358    1.0356  PROCEDURE GET_NEXT_PROCESS(VAR PROC: INTEGER; VAR NONE: BOOLEAN);
0359    1.0357  PROCEDURE ADOPT_PROCESS(PROC: INTEGER; VAR ILLEGAL: BOOLEAN);
0360    1.0358  PROCEDURE CREATE_PROCESS(VAR CB: CREATION_BLOCK; VAR RESULT: INTEGER);
0361    1.0359  PROCEDURE GET_CPU_PARAMETER(CPU: INTEGER; PAR: CPUPARAMETER;
0362    1.0360                       PRIORITY: INTEGER; VAR VAL: INTEGER;
0363    1.0361                       VAR OK: BOOLEAN);
0364    1.0362  PROCEDURE SET_CPU_PARAMETER(CPU: INTEGER; PAR: CPUPARAMETER;
0365    1.0363                       PRIORITY: INTEGER; VAL: INTEGER;
0366    1.0364                       VAR OK: BOOLEAN);
0367    1.0365  PROCEDURE LOOKUP_CPU(VAR CPU_NAME: PROCESS_NAME; VAR FOUND: BOOLEAN);
0368    1.0366  
0369    1.0367  PROCEDURE GET_BUFFER(WORD_CLAIM: INTEGER;
0370    1.0368                       VAR MEMORY: MEMORY_PARM;
0371    1.0369                       VAR ADDR: WORD_ADDRESS;
0372    1.0370                       VAR WORDS_ALLOCATED: INTEGER;
0373    1.0371                       VAR OK: BOOLEAN);
0374    1.0372  PROCEDURE GET_BUFFER_ADDR(MEMORY: MEMORY_PARM;
0375    1.0373                            VAR ADDR: WORD_ADDRESS;
0376    1.0374                            VAR SIZE_IN_WORDS: INTEGER;
0377    1.0375                            VAR OK: BOOLEAN);
0378    1.0376  PROCEDURE RELEASE_BUFFER(MEMORY: MEMORY_PARM; VAR OK: BOOLEAN);
0379    1.0377  
0380    1.0378  PROCEDURE CREATE(FSN: FILE_SYSTEM_NAME;
0381    1.0379                   ATTRIBUTES: FILE_ATTRIBUTES;
0382    1.0380                   VAR F: FILE;
0383    1.0381                   VAR CC: COMPLETION_CODE);
0384    1.0382  PROCEDURE DISMANTLE(F: FILE; VAR CC: COMPLETION_CODE);
0385    1.0383  PROCEDURE PROTECT(F: FILE;
0386    1.0384                    ACCESS: ACCESS_DESCRIPTION;
0387    1.0385                    VAR CC: COMPLETION_CODE);
0388    1.0386  PROCEDURE RESET(F: FILE; VAR CC: COMPLETION_CODE);
0389    1.0387  PROCEDURE OFFER(F: FILE; USER: USERID; VAR CC: COMPLETION_CODE);
0390    1.0388  PROCEDURE ACCEPT(FSN: FILE_SYSTEM_NAME;
0391    1.0389                   VAR F: FILE;
0392    1.0390                   VAR CC: COMPLETION_CODE);
0393    1.0391  PROCEDURE GET_FILE_INFORMATION(F: FILE; INF_TYPE: FILE_INFORMATION_TYPE;
0394    1.0392                                 VAR INF: UNIV LONG_INTEGER;
0395    1.0393                                 VAR CC: COMPLETION_CODE);
0396    1.0394  PROCEDURE ASSIGN(FSN: FILE_SYSTEM_NAME;
0397    1.0395                   DESCRIPTION: DEVICE_DESCRIPTION;
0398    1.0396                   VAR CC: COMPLETION_CODE);
0399    1.0397  PROCEDURE DEASSIGN(FSN: FILE_SYSTEM_NAME;
0400    1.0398                     DEVICE: DEVICE_NAME;
0401    1.0399                     VAR CC: COMPLETION_CODE);
0402    1.0400  PROCEDURE MOUNT(FSN: FILE_SYSTEM_NAME;
0403    1.0401                  DEVICE: DEVICE_NAME;
0404    1.0402                  VOLUME: VOLUME_NAME;
0405    1.0403                  VOLUSE: VOLUME_USE;
0406    1.0404                  VAR CC: COMPLETION_CODE);
0407    1.0405  PROCEDURE DISMOUNT(FSN: FILE_SYSTEM_NAME;
0408    1.0406                     VOLUME: VOLUME_NAME;
0409    1.0407                     VAR CC: COMPLETION_CODE);
0410    1.0408  PROCEDURE FORMAT(FSN: FILE_SYSTEM_NAME;
0411    1.0409                   DEVICE: DEVICE_NAME;
0412    1.0410                   VAR SECTORADDR: SECTOR_ADDRESS;
0413    1.0411                   BLE_POINTER: BLEPTR;
0414    1.0412                   VAR CC: COMPLETION_CODE);
0415    1.0413  PROCEDURE GET_ROOT(FSN: FILE_SYSTEM_NAME;
0416    1.0414                     VOLUME: VOLUME_NAME;
0417    1.0415                     VAR ROOT_DIRECTORY: FILE;
0418    1.0416                     VAR CC: COMPLETION_CODE);
0419    1.0417  PROCEDURE USER_ON(FSN: FILE_SYSTEM_NAME;
0420    1.0418                    USER: USERID;
0421    1.0419                    VAR CC: COMPLETION_CODE);
0422    1.0420  PROCEDURE USER_OFF(FSN: FILE_SYSTEM_NAME;
0423    1.0421                     USER: USERID;
0424    1.0422                     VAR CC: COMPLETION_CODE);
0425    1.0423  PROCEDURE ENTER(DIRECTORY: FILE;
0426    1.0424                  SUBJECT: FILE;
0427    1.0425                  NAME: FILE_NAME;
0428    1.0426                  VAR CC: COMPLETION_CODE);
0429    1.0427  PROCEDURE LOOKUP(DIRECTORY: FILE;
0430    1.0428                   NAME: FILE_NAME;
0431    1.0429                   VAR F: FILE;
0432    1.0430                   VAR CC: COMPLETION_CODE);
0433    1.0431  PROCEDURE DESCENT(VAR F: FILE;
0434    1.0432                    NAME: FILE_NAME;
0435    1.0433                    VAR CC: COMPLETION_CODE);
0436    1.0434  PROCEDURE FIND_FILE(FROM_ADAM: BOOLEAN;
0437    1.0435                      FSN: FILE_SYSTEM_NAME;
0438    1.0436                      VOLUME: VOLUME_NAME;
0439    1.0437                      NAMELIST: NAMELISTTYPE;
0440    1.0438                      NAME_NO: INTEGER;
0441    1.0439                      DIRECTORY: FILE;
0442    1.0440                      VAR F: FILE;
0443    1.0441                      VAR CC: COMPLETION_CODE);
0444    1.0442  PROCEDURE RENAME(DIRECTORY: FILE;
0445    1.0443                   OLDNAME: FILE_NAME;
0446    1.0444                   NEWNAME: FILE_NAME;
0447    1.0445                   VAR CC: COMPLETION_CODE);
0448    1.0446  PROCEDURE REMOVE(DIRECTORY: FILE;
0449    1.0447                   NAME: FILE_NAME;
0450    1.0448                   VAR CC: COMPLETION_CODE);
0451    1.0449  PROCEDURE READ_SECTORS(FSN: FILE_SYSTEM_NAME;
0452    1.0450                         DEVICE: DEVICE_NAME;
0453    1.0451                         VAR SECTORADDR: SECTOR_ADDRESS;
0454    1.0452                         BLE_POINTER: BLEPTR;
0455    1.0453                         VAR CC: COMPLETION_CODE);
0456    1.0454  PROCEDURE WRITE_SECTORS(FSN: FILE_SYSTEM_NAME;
0457    1.0455                          DEVICE: DEVICE_NAME;
0458    1.0456                          VAR SECTORADDR: SECTOR_ADDRESS;
0459    1.0457                          BLE_POINTER: BLEPTR;
0460    1.0458                          VAR CC: COMPLETION_CODE);
0461    1.0459  PROCEDURE WRITE_AND_PROTECT(FSN: FILE_SYSTEM_NAME;
0462    1.0460                              DEVICE: DEVICE_NAME;
0463    1.0461                              VAR SECTORADDR: SECTOR_ADDRESS;
0464    1.0462                              BLE_POINTER: BLEPTR;
0465    1.0463                              VAR CC: COMPLETION_CODE);
0466    1.0464  PROCEDURE WRITE_AND_MARK(FSN: FILE_SYSTEM_NAME;
0467    1.0465                           DEVICE: DEVICE_NAME;
0468    1.0466                           VAR SECTORADDR: SECTOR_ADDRESS;
0469    1.0467                           BLE_POINTER: BLEPTR;
0470    1.0468                           VAR CC: COMPLETION_CODE);
0471    1.0469  PROCEDURE READ_BYTES(F: FILE;
0472    1.0470                       VAR FILE_ADDR: FILE_ADDRESS;
0473    1.0471                       BLE_POINTER: BLEPTR;
0474    1.0472                       VAR CC: COMPLETION_CODE);
0475    1.0473  PROCEDURE MODIFY_BYTES(F: FILE;
0476    1.0474                         VAR FILE_ADDR: FILE_ADDRESS;
0477    1.0475                         BLE_POINTER: BLEPTR;
0478    1.0476                         VAR CC: COMPLETION_CODE);
0479    1.0477  PROCEDURE APPEND_BYTES(F: FILE;
0480    1.0478                         VAR FILE_ADDR: FILE_ADDRESS;
0481    1.0479                         BLE_POINTER: BLEPTR;
0482    1.0480                         VAR CC: COMPLETION_CODE);
0483    1.0481  PROCEDURE INIT_READ_BYTES(F: FILE;
0484    1.0482                            VAR FILE_ADDR: FILE_ADDRESS;
0485    1.0483                            BLE_POINTER: BLEPTR;
0486    1.0484                            VAR OPREF: OPERATION_REFERENCE;
0487    1.0485                            VAR CC: COMPLETION_CODE);
0488    1.0486  PROCEDURE INIT_MODIFY_BYTES(F: FILE;
0489    1.0487                              VAR FILE_ADDR: FILE_ADDRESS;
0490    1.0488                              BLE_POINTER: BLEPTR;
0491    1.0489                              VAR OPREF: OPERATION_REFERENCE;
0492    1.0490                              VAR CC: COMPLETION_CODE);
0493    1.0491  PROCEDURE INIT_APPEND_BYTES(F: FILE;
0494    1.0492                              VAR FILE_ADDR: FILE_ADDRESS;
0495    1.0493                              BLE_POINTER: BLEPTR;
0496    1.0494                              VAR OPREF: OPERATION_REFERENCE;
0497    1.0495                              VAR CC: COMPLETION_CODE);
0498    1.0496  PROCEDURE WAIT_OPERATION(OPREF: OPERATION_REFERENCE;
0499    1.0497                           VAR CC: COMPLETION_CODE);
0500    1.0498  PROCEDURE TEST_OPERATION(OPREF: OPERATION_REFERENCE;
0501    1.0499                           VAR FINISHED: BOOLEAN;
0502    1.0500                           VAR CC: COMPLETION_CODE);
0503    1.0501  PROCEDURE CANCEL_OPERATION(OPREF: OPERATION_REFERENCE;
0504    1.0502                             VAR CC: COMPLETION_CODE);
0505    1.0503  
0506    1.0504  PROCEDURE CONNECT(F: FILE;
0507    1.0505                    M: MODE;
0508    1.0506                    VAR S: STREAM;
0509    1.0507                    VAR CC: COMPLETION_CODE);
0510    1.0508  PROCEDURE DISCONNECT(S: STREAM;
0511    1.0509                       VAR F: FILE;
0512    1.0510                       VAR CC: COMPLETION_CODE);
0513    1.0511  PROCEDURE GET_POSITION(S: STREAM;
0514    1.0512                         VAR POSITION: STREAM_POSITION;
0515    1.0513                         VAR CC: COMPLETION_CODE);
0516    1.0514  PROCEDURE SET_POSITION(S: STREAM;
0517    1.0515                         POSITION: STREAM_POSITION;
0518    1.0516                         VAR CC: COMPLETION_CODE);
0519    1.0517  PROCEDURE INBYTE(S: STREAM; VAR B: UNIV BYTE; VAR CC: COMPLETION_CODE);
0520    1.0518  PROCEDURE INWORD(S: STREAM;
0521    1.0519                   VAR WORD: UNIV INTEGER;
0522    1.0520                   VAR CC: COMPLETION_CODE);
0523    1.0521  PROCEDURE BACKSPACE(S: STREAM; VAR CC: COMPLETION_CODE);
0524    1.0522  PROCEDURE INREC(S: STREAM;
0525    1.0523                  VAR FIRST_ELEMENT: UNIV ELEMENT;
0526    1.0524                  VAR RECORD_LENGTH_IN_BYTES: INTEGER;
0527    1.0525                  VAR CC: COMPLETION_CODE);
0528    1.0526  PROCEDURE OUTBYTE(S: STREAM; B: UNIV BYTE; VAR CC: COMPLETION_CODE);
0529    1.0527  PROCEDURE OUTWORD(S: STREAM;
0530    1.0528                    WORD: UNIV INTEGER;
0531    1.0529                    VAR CC: COMPLETION_CODE);
0532    1.0530  PROCEDURE OUTREC(S: STREAM;
0533    1.0531                   FIRST_ELEMENT: UNIV ELEMENT;
0534    1.0532                   VAR RECORD_LENGTH_IN_BYTES: INTEGER;
0535    1.0533                   VAR CC: COMPLETION_CODE);
0536    1.0534  PROCEDURE FLUSH(S: STREAM; VAR CC: COMPLETION_CODE);
0537    1.0535  PROCEDURE INTYPE(S: STREAM;
0538    1.0536                   VAR CH: CHAR;
0539    1.0537                   VAR CH_TYPE: CHAR_TYPE;
0540    1.0538                   VAR CC: COMPLETION_CODE);
0541    1.0539  PROCEDURE INELEMENT(S: STREAM;
0542    1.0540                      VAR ELEM: ELEM_REC;
0543    1.0541                      VAR CC: COMPLETION_CODE);
0544    1.0542  PROCEDURE ININTEGER(S: STREAM;
0545    1.0543                      VAR INT: INTEGER;
0546    1.0544                      VAR CC: COMPLETION_CODE);
0547    1.0545  PROCEDURE INLONG_INTEGER(S: STREAM;
0548    1.0546                           VAR LINT: LONG_INTEGER;
0549    1.0547                           VAR CC: COMPLETION_CODE);
0550    1.0548  PROCEDURE INNAME(S: STREAM;
0551    1.0549                   VAR N: PACKED_NAME;
0552    1.0550                   VAR CC: COMPLETION_CODE);
0553    1.0551  PROCEDURE INFILEID(S: STREAM;
0554    1.0552                     VAR FROM_ADAM: BOOLEAN;
0555    1.0553                     VAR FSN: FILE_SYSTEM_NAME;
0556    1.0554                     VAR VOLUME: VOLUME_NAME;
0557    1.0555                     VAR NAMELIST: NAMELISTTYPE;
0558    1.0556                     VAR NAME_NO: INTEGER;
0559    1.0557                     VAR CC: COMPLETION_CODE);
0560    1.0558  PROCEDURE OUTTEXT(S: STREAM;
0561    1.0559                    UNPACKED_TEXT: TEXT;
0562    1.0560                    VAR CC: COMPLETION_CODE);
0563    1.0561  PROCEDURE OUTSTRING(S: STREAM;
0564    1.0562                      UNPACKED_TEXT: TEXT;
0565    1.0563                      NO_OF_CHARS: INTEGER;
0566    1.0564                      VAR CC: COMPLETION_CODE);
0567    1.0565  PROCEDURE OUTHEXA(S: STREAM;
0568    1.0566                    INT: UNIV INTEGER;
0569    1.0567                    PAD_CHAR: CHAR;
0570    1.0568                    VAR CC: COMPLETION_CODE);
0571    1.0569  PROCEDURE OUTINTEGER(S: STREAM;
0572    1.0570                       INT: UNIV INTEGER;
0573    1.0571                       FORMAT: UNIV INTEGER;
0574    1.0572                       VAR CC: COMPLETION_CODE);
0575    1.0573  PROCEDURE OUTLONG_INTEGER(S: STREAM;
0576    1.0574                            LINT: UNIV LONG_INTEGER;
0577    1.0575                            FORMAT: UNIV INTEGER;
0578    1.0576                            VAR CC: COMPLETION_CODE);
0579    1.0577  PROCEDURE OUTNL(S: STREAM; VAR CC: COMPLETION_CODE);
0580    1.0578  
0581    1.0579  PROCEDURE MARK(VAR TOP: INTEGER);
0582    1.0580  PROCEDURE RELEASE(TOP: INTEGER);
0583    1.0581  FUNCTION FREE_SPACE: INTEGER;
0584    1.0582  FUNCTION CONTENTS(BASE_REL_ADDR: LONG_INTEGER): INTEGER;
0585    1.0583  PROCEDURE EXIT;
0586    1.0584  PROCEDURE CURRENT_LEVEL(VAR LEVEL: INTEGER);
0587    1.0585  PROCEDURE LONG_EXIT(LEVEL: INTEGER);
0588    1.0586  FUNCTION CURRENT_LINE: INTEGER;
0589    1.0587  FUNCTION REL_ADDR(FIRST_ELEMENT: UNIV ELEMENT): INTEGER;
0590    1.0588  PROCEDURE GET_ABS_ADDR(FIRST_ELEMENT: UNIV ELEMENT;
0591    1.0589                         VAR WORD_ADDR: WORD_ADDRESS);
0592    1.0590  PROCEDURE COPY(SOURCE, DEST: BYTE_ADDRESS; NO_OF_BYTES: INTEGER);
0593    1.0591  PROCEDURE PACK(FIRST_ELEMENT_OF_UNPACKED: UNIV ELEMENT;
0594    1.0592                 VAR FIRST_ELEMENT_OF_PACKED: UNIV ELEMENT;
0595    1.0593                 NO_OF_BYTES: INTEGER);
0596    1.0594  PROCEDURE UNPACK(FIRST_ELEMENT_OF_PACKED: UNIV ELEMENT;
0597    1.0595                   VAR FIRST_ELEMENT_OF_UNPACKED: UNIV ELEMENT;
0598    1.0596                   NO_OF_BYTES: INTEGER);
0599    1.0597  PROCEDURE PACK_SWAPPED(FIRST_ELEMENT_OF_UNPACKED: UNIV ELEMENT;
0600    1.0598                         VAR FIRST_ELEMENT_OF_PACKED: UNIV ELEMENT;
0601    1.0599                         NO_OF_BYTES: INTEGER);
0602    1.0600  PROCEDURE UNPACK_SWAPPED(FIRST_ELEMENT_OF_PACKED: UNIV ELEMENT;
0603    1.0601                           VAR FIRST_ELEMENT_OF_UNPACKED: UNIV ELEMENT;
0604    1.0602                           NO_OF_BYTES: INTEGER);
0605    1.0603  PROCEDURE RUN(F: FILE; VAR PARAM: PARAMTYPE;
0606    1.0604                VAR LINE: INTEGER; VAR RESULT: PROGRESULT);
0607    1.0605  FUNCTION CREATE_LONG(LEAST, MOST: UNIV INTEGER): LONG_INTEGER;
0608    1.0606  PROCEDURE SPLIT_LONG(L: LONG_INTEGER; VAR LEAST, MOST: UNIV INTEGER);
0609    1.0607  PROCEDURE ASSIGNBITS(VALUE: UNIV BITVALUE; VAR P: UNIV PAGE;
0610    1.0608                       FIRSTBIT, NO_OF_BITS: INTEGER);
0611    1.0609  PROCEDURE SKIPBITS(VALUE: UNIV BITVALUE; P: UNIV PAGE;
0612    1.0610                     VAR FIRSTBIT: INTEGER; NO_OF_BITS: INTEGER;
0613    1.0611                     VAR BITSSKIPPED: INTEGER);
0614    1.0612  PROCEDURE SET_TRACE(S: STREAM; MASK: INTEGER);
0615    1.0613  PROCEDURE PRINT_TRACE(ON: BOOLEAN);
0616    1.0614  
0617    1.0615  PROGRAM MAIN(VAR PARAM: PARAMTYPE);
0618    1.0616 
 
0619    0.0003  %XREF
0620    0.0004  %XREF
0621    0.0005  %XREF
0622    0.0006  $@FILSYS-FILE*SSD*MXSYS.D*USERS.D*FP.D*TOS_0202.D*S.D*HEAD
 
0623    2.0001  "----------------------------------------------------------------------
0624    2.0002  
0625    2.0003    PROJECT:          CSS
0626    2.0004  
0627    2.0005    MODULE NAME:      MX-TOS
0628    2.0006    MODULE ID NMB:    CSS/7380
0629    2.0007    MODULE VERSION:   0202
0630    2.0008    MODULE TYPE:      OPERATING SYSTEM
0631    2.0009    MODULE FILES:     SEE FILE TOS.S
0632    2.0010    MERGE FILES:      SEE FILE TOS.S
0633    2.0011  
0634    2.0012    SPECIFICATIONS:   CSS/7380/USM/0116
0635    2.0013    AUTHOR/DATE:      JAS/841026
0636    2.0014  
0637    2.0015    DELIVERABLE:      YES
0638    2.0016    SOURCE LANGUAGE:  CR80 PASCAL
0639    2.0017    COMPILE COMPUTER: CR80MX
0640    2.0018    TARGET COMPUTER:  CR80MX
0641    2.0019    OPER. SYSTEM:     MX-AMOS
0642    2.0020  
0643    2.0021  -----------------------------------------------------------------------
0644    2.0022  
0645    2.0023    CHANGE RECORD:
0646    2.0024  
0647    2.0025    VERSION    AUTHOR/DATE    DESCRIPTION OF CHANGE
0648    2.0026    -------    -----------    ---------------------
0649    2.0027  
0650    2.0028       0201      FP/840901    First MX-TOS release
0651    2.0029  
0652    2.0030       0202     JAS/841026    Diverse errors corrected.
0653    2.0031                              The CLOSE command is now always
0654    2.0032                              accepted even if the system disk
0655    2.0033                              is inaccessible.
0656    2.0034                              Better handling of disk status
0657    2.0035                              changes when discarding.
0658    2.0036                              CC variable now only cleared when
0659    2.0037                              executing DO command.
0660    2.0038  
0661    2.0039  
0662    2.0040  ----------------------------------------------------------------------"
0663    2.0041  
0664    2.0042  
0665    2.0043  
0666    2.0044  %CHECK
0667    2.0045  %NOUNIVCHECK
0668    2.0046  %FASTCODE
0669    2.0047  %SUMMARY
0670    2.0048  "PAGE"«ff»
0671    2.0049 
 
0672    0.0007  $@FILSYS-FILE*SSD*MXSYS.D*USERS.D*FP.D*TOS_0202.D*S.D*LIMITS
 
0673    3.0001  
0674    3.0002  CONST  PROCESS_LIMIT  = 66;
0675    3.0003  CONST  PROGRAM_LIMIT  = 22;
0676    3.0004  CONST  TERMINAL_LIMIT = 22;
0677    3.0005  CONST  CPU_LIMIT      =  3;
0678    3.0006  CONST  DEVICE_LIMIT   = 10;
0679    3.0007  CONST  FILSYS_LIMIT   =  1;
0680    3.0008  CONST  LOAD_Q_LIMIT   =  TERMINAL_LIMIT;
0681    3.0009  
0682    3.0010 
 
0683    0.0008  $@FILSYS-FILE*SSD*MXSYS.D*USERS.D*FP.D*TOS_0202.D*S.D*TYPES
 
0684    4.0001  
0685    4.0002  TYPE TERMINAL_INDEX = 0..TERMINAL_LIMIT;
0686    4.0003  TYPE PROCESS_INDEX  = 0..PROCESS_LIMIT;
0687    4.0004  TYPE CPU_INDEX      = 0..CPU_LIMIT;
0688    4.0005  TYPE PROGRAM_INDEX  = 0..PROGRAM_LIMIT;
0689    4.0006  TYPE FILSYS_INDEX   = 0..FILSYS_LIMIT;
0690    4.0007  TYPE DEVICE_INDEX   = 0..DEVICE_LIMIT;
0691    4.0008  TYPE LOAD_Q_INDEX   = 0..LOAD_Q_LIMIT;
0692    4.0009  
0693    4.0010  CONST  ECHO_MODE  =  0;
0694    4.0011  CONST  VDU_MODE   =  1;
0695    4.0012  CONST  WAIT_MODE  =  2;
0696    4.0013  CONST  ITT_MODE   =  3;
0697    4.0014  CONST  FF_MODE    =  4;
0698    4.0015  
0699    4.0016  CONST IBUFLGT = 80;
0700    4.0017  
0701    4.0018  CONST TOS_CYCLE = 200;
0702    4.0019  
0703    4.0020  TYPE OPEN_STATE =
0704    4.0021         ( SYSTEM_CLOSED,   SYSDEV_ASSIGNED,  SYSVOL_MOUNTED, USERED_ON,
0705    4.0022           WF_CREATED,      MD_FOUND,         SYSDIR_FOUND,   TOSDIR_FOUND,
0706    4.0023           PASSES_FOUND,    ERRORTEXTS_FOUND, SYSTEM_OPEN);
0707    4.0024  
0708    4.0025  
0709    4.0026  TYPE OS_MODE_TYPE = (SLAVE, MASTER, DUAL, DUALIZABLE,
0710    4.0027                       PARTIAL_DUALIZABLE);
0711    4.0028  
0712    4.0029  TYPE IBUF_TYPE = ARRAY [1..IBUFLGT] OF INTEGER;
0713    4.0030  
0714    4.0031  TYPE NEWS_TYPE = RECORD
0715    4.0032         BYTE_COUNT  : INTEGER;
0716    4.0033         MSG         : IBUF_TYPE
0717    4.0034     END;
0718    4.0035  
0719    4.0036  
0720    4.0037  
0721    4.0038  CONST  PRHL=   26;
0722    4.0039  CONST  PGHL = 11;
0723    4.0040  CONST  PROGRAMMEMORY = 10;
0724    4.0041  CONST  UTILITYPROGRAM = #10;
0725    4.0042  CONST  BNREENTRANT = 0;
0726    4.0043  CONST  BNRESIDENT  = 1;
0727    4.0044  CONST  BNPERMANENT = 2;
0728    4.0045  CONST  BNMONITOR   = 3;
0729    4.0046  CONST  BNUTILITY   = 4;
0730    4.0047  CONST  BNPASCAL    = 5;
0731    4.0048  CONST  RELEASEMEMORY = 0;
0732    4.0049  CONST  ALLOCATEMEMORY = 1;
0733    4.0050  CONST  TRANSFERMEMORY =    4;
0734    4.0051  CONST  MESSAGE_DELAY_PARENTSIGNAL = #302;
0735    4.0052  CONST  PUBLIC_USER = #FFFC;
0736    4.0053  CONST  UNSIGNED4 = #8420 ;
0737    4.0054  CONST  UNSIGNED5 = #8520 ;
0738    4.0055  CONST  SIGNED5=    #0520 ;
0739    4.0056  CONST  VACCIDLE=   VINTERRUPTMASK;
0740    4.0057  CONST  VCPUNAME0=  VHWPRIORITY;
0741    4.0058  CONST  VCPUNAME1=  6;
0742    4.0059  CONST  VCPUNAME2=  7;
0743    4.0060  CONST  NOEVENT=    #FFFF;
0744    4.0061  
0745    4.0062  CONST  RESERVE= #F08;
0746    4.0063  
0747    4.0064  TYPE EQUALITY_OPERATOR = ( EQ_OP, NE_OP, LT_OP, GT_OP);
0748    4.0065  TYPE UNPACKED_NAME = ARRAY [0..7] OF CHAR;
0749    4.0066  
0750    4.0067  TYPE TEXT = ARRAY [1..300] OF CHAR;
0751    4.0068  
0752    4.0069  TYPE PROCESS_STATE = (FREE, CREATED, STOPPED, RUNNING, PERMANENT);
0753    4.0070  
0754    4.0071  TYPE TERMINAL_INIT_REC = RECORD
0755    4.0072         OPER, ADDR, MODE, LINEWIDTH, TIMEOUT: INTEGER
0756    4.0073     END;
0757    4.0074  
0758    4.0075  TYPE DEVICE_STATE = (DEASSIGNED, ASSIGNED, ASSIGNED_DUAL, MOUNTED, RESERVED,
0759    4.0076                       RESERVED_DUAL, MOUNTED_DUAL, MOUNTED_DUALIZABLE,
0760    4.0077                       DUALIZING_SINGLE, MOUNTED_PARTIAL_DUALIZABLE);
0761    4.0078  
0762    4.0079  TYPE DUAL_STATE = (DISK_1_DISCARDED, DISK_0_DISCARDED, FULL_DUAL);
0763    4.0080  
0764    4.0081  TYPE DEVICE_TYPE = ARRAY [0..6] OF CHAR;
0765    4.0082  
0766    4.0083  
0767    4.0084  TYPE TERMINAL_IO_MODE = (TIDLE, TIN, TOUT);
0768    4.0085  
0769    4.0086  TYPE HEADER_KIND = (ILLEGAL_KIND, PROGRAM_KIND, PROCESS_KIND);
0770    4.0087  
0771    4.0088  TYPE PROCESS_HEADER = RECORD
0772    4.0089         KIND                 :  HEADER_KIND;
0773    4.0090         SIZE                 :  INTEGER;
0774    4.0091         PROC_NAME            :  PACKED_NAME3;
0775    4.0092         CPU_NAME             :  PACKED_NAME3;
0776    4.0093         PRIO, CAPAB, CLAIM, EXECSIZE:  INTEGER;
0777    4.0094         IO_PARS              :  ARRAY [1..4] OF INTEGER;
0778    4.0095         MSGS                 :  INTEGER;
0779    4.0096         CURDIR               :  INTEGER;
0780    4.0097         MEM_RANGE            :  INTEGER;
0781    4.0098         DUMMY                :  ARRAY [0..4] OF INTEGER;
0782    4.0099         LEVEL, BOUND         :  INTEGER
0783    4.0100     END;
0784    4.0101  
0785    4.0102  TYPE PROGRAM_NAME = PROCESS_NAME;
0786    4.0103  
0787    4.0104  TYPE LOAD_RESULT = INTEGER;
0788    4.0105  
0789    4.0106  TYPE MEMORY_TYPE = (FORPROGRAM, FORDATA);
0790    4.0107  
0791    4.0108  TYPE PRINTERSTATETYPE = (PRINTERIDLE, PRINTERQUEUED, PRINTERACTIVE);
0792    4.0109  
0793    4.0110  TYPE PRINTFILEREC = RECORD
0794    4.0111         PRINTERSTATE         :  PRINTERSTATETYPE;
0795    4.0112         PRINTERNAME          :  PROCESS_NAME;
0796    4.0113         RESERVED             :  BOOLEAN;
0797    4.0114         SEMA                 :  FILE;
0798    4.0115         RESERVER             :  INTEGER
0799    4.0116     END;
0800    4.0117  
0801    4.0118  TYPE RQ_ANSWER = (RQ_OK, RQ_INV_REQUEST, RQ_INV_PROC, RQ_INV_PROC_STATE,
0802    4.0119                 RQ_INV_FSN, RQ_FAIL_TASK, RQ_LOAD_ERROR, RQ_Q_OFFER);
0803    4.0120  
0804    4.0121  TYPE SERVICE_REQUEST = (STARTTASK, STOPTASK, REMOVETASK, LOGOFF,
0805    4.0122             LOADTASK_1, LOADTASK_2, INITTASK, RESERVEPRINT, RELEASEPRINT,
0806    4.0123             STARTPRINT, QTASK, DUALSECTORS, DUALTERMINATED);
0807    4.0124  
0808    4.0125  TYPE SERVICE_REQUEST_MESSAGE = RECORD
0809    4.0126         CASE RQTYPE          :SERVICE_REQUEST OF
0810    4.0127             STARTTASK, STOPTASK, REMOVETASK, LOADTASK_1, INITTASK:
0811    4.0128                     (PNAME   :  PROCESS_NAME);
0812    4.0129             LOADTASK_2:  (GNAME:  PACKED_NAME2);
0813    4.0130             DUALSECTORS:   ( SDEV: DEVICE_NAME;
0814    4.0131                              SECTORS: LONG_INTEGER);
0815    4.0132             DUALTERMINATED:( CDEV: DEVICE_NAME;
0816    4.0133                              CC: COMPLETION_CODE);
0817    4.0134             STARTPRINT, QTASK,
0818    4.0135             LOGOFF, RESERVEPRINT, RELEASEPRINT: (DUMMY : INTEGER)
0819    4.0136     END;
0820    4.0137  
0821    4.0138  TYPE USERENTRYTYPE = RECORD
0822    4.0139         ID           :       INTEGER;
0823    4.0140         PASSWORD     : PACKED_NAME
0824    4.0141     END;
0825    4.0142  
0826    4.0143  TYPE FILE_ID = RECORD
0827    4.0144         XCOMPLETE     : BOOLEAN;
0828    4.0145         XFSN          : FILE_SYSTEM_NAME;
0829    4.0146         XVOL          : VOLUME_NAME;
0830    4.0147         XNAMELIST     : NAMELISTTYPE;
0831    4.0148         XNAMENBR      : INTEGER
0832    4.0149     END;
0833    4.0150  
0834    4.0151  TYPE STATUS_TYPE = (SCOMPLETE, SDEVICES, STERMINALS, SCPUS, SPROCESSES, SPROGRAMS);
0835    4.0152       DEVICE_COMMAND = (SASSIGN, SDEASSIGN, SRESERVE, SRELEASE,
0836    4.0153                         SMOUNT,  SDISMOUNT, SUPDATE, SEXMOUNT,
0837    4.0154                         SUNMOUNT, SDISCARD, SDUALIZE, SSTARTDUALIZE,
0838    4.0155                         SFINISHDUALIZE);
0839    4.0156  
0840    4.0157  TYPE PASSES = (SERVICE_PASS, COMMAND_PASS, LOGIN_PASS, RUN_PASS, TERMINALON_PASS,
0841    4.0158                 STATUS_PASS, PRINT_PASS, DEVICE_PASS, LTUON_PASS, LPON_PASS);
0842    4.0159  
0843    4.0160  TYPE TRIPLE = RECORD
0844    4.0161         LONG      : LONG_INTEGER;
0845    4.0162         EXTEND    : INTEGER
0846    4.0163     END;
0847    4.0164  
0848    4.0165  const
0849    4.0166      min_priority= 7;
0850    4.0167  
0851    4.0168  type
0852    4.0169      queue_control_head=
0853    4.0170          record
0854    4.0171              current_PCB             : integer;
0855    4.0172              schedule_count          : integer;
0856    4.0173              schedule_reset_value    : integer;
0857    4.0174              slice_size              : integer;
0858    4.0175              accumulated_ticks       : triple
0859    4.0176          end;
0860    4.0177  
0861    4.0178  type
0862    4.0179      CPUCB=
0863    4.0180          record
0864    4.0181              chain                   : integer;
0865    4.0182              name                    : packed_name3;
0866    4.0183              access                  : integer;
0867    4.0184              hw_no                   : integer;
0868    4.0185              logical_id              : integer;
0869    4.0186              iv                      : integer;
0870    4.0187              idle_PCB                : integer;
0871    4.0188              accumulated_idle_ticks  : triple;
0872    4.0189              firmware_release        : integer;
0873    4.0190              existing                : Boolean;
0874    4.0191              running_PCB             : pointer;
0875    4.0192              current_priority        : integer;
0876    4.0193              queue_heads             : array [ 0..min_priority ] of
0877    4.0194                                          queue_control_head
0878    4.0195          end;
0879    4.0196  
0880    4.0197  TYPE  CDC_TYPE = (MINI_MODULE, STORAGE_MODULE, CARTRIDGE_MODULE);
0881    4.0198  
0882    4.0199  
0883    4.0200  TYPE  DRIVER_KIND = (FLOPPY_DRIVER,CDC_DRIVER,
0884    4.0201                       PRINTER_DRIVER,CARD_READER_DRIVER,
0885    4.0202                       MAGNETIC_TAPE_DRIVER);
0886    4.0203  
0887    4.0204  TYPE  DEVICE_TABLE_ENTRY =
0888    4.0205          RECORD
0889    4.0206            DEV_KIND             : INTEGER;
0890    4.0207            CDC                  : CDC_TYPE;
0891    4.0208            DRIVER               : DRIVER_KIND;
0892    4.0209            LAST_UNIT            : INTEGER;      "LAST UNIT ALLOWED BY DRIVER"
0893    4.0210            SECTOR_COUNT0        : LONG_INTEGER; "SECTORS ON SUBUNIT 0"
0894    4.0211            SECTORS_PR_CYLINDER0 : INTEGER;      "SECTORS/CYLINDER ON SUBUNIT 0"
0895    4.0212            SECTOR_COUNT1        : LONG_INTEGER;
0896    4.0213            SECTORS_PR_CYLINDER1 : INTEGER
0897    4.0214          END "DEVICE_TABLE_ENTRY";
0898    4.0215  
0899    4.0216  TYPE TERMINAL_TYPE  = (TERM, LTU, PRINTER);
0900    4.0217  TYPE TERMINL = RECORD
0901    4.0218         PROCESSREF           :  PROCESS_INDEX;
0902    4.0219         OPERATION            :  OPERATION_REFERENCE;
0903    4.0220         MODE                 :  TERMINAL_IO_MODE;
0904    4.0221         FIL                  :  FILE;
0905    4.0222         FILADR               :  FILE_ADDRESS;
0906    4.0223         USED                 :  BOOLEAN;
0907    4.0224         TERM_TYPE            :  TERMINAL_TYPE;
0908    4.0225         NAME                 :  ARRAY [0..0] OF INTEGER;
0909    4.0226         NEXT                 :  TERMINAL_INDEX;  "POINTER TO NEXT TERMINAL IF AN LTU"
0910    4.0227         TUSERS               :  INTEGER;
0911    4.0228         REC                  :  IBUF_TYPE;
0912    4.0229         REF_RECDESCRIPT      :  BLEPTR
0913    4.0230     END;
0914    4.0231  
0915    4.0232  TYPE PROC = RECORD
0916    4.0233         NAME                 :  PROCESS_NAME;
0917    4.0234         USRID                :  USERID;
0918    4.0235         BASE                 :  INTEGER;
0919    4.0236         EVT                  :  INTEGER;  "MESSAGE FROM PARENT TASK"
0920    4.0237         PARENT               :  PROCESS_INDEX;
0921    4.0238         PPROGRAM             :  PROGRAM_INDEX;
0922    4.0239         PTERMINAL            :  TERMINAL_INDEX;
0923    4.0240         STATE                :  PROCESS_STATE;
0924    4.0241         MEM                  :  INTEGER;
0925    4.0242         PPAGE                :  INTEGER;
0926    4.0243         UTIL_EVT             :  INTEGER;
0927    4.0244         PRIOR                :  INTEGER;
0928    4.0245         CPU_NR               :  INTEGER;
0929    4.0246         CPU_NAME             :  PACKED_NAME3
0930    4.0247     END;
0931    4.0248  
0932    4.0249  TYPE TICKS = RECORD
0933    4.0250         IDLING     : TRIPLE;
0934    4.0251         WORKING    : ARRAY [ 0..MIN_PRIORITY ] OF TRIPLE
0935    4.0252     END;
0936    4.0253  
0937    4.0254  TYPE CPU_DESCR = RECORD
0938    4.0255         NAME                 :  PACKED_NAME3;
0939    4.0256         EXISTS               :  BOOLEAN;
0940    4.0257         HW_NO                :  INTEGER;
0941    4.0258         FW_RELEASE           :  INTEGER;
0942    4.0259         LAST_TIME            :  TRIPLE;
0943    4.0260         CUR_TIME             :  TRIPLE;
0944    4.0261         LAST_TICKS           :  TICKS;
0945    4.0262         CUR_TICKS            :  TICKS
0946    4.0263     END;
0947    4.0264  
0948    4.0265  TYPE PROGRAM_HEADER = RECORD
0949    4.0266         KIND                 :  HEADER_KIND;
0950    4.0267         SIZE                 :  INTEGER;
0951    4.0268         NAME                 :  PROGRAM_NAME;
0952    4.0269         PTYPE, START, MICRO,
0953    4.0270         CHECKSUM, MEM_RANGE  :  INTEGER
0954    4.0271     END;
0955    4.0272  
0956    4.0273  TYPE PROGR = RECORD
0957    4.0274         HEADER               :  PROGRAM_HEADER;
0958    4.0275         PROG, MEM, USERS,
0959    4.0276         PGPAGE               :  INTEGER
0960    4.0277     END;
0961    4.0278  
0962    4.0279  TYPE TDEVICE = RECORD
0963    4.0280         FSYS                 :  FILSYS_INDEX;
0964    4.0281         DEV                  :  DUAL_DEVICE_DESCRIPTION;
0965    4.0282         VOLUME               :  VOLUME_NAME;
0966    4.0283         USER                 :  INTEGER;
0967    4.0284         STATE                :  DEVICE_STATE;
0968    4.0285         DS                   :  DUAL_STATE;
0969    4.0286         DUALIZED             ,
0970    4.0287         CHUNCK               :  LONG_INTEGER;
0971    4.0288         INTERVAL             :  INTEGER;
0972    4.0289         DUALIZING            :  BOOLEAN;
0973    4.0290         PARTNERDISK          :  INTEGER;
0974    4.0291         DUALIZER             :  PROCESS_INDEX;
0975    4.0292         UPDATE_RESET         :  INTEGER;
0976    4.0293         UPDATE_COUNT         :  INTEGER
0977    4.0294     END;
0978    4.0295  
0979    4.0296  TYPE LOAD_Q_ELEM_TYPE = RECORD
0980    4.0297         EVT                  :  INTEGER;           "SAVED EVENT ID"
0981    4.0298         USED                 :  BOOLEAN;
0982    4.0299         P                    :  PROCESS_INDEX;
0983    4.0300         F