DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦970db2e24⟧ TextFile

    Length: 153216 (0x25680)
    Types: TextFile
    Names: »D48«

Derivation

└─⟦2294a1cd1⟧ Bits:30005867/disk06.imd Dokumenter (RCSL m.m.)
    └─⟦this⟧ »D48« 

TextFile

                                                 i 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
              1.  GENERAL DESCRIPTION ....................................   1 
           
          2.  LOGIC INTERCONNECTION ..................................   2 
           
          3.  PROGRAMMING THE DMA-CHANNEL ............................   3 
           
          4.  PROGRAMMING THE Z80A-CTC ...............................   5 
           
          5.  PROGRAMMING OF THE WDC701 ..............................   6 
              5.1  Task Files Basics .................................   6 
              5.2  Register Array ....................................   6 
              5.3  Register Definitions ..............................   6 
                   5.3.1  Command Register ...........................   6 
                   5.3.2  Status Register ............................   6 
                   5.3.3  SDH Register ...............................   7 
                   5.3.4  Cylinder Number ............................   8 
                   5.3.5  Sector Number ..............................   8 
                   5.3.6  Sector Count ...............................   8 
                   5.3.7  Error Register .............................   8 
                   5.3.8  Write Precomp ..............................   9 
                   5.3.9  Data Register ..............................   9 
              5.4  Status Registers ..................................   9 
              5.5  Status Register Bits ..............................  10 
                   5.5.1  Error ......................................  10 
                   5.5.2  Data Request ...............................  10 
                   5.5.3  Seek Complete ..............................  10 
                   5.5.4  Write Fault ................................  10 
                   5.5.5  Ready ......................................  10 
                   5.5.6  Busy .......................................  11 
              5.6  Error Register Bits ...............................  11 
                   5.6.1  DAM Not Found ..............................  11 
                   5.6.2  TR000 Error ................................  11 
                   5.6.3  Aborted Command ............................  11 
                   5.6.4  ID Not Found ...............................  11 
                   5.6.5  CRC Error ID ...............................  12 
                   5.6.6  CRC Error Data .............................  12 
                   5.6.7  Bad Block Detect ...........................  12 
           \f

                                                 ii 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _(_c_o_n_t_i_n_u_e_d_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          6.  COMMANDS ...............................................  13 
              6.1  Command Summary ...................................  13 
                   6.1.1  Stepping Rates .............................  14 
                   6.1.2  DMA Read ...................................  14 
              6.2  Type I Commands ...................................  14 
                   6.2.1  Restore ....................................  14 
                   6.2.2  Seek .......................................  15 
              6.3  Type II Commands ..................................  15 
                   6.3.1  Read Sector ................................  16 
                          6.3.1.1  Implied Seek ......................  16 
                          6.3.1.2  Retries ...........................  16 
                          6.3.1.3  Auto Restore ......................  16 
                          6.3.1.4  Hard Errors .......................  17 
                          6.3.1.5  Error Severity Levels .............  17 
                          6.3.1.6  Normal Completion .................  18 
              6.4  Type III Commands .................................  18 
                   6.4.1  Write Sector ...............................  18 
                          6.4.1.1  Implied Seek ......................  18 
                          6.4.1.2  Retries ...........................  19 
                          6.4.1.3  Auto Restore ......................  19 
                          6.4.1.4  Hard Errors .......................  19 
                   6.4.2  Format Track ...............................  19 
                          6.4.2.1  Implied Seek ......................  20 
                          6.4.2.2  Track Format ......................  21 
           
          7.  FORMATTING .............................................  22 
              7.1  Formatting a Track ................................  22 
              7.2  Interleaving ......................................  22 \f

F_       1_._ _ _ _ _ _ _ _ _G_E_N_E_R_A_L_ _D_E_S_C_R_I_P_T_I_O_N_    1.
           
          This manual is a description of the Winchester Disk Controller
          WDC701 connected to the RC702 microcomputer system. The control-
          ler WDC701 is based on the WD1000 Winchester disk controller from
          WESTERN DIGITAL CORPORATION. The interconnection to RC702 is made
          using WCT701 Winchester Controller Terminals and WCA701 Winches-
          ter Controller Adapter. WCA701 is housed in RC702 and contains
          the interconnection cable and WDC701. WCT701 is housed in the
          same chassis as the first Winchester Disk Drive. The interconnec-
          tion is shown in fig. 1. 
           
           \f

F_       2_._ _ _ _ _ _ _ _ _L_O_G_I_C_ _I_N_T_E_R_C_O_N_N_E_C_T_I_O_N_    2.
           
          Information to and from the controller is made using the 8 regis-
          ters in the WDC701. The addresses used are 60 (Hex) to 67 (Hex).
          Data transfer between the controller and the memory is done using
          the DMA channel No 0. An interrupt from the controller is in the
          WCA701 supplied to a Z80A-CTC integrated circuit, which converts
          the interrupt, so it fits the Z80A-CPU. 
           
          Programming is divided into three parts: 
           
               1) Programming the DMA-channel No 0 
               2) Programming the Z80A-CTC to the interrupt circuit 
               3) Programming the five commands to the WDC701 
           
           \f

F_       3_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_M_I_N_G_ _T_H_E_ _D_M_A_-_C_H_A_N_N_E_L_    3.
           
          WDC701 uses channel No 0 of the DMA-circuit. The device number is
          F0 to FF. The DMA in RC702 is based on Am9517A from Advanced
          Micro Devices or 8237A from Intel. Programming information may be
          supplied from one of the two companies. 
           
           \f

F_                  
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 1: Interconnection RC702 to Winchester. 
           \f

F_       4_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_M_I_N_G_ _T_H_E_ _Z_8_0_A_-_C_T_C_    4.
           
          The Z80A-CTC circuit is only used to change the interrupt from
          the controller to fit the Z80A system. The Z80A-CTC contains four
          channels and only channel No. 0 is used. The device numbers are
          44 (Hex) to 47 (Hex). The Z80A-CTC is supplied from Zilog and
          programming information may be supplied from this company. 
           
           \f

F_       5_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_M_I_N_G_ _O_F_ _T_H_E_ _W_D_C_7_0_1_    5.
           
5_._1_ _ _ _ _ _ _ _T_a_s_k_ _F_i_l_e_s_ _B_a_s_i_c_s_    5.1
           
          The WDC701 performs all disk functions through a set of registers
          called the Task File. These registers are loaded with parameters
          such as Sector Number, Cylinder Number etc. prior to issuing a
          command. 
           
          The registers are selected the following way. 
           
           
5_._2_ _ _ _ _ _ _ _R_e_g_i_s_t_e_r_ _A_r_r_a_y_    5.2
           
M_           _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
           _D_e_v_i_c_e_ _A_d_d_r_e_s_s_ _(_H_e_x_)_ _ _ _ _ _ _ _I_n_p_u_t_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_u_t_p_u_t_ _ _ _ _ _ _ _ _ _ _ _
           60                         Data Register       Data Register 
           61                         Error Register      Write Precomp 
           62                         Sector Count        Sector Count 
           63                         Sector Number       Sector Number 
           64                         Cylinder Low        Cylinder Low 
           65                         Cylinder High       Cylinder High 
           66                         Size/Drive/Head     Size/Drive/Head 
P_           _6_7_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _S_t_a_t_u_s_ _R_e_g_i_s_t_e_r_ _ _ _ _ _C_o_m_m_a_n_d_ _R_e_g_i_s_t_e_r_ _
           
                  
     5_._3_ _ _ _ _ _ _ _R_e_g_i_s_t_e_r_ _D_e_f_i_n_i_t_i_o_n_s_    5.3
           
5_._3_._1_ _ _ _ _ _C_o_m_m_a_n_d_ _R_e_g_i_s_t_e_r_    5.3.1
           
          All commands are loaded into this register after the task regis-
          ters have been set. T_h_e_ _C_o_m_m_a_n_d_ _R_e_g_i_s_t_e_r_ _i_s_ _a_ _w_r_i_t_e_-_o_n_l_y_ _r_e_g_i_s_-_
          t_e_r_. 
           
           
    5_._3_._2_ _ _ _ _ _S_t_a_t_u_s_ _R_e_g_i_s_t_e_r_    5.3.2
           
          After execution of a command, the Status Register is internally\f

          loaded with status information pertaining to the command ex-
          ecuted. The Host must read this register to determine successful
          execution of the command. The Status Register is a read-only re-
          gister; it cannot be written to by the host. If the busy bit is
          set, no other bits in this register are valid. 
           
               
    5_._3_._3_ _ _ _ _ _S_D_H_ _R_e_g_i_s_t_e_r_    5.3.3
           
          This register contains the sector Size, Drive select and Head
          select bits. The SDH register is a R/W register organized as
          follows: 
           
M_                    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
          Bit       _ _7_ _ _ _ _6_ _ _ _ _5_ _ _ _ _4_ _ _ _ _3_ _ _ _ _2_ _ _ _ _1_ _ _ _ _0_ _ _ 
          Function   0     Sec.      Drive        Head 
P_                    _ _ _ _ _ _ _ _S_i_z_e_ _ _ _ _ _ _S_e_l_e_c_t_ _ _ _ _ _ _S_e_l_e_c_t_ _ _ _ _ 
           
M_                           _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                     Bit    Bit        Sector Size 
                    _ _ _6_ _ _ _ _ _ _5_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                      0      0         256 Bytes 
                      0      1         512 - 
P_                    _ _ _1_ _ _ _ _ _ _1_ _ _ _ _ _ _ _ _ _1_2_8_ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           
M_                           _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                     Bit    Bit        Drive Selected 
                    _ _ _4_ _ _ _ _ _ _3_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                      0      0         Drive Sel 0 
                      0      1         -     -   1 
                      1      0         -     -   2 
P_                    _ _ _1_ _ _ _ _ _ _1_ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _-_ _ _ _3_ _ _ _ _ _ _ _ _ _ 
           
M_                    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                     Bit    Bit    Bit Head Selected 
                    _ _ _2_ _ _ _ _ _ _1_ _ _ _ _ _ _0_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                      0      0      0  Head 0 
                      0      0      1  -    1 
                      0      1      0  -    2 
                      0      1      1  -    3 
                      1      0      0  -    4 
                      1      0      1  -    5 
                      1      1      0  -    6 
P_                    _ _ _1_ _ _ _ _ _ _1_ _ _ _ _ _ _1_ _ _-_ _ _ _ _7_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           
           \f

5_._3_._4_ _ _ _ _ _C_y_l_i_n_d_e_r_ _N_u_m_b_e_r_    5.3.4
           
          These two registers form the cylinder number where the head is to
          be positioned on a Seek, Read or Write command. Internally, a se-
          parate set of Cylinder register values is maintained for each
          drive. The two least significant bits of the Cylinder High regis-
          ter form the most significant bits of the cylinder number as il-
          lustrated below. 
           
                           C_y_l_i_n_d_e_r_ _H_i_g_h_        C_y_l_i_n_d_e_r_ _L_o_w_ 
M_          Register bits:   76543210    76543210 
P_          Cylinder bits:         A9    76543210 
                  
           
         5_._3_._5_ _ _ _ _ _S_e_c_t_o_r_ _N_u_m_b_e_r_    5.3.5
           
          This register is loaded with the desired sector number prior to a
          Read or Write command. The Sector Number register is a R/W regis-
          ter and may be read or written to by the host. 
           
           
5_._3_._6_ _ _ _ _ _S_e_c_t_o_r_ _C_o_u_n_t_    5.3.6
           
              This register is loaded with the number of sectors to be format-
          ted during a Format command. During the Format command, this re-
          gister is decremented to zero and must be re-loaded for each for-
          mat operation. 
           
               
    5_._3_._7_ _ _ _ _ _E_r_r_o_r_ _R_e_g_i_s_t_e_r_    5.3.7
           
          This register contains specific fault information pertaining to
          the last command executed. This register is valid only if the
          Error bit in the Status register is set. The Error Register is
          read only. 
           
           \f

         5_._3_._8_ _ _ _ _ _W_r_i_t_e_ _P_r_e_c_o_m_p_    5.3.8
           
          The Write Precompensation Register holds the cylinder number
          where the RWC line will be asserted and Write Precompensation
          logic is to be turned on. This write-only register is loaded with
          the cylinder number divided by 4 to achieve a range of 1024
          cylinders. E.g. if write precompensation is desired for cylinder
          128 (80 Hex) and higher, this register must be loaded with 32 (20
          Hex). The Write Precompensation delay is fixed at 10 nanoseconds
          from nomimal. 
           
          Write Precompensation must start at cylinder xx (yy Hex). 
           
           
5_._3_._9_ _ _ _ _ _D_a_t_a_ _R_e_g_i_s_t_e_r_    5.3.9
           
          This register is via the DMA-Controller connected to the main
          memory, and should not be read from or written to directly from
          the CPU. 
           
           
5_._4_ _ _ _ _ _ _ _S_t_a_t_u_s_ _R_e_g_i_s_t_e_r_s_    5.4
           
          There are two registers in the WDC701 that are used to monitor
          the execution of commands. They are the Status Register and the
          Error Register. Each bit of these registers is used to define a
          particular type of status or eror condition: 
           
M_           _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
           _B_i_t_ _ _ _ _ _ _ _ _S_t_a_t_u_s_ _R_e_g_i_s_t_e_r_ _ _ _ _ _ _ _ _ _ _ _ _ _E_r_r_o_r_ _R_e_g_i_s_t_e_r_ _ _ _ _ _ _ _ _ _ _ _
           7          Busy                        Bad Block Detect 
           6          Ready                       CRC Error - Data Field 
           5          Write Fault                 CRC Error - ID Field 
           4          Seek Complete               ID Not Found 
           3          Data Request                -  -   - 
           2          -    -                      Aborted Command 
           1          -    -                      TR000 Error 
P_           _0_ _ _ _ _ _ _ _ _ _ _E_r_r_o_r_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _D_A_M_ _N_o_t_ _F_o_u_n_d_ _ _ _ _ _ _ _ _ _ _ _ _
           
           \f

5_._5_ _ _ _ _ _ _ _S_t_a_t_u_s_ _R_e_g_i_s_t_e_r_ _B_i_t_s_    5.5
           
5_._5_._1_ _ _ _ _ _E_r_r_o_r_    5.5.1
           
          Indicates, when set that one or more bits are set in the Error
          Register. It provides an efficient means of checking for an error
          condition by the host. This bit is reset on receipt of a new com-
          mand. 
           
               
    5_._5_._2_ _ _ _ _ _D_a_t_a_ _R_e_q_u_e_s_t_    5.5.2
           
          Functions identically to the DRQ line. When set, it indicates
          that the sector buffer is ready to accept data or contains data
          to be read out by the host. The data request bit is reset when
          the sector buffer has been fully read from or written to. Normal-
          ly, the host need not consult this bit to determine if a byte
          should be transferred. 
           
           
    5_._5_._3_ _ _ _ _ _S_e_e_k_ _C_o_m_p_l_e_t_e_    5.5.3
           
          Indicates the condition of the seek complete line on the selected
          drive. 
           
           
5_._5_._4_ _ _ _ _ _W_r_i_t_e_ _F_a_u_l_t_    5.5.4
           
          Indicates the condition of the Write Fault Line on a selected
          drive. The WD1000 will not execute any command if this bit is
          set. 
           
           
5_._5_._5_ _ _ _ _ _R_e_a_d_y_    5.5.5
           
          Indicates the condition of the Ready line of the selected drive.
          The WDC701 will not execute any commands unless the ready bit is
          set. 
           
           \f

         5_._5_._6_ _ _ _ _ _B_u_s_y_    5.5.6
           
          After issuing a command, this bit will be set indicating that the
          DWC701 is busy executing a command. No other bits or registers
          are valid when this bit is set. 
           
           
5_._6_ _ _ _ _ _ _ _E_r_r_o_r_ _R_e_g_i_s_t_e_r_ _B_i_t_s_    5.6
           
5_._6_._1_ _ _ _ _ _D_A_M_ _N_o_t_ _F_o_u_n_d_    5.6.1
           
          Will be set during a Read Sector command if, after successfully
          identifying the ID field, the Data Address mark was not detected
          within 16 bytes of ID field. 
           
           
5_._6_._2_ _ _ _ _ _T_R_0_0_0_ _E_r_r_o_r_    5.6.2
           
          Will be set during a Restore command if, after issuing 1023 step-
          ping pulses, TRACK 000 line was not asserted by the drive. 
           
           
5_._6_._3_ _ _ _ _ _A_b_o_r_t_e_d_ _C_o_m_m_a_n_d_    5.6.3
           
          Indicates that a valid command has been received that cannot be
          executed based on status information from the drive. E.g. if a
          write sector command has been issued while the Write Fault line
          is set, the Aborted command bit will be set. Interrogation of the
          Status and/or Error Registers by the host must be performed to
          determine the cause of failure. 
           
           
    5_._6_._4_ _ _ _ _ _I_D_ _N_o_t_ _F_o_u_n_d_    5.6.4
           
          When set, this bit indicates that an ID field containing a spec-
          ified cylinder, head, sector number or sector size was not found.
           
           \f

         5_._6_._5_ _ _ _ _ _C_R_C_ _E_r_r_o_r_ _I_D_    5.6.5
           
          Indicates that a CRC error was encountered in an ID field. 
           
           
5_._6_._6_ _ _ _ _ _C_R_C_ _E_r_r_o_r_ _D_a_t_a_    5.6.6
           
          Indicates that a CRC error was encountered in a data field during
          a Read Sector Command. 
           
           
5_._6_._7_ _ _ _ _ _B_a_d_ _B_l_o_c_k_ _D_e_t_e_c_t_    5.6.7
           
          Indicates that a Bad Block mark has been detected in the spec-
          ified ID field. If the command issued was a write sector command,
          no writing will be performed. If generated from a read sector
          command, the data field will not be read. Note that bad block
          will not be detected if the flaw is in the ID field. 
           
           \f

F_       6_._ _ _ _ _ _ _ _ _C_O_M_M_A_N_D_S_    6.
           
          The WDC701 executes five easy-to-use macro commands. Most com-
          mands feature automatic 'implied' seek, which means that the host
          system need not tell the WDC701 where the R/W heads of each drive
          are or when to move them. The controller automatically performs
          all needed retries on all errors encountered including data CRC
          errors. If the R/W head mis-positions, the WDC701 will automati-
          cally perform a restore and a re-seek. If the error is completely
          unrecoverable, the WDC701 will simulate a normal completion to
          simplify the host system's software. 
           
          Commands are executed by loading the command byte into the Com-
          mand Register while the controller is not busy (controller will
          not be busy if it has completed the previous command). The task
          file must be loaded prior to issuing a command. No command will
          execute if the Seek Complete or Ready lines are false or if the
          Write Fault line is true. Normally it is not necessary to poll
          these signals before issuing a command. If the WDC701 receives a
          command that is not defined in the following table, undefined re-
          sults will occur. 
           
           
    6_._1_ _ _ _ _ _ _ _C_o_m_m_a_n_d_ _S_u_m_m_a_r_y_    6.1
           
              For ease of discussion, commands are divided into three types
          which are summarized in the following table: 
           
M_           _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                                                  Bits 
           _T_y_p_e_ _ _ _ _C_o_m_m_a_n_d_ _ _ _ _ _ _ _ _ _ _ _7_ _ _ _6_ _ _ _5_ _ _ _4_ _ _ _3_ _ _ _2_ _ _ _1_ _ _ _0_ _ _ _ 
           _I_ _ _ _ _ _ _ _R_e_s_t_o_r_e_ _ _ _ _ _ _ _ _ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _1_ _ _ _r_3_ _ _r_2_ _ _r_1_ _ _r_0_ _ _ 
           _I_ _ _ _ _ _ _ _S_e_e_k_ _ _ _ _ _ _ _ _ _ _ _ _ _ _0_ _ _ _1_ _ _ _1_ _ _ _1_ _ _ _r_3_ _ _r_2_ _ _r_1_ _ _r_0_ _ _ 
           _I_I_ _ _ _ _ _ _R_e_a_d_ _S_e_c_t_o_r_ _ _ _ _ _ _ _0_ _ _ _0_ _ _ _1_ _ _ _0_ _ _ _D_ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _ 
           _I_I_I_ _ _ _ _ _W_r_i_t_e_ _S_e_c_t_o_r_ _ _ _ _ _ _0_ _ _ _0_ _ _ _1_ _ _ _1_ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _ 
P_           _I_I_I_ _ _ _ _ _F_o_r_m_a_t_ _T_r_a_c_k_ _ _ _ _ _ _0_ _ _ _1_ _ _ _0_ _ _ _1_ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _0_ _ _ _ 
           
                  \f

         6_._1_._1_ _ _ _ _ _S_t_e_p_p_i_n_g_ _R_a_t_e_s_    6.1.1
           
           
M_           _ _ _ _ _ _ _ _ _ _ _ _r_3_-_r_0_ _-_ _S_t_e_p_p_i_n_g_ _R_a_t_e_ _ _ _ _ _ _ _ _ 
           0000 = 10  S             1000 = 4.0 mS 
           0001 = 0.5 mS             1001 = 4.5 mS 
           0010 = 1.0 mS             1010 = 5.0 mS 
           0011 = 1.5 mS             1011 = 5.5 mS 
           0100 = 2.0 mS             1100 = 6.0 mS 
           0101 = 2.5 mS             1101 = 6.5 mS 
           0110 = 3.0 mS             1110 = 7.0 mS 
P_           _0_1_1_1_ _=_ _3_._5_ _m_S_ _ _ _ _ _ _ _ _ _ _ _ _ _1_1_1_1_ _=_ _7_._5_ _m_S_ _ 
           
                   Stepping rate of           ms is used: 
           
         6_._1_._2_ _ _ _ _ _D_M_A_ _R_e_a_d_    6.1.2
           
          D = 1 for DMA Mode which is used here. 
           
           
6_._2_ _ _ _ _ _ _ _T_y_p_e_ _I_ _C_o_m_m_a_n_d_s_    6.2
           
          These commands simply position the R/W heads of the selected
          drive. Both commands have explicit stepping rate fields. The
          lower four bits of these commands form the stepping rate. 
           
           
6_._2_._1_ _ _ _ _ _R_e_s_t_o_r_e_    6.2.1
           
          The Restore command is used to calibrate the position of the R/W
          head on each drive by stepping the head outward until the TR000
          line goes true. Upon receipt of the Restore command, the Busy bit
          in the Status Register is set. Cylinder High and Cylinder Low
          Registers are cleared. The lower four bits of the command byte
          are stored in the stepping rate register for subsequent implied
          seeks. The state of Seek Complete, Ready and Write Fault are
          sampled, and if an error condition exists, the Aborted command
          bit in the Error Register is set, the Error bit in the Status
          Register is set, an interrupt is generated and the Busy bit is
          reset. 
           \f

          If no errors are encountered thus far, the internal head position
          register for the selected drive is cleared. The TR000 line is
          sampled. If TR000 is true, an interrupt is generated and the Busy
          bit is reset. If TR000 is not true, stepping pulses at a rate de-
          termined by the stepping rate field are issued until the TR000
          line is activated. When TR000 is activated, the Busy bit is reset
          and an interrupt is issued. If the TR000 line is not activated
          within 1023 stepping pulses, the TR000 Error bit in the Error Re-
          gister and the Error bit in the Status Register are set, the Busy
          bit is reset and an interrupt is issued. 
           
           
     6_._2_._2_ _ _ _ _ _S_e_e_k_    6.2.2
           
          The Seek command positions the R/W head to a certain cylinder. It
          is primarily used to start two or more concurrent seeks on drives
          that support buffered stepping. Upon receipt of the Seek command,
          the Busy bit in the Status Register is set. The lower four bits
          of the command byte are stored in the stepping rate register for
          subsequent implied seeks. The state of Seek Complete, Ready and
          Write Fault are sampled, and if an error condition exists, the
          Aborted command bit in the Error Register is set, the Error bit
          in the Status Register is set, an interrupt is generated and the
          Busy bit is reset. 
           
          If no errors are encountered thus far, the internal head position
          register for the selected drive is updated, the direction line is
          set to the proper direction and a step pulse is issued for each
          cylinder to be stepped. When all stepping pulses have been is-
          sued, the Busy bit is reset and an interrupt is issued. Note that
          the Seek Complete line is not sampled after the Seek command, al-
          lowing seek operations to be started using drives with buffered
          seek capability. 
           
           
6_._3_ _ _ _ _ _ _ _T_y_p_e_ _I_I_ _C_o_m_m_a_n_d_s_    6.3
           
          This type of command is characterized by a transfer of a block of
          data from the WDC701 buffer to the host. This command has an im-
          plicit stepping rate as set by the last Restore or Seek command. 
           
           \f

6_._3_._1_ _ _ _ _ _R_e_a_d_ _S_e_c_t_o_r_    6.3.1
           
          The Read Sector command is used to read a sector of data from the
          disk to the host computer. Upon receipt of the Read command, the
          Busy bit in the Status Register is set. The state of Seek Com-
          plete, Ready and Write Fault are sampled, and if an error condi-
          tion exists, the Aborted Command bit in the Error Register is
          set, the Error bit in the Status Register is set and a normal
          completion is simulated. 
           
           
6_._3_._1_._1_ _ _ _I_m_p_l_i_e_d_ _S_e_e_k_    6.3.1.1
           
          If no errors are encountered so far, a Seek command is executed.
          The Seek Complete line is sampled. If the Seek Complete line does
          not go true witnin 128 Index pulses, then the Aborted command bit
          in the Error Register is set, the Error bit in the Status Regis-
          ter is set and a normal completion is simulated. 
           
           
6_._3_._1_._2_ _ _ _R_e_t_r_i_e_s_    6.3.1.2
           
          Once the head has settled over the desired cylinder, the WDC701
          will attempt to read the sector. The WDC701 performs all retries
          necessary to recover the data during the read command. The con-
          troller attempts to read the desired sector up to 16 times. It
          will attempt a retry if it does not find an ID, if the ID of that
          sector has a bad CRC, if the Data Address Mark (DAM) could not be
          found or even if the data was actually read from the disk but in-
          curred a data CRC error. 
           
           
6_._3_._1_._3_ _ _ _A_u_t_o_ _R_e_s_t_o_r_e_    6.3.1.3                                 .
           
          Every time the controller encounters an error, it records the
          occurance of that error in an internal register. If, after 16
          retries, the controller was not able to get a match on the ID
          field, it assumes that the head was possibly mis-positioned and
          executes an auto-restore. During the auto-restore, the stepping\f

          rate is implied to be equal to the Seek Complete period. After
          the auto-restore has been successfully completed, the controller
          re-seeks and attempts to read the sector once again. An auto-re-
          store will be performed only once per read or write sector com-
          mand. 
           
           
     6_._3_._1_._4_ _ _ _H_a_r_d_ _E_r_r_o_r_s_    6.3.1.4
           
          If the controller encounters a non-recoverable error, the con-
          troller examines its internal error history register. It then
          sets the bit in the Error Register of the highest severity in-
          curred. If the Data CRC Error bit is set, the data that last pro-
          duced that error will be available in the sector buffer. The Er-
          ror bit in the Status Register is set and a normal completion is
          simulated. 
           
           
6_._3_._1_._5_ _ _ _E_r_r_o_r_ _S_e_v_e_r_i_t_y_ _L_e_v_e_l_s_    6.3.1.5
           
          Although the WDC701 might encounter any number of errors in the
          course of executing a command, it only reports the most severe
          error. Errors are ranked from most severe to least severe as fol-
          lows: 
           
               1) Aborted Command 
               2) TR000 Error 
               3) Bad Block* 
               4) Data CRC Error 
               5) Data Address Mark Not Found 
               6) ID CRC Error 
               7) ID Not Found 
                
                  * Bad Block will only be detected if there is no ID CRC
                    Error or ID Not Found Error. 
           
           \f

6_._3_._1_._6_ _ _ _N_o_r_m_a_l_ _C_o_m_p_l_e_t_i_o_n_    6.3.1.6
           
          If the WDC701 encountered no errors, it is considered a normal
          completion. The busy bit is reset. The status of the DMA bit in
          the command byte is examined. After all the data have been moved
          from the buffer, the DMA bit in the command byte is consulted. If
          this bit is set (D = 1; DMA mode) then an interrupt will be is-
          sued. 
           
           
6_._4_ _ _ _ _ _ _ _T_y_p_e_ _I_I_I_ _C_o_m_m_a_n_d_s_    6.4
           
          This type of command is characterized by a transfer of a block of
          data from the host to the WDC701 buffer. These commands have im-
          plicit stepping rates as set by the last Restore or Seek command.
           
           
6_._4_._1_ _ _ _ _ _W_r_i_t_e_ _S_e_c_t_o_r_    6.4.1
           
          The Write Sector command is used to write a sector of data from
          the host computer to the disk. Upon receipt of the Write command,
          the controller generates DRQ's for each byte to be written to the
          buffer. 
           
          After all data have been sent to the sector buffer, the Busy bit
          in the Status Register is set. The state of Seek Complete, Ready
          and Write Fault are sampled, and if an error condition exists,
          the Aborted command bit in the Error Register is set, the Error
          bit in the Status Register is set, an interrupt is generated and
          the Busy bit is reset. 
           
           
6_._4_._1_._1_ _ _ _I_m_p_l_i_e_d_ _S_e_e_k_    6.4.1.1
           
          If no errors are encountered so far, a Seek command is executed.
          The Seek Complete line is sampled. If the Seek Complete line does
          not go true within 128 Index pulses, then the Aborted command bit
          in the Error Register is set, the Error bit in the Status Regis-
          ter is set, an Interrupt is generated and the Busy bit is reset. 
           
           \f

6_._4_._1_._2_ _ _ _R_e_t_r_i_e_s_    6.4.1.2
           
          Once the head has settled over the desired cylinder, it will at-
          tempt to read the ID of the sector. The WDC701 performs all re-
          tries necessary to recover the ID during the write command. The
          controller attempts to read the ID of the desired sector up to 16
          times. It will attempt a retry if it does not find an ID or if
          the ID of that sector has a bad CRC. 
           
           
6_._4_._1_._3_ _ _ _A_u_t_o_ _R_e_s_t_o_r_e_    6.4.1.3
           
          Every time the controller encounters an error, it records the
          occurrence of that error in an internal register. If, after 16
          retries, the controller was not able to get a match on the ID
          field, it assumes that the head was possibly mis-positioned and
          executes an auto-restore. During the auto-restore, the stepping
          rate is implied to be equal to the Seek Complete period. After
          the auto-restore has been successfully completed, the controller
          re-seeks and attempts to write the sector once again. 
           
           
6_._4_._1_._4_ _ _ _H_a_r_d_ _E_r_r_o_r_s_    6.4.1.4
           
          If the controller encounters a non-recoverable error, the con-
          troller examines its internal error history register. It then
          sets the bit in the Error Register of the highest severity error
          incurred. The Error bit in the Status Register is set, an Inter-
          rupt is generated and the Busy bit is reset. 
           
          If the proper sector is located, the sector buffer is written to
          the disk, an interrupt is generated and the Busy bit is reset. 
           
           
6_._4_._2_ _ _ _ _ _F_o_r_m_a_t_ _T_r_a_c_k_    6.4.2
           
          The Format command is used for initializing the ID and data
          fields on a particular disk. Upon receipt of the Format command,
          the controller generates DRQ's for each byte of the interleave\f

          table to be written to the buffer. Information on setting up an
          interleave table can be found in chapter 7. In all cases, the
          number of bytes transferred to the buffer must correspond to the
          current sector size. 
           
          After all data have been sent to the buffer, the Busy bit in the
          Status Register is set. The state of Seek Complete, Ready and
          Write Fault lines are sampled. If an error condition exists, the
          Aborted command bit in the Error Register is set, the Error bit
          in the Status Register is set, an interrupt is generated and the
          Busy bit is reset. 
           
           
     6_._4_._2_._1_ _ _ _I_m_p_l_i_e_d_ _S_e_e_k_    6.4.2.1
           
          If no errors are encountered so far, a Seek command is executed.
          No verification of track positioning accuracy is performed be-
          cause the track may not have any ID fields present. After the
          Seek operation has been performed, the Seek Complete line is
          sampled. If the Seek Complete line is not asserted within 128
          Index pulses, the Aborted command bit in the Error Register is
          set, the Error bit in the Status Register is set, an Interrupt is
          generated and the Busy bit is reset. 
           
          Once the head has settled over the desired cylinder, the control-
          ler starts writing a pattern of 4E's until the index is en-
          countered. Once the index is found, a number of ID fields and
          nulled data fields are written to the disk. The number of sectors
          written to the contents of the Sector Count Register. As each
          sector is written, the Sector Count Register is decremented and,
          consequently, must be updated before each format operation. 
           
          After the last sector is written, the controller back-fills the
          track with 4E's. When the next Index pulse after the last sector
          is written is encountered, the format operation is terminated, an
          Interrupt is generated and the Busy bit is reset. 
           
           \f

         6_._4_._2_._2_ _ _ _T_r_a_c_k_ _F_o_r_m_a_t_    6.4.2.2
           
          The Format command formats the track as shown in fig. 2. 
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
          Figure 2: Format pattern. 
           \f

F_       7_._ _ _ _ _ _ _ _ _F_O_R_M_A_T_T_I_N_G_    7.
           
7_._1_ _ _ _ _ _ _ _F_o_r_m_a_t_t_i_n_g_ _a_ _T_r_a_c_k_ 7.1
           
          The format command is very similar to the write command, except
          that instead of filling the sector buffer with user data, it is
          filled with interleave and bad block information. Two bytes will
          be written to the buffer for each sector to be formatted. 
           
          The first byte will be either a 00 or an 80 in Hex. If the first
          byte is a 00, the sector is marked as good. If the first byte is
          an 80, the sector will set the Bad Block bit in the Status Regis-
          ter if there is any attempt to read or write to this.  
           
          The second byte is the logical sector number of the next sector
          to be formatted. This number will be recorded on the disk. 
           
          On a 32 sectors per track disk, 32 pairs of formatting informa-
          tion must be supplied to the drive during each format operation.
          To start the format operation, the buffer must be completely fil-
          led even if the sector table is not as long as the buffer. On a
          32 sectors per track disk, 64 bytes of formatting information are
          supplied. If the sector size of the disk is 256 bytes, then 192
          bytes of garbage must be passed to the controller to start the
          format operation. 
           
          Since the contents of the sector buffer do not imply how many
          sectors are to be formatted, a dedicated register is provided.
          This Sector Count Register must be loaded with the number of sec-
          tors to be formatted before each and every format operation. 
           
           
7_._2_ _ _ _ _ _ _ _I_n_t_e_r_l_e_a_v_i_n_g_    7.2.
               
          If we try to read sequential sectors on the disk, there is not
          enough time for us to set up to read or write the next sector be-
          fore it has been passed by the R/W head. This means that the disk
          will have to make a complete rotation to pick up the next sector.\f

              If we were to read all 32 sectors on a particular track, it would
          take us 32 rotations, or about half a second per 8 K bytes. This
          performance can be tremendously improved by allowing the system
          to read or write more than one sector per rotation. This can be
          accomplished with interleaving. 
           
          Suppose our system takes less than three sector times (3/32 rota-
          tional period) to digest the data it has read and to set up the
          next read operation. This means that if we can arrange to have
          the second logical sector placed physically only four sectors
          away from the first one, the controller will be able to read it
          without much delay. This four to one interleave factor will allow
          us to potentially read the entire track in only four rotations.
          In our particular example, this will increase the throughput by a
          factor of eight. 
           
          The simplest way to determine the optimum interleave for any par-
          ticular system is through experimentation. If the system main-
          tains its directories in a certain place on the disk, it some-
          times makes sense to have t_w_o_ interleaves. One could be used for
          regular disk operations and the other for directory functions. 
           
          To simplify driver software, the WDC701 will automatically map
          logical to physical sectors to achieve interleave. This logical
          to physical map is returned on each track of the disk in the ID
          fields of the sectors. This map is recorded on the disk during
          format operations. Here is an example of an interleave table for
          a 32 sector track with 4:1 interleave and no bad blocks: 
           
          Interleave table with 32 sectors and 4:1 interleave. 
M_          00  00  00  08  00  10  00  18 00  01 00  09  00  11  00  19 
          00  02  00  0A  00  12  00  1A  00  03  00  0B  00  13  00  1B 
          00  04  00  0C  00  14  00  1C  00  05  00  0D  00  15  00  1D 
P_          00  06  00  0E  00  16  00  1E  00  07  00  0F  00  17  00  1F 
           
                 Remember that the balance of the buffer must be filled with some-
          thing to start the format operation. 
           \f

                   The first byte in each byte pair in the preceding example is set
          to 00. This marks each block as a 'good' block. The second byte
          of each byte pair is the logical sector number. The first byte
          pair above represents the first logical sector of the track. The
          byte pair in brackets represents the second logical sector. 
           
           \f

                                                 i 
           
          F_O_R_E_W_O_R_D_ 
           
          First edition: RCSL No 31-D455. 
          The major changes, compared to the version described in "RCSL No
          31-D300: MONITOR3", are the introduction of a usercatalog (pro-
          cesses may be created by the JOB-command with prespecified
          claims) the initializing commands and the lock/unlock facility to
          prevent/reestablish the use of ALL and NEW commands, from other
          consoles than the mainconsole or privileged consoles. 
           
          Palle Andersson 
          A/S Regnecentralen, January 1979 
           
           
          Second edition: RCSL No 31-D595. 
          The major changes in this manual compared to RCSL No 31-D 455 are
          the inclusion of the corrections described in RC Information Note
          NCJ 790715 "Corrections to s Reference Manual", and some correc-
          tions in the examples in use of usercat. 
           
          Further the prio command has been changed: 
          The priority is now a parameter in the console buffer, and the
          prio command merely sets this parameter. The create command will
          then set the priority when the process is created. It is also
          possible to set the priority in the jobspecification in Susercat.
          The remarks about the priority are valid from monitor release
          6.0. In previous releases the prio command works as described in
          the RC Information Note NJC 790715, "Corrections to s Reference
          Manual". 
           
          Henrik Sierslev 
          A/S REGNECENTRALEN af 1979, May 1980 
           
               \f

                                                 ii 
           
          Third edition: RCSL No 31-D643. 
          The major changes in this manual are the introduction of five new
          commands to s and the two parent messages finis and replace.
          These changes are valid from monitor release 7.0. 
           
          It is now possible to let s read commands from a bs area instead
          of the console, and it is possible to set primary input in an in-
          ternal process causing FP to start immediately reading commands. 
           
          Henrik Sierslev 
          A/S REGNECENTRALEN af 1979, May 1981 
           
           \f

                                                 iii 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          1.  BASIC OPERATING SYSTEM FUNCTIONS .......................   1 
              1.1  Introduction ......................................   1 
              1.2  Handling of Consoles ..............................   1 
              1.3  Console Description ...............................   2 
                   1.3.1  Explanation of Command Mask ................   3 
              1.4  Some Important Commands ...........................   4 
              1.5  The Command Language ..............................   4 
              1.6  Alfabetic List of the Commands for Handling of 
                   Internal Processes ................................   6 
               
          2.  MESSAGES FROM s ........................................  51 
              2.1  Console Messages ..................................  51 
              2.2  Child Messages ....................................  53 
           
          3.  ALFABETIC LIST OF COMMANDS FOR INITIALIZATION OF THE 
              CATALOG SYSTEM .........................................  55 
              3.1  Introduction ......................................  55 
              3.2  Description of the Commands .......................  55 
              3.3  Examples of Using the Initializing Commands .......  70 
                   3.3.1  Initializing of a New System from Magtape ..  70 
                   3.3.2  Normal (Daily) Start with a New Specific 
                          Maincatsize ................................  71 
                   3.3.3  Normal Start, but Maincatalog is not on the 
                          'First' Oldcatdevice .......................  72 
           
          4.  PROGRAM SCATOP (S-CATALOG _OPERATION) ...................  73 
           
           
          A_P_P_E_N_D_I_C_E_S_: 
           
          A.  REFERENCES .............................................  85 
           
          B.  BACKING STORAGE ........................................  86 
              B.1  Representation of Scope ...........................  87 
           
          C.  LOGICAL STATUS BITS ....................................  90 
           \f

                                                 iv 
           \f

F_       1_._ _ _ _ _ _ _ _ _B_A_S_I_C_ _O_P_E_R_A_T_I_N_G_ _S_Y_S_T_E_M_ _F_U_N_C_T_I_O_N_S_                                    1.
           
          The functions of the basic operating system, s, which can initia-
          te and control the execution of parallel programs on request from
          terminals/consoles (in the following called consoles), are de-
          scribed. 
           
               
1_._1_ _ _ _ _ _ _ _I_n_t_r_o_d_u_c_t_i_o_n_    1.1
           
          After initial system loading, the internal store contains the
          monitor and the basic operating system s, enabling operators to
          initiate and control internal processes from consoles. 
          In addition, s can name peripherals as for instance magnetic
          tape. 
           
          s may be the "pater familias" of a family tree of internal pro-
          cesses. Initially s owns all system resources, such as core sto-
          rage, backing storage, peripherals, message buffers, process de-
          scription tables etc. Apart from being the initial process in the
          system, s has no special status, and it is treated as any other
          internal process. It is possible to replace s with another opera-
          ting system. 
           
           
1_._2_ _ _ _ _ _ _ _H_a_n_d_l_i_n_g_ _o_f_ _C_o_n_s_o_l_e_s_ 1.2
           
          Commands to s from a console are served sequentially in the order
          of their arrival. The processing of a line of commands is termi-
          nated by a short reply printed on the console. 
           
          The monitor permits simultaneous input of messages from all con-
          soles. The operating system, however, can only respond to a limi-
          ted number of messages. The maximum number of simultaneous conso-
          le actions within s is an option defined in the assembly of the
          monitor with s. 
           
          A line of commands to s is processed from left to right, one com-
          mand at a time. If syntax errors or other errors are detected du-\f

                   ring the processing of a line, an alarm is issued and a possible
          unprocessed rest of the line is dropped. 
          For every command-line you perform: 
               @att -> s 
               ->command-line 
           
           
1_._3_ _ _ _ _ _ _ _C_o_n_s_o_l_e_ _D_e_s_c_r_i_p_t_i_o_n_    1.3
           
                   For each console communicating with the operating system, s main-
          tains a description defining the parameters to be used in the
          creation of an internal process with the console as primary input
          and primary output (see ref. 1). This is done by means of a com-
          mon consolebuffer pool. The size of this pool is an option to the
          monitor. 
           
          A console description is initiated by means of commands to s. 
           
          The parameters referred in this paper are listed below together
          with their type. The type describes what may be stored in each
          field. The meaning of type are: string   max 11 characters; inte-
              ger   -8388608 <= number < 8388607; integer pair   2 integers;  
          short integer   0 <= number <= 4095. 
           
P_          parameter name:                      type: 
M_                 process name                         string 
          first address                        integer 
          top address                          integer 
          buffer claim                         short integer 
          area claim                           short integer 
          internal claim                       short integer 
          function mask                        short integer 
          max interval                         integer pair 
          standard interval                    integer pair 
          user interval                        integer pair 
          process size                         integer 
          program name                         string 
          priority                             short integer 
           \f

         1_._3_._1_ _ _ _ _ _E_x_p_l_a_n_a_t_i_o_n_ _o_f_ _C_o_m_m_a_n_d_ _M_a_s_k_ 1.3.1
           
          The command mask is a bit mask in the console buffer. It consists
          of two parts. A part defining the allowed s command from this
          console type (i.e. predefined or consolepool), and a part, used
          for signalling between commands, the command bits. 
           
          Format of command mask: 
           
          1   1 shift 10 ; command bit : all bs resources. 
          2   1 shift 9  ; mode, modify, print, date. 
          3   1 shift 8  ; job, start, stop, break, dump, list, max,
                           remove, proc, prog, load, I, O, get, unstack. 
          4   1 shift 7  ; include, exclude. 
          5   1 shift 6  ; size, login, user, project, prio, base. 
          6   1 shift 5  ; addr, function, buf, area, internal, bs, temp,
                           perm, all, call. 
          7   1 shift 4  ; new, create, run, init. 
          8   1 shift 3  ; privileged console. 
          9   1 shift 2  ; command bit : mode = 0 
          10  1 shift 1  ; command bit : absolute address. 
           
          bit 2 - 8 are generated as options to the system and cannot be
          altered. 
           
          bit 1, 9 and 10 can be used in connection with a job in
          susercat. 
           
          For each possible bs-device, we have: 
           
          temp  segments <bs device> integer 
          temp  entries  <bs device> integer 
          perm  segments <bs device> integer 
          perm  entries  <bs device> integer 
           
           \f

         1_._4_ _ _ _ _ _ _ _S_o_m_e_ _I_m_p_o_r_t_a_n_t_ _C_o_m_m_a_n_d_s_ 1.4
           
          Three commands to s, initializing the whole set of console para-
          meters, exist: 
          The n_e_w_ command using some standard values, the a_l_l_ command,
          searching and using the maximum available resources, and the j_o_b_
          command, searching a file named "susercat" in order to find suit-
          able values to insert into. The job command will also create,
          load and start an internal process according to the parameters
          found. These three commands are followed by a string to be used
          as process name. 
           
          The r_u_n_ command will create, load and start an internal process
          according to the console description. 
          The s_t_o_p_ command will stop a running process without removing it.
          The process may be restarted by means of the start command. 
          The s_t_a_r_t_ command will restart a stopped process. The process may
          either have been stopped by means of the stop command or by "it-
          self", for instance after having requested a magnetic tape. 
           
          The r_e_m_o_v_e_ command will stop and remove an internal process. 
           
          All commands are described in section 1.6 below. 
           
           
1_._5_ _ _ _ _ _ _ _T_h_e_ _C_o_m_m_a_n_d_ _L_a_n_g_u_a_g_e_ 1.5
           
          A command line to s is one line which can be empty or contain a
          number of commands. A line is either terminated by a new line
          character or by semicolon followed by a comment consisting of any
          string of characters terminated by a new line character. The com-
          mands in a message may consist of one or more of the following
          syntactical elements: 
           
               <separator>::= <SP> .,/=<separator><SP> 
               <unsigned number>::= <digit><unsigned number><digit> 
               <radix>::= <unsigned number> 
               <radix number>::= <radix>:<unsigned number> 
               <number>::= <unsigned number>- <unsigned number><radixnumber> \f

M_m_m_                                       <letter>   10 
               <name>::= <letter> 
P_p_p_                                       <digit>    0 
                  <parameter>::= <number><name> 
               <command word>::= addrallareabreakbsbufcall 
                                 createdatedumpexcludefunctiongeti
                                 includeinitinternaljoblistloadlock 
                                 loginmaxmodemodifynewopermprio
                                 printprocprogprojectreadremove 
                                 replacerunsizestartstoptempunlockuser 
                         
          A command consists of a command word possibly followed by one or
          more parameters. 
          Command words and parameters are separated from each other by a
          separator. In the syntactical definition of the commands in sec-
          tion 1.6 below, separators are not shown explicitly. It must be
          understood that a definition like the following 
           
               temp <devicename><segment><entries> 
           
          strictly speaking means 
           
               temp <separator><devicename><separator><segments><separator><entries> 
           
           \f

1_._6_ _ _ _ _ _ _ _A_l_f_a_b_e_t_i_c_ _L_i_s_t_ _o_f_ _t_h_e_ _C_o_m_m_a_n_d_s_ _f_o_r_ _H_a_n_d_l_i_n_g_ _o_f_ _I_n_t_e_r_n_a_l_ _P_r_o_c_e_s_s_e_s_1.6
           
          A_d_d_r_ _C_o_m_m_a_n_d_ 
           
          Syntax: addr <first storage address> 
                  <first storage address>::= <unsigned number> 
           
          The console parameter first address is defined and used in a pos-
          sible subsequent creation of an internal process. An odd number
          is decreased by one. 
           
                  Example:  addr 16320 
           \f

                   A_l_l_ _C_o_m_m_a_n_d_ 
           
          Syntax: all <process name> 
                  <process name>::= <name> 
           
          First the console parameter process name is defined by the para-
          meter to the all command. Next all the other console parameters
          are initiated by setting the name "fp" into the console parameter
          program name, and the maximum of s's rest claims into the remain-
          ing parameters. The core size used is the greatest free consecu-
          tive core area found. Notice that the values may be redefined
          (diminished) by means of commands defining only a few parameters.
          The bases (max, standard, user) are set to the standard base of
          s. 
           
                  Example: all us 
           \f

                   A_r_e_a_ _C_o_m_m_a_n_d_ 
           
          Syntax: area <area claim> 
                  <area claim>::= <unsigned number> 
           
          The console parameter area claim is defined. This defines the
          number of available area processes. 
           
                  Example: area 20 
           
          If the job wants to communicate with 20 backing storage files at
          the same time, it will need 20 area processes. 
           \f

                   B_a_s_e_ _C_o_m_m_a_n_d_ 
           
          Syntax: base <number><number> 
           
          Assigns the number pair to the console parameters max interval,
          standard interval and user interval. 
           
                  Example: base -100  200 
           \f

                   B_r_e_a_k_ _C_o_m_m_a_n_d_ 
           
          Syntax: break 
           
          Stops the execution of the internal process, defined by the con-
          sole parameter process name, stores its registers and the inter-
          rupt cause 8 at the head of its internal interrupt procedure
          ("break sequence"), and restarts the process in its interrupt
          procedure (see ref. 1). 
           
                  Example: break 
           \f

                   B_s_ _C_o_m_m_a_n_d_ 
           
          Syntax: bs  <bs device name> <segments> <entries> 
                  <bs device name>::= <name> 
                  <segments>::= <number> 
                  <entries>::= <number> 
           
          The claims of the (already created and possibly running) process
          defined by the console parameter process name are increased by
          the (possibly negative) amount given by entries and segments for
          all keys on the backing storage given by bs device name. 
           
                  Example: bs disc2 1500 20 
           
          The claims on disc2 will be increased with 20 entries and 1500
          segments for all perm keys. 
           \f

                   B_u_f_ _C_o_m_m_a_n_d_ 
           
          Syntax: buf <buffer claim> 
                  <bufferclaim>::= <unsigned number> 
           
          The console parameter buffer claim is defined. This defines the
          number of available message buffers. 
           
                  Example: buf 14 
           
          If the job has 14 data transfers (or other I/O operations) going
          on simultaneously, it will need 14 message buffers. 
           \f

                   C_a_l_l_ _C_o_m_m_a_n_d_ 
           
M_m_m_                                                          * 
          Syntax: call    <device number> <device name>
P_p_p_                                                          1 
                      
                  <device number>::= <unsigned number> 
                  <device name>::= <name> 
                   
          Assigns names to a sequence of peripheral devices. The devices
          must not be reserved by internal processes. 
           
                  Example: call 0=reader 10=magtape 5 printer 
           \f

                   C_r_e_a_t_e_ _C_o_m_m_a_n_d_ 
           
          Syntax: create 
           
          Creates an internal process as described by the console parame-
          ters. 
           
          If the addr command has been used, the availability of the stora-
          ge area is checked. Otherwise s scans the store from the low
          address end and chooses the first available core area of suffi-
          cient size. 
           
          If mode=0 has been used the write limits in the process descrip-
          tion is set to maximum, allowing the process to write in the who-
          le storage, else the write limits will equal the storage area
          found above. 
           
          The ability of s to supply the specified claims is checked. After
          the creation s includes the process as a user of a standard con-
          figuration of peripherals, assigns the backing storage claims
          listed, and sets the priority of the process. 
           
          The registers of the process are initialized as required by ref.
          2. 
           
          The catalog base of the process is the standard (login) base. 
           
                  Example: create 
           \f

                  D_a_t_e_ _C_o_m_m_a_n_d_ 
           
          Syntax: date <year><month><day><hour><min><sec> 
                  <year>::= <digit> <digit> 
                  <month>::= <digit><digit> <digit> 
                  <day>::= <digit><digit> <digit> 
                  <hour>::= <digit><digit> <digit> 
                  <min>::= <digit><digit> <digit> 
                  <sec>::= <digit><digit> <digit> 
                   
          Sets the internal clock of the monitor to the value given in the
          call. 
           
          If the main catalog has not yet been defined, s will continue
          with the "oldcat" command. 
           
                  Example: date 81.05.10 9.30.0 
           \f

                   D_u_m_p_ _C_o_m_m_a_n_d_ 
           
          Syntax: dump <dump area> 
                  <dump area>::= <name> 
           
          The process defined by the console parameter process name is
          stopped (if not already stopped) and its core area is copied to
          the dump area. If the size of the dump area is not sufficient,
          only the first part of the core area is copied. The dump area
          must be visible from the catalog base of the internal process. 
           
                  Example: dump image 
           \f

                   E_x_c_l_u_d_e_ _C_o_m_m_a_n_d_ 
           
M_m_m_                                              * 
          Syntax: exclude   <device number> 
P_p_p_                                              1 
                     <device number>::= <unsigned number> 
           
          The (already created and possibly running) process, defined by
          the console parameter process name is excluded as a user of a
          sequence of peripheral devices. 
           
                  Example: exclude 5 
           \f

                   F_u_n_c_t_i_o_n_ _C_o_m_m_a_n_d_ 
           
M_m_m_                                           * 
          Syntax: function   <bit number> 
P_p_p_                                           1 
                     <bit number>::= <unsigned number> 
           
          The console parameter function mask is set to contain ones in the
          selected bits. The rest is set to contain zeroes. 
           
                  Example: function 4 5 6 
           \f

                  G_e_t_ _C_o_m_m_a_n_d_ 
           
          Syntax: get <process name> 
                  <process name>::= <name> 
           
          Searches the systemfile "susercat" for an entry with the given
          processname and initializes the console description according to
          the entry, but unlike the job command, no process is created. 
           
                  Example:  
                  get student run, 
           
                  will be the same as 
           
                  job student 
           
          As the I and O commands are not implemented in susercat, you may
          instead use 
           
                  get student I 4 input run 
           \f

                  I_ _C_o_m_m_a_n_d_ 
           
          Syntax: I <kind> <name> 
                  <kind>::= <short integer> 
           
          Sets the console parameter primin to the parameters given in the
          call. At load time the registers of the created internal process
          are set as required by ref. 2, causing FP to select the given
          name as primary input. 
           
                  Example: new job1 I 4. input run 
           
          FP will select the area (kind=4) "input" as primary input. 
           
          If FP is reinitialized, maybe because of a syntax error, FP will
          start reading from the beginning of the input file. The private
          modebits, however, will not be changed, so the following commands
          will prevent FP from looping: 
           
                  if mode.1 yes 
                  finis 
                  mode.1 yes 
           \f

                   I_n_c_l_u_d_e_ _C_o_m_m_a_n_d_ 
           
M_m_m_                                             * 
          Syntax: include   <device number> 
P_p_p_                                             1 
                     <device number>::= <unsigned number> 
           
          Includes the (already created and possibly running) process,
          defined by the console parameter process name, as a user of a
          sequence of peripheral devices. 
           
                  Example: include 6 7 
           \f

                   I_n_i_t_ _C_o_m_m_a_n_d_ 
           
          Syntax: init 
           
          This command has the same effect as a create command followed by
          a load command. 
           
                  Example: init 
           \f

                   I_n_t_e_r_n_a_l_ _C_o_m_m_a_n_d_ 
           
          Syntax: internal <internal claim> 
                  <internal claim>::= <unsigned number> 
           
          Assigns a number to the console parameter internal claim. 
           
                  Example: internal 2 
           
          A job will only need internal processes if it acts as an
          operating system. 
           \f

                   J_o_b_ _C_o_m_m_a_n_d_ 
           
          Syntax: job <process name> 
                  <process name>::= <name> 
           
          Searches the system file "susercat" for an entry with the process
          name given. If the entry is found, the console description is
          initialized according to the entry, and a process is started by
          means of the functions implementing the create, the load and the
          start commands in the order mentioned. 
           
                  Example: job student 
           \f

                   L_i_s_t_ _C_o_m_m_a_n_d_ 
           
          Syntax: list 
           
          Prints a list of all internal processes having a parent. 
           
          Each process is described on one line with the format: 
           
                  <process name><first storage address><size of storage area> 
                  <stop-count><state><parent name> 
                   
                  Example: list 
                   \f

                   L_o_a_d_ _C_o_m_m_a_n_d_ 
           
          Syntax: load 
           
          Loads the program defined by the console parameter program name
          into the beginning of the internal process defined by the console
          parameter process name. 
          The program must be located on the backing store, and be descri-
          bed as a catalog entry with a positive size and content key (see
          ref. 1) must be 3 or 8. 
           
          A possible area process for the entry must not be reserved. The
          number of halfwords to load and the relative entry point of the
          program must not exceed the size of the internal process. The
          program must be visible from the catalog base of the internal
          process. 
           
          After loading, the registers are set as required by ref. 2, and
          the instruction counter is set to the absolute address corre-
          sponding to the relative entry point. The catalog base of the in-
          ternal process is set to the user base, given in the console
          description. 
           
                  Example: load 
           \f

                   L_o_c_k_ _C_o_m_m_a_n_d_ 
           
          Syntax: lock 
                  (privileged console only) 
           
          When this command has been used, it is only possible to use fol-
          lowing commands from a non privileged console: 
           
                  break 
                  dump 
                  job 
                  list 
                  load 
                  max 
                  proc 
                  prog 
                  remove 
                  start 
                  stop 
                   
                  Example: lock 
                   \f

                   L_o_g_i_n_ _C_o_m_m_a_n_d_ 
           
          Syntax: login <ll standard base> <ul standard base> 
                  <ll standard base>::= <number> 
                  <ul standard base>::= <number> 
           
          Assigns the number pair to the console parameter standard inter-
          val. This usually defines the temp scope in the sense of "File
          Processor". 
           
                  Example: login 1025 1025 
           \f

                   M_a_x_ _C_o_m_m_a_n_d_ 
           
          Syntax: max 
           
          Prints the maximum of certain available resources with the
          format: 
           
          max <max storage area><buf claim><area claim><internal claim> 
           
                  Example: max 
           \f

                   M_o_d_e_ _C_o_m_m_a_n_d_ 
           
          Syntax: mode <integer> 
           
          If integer = 0 the internal process is allowed to write in the
          whole primary storage. If integer <> 0, the process can only
          write in it's own storage area. 
           
          Default is mode <> 0 
           
                  Example: mode 0 
                  -      : mode 1 
           \f

                   M_o_d_i_f_y_ _C_o_m_m_a_n_d_ 
           
          Syntax: modify <address><old contents><new contents> 
                  (privileged console only) 
           
          This command changes the word with address <address> to <new
          contents> if <old contents> is the present contents of the word. 
           
                  Example: modify 29276 30 34 
           
                  Example: modify 29314 8:24700014 8:24300014 
           
          This command changes word 29314 from rl.w3 8:14 to rl.w1 8:14. 
           \f

                   N_e_w_ _C_o_m_m_a_n_d_ 
           
          Syntax: new <process name> 
                  <process name>::= <name> 
           
          First the console parameter process name is defined by the para-
          meter to the new command. Then all the other console parameters
          are initiated by setting the name fp into the console parameter
          program, and some standard values into the remaining parameters. 
           
                  Example: new me 
           
          The most common used standard values are: 
           
                  priority                                0 
                  no. of message buffers                  7 
                  no. of area processes                   6 
                  no. of internal processes               0 
                  function mask (octal value)          7440 
                  core size                           12800 
                  perm entries on work device            20 
                  perm segments on work device          800 
                  standard work device             <:disc:> 
                  all base values                   8388605 
                   \f

                  O_ _C_o_m_m_a_n_d_ 
           
          Syntax: O <kind> <name> 
                  <kind>::= <short integer> 
           
          Sets the console parameter primout to the parameters given in the
          call. 
           
          At load time the registers of the created internal process are
          set as required by ref. 2, causing FP to select the given name
          as primary output. 
           
                  Example: new job1 O 8 sub010 run 
           
          The terminal "sub010" is selected for output. 
           \f

                   P_e_r_m_ _C_o_m_m_a_n_d_ 
           
          Syntax: perm <bs device name><segments><entries> 
                  <bs device name>::= <name> 
                  <segments>::= <unsigned number> 
                  <entries>::= <unsigned number> 
           
          Searches the monitor for a backing storage device with the stated
          name. Then the console parameters for permanent claims for that
          device are defined. The stated values are added to the temp
          claims for the device. 
           
                  Example: perm  disc1 1500 20 
           \f

                   P_r_i_n_t_ _C_o_m_m_a_n_d_ 
           
          Syntax: print <first storage><last storage> 
                  <first storage>::= <unsigned number> 
                  <last storage>::= <unsigned number> 
           
          Reserves the device named printer and prints the contents of the
          core storage starting with <first storage>. The printing ends
          when last storage has been passed after printing at least one
          word, or the current word is outside core store, or the printer
          could not be used properly (e.g. because of endpaper or because
          the printer was reserved). Then the printer is released. 
           
              The format of the printing is: 
           
          <address decimal><word decimal><halfword 1 decimal><halfword 2 decimal>
          <word octal><word text> 
           
                  Example: print 10246 10700 
           \f

                   P_r_i_o_ _C_o_m_m_a_n_d_ 
           
          Syntax: prio <short integer> 
           
          The console parameter priority is set to the value given in the
          call. 
           
          Normally a process will be created with priority 0, which is the
          highest possible priority of an internal process. 
           \f

                   P_r_o_c_ _C_o_m_m_a_n_d_ 
           
          Syntax: proc <process name> 
                  <process name>::= <name> 
           
          Assigns a name to the console parameter process name. It may for
          instance be used as a preample to commands like include, exclude,
          start etc. 
           
                  Example: proc him start proc me 
           
          This sequence may for instance be used by the main operator (sit-
          ting at a privileged console) after having mounted and called a
          magnetic tape. After having started the waiting process, the ope-
          rator reinserts the name of his own process in the console de-
          scription. 
           \f

                   P_r_o_g_ _C_o_m_m_a_n_d_ 
           
          Syntax: prog <program name> 
                  <program name>::= <name> 
           
          Assigns a name to the console parameter program name. 
           
                  Example: prog batchsystem 
           \f

                   P_r_o_j_e_c_t_ _C_o_m_m_a_n_d_ 
           
          Syntax: project <ll maxbase><ul maxbase> 
                  <ll maxbase>::= <number> 
                  <ul maxbase>::= <number> 
           
          Assigns the number pair to the console parameter max interval.
          This defines the scope project in the sense of the "File Proces-
          sor". 
           
                  Example: project  0   2000 
           \f

                   R_e_m_o_v_e_ _C_o_m_m_a_n_d_ 
           
          Syntax: remove 
           
          Stops and removes an internal process defined by the console pa-
          rameter process name. The console must be either the console from
          which the process was created or a privileged console. Note that
          the console parameters are unchanged. If the process is created
          by means of the job-command, the description of the permanent bs-
          claims in "susercat" belonging to the process is adjusted. 
           \f

                  R_e_a_d_ _C_o_m_m_a_n_d_ 
           
          Syntax: read <area name> 
                  <area name>::= <name> 
           
          Causes s to stack the current input pointer and start reading
          commands from the bs area. The last command must be "unstack"
          which will cause s to restore the previous input pointer and
          continue the command reading from there. 
           
          The area must be visible from the catalog base of s. 
           
          The stack depth is an option to s. Default is stack depth = 2,
          i.e. it is allowed to have one read command in an area. 
           
                  Example: read pip 
           
          where pip contains 
           
                  all fut run unstack, 
           
          will be the same as the command line 
           
                  all fut run 
            \f

                   R_e_p_l_a_c_e_ _C_o_m_m_a_n_d_ 
           
          Syntax: replace <area name> 
                  <area name>::= <name> 
                  (privileged consoles only) 
           
          The area must contain an independent program (contents key = 8).
          This program is loaded replacing the code of s (see ref. 1). 
           \f

                   R_u_n_ _C_o_m_m_a_n_d_ 
           
          Syntax: run 
           
          The run command has the same effect as a create command followed
          by a load command and a start command. 
           
                  Example: run 
           \f

                   S_i_z_e_ _C_o_m_m_a_n_d_ 
           
          Syntax: size <size of storage area in halfwords> 
                  <size of storage area in halfwords>::= <unsigned number> 
           
          Assigns a number to the console parameter size of storage area.
          An odd number is decreased by one. 
           
                  Example: size 20000 
           \f

                   S_t_a_r_t_ _C_o_m_m_a_n_d_ 
           
          Syntax: start 
           
          Starts the execution of an internal process defined by the conso-
          le parameter process name. 
          The console must be either the console from which the process was
          created or a privileged console. 
           
                  Example: start 
           \f

                   S_t_o_p_ _C_o_m_m_a_n_d_ 
           
          Syntax: stop 
           
          Stops the execution of an internal process defined by the console
          parameter process name. The console must be either the console
          from which the process was created or a privileged console. 
           
                  Example: stop 
           \f

                   T_e_m_p_ _C_o_m_m_a_n_d_ 
           
          Syntax: temp <bs devicename><segments><entries> 
           
                  <bs devicename>::= <name> 
                  <segments>     ::= <unsigned number> 
                  <entries>      ::= <unsigned number> 
           
          Searches the monitor for a backing storage device with the given
          name. Then the console parameters for temporary segments and
          entries for that device are defined. 
           
                  Example: temp disc2 1500 3 
           \f

                   U_n_l_o_c_k_ _C_o_m_m_a_n_d_ 
           
          Syntax: unlock 
                  (privileged console only) 
           
          Will establish the use of the commands excluded by the lock
          command. 
           
                  Example: unlock 
           \f

                  U_n_s_t_a_c_k_ _C_o_m_m_a_n_d_ 
           
          Syntax: unstack 
           
          Causes s to continue reading commands from a previous stacked
          input source. If no input source is stacked, the command will be
          blind. 
          Input will be stacked by the read command. 
          The stack depth is an option to s. Default is 2. 
           \f

                   U_s_e_r_ _C_o_m_m_a_n_d_ 
           
          Syntax: user <ll userbase> <ul userbase> 
                  <ll userbase>::= <number> 
                  <ul userbase>::= <number> 
           
          Assigns the number pair to the console parameter user interval.
          This usually defines the user scope in the sense of "File Proces-
          sor". 
           
                  Example: user 1025 1035 
           \f

         2_._ _ _ _ _ _ _ _ _M_E_S_S_A_G_E_S_ _F_R_O_M_ _s_                                                     2.
           
2_._1_ _ _ _ _ _ _ _C_o_n_s_o_l_e_ _M_e_s_s_a_g_e_s_                                                    2.1
           
          When the operating system has successfully processed a line of
          commands, it prints the reply: 
           
                  ready 
           
          If an error is detected during processing of a command in a line
          then an error message is displayed, the rest of the command line
          is ignored and the console returns to the ready situation. 
           
          The following is a list of error messages printed by the opera-
          ting systems: 
           
P_          error message:          meaning: 
M_          area error              input/output error during area loading or
                                  the print-command is trying to print a
                                  word outside corestore 
                                   
          area reserved           area reserved by another process 
                                   
          area unknown            area not described correctly in catalog
                                  or area name incorrect 
                                   
               base illegal            incorrect use of the bases 
                                  remedy: examine your use of the project,
                                  user, login- and base-command 
                                   
          bs claims exceeded      bs claims not available; the process is
                                  removed 
                                  remedy: create the process with "smaller"
                                  claims 
                                   
               bs device unknown       device name does not exist 
                                  remedy: examine your use of the bs-com-
                                  mand 
                                   \f

          catalog error           input/output error during catalog lookup
                                  or catalog system not initialized 
                                   
               device reserved         device reserved by another process 
                                  remedy: wait until the device is not
                                  reserved 
                                   
               device unknown          device number does not exist 
                                  remedy: use the correct device-number 
                                   
              input aborted           the buffer from the console has been
                                  received with an abnormal status 
                                  remedy: send the command line to s once
                                  more 
                                   
          name unknown            name does not exist in "susercat" 
                                  remedy: create an entrance in "susercat"
                                  with the given name 
                                   
               no areas                area process description not available 
                                  remedy: use the area-command 
                                   
               no buffers              messages buffers not available 
                                  remedy: use the buf-command 
                                   
               no core                 storage area not available 
                                  remedy: use the size-command 
                                   
               no entries in maincat   the number of temporary entry claims are
                                  not available in the main catalog 
                                  remedy: create the process with less
                                  temporary entries 
                                   
               no internals            internal process descriptions not
                                  available 
                                  remedy: use the internal-command 
                                   
               not allowed             command forbidden from this console, sys-
                                  tem under initialization or state of pro-
                                  cess does not permit this command 
                                   \f

               not implemented         optional command not assembled 
                                   
               process unknown         process does not exist 
                                  remedy: use the proc-command 
                                   
          prog name unknown       the program name is not visible from the
                                  catalog base of the internal process 
                                  remedy: examine your use of the user-and
                                  base-commands 
                                   
               program too big         program size or entry point exceeds
                                  primary storage area 
                                  remedy: use the size-command 
                                   
               syntax error            illegal command syntax (or e.g. timeout)
                                   
                                   
     2_._2_ _ _ _ _ _ _ _C_h_i_l_d_ _M_e_s_s_a_g_e_s_                                                      2.2
           
          When the operating systems receives a message from one of its
          child processes, the following is done: 
           
          a)  If the waiting bit is equal to one (bit No 23 in the first
              word of the message) then the child process is stopped, an
              answer is sent to the process and a message is printed on the
              console from which the process was created: 
               
                  pause <processname><text> 
               
              The operator can now start, break, or remove the process
              depending on the function in the message. 
               
          b)  If the waiting bit is equal to zero, then an answer is sent
              to the process, and a message is printed on the console from
              which the process was created: 
               
                  message <processname><text> 
               \f

          The format of a message is following: 
          +0: function shift 12 + Pattern shift 5 + wait 
          +2: integer or text portion 
          +4: integer or text portion 
          until +14 
           
                  Function  If function is "finis", and wait is one, s will remove
                    the process. 
                    If function is "replace", and wait is one, s will
                    remove the process and start reading from the bs-area
                    specified (see the read command). 
                      
          Pattern   Specifies how the message is to be displayed to the
                    operator. The pattern contains seven bits, one to each
                    of the words in +2 to +14 of the message. 
                    A bit being one means that the corresponding word
                    should be printed as an integer, otherwise the word is
                    printed as a text portion of 3 characters. 
                    Thus 1<11 means that the word in +2 is an integer. 
                     
          Wait      May be zero or one. 
           
           \f

         3_._ _ _ _ _ _ _ _ _A_L_F_A_B_E_T_I_C_ _L_I_S_T_ _O_F_ _C_O_M_M_A_N_D_S_ _F_O_R_ _I_N_I_T_I_A_L_I_Z_A_T_I_O_N_ _O_F_ _T_H_E_ _C_A_T_A_L_O_G_        3.
          S_Y_S_T_E_M_ 
           
          The functions of the initializing commands, which can initiate
          the backing storage, are described. 
           
           
3_._1_ _ _ _ _ _ _ _I_n_t_r_o_d_u_c_t_i_o_n_                                                        3.1
           
          If you want to overrule the automatic oldcat action, change the
          maincatsize or name, initialize a new system, change the kitlabel
          etc., you may use the following commands to the operating system
          s. These commands can only be used until the first process is
          created. 
           
          The commands may be typed as described in section 1.5, but in
          contrast to the reaction on 'normal' error messages, see section
          2.1, the rest of the command line will not be skipped in case of
          errors. 
           
           
3_._2_ _ _ _ _ _ _ _D_e_s_c_r_i_p_t_i_o_n_ _o_f_ _t_h_e_ _C_o_m_m_a_n_d_s_                                         3.2
           
          A_U_X_C_L_E_A_R_ _C_o_m_m_a_n_d_ 
           
M_m_m_                                     1 
m_m_                              fast 
          Syntax: auxclear              <devno>   <lowerbase> 
p_p_                              slow 
P_p_p_                                     0 
                    
M_m_m_                                            * 
                   <upperbase>  <entryname> 
P_p_p_                                               0 
           
          <devno>::=     <unsigned integer> 
          <lowerbase>::= <number> 
          <upperbase>::= <number> 
          <entryname>::= <name> \f

                   This command includes temporarily, the stated device in the bs-
          system with anonymous auxcatname and documentname, and possibly
          with changed device kind (fast/slow). 
           
          All the stated catalog-entries will be removed from auxcatalog. 
           
          The discdrive will be excluded from the bs-system. 
           
          Example: 
           
          auxclear slow 6 8: 40000001 8388606 catalog 
          auxclear slow 6   -8388607  8388606 catalog 
           
          Both of these commands delete the catalog entry with the name
          <:catalog:> and the interval -8388607, 8388606 from auxcat on
          device 6. 
           
          E_r_r_o_r_t_e_x_t_s_ 
           
          a)  syntax error 
               
          b)  as the KIT-command a.-e. 
               
          c)  remove aux entry <entryname> result <integer> 
               
              <integer> is explained in the description of the monitor
              procedure 'remove aux entry' (see ref. 4) 
               
          d)  as the NOKIT-command 
               \f

                   B_I_N_I_N_ _C_o_m_m_a_n_d_ 
M_                          bs 
M_m_                            mto                           * 
          Syntax: binin          <docname>  <position> 
P_p_                            nrz                           1 
P_                          tro 
                  <docname>::=  <name> 
                  <position>::= <unsigned number> 
           
          This command reads from the stated device (cf. BININ RCSL
          31-D234). 
           
          If the reading is performed from bs/mto/nrz you must as the very
          first name the device by using the CALL-command. 
           
          If tro the paper tape must be ready in the paper tape reader. 
           
          <position> indicates: 
           
          On disc it is the number of the first segment in the BININ-file. 
           
          On magnetic tape it is the filenumber. 
           
          On papertape it is irrelevant. 
           
           
                   Example: 
           
          call 10 systemtape 
          binin mto systemtape 2 3 4 5 6 7 8 9 
           
          These commands will name the magnetic tape station and read 8
          files from the tape. 
           \f

P_                 Errortexts/Messages                Meaning: 
M_                 a)  modekind illegal               the first parameter is not
                                             bs/mto/nrz/tro 
                                              
          b)  <docname> status <logical      status bitpattern after input
                       status-bitpattern>             (see appendix C) 
 
          c)  input sum error                sum error in SLANG-segment 
 
          d)  input size error               command segment > 256 words 
 
          e)  <command name> syntax          illegal command in command
              error                          segment 
 
          f)  create <entry name> result     create entry <> 0 
              <integer> 
 
          g)  change <entry name> result     change entry <> 0 
              <integer> 
 
          h)  rename <entryname> result      rename entry <> 0 
              <integer> 
 
          i)  remove <entryname> result      remove entry <> 0 
              <integer> 
 
          j)  perman <entryname> result      permanent entry <> 0 
              <integer> 
 
          k)  load <entryname> result        create area process <> 0 
              <integer> 
 
          l)  <entry name> status            status bitpattern after area 
              <logical status bitpattern>    output (see appendix B) 
 
          <integer> is the resultvalue described in the matching monitor
          procedure (see ref. 4). 
           \f

                   C_l_e_a_r_c_a_t_ _C_o_m_m_a_n_d_ 
           
          Syntax: clearcat 
           
          This command releases all discdrives/chaintables/catalogs. 
           
          Errortexts: 
           
          a)  delete bs <docname> result <integer> 
           
              <integer> is explained in the description of the monitor
              procedure 'delete backing storage'. 
               
          b)  delete entries <docname> result <integer> 
               
              <integer> is explained in the description of the monitor
              procedure 'delete entries'. 
               \f

                   K_I_T_ 
           
M_M_m_                                                                    1 
                                                              1 
                                                        fast 
          Syntax: kit <new docname>  <new auxcat name> 
                                                        slow 
                                                              0 
P_P_p_                                                                 0 
                                                       <device number> 
                  <new docname>::=     <name> 
                  <new auxcat name>::= <name> 
                  <device number>::=   <unsigned number> 
           
          This command includes device <device number> in the bs-system
          with the documentname <new docname> and possibly with changed
          auxcatname <new auxcatname> and device kind (slow is used in
          connection with discdrives). 
           
          The document name and name of auxiliary catalog will be changed
          in the kitlabel (i.e. the chainhead). 
           
          If the disc drive is switched off, this command is blind. 
           
                  Example: kit privkit catprivkit slow 8 
           
          When the first kit is included in the bs-system, the correspon-
          ding auxcat is searched for an entry describing a maincatalog
          with the name <maincatname> (see the MAINCAT command). If the
          entry exists, but has an incorrect size, it will be removed from
          the auxcat. If the entry does not exist, it will be created with
          the size specified by the maincat-command. This entry will be
          connected as the main catalog. 
           
          To indicate inclusion in the bs-system the following text is
          printed: 
           
                  <docname> mounted on <devicenumber> 
           \f

                   Errortexts: 
           
          a)  create peripheral process wrkname on <devno> result 
              <integer> 
               
              <integer> is explained in the description of the monitor
              procedure 'create peripheral process'. 
               
          b)  reserve process wrkname on <devno> result <integer> 
               
              <integer> is explained in the description of the monitor
              procedure 'reserve process'. 
               
          c)  create peripheral process documentname on <devno> result
              <integer> 
               
              <integer> is explained in the description of the monitor
              procedure 'create peripheral process'. 
               
          d)  prepare bs on <devno> result <integer> 
               
              <integer> is explained in the description of the monitor
              procedure 'prepare backing storage'. 
               
          e)  on <devno> status <logical status bit pattern> 
               
              I/O - error. <logical status bit pattern> is explained in
              appendix B. 
               
                   f)  <auxcatname> status <logical status bit pattern> 
               
              I/O - error. <logical status bit pattern> is explained in the
              Binin-command. 
               
          g)  <auxcat-name> status <logical status bit pattern> repair not
              possible 
               
              I/O - error. <logical status bit pattern> is explained in the
              Binin-command. 
               \f

                   h)  <auxcat-name> status <logical status bit pattern> 
              update of entry count not possible 
               
              I/O - error. <logical status bit pattern> is explained in the
              Binin command. 
               
          i)  insert entry <entryname> result <integer> 
               
              <integer> is explained in the description of the monitor
              procedure 'insert entry'. 
               
          j)  auxcat to be repaired 
               
          k)  auxcat to be repaired 
              update of entry count not possible. 
               
          l)  main catalog not defined 
              no maincat connected 
              catalog error 
               
              use the MAINCAT-command or the KIT-command with the devices
              in the right order, to remove this errortext. 
               
          m)  connect main catalog <maincatname> result <integer> 
              no maincat connected 
              catalog error 
               
                       <integer> is explained in the description of the monitor
              procedure 'connect main catalog'. 
               
          n)  remove aux entry <maincatname> result <integer> 
              no maincat connected 
              catalog error 
               
              <integer> is explained in the description of the monitor
              procedure 'remove aux entry'. 
               
          o)  create aux entry <maincatname> result <integer> 
              no maincat connected 
              catalog error \f

                       <integer> is explained in the description of the monitor
              procedure 'create aux entry'. 
               
          p)  (as the NOKIT-command) 
              no maincat connected 
              catalog error. 
               
          q)  (errortext a-k) 
              no maincat connected 
              catalog error. 
               \f

                   K_I_T_ 
           
M_m_m_                                           * 
          Syntax: kit   <devicenumber> 
P_p_p_                                         1 
                    <devicenumber>::= <unsigned number> 
           
          This command functions like the former command, with the excepti-
          on that no fields of the kitlabel (i.e. the chainhead) are
          changed. 
           
          Errortexts: 
           
          see the former command 
           \f

                   K_I_T_L_A_B_E_L_ 
           
          Syntax: kitlabel <devicenumber> <docname> <auxcatname> 
           
M_M_                  slow 
                        <catsize> <slice length> <no. of slices> 
P_P_                  fast 
                        
                  <catsize>::=       <unsigned number> 
                  <slice length>::=  <unsigned number> 
                  <no. of slices>::= <unsigned number> 
           
          At present: <no. of slices> must be less than or equal to 2047 
                      <catsize> must be less than or equal to 273 
           
          This command causes the writing of a chaintablehead and an empty
          auxcatalog on the device stated. 
           
          The device will be partially included in the bs-system to prevent
          unintentional use of the disc-kit. 
           
          If you want to use the disckit at once, then use the
          NOKIT-command followed by the KIT-command. 
           
          Errortexts: 
           
          intervention on <devno> (i.e. the discdrive was switched off) 
           
          and 
           
          see KIT 
           \f

                   M_A_I_N_C_A_T_ 
           
          Syntax: maincat <name of catalog> <size of catalog> 
           
                  <name of catalog>::=     <name> 
                  <size of maincatalog>::= <unsigned number>-1 
           
          At present: <size of catalog> must be less than or equal to 273. 
           
          This command defines the name and size in segments of the
          maincatalog. 
           
          Standard is: 
           
                  <name of catalog> = catalog 
                  <size of catalog> = -1 
           
          The size -1 indicates that the MAINCAT-command has not been used
          yet. 
           
          Errortexts: 
           
          None 
           \f

                   N_O_K_I_T_ 
           
          Syntax: nokit <devicenumber> 
                  <devicenumber>:: <unsigned number> 
           
          This command releases discdrive/chaintable/auxcatalog from device
          <devicenumber>. 
           
          Errortexts: 
           
          See CLEARCAT 
           \f

                   O_L_D_C_A_T_ 
           
          Syntax: oldcat 
           
          This command uses a table from monitor-options with the
          bs-devicenumbers, to generate a call of the KIT-command. 
           
          Example: 
          If the monitor is generated with bs-device 6, 7 and 8 (in this
sequence), the OLDCAT-command is exactly the same as the command
KIT 6 7 8. 
           
          Errortexts: 
 
see KIT 
 \f

                   R_E_P_A_I_R_ 
           
          Syntax: repair 
           
          This command has to be performed before a call of the
          KIT-commands. By doing this it is possible to suppress o_n_e_
          errortext of the type j and k (see KIT). It is permitted to
          repair one catalog-segment. 
           \f

         3_._3_ _ _ _ _ _ _ _E_x_a_m_p_l_e_s_ _o_f_ _U_s_i_n_g_ _t_h_e_ _I_n_i_t_i_a_l_i_z_i_n_g_ _C_o_m_m_a_n_d_s_                         3.3
           
          It is common to the succeeding examples that the monitor is
          loaded, and s asks for the date/time but before date/time is
          written on the keyboard. 
           
           
3_._3_._1_ _ _ _ _ _I_n_i_t_i_a_l_i_z_i_n_g_ _o_f_ _a_ _N_e_w_ _S_y_s_t_e_m_ _f_r_o_m_ _M_a_g_t_a_p_e_                           3.3.1
           
          1.  Switch off all the dicsdrives. This will make the automatic
              OLDCAT-action completely blind. 
               
          2.  Type date/time on the keyboard. Now the system is ready for
              KITLABEL etc. 
               
          3.  Mount relevant disckits and switch on all discdrives. 
              Write a label on the disckits 
              e.g. 
                 kitlabel  6 disc catdisc       slow 50 21 2045 
                 kitlabel  7 disc 1 catdisc1    slow 50 21 2045 
                 kitlabel 22 diablo1 catdiablo1 slow 20  2 1212 
                  
          4.  Perform the cleaning after KITLABEL and include the disckits
              in the system by giving the commands 
               
                 clearcat 
                 maincat  catalog 73 (or another size if wanted) 
                 oldcat 
                  
          5.  Transfer the standardprograms from systemtape e.g. 
               
                 call 10 systemtape 
                 binin mto systemtape 2 3 4 5 6 7 8 9 
               
              Now the system is ready for creation of process etc. 
               \f

         3_._3_._2_ _ _ _ _ _N_o_r_m_a_l_ _(_D_a_i_l_y_)_ _S_t_a_r_t_ _w_i_t_h_ _a_ _N_e_w_ _S_p_e_c_i_f_i_c_ _M_a_i_n_c_a_t_s_i_z_e_                3.3.2
           
          This can be done in several ways. 
           
          E_i_t_h_e_r_: 
           
          1.  Mount all relevant disckits and apply power to the disc-
              drives. 
               
          2.  Type in date/time on the keyboard. (Now an automatic oldcat-
              action is performed). 
               
          3.  Give the commands: 
               
                 clearcat 
                 maincat catalog 83 
                 oldcat 
               
          O_r_: 
               
          1.  Switch off all the discdrives. 
               
          2.  Type in date/time on the keyboard. (Notice: all discdrives
              are switched off, therefore the automatic oldcat-action is
              blind). 
               
          3.  Mount all relevant disckits and apply power to the disc-
              drives. 
               
          4.  Give the commands: 
               
                 maincat catalog 83 
                 oldcat 
               
              Now the system is ready for creation of processes etc. 
               \f

         3_._3_._3_ _ _ _ _ _N_o_r_m_a_l_ _S_t_a_r_t_,_ _b_u_t_ _M_a_i_n_c_a_t_a_l_o_g_ _i_s_ _n_o_t_ _o_n_ _t_h_e_ _'_F_i_r_s_t_'_ _O_l_d_c_a_t_d_e_v_i_c_e_    3.3.3
           
          1.  Switch off all discdrives. 
               
          2.  Type in date/time on the keyboard (notice: an automatic
              oldcat-action will be blind). 
               
          3.  Mount all relevant disckits on and apply power to the disc-
              drives. 
               
          4.  If necessary define the size of the maincatalog and include
              the disckits in the wanted order. 
               
              e.g. 
               
              maincat catalog 59 (if necessary) 
              kit 7 6 22 
               \f

F_       4_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_ _S_C_A_T_O_P_ (S-CATALOG _OPERATION)                                4.
           
          The program is intended for use on operators level for s-user-
          catalog managing purposes, i.e. initializing the catalog,
          creating/changing/deleting entries or printing out contents of
          single entries. 
           
          The s-user-catalog is supposed to be placed on an area, named
          <:susercat:>, and should be present before using the scatop-
          program. 
           
          The program is called with a number of parameters, of which the
          first determines the action/subprograms to be performed. This
          first parameter should be one of the following names: 
           
          newcat           a new s-user-catalog will be created 
          insert           creation of an entry is attempted 
          change           changing of an entry is attempted 
          delete           deletion of an entry is attempted 
          print            an entry is attempted printed out 
          printcat         the usernames in susercat are printed out. 
           
          The newcat and printcat action will unconditionally be executed. 
           
          If the parameter following the action is a name the action will
          act upon the hereby named entry (gives no meaning for newcat and
          printcat). If the parameter is not a name the action will act
          upon the "entry0" (the catalog-describing entry). 
           
          A parameter to any action must be one of the following types: 
           
          <integer>             determines the value of one word 
          <integer1>.<integer2> determines the value of one word, 
                                is interpreted as integer1 shift 12 +
                                integer2. 
          <name>                determines the value of 4 words. 
                                max 11 characters, which are placed to the
                                left in the 4 words, unused place is padded
                                up with (binary) zeroes. 
                                 \f

                   F_u_l_l_ _S_y_n_t_a_x_ 
           
M_m_m_                              1 
P_p_p_                    newcat                                                 * 
                    insert                         <integer> 
M_m_m_                    change                     1 
          scatop                   <username>      <integer1>.<integer2> 
P_p_p_                    delete                     0 
                    print                          <name> 
M_m_m_                    printcat                                               0 
P_p_p_                              1 
           
          All actions have in common: 
           
                   -- word 0 in an entry, the hashvalue, cannot directly be set or
             changed, but is managed due to the built in hashfunction. 
              
          -- superfluous parameters are blind. 
              
          -- too few parameters, will be padded up with zero parameters,
             before the action is executed. 
              \f

                   Referring to the format of susercat (see page 73), the detailed
          interpretation of the parameters in each action will be: 
           
          newcat           the whole catalog is deleted. 
                           The parameters are interpreted strictly sequen-
                           tially and laid out as entry0 in the catalog
                           from word (+2) and up. 
                            
          insert           the entry named is created and placed in the ca-
                           talog. The parameters are interpreted and laid
                           out sequentially from word (+2) and up, only the
                           entryname and the succeeding parameter are in-
                           terchanged to fit the entryformat (see page 74
                           and example 2). 
                            
          change           changes parts or all of an entry. 
                           Every second parameter (after an eventual entry-
                           name) indicates a word (= relative halfword
                           address//2) to be changed. The following para-
                           meter determines the new value to be placed in
                           this word, and succeeding words in case of a
                           name. 
                            
          delete           the indicated entry will be (marked as) deleted.
                           Parameters given after the entryname has no
                           influence at all. 
                           Note that entry0 (fortunately) cannot be deleted
                           by this command. 
                            
          print            each word in the indicated entry will be printed
                           as one integer word, 2 integer halfwords and 3
                           characters. Blind, illegal and control characters
                           are printed out as an '*'. Parameters given after
                           the entryname have no influence at all. 
                            
          printcat         each username included in susercat will be
                           printed out, unsorted. 
                           Parameters given after printcat have no influence
                           at all. 
                            \f

                   Calculation of entry length and 'last used of entry 0' 
           
          <last used of entry 0>: as entry 0 has the same length as a job
          describing entry only a part of the entry may carry information
          about the devices. 'last used of entry 0' is the last halfword
          carrying information in entry 0. It can be calculated as 
           
               6 + 12 x (no. of devices in susercat) 
           
          <entry length>: The length of an entry in susercat. If no. of
          devices is less than 10 the entry length is calculated as 
           
               44 + 8 x (no. of devices) 
           
          else <entry length> equals <last used of entry 0> 
           
          To avoid mistakes see to that an area named <:susercat:> is pre-
          sent at all before using the commands. Even before using the new-
          cat command an area of this name (no matter the size) should be
          present. 
           
          Some examples (see formats of susercat page 74) 
           
          1)  scatop newcat 68 42 10 disc 0 0 disc1 0 0 disc2 0 0 
              creates a new susercat with 
              +2:  <entrylength> = 68 halfwords 
              +4:  <last used> = 42 (halfwordaddress) 
              +6:  <catsize> = 10 segments 
              +8:  <name of device 0> = 'disc', padded with zeroes, take up
                                                4 words. 
              +16: <slicelength device 0> 
              +18: <reference>                  the given values unimpor-
                                                tant, the proper values
                                                will be computed and
                                                inserted. 
                                                . 
                                                . 
                                                . 
                                                and so on, until the para-
                                                meter list stops, the rest
                                                of the entry will be filled
                                                with zeroes. 
                                                 \f

                   2)  scatop insert japroc 0.0 0 0 6.7 0.1056 0.0 100 200 100 100 
              20000 FP 100 110 20 1000 20 1000 
               
          (Observe that the two first parameters are interchanged, see page
          74, hw +2 and hw +4). 
           
          An entry named "japroc" is inserted in the catalog. Most values
          defined by parameters are following the standard claims for a
          process by "new" command, but three exceptions: 
           
          a)  The three bases (std, user and max base) are located to a
              private interval. (HW +22, +24, +26, +28, +40, +42). 
               
          b)  Hw +30 <size> is expanded from normally 12800 to 20000
              halfwords. 
               
          c)  The bs-claims are somewhat extended as well. (hw +44, +46,
              +48, +50). 
               
          3)  scatop change japroc 8 4.7 15 15000 16 myprog 
              will change the entry "japroc" by following: 
              word 8 (+16)  <buf> changed to 4, <area> left unchanged 
               
              word 15 (+30) <size> changed to 15000. 
              word 16 (+32) and succeeding three words 
                            now contain the name "myprog", 
                            left justified, padded with binary zeroes. 
                        
          4)  scatop change 8 42 10 disc2 
              As no name is indicated as first parameter to change the
              action is executed upon entry0 (the susercat describing) 
              word 8 (+16) is changed to 42, i.e. 
                    <slice length, device 0> is changed to 42 (there is
                   hardly a reason for making this change) 
              word 10-13 (+20-26) are changed to contain 'disc2', i.e. the
                   name of device 1 will now be 'disc2'. Note that the
                   <slice length> and <reference> in word 14-15 will not be
                   changed! 
                    \f

                   5)  scatop delete japroc 
              The entry with <user name> = 'japroc' is (marked) deleted. 
               
          6)  scatop delete 
              Will actually be executed, but has no effect at all. 
               
          7)  scatop print japroc 
              The entry with <user name> = japroc will be printed out 
               
          8)  scatop print 
              The catalog describing entry0 (no name indicated) 
              will be printed out. 
               
          9)  scatop printcat 
              All usernames in susercat will be printed out. 
               
          10) a job with claims as a "new" process 
               
              Scatop insert name 0.0 0 0 7.6 0.1056, 
              0.0 8388605 8388605 8388605 8388605, 
              12800 FP 8388605 8388605 0 0 20 800 
              will correspond to new name run 
               
          11) a job with all available b_s_ claims 
               
              Scatop insert haps 0.1_0_2_4_ 0 0 5.5 0.1056, 
              0.0 10 20 10 20 10000 FP 10 20 
               
          12) Change the job in ex 10 to a job with start adr 60000 
               
              Scatop change name 1 0.2 6 60000 
               \f

                   Possible errormessages: 
           
          P_a_r_a_m_e_t_e_r_ _E_r_r_o_r_s_ 
           
          Preceded by           '***scatop: param no <no>:' 
           
          Succeded by one of the following: 
           
          'action missing'                  scatop has been called without
                                            indication of an action. 
           
          'action unknown'                  the parameter following scatop
                                            is not one of the known
                                            actionnames. 
           
          'unknown delimiter'               the parameter has a wrong
                                            format. 
           
          'too many parameters'             the parameterlist is too long. 
                                             
          (the following occur only when using the change command) 
                                             
               '<integer> index expected'        an integer was supposed as next
                                            parameter, should indicate an
                                            index. 
                
          'index outside entrybounds'       the parameter contains an index
                                            greater than or equal to the
                                            number of words in an entry. 
                                             
               'forbidden field, must not be 
                changed'                         the indicated word cannot be
                                            changed by the change command. 
                                            Try delete followed by insert
                                            or create a new susercat. 
               'one more parameter expected'     after the last index given, a
                                            new value to be inserted should
                                            follow. 
                                             \f

                   F_o_r_m_a_t_ _o_f_ _s_u_s_e_r_c_a_t_ 
           
                       Entry 0                           All other entries 
           
          + 0          not used                  + 0     <hash value> 
          + 2          <entry length>            + 2     <prio> <command mask> 
          + 4          <last used of entry 0>    + 4     <process name> 
            6          <size of catalog>           6           - 
            8          <name device 0>             8           - 
           10                 -                   10           - 
           12  dev.0          -                   12     <first address> 
           14                 -                   14     <work>.<work> 
           16          <slice length device 0     16     <buf> <area> 
           18          <reference>                18     <internal> <function> 
           20          <name device 1>            20     working location 
           22                 -                   22     <max ll> 
           24  dev.1          -                   24     <max ul> 
           26                 -                   26     <std. ll> 
           28          <slice length device 1>    28     <std. ul> 
           30          <reference>                30     <size> 
           32                 .                   32     <prog> 
           34                 .                   34       - 
           36                 .                   36       - 
           38  dev.2          .                   38       - 
           40                 .                   40     <user ll> 
           42                 .                   42     <user ul> 
           44                 .                   44     <entries temp> 
           46                 .                   46     <segments temp>   device 0
           48  dev.3          .                   48     <entries perm> 
           50                 .                   50     <segments perm> 
           52                                     52           . 
           54                                     54           .           device 1
           56                                     56 
            
                 hashvalue = -1        empty entry 
                 hashvalue = -2        deleted entry 
            
          <reference> points to the start of the claim list for the device in
          consolebuffer relative to the start of the console buffer 
           
          Number of devices in susercat is installation dependent; standard
          is all devices. 
           \f

                   E_x_p_l_a_n_a_t_i_o_n_ _o_f_ _a_ _s_u_s_e_r_c_a_t_ _e_n_t_r_y_ 
           
          <hash value>                     Inserted automatically. 
                                           See page 71, example 2. 
                                            
                   <prio>                           Insert the priority of the
                                           process. 
                                           Corresponds to the prio command.
                                            
          <command mask>                   Only the three bits mentioned
                                           under 1, 2 and 3 are used so the
                                           standard value of the command
                                           mask can be 0. 
                                            
                                           1_. if <first address> is set <>
                                              0 add 2 to the command mask 
                                           2_. if you want mode=0 add 4 to
                                              the command mask 
                                           3_. if you want "all" bs-resour-
                                              ces add 1024 to the command
                                              mask 
                                               
               <first address>                  Insert the value 0 except you
                                           want the process to start in a
                                           specific address. Remember to
                                           change the command mask. 
                                           Corresponds to the addr-command.
                                            
               <buf>                            Insert the no. of message
                                           buffers. 
                                           Corresponds to the buf-command. 
                                            
               <area>                           Insert the no. of area processes.
                                           Corresponds to the area-command.
                                            
             <internal>                       Insert the no. of internal pro-
                                           cesses. 
                                           Corresponds to the internal-
                                           command. 
                                            \f

                   <function>                       Insert the standard value 1056. 
                                           Corresponds to the function-
                                           command. 
                                            
                   <max ll>                         Lower limit of the max base. 
                   <max ul>                         Upper limit of the max base. 
                                           Corresponds to the project-
                                           command. 
                                            
                   <std.ll>                         Lower limit of the standard base.
          <std.ul>                         Upper limit of the standard base.
                                              Corresponds to the login-command.
                                               
             <size>                           Insert the process size in half-
                                           words. 
                                           Corresponds to the size-command. 
                                            
             <prog>                           Insert the name fp except you
                                           want another program to replace
                                           fp. 
                                           Corresponds to the progcommand. 
                                            
             <user ll>                        Lower limit of the user base. 
             <user ul>                        Upper limit of the user base. 
                                           Corresponds to the user-command. 
                                            
          <entries temp>                   Temporary entries. 
             <segments temp>                  Temporary segments. 
                                           Corresponds to the temp-command. 
                                            
             <entries perm>                   Permanent entries. 
             <segments perm>                  Permanent segments. 
                                           Corresponds to the perm-command. 
                                            \f

                   O_t_h_e_r_ _M_e_s_s_a_g_e_s_ 
           
          Preceded by '***scatop: ', followed by one of the following: 
           
          'entry does not exist' or 
          'entry exists already'            Occurs when the desired action
                                            cannot be performed due to one
                                            of the given reasons, see the
                                            survey in chapter 1. 
                
          'devi<no> not found in nametabel' During execution of newcat the
                                            devicename indicated for device
                                            no <no> was not found/known by
                                            the system. 
                
          'catalog full, name not found'    Occurs e.g. when the catalog is
                                            filled up, and it is attempted
                                            to insert a new entry. Delete
                                            some entries and insert again,
                                            refuse the insertion or create
                                            a bigger susercat (and insert
                                            all the entries again). Could
                                            also occur when e.g. the whole
                                            catalog has been searched for
                                            an unknown entry. In any case,
                                            the operator is warned that the
                                            catalog is full (and the name
                                            was not found). 
                
          'catalog error, hashvalue'        This is a hard system error,
                                            save a hardcopy of the run and
                                            consult the RC support depart-
                                            ment. 
                                             \f

                   A possible configuration of susercat could be: 
           
               Entry 0                                Console buffer 
                       .                                     . 
                 .                                     . 
                 .                                     . 
            +8                                         . 
                                                              . 
             dev.0                                      +50  entries/segments 
                                                                   on first device 
           +18  <reference>                          +56  in chain table 
           
           +20                                       +58  entries/segments 
                                                          on second device 
          dev.1                                      +64  in chain table 
           
                                                     +66  entries/segments 
           +30                                            on second device 
           +32                                       +72  in chain table 
           
          dev.2 
           
           +42  <reference> 
                                                          entries/segments 
                                                          on n'th device 
                                                          in chain table 
           
           
           
          In the consolebuffer there are four words for every possible
          device in chaintable, containing information about permanent/
          temporary segments and entries. 
           \f

F_       A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_                                                          A.
           
          1  RCSL No 31-D364: 
               SYSTEM 3 UTILITY PROGRAMS, Part One 
           
          2  RCSL No 31-D379: 
               SYSTEM 3 UTILITY PROGRAMS, Part Three 
           
          3  RCSL No 55-D1: 
               RC4000 REFERENCE MANUAL 
           
          4  RCSL No 31-D477: 
               RC8000 MONITOR, Part Two 
           
          5  RCSL No 31-D476: 
               RC8000 MONITOR, Part One 
           \f

F_       B_._ _ _ _ _ _ _ _ _B_A_C_K_I_N_G_ _S_T_O_R_A_G_E_                                                     B.
           
          Backing storage files are created explicitly by means of the pro-
          gram 'set', but they may also be created implicitly in case an
          FP-command like 'p=algol' or >p=edit q> is executed and p does
          not exist already (or is protected against writing). 
               
          A backing store file occupies two kinds of resources: a number of
          b_a_c_k_i_n_g_ _s_t_o_r_e_ _s_e_g_m_e_n_t_s_ and one c_a_t_a_l_o_g_ _e_n_t_r_y_. A file may change
          length after its creation, thereby occupying more or less seg-
          ments. 
           
          1_._ _S_c_o_p_e_ 
          Some files live as long as the user wants, others are cancelled.
          Some files are only 'visible' to one user, others are visible to
          all users. Altogether, we distinguish between the following kinds
          of scope: 
           
          T_e_m_p_o_r_a_r_y_ _F_i_l_e_ 
          A temporary file is cancelled on request of the user, of the au-
          toload function, of the start up of BOSS and in some cases BOSS
          will cancel a temporary file not in use. A temporary file is vi-
          sible from all processes with the same login base. 
           
          L_o_g_i_n_ _F_i_l_e_s_ 
          A login file is cancelled on request of the user or by start up
          of BOSS. A login file is visible from all processes with the same
          login base. 
           
          U_s_e_r_ _F_i_l_e_ 
          A user file is only cancelled on the request of the user. A user
          file is 'visible' from all processes created with the same job-
          name (user base) as when he created the file. 
           
          P_r_o_j_e_c_t_ _F_i_l_e_ 
                   A project file is only cancelled on the request of a user under
          the same project base. A project file is visible from all proces-
          ses with the same project base as when the file was created. 
           \f

                   S_y_s_t_e_m_ _F_i_l_e_ 
          A system file may only be created and modified by the maintenance
          staff. The file is visible from all projects enabling program-
          ming. 
           
          User, project and system files are named in common as p_e_r_m_a_n_e_n_t_
          f_i_l_e_s_, because they are never cancelled automatically. When a
          file is born, it will always start out as a temporary file. La-
          ter, the scope of the file may be changed by means of the scope
          command, which is available as an FP-command. 
           
          A login file or a temporary file may be created with the name p
          even if you already have a user file with that name. When you la-
          ter refer to p, the login file will be used. If the login file is
          cleared, the user file will reappear. In the same way, a user fi-
          le may be created even if a project file with the same name al-
          ready exists. And finally a project file may be created with the
          same name as a system file. 
           
           
B_._1_ _ _ _ _ _ _ _R_e_p_r_e_s_e_n_t_a_t_i_o_n_ _o_f_ _S_c_o_p_e_                                             B.1
           
          Each file in the system is described by an entry in the common
          file catalog (which itself is a system file). The entry associa-
          tes a permkey and an interval (the so-called entry base) with the
          file. The catalog key may be 0, 2 or 3 and defines the 'life
          time' of the entry. The entry base defines an interval of inte-
          gers from which the file is visible. Together the permkey and the
          base define the scope. 
           
              A process searching for a file in the catalog will have a c_a_t_a_l_o_g_
          b_a_s_e_ (an interval) from which it looks for visible entries. The
          result of the lookup will be the file with the name wanted and
          with the smallest entry base surrounding the catalog base (or e-
          qual to the catalog base). 
           
          Within certain limits the job may change its catalog base and the
          entry base of files. To each job is associated 3 limiting inter-\f

          vals specified in the user catalog and defining the access rights
              of the job. Typically they appear like this: 
           
                Max base 
           
                      User base 
           
                           Std base 
           
           
                                Possible non-standard positions 
                                of catalog base. 
           
           
           
          The max base, the std base and the catalog base are parts of the
          process description in the monitor, which maintains these rules: 
          The job may change its catalog base to any interval which is con-
          tained in (or equals to) the max base and which contains the std
          base (or equal it). The catalog base may also be contained in the
          std base. The job may cancel or modify a file if the job could
          change its own catalog base to the entry base of the file. Thus
          files with an entry base outside the max base or adjacent to the
          std base are protected against the job. Files adjacent to the std
          base cannot even be read by the job. 
           
          Relative to the process, the scopes of files may now be described
          in this way: 
           
          t_e_m_p_ _f_i_l_e_s_:        permkey 0, entry base equals (or is contained
                             in) the std base. 
           
          l_o_g_i_n_ _f_i_l_e_s_:       permkey 2, entry base as for temp files. 
           
          u_s_e_r_ _f_i_l_e_s_:        permkey 3, entry base equals user base. 
           
          p_r_o_j_e_c_t_ _f_i_l_e_s_:     permkey 3, entry base equals max base. 
           
          s_y_s_t_e_m_ _f_i_l_e_s_:      entry base sorrounds the max base. 
           \f

                   Files with permkey 0 or 2 (non-permanent files) cannot be genera-
          ted with an entry base surrounding the std base, as this would
          prevent s from distinguishing processes temporary files from
          other processes. Thus the std bases may never overlap, not even
          the std base of the maintenance project (which has the largest
          possible interval as its max base). 
           
          A full description of the file system is found in ref. 5. 
           \f

         C_._ _ _ _ _ _ _ _ _L_O_G_I_C_A_L_ _S_T_A_T_U_S_ _B_I_T_S_                                                 C.
           
          The meaning of the logical status bits is: 
           
          1 shift 23:   I_n_t_e_r_v_e_n_t_i_o_n_. The device was set in local mode
                        during the operation. 
                         
          1 shift 22:   P_a_r_i_t_y_ _e_r_r_o_r_. A parity error was detected during
                        the block transfer. 
                         
          1 shift 21:   T_i_m_e_r_. The operation was not completed within a
                        certain time defined in the hardware. 
                         
          1 shift 20:   D_a_t_a_ _o_v_e_r_r_u_n_. The data channel was overloaded and
                        could not transfer the data. 
                         
          1 shift 19:   B_l_o_c_k_ _l_e_n_g_t_h_. A block input from magnetic tape was
                        longer than the buffer area allowed for it. 
                         
          1 shift 18:   E_n_d_ _o_f_ _d_o_c_u_m_e_n_t_. Means various things, for
                        instance: Reading or writing outside the backing
                        storage area was attempted, the paper tape reader
                        was empty, the end of tape was sensed on magnetic
                        tape. For further details see the description of
                        External processes (see RCSL 31-D478: External
                        Processes). 
                         
          1 shift 17:   L_o_a_d_ _p_o_i_n_t_. The load point was sensed after an
                        operation on the magnetic tape. 
                         
          1 shift 16:   T_a_p_e_ _m_a_r_k_. A tape mark was sensed or written on the
                        magnetic tape. 
                         
          1 shift 15:   W_r_i_t_e_-_e_n_a_b_l_e_. A write-enable ring is mounted on the
                        magnetic tape. 
                         
          1 shift 14:   M_o_d_e_ _e_r_r_o_r_. It is attempted to handle a magnetic
                        tape in a wrong mode (NRZ or PE). 
                         \f

          1 shift 13:   R_e_a_d_ _e_r_r_o_r_. Occurs on card reader. See the descrip-
                        tion of 'External processes'. 
                         
              1 shift 12:   C_a_r_d_ _r_e_j_e_c_t_ _o_r_ _d_i_s_c_ _e_r_r_o_r_. Occurs on card reader or
                        disc. See the description of 'External processes'. 
                         
              1 shift 8:    S_t_o_p_p_e_d_. Less than wanted was output to a file of
                        any kind or zero bytes were input from a backing
                        storage area. 
                         
              1 shift 5:    P_r_o_c_e_s_s_ _d_o_e_s_ _n_o_t_ _e_x_i_s_t_. The document is unknown to
                        the monitor. 
                         
          1 shift 4:    D_i_s_c_o_n_n_e_c_t_e_d_. The power is switched off on the
                        device. 
                         
              1 shift 3:    U_n_i_n_t_e_l_l_i_g_i_b_l_e_. The operation attempted is illegal
                        on that device, e.g. input from a printer. 
                         
              1 shift 2:    R_e_j_e_c_t_e_d_. The program may not use the document, or
                        it should be reserved first. 
                         
              1 shift 1:    N_o_r_m_a_l_ _a_n_s_w_e_r_. The device has attempted to execute
                        the operation, i.e. '1 shift 5' to '1 shift 2' are
                        not set. 
                         \f

F_                  
           \f

                    
           \f

«eof»