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

⟦4cf43849b⟧ TextFile

    Length: 135552 (0x21180)
    Types: TextFile
    Names: »D49«

Derivation

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

TextFile

                                                 i 
           
                   F_O_R_E_W_O_R_D_ 
           
              First edition: RCSL No 31-D482. 
           
           
          Second edition: RCSL No 31-D512. 
          This manual describes the operating system SOS, as it appears in
          release 2.0, October 1978. The former version was a preliminary
          version intended for multiterminal jobs. The present version in-
          cludes interactive multiterminal jobs (using TEM), interactive
          single terminal jobs (with or without using TEM) and batch jobs.
          The present version supports in a primitive form access to de-
          vices like tape stations and flexible discs. 
           
          This manual is an exhaustive description of SOS and it includes
          subjects of interest to users, programmers, operators and instal-
          lation staff. 
           
          Niels Møller Jørgensen 
          A/S REGNECENTRALEN, September 1978 
           
           
          Third edition: RCSL No 31-D662. 
             The changes are indicated by correction lines in the left margin
              and concern mainly the description of the new facility for typing
          invisible password. 
           
          Edith Rosenberg 
          A/S REGNECENTRALEN af 1979, October 1981 
           
           \f

                                                 ii 
           \f

                                                 iii 
           
                   T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          1.  INTRODUCTION ...........................................   1 
           
              2.  USER'S Guide ...........................................   4 
              2.1  SOS Illustrated by Means of Examples ..............   4 
              2.2  SOS User Commands .................................  13 
                   2.2.1  Job Creation Commands ......................  14 
                   2.2.2  Multiterminal Commands .....................  15 
                   2.2.3  Job Intervention Commands ..................  17 
                   2.2.4  Device Handling Commands ...................  18 
                   2.2.5  Password ...................................  19 
              2.3  Terminal Access ...................................  20 
              2.4  Resource Allocated to SOS Jobs ....................  21 
           
          3.  REFERENCE INFORMATION ..................................  22 
              3.1  Job Scheduling ....................................  22 
              3.2  Terminal Access ...................................  25 
              3.3  SOS - Job Intercommunication ......................  26 
                   3.3.1  Primary Input and Output ...................  27 
                   3.3.2  Transparent Communication to TEM ...........  28 
                   3.3.3  Parent Messages ............................  30 
           
          4.  OPERATING GUIDE ........................................  33 
              4.1  Start-Up ..........................................  33 
              4.2  Operator Intervention .............................  34 
                   4.2.1  System Intervention ........................  34 
                   4.2.2  Job Intervention ...........................  35 
                   4.2.3  Device Support .............................  36 
                  4.3  Close Down ........................................  37 
              4.4  How to Handle System Failure ......................  37 
           
          5.  INSTALLATION NOTES .....................................  40 
              5.1  System Distribution ...............................  40 
              5.2  System Trimming ...................................  41 
              5.3  User Catalog ......................................  48 
                   5.3.1  Data per Job (Process) .....................  49 \f

                                                 iv 
           
                   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_ 
           
                   5.3.2  Creation and Change of the User Catalog ....  50 
                          5.3.2.1  Creation ..........................  51 
                              5.3.2.2  Change ............................  53 
                          5.3.2.3  Listing ...........................  55 
                   5.3.3  Resources Needed for Creating a Catalog ....  55 
                   5.3.4  Error Messages .............................  56 
              5.4  Test Facilities ...................................  59 
           
           
          A_P_P_E_N_D_I_C_E_S_: 
           
          A.  REFERENCES .............................................  63 
           
          B.  SOS COMMANDS ...........................................  64 
           
          C.  MESSAGES FROM SOS ......................................  65 
           
          D.  AN EXAMPLE OF A MULTITERMINAL PROGRAM ..................  71 
           
          E.  EXAMPLE OF A USER CATALOG ..............................  72 
           
          F.  THE AUXILIARY FILE "sostrim" ...........................  73 
           
          G.  THREE VERSIONS OF A MASTER MIND PROGRAM ................  75 
              G.1  Simple Single Terminal Version ....................  75 
              G.2  Single Terminal Version with Input Checking .......  76 
              G.3  Multiterminal Version with Input Checking .........  77 
           
          H.  INDEX ..................................................  78 
              H.1  Survey of Examples ................................  78 
           
           \f

F_       1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_                                                     1.
           
          The main purpose of an operating system is to serve the users by
          supervising the execution of their programs. In a multiprogram-
          ming environment with a number of users running their programs
          simultaneously the main tasks include: 
           
               1) facilitate resource sharing 
               2) control and facilitate the access to common equipment 
               3) prevent unauthorized access to private information 
           
          In the case of RC8000 the supervisory functions are performed by
          the monitor (ref. 1). The resources of the computer may be par-
          titioned into so-called processes. A process is a set of re-
          sources used for program execution. In each process programs may
          be executed one at a time. A process may play the role of an
          operating system by creating and controlling child processes ac-
          cording to some strategy. 
           
          SOS is an operating system process and each user logged in is
          served by a child process, created by SOS. 
           
          In many computer systems the primary store is a key resource. To
          obtain a good machine utilization it is important that key re-
          sources are released, when they are not actively used. 
           
          At interactive program execution there will be long periods du-
          ring which the process waits for the terminal operator to type
          some input. In case no resources are released during these per-
          iods, the machine utilization will become prohibitively poor. 
           
          The main purpose of SOS is to make a number of programs (pri-
          marily interactive programs) share the same part of primary
          store. This is done by supervising the program execution and by
          swopping programs (writing the primary store to backing store
          during passive periods). 
           
                   SOS is mainly intended for supporting interactive program exe-
          cution. However, SOS includes facilities for executing batch\f

          jobs, too, and the resource scheduling is based on the following
          elements: 
           
          A series of programs executed in the same process one after the
          other is called a "job". 
           
             a) Any job running under SOS is in one of the following
                states: 
                1) running 
                2) suspended (ready to run, but the primary store is
                   occupied by another job) 
                3) waiting (the job is not ready to run - e.g. waiting for
                   terminal input) 
                 
             b) Execution time is allocated in slices (of a few seconds).
                In case a job does not suspend itself within a time slice
                it will be suspended by SOS. 
                 
             c) Highly interactive jobs will be favoured by a high prior-
                ity, while more CPU-bound jobs will get descreased prior-
                ity. The time slices are allocated according to the prior-
                ities of all jobs which are ready to run. 
                 
             d) Batch (or background) jobs are activated only during pe-
                riods where no interactive jobs are ready to run, and a
                running batch job is stopped immediately when some inter-
                active job becomes ready for activation (for instance when
                input arrives from a terminal). 
                 
          In RC8000 any program (utility or user defined program) is ex-
          ecuted in a so-called "process", no matter the operating system
          controlling the execution. Thus the access to the basic computing
          facilities (CPU, primary store and backing store) is not affected
          by the actual operating system, and all utility programs like
          compilers, editor, catalog handling programs etc. may be used
          under SOS exactly as under S or BOSS. 
           
                   However, SOS does not allow full and direct access to slow de-
          vices like printers, paper tape readers etc. This is so because\f

          the resources occupied by programs using slow devices are often
          poorly utilized - it is extremly inconvenient if interactive pro-
          grams are blocked by programs using slow devices. 
           
          The use of slow devices is assumed to be undertaken by service
          modules like the printing module (PRIMO) or the file router. 
           
           \f

F_       2_._ _ _ _ _ _ _ _ _U_S_E_R_'_S_ _G_U_I_D_E_ 2.
           
          The present chapter illustrates by means of examples some of the
          facilities offered by SOS. All facilities of SOS are described in
          detail in later sections. According to the intentions of SOS the
          examples mainly concern interactive program execution. 
           
           
2_._1_ _ _ _ _ _ _ _S_O_S_ _I_l_l_u_s_t_r_a_t_e_d_ _b_y_ _M_e_a_n_s_ _o_f_ _E_x_a_m_p_l_e_s_ 2.1
           
          Job creation. 
           
          SOS is always accessed from a terminal and a session is initiated
          by a "job creation". At job creation SOS consults the user cata-
          log to check that the user is allowed to use the system and to
          know how much resources shall be allocated to him. The job crea-
          tion is initiated by pushing the attention key. The user is then
          asked for the name of the system, he is going to use. In case of
          SOS the user will be answered by a ">" and then he may type his
          command. (In the examples all output written on the terminal is
          printed with capital letters while terminal input is printed with
          small letters. @ denotes a push on the attention key). 
           
               @ 
               ATT sos 
               > go rc pass nn 
               02.06 SOS: RC ENROLLED 
           
          Example 1: Job creation. 
           
          The command (go) creates a set of resources (a process) with the
          name "rc" and initiates this process by loading the file proces-
          sor FP (see ref. 3). In this example a password ("nn") is de-
          manded to create the job "rc". 
           
                   When a user has started a session by creating a job as explained
          in the former, his next command(s) will be interpreted by FP and
          he will be able to run the utility programs interactively. 
           \f

M_               claim 
                
               AREA 24  BUF 25  SIZE 60416  FIRST CORE 65268 
                
               DISC: 21 SEGM/SLICE 
               TEMP     504 SEGM   18 ENTR 
               LOGIN    315 SEGM    5 ENTR 
P_               PERM     315 SEGM    5 ENTR 
           
          Example 2: Executing utility program. 
                
          Simple program development. 
          The present part of the chapter primarily deals with interactive
          program development (typing and debugging), and readers who are
          not familiar with or not interested in program development, may
          skip this section and continue at "execution of interactive
          programs". 
           
          Assume that some user wants to exercise his mind by playing the
          "master mind" game. Then he needs someone to set up random com-
          binations and to answer his guesses. He realizes that in case he
          could write a program enabling the computer to do the job, he
          would have the fastest, most reliable and most patient player
          ever seen. 
           
          After some thinking the user has created a program in his mind
          (and on a piece of paper) and he wants to debug it. First of all
          he must type in the program text. This is done by using the
          utility program "edit". 
           \f

M_               mastertxt=edit 
               EDIT BEGIN. 
               i/ 
               begin 
                   integer array solution,guess(1:4); 
                   integer i,j,x,digitok,digitincluded; 
                
               setcombination: 
                   for i:=1 step 1 until 4 do 
                   begin 
                     random(x); 
                     solution(i):=x mod 10; 
                     for j:=1 step 1 until i do 
                     if solution(i) = solytion(j) and i <> j then i:=i-1; 
                   end; 
                   write(out,<:master mind program ready<10>:>); 
                
               next: 
                   setposition(out,0,0); 
                   write(out,<:             :>); 
                   for i:=1step 1 until 4 do read(in;guess(i)); 
                   digitok:=digitincluded:=0; 
                   for i:=1 step 1 until 4 do 
                   begin 
                     for j:=1 step 1 until 4 do 
                       if guess(i) = solution(j) then 
                       begin 
                         if i=j then digitok:=digitok+1 
                                else digitincluded:=digitincluded+1; 
                       end; 
                     write(out,<<dd>,guess(i)); 
                   end; 
                   write(out,<:  =>  :>,false add 43,digitok, 
                                        false add 32,4-digitok, 
                                        false add 45,digitincluded, 
                                        false add 10,1); 
                     if digitok  <4 then goto next else 
                     begin 
                       write (out,<:you got it !!<10>:>); 
                       goto setcombination; 
                     end; 
                     /, 
                     f 
P_                     EDIT END. 
                
                 Example 3: Creating a text file. 
           \f

                   Now the program text has been created and stored in the file
          "mastertxt". To save the text for later use it may be permanented
          by means of the utility program "scope": 
           
M_               scope user mastertxt 
               lookup mastertxt 
               MASTERTXT =SET 2 DISC D.780930.0207 0 0 0 0 ; USER 
P_                         ;  1886 135 3 810 819 
           
          Example 4: Executing utility programs. 
           
          After this the program may be translated by calling the ALGOL
          compiler. 
           
M_               masterprog = algol mastertxt 
                  
               MASTERTXT D.780930.0207 
                   1:BEGIN 
              
                  37:END; 
                6. LINE   10 . 3 UNDECLARED 
                   LINE   16 . 6 TERMINATION 
                   LINE   16 . 8 DELIMITER 
P_               ALGOL END 22 
                
          Example 5: Program translation. 
           
          The errors detected by the compiler may be corrected by means of
          the editor, like this: 
           
M_               newmaster = edit mastertxt 
               EDIT BEGIN. 
               1./solytion/, r/solyt/solut/ 
                   IF SOLUTION(I) = SOLUTION(J) AND I <> J THEN I:=I-1; 
               1./read(in;/ 
                 FOR I:=1 STEP 1 UNTIL 4 DO READ(IN;GUESS(I)); 
               r/in;/in,/ 
                 FOR I:=1 STEP 1 UNTIL 4 DO READ(IN,GUESS(I)); 
               f 
               EDIT END. 
               mastertxt=move newmaster 
               masterprog = algol mastertxt 
                
               MASTERTXT D.780930.0217 
                   1:BEGIN 
                
                  37:END; 
P_               ALGOL END 25 
              
            Example 6: Text editing. 
           \f

                   The corrected version of the program is translated and in case
          the translation was successful the next step will be to run the
          program. 
           
          Execution of interactive programs. 
          All programs (utility or user defined) are activated by the file
          processor which reads the job control commands (program calls)
          loads the actual programs and hands over eventual parameters. The
          master mind program just created uses no parameters and it may be
          executed like this: 
           
M_               masterprog 
               MASTER MIND PROGRAM READY 
               0 1 2 3 
                               0 1 2 3 =>   -- 
               4 5 6 7 
                               4 5 6 7 =>   - 
               1 0 7 8 
                               1 0 7 8 =>   --- 
               7 9 1 0 
                               7 9 1 0 => + - 
               7 8 0 2 
                               7 8 0 2 =>   --- 
               6 2 8 0 
                               6 2 8 0 => ++ 
               3 7 8 0 
                               3 7 8 0 => ++++ 
               YOU GOT IT !! 
P_               MASTER MIND PROGRAM READY 
           
          Example 7: Execution of interactive program. 
           
          The master mind program is by its nature an interactive program
          as it would not be possible to prepare the input (guesses) in
          advance - each new input will depend on all answers written by
          the program. 
           \f

          The program developed will never terminate. When the user reaches
          the solution the program will generate a new one and try again.
          The only way to escape is to make a job intervention. To remove
          the job the user may proceed like this: 
           
M_               @ 
                        ATT sos 
           
               >kill 
               02.23 SOS: READY 
P_               02.23 SOS: RC REMOVED AFTER USER KILL 
           
          Example 8: Job intervention. 
           
          Job termination. 
          However, most programs will terminate, and the usual way to close
          a terminal session is by calling the utility program "finis".
          This program tells SOS that the job has finished and the re-
          sources allocated may be released. 
           
M_               finis 
P_               02.24 SOS: RC REMOVED AFTER FINIS 
                
          Example 9: Job termination. 
              
          The master mind program may be changed in different ways. In ap-
          pendix G is shown two new versions. One of them is a single ter-
          minal version performing input check. The other one is a multi-
          terminal version based on the context facility of ALGOL and ac-
          cessing the terminals via TEM. 
           
          Accessing a Multiterminal Program. 
          A Multiterminal version of the mastermind program (as shown in
          appendix G) may be accessed from a terminal by using the multi-\f

          terminal "login" and "logout" facilities of SOS. The session may
          look like this (the program is executed in the job "team"): 
           
M_               @ 
               ATT sos 
                
               >in team usera pass a1 
               02.52 SOS: TERMINAL CONNECTED 
                
               FROM TEM 
               MASTER MIND PROGRAM READY 
               0 1 2 3 
                                      0 1 2 3 = >     - 
               4 5 6 7 
                                      4 5 6 7 =>      - 
               8 9 1 5 
                                      8 9 1 5 => +    -- 
               9 8 2 5 
                                      9 8 2 5 => ++   - 
               9 3 8 5 
                                      9 3 8 5 => ++++ 
               YOU GOT IT !! 
P_               MASTER MIND PROGRAM READY 
              
          Example 10: Running a multiterminal program. 
              
          Automatic Program Activation. 
          In the examples shown so far the user has controlled his activ-
          ities by calling the programs one by one. In case a user from
          time to time runs exactly the same set of programs exactly the
          same way, he may get his programs activated automatically. This
          may be done by stating in the user catalog a set of commands that
          will be interpreted at login. 
           \f

          Some service functions may be implemented by executing automati-
          cally activated programs. A program, listing the jobs currently
          enrolled, might be run this way: 
           
M_               @ 
               ATT sos 
                
               >run display 
                
               FROM TEM 
               02.25 SOS: DISPLAY ENROLLED 
                
               DISPLAY AF SOS DEN 78 09 30 KL. 2.25 
                                                     CLAIM: 
               NAVN     START   RØRT   CPU   SIZE   BUF AREA 
               RCSAVE   02.24   02.24  0.0   75264    3    6 
               TEAM     02.25   02.25  0.0   75264    3    6 
               DISPLAY  02.25   02.25  0.1   12800    3    5 
                
               END    21 
P_               02.25 SOS: DISPLAY REMOVED AFTER FINIS 
              
          Example 11: Automatic program activation. 
              
          Running batch jobs 
          A number of activities are not suited for interactive execution.
          Often these activities are running for a long time without any
          communication with the user. Programs generating safety copies,
          translation of large systems or large database reorganizations
          are all examples of typical batch programs. Under SOS, batch
          programs may be executed, too. However, batch programs will never
          be activated when interactive programs are ready for running. 
           \f

                   A user who wants to "save" his files on a magnetic tape may do
          like this: 
           
M_               @ 
               ATT sos 
                
               >batch rcsave 
               02.27 SOS: RCSAVE ENROLLED 
               save mtlk0001.1.label.private tsos ttem 
                
               NO DUMPLABEL ON FILE 1 
               WRITTEN: DUMP  MTLK0001   001  VERS. 300978.02  S=1 PRIVATE 
                
               TSOS           144  PROJECT.DISC       D.780929.2137 
               TTEM            67  PROJECT.DISC       D.780926.2015 
                 2 ENTR.,     211 SEGM. 
                
               WRITTEN: DUMP  MTLK0001   002  EMPTY 300978.02      PRIVATE 
                
               END    75 
               finis 
P_               02.29 SOS: RCSAVE REMOVED AFTER FINIS 
           
            Example 12: Running a batch job from a terminal. 
           
          In case many interactive users are active in the system or in
          case the user saves many large files he will have to spend rather
          a long time between the "save-command" and the "finis command". 
           
          Instead he might prepare the whole job by creating a jobfile with
          the same contents: 
           
M_               savejob=edit 
               EDIT BEGIN 
               i/ 
               save mtlk0001.1.label.private tsos ttem 
               finis 
               /,f 
               EDIT END. 
P_               scope project savejob 
           
            Example 13: Creating a job file. 
           
                   The whole job may now be executed using this jobfile. By doing
          so, the user does not have to stay at the terminal during the
          run. 
           \f

M_               @ 
               ATT sos 
                
               >batch rc jobfile savejob pass nn 
               02.32 SOS: RC ENROLLED 
                
               READ   : DUMP  MTLK0001   001  VERS. 300978.02  S=1 PRIVATE 
                
               WRITTEN: DUMP  MTLK0001   001  VERS. 300978.02  S=1 PRIVATE 
                
               TSOS           147     USER.DISC        D.780930.0137 
               TTEM            67  PROJEKT.DISC        D.780926.2015 
                 2 ENTR.,     214 SEGM. 
                
               WRITTEN: DUMP  MTLK0001   002  EMPTY 300978.02      PRIVATE 
                
               END    75 
P_               02.34 SOS: RC REMOVED AFTER FINIS 
              
          Example 14: Running a job using a job file. 
           
          Often it would be more convenient if output from batch jobs were
          printed on a line printer. This may be done by using the service
          module PRIMO (see ref. 5). The output is currently written into
          a backing storage file and at job termination, PRIMO is asked to
          print the file. 
           
M_               savejob=edit 
               EDIT BEGIN 
               i/ 
               o outfile 
               save mtlk0001.1.label.private tsos ttem 
               o c 
               scope user outfile 
               filexfer outfile lp queue.paper.a4 
               finis 
               /,f 
P_               EDIT END 
           
            Example 15: Job file routing job output to printer. 
           
                  
         2_._2_ _ _ _ _ _ _ _S_O_S_ _U_s_e_r_ _C_o_m_m_a_n_d_s_ 2.2
           
          In this section all SOS user commands are described, their syntax
          and their semantics. The commands are grouped according to their
          functions. In chapter 4 of this manual (the Operating Guide) the
          SOS commands used at operator intervention are described. In case\f

          the system is run by the users themselves at least some of the
          users will have to know how to use these operator intervention
          commands. 
           
           
2_._2_._1_ _ _ _ _ _J_o_b_ _C_r_e_a_t_i_o_n_ _C_o_m_m_a_n_d_s_ 2.2.1
           
          SOS has three different job creation commands: "go", "run" and
          "batch". The syntax for the job creation commands is: 
           
M_m_m_             go                                      1 
             run     <jobname>   jobfile <filename> 
P_p_p_             batch                                   0 
              
M_m_m_                                                                     1  1 
                           pass  <password>  newpass  <password> 
P_p_p_                                                                     0  0 
              
          See examples 1, 11, 12 and 14. 
              
          Each of these commands will create a job (a process) with a set
          of resources as described in the user catalog. A job started by
          the "go" or the "run"-command will be scheduled as an interactive
          job while a "batch" job will be scheduled as a background job
          (i.e. a "batch" job may only be active during periods where no
          "go" or "run" jobs are ready for activation). 
           
          The difference between the "go" and the "run" commands concerns
          the handling of the terminal only. In case of a "run" command the
          terminal is connected via TEM (see ref. 4), offering output
          spooling. In case of a "go" command, the terminal is accessed by
          SOS directly - and no spooling is offered. At "batch" jobs, the
          terminal is always accessed by SOS directly (as at "go"). 
           
                   The "jobfile" option enables the user to prepare his job by
          creating a (permanent) file containing all program calls etc.
          necessary for the execution of his job. The jobfile is said to be
          the primary input document of the job. At jobs not using the job-
          file option, the terminal is the primary input document. In all
          cases the terminal is the primary output document of the job.  
           \f

          To avoid confusion, SOS will not accept that a given terminal is
          the primary input document of more than one job at a time. How-
          ever, the same terminal may be the primary output document of
          several jobs. 
           
          In other words, several jobs may be started from the same termi-
          nal (and run simultaneously), but at most one of these jobs may
          be created without using the jobfile option. 
           
          In the description of a process (a job) in the user catalog a
          field defining a password is included. In case this password is
          nonempty, the job creation will not be accepted unless the com-
          mand includes: pass <password>. This facility is included to
          check the authorization of the user and to grant privacy. An im-
          proved security may be obtained by redefining the password. This
          may be done by using the "newpass" option. By means of this op-
          tion, the password may be changed at startup like this: 
           
             ... pass hobo newpass hifi 
           
          (if the password of a process has become empty, it is not pos-
          sible by the newpass option to create a password - thus "public"
          jobs using no password cannot be blocked by a user defining a new
          password). 
           
           
         2_._2_._2_ _ _ _ _ _M_u_l_t_i_t_e_r_m_i_n_a_l_ _C_o_m_m_a_n_d_s_                                           2.2.2
           
          Jobs running multiterminal programs may use TEM (see ref. 4)
          directly (i.e. transparently via SOS). In any case the job must
          ask TEM to create a terminal group (pool) and then the terminals
          may be connected to the group (i.e. links are created to the ter-
          minals). The terminal connections may be established or removed
          by the program explicitly asking TEM to create or remove the
          links. Principally the same job may be performed by SOS using the
          multiterminal commands "in" and "out". 
           \f

          A user who wants to be serviced by a multiterminal job may get
          connected by using the "in" command: 
           
M_m_m_                                                                             1  1
          in  <jobname> <username>   pass <password>   newpass <password> 
P_p_p_                                                                             0  0
           
          See example 10. 
           
          SOS then consults the user catalog to check that the jobdescrip-
          tion according to <jobname> includes a user description with the
          name <username>. 
           
          The password and newpass options may be used here exactly as at
          the job creation commands. 
           
          After having connected the terminal, SOS generates a special in-
          put line and hands it to the multiterminal job. This input line
          is generated to tell the job that a new terminal has "logged in".
           
          When the terminal user wants to leave the job, he may use the
          "out" command: 
           
             out 
           
          This command causes SOS to generate a special input line (as at
          "in") to tell the multiterminal job that the terminal "logs out".
          The exact contents of the input lines generated at "in" and
          "out" may be found in chapter 3 (the Reference Part). 
           
           \f

2_._2_._3_ _ _ _ _ _J_o_b_ _I_n_t_e_r_v_e_n_t_i_o_n_ _C_o_m_m_a_n_d_s_                                        2.2.3
           
          SOS includes a set of job intervention commands enabling the user
          to control his job fully. The commands are: 
           
           stop 
M_m_m_           start              1 
                   <jobname>  
P_p_p_           break              0 
           kill 
           
          See example 8. 
           
          The <jobname> must be stated in case the actual job is created
          using the "jobfile" option. In other words: if the terminal is
          the primary input document of the job, the <jobname> is not
          necessary. 
           
          In any case the job intervened must be created from the terminal
          that is used for the job intervention. 
           
          The "stop" command is used to suspend a job during execution. SOS
          will suspend the job in such a way that it will be possible to
          resume the job execution later on (in case input/output to or via
          SOS is programmed in a nonstandard way, data may be lost because
          of the intervention, but programs using standard I/O should con-
          tinue unaffectedly). 
           
          The "start" command is used to activate suspended jobs. The
          suspension may be caused by a "stop" command, a "pause" parent
          message (see chapter 3) or the like. 
           
          The "break" command is used to interrupt a (possibly defective)
          program. SOS restarts the program in its interrupt routine,
          allowing it to run for at most one time slice. (Standard programs
          will use this piece of time to make some cleaning like: empty
          buffers, write error message etc.) After this period SOS aborts
          the job. 
           \f

                  However, SOS may be trimmed in such a way that the break command
           merely works as "stop load start" when the job is enrolled with-
               out a jobfile. So the user will not lose his temporary files if
          he breaks a program. 
            
          The "kill" command is used to abort jobs. The actual job will be
          stopped immediately and there will be no time for the job to re-
          port errors or the like. 
           
          It should be mentioned here that the job intervention commands
          described in this subsection also exist in a special version as
          "operator commands". (The operator version of the commands is
          described in chapter 4). 
           
           
2_._2_._4_ _ _ _ _ _D_e_v_i_c_e_ _H_a_n_d_l_i_n_g_ _C_o_m_m_a_n_d_s_    2.2.4
           
          As SOS is primarily intended for interactive processing, the use
          of devices (apart from backing store) must be limited to a mini-
          mum. However, batch jobs will never block interactive jobs so it
          is acceptable to allow batch jobs to use some kinds of devices. 
           
          The most obvious need for device access concern printing (on line
          printer) and generation of safety copies on magnetic tape or
          flexible disc. Printer handling is supposed to be performed by a
          service module like PRIMO (printing module). Generation of back
          up, however, may be done by batch jobs. 
           
          The use of magnetic tape, flexible disc and other devices with
          exchangeable documents is supported by a "call" command and an
          "include" command. 
           
          The "call" command looks like this: 
           
             call <deviceno> <documentname> 
           
          The function performed by the "call" command is to name a device
          (specified by the device number: <devno>). After having named the
          device, all jobs enrolled to SOS at present will be included as\f

          users of the device. At magnetic tapes and flexible discs the de-
          vice (station or drive) is usually given the name of the document
          currently mounted. 
           
                   In case of direct access to devices with fixed names (paper tape
          punch for instance), the job will have to be included as a user
          of the device. This may be done by using the "include" command: 
           
             include <deviceno> 
           
          All jobs enrolled to SOS at the moment of the inclusion will get
          access to the device - but still the device may only be used
          (reserved) by one job at a time. 
           
          It should be mentioned here that direct access to slow devices
          like a paper tape punch may cause a poor resource utilization,
          and only batch jobs should use this facility. Direct access to
          slow input devices like paper tape readers will not do neither at
          batch nor at online jobs. 
           
           
 2_._2_._5_ _ _ _ _ _P_a_s_s_w_o_r_d_    2.2.5
            
           Instead of typing the password as described in subsections 2.2.1
          and 2.2.2, the password may be typed invisible in a separate
          line. 
            
           If the password information in the login command is omitted, and
           the password defined for the job in the user catalog is non-
           empty, then SOS will answer by writing on the terminal: 
            
              >password 
            
           Now the password can be typed without echo on the screen, but a
           possible typing error cannot be corrected by means of backspace
           or rubout. The answer is delayed until a timer interrupt has
           occured (about 5 seconds). 
            
           In this case the password cannot be changed by a newpass-command.
            \f

                  So the syntax for job creation commands using invisible password
          is: 
           
              go 
M_m_m_                                                   1 
               run   <jobname>   jobfile <filename>    'nl' 
P_p_p_                                                   0 
              batch 
            
              ">password" <password> 
            
           where the text in " " is written by SOS. 
            
           The syntax for the "in" command becomes: 
            
              in <jobname> <username> 'nl' 
              ">password" <password> 
            
           Note! When the terminal is the main console, the password will
                n_o_t_ be invisible, neither when the console is a screen. 
                 
                 
         2_._3_ _ _ _ _ _ _ _T_e_r_m_i_n_a_l_ _A_c_c_e_s_s_                                                  2.3
           
          A program executed under SOS may perform terminal access in dif-
          ferent ways depending on job creation and program behaviour. 
           
          Jobs created by the "run" command will access the creating ter-
          minal via SOS and TEM, using the spooling facilities of TEM. Jobs
          created by "go" or "batch" commands will access the creating ter-
          minal via SOS only. 
           
          Any job (created by "run", "go" or "batch" command) using the
          "jobfile" option will use the creating terminal for output only.
           
          In any case the creating terminal is usually accessed by using
          the standard zones "in" and "out". 
           
          Any job may access one or more terminals via TEM by using the TEM
          facilities directly (see ref. 4). However, all TEM operations\f

          will be communicated via SOS, but they are handled almost trans-
          parently so that the user will normally feel no change. (The dif-
          ferences are described in chapter 3). 
           
           
2_._4_ _ _ _ _ _ _ _R_e_s_o_u_r_c_e_s_ _A_l_l_o_c_a_t_e_d_ _t_o_ _S_O_S_ _J_o_b_s_ 2.4
           
          According to the main intentions of SOS, the jobs should not be
          slowed down by accessing slow devices (and thereby block the pri-
          mary store for considerable amounts of time). 
           
          A reasonable rule for resource allocation may look like this: 
           
             A: interactive jobs ("go" or "run" jobs) should never access
                peripherals slower than backing storage. 
             B: batch jobs should never access peripherals slower than
                flexible discs or magnetic tape. 
             C: access to slow peripherals like printers should always be
                done via a service module like "PRIMO". 
                 
                   As a consequence the resources described in the user catalog only
          concern: 
           
             1) message buffers 
             2) area processes 
             3) backing storage entries 
             4) Backing storage segments 
              
          The direct use of devices (apart from backing storage) is not
          supported by the job creation (or the user catalog) - the user
          himself (or the operator) must use the "call" or "include" com-
          mands for this purpose. 
           
               \f

F_       3_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_ _I_N_F_O_R_M_A_T_I_O_N_ 3.
           
          The present chapter contains exact descriptions of subjects and
          details that most users do not have to consider. However, it may
          be necessary to go into some details to understand the system
          behaviour fully. 
           
           
3_._1_ _ _ _ _ _ _ _J_o_b_ _S_c_h_e_d_u_l_i_n_g_ 3.1
           
          SOS handles two kinds of jobs: interactive jobs and batch (or
          background) jobs. As a consequence the job scheduling is based on
          two main queues: a queue of interactive jobs and a queue of batch
          jobs. These two queues contain only jobs which are ready to run.
          Jobs waiting for external events like terminal input are queued
          up in a waiting queue. 
           
          Only one job may be active at a time and this job is found like
          this: 
           
               - If the interactive queue is not empty, then find the
                 "best" job and activate it. 
               - If the interactive queue is empty and the batch queue is
                 not empty, then take the first job in the batch queue and
                 activate it. 
               - If both queues are empty, then wait for an event making
                 some job ready for execution. 
              
          When started, a job will be allowed to run for a period that de-
          pends on the kind of job. 
           
             1. An interactive job will be stopped 
                1) when it asks for input, 
                2) when its terminal output exceeds the spooling capacity, 
                3) when the time slice expires or 
                4) when the job ends - whatever happens first. 
           \f

                      2. A batch job will be stopped 
                1) when it asks for input, 
                2) when its terminal output exceeds the spooling capacity,
                3) when the job ends or 
                4) when some event arrives that will make an interactive
                   job ready to run - whatever happens first. 
                 
          When a batch job is stopped because of an interactive job, it
          will remain the first job in the batch queue. When a batch job is
          created it is put back on the batch queue. Thus the strategy of
          the batch job scheduling is a pure first in first out strategy. 
           
          However, this strategy may be overwritten by users or operators
          using the job intervention commands "stop" and "start". "Stop"
          will move the job from the batch queue to the waiting queue.
          "Start" will move the job to the batch queue but in different
          ways depending on circumstances: 
              
             operator start moves the job to the head of the queue  
             user start puts the job back on the queue. 
           
          Interactive jobs are scheduled according to dynamically changing
          priorities. Each interactive job is equipped with a "priority
          class" and an actual "priority". 
           
          The priorities (and -classes) change according to the behaviour
          of a job and the main rules are: 
           
             1. interaction (= terminal input) implies increasing priority 
              
             2. heavy cpu-load (= using entire time slices) implies de-
                creasing priority. 
              
          An interactive job starts at the max. priority of the system
          (= 0). No job will ever exceed the max. priority. 
           \f

                   In the following the main algorithms used at job scheduling are
          listed: 
           
             A. An interactive job is suspended because it asks for
                terminal input: 
                 
                       if priority _class + classgain > 0 
                          then priority _class: = 0 
                          else priority _class:=priority _class + classgain; 
                       priority: = priority _class; 
                 
             B. An interactive job is suspended because the time slice had
                expired: 
                 
                       if priority _class - classloss < minprio 
                          then abort _job 
                          else priority _class: = priority _class-classloss; 
                       priority: = priority _class; 
                 
             C. When the "best" job is to be found in the interactive
                queue, SOS proceeds like this: 
                 
                       job: = queue.first; 
                       while job.priority < max _priority do 
                       begin 
                           job.priority: = job.priority + priogain; 
                           put _back _on _queue (job); 
                           job: = queue.first; 
                       end; 
                 
          thus all interactive jobs stay in the same queue no matter the
          priority. However, a low priority will imply that the job will be
          bypassed by other jobs a number of times before activation. Dur-
          ing a cpu-bound period an interactive job will thus spend in-
          creasing periods of time between its active time slices (in case
          the whole system has a steady load). 
           
               \f

         3_._2_ _ _ _ _ _ _ _T_e_r_m_i_n_a_l_ _A_c_c_e_s_s_                                                  3.2
           
          Terminals accessed by SOS jobs may be: 
           
             1) The primary input/output terminal from which the job was
                created. 
                 
             2) A number of terminals connected to a terminal group in TEM.
                This terminal group must be created by the job itself. 
                 
          The message flow controlling the access is described in subsec-
          tions 3.3.1 and 3.3.2. In this section some conventions and li-
          mitations concerning terminal access shall be mentioned. 
           
          A. Programs using terminal access under SOS must follow the stan-
             dard conventions for transfer checking. The most important
             rule is that input or output messages answered by an empty
             answer (no data transferred) are repeated. 
              
          B. SOS jobs will never see hard errors on terminals because SOS
             will automatically disconnect such a terminal. In case the
             terminal was primary input terminal of a job, the job is
             aborted. In case the terminal was connected to a multitermi-
             nal group, it will become disconnected and the job will re-
             ceive a special input telling that the terminal is discon-
             nected. 
              
          C. SOS jobs may create at most one terminal group for multitermi-
             nal access. This group must have the name of the terminal ac-
             cess module (usually TEM). Jobs may connect a number of ter-
             minals to this pool (by creating TEM-links). In case the ter-
             minals are connected by the job itself, SOS is not directly
             involved and there will be no possibility for SOS to check the
             authorization of the terminal users. This facility may for in-
             stance be used for accessing F8000 terminals. 
              
          D. When an SOS job has created a terminal group, SOS may connect
             terminals to this group. This is done in case a terminal user
             "logs in" by using the "in" command. If the user is allowd to\f

             be connected to the job (according to the user catalog), SOS
             will do so and to inform the job of the arrival of a new user,
             SOS generates a special input line. In a similar way SOS may
             disconnect terminals using the "out" command. The contents of
             these special input lines are: 
              
                login:   <localid.><1><1><32>att<32><32><32><process name><NL>
                logout:  <localid.><2><2><32>out<32><32><32><NL> 
                hard er- 
                ror:     <localid.><2><2><32>hard<32>error<NL> 
                 
             Only TTY-compatible terminals may use the "in" and "out" faci-
             lities of SOS. 
              
              
3_._3_ _ _ _ _ _ _ _S_O_S_ _-_ _J_o_b_ _I_n_t_e_r_c_o_m_m_u_n_i_c_a_t_i_o_n_ 3.3
           
          An SOS job may access terminals, backing storage and eventually a
          few other kinds of devices. All kinds of access are on the basic
          level performed by using the "send message-wait answer" func-
          tions. The communication with backing storage, for instance, will
          never be affected by SOS. However, SOS intervenes all communica-
          tion between an SOS job and its terminal(s), to know precisely
          the current state of the job. 
           
          Thus even though a job "believes" that it communicates with its
          primary input/output terminal (and eventually TEM) it really com-
          municates with SOS. 
           
          Apart from the terminal communication there is a "parent commu-
          nication" (i.e. jobs send messages to their parent, SOS, when
          they finish, in case they want documents mounted, if they detect
          severe internal errors or the like). 
           
           \f

3_._3_._1_ _ _ _ _ _P_r_i_m_a_r_y_ _I_n_p_u_t_ _a_n_d_ _O_u_t_p_u_t_ 3.3.1
           
          The primary input and output communication performed by a job may
          be visualized like this: 
           
                      J_o_b_                  S_O_S_                 T_e_r_m_i_n_a_l_ _(_o_r_ _T_E_M_)_ 
           
             input message ->     stop process 
                                  input message  -> 
                                       - 
                                  (other jobs may run) 
                                       - 
                                  put job into   <-   input answer 
                                  active queue 
                                       - 
                                  copy input 
                           <-     input answer 
                                  activate job 
                                       - 
                                       - 
             output message ->    copy output 
                                  output message -> 
                           <-     output answer 
                                       - 
                                       - 
                                                 <-   output answer 
              
          Only two message operations are involved: 
              
             input:                          _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                  message:       + 0         _3_ _ _ _ _ _m_o_d_e_ _ _ _ _ 
                                 + 2         _f_i_r_s_t_ _a_d_d_r_e_s_s_ _ 
                                 + 4         _l_a_s_t_ _a_d_d_r_e_s_s_ _ _ 
                                 + 6 
                                 + 8 
                                 +10 
                                 +12 
                                 +14         _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
              \f

          The input messages may for instance be sent when using the read
          procedures of ALGOL. The zone used for terminal communication
          should be opened exactly as to a "real" terminal: 
           
          open (z, mode shift 12 + 8, <name of SOS system>, give up) 
           
             output:                         _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                  message:       + 0         _5_ _ _ _ _ _m_o_d_e_ _ _ _ _ 
                                 + 2         _f_i_r_s_t_ _a_d_d_r_e_s_s_ _ 
                                 + 4         _l_a_s_t_ _a_d_d_r_e_s_s_ _ _ 
                                 + 6 
                                 + 8 
                                 +10 
                                 +12 
                                 +14         _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
              
          The output messages may for instance be sent, when using the
          write procedures of ALGOL. The zones used for output should be
          opened exactly as for input. 
           
           
3_._3_._2_ _ _ _ _ _T_r_a_n_s_p_a_r_e_n_t_ _C_o_m_m_u_n_i_c_a_t_i_o_n_ _t_o_ _T_E_M_ 3.3.2
           
          SOS jobs may use TEM by sending messages to the TEM process as
          described in the TEM manual (ref. 4). All messages to TEM will
          be sent via SOS and SOS imposes a set of limitations. 
           
          1. An SOS job may only create one terminal group. 
          2. The terminal group created by a job must use the name of the
             TEM process (usually TEM). 
          3. The buffer length of SOS will be the max block length of data
             transfers. 
          4. No dummy message will be returned to the job after pool
             creation. 
              \f

          As TEM may spool input and output, the communication job-SOS-TEM
          looks slightly different from the primary input/output communica-
          tion: 
           
                      J_o_b_                  S_O_S_                 T_E_M_ 
           
             output message ->    output message -> 
                                  send timer 
                                  wait first answer 
                                  (output or timer) 
                                       - 
                                  regret timer   <-   output answer 
                            <-    output answer 
                                       - 
             input message  ->    input message  -> 
                                  send timer 
                                  wait first answer 
                                  (input or timer) 
                                       - 
                                  if timer answer first  
                                  then stop job 
                                       - 
                                  (other jobs may run) 
                                       - 
                                  put job into   <-   input answer 
                                  active queue 
                                       - 
                                  copy input 
                            <-    input answer 
                                  activate job 
              
          The reason for using a timer period (of 50-100 m.sec.) is to
          avoid swopping a job in case TEM is able to answer within this
          period (often TEM will need a little time for transferring
          spooled data). 
           
          In the communication between a job and TEM, SOS will offer a
          special feature. The usual convention is that each block of out-
          put sent to TEM must include address information (in case of TTY\f

          compatible terminals, the first 24 bits of a block is interpreted
          as an address). When communicating via SOS, it is possible to use
          an implicit addressing mode for output. In this mode no address
          information is needed in the block. Instead the output block is
                   routed to the terminal from which the job has received its latest
          input block. (This way of addressing may often be convenient as
          most terminal communication looks like terminal commands immedi-
          ately followed by an answer). 
           
          To use this facility the outputzone must be opened like this: 
           
             open (z, 1 shift 18 + mode shift 12 + 8,<name of TEM>,0); 
           
           
3_._3_._3_ _ _ _ _ _P_a_r_e_n_t_ _M_e_s_s_a_g_e_s_ 3.3.3
           
          Jobs may send parent messages to inform the system of job termi-
          nation, severe errors or to request operator action. 
           
          Parent messages all use the following format: 
                                       _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
             message: + 0              _f_u_n_c_t_i_o_n_ _ _ _p_a_t_t_e_r_n_ _<_5_ _+_ _w_a_i_t_ _ 
                      + 2              _i_n_t_e_g_e_r_ _o_r_ _t_e_x_t_ _p_o_r_t_i_o_n_ _ _ _ _ _ _ 
                      + 4              _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                      + 6              _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                      + 8              _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                      +10              _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                      +12              _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
                      +14              _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
           
          "function" specifies the operation to be performed. Only even
          values are allowed. 
           
          "pattern" specifies how the parent (SOS) is to display the mes-
          sage (on the system terminal). The "pattern" contains seven bits,
          one to each of the last seven words of the message (+2,+4......
          +14). 
           \f

          When a bit equals one it means that the corresponding word should
          be displayed as an integer, otherwise the word is displayed as a
          text portion of 3 characters. Thus bit 1<11 means that the second
          word of the message is an integer and 1<5 means that the last
          word of the message is an integer. 
           
                   "wait" may be zero or one. A zero means that the job wants an
          answer immediately, one means that the job should not be answered
          (restarted) until some operation (operator action) is completed. 
           
          When receiving a parent message, SOS will perform the following
          actions depending on the function of the message: 
           
             function = 2:           finis 
           
                  The job is aborted. Temporary files are cleared, eventual
                  TEM pools and links are removed. The job process is re-
                  moved and a finis message is written on the start-up ter-
                  minal of the job. 
                   
             function = 4:           break 
                   
                  The actions are exactly as for finis. However, the mes-
                  sage written on the terminal is different. 
                   
             function = 14:          mount 
                   
                  If the document is already mounted and accessible, the
                  job will become a user of the device and SOS returns the
                  answer immediately. If the document is not mounted, SOS
                  displays the message and stops the job. When the operator
                  has mounted the job he may activate it by using the
                  "start" command. 
                   
             function = 16:          print 
                   
                  Displays the contents of the message according to the
                  general rules. Is the wait bit zero the job will be an-
                  swered at once, otherwise it is stopped and the operator
                  may reactivate it by using the "start" command. 
                   \f

             function = 32:          mount special 
                   
                  Treated exactly as "mount" (function = 14) 
           
          All other functions are treated exactly like a "print" message
          (function = 16). 
           
               \f

F_       4_._ _ _ _ _ _ _ _ _O_P_E_R_A_T_I_N_G_ _G_U_I_D_E_                                                  4.
           
          The operators tasks in the day to day running of the system com-
          prise the following major points: 
           
             a. start-up 
             b. system and job intervention 
             c. device support 
             d. close down 
             e. system failure. 
              
              
4_._1_ _ _ _ _ _ _ _S_t_a_r_t_-_U_p_    4.1
           
          During the start-up the system calculates a set of minimum re-
          sources on the basis of the trimmed values. This set of resources
          must be present in order that the run can be succesful, otherwise
          the run is immediately terminated with a message specifying the
          minimum set of resources. When started with sufficient resources
          the resources available for jobs are listed.  
           
M_               @ 
               ATT sos 
               new sos internal 3 size 50000 buf 30 area 30 perm disc 1000 40
               READY 
                
               @ 
               ATT s 
               function 1,2,3,4,5 prog bsos base -8388607 8388605 run  
               READY 
                
               FROM SOS 
               02.58 SOS: MESSAGE SOS VERSION:   780929  0 
               02.58 SOS: MESSAGE SOS CHILD RESOURCES 
               02.58 SOS: MESSAGE SOS     INTERNAL 3 
               02.58 SOS: MESSAGE SOS     BUF 16 
               02.58 SOS: MESSAGE SOS     AREA 24 
               02.58 SOS: MESSAGE SOS     SIZE 45568 
P_               02.58 SOS: MESSAGE SOS STARTED 
              
            Example 16: SOS started as a child of "s". 
              \f

M_               @ 
               ATT s 
               replace prologue 
                
               @ 
               ATT 
               READY 
               PROCESS NAME = sos 
                
               FROM SOS 
               PROGRAM NAME = bsos 
               09.02 SOS: MESSAGE SOS VERSION:  780901  0 
               09.02 SOS: MESSAGE SOS CHILD RESOURCES 
               09.02 SOS: MESSAGE SOS    INTERNAL 3 
               09.02 SOS: MESSAGE SOS    BUF 147 
               09.02 SOS: MESSAGE SOS    AREA 134 
               09.02 SOS: MESSAGE SOS    SIZE 50688 
P_               09.02 SOS: MESSAGE SOS STARTED 
              
            Example 17: SOS started using "S-replacement". 
              
          It should be mentioned here that even though all examples use the
       system name "SOS", any name of up to 8 characters may be used. 
           
           
4_._2_ _ _ _ _ _ _ _O_p_e_r_a_t_o_r_ _I_n_t_e_r_v_e_n_t_i_o_n_                                             4.2
        
          At system trimming an operator key (an operator password) is de-
          fined which may be used at operator intervention. Operator inter-
          ventions are accepted only when initiated from the system terminal
          of SOS (the terminal used at SOS start-up). 
           
          The operator interventions concern the SOS system (= system inter-
          vention) or one or more jobs (= job intervention). 
           
         4_._2_._1_ _ _ _ _ _S_y_s_t_e_m_ _I_n_t_e_r_v_e_n_t_i_o_n_                                              4.2.1
           
          By using the system intervention commands the operator will be
          able to change the state of the system. The possible commands
          are: 
           
M_m_m_               lock 
                      <operator key> 
P_p_p_               open 
           
          (These commands are only accepted when typed on the system ter-
          minal of SOS). 
           \f

          The "lock" command will make SOS refuse all attempts to create
          jobs or to connect terminals to multiterminal jobs. The command
          may be used for draining the system. As a consequence SOS will
          write a message on the system terminal when the last job leaves,
          telling the operator that the system is empty. 
           
M_               @ 
               ATT sos 
               >lock opr 
P_               16.56 SOS: READY 
              
          Example 18: Operator intervention. 
              
          The "open" command is the opposite of the "lock" command. After
          "open" job creation and terminal connection will be accepted. 
           
           
4_._2_._2_ _ _ _ _ _J_o_b_ _I_n_t_e_r_v_e_n_t_i_o_n_ 4.2.2
           
          The job intervention commands (described in chapter 2) may in a
          changed version be used as operator commands. 
           
          In this version the syntax is: 
           
               stop 
M_m_m_               start                     <jobname> 
                       <operator key>  
P_p_p_               break                      all 
               kill 
           
                   In case the "all" option is used, all jobs enrolled will be sub-
          ject to the action stated. 
           
          The "stop" command will suspend the job(s) in question in such a
          way that the execution may be resumed. 
           
          The "start" command will activate suspended jobs. The suspnesion
          may for instance be a "pause" message requesting an operator
          action. 
           \f

          The "break" and "kill" commands abort the job(s) in question. At
          "break" the job will be allowed to write an error message before
          removal. 
           
M_               @ 
               ATT sos 
                
               >kill opr all 
P_               16.59 SOS: READY 
              
          Example 19: Clear system. 
              
              
4_._2_._3_ _ _ _ _ _D_e_v_i_c_e_ _S_u_p_p_o_r_t_ 4.2.3
           
          Usually SOS jobs will not use equipment that requires operator
          support. There will be a need, however, for users to make safety
          copies on flexible disc, magnetic tape or the like. Jobs using
          that kind of equipment may request documents to get mounted.
          These requests will be displayed on the system terminal of SOS.
          When the document is mounted, the operator must name the device
          (with the name of the document mounted) and then restart the job.
          The naming is performed by the "call" command: 
           
               call <device number> <document name> 
           
          (the "call" command may be immediately followed by the "start"
          command). 
           
M_               16.58 SOS: PAUSE RC MOUNT MT 
                
               @ 
               ATT sos 
                
               >call 10 mt start opr rc  
P_               16.59 SOS: READY 
              
          Example 20: Tape mounting. 
              
              \f

4_._3_ _ _ _ _ _ _ _C_l_o_s_e_ _D_o_w_n_ 4.3
           
          The SOS system is closed by using the "halt" command: 
           
               halt <operator key> 
           
          The run will terminate immediately without removing active jobs
          (remember that the system may be drained before closing). In case
          the system generates testoutput "halt" will close the testoutput
          file. After closing SOS, the system (the SOS process) may be
          removed. 
           
M_               @ 
               ATT sos 
                
               >lock opr 
               16.54 SOS: MESSAGE SOS SYSTEM EMPTY 
               16.54 SOS: READY 
                
               @ 
               ATT sos 
               >halt opr 
P_               16.55 SOS: PAUSE SOS SYSTEM CLOSED: 
              
             Example 21: Drain system and close down. 
              
              
         4_._4_ _ _ _ _ _ _ _H_o_w_ _t_o_ _H_a_n_d_l_e_ _S_y_s_t_e_m_ _F_a_i_l_u_r_e_                                     4.4
           
          During the run the system may break down in one of the following
          two ways: 
           
             1. An internal program error or a transport error from the
                program area "bsos" may cause the system to break down and
                the following error message will be printed on the system
                terminal of SOS. 
                 
                pause sos ***fault 
                 
          (Please notice that if this terminal is reserved by other proces-
          ses (e.g. by login to BOSS) it will not be possible for SOS to
          print these messages). 
           \f

             2. A hard error in the swop area makes continued running im-
                possible and the system stops after having printed the
                message: 
                 
                message sos status <statusword> swpsos 
                 
          In all error situations one should, if the system has been trim-
          med with 'testoutput', move this from the test area (e.g. TSTSOS)
          to a work area, from which the TRACE-program can print it for a
          further analysis. 
           
          The TRACE program is automatically generated at the installation
          of the system. The program is called as follows: 
           
                trace <testarea>.<segments> 
           
          <testarea> is the name of the area, from which the test output is
          to be printed (the work area the test output has been moved to,
          or the test area itself). 
           
          <segments> are the maximum number of segments to be analyzed.
          TRACE always finds the latest generated segment, and counts the
          number of segments backwards from there. <segments> are automa-
          tically cut to the size of the area, if something larger has been
          specified. 
           
M_               @ 
               ATT s 
                
               proc sos remove prog fp run 
                
               READY  
               TO SOS 
               o lp 
                
               trace tstsos.10000 
                
               o c  
               @ 
               ATT s 
                
P_               proc sos remove 
              
          Example 22: Printing testoutput. 
              \f

          (Once again, please notice that the names used (SOS, TSTSOS and
          SWPSOS) are only examples, as other names, consisting of up to 8
          characters, as well might be used, allowing identical systems
          each with its own name to run simultaneously. 
           
                  \f

F_       5_._ _ _ _ _ _ _ _ _I_N_S_T_A_L_L_A_T_I_O_N_ _N_O_T_E_S_ 5.
           
          This chapter concerns the subjects that are relevant for persons
          who administers the resources of an installation and for persons
          who are actually going to install an SOS system on a computer of
          the RC4000 or RC8000 series. 
           
           
5_._1_ _ _ _ _ _ _ _S_y_s_t_e_m_ _D_i_s_t_r_i_b_u_t_i_o_n_ 5.1
           
          The SOS system is usually distributed as a magnetic tape contain-
          ing the files below: 
           
             0: label 
             1: soshelp     (is used as an auxiliary file when generating
                            an SOS system; contains the files "sostrim",
                            "sossave" and "sosload") 
             2: trcmol      (compiler for generating "bsos", "cleartemp"
                            and "prologue") 
             3: tsoscat     (a simple user catalog) 
             4: tsos        (system program text) 
             5: tcleartemp  (program for clearing temporary files when a
                            job terminates) 
             6: tupsoscat   (program for generating, updating and listing
                            the user catalog) 
             7: ttrace      (program for analyzing test output) 
             8: tsostest    (multiterminal program for simple system
                            testing) 
             9: tprologue   (program used for starting a system as
                            "S-replacement") 
            10: tdisplay    (program displaying all jobs actually running
                            under SOS) 
            11: tnews       (test file to be written on terminals running
                            the "hotnews" job defined in "tsoscat") 
                             \f

          All files of a system tape may be automatically loaded to backing
          storage like this: 
           
               sosdoc = set 1 disc3 
               soshelp = set mto sostape 0 1 
               i soshelp 
               i sosload 
              
          In case no "sosdoc" is specified the files will be loaded pri-
          marily on the system disc. 
           
          On the other hand a system tape may be generated from an SOS
          system on disc by: 
           
               sosdoc = set mto sostape 
               i soshelp 
               i sossave 
              
          and a standard system may be generated from tape or disc by using
          this set of commands: 
           
               soshelp = set mto sostape 0 1     ; only for tape 
               i soshelp 
               i sostrim 
              
              
5_._2_ _ _ _ _ _ _ _S_y_s_t_e_m_ _T_r_i_m_m_i_n_g_ 5.2
           
          The quantities to be defined when the system is trimmed, fall in-
          to two groups: 
           
             a. System constants concerning the strategy of execution, time
                slice, test output, the type of machine and the buffer
                length for the applications terminal I/O. 
                 
             b. The minimum of resources available for the applications and
                the terminal users. E.g. 1) the minimal core size for ap-
                plications, 2) the minimal number of simultaneous applica-
                tions etc. 
                 \f

                   Regarding job resources, the system has been designed to calcu-
          late on the basis of its start up resources, how many jobs it
          will be able to process simultaneously. If this number is smaller
          than the minimum specified in the trimming, or if the remaining
          pool of resources (buffers, areas etc.) is smaller than what is
          specified in the trimming, the system will stop after the init-
          ialization with an error message. 
           
          In the following all constants that may be changed in the trim-
          ming are mentioned. 
           
          "optionid" 
             At start-up a constant showing the date of the SOS version
             will be listed together with this constant. At each trimming
             this constant should be changed to show the date of the
             trimming (e.g. 780901). The standard value is 0 indicating
             that "standard trimming" is used. 
              
          "rc" 
             This constant defines the target machine to which the system
             is trimmed. The only values accepted are 8000 or 4000. 
              
          "minusers" 
             The minimal number of jobs that may be enrolled simultaneously
             (i.e. the number of internal processes allocated to SOS). 
              
          "comndusers" 
             Even when the maximal number of jobs are running there will be
             a need for handling terminals, performing operator commands,
             login commands or the like. "comndusers" defines the minimum
             of terminals that will be able to communicate with SOS without
             having created any job. 
              
          "minbufs" 
             Defines the minimal set of message buffers in the pool of re-
             sources that may be allocated to jobs. 
              \f

          "minareas" 
             Defines the minimal set of area processes in the pool of re-
             sources that may be allocated to jobs. 
              
          "minsize" 
               The free size of primary store in an SOS system depends on
               the size of the SOS process as defined at start-up. During
               initialization SOS will check that the "free size" will be
               equal to or exceed "minsize". The standard value (12800) is
               sufficient for running most of the utility programs and com-
               pilers. 
                
          "buf1" 
               Defines the size of the I/O buffer used for communicating
               data between terminals and jobs. (Communication via TEM will
               pass the same buffer - and use the same buffer limit). The
               standard value (104) matches the terminal buffer size as de-
               fined in the standard I/O system. 
                
          "timeslice" 
               SOS allocates computing time in time slices. When a job is
               swopped into primary store and activated, it will at the
               latest be suspended after the expiration of a time slice.
               Then the state and priority of all jobs enrolled will be
               evaluated and the "winner" will get the next time slice. A
               "large" time slice will decrease overhead and increase re-
               sponse time variations. The standard value (3 seconds) will
               often do. 
                
          "cpulimit" 
               Interactive jobs running under SOS will not be allowed to
               cycle indefinitely. At most it will be allocated "cpulimit"/
               "classloss" timeslices before being removed from the system.
               In case the priority of the job was lower than the maximum
               priority when the cycle started, then it will be allocated
               less than "cpulimit"/"classloss" timeslices before removal.
               (For further investigations see chapter 3). 
               Please notice: 0 < ("cpulimit" + "classloss") < 2048. 
                \f

          "classloss", "classgain", "priogain". 
             These three constants all concern the scheduling strategy of
             SOS. This strategy is explained in detail in chapter 3. Here
             some rules of thumb shall be stated: 
              
             a. 1 < <constant> < 2048 
             b. when "classloss" is large, jobs will rapidly be removed by
                "time exceeded"; 
             c. when "classgain" is large, jobs will quickly forget that
                they have had a cpu-bound period (a period of low prior-
                ity); 
             d. when "priogain" is large, the response time will (statisti-
                cally) be proportional to the computing time, while a small
                value of "priogain" will give response times that increase
                more than proportional to the computing time.  
                 
          "testsegmnts" 
             The SOS system may currently generate testoutput for mainten-
             ance purposes. The testoutput is cyclically written into a
             testoutput file. "testsegmnts" defines the size of this area.
             Obviously the size of the testoutput area is proportional to
             the period of time that may be "traced". If "testsegmnts"
             equals "0" no testoutput will be generated. It is recommended
             that testoutput is generated at least during some period after
             the first installation of the system. (The testoutput is
             necessary in case you want the RC maintenance staff to analyze
             and solve your problems. However, you should not waste your
             time trying to analyze the testoutput yourself). 
              
                 "conditions" 
              This constant is a bitpattern defining the reaction on time
              exceeded (see "cpulimit") and break. The standard value is
              2'000000. The bits used are: 
                 2'000001 = abort job at time exceeded. When this bit is
                            zero, an online job may run for ever. 
                 2'000010 = abort job after break command. When this bit is
                            zero, a user break or operator break will work
                            as "stop load start" when the terminal is run-
                            ning a job without jobfile. 
                            \f

          "oprkey" 
             Defines a text used as operator password. Default is "opr".
             This text must be nonempty. 
              
          "swopdoc", "testdoc" 
             In case these two texts are empty, the swop area and the test-
             output area are usually placed on the system disc (they are
             actually placed on the first disc on which the SOS process has
             got backing storage resources). To smooth disc load it may be
             reasonable to place two areas on some other disc than the sys-
             tem disc. 
              
          The system trimming is actually done by means of the file
          "sostrim" (see appendix F) which contains the standard trimming
          plus commands for generating the trimmed program version together
          with some utility and test programs. 
           
          The individual trimming consists of changing some values in
          "sostrim" in case standard values do not apply. This is done by
          simple editing e.g.: 
           
               xtrim = edit sostrim 
               EDIT BEGIN 
               1./optionid:=/, r/0/780901/, 
               1./minsize:=/,  r/12800/20000/, 
               1./timeslice:=/,r/3/5/, 
               1./testsegmnts:=/,r/42/168/, 
               f 
               EDIT END. 
              
          Example 23: Individual trimming. 
              
          The commands stated in the file "sostrim" (and here "xtrim") will
          generate an SOS system like this: 
           
             a. load a compiler for translating SOS system 
             b. generate SOS system program: "bsos" 
             c. generate catalog cleaning program: "cleartemp" 
             d. generate user catalog program: "upsoscat" \f

             e. generate testoutput analyzing program: "trace" 
             f. generate S-replacement loader: "prologue" 
               
          In case a file with the name "soscat" already exists, the system
          generation will stop here. If no "soscat" exists, it is assumed
          that SOS has not been running on the installation before and
          therefore a set of testprograms and testfiles is generated to
          facilitate a system test. The generation proceeds like this: 
           
                 g. generate a simple user catalog:"soscat" 
               h. generate a multiterminal program:"sostest" 
               i. generate a display program:"bdisplay" 
                 j. generate a news-file:"tnews". 
              \f

M_               @ 
               ATT s 
               all sos run 
               READY 
                
               TO SOS 
               soshelp = set mto sostape 0 1 
               i soshelp 
                
               FROM S 
               PAUSE SOS MOUNT SOSTAPE 
               @ 
               ATT s 
               call 10 sostape start 
               READY 
                
               FROM SOS 
               xtrim = edit sostrim 
               EDIT BEGIN. 
               1./optionid/, r/0/780901/, 
               1./minsize/, r/12800/20000/, 
               f 
               EDIT END. 
               i xtrim 
                
               EDIT BEGIN. 
               EDIT END. 
                
               TRCMOL 
                    1:(RCMOL=SET 1 DISC 
                    1:RCMOL=ALGOL 
                    1:SCOPE USER RCMOL 
                    1:END 
                    1:BEGIN 
                
               3068:END 
                
               ALGOL END 168 
                
               XSOS D.781003.1610 
                
               RCMOL/011       D.781003.1616 
               TRANSLATION TIME =  199.85  SEC 
               CORE AREA CLAIM  =   12246  BYTES 
               DISC AREA CLAIM  =      24  SEGMENTS 
                
               TCLEARTEMP D.781003.1615 
                
               RCMOL/011        D.781003.1616 
               TRANSLATION TIME = 8.34 SEC 
               CORE AREA CLAIM  =  504 BYTES 
               DISC AREA CLAIM  =    1 SEGMENTS 
                
               END 125 
                                               (to be continued) \f

                        (continued) 
                
                 TUPSOSCAT 
                
                    1:BEGIN 
                
               2013:END; 
               ALGOL END 97 
                
               TTRACE 
                    1:;                TRACE 
                    1:; 
                    1:; 
                    1:;  PROGRAM FOR ANALYZING TESTOUTPUT 
                    1: 
                    1: 
                    1:BEGIN 
                
               174:END 
                
               ALGOL END 34 
                
               TPROLOGUE 
                
               RCMOL/011        D.781003.1617 
               TRANSLATION TIME = 14.26 SEC 
               CORE AREA CLAIM  =  996 BYTES 
               DISC AREA CLAIM  =    2 SEGMENTS 
                
               END 122 
                
               END  59 
                
               TDISPLAY 
                    1:BEGIN 
                
                   53:END 
               ALGOL END 29 
P_               SYSTEM GENERATION COMPLETED 
           
          Example 24: System installing and trimming. 
           
           
5_._3_ _ _ _ _ _ _ _U_s_e_r_ _C_a_t_a_l_o_g_ 5.3
           
          Any job executed under SOS must be described in the user catalog.
          The user catalog contains information about resource demands,
          scope (file access), password, start-up commands and in case of a
          multiterminal job, descriptions of terminal users who are allowed
          to login to this job. 
           
          The user catalog is created and updated by the program
          "upsoscat". This program may list the actual contents of a user\f

          catalog in such a way that the listing may be used as input for
          generating a new catalog. As users may change their passwords, it
          is not convenient to generate a changed catalog from an edited
          version of the original catalog text. Instead a new catalog may
          be generated without destroying actual passwords, by using an
          edited version of an actual catalog listing. 
           
          The user catalog consists of a set of job (process) descriptions.
           
           
5_._3_._1_ _ _ _ _ _D_a_t_a_ _p_e_r_ _J_o_b_ _(_P_r_o_c_e_s_s_)_    5.3.1
           
          The user catalog must contain the following information per
          process: 
           
          process name       : max. 8 characters 
          buffers            : the process' demands on buffers and 
          areas              : areas 
          bases              : the standard-, user- and max (project) 
                               base of the process 
           
          password           : max. 11 characters 
          minsize            : the minimum size acceptable for the process 
          maxsize            : the max size used for the job (even though
                               SOS may have room for more) 
          FP-commands        : max. 59 characters 
                               are executed when the job is created. 
                               Can be used to start-up an application. 
          bs-claims          : device-name (max. 11 characters) plus
                               entries and segments for key0, key1, key2
                               and key3. 
                                Max. 12 units. 
           
          terminals          : external identification (max. 11 charcters),
                               local identification (max. 3 characters),
                               password (max. 11 characters), 
                                \f

                                        input buffering (max.no of input buffers
                               spooled by TEM) 
                               timercount (max.no of timeout periods
                               expired before TEM returns an answer). 
                                
          The process name must identify the job unambiguously. 
           
          An arbitrary number of terminals can be registered under a pro-
          cess. The external id. and the local id. must be unambiguous for
          terminals under the same process. 
           
          Parts of the descriptions may be omittted. The "upsoscat" program
          will then generate default values. In the following all default
          values that are not 0 (or nonempty) are listed. 
           
             buffers          : 4 
             areas            : 7 
             maxsize          : 8388608 
             bs-claims        : disc key0 6 0 key1 0 0 key2 0 0 key3 0 0 
             terminal input 
             buffering        : 1 
             terminal timer 
             count            : 40 
              
          At catalog generation it is checked that process names, buffers
          and areas are given values different from 0. 
           
           
5_._3_._2_ _ _ _ _ _C_r_e_a_t_i_o_n_ _a_n_d_ _C_h_a_n_g_e_ _o_f_ _t_h_e_ _U_s_e_r_ _C_a_t_a_l_o_g_ 5.3.2
           
          The program "upsoscat", which is used for generating the user
          catalog, is called as follows: 
           
M_m_m_                         1                      1          <cat>    1 
             <newcat> =    upsoscat    <input>     oldcat 
P_p_p_                         0                      0           no      0 
M_m_m_                                       <outfile>    1 
                             list. 
P_p_p_                                           no       0 
           \f

                   <newcat>            :         the name of the new user catalog 
          <input>             :         the name of the file containing the
                                        input. If this is omitted, input is
                                        taken from the lines following the
                                        program call 
          <cat>               :         the name of the user catalog to be
                                        updated 
          <outfile>           :         the name of the file in which the
                                        contents of the catalog is to be
                                        printed. 
                                         
          If the parameter oldcat is omitted or oldcat.no is stated, a new
          user catalog is created in <newcat>; otherwise <newcat> will
          contain an updated version of <cat>. 
           
          If list is omitted or list.no is stated, the new contents of the
          catalog are not printed; otherwise the contents will be printed
          in the <outfile> in a manner making it possible to use it as in-
          put for upsoscat. 
           
          <newcat>: is reserved by the program throughout the run, whereas
          <cat> is only reserved during the period of copying (this is done
          at the beginning of the run). 
           
          <newcat>: is extended by the program if necessary. If this is not
          possible, the program stops with the message 'lookup <i>' or
          'ch.entr <i>'. In case of an error in the input, the OK-bit is
          set to 'no'. (The program ends by writing 'errors 0'). 
           
           
5_._3_._2_._1_ _ _ _C_r_e_a_t_i_o_n_ 5.3.2.1
           
          For each process to be created, the data described in subsection
          5.3.1 may be stated. 
           
          The syntax for input: 
           \f

M_m_m_F_                                      1 
             maxprocess     <number> 
P_p_p_                                      0 
              
             process <proc-name>                                  max.  
M_m_m_                         1 
             buf <buf> 
P_                        0 
M_                          1 
             area <area> 
P_p_p_                          0 
             stdbase <number> <number> 
             userbase <number> <number> 
             maxbase <number> <number> 
M_m_m_                               1    1 
              password "  <key>   " 
P_                               0    0 
M_                               1 
             minsize <number> 
P_                               0 
M_                               1 
             maxsize <number> 
P_p_p_                               0 
              
M_m_m_                            1    1 
             fp   "  <text>   " 
                                  0    0 
                   
                                                             12 
P_p_p_             bs <name>    key0     <entr>    <segm> 
                                key1     <entr>    <segm> 
                          key2     <entr>    <segm> 
M_m_m_                          key3     <entr>    <segm> 
                                                       0 
              
                                        1             1 
              term <name> "  <local id.>   "  "  <key>   " 
                                              0             0 
                                                         1  1 
                                     <bufs>   <timeouts> 
                                                                0  0  0  0 
              
                  1 
             end   
P_p_p_                  0 
              
             <proc-name>      :      max. 8 characters, letters or digits. 
             <name>           :      max. 11 characters, letters or digits.
             <buf>, <area>, <entr>, <segm>: non-negative integers. 
             <text>           :      max. 59 characters, all characters 
                                     except " are allowed. 
              
             <local.id>       :      max. 3 characters, all characters  
                                     except " are allowed. 
             <key>            :      max. 11 characters, all characters  
                                     except " are allowed. 
              \f

F_                Note! The "term" option must not be followed by any other
                 option within a process description. (When used, the ter-
                 minal should be the last part of the process description). 
                  
          On the basis of <number> after maxprocess it is calculated how
          many processes <max>, there must be room for in the user catalog.
          Max is the smallest number, which is a multiple of 50 and which
          is bigger than or equals <number>. 
           
          Is maxprocess omitted max is set to 50. 
           
          The catalog bases are defined by right and left limits for the
          base intervals. 
           
          The parameter 'end' need not be included if input is specified in
          the program call. 
           
          If the demands described in subsection 5.3.1 are not met, the
          process is not registered. Errors in the terminal parameters will
          only effect that the terminal is not registered. 
           
          The catalog is created directly in <newcat>. After being created,
          <newcat> will always contain a correct user catalog, but if there
          have been errors in the input, the catalog will not correspond to
          what was wanted. By errors it is recommended to make a rerun
          instead of updating <newcat>. 
           
           
5_._3_._2_._2_ _ _ _C_h_a_n_g_e_ 5.3.2.2
           
          There are three types of updating which concern a process:
          correction (cprocess), creation (iprocess) and deletion
          (dprocess). 
           
          When correcting, the information to be changed plus its new value
          must be stated. If all the entries and segments of a unit are
          zero, the unit is deleted. The terminal can be created and de-
          leted (with the parameters term and dterm). The terminal correc-
          tions must be the last changes, which are specified for a pro-
          cess. 
           \f

F_              The syntax for input is: 
              
             cprocess <proc-name>  
M_m_m_                        1 
                    buf <buf> 
P_p_p_                        0 
M_m_m_                          1 
             area <area> 
P_p_p_                           0 
M_m_m_                                        1 
             stdbase <number> <number> 
P_p_p_                                        0 
M_m_m_                                        1 
             userbase <number> <number> 
P_p_p_                                        0 
M_m_m_                                        1 
             maxbase <number> <number> 
P_p_p_                                        0 
M_m_m_                               1    1 
              password "  <key>   " 
P_p_p_                               0    0 
M_m_m_                               1 
             minsize <number> 
P_p_p_                               0 
M_m_m_                               1 
             maxsize <number> 
P_p_p_                                0 
              
M_m_m_                             1    1 
             fp   "  <text>   " 
P_p_p_                            0    0 
                                                            12 
                   bs <name>    key0     <entr>    <segm> 
                                key1     <entr>    <segm> 
                          key2     <entr>    <segm> 
                                   key3     <entr>    <segm> 
                                                              0 
              
M_m_m_                                        1             1             1 
               term <name> "  <local id.>   "  "  <key>   "  <number> 
P_p_p_                                        0             0             0 
M_m_m_                          1 
                <number> 
P_p_p_                          0    0
M_m_m_                                         1 
              dterm <name> "  <local id.>  " 
P_p_p_                                         0    0 
             iprocess <proc-name>                        max 
                   buf  <buf> 
             . 
             . 
             .      (as for catalog creation)              0 
             . 
             . 
              
             dprocess <proc-name>   
                                         0 
              
M_m_m_                   1 
             end 
P_p_p_                    0 
                 See the note about "term" in subsection 5.3.2.1. 
      \f

F_          The changes of <cat> are made in a temporary file. 
           
          After the updating is finished, this file is copied to <newcat>. 
           
          As when created, <newcat> will contain a correct user catalog,
          but in case of errors it is recommended to make a rerun instead
          of updating newcat. 
           
           
5_._3_._2_._3_ _ _ _L_i_s_t_i_n_g_    5.3.2.3
           
          When the creating/change processes are completed, the contents of
          <newcat> are listed as described for the input syntax. If this
          listing is used as input in a catalog creation, the new catalog
          will become identical with the one listed from <newcat>. 
           
          If a listing, without updating, of an already existing catalog
          is wanted, the program call below is used: 
           
             upsoscat oldcat. <cat> list.<outfile> 
             end 
           
           
5_._3_._3_ _ _ _ _ _R_e_s_o_u_r_c_e_s_ _N_e_e_d_e_d_ _f_o_r_ _C_r_e_a_t_i_n_g_ _a_ _C_a_t_a_l_o_g_ 5.3.3
           
          After creation the user catalog will contain index segments and
          process segments. There will be 1 index segment for each 50 pro-
          cesses in the catalog. Each process will occupy one segment con-
           taining the process description and up to 5 terminal descrip-
          tions. Processes with more than 5 terminal descriptions will
          occupy one more segment per 19 terminals (exceeding the first
          5). 
           
          At updating, the size of the user catalog may increase. The ca-
          talog can be compressed by making a printout of the catalog and
          use this in a re-creation process. 
           \f

               upsoscat oldcat.soscat list.out 
               end 
               END 59 
               clear project soscat 
               soscat = set 1 
               soscat = upsoscat out 
               END 55 
               scope project soscat 
              
          Example 25: Compressing user catalog. 
              
          When creating a user catalog by means of listing, at least 5 buf-
          fers will have to be used, and by updating at least 6 buffers.  
           
           
5_._3_._4_ _ _ _ _ _E_r_r_o_r_ _M_e_s_s_a_g_e_s_ 5.3.4
           
          In case of an error, an error message plus the input line with
          the error is printed. 
           
          Below the word "parameter" is used covering the input keywords:
          end, maxprocess, process, dprocess, cprocess, iprocess, buf,
          area, stdbase, userbase, maxbase, maxsize, minsize, password, fp,
          bs, key0, key1, key2, key3, term, dterm. The word transaction is
          used for the 6 first words mentioned above: 
           
             E_r_r_o_r_ _t_e_x_t_         E_x_p_l_a_n_a_t_i_o_n_ 
              
             line too long      more than 120 characters in an input line.
                                The line is not processed and is not
                                printed. 
             illegal char       illegal character in an input line. 
                                The rest of the line is processed. 
             buf                illegal buf-value. 
                                The processing is continued with the next
                                parameter. 
             area               illegal area-value. 
                                The processing is continued with the next
                                parameter. 
                    \f

             stdbase            illegal base-value 
             userbase           The processing is continued with the next
             maxbase            parameter. 
                                 
             password           illegal password. The processing is
                                continued with the next parameter. 
                                 
             minsize            illegal size value. 
             maxsize            The processing is continued with the next
                                parameter. 
                                 
             fp                 an error in the text. 
                                The processing is continued with the next
                                parameter. 
             device name        as for "name" 
             bs                 illegal bs value. 
                                The processing is continued with the next
                                parameter. 
             bsfull             more than four bs units. 
                                The unit is not registered. 
                                The processing is continued with the next
                                parameter. 
             proc-params        incomplete process description. 
             missing            The process is not registered/detected. 
             base error         the values of the bases are inconsistent. 
                                The process is not registered/detected. 
             claim error        the internal relationship of entries and
                                segments from key0 - key3 is not correct. 
                                The process is not registered/updated. 
             abnormal end       input ends where further input was expect-
                                ed. 
                                The process, which was last processed, is
                                not registered/updated. 
             trans              an illegal parameter was read where a
                                transaction was expected. 
                                The processing continues with the next
                                parameter. \f

             name               illegal name. 
                                The processing is continued with the next
                                transaction or parameter dependent on the
                                situation. 
             proc in cat        the process already exists in the catalog. 
                                The processing is continued with the next
                                transaction. 
             loc id             illegal local identification. 
                                The terminal is not registered. 
                                The processing is continued with the next
                                parameter. 
             term-key           illegal user-key. 
                                The terminal is not registered. 
                                The processing is continued with the next
                                parameter. 
             cat full           an insertion of a process exceeding the
                                maximum allowed is attempted. 
                                By creation the processing is terminated
                                and by updating the processing is continued
                                with the next parameter. 
             term in cat        a terminal with the same local id already
                                exists at this process. 
                                 
          Apart from these error messages, the errors below may occur, all
          causing the termination of the program. 
           
             lookup i           an error in one of the data areas. 
                                Ought not appear. 
             ch.entry i         the catalog cannot be extended; too few
                                resources or an error in the catalog.  
                                Ought not appear. 
             call 0             an error in the call of the program. 
             temp cre           work areas cannot be created (too few
                                resources). 
             newcat i           an error in the <cat> specified in the
                                program call. 
             oldcat i           an error in the <outfile> specified in the
                                program call. \f

             remove i           an error in connection with the removal of
                                a work area. 
                                Ought not appear. 
             errors 0           is printed after a completed creation,
                                updating, if there has been any errors in
                                the input. 
                                 
                                 
5_._4_ _ _ _ _ _ _ _T_e_s_t_ _F_a_c_i_l_i_t_i_e_s_    5.4
           
          After the installation of an SOS system (at least including SOS
          and TEM) it may be checked that the system installed really
          works. As explained in section 5.2 a set of test programs and
          test files will be loaded in case no "soscat" existed before the
          generation. A simple system test using a variety of the facil-
          ities offered by SOS and TEM is shown below. 
           
          This example consists of three terminal logs as it includes a
          multiterminal test (using the tesprogram "tsostest"). 
              \f

M_               @ 
               ATT sos 
                
               >go team pass hobo 
               16.53 SOS: TEAM ENROLLED 
               o pp 
               b=algol tsostest 
               o c 
               b 
                
               16 53 43:       LOGIN:  2, ATT     SUB010 
               16 53 59:       LOGIN:  9, ATT     SUB011 
               16 54 09:                                     LOGOUT: 9,OUT 
               16 54 12:                                     LOGOUT: 2,OUT 
                
               END   23 
                
               The log of two terminals serviced by the multiterminal job
               "team" may look like: 
                
               @ 
               ATT sos 
                
               >in team nn 
               16.54 SOS: TERMINAL CONNECTED 
                
               FROM TEM 
               SOS TESTPROGRAM READY 
               qwaqwaqwaqwaqwaqwaqwaqwaqwaq 
               TERM = 9 LINE = 1: QWAQWAQWAQWAQWAQWAQWAQWAQWAQ 
               1234567890 
               TERM = 9 LINE = 2: 1234567890 
               0987654321 
               TERM = 9 LINE = 3: 0987654321 
               @ 
               ATT sos 
               >out 
                
               TO TEM 
                
               FROM SOS 
               16.54 SOS: TERMINAL DISCONNECTED 
                
               @ 
               ATT sos 
                
               >in term userb pass b2 
               16.54 SOS: TERMINAL CONNECTED 
                
               FROM TEM 
               SOS TESTPROGRAM READY 
               abnsjdgehbsgfa 
                
               TERM = 2 LINE =  1: ABNSJDGEHBSGFA 
               qverthj 
               TERM = 2 LINE =  2: QWERTHJ 
               dftyuiop 
               TERM = 2 LINE =  3: DFTYUIOP 
                                                (to be continued) \f

P_                 (continued) 
M_               ATT sos 
                
               >out 
               TO TEM 
                
               FROM SOS 
P_               16.54 SOS: TERMINAL DISCONNECTED 
           
          Example 26: System test after installation. 
           
          It is obvious that an operating system is not really tested by
          running some test programs. The only way to make a realistic test
          is to use the system for normal routine duties. As a consequence,
          faults may appear from time to time, especially during the first
          period after installing the system. To be able to remove the
          errors causing system failure, SOS may produce testoutput (as
          explained in section 5.2). The RC maintenance staff will have
          almost no chances of detecting the errors unless the system
          failure is documented by means of testoutput, so during the first
          period after the installation the testoutput facility should be
          switched on. 
           
           
5_._5_ _ _ _ _ _ _ _R_e_s_o_u_r_c_e_ _D_e_m_a_n_d_s_                                                    5.5
           
          W_h_e_n_ _i_n_s_t_a_l_l_i_n_g_ the SOS system (or generating a new version) a
          process with the following set of resources will do: 
           
               area  6 
               buf   6 
               size  60000 
               work  20 20 300 disc 
           
          W_h_e_n_ _r_u_n_n_i_n_g_, the SOS system will need a set of resources for its
          private use (apart from the resources set aside for SOS jobs).\f

          The resource demands may be computed like this: 
           
             Primary store: (halfwords) 
                    resident code app             = 4000 
                   test buffer (optional)        =  512 
                   descriptions and I/O buffers 
                        = (users + command users) * (bufsize + 36) 
           
             Message buffers: 
                   constant consumption:         =    4 
                   varying consumption 
                              = (users + command users) * 2 
           
             Area processes: 
                   constant consumption               6 
           
          Backing storage segments: 
             testoutput = (as defined in trimming) 
             swop area  = 
                  (size of a user process)/512 * (users + command users) 
           
          The standard trimming of SOS (as defined in the file "sostrim")
          will have the following demands: 
           
             Primary store: 
                    Code:                           4000 
                   testbuffer:                      512 
                   descriptions and buffers:(3+2)* 
                                             (104+36)7_0_0_ 
                                                   4_3_0_2_ 
             message buffers: 4 + (3+2)*2           _ _1_4_ 
             area processes:                        _ _ _6_ 
           
          It should also be mentioned here that each job created by the
          "run" command uses one pool and one link in TEM. Apart from this,
          jobs using multiterminal access via TEM, will need one more pool
          plus a number of terminal links depending on the max. number of
          terminals simultaneously "logged in" to the job. 
           \f

F_       A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A.
           
          1  RCSL No 31-D476: 
               RC8000 Monitor, Part 1 
           
          2  RCSL No 31-D477: 
               RC8000 Monitor, Part 2 
           
          3  RCSL No 31-D364, 31-D607 and 31D379: 
               System 3, Utility Programs, Part 1, 2 and 3 
           
          4  RCSL No 31-D513: 
               Terminal Access Module (TEM) 
           
          5  RCSL No 31-D571: 
               PRIMO (2. edition) 
           
           \f

F_       B_._ _ _ _ _ _ _ _ _S_O_S_ _C_O_M_M_A_N_D_S_ B.
           \f

F_       C_._ _ _ _ _ _ _ _ _M_E_S_S_A_G_E_S_ _F_R_O_M_ _S_O_S_ C.
           
          SOS may write messages of the following kinds: 
           
             1) System messages 
             2) User messages 
             3) Parent messages from jobs 
              
          In class 1 and 2 there will be normal messages and error messages.
           
          The layout of SOS messages is: 
           
             <hour> . <minute> SOS: <message>          (normal) 
             <hour> . <minute> *** SOS: <message>      (error) 
              
          The system messages may concern start-up or system failure: 
              
          S_y_s_t_e_m_ _m_e_s_s_a_g_e_s_ _a_t_ _s_t_a_r_t_-_u_p_: 
              
             area <number> 
                normal: number of areas in job resource pool 
                error : min. number of areas requested 
              
             buf <number> 
                normal: number of buffers in job resource pool 
                error : min. number of buffers requested 
              
             buflength <size> 
                error: the buffer length must at least be <size> 
              
             function 1,2,3,4,5 
                error: min. function requested 
              
             init troubles 
                error: system initialization not ok, run terminated 
              
                      internal <number> 
                normal: max. number of jobs enrolled 
              \f

             key <number> 
                error: at least 1 free protection key must be available
                       (appears only at RC4000) 
              
             size <number> 
                normal: max. size available for jobs 
                error : min. size requested 
              
             started 
                normal: telling that the initialization was successful 
              
             version: <date of system> <date of options> 
                normal: indicating the version of the SOS system. 
              
             <area name> <integer> 
                error: written because SOS is not able to read one of its
                       areas; the following messages may appear: 
                        
                       swpsos <size> 
                          the swoparea could not be created with the size
                          specified (too few resources on "swopdoc" - see
                          section 5.2), 
                           
                       tstsos <size> 
                          the testoutput area could not be created with the
                          size specified (too few resources on "testdoc" -
                          see section 5.2), 
                           
                       fp <result> 
                          SOS could not read the file processor 
                          (should never occur), 
                           
                       cleartemp <result> 
                          SOS could not read the catalog cleaning program
                          "cleartemp"; maybe because it does not exist
                          (result = 3), 
                           
                       soscat <result> 
                          SOS could not read the SOS catalog "soscat";
                          maybe because it does not exist (result = 3). 
                           \f

          S_y_s_t_e_m_ _m_e_s_s_a_g_e_s_ _a_t_ _r_u_n_t_i_m_e_: 
              
             fault 
                error: caused by an internal error in SOS, monitor or
                       hardware (most likely: SOS) 
              
             fault 8' <octal status> <program area> 
                error: transport error concerning program area 
                       (disc failure) 
              
             status <decimal status> <area name> 
                error: transport error concerning swop area or testoutput
                       area (disc failure) 
              
          U_s_e_r_ _m_e_s_s_a_g_e_s_: 
              
             bad password 
                error: password not correct (or missing). 
              
             bs claims exceeded 
                error: SOS has not sufficient backing storage resources for
                       creating the job. 
              
             call not ok 
                error: the "calling" of a device has been rejected (cause:
                       the device is reserved, the device does not exist or
                       the like). 
              
             command unknown 
                error: the command typed is not an SOS command. 
              
                      disconnection not ok 
                error: the disconnection of a terminal (at "out") has been
                       refused by TEM (should never occur). 
              
             forbidden 
                error:  the user is not authorized for using the command in
                        question. 
              \f

             forbidden - system locked 
                error:  a job creation command or an "in" command has been
                        refused because the system is locked (by the oper-
                        ator). 
              
             identification illegal 
                error:  the jobname of a job creation command is not in-
                        cluded in the user catalog, or the username of an
                        "in" command does not belong to the jobname spec-
                        ified. 
                        
             include not ok 
                error:  the device inclusion has been rejected (cause: the
                        device does not exist). 
                        
             jobfile does not exist 
                error:  the jobfile started in a job creation command is
                        not visible from the catalog bases of the job. 
                        
             no room in primary store 
                error:  the min. size of the job exceeded the max. size
                        available for SOS jobs. (The min. size may be
                        stated in the user catalog). 
                        
             process creation not ok 
                error:  a job creation has been refused due to resource
                        limitation in SOS. 
                        
             process unknown 
                error:  a job intervention command has been rejected
                        because the job stated was not found. 
                        
             ready 
                normal: indicates that a command has been sucessfully
                        interpreted. 
                        
             syntax 
                error: the command was rejected because of a syntax error
                       (illegal character, missing parameter or the like). 
                        \f

             terminal busy 
                error: a job creation connecting the terminal via TEM was
                       refused, because the terminal was already connected
                       to some pool in TEM. 
                        
             terminal connected 
                normal: a message telling that an "in" command has been
                        successfully interpreted. 
                        
             terminal connection not ok 
                error: an "in" command has been rejected because TEM
                       refused connecting the terminal (maybe because the
                       actual job has not created a terminal pool). 
                        
                      terminal not connected 
                error: an "out" command or a job intervention command has
                       been rejected because the terminal was not connected
                       to the actual job. 
                        
             user conflict 
                error: a job creation command has been rejected because the
                       job existed in advance or because an existing job
                       was using the same standard base as the new one. 
                        
             <jobname> enrolled 
                normal: a message telling that a job creation has
                       succeeded. 
                        
             <jobname> removed after <cause> 
                normal: a message telling that the job has been removed
                       from the system. The cause may be: 
                        
                       finis:            normal finis message from job 
                       break:            abnormal termination caused by an
                                         internal job error (a "break") 
                       terminal failure: a hard error has occured on the
                                         primary input terminal 
                       operator break:   the operator has provoked a
                                         "parent break" (break 8) \f

                       user break:       the user has provoked a "parent
                                         break" (break 8) 
                       operator kill:    the operator has killed the job 
                       userkill:         the user has killed the job 
                       time exceeded:    an interactive job has been too
                                         cpu-bound (i.e. the priority has
                                         decreased and reached the min.
                                         priority accepted by the system). 
                                          
          P_a_r_e_n_t_ _m_e_s_s_a_g_e_s_ _f_r_o_m_ _j_o_b_s_ 
           
          Jobs using devices like magnetic tape stations or jobs running
          into severe errors may send "parent messages" to SOS. SOS handles
          parent messages as described in subsection 3.3.3. Some parent
          messages are printed on the system terminal. This is done with
          the following format: 
           
M_m_m_                                   message 
          <hour> . <minute> SOS:             <jobname> <contents> 
P_p_p_                                   pause 
           
          The <contents> is totally specified by the job as explained in
          subsection 3.3.3. 
           
           \f

F_       D_._ _ _ _ _ _ _ _ _A_N_ _E_X_A_M_P_L_E_ _O_F_ _A_ _M_U_L_T_I_T_E_R_M_I_N_A_L_ _P_R_O_G_R_A_M_ D.
           \f

F_       E_._ _ _ _ _ _ _ _ _A_N_ _E_X_A_M_P_L_E_ _O_F_ _A_ _U_S_E_R_ _C_A_T_A_L_O_G_ E.
           \f

F_       F_._ _ _ _ _ _ _ _ _T_H_E_ _A_U_X_I_L_I_A_R_Y_ _F_I_L_E_ _"_s_o_s_t_r_i_m_"_ F.
           \f

F_           
           \f

F_G_._ _ _ _ _ _ _ _ _T_H_R_E_E_ _V_E_R_S_I_O_N_S_ _O_F_ _A_ _M_A_S_T_E_R_ _M_I_N_D_ _P_R_O_G_R_A_M_ G.
           
G_._1_ _ _ _ _ _ _ _S_i_m_p_l_e_ _S_i_n_g_l_e_ _T_e_r_m_i_n_a_l_ _V_e_r_s_i_o_n_ G.1
           \f

F_       G_._2_ _ _ _ _ _ _ _S_i_n_g_l_e_ _T_e_r_m_i_n_a_l_ _V_e_r_s_i_o_n_ _w_i_t_h_ _I_n_p_u_t_ _C_h_e_c_k_i_n_g_ G.2
           
           \f

F_       G_._3_ _ _ _ _ _ _ _M_u_l_t_i_t_e_r_m_i_n_a_l_ _V_e_r_s_i_o_n_ _w_i_t_h_ _I_n_p_u_t_ _C_h_e_c_k_i_n_g_ G.3
           
           
           \f

F_       H_._ _ _ _ _ _ _ _ _I_N_D_E_X_ H.
           
H_._1_ _ _ _ _ _ _ _S_u_r_v_e_y_ _o_f_ _E_x_a_m_p_l_e_s_ H.1
           
          Example 1:  Job creation ....................................  4 
            Example 2:  Executing utility program  ......................  5 
            Example 3:  Creating a text file ............................  6 
            Example 4:  Executing utility programs ......................  7 
           Example 5:  Program translation .............................  7 
           Example 6:  Text editing ....................................  7 
           Example 7:  Execution of interactive program ................  8 
           Example 8:  Job intervention ................................  9 
           Example 9:  Job termination .................................  9 
           Example 10: Running a multiterminal program ................. 10 
           Example 11: Automatic program activation .................... 11 
           Example 12: Running a batch job from a terminal ............. 12 
           Example 13: Creating a job file ............................. 12 
           Example 14: Running a job using a job file .................. 13 
           Example 15: Job file routing job output to printer .......... 13 
           Example 16: SOS started as a child of "s" ................... 33 
           Example 17: SOS started using "S-replacement" ............... 34 
           Example 18: Operator intervention ........................... 35 
           Example 19: Clear system .................................... 36 
           Example 20: Tape mounting ................................... 36 
           Example 21: Drain system and close down ..................... 37 
           Example 22: Printing testoutput ............................. 38 
           Example 23: Individual trimming ............................. 45 
           Example 24: System installing and trimming .................. 47 
           Example 25: Compressing user catalog ........................ 56 
           Example 26: System test after installation .................. 60 
           
           \f

           
           \f

«eof»