DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Wang WCS documentation floppies

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

See our Wiki for more about CR80 Wang WCS documentation floppies

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦d8a9e152c⟧ Wang Wps File

    Length: 17534 (0x447e)
    Types: Wang Wps File
    Notes: CPS/SDS/029               
    Names: »1731A «

Derivation

└─⟦20fb15aa2⟧ Bits:30006084 8" Wang WCS floppy, CR 0130A
    └─ ⟦this⟧ »1731A « 

WangText

…11……00……00……00……00…B…02……00……00…B
B…05…B…06……0a……0a……0a……0e……0a…
…0a… …86…1                                             …02…           …02…   …02…        

…02…CPS/SDS/029

…02…820514…02……02…
SYSTEM STATUS AND CONTROL
DETAILED DESIGN SPECIFICATION…02……02…CAMPS








4.2.1    O̲N̲L̲I̲N̲E̲ ̲D̲I̲A̲G̲N̲O̲S̲T̲I̲C̲S̲



4.2.1.1  F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ 

         The OLD functions are decomposed as defined in fig.
         4.2.1.1-1.

         OLD sumchecks the program part of the KERNEL periodically
         and on request from the supervisor.  For supervisor
         request OLD answers OK if the sumcheck is successful,
         otherwise the KERNEL shuts down itself and no answer
         is sent.  (The system is closed down).







                      Fig. 4.2.1.1-1


4.2.1.1.1    I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲

         A request is sent to the timer monitor in CSF to periodically
         invoke the OLD.



4.2.1.1.2    S̲e̲r̲v̲e̲ ̲I̲n̲p̲u̲t̲ ̲Q̲u̲e̲u̲e̲

         During operation OLD receives:

         -   time-out from TMON
         -   supervisor requests
         -   COPSY close-down command

         in its input queue OLD ̲Q.



4.2.1.1.2.1 C̲h̲e̲c̲k̲ ̲C̲o̲m̲m̲a̲n̲d̲

         When OLD has received a command, it checks this.



4.2.1.1.3    C̲h̲e̲c̲k̲s̲u̲m̲ ̲K̲e̲r̲n̲e̲l̲



4.2.1.1.3.1 H̲a̲n̲d̲l̲i̲n̲g̲ ̲o̲f̲ ̲T̲i̲m̲e̲-̲O̲u̲t̲

         The reception of a time-out makes OLD execute a checksumming
         of the KERNEL program by calling the monitor procedure
         in the KERNEL:  Checksum-Kernel.



4.2.1.1.3.2 R̲e̲c̲e̲p̲t̲i̲o̲n̲ ̲o̲f̲ ̲S̲u̲p̲e̲r̲v̲i̲s̲o̲r̲ ̲R̲e̲q̲u̲e̲s̲t̲

         The reception of a supervisor request makes OLD execute
         the Checksum Kernel procedure.



4.2.1.1.4    S̲e̲n̲d̲ ̲R̲e̲p̲l̲y̲

         On supervisor request OLD sends an OK reply if the
         check summing of the kernel is successful.  Otherwise
         no reply is sent.





4.2.1.1.5    R̲e̲c̲e̲p̲t̲i̲o̲n̲ ̲o̲f̲ ̲C̲l̲o̲s̲e̲ ̲D̲o̲w̲n̲

         When OLD receives a close down command, it sends a
         CANCEL ̲TIME ̲OUT to TMON and after it has received a
         reply from TMON, it answers COPSY and awaits further
         COPSY commands.



4.2.1.1.6    C̲o̲m̲m̲o̲n̲ ̲S̲S̲C̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲



4.2.1.1.6.1 E̲r̲r̲o̲r̲ ̲F̲i̲x̲-̲U̲p̲

         OLD is a process of DUMMY type.
         OLD recognizes the following SW error types.

         1)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲S̲W̲ ̲E̲r̲r̲o̲r̲s̲

             These errors relate to validity checks in the input
             queue.

         2)  I̲n̲t̲e̲r̲n̲a̲l̲ ̲S̲W̲ ̲E̲r̲r̲o̲r̲s̲

             There are two kind of internal errors.

             -   Errors resulting from system calls
             -   SW errors in OLD

         3)  C̲h̲e̲c̲k̲s̲u̲m̲ ̲E̲r̲r̲o̲r̲s̲

             Checksun Errors make the KERNEL retire the system
             and a switch-over is performed.

         In NORMAL mode OLD retires for all kinds of errors.

         In AT ̲RISK mode OLD performs DUMMY operation for internal
         errors, and sends NOT ̲OK REPLY for external.



4.2.1.1.6.2 V̲a̲l̲i̲d̲i̲t̲y̲ ̲C̲h̲e̲c̲k̲s̲

         Refer to section 4.2.1.1.1.1.





4.2.1.2  S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         The OLD subpackage functions are implemented in one
         process, which handles on-line diagnostics.

         The subpackage consists of the modules:

         -   OLD ̲MAIN ̲PRG
         -   EXEC ̲CHECK ̲SUMMING
         -   CLOSE ̲DOWN ̲OLD

         and the common procedures

         -   SERVE ̲INPUT
         -   CHECK ̲COMMAND
         -   REPLY ̲SENDER
         -   ERROR ̲OLD

         The module OLD ̲MAINPRG contains the procedure OLD ̲MAINPRG
         and INIT ̲OLD, meanwhile CLOSE ̲DOWN ̲OLD consists of
         CLOSE ̲DOWN ̲OLD and EMPTY ̲OLDQ.EXEC ̲CHECK ̲SUMMING is
         TBD.

         The functions defined in sections 4.2.1.1 are allocated
         to the procedures as follows:

         -   Section 4.2.1.1.1 to INIT ̲OLD
         -   Section 4.2.1.1.2 to SERVE ̲INPUT
         -   Section 4.2.1.1.2.1 to CHECK ̲COMMAND
         -   Section 4.2.1.1.3 to EXEC ̲CHECKSUMMING
         -   Section 4.2.1.1.4 to REPLY ̲SENDER
         -   Section 4.2.1.1.5 to CLOSE ̲DOWN ̲OLD and
                                  EMPTY ̲OLDQ
         -   Section 4.2.1.1.6 to ERROR ̲OLD



4.2.1.3  D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲

         For data flow see fig. 4.2.1.3-1
         For control logic see fig. 4.2.1.3-2






                Figs. 4.2.1.3-1/4.2.1.3-2


4.2.1.4  M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲



4.2.1.4.1    O̲L̲D̲ ̲M̲A̲I̲N̲P̲R̲C̲



4.2.1.4.1.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         The mainprocedure first initializes the process.  Hereafter
         it awaits the commands to be executed.



4.2.1.4.1.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲

         N/A



4.2.1.4.1.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         OLD ̲MAINPRC consists of the two procedures

         -   OLD ̲MAINPRC
         -   INIT ̲OLD

         OLD ̲MAINPRC calls the modules/procedures

         -   SERVE ̲INPUT
         -   EXEC ̲CHECKSUMMING
         -   REPLY ̲SENDER
         -   CLOSE ̲DOWN ̲OLD
         -   ERROR ̲OLD

         and the CSF-procedures

         -   DISMANTLE
         -   REQUEST ̲TIMEOUT





4.2.1.4.1.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             OLDQ see                 DBD
             OLDQUEUE                 see 4.2.1.5
             TMON ̲REQUEST             see 4.2.1.5
             OLDQEL                   see 4.2.1.5
             COMMAND                  see 4.2.1.5
             CC                       see 4.2.1.5

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             OLDQ
             OLDQUEUE.MAIN ̲QUEUE            (m)
             OLDQUEUE.SUB ̲QUEUE             (m)
             TMON ̲REQUEST.QUEUE.MAIN ̲QUEUE  (m)
             TMON ̲REQUEST.QUEUE.SUB ̲QUEUE   (m)
             TMON ̲REQUEST.TIMEOUT           (m)
             TMON ̲REQUEST.FORMAT            (m)
             TMON ̲REQUEST.TIME.PERIOD       (m)
             TMON ̲REQUEST.EVENT ̲ID          (m)
             OLDQEL                         
             COMMAND                        
             CC

         c)  I̲n̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             cc: INTEGER



4.2.1.4.1.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲ 

         a)  O̲L̲D̲ ̲M̲A̲I̲N̲P̲R̲C̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲:

             OLD ̲MAINPRC first call INIT ̲OLD for initialization.
              In a forever loop, the commands are received and
             executed.

             F̲l̲o̲w̲g̲r̲a̲m̲

             See fig. 4.2.1.4.1.5.a-1


             b)  P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲I̲N̲I̲T̲ ̲O̲L̲D̲

                 N̲a̲r̲r̲a̲t̲i̲v̲e̲

                 INIT ̲OLD first sets the parameters
                 in OLDQUEUE and TMON ̲REQUEST.  Thereafter
                 it sends a request to  TMON in CSF
                 for periodically invoking.

                 F̲l̲o̲w̲g̲r̲a̲m̲

                 See fig. 4.2.1.4.1.5.b-1


         PROCESS OLD


         INIT ̲OLD

         LOOP ̲FOREVER

            SERVE ̲INPUT(TRUE)(OLDQEL, COMMAND, CC)

            CASE COMMAND OF

              OLD ̲CLOSE ̲DOWN?

                CLOSE ̲DOWN ̲OLD


              SUPERVISOR ̲REQUEST?


                EXEC ̲CHECKSUMMING(KERNEL) 


                REPLY ̲SENDER (OLDQEL, OK)


              TMON ̲REQUEST ?

                EXEC ̲CHECKSUMMING (KERNEL)


              TMON ̲CANCELLED ?   ERROR ̲OLD (COMMAND
         ̲ERROR, OK)


              ILLEGAL ?

            END CASE COMMAND

            DISMANTLE (OLDQEL) (CC)


            END LOOP FOREVER



         END PROCESS OLD

              Fig. 4.2.1.4.1.5.a-1


         PROCEDURE INIT ̲OLD


         BEGIN


            OLDQUEUE.MAIN ̲QUEUE = OLD ̲Q


            OLDQUEUE.SUB ̲QUEUE = 0



            TMON ̲REQUEST.QUEUE.MAIN ̲QUEUE = OLD ̲Q

            TMON ̲REQUEST.QUEUE.SUB ̲QUEUE = TIM ̲Q

            TMON ̲REQUEST.TIMEOUT = PERIODIC

            TMON ̲REQUEST.FORMAT = HOURS

            TMON ̲REQUEST ̲TIME.PERIOD = 6

            (TMON ̲REQUEST ̲EVENT ̲ID = 0

            CASE REQUEST ̲TIMEOUT(TMON ̲REQUEST) (CC)
         OF

               ERROR ?     ERROR ̲OLD(OTHER ̲SYSTEM ̲CALL
         ̲ERROR, CC)

               OK ?

            END CASE REQUEST ̲TIMEOUT

         END PROCEDURE INIT ̲OLD












              Fig. 4.2.1.4.1.5.b-1


4.2.1.4.2    E̲X̲E̲C̲ ̲C̲H̲E̲C̲K̲S̲U̲M̲M̲I̲N̲G̲



4.2.1.4.3    C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲O̲L̲D̲



4.2.1.4.3.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

             First CLOSE ̲DOWN ̲OLD empties the input
             queue OLD ̲Q.  Thereafter it sends a CANCEL
             ̲TIME ̲OUT to the TIME ̲MONITOR.

             After it has sent an ACK to COPSY, it
             awaits further COPSY ̲COMMAND.



4.2.1.4.3.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

             a)  CLOSE ̲DOWN ̲OLD

             b)  CLOSE ̲DOWN ̲OLD (R6)

             R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲

             C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R6  Link

             R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             NA

             M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

             CLOSE ̲DOWN ̲OLD contains the two procedures

             -   CLOSE ̲DOWN ̲OLD
             -   EMPTY ̲OLDQ



             CLOSE ̲DOWN ̲OLD calls the modules/procedures

             -   SERVE ̲INPUT
             -   REPLY ̲SENDER
             -   ERROR ̲OLD

             and the CSF procedures

             -   CANCEL ̲TIMEOUT
             -   DISMANTLE

             D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

             a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

                 OLDQUEUE             see sec. 4.2.1.5
                 COMMAND                                         see
                                                                 sec.
                                                                 4.2.1.5
                 OLDQEL                                          see
                                                                 sec.
                                                                 4.2.1.5
                 CC                                              see
                                                                 sec.
                                                                 4.2.1.5

             b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

                 OLDQUEUE.SUBQUEUE (m)
                 OLDQEL            
                 COMMAND           
                 CC

             c)  I̲n̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

                 OLDQEL1:  QEL ̲REFERENCE

                 used as reference to a received QEL

                 FLAG:  (OK, VALIDATION ̲NOT ̲OK, EXECUTION
                 ̲NOT ̲OK)

                 used for reply to COPSY.



4.2.1.4.3.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲





4.2.1.4.3.5.1 C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲O̲L̲D̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             First CLOSE ̲DOWN ̲OLD calls EMPTY ̲OLDQ.
              Thereafter it cancels the periodic timeout,
             which is sent from TMON.  After it has
             received a reply from TMON, it waits for
             further COPSY command.

             F̲l̲o̲w̲g̲r̲a̲m̲

             See fig. 4.2.1.4.3.2.1-1



4.2.1.4.3.5.2 E̲M̲P̲T̲Y̲ ̲O̲L̲D̲Q̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Received QEL from OLDQ and dismantle this.
              If the QEL contains a supervisor request,
             a reply is sent to the supervisor.


             F̲l̲o̲w̲g̲r̲a̲m̲

             See fig. 4.2.1.4.3.5.2-1


         PROCEDURE CLOSE ̲DOWN ̲OLD

         BEGIN



         EMPTY ̲OLD

         OLDQUEUE.SUBQUEUE = TIM ̲Q

         CASE CANCEL ̲TIME ̲OUT (TMON ̲REQUEST)(CC)

            ERROR ?

              REPLY ̲SENDER(OLDQEL,EXECUTION ̲NOT ̲OK)

       OLD ̲QUEUE.SUBQUEUE = CMD ̲Q

              SERVE ̲INPUT(TRUE)(OLDQEL,COMMAND,CC)

            OK ?

              SERVE ̲INPUT (TRUE)(OLDQEL1, COMMAND,
         CC)

              COMMAND = TIMEOUT ̲EVENT ?

                DISMANTLE (OLDQEL1)

               SERVE ̲INPUT(TRUE)(OLDQEL1, COMMAND,
         CC)


              COMMAND = TIMEOUT ̲CANCELLED ?   FLAG
         = OK


              ERROR ̲OLD(COMMAND ̲ERROR,OK)

             FLAG = EXECUTION ̲NOT ̲OK

            END CASE CANCEL ̲TIME ̲OUT


         DISMANTLE (OLDQEL) (CC)

         OLDQUEUE.SUBQUEUE = CMD ̲Q

         SERVE ̲INPUT(TRUE)(OLDQEL, COMMAND, CC)

         END PROCEDURE CLOSE ̲DOWN ̲OLD

              Fig. 4.2.1.4.3.5.1-1


         PROCEDURE EMPTY ̲OLDQ


         BEGIN

            LOOP empty OLDQ

              SERVE ̲INPUT (FALSE) (OLDQEL1, COMMAND,
         CC)



              CASE CC OF

             OK ?

                 COMMAND = SUPERVISOR ̲REQUEST ?


                     REPLY ̲SENDER(OLDQEL1, OK)


                 DISMANTLE (OLDQEL1)(CC)

             QUEUE ̲EMPTY ?   EXIT EMPTY ̲OLDQ


             OTHERWISE ?    DISMANTLE (OLDQEL1)(CC)


            END ̲CASE CC


            END LOOP empty OLDQ

         END ̲PROCEDURE ̲EMPTY ̲OLDQ















              Fig. 4.2.1.4.3.5.2-1


4.2.1.5  C̲o̲m̲m̲o̲n̲ ̲O̲L̲D̲ ̲D̲a̲t̲a̲ 



4.2.1.5.1    D̲a̲t̲a̲ ̲T̲y̲p̲e̲s̲

             QUEUE ̲REFERENCE see DBD
             QEL ̲REFERENCE   see DBD
             QEL ̲ATTRIBUTES  see DBD
             COMMAND ̲TYPE = (OLD ̲CLOSE ̲DOWN,SUPERVISOR
             ̲
                REQUEST, TMON ̲REQUEST, TMON ̲CANCELLED,
             ILLEGAL)
             ERROR ̲TYPE = (RECEIVE ̲FIRST ̲QEL ̲ERROR,
             OTHERS ̲SYSTEM ̲CALL ̲ERROR, COMMAND ̲ERROR)
             REQUEST ̲TIME   see DBD



4.2.1.5.2    V̲a̲r̲i̲a̲b̲l̲e̲ 

             OLDQUEUE:  QUEUE ̲REFERENCE                          
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 DBD
                        used as reference to OCD ̲Q

             OLDQEL, QEL:  QEL ̲REFERENCE                         
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 DBD
                                        used as reference
                                      to received QEL

             OLDQEL ̲ATTRIBUTES:  QEL ̲ATTRIBUTES   
              DBD
                                              keeps
                                      the attributes
                                      of a received
                                      
                                              QEL

             COMMAND:  COMMAND ̲TYPE
                       specified the main and subtype
                     of a received 
                       QEL

             TMON ̲REQUEST:  REQUEST ̲TIME                         
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 
                                                                 DBD
                            used to specify the wanted
                     periodically 
                            invoke from TMON 
                            OLDSUBQUEUE ̲NO:  INTEGER

             CC:  Completion code, depending on the
             system call.

             OLD ̲SUBQUEUE ̲NO:         INTEGER
             used in the system call RECEIVE ̲FIRST
             ̲QEL



4.2.1.6  C̲o̲m̲m̲o̲n̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲





4.2.1.6.1 S̲E̲R̲V̲E̲ ̲I̲N̲P̲U̲T̲

             F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

             A parameter indicates if SERVE ̲INPUT shall
             wait or not when it receives a QEL from
             OLDQ.  After it has received a QEL, it
             checks that the maintype and subtype of
             the QEL is one of the wanted types.

             I̲n̲t̲e̲r̲f̲a̲c̲e̲

             a)  SERVE ̲INPUT (WAIT:  BOOLEAN)
                 (OLDQEL:  QEL ̲REFERENCE, COMMAND:
                  COMMAND ̲TYPE,
                 CC:  INTEGER)

             b)  SERVE ̲INPUT (R0, R2, R4, R6, R7)

             R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲

             C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R0  WAIT
             R6  Link

             R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R4  COMMAND
             R2  OLDQEL
             R7  CC: (OK, QLE ̲PROFILE ̲CHECK,QUEUE ̲EMPTY,
                     CANCELLED)

             C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

             SERVE ̲INPUT calls the procedures

             -   CHECK ̲COMMAND
             -   ERROR ̲OLD

             and the CC CSF procedures

             -   RECEIVE ̲FIRST ̲QEL

             D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

             a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

                 OLDQUEUE             see 4.2.1.5
                 OLDQEL ̲ATTRIBUTES    see 4.2.1.5
                 OLDQEL                                          (I/F
                                                                 -
                                                                 data)
                 COMMAND              (I/F - data)
                 OLD ̲SUBQUEUE ̲NO      see 4.2.1.5



             b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

                 OLDQUEUE
                 OLDQEL ̲ATTRIBUTES (m)
                 OLDQEL            (m)
                 COMMAND
                 OLD ̲SUBQUEUE ̲NO

             Flowgram see Fig. 4.2.1.6.1-1


         PROCEDURE SERVE ̲INPUT



         BEGIN


            CASE RECEIVE ̲FIRST ̲QEL (WAIT,OLDQUEUE)

                    C ̲OLDQEL ̲ATTRIBUTES,OLDQEL, OLD
                 ̲SUBQUEUE ̲NO,CC)

               ERROR ?   ERROR (RECEIVE ̲FIRST ̲QEL ̲ERROR,
         CC)

               OK ?    CHECK ̲COMMAND(OLDQEL ̲ATTRIBUTES)(COMMAND)


            END CASE RECEIVE ̲FIRST ̲QEL


         END PROCEDURE SERVE ̲INPUT



























                Fig. 4.2.1.6.1-1


4.2.1.6.2 C̲H̲E̲C̲K̲ ̲C̲O̲M̲M̲A̲N̲D̲

             F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

             This procedure checks that a received
             QEL has the right main and subtype.

             I̲n̲t̲e̲r̲f̲a̲c̲e̲

             a)  CHECK ̲COMMAND (OLDQEL ̲ATTRIBUTES)(COMMAND)

             b)  CHECK ̲COMMAND (R1, R4, R6)

             C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R1  Pointer to OLDQEL ̲ATTRIBUTES
             R6  Link

             R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R4  COMMAND

             R0, R5, R7               Kept

             C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

             CHECK ̲COMMAND calls the procedure

             -   ERROR ̲OLD

             D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

             a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

                 OLD QEL ̲ATTRIBUTES (I/F - data)
                 COMMAND            (I/F - data)

             b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

                 OLDQEL ̲ATTRIBUTES.MAINTYPE
                 OLDQEL ̲ATTRIBUTES.SUBTYPE
                 COMMAND  (m)

             c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

                 None

             Flowgram see Fig. 4.2.1.6.2-1


         PROCEDURE CHECK ̲COMMAND



         BEGIN

            CASE OLDQEL ̲ATTRIBUTES.MAINTYPE OF:

               SSC ̲COMMAND ?

             OLDQEL ̲ATTRIBUTES.SUBTYPE EQ CLOSE ̲DOWN

                COMMAND = CLOSE ̲DOWN

             ERROR ̲OLD (COMMAND ̲ERROR, OK)

             COMMAND = ILLEGAL

               TIME ̲OUT ?

             CASE OLDQEL ̲ATTRIBUTES.SUBTYPE OF:

                TIMEOUT ̲EVENT ?    COMMAND = TMON ̲REQUEST

                TIMEOUT ̲CANCELLED ?   COMMAND = TMON
             ̲CANCELLED

                OTHERWISE ?

                  ERROR ̲OLD (COMMAND ̲ERROR, OK)

                  COMMAND = ILLEGAL


             END CASE OLD ̲ATTRIBUTES.SUBTYPE

               SUPERVISOR ̲SSC ̲COMMAND ?

             OLD ̲ATTRIBUTES ̲SUBTYPE = SYSTEM ̲INTEGRITY
             ̲CHECK ?

                  COMMAND = SUPERVISOR ̲REQUEST

                  ERROR ̲OLD (COMMAND ̲ERROR, OK)


               OTHERWISE ?  ERROR ̲OLD(COMMAND ̲ERROR,
         OK)

            END CASE OLDQEL ̲ATTRIBUTES.MAINTYPE

         END PROCEDURE CHECK ̲COMMAND

                Fig. 4.2.1.6.2-1


4.2.1.6.3    R̲E̲P̲L̲Y̲ ̲S̲E̲N̲D̲E̲R̲

             F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

             REPLY ̲SENDER sends replies on supervisor
             request and sends acknowledgement for
             SSC commands.

             I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲

             a)  REPLY ̲SENDER(DESTQEL:  QEL ̲REFERENCE,
                 FLAG: INTEGER)

             b)  REPLY ̲SENDER (R0, R3, R6)

             R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲

             C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R0  FLAG
             R3  Pointer to DESTQEL
             R6  Link

             R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R3  Kept
             R0-R2, R4-R7             Destroyed

             C̲o̲m̲p̲o̲n̲e̲n̲t̲

             SERVE ̲INPUT calls the procedure

             -   ERROR ̲OLD

             and the CSF procedure
             
             -   RECEIVE ̲FIRST ̲QEL

             D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

             a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

                 DEST QEL (I/F data)
                 FLAG (I/F data)

             b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

                 Variable
                 SEND ̲QEL ̲PARAM:  SEND ̲PARAMS     
                  see DBD

                 used to specify the parameters in
                 the reply.


             M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             First SEND ̲QEL ̲PARAMS parameter is set,
             and thereafter the reply is sent.



             F̲l̲o̲w̲g̲r̲a̲m̲

             See Fig. 4.2.1.6.3-1


         PROCEDURE REPLY ̲SENDER



         BEGIN


            SEND ̲QEL ̲PARAMS.INFORMATION TYPE = FALSE

            SEND ̲QEL ̲PARAMS.CHECKP ̲STATUS = FALSE

            SEND ̲QEL ̲PARAMS.HEADER.MAINTYPE = ACK

            SEND ̲QEL ̲PARAMS.HEADER.SUBTYPE = SSC ̲ACK

            SEND ̲QEL ̲PARAMS.HEADER.FLAG = FLAG

            CASE SEND ̲REPLY(SEND ̲QEL ̲PARAMS, NIL,DEST
         ̲QEL) (CC)

              ERROR ?  ERROR ̲OLD(OTHER ̲SYSTEM ̲CALL
         ̲ERROR, CC)

              OK ?

            END CASE SEND ̲REPLY

         END PROCEDURE REPLY ̲SENDER






















                Fig. 4.2.1.6.3-1


4.2.1.6.4    E̲R̲R̲O̲R̲ ̲O̲L̲D̲

             F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

             ERROR ̲OLD handles all errors which occur
             in OLD.

             External errors are handled with the system
             call SEND ̲GARBLE, meanwhile system call
             errors are handled with the system call
             ANALYSE ̲ERROR.

             I̲n̲t̲e̲r̲f̲a̲c̲e̲

             a)  ERROR ̲OLD (KIND ̲OF ̲ERROR:  ERROR ̲TYPE,
                 CC:  COMPLETION ̲
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       CODE)

             b)  ERROR ̲OLD (R0, R6, R7)

             R̲e̲g̲i̲s̲t̲e̲r̲s̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲

             C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R0  KIND ̲OF ̲ERROR
             R7  CC
             R6  Link

             R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R0-R7                                               Destroyed

             D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

             a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

                 see
                 QERROR ̲INF see

             b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

                 OLDQUEUE
                 OLDQUEUE ̲ATTRIBUTES
                 CODE

             c)  I̲n̲t̲e̲r̲n̲a̲l̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

                 ERROR ̲QEL:  QERROR ̲INF
                 KIND ̲OF ̲ERROR:  ERROR ̲TYPE


             C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

             ERROR ̲OLD calls the CSF function:

             -   ANALYZE ̲ERROR
             -   SEND ̲GARBLE


         PROCEDURE ERROR ̲OLD


         BEGIN


            CASE KIND ̲OF ̲ERROR

             RECEIVE ̲FIRST ̲QEL ̲ERROR ?

                 CASE ANALYZE ̲ERROR (CC, 1, QUEUE ̲EMPTY):
                  (CONTINUE)

                    CONTINUE ?

                 END CASE ANALYZE ̲ERROR

             OTHER ̲SYSTEM ̲CALL ̲ERROR ? ANALYZE ̲ERROR
             (CC, 0, NIL)

             COMMAND ̲ERROR ?

                 ERROR ̲QEL.MAINQUEUE = OLDQUEUE.MAINQUEUE

                 ERROR ̲QEL.SUBQUEUE = OLD ̲SUBQUEUE
                 ̲NO

                 ERROR ̲QEL.ORIGINAL ̲SENDER = OLDQEL
                 ̲ATTRIBUTES.SENDER

                 ERROR ̲QEL.USER ̲CC = 0

                 SEND ̲GARBLE(CONTINUE,QERROR,ERROR
                 ̲QEL)


         END CASE KIND ̲OF ̲ERROR

         END ̲PROCEDURE ̲ERROR ̲OLD