DataMuseum.dk

Presents historical artifacts from the history of:

RC3500

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

See our Wiki for more about RC3500

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦7992741a9⟧ TextFileVerbose

    Length: 54528 (0xd500)
    Types: TextFileVerbose
    Names: »tsvchlst«

Derivation

└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
    └─⟦72244f0ef⟧ 
        └─⟦this⟧ »tsvchlst« 

TextFileVerbose

\f

tsvchlst    81.06.12.   16.11.                                                    page     1

   10    1           
\f

tsvchlst    81.06.12.   16.11.                                                    page     2

 1010    2        PROCESS vc_handler(
 1020    3          
 1030    4          opsem : sempointer;
 1040    5          VAR dc_addr,
 1050    6          ts_addr :    !macroaddr;
 1060    7          VAR sem : !ts_pointer_vector
 1070    8          );
 1080    9          
 1090   10          
 1100   11        CONST
 1110   12          
 1120   13          version = "vers  3.91 /";
 1130   14            (*       ------------ *)
 1140   15           
\f

tsvchlst    81.06.12.   16.11.                                                    page     3

 2010   16            (*
 2020   17            INTRODUCTION TO THE VC-HANDLER:
 2030   18            
 2040   19            
 2050   20            
 2060   21            Abbreviation list for the VC-HANDLER prosess:
 2070   22            
 2080   23            ( the introduction of the alarmenvironment has made some inconsistenses in the list )
 2090   24            
 2100   25            ---------------------------------------------
 2110   26            
 2120   27            adr       address
 2130   28            at        alarm terminal
 2140   29            atc       at-connector
 2150   30            ath       at-handler
 2160   31            buf       buffer
 2170   32            dc        district center
 2180   33            del       delete
 2190   34            elm       element
 2200   35            in        input
 2210   36            incar     incarnation
 2220   37            ins       insert
 2230   38            mac       macro address
 2240   39            max       greatest
 2250   40            mes       message
 2260   41            mic       micro address
 2270   42            min       smallest
 2280   43            nb        number
 2290   44            pvc       primary vc
 2300   45            rec       receiver
 2310   46            sem       semaphore
 2320   47            sen       sender
 2330   48            sup       ts-supervisor
 2340   49            vc        alarm center
 2350   50            vcc       vc-connector
 2360   51            vct       vc-table
 2370   52             
\f

tsvchlst    81.06.12.   16.11.                                                    page     4

 3010   53            
 3020   54            Pseudo-code for the VC-HANDLER process:
 3030   55            --------------------------------------
 3040   56            
 3050   57            ( this pseudo_code will be updated regularly - last time was 81.02.06 )
 3060   58            
 3070   59            PROCESS vc_handler("process_parameters");
 3080   60            
 3090   61            CONST
 3100   62            . "process_constants, installation dependent" (may be moved to alarm-environment);
 3110   63            
 3120   64            TYPE
 3130   65            . "message_format" (may be moved to alarm-environment);
 3140   66            
 3150   67            VAR
 3160   68            . "vc_table, binary search";
 3170   69            
 3180   70            . "addressing_data";
 3190   71            . "scheduling_data";
 3200   72            . "supervising_data";
 3210   73            . "vcc_incarnation_data";
 3220   74            . "error_handling_data";
 3230   75            
 3240   76            . "input_semaphore";
 3250   77            . "wait_buffer_semaphore";
 3260   78            
 3270   79            BEGIN
 3280   80            . "initialization";
 3290   81            
 3300   82            . REPEAT
 3310   83            .   "wait a message on the input_semaphore, and
 3320   84            .   "handle the message in the buffer, corresponding to the
 3330   85            .    operation_code, and produce resulting messages";
 3340   86            
 3350   87            .   "for each resulting message do addressing/indexing
 3360   88            .    do supervising and signal each of the buffers to the
 3370   89            .    corresponding input_semaphore";
 3380   90            
 3390   91            . until  forever
 3400   92            
 3410   93            END;     *  of pseudo code    *
 3420   94            
 3430   95            *)
 3440   96           
\f

tsvchlst    81.06.12.   16.11.                                                    page     5

 4010   97          
 4020   98            (*--------------------- process vch help -------------------------------*)
 4030   99          
 4040  100        PROCESS vch_help (
 4050  101          VAR vcc_inc : vcc_table;      (*  incarnation table         *)
 4060  102          VAR main,                     (*  vch sem                   *)
 4070  103          me,                           (*  vch help sem              *)
 4080  104          free : !sempointer            (*  free buffers sem          *)
 4090  105          );
 4100  106          
 4110  107        TYPE
 4120  108          note = PACKED RECORD       (*  for broadcast   *)
 4130  109                        !  head : alarmlabel;
 4140  110                        !  comp : alarmnetaddr;
 4150  111                        !  count : integer
 4160  112                        END;
 4170  113          
 4180  114        CONST
 4190  115          write = 2;
 4200  116          
 4210  117          sleep = 1;
 4220  118          tested= 2;
 4230  119          down  = 4;
 4240  120          
 4250  121          connection_code = #hc8;
 4260  122          
 4270  123        VAR
 4280  124          msg, bm : reference;
 4290  125          v : vc_range;
 4300  126          handler: alarmnetaddr;
 4310  127          
 4320  128        BEGIN      (*------------ main help program ----------------*)
 4330  129    1   ! REPEAT
 4340  130    2   ! ! wait ( msg, me^);
 4350  131    3   ! ! 
 4360  132    4   ! ! IF msg^.u4 DIV 16 = 2 THEN               (*  broadcast    *)
 4370  133    5   ! !   BEGIN
 4380  134    6   ! !   ! FOR v:= 1 TO vc_l DO
 4390  135    7   ! !   !   IF vcc_inc(v).state < down THEN             (*  send a broadcast   *)
 4400  136    8   ! !   !     BEGIN
 4410  137    9   ! !   !     ! wait ( bm, free^);
 4420  138   10   ! !   !     ! bm^.u1:= write;
 4430  139   11   ! !   !     ! bm^.u3:= netc_route;
 4440  140   12   ! !   !     ! bm^.u4:= msg^.u4;
 4450  141   13   ! !   !     ! LOCK bm AS buf: note DO
 4460  142   14   ! !   !     !   LOCK msg AS mes: note DO
\f

tsvchlst    81.06.12.   16.11.                                                    page     6

 4470  143   15   ! !   !     !     BEGIN
 4480  144   16   ! !   !     !     ! buf:= mes;
 4490  145   17   ! !   !     !     ! buf.head.rec.micro:= vcc_inc(v).vc_mic
 4500  146   18   ! !   !     !     END;
 4510  147   19   ! !   !     ! 
 4520  148   20   ! !   !     ! signal ( bm, main^)
 4530  149   21   ! !   !     END;
 4540  150   22   ! !   ! return ( msg)
 4550  151   23   ! !   END
 4560  152   24   ! ! ELSE
 4570  153   25   ! !   IF msg^.u4 = #hc0 THEN                   (*  node test      *)
 4580  154   26   ! !     BEGIN
 4590  155   27   ! !     ! 
 4600  156   28   ! !     ! LOCK msg AS head: alarmlabel DO handler:= head.rec;
 4610  157   29   ! !     ! 
 4620  158   30   ! !     ! FOR v:= 1 TO vc_l DO
 4630  159   31   ! !     !   IF vcc_inc(v).state = sleep THEN
 4640  160   32   ! !     !     BEGIN
 4650  161   33   ! !     !     ! wait ( bm, free^);
 4660  162   34   ! !     !     ! bm^.u1:= write;
 4670  163   35   ! !     !     ! bm^.u3:= netc_route;
 4680  164   36   ! !     !     ! bm^.u4:= connection_code;
 4690  165   37   ! !     !     ! 
 4700  166   38   ! !     !     ! LOCK bm AS head: alarmlabel DO
 4710  167   39   ! !     !     !   WITH head DO
 4720  168   40   ! !     !     !     BEGIN
 4730  169   41   ! !     !     !     ! no_of_by:= label_size;
 4740  170   42   ! !     !     !     ! rec:= handler;
 4750  171   43   ! !     !     !     ! rec.micro:= vcc_inc(v).vc_mic;
 4760  172   44   ! !     !     !     ! send:= handler;
 4770  173   45   ! !     !     !     END;
 4780  174   46   ! !     !     ! signal ( bm, main^);
 4790  175   47   ! !     !     ! vcc_inc(v).state:= tested;
 4800  176   48   ! !     !     END;
 4810  177   49   ! !     ! 
 4820  178   50   ! !     ! msg^.u3:= netc_route1;            (*  let vch make receipt   *)
 4830  179   51   ! !     ! msg^.u4:= #hc1;
 4840  180   52   ! !     ! signal ( msg, main^)
 4850  181   53   ! !     END;      (*  node test     *)
 4860  182   54   ! ! 
 4870  183   55   ! ! 
 4880  184   56   ! ! 
 4890  185   57   ! UNTIL false;
 4900  186   58   END;
 4910  187        
 4920  188         
\f

tsvchlst    81.06.12.   16.11.                                                    page     7

 5010  189        
 5020  190          (*--------------------- vch ----------------------------------------*)
 5030  191        
 5040  192        TYPE
 5050  193          
 5060  194          alarm_form70 = RECORD (* used in 7.0 *)
 5070  195                         !  head : alarmlabel;
 5080  196                         !  tail : RECORD
 5090  197                         !         !  vcc_mic : integer;
 5100  198                         !         !  vc_kind : byte; (* 0 means at- and 1 means it-kind *)
 5110  199                         !         !  lam_nb : byte; (* index to the sem array *)
 5120  200                         !         !  port_nb : byte; (*  channel number *)
 5130  201                         !         END;
 5140  202                         END;
 5150  203          
 5160  204          
 5170  205          
 5180  206          alarm_form74 = RECORD     (*  format in 7.4  *)
 5190  207                         !  head : alarmlabel;
 5200  208                         !  vcc_addr : integer
 5210  209                         END;
 5220  210          
 5230  211          
 5240  212          
 5250  213        CONST
 5260  214          
 5270  215          ready = 0;              (*  vcc states     *)
 5280  216          sleep = 1;
 5290  217          tested= 2;
 5300  218          down  = 4;
 5310  219          
 5320  220          refuse_code = #h12;       (*   opcode 1.2    *)
 5330  221          
 5340  222          helpsize = 200;
 5350  223          helppri  = -1;
 5360  224          ok = 0;
 5370  225          
 5380  226           
\f

tsvchlst    81.06.12.   16.11.                                                    page     8

 6010  227        VAR
 6020  228          
 6030  229            (*------------ incar-part ------------*)
 6040  230          
 6050  231          shad : ARRAY ( vc_range) OF shadow;
 6060  232          vct : vcc_table;          (*  incarnation table      *)
 6070  233            (* is used for administration of semaphores and shadow_variables
 6080  234            .  to all the vcc_incarnations
 6090  235            *)
 6100  236          
 6110  237          vct_index,
 6120  238          vct_max : vc_range := 0;
 6130  239          
 6140  240          
 6150  241            (*------------ main-part ------------*)
 6160  242          
 6170  243          in_mes : reference;
 6180  244          where : macroaddr;             (*  receiver     *)
 6190  245          who   : integer;
 6200  246          
 6210  247          result_code : result_range;
 6220  248          
 6230  249          test : boolean := false; (* true means testmode *)
 6240  250          
 6250  251          vcc_name : alfa;
 6260  252          vcc_nb, alfa_pos : integer;
 6270  253          
 6280  254          z : zone;
 6290  255          
 6300  256          shadhelp : shadow;
 6310  257          
 6320  258          
 6330  259           
\f

tsvchlst    81.06.12.   16.11.                                                    page     9

 7010  260            (*------------ procedures and functions ------------*)
 7020  261          
 7030  262          
 7040  263            (*------------ externals ------------*)
 7050  264          
 7060  265          
 7070  266        PROCESS vcc(
 7080  267          opsem : sempointer;
 7090  268          VAR messem : !ts_pointer;
 7100  269          VAR quesem : !ts_pointer;
 7110  270          VAR vchsem,
 7120  271          driversem,
 7130  272          timeoutsem,
 7140  273          comsem : !sempointer;
 7150  274          VAR dc_addr,
 7160  275          ts_addr:   !macroaddr;
 7170  276          micadr : integer;
 7180  277          canno : byte
 7190  278          );
 7200  279        EXTERNAL;
 7210  280        
 7220  281          (*------------ forward declaration ------------*)
 7230  282        
 7240  283        
 7250  284        PROCEDURE receipt_mes(
 7260  285          VAR rec_mes : reference;
 7270  286          result_code : result_range
 7280  287          );
 7290  288        FORWARD;
 7300  289        
 7310  290        
 7320  291        PROCEDURE refuse ( VAR msg : reference; cause : result_range);
 7330  292        FORWARD;
 7340  293        
 7350  294         
\f

tsvchlst    81.06.12.   16.11.                                                    page    10

 8010  295          (*------------ vct_part ------------*)
 8020  296        
 8030  297        
 8040  298        PROCEDURE find_vct_elm(
 8050  299          mic : integer;
 8060  300          VAR result : result_range;
 8070  301          VAR index : vc_range
 8080  302          );
 8090  303            (*---------------------------------------------------------------
 8100  304            .  This procedure returns the index of the element with the given
 8110  305            .  micro-address. If not found, then the index is that of the
 8120  306            .  element in front of the place, where it ought to be.
 8130  307            .  The search strategi is binary search in an ordered list of
 8140  308            .  elements. The smallest element has the index = 1.
 8150  309            .  Error - will not appear.
 8160  310            ----------------------------------------------------------------*)
 8170  311        VAR
 8180  312          low, mid, high : vc_range;
 8190  313          
 8200  314        BEGIN
 8210  315    1   ! result:= not_found;
 8220  316    2   ! 
 8230  317    3   ! IF vct_max = 0 THEN
 8240  318    4   !   index := 0 (* vct is empty *)
 8250  319    5   ! ELSE (* we first check the lower bound *)
 8260  320    6   !   IF mic < vct(1).vc_mic THEN index := 0 ELSE
 8270  321    7   !     IF mic = vct(1).vc_mic THEN
 8280  322    8   !       BEGIN
 8290  323    9   !       ! index:= 1;
 8300  324   10   !       ! result:= accepted
 8310  325   11   !       END
 8320  326   12   !     ELSE
 8330  327   13   !       BEGIN (* now the search is started *)
 8340  328   14   !       ! low := 1;
 8350  329   15   !       ! high := vct_max; (* >1 *)
 8360  330   16   !       ! mid := high;
 8370  331   17   !       ! 
 8380  332   18   !       ! REPEAT
 8390  333   19   !       ! ! WITH vct(mid) DO
 8400  334   20   !       ! !   IF mic = vc_mic THEN
 8410  335   21   !       ! !     BEGIN
 8420  336   22   !       ! !     ! index := mid;
 8430  337   23   !       ! !     ! result:= accepted
 8440  338   24   !       ! !     END
 8450  339   25   !       ! !   ELSE
 8460  340   26   !       ! !     IF mic < vc_mic THEN
\f

tsvchlst    81.06.12.   16.11.                                                    page    11

 8470  341   27   !       ! !       high := mid
 8480  342   28   !       ! !     ELSE low := mid; (* mic > vc_mic *)
 8490  343   29   !       ! !   (* end with *)
 8500  344   30   !       ! ! mid := (high - low) DIV 2 + low;
 8510  345   31   !       ! UNTIL (result = accepted) OR ( high - low < 2 );
 8520  346   32   !       ! 
 8530  347   33   !       ! IF result <> accepted THEN
 8540  348   34   !       !   index := low; (* mic ought to be placed between low and high *)
 8550  349   35   !       END (* search-part *);
 8560  350   36   ! 
 8570  351   37   !   (*q if test then
 8580  352   38   !   if result = accepted then testout(z,"vct index  :",index)
 8590  353   39   !   else testout(z,"not in vct :",mic); q*)
 8600  354   40   ! 
 8610  355   41   END (* find_vct_el *);
 8620  356        
 8630  357         
\f

tsvchlst    81.06.12.   16.11.                                                    page    12

 9010  358        
 9020  359        PROCEDURE move_vct_entry ( VAR rec, from : vc_incar_e );
 9030  360        BEGIN
 9040  361    1   ! WITH from DO
 9050  362    2   !   BEGIN
 9060  363    3   !   ! rec.vc_mic:= vc_mic;
 9070  364    4   !   ! rec.state:= state;
 9080  365    5   !   ! rec.in_sem:= in_sem;
 9090  366    6   !   ! rec.shix := shix
 9100  367    7   !   END
 9110  368    8   END;  (*  of move  *)
 9120  369        
 9130  370         
\f

tsvchlst    81.06.12.   16.11.                                                    page    13

10010  371        PROCEDURE place_vct_elm(
10020  372          vcc_mic : integer;
10030  373          VAR result : result_range;
10040  374          VAR index : vc_range
10050  375          );
10060  376            (*---------------------------------------------------------------------
10070  377            .  This procedure makes place for an element in the vct, if room for it
10080  378            .  and initialize it.
10090  379            .  Error => result := rejected.
10100  380            ---------------------------------------------------------------------*)
10110  381        VAR
10120  382          ix : vc_range;
10130  383          work : vc_incar_e;
10140  384          
10150  385        BEGIN
10160  386    1   ! find_vct_elm( vcc_mic, result, index );
10170  387    2   ! IF result = accepted THEN  result:= existing_entry  ELSE
10180  388    3   !   IF vct_max >= vc_l THEN  result:= no_room  ELSE
10190  389    4   !     IF (vcc_mic < vc_addr_limit) OR (vcc_mic >= at_addr_limit) THEN
10200  390    5   !       BEGIN
10210  391    6   !       !   (*q if test then testout(z,"place_err   ",vcc_mic); q*)
10220  392    7   !       ! result:= not_found
10230  393    8   !       END
10240  394    9   !     ELSE
10250  395   10   !       BEGIN    (*  place the element  *)
10260  396   11   !       ! move_vct_entry ( work, vct(vct_max+1));
10270  397   12   !       ! FOR ix:= vct_max DOWNTO index+1 DO
10280  398   13   !       !   move_vct_entry ( vct(ix+1), vct(ix));
10290  399   14   !       ! vct_max := vct_max + 1;
10300  400   15   !       ! index := index + 1; (* that's the new place *)
10310  401   16   !       ! move_vct_entry ( vct(index), work);
10320  402   17   !       ! vct(index).vc_mic:= vcc_mic;
10330  403   18   !       ! vct(index).state:= sleep;
10340  404   19   !       ! result:= accepted
10350  405   20   !       END;
10360  406   21   END (* place_vct_elm *);
10370  407        
10380  408         
\f

tsvchlst    81.06.12.   16.11.                                                    page    14

11010  409        PROCEDURE del_vct_elm(
11020  410          del_mic : integer;
11030  411          VAR result : result_range
11040  412          );
11050  413            (*-----------------------------------------------------------------------
11060  414            .  This procedure delets an element in the vct, if found.
11070  415            .  Error => dc
11080  416            -----------------------------------------------------------------------*)
11090  417        VAR
11100  418          res : result_range;
11110  419          index, ix : vc_range;
11120  420          work : vc_incar_e;
11130  421          
11140  422        BEGIN
11150  423    1   ! find_vct_elm(del_mic, res, index);
11160  424    2   ! IF res = accepted THEN
11170  425    3   !   
11180  426    4   !   IF NOT nil ( shad(vct(index).shix)) THEN
11190  427    5   !     BEGIN
11200  428    6   !     ! 
11210  429    7   !     ! vct(index).state:= down;
11220  430    8   !     ! break ( shad(vct(index).shix), 47);
11230  431    9   !     ! remove ( shad(vct(index).shix));
11240  432   10   !     ! 
11250  433   11   !     ! move_vct_entry ( work, vct(index));
11260  434   12   !     ! FOR ix := index TO vct_max - 1 DO
11270  435   13   !     !   move_vct_entry ( vct(ix), vct(ix+1));
11280  436   14   !     ! move_vct_entry ( vct(vct_max), work);
11290  437   15   !     ! vct_max := vct_max - 1;
11300  438   16   !     ! 
11310  439   17   !     END;
11320  440   18   ! result:= res
11330  441   19   END (* del_vct_elm *);
11340  442         
\f

tsvchlst    81.06.12.   16.11.                                                    page    15

12010  443          (*------------ sup-part ------------*)
12020  444        
12030  445        
12040  446          (*-------------------------------------------------------------------
12050  447          .  this part will later include several procedures for handling
12060  448          .  this modules supervision of vcc's and tss.
12070  449          .  so far - you will meet the comment "supervision", where these
12080  450          .  procedures are to be called,
12090  451          .  and that takes place immediately after waits, and when signalling.
12100  452          --------------------------------------------------------------------*)
12110  453         
\f

tsvchlst    81.06.12.   16.11.                                                    page    16

13010  454          (*------------ signal-part ------------*)
13020  455        
13030  456        
13040  457        PROCEDURE signal_to_vcc (
13050  458          VAR msg : reference;
13060  459          known_index : vc_range
13070  460          );
13080  461            (*----------------------------------------------------------------------
13090  462            .  This procedure signals the message to the input_semaphore of the vcc,
13100  463            .  and do the supervision. If known_index is zero, this procedure
13110  464            .  finds the vct-index itself.
13120  465            .  No check on known_index.
13130  466            .  Error => send receipt_mes.
13140  467            -----------------------------------------------------------------------*)
13150  468        VAR
13160  469          result : result_range;
13170  470          wanted : integer;
13180  471          index : vc_range;
13190  472          
13200  473        BEGIN
13210  474    1   ! LOCK msg AS head : alarmlabel DO wanted:= head.rec.micro;
13220  475    2   ! IF known_index <> 0 THEN    (*  check  *)
13230  476    3   !   IF vct(known_index).vc_mic <> wanted THEN known_index:= 0;
13240  477    4   ! 
13250  478    5   ! IF known_index = 0 THEN
13260  479    6   !   find_vct_elm( wanted, result, index )
13270  480    7   ! ELSE
13280  481    8   !   index := known_index;
13290  482    9   ! 
13300  483   10   ! IF vct(index).state = down THEN  result:= not_ready;
13310  484   11   ! IF result = accepted THEN
13320  485   12   !   BEGIN
13330  486   13   !   ! signal ( msg, sem( vct(index).in_sem).s^ );
13340  487   14   !   !   (* supervision - here we need the index for identification of the vcc *)
13350  488   15   !   END
13360  489   16   ! ELSE
13370  490   17   !   BEGIN
13380  491   18   !   !   (*-- reject --*)
13390  492   19   !   ! 
13400  493   20   !   ! refuse ( msg, result );
13410  494   21   !   ! 
13420  495   22   !   !   (*q if test then testout(z,"sgnl_vct_err",index); q*)
13430  496   23   !   END;
13440  497   24   END (* signal_to_vcc  *);
13450  498         
\f

tsvchlst    81.06.12.   16.11.                                                    page    17

14010  499        
14020  500        PROCEDURE receipt_mes (
14030  501          
14040  502          VAR rec_mes : reference;
14050  503          
14060  504          result_code : result_range
14070  505          );
14080  506            (*------------------------------------------------------------------
14090  507            .  This procedure signals receipt-messages to the sup with the
14100  508            .  correct u3, u4, address, no_of_by, and result_code.
14110  509            --------------------------------------------------------------------*)
14120  510        BEGIN
14130  511    1   ! 
14140  512    2   ! WITH rec_mes^ DO
14150  513    3   !   BEGIN
14160  514    4   !   ! 
14170  515    5   !   ! LOCK rec_mes AS head : alarmlabel DO
14180  516    6   !   !   WITH head DO
14190  517    7   !   !     BEGIN
14200  518    8   !   !     ! rec := send;
14210  519    9   !   !     ! send.macro:= ts_addr;
14220  520   10   !   !     ! send.micro:= vch_mic_addr;
14230  521   11   !   !     ! result := result_code;
14240  522   12   !   !     END (* lock - with *);
14250  523   13   !   ! u3:= vci_route;
14260  524   14   !   ! u4:= (u4 DIV 2)*2 + 1;
14270  525   15   !   END (* with *);
14280  526   16   ! 
14290  527   17   ! signal( rec_mes, sem(tssup_sem_no).s^ );
14300  528   18   ! 
14310  529   19   END (* receipt_mes *);
14320  530        
14330  531         
\f

tsvchlst    81.06.12.   16.11.                                                    page    18

15010  532        
15020  533        PROCEDURE refuse (
15030  534          VAR msg : reference;           (*  message to refused      *)
15040  535          cause   : result_range         (*  result code             *)
15050  536          );
15060  537          
15070  538            (*  send 1.2  back to sender      *)
15080  539          
15090  540        TYPE
15100  541          
15110  542          flawshape = PACKED RECORD       (*  for 1.2     *)
15120  543                             !  head : alarmlabel;
15130  544                             !  data : alarmlabel
15140  545                             END;
15150  546          
15160  547        BEGIN
15170  548    1   ! LOCK msg AS buf : flawshape DO
15180  549    2   !   WITH buf DO
15190  550    3   !     BEGIN
15200  551    4   !     ! data:= head;
15210  552    5   !     ! data.op_code:= msg^.u4;
15220  553    6   !     ! WITH head DO
15230  554    7   !     !   BEGIN
15240  555    8   !     !   ! no_of_by:= 2*label_size+2;
15250  556    9   !     !   ! rec:= send;
15260  557   10   !     !   ! send.macro:= ts_addr;
15270  558   11   !     !   ! send.micro:= vch_mic_addr;
15280  559   12   !     !   ! result:= cause;
15290  560   13   !     !   END
15300  561   14   !     END;
15310  562   15   ! 
15320  563   16   ! msg^.u3:= vci_route;
15330  564   17   ! msg^.u4:= refuse_code;
15340  565   18   ! signal ( msg, sem(tssup_sem_no).s^)
15350  566   19   ! 
15360  567   20   END;
15370  568        
15380  569        
15390  570         
\f

tsvchlst    81.06.12.   16.11.                                                    page    19

16010  571        
16020  572        BEGIN
16030  573    1   !   (*------------ main program ------------*)
16040  574    2   ! 
16050  575    3   !   (*------------ initialisation ------------*)
16060  576    4   ! 
16070  577    5   ! testopen ( z, own.incname, opsem);
16080  578    6   ! testout(z,version,al_env_version);
16090  579    7   ! result_code := create ( "vchhelp     ",
16100  580    8   ! vch_help ( vct,
16110  581    9   ! sem(vch_sem_no).s,
16120  582   10   ! sem(vch_int1).w,
16130  583   11   ! sem(com_pool).w
16140  584   12   ! ),
16150  585   13   ! shadhelp, helpsize  );
16160  586   14   ! 
16170  587   15   ! IF result_code <> ok THEN
16180  588   16   !   testout ( z,"help create=", result_code)
16190  589   17   ! ELSE
16200  590   18   !   start ( shadhelp, helppri);
16210  591   19   ! FOR vct_index:= 1 TO vc_l DO
16220  592   20   !   WITH vct(vct_index) DO
16230  593   21   !     BEGIN
16240  594   22   !     ! vc_mic:= at_addr_limit;
16250  595   23   !     ! state:= down;
16260  596   24   !     ! in_sem:= vcc_sem_no - 2 + 2 * vct_index;
16270  597   25   !     ! shix:= vct_index
16280  598   26   !     END;
16290  599   27   ! 
16300  600   28   !   (*------------ main repeat_loop-part ------------*)
16310  601   29   ! 
16320  602   30   ! REPEAT (* until terminate situation *)
16330  603   31   ! ! 
16340  604   32   ! ! result_code:= accepted;
16350  605   33   ! ! 
16360  606   34   ! !   (*q if test then testout(z,"wait in_sem ",0); q*)
16370  607   35   ! ! 
16380  608   36   ! ! wait( in_mes, sem( vch_sem_no ).w^ );
16390  609   37   ! !   (* here it waits effectively, if no messages has been scheduled *)
16400  610   38   ! ! 
16410  611   39   ! !   (* if test then testout(z,"in_mes   u3:",in_mes^.u3);
16420  612   40   ! !   if test then testout(z,"         u4:",in_mes^.u4); *)
16430  613   41   ! ! 
16440  614   42   ! !   (* first of all we group the messages, depending on from where it
16450  615   43   ! !   .  does come.
16460  616   44   ! !   *)
\f

tsvchlst    81.06.12.   16.11.                                                    page    20

16470  617   45   ! ! 
16480  618   46   ! !   (*q if test then testout(z,"case     u3:",in_mes^.u3);
16490  619   47   ! !   if test then testout(z,"         u4:",in_mes^.u4); q*)
16500  620   48   ! ! 
16510  621   49   ! ! CASE  in_mes^.u3  OF
16520  622   50   ! ! ! 
16530  623   51   ! ! ! dummy_route :        return ( in_mes );
16540  624   52   ! ! ! 
16550  625   53   ! ! !  
\f

tsvchlst    81.06.12.   16.11.                                                    page    21

17010  626   54   ! ! !   <*   timer NOT used
17020  627   55   ! ! !   tim_route, tim_route1 (* from timeout *) :
17030  628   56   ! ! !   BEGIN
17040  629   57   ! ! !   (*q if test then testout(z,"from timeout",0); q*)
17050  630   58   ! ! !   
17060  631   59   ! ! !   
17070  632   60   ! ! !   (* case on opcode *)
17080  633   61   ! ! !   
17090  634   62   ! ! !   receipt_mes( in_mes, rejected );         (*     ??????  *)
17100  635   63   ! ! !   
17110  636   64   ! ! !   END (* from timeout *);
17120  637   65   ! ! !   *>
17130  638   66   ! ! !  
\f

tsvchlst    81.06.12.   16.11.                                                    page    22

18010  639   67   ! ! ! 
18020  640   68   ! ! ! vci_route, vci_route1,
18030  641   69   ! ! ! vca_route, vca_route1 (* from a vcc - of kind at *) :
18040  642   70   ! ! !   
18050  643   71   ! ! !   BEGIN
18060  644   72   ! ! !   !   (* signal to sup *)
18070  645   73   ! ! !   ! 
18080  646   74   ! ! !   !   (* No check here. But this block is planned used, when
18090  647   75   ! ! !   !   .  the following opcodes are met:
18100  648   76   ! ! !   !   .
18110  649   77   ! ! !   !   .  0.2  3.1  3.2  3.4  3.5  4.0  8.1  8.3  8.4  9.1  10.3  10.5
18120  650   78   ! ! !   !   .  1.2
18130  651   79   ! ! !   !   .
18140  652   80   ! ! !   !   *)
18150  653   81   ! ! !   ! 
18160  654   82   ! ! !   !   (*q if test then testout(z,"from a vcc  ",0); q*)
18170  655   83   ! ! !   ! 
18180  656   84   ! ! !   !   (*  supervision     *)
18190  657   85   ! ! !   ! LOCK in_mes AS head : alarmlabel DO
18200  658   86   ! ! !   !   WITH head DO
18210  659   87   ! ! !   !     BEGIN
18220  660   88   ! ! !   !     ! where:= rec.macro;
18230  661   89   ! ! !   !     ! who:= rec.micro;
18240  662   90   ! ! !   !     ! find_vct_elm ( send.micro, result_code, vct_index);
18250  663   91   ! ! !   !     END;
18260  664   92   ! ! !   ! 
18270  665   93   ! ! !   ! WITH vct(vct_index) DO
18280  666   94   ! ! !   !   IF state < down THEN  state:= ready;
18290  667   95   ! ! !   ! 
18300  668   96   ! ! !   ! IF ( where = ts_addr )
18310  669   97   ! ! !   !   AND ( who = vch_mic_addr ) THEN        (*  for me    *)
18320  670   98   ! ! !   !   BEGIN
18330  671   99   ! ! !   !   ! return ( in_mes);
18340  672  100   ! ! !   !   END
18350  673  101   ! ! !   ! ELSE
18360  674  102   ! ! !   !   signal(in_mes,sem( tssup_sem_no).s^);
18370  675  103   ! ! !   ! 
18380  676  104   ! ! !   ! 
18390  677  105   ! ! !   END (* from a vcc *);
18400  678  106   ! ! ! 
18410  679  107   ! ! !  
\f

tsvchlst    81.06.12.   16.11.                                                    page    23

19010  680  108   ! ! ! 
19020  681  109   ! ! ! netc_route1:       (*  to vch itself    *)
19030  682  110   ! ! !   
19040  683  111   ! ! !   BEGIN
19050  684  112   ! ! !   ! 
19060  685  113   ! ! !   ! 
19070  686  114   ! ! !   !   (*q if test then testout(z,"to vch      ",in_mes^.u4); q*)
19080  687  115   ! ! !   ! 
19090  688  116   ! ! !   ! CASE in_mes^.u4 (* operation code *) OF
19100  689  117   ! ! !   ! ! 
19110  690  118   ! ! !   ! !   (* 1.2 *) #h12 :
19120  691  119   ! ! !   ! !   return ( in_mes);
19130  692  120   ! ! !   ! ! 
19140  693  121   ! ! !   ! !   (* 2.x  *)
19150  694  122   ! ! !   ! ! #h20..#h29,
19160  695  123   ! ! !   ! ! #hc0 :
19170  696  124   ! ! !   ! !   signal ( in_mes, sem(vch_int1).s^);
19180  697  125   ! ! !   ! ! 
19190  698  126   ! ! !   ! !   (* 12.1  from help  *)
19200  699  127   ! ! !   ! ! #hc1:    ;
19210  700  128   ! ! !   ! ! 
19220  701  129   ! ! !   ! !   (* 7.0 *) #h70 :
19230  702  130   ! ! !   ! !   BEGIN
19240  703  131   ! ! !   ! !   !   (* creation of a vcc_incanation *)
19250  704  132   ! ! !   ! !   !   (*** yet, creation is only allowed for vc's of kind at ***)
19260  705  133   ! ! !   ! !   !   (*** later we must remember to test on vc_kind ***)
19270  706  134   ! ! !   ! !   ! 
19280  707  135   ! ! !   ! !   ! LOCK in_mes AS mes : alarm_form70 DO
19290  708  136   ! ! !   ! !   !   WITH mes DO
19300  709  137   ! ! !   ! !   !     BEGIN
19310  710  138   ! ! !   ! !   !     !   (* update vct *)
19320  711  139   ! ! !   ! !   !     ! 
19330  712  140   ! ! !   ! !   !     ! IF (head.send.macro <> dc_addr) THEN
19340  713  141   ! ! !   ! !   !     !   BEGIN
19350  714  142   ! ! !   ! !   !     !   ! result_code:= unknown_sender;
19360  715  143   ! ! !   ! !   !     !   !   (*q if test then testout(z,"7.0 bad <> :",head.send.macro.dc_addr); q*)
19370  716  144   ! ! !   ! !   !     !   END
19380  717  145   ! ! !   ! !   !     ! ELSE
19390  718  146   ! ! !   ! !   !     !   place_vct_elm( tail.vcc_mic, result_code, vct_index );
19400  719  147   ! ! !   ! !   !     ! 
19410  720  148   ! ! !   ! !   !     ! IF result_code = accepted THEN
19420  721  149   ! ! !   ! !   !     !   BEGIN
19430  722  150   ! ! !   ! !   !     !   ! 
19440  723  151   ! ! !   ! !   !     !   !   (* make an unambiguous vcc_name *)
19450  724  152   ! ! !   ! !   !     !   ! 
19460  725  153   ! ! !   ! !   !     !   ! vcc_name := "vccon__     ";
\f

tsvchlst    81.06.12.   16.11.                                                    page    24

19470  726  154   ! ! !   ! !   !     !   ! vcc_nb := tail.vcc_mic;
19480  727  155   ! ! !   ! !   !     !   ! alfa_pos := 9;
19490  728  156   ! ! !   ! !   !     !   ! 
19500  729  157   ! ! !   ! !   !     !   ! REPEAT
19510  730  158   ! ! !   ! !   !     !   ! !   (*q if test then testout(z,"vcc_nb-part:",vcc_nb);
19520  731  159   ! ! !   ! !   !     !   ! !   if test then testout(z,"alfa_pos   :",alfa_pos); q*)
19530  732  160   ! ! !   ! !   !     !   ! ! 
19540  733  161   ! ! !   ! !   !     !   ! ! vcc_name( alfa_pos ) := chr( vcc_nb MOD 10 + ord( "0" ) );
19550  734  162   ! ! !   ! !   !     !   ! ! vcc_nb := vcc_nb DIV 10;
19560  735  163   ! ! !   ! !   !     !   ! ! alfa_pos := alfa_pos - 1;;
19570  736  164   ! ! !   ! !   !     !   ! UNTIL  alfa_pos = 6;
19580  737  165   ! ! !   ! !   !     !   ! 
19590  738  166   ! ! !   ! !   !     !   !   (*  create and start the vcc_incarnation *)
19600  739  167   ! ! !   ! !   !     !   ! 
19610  740  168   ! ! !   ! !   !     !   !   (*q if test then testout(z,"creating vcc",vct_index); q*)
19620  741  169   ! ! !   ! !   !     !   ! 
19630  742  170   ! ! !   ! !   !     !   ! IF tail.vc_kind = vcat THEN          (*  create vc at connector  *)
19640  743  171   ! ! !   ! !   !     !   !   BEGIN
19650  744  172   ! ! !   ! !   !     !   !   ! 
19660  745  173   ! ! !   ! !   !     !   !   ! result_code:= link ( "vcatc       ", vcc)
19670  746  174   ! ! !   ! !   !     !   !   ! ;
19680  747  175   ! ! !   ! !   !     !   !   ! result_code := create(
19690  748  176   ! ! !   ! !   !     !   !   ! vcc_name,
19700  749  177   ! ! !   ! !   !     !   !   ! vcc(
19710  750  178   ! ! !   ! !   !     !   !   ! opsem,
19720  751  179   ! ! !   ! !   !     !   !   ! sem( vct(vct_index).in_sem),
19730  752  180   ! ! !   ! !   !     !   !   ! sem( vct(vct_index).in_sem + 1 ),
19740  753  181   ! ! !   ! !   !     !   !   ! sem( vch_sem_no ).s,
19750  754  182   ! ! !   ! !   !     !   !   !   (* <<<sem( lam_sem_no + tail.lam_nb ).s,   >>> *)
19760  755  183   ! ! !   ! !   !     !   !   ! sem(vas_sem_no).s,
19770  756  184   ! ! !   ! !   !     !   !   ! sem( timeout_sem_no ).s,
19780  757  185   ! ! !   ! !   !     !   !   ! sem(com_pool).w,
19790  758  186   ! ! !   ! !   !     !   !   ! dc_addr,
19800  759  187   ! ! !   ! !   !     !   !   ! ts_addr,
19810  760  188   ! ! !   ! !   !     !   !   ! tail.vcc_mic,
19820  761  189   ! ! !   ! !   !     !   !   ! tail.port_nb
19830  762  190   ! ! !   ! !   !     !   !   ! ),
19840  763  191   ! ! !   ! !   !     !   !   ! shad(vct( vct_index ).shix),
19850  764  192   ! ! !   ! !   !     !   !   ! vac_size)
19860  765  193   ! ! !   ! !   !     !   !   END
19870  766  194   ! ! !   ! !   !     !   ! ELSE
19880  767  195   ! ! !   ! !   !     !   !   IF tail.vc_kind = vcit THEN         (*  create vc it connector    *)
19890  768  196   ! ! !   ! !   !     !   !     BEGIN
19900  769  197   ! ! !   ! !   !     !   !     ! 
19910  770  198   ! ! !   ! !   !     !   !     ! result_code:= link ( "vcitc       ", vcc )
19920  771  199   ! ! !   ! !   !     !   !     ! ;
\f

tsvchlst    81.06.12.   16.11.                                                    page    25

19930  772  200   ! ! !   ! !   !     !   !     ! result_code:= create (
19940  773  201   ! ! !   ! !   !     !   !     ! vcc_name,
19950  774  202   ! ! !   ! !   !     !   !     ! vcc (
19960  775  203   ! ! !   ! !   !     !   !     ! opsem,
19970  776  204   ! ! !   ! !   !     !   !     ! sem( vct(vct_index).in_sem),
19980  777  205   ! ! !   ! !   !     !   !     ! sem( vct(vct_index).in_sem+1),
19990  778  206   ! ! !   ! !   !     !   !     ! sem( vch_sem_no).s,
20000  779  207   ! ! !   ! !   !     !   !     !   (*  <<< sem ( lam_sem_no + tail.lam_nb).s,   >>> *)
20010  780  208   ! ! !   ! !   !     !   !     ! sem( vis_sem_no).s,
20020  781  209   ! ! !   ! !   !     !   !     ! sem( timeout_sem_no ).s,
20030  782  210   ! ! !   ! !   !     !   !     ! sem( com_pool).w,
20040  783  211   ! ! !   ! !   !     !   !     ! dc_addr,
20050  784  212   ! ! !   ! !   !     !   !     ! ts_addr,
20060  785  213   ! ! !   ! !   !     !   !     ! tail.vcc_mic,
20070  786  214   ! ! !   ! !   !     !   !     ! tail.port_nb
20080  787  215   ! ! !   ! !   !     !   !     ! ),
20090  788  216   ! ! !   ! !   !     !   !     ! shad(vct(vct_index).shix),
20100  789  217   ! ! !   ! !   !     !   !     ! vic_size)
20110  790  218   ! ! !   ! !   !     !   !     END
20120  791  219   ! ! !   ! !   !     !   !   ELSE
20130  792  220   ! ! !   ! !   !     !   !     result_code:= out_of_range;
20140  793  221   ! ! !   ! !   !     !   ! 
20150  794  222   ! ! !   ! !   !     !   ! IF result_code = accepted THEN
20160  795  223   ! ! !   ! !   !     !   !   start ( shad(vct(vct_index).shix), vcc_pri)
20170  796  224   ! ! !   ! !   !     !   ! ELSE
20180  797  225   ! ! !   ! !   !     !   !   del_vct_elm( tail.vcc_mic, result_code );
20190  798  226   ! ! !   ! !   !     !   ! 
20200  799  227   ! ! !   ! !   !     !   ! 
20210  800  228   ! ! !   ! !   !     !   !   (*q if test then testout(z,"create value",c); q*)
20220  801  229   ! ! !   ! !   !     !   END (* if  *);
20230  802  230   ! ! !   ! !   !     END (* lock - with *);
20240  803  231   ! ! !   ! !   ! 
20250  804  232   ! ! !   ! !   END (* creation of a vcc_incarnation *);
20260  805  233   ! ! !   ! !  
\f

tsvchlst    81.06.12.   16.11.                                                    page    26

21010  806  234   ! ! !   ! ! 
21020  807  235   ! ! !   ! ! #h74:        (*  remove a vcc   *)
21030  808  236   ! ! !   ! !   BEGIN
21040  809  237   ! ! !   ! !   ! 
21050  810  238   ! ! !   ! !   ! LOCK in_mes AS mes : alarm_form74 DO
21060  811  239   ! ! !   ! !   !   WITH mes, head DO
21070  812  240   ! ! !   ! !   !     IF send.macro <> dc_addr THEN
21080  813  241   ! ! !   ! !   !       result_code:= unknown_sender
21090  814  242   ! ! !   ! !   !     ELSE
21100  815  243   ! ! !   ! !   !       del_vct_elm ( vcc_addr, result_code)
21110  816  244   ! ! !   ! !   !       
21120  817  245   ! ! !   ! !   END;
21130  818  246   ! ! !   ! ! 
21140  819  247   ! ! !   ! ! 
21150  820  248   ! ! !   ! !  
\f

tsvchlst    81.06.12.   16.11.                                                    page    27

22010  821  249   ! ! !   ! ! 
22020  822  250   ! ! !   ! !   (* 12.8 *) #hc8:       ;
22030  823  251   ! ! !   ! ! 
22040  824  252   ! ! !   ! !   (* 12.14 *) #hce:
22050  825  253   ! ! !   ! !   BEGIN
22060  826  254   ! ! !   ! !   !   (*  state:= down   broadcast vcc down    *)
22070  827  255   ! ! !   ! !   ! refuse ( in_mes, not_ready);
22080  828  256   ! ! !   ! !   END
22090  829  257   ! ! !   ! !   OTHERWISE
22100  830  258   ! ! !   ! !   refuse ( in_mes, unknown_opcode)
22110  831  259   ! ! !   ! !   
22120  832  260   ! ! !   ! END;   (*  case  *)
22130  833  261   ! ! !   ! 
22140  834  262   ! ! !   ! IF NOT nil ( in_mes) THEN
22150  835  263   ! ! !   !   receipt_mes ( in_mes, result_code);
22160  836  264   ! ! !   ! 
22170  837  265   ! ! !   END;  (*  for vch  *)
22180  838  266   ! ! !  
\f

tsvchlst    81.06.12.   16.11.                                                    page    28

23010  839  267   ! ! ! 
23020  840  268   ! ! ! netc_route:
23030  841  269   ! ! !   BEGIN     (*  for a vcc   *)
23040  842  270   ! ! !   ! 
23050  843  271   ! ! !   !   (*q  if test then testout ( z, "to a vcc    ", in_mes^.u4);  q*)
23060  844  272   ! ! !   ! 
23070  845  273   ! ! !   ! vct_index:= 0;
23080  846  274   ! ! !   ! signal_to_vcc ( in_mes, vct_index)
23090  847  275   ! ! !   ! 
23100  848  276   ! ! !   END (* to a vcc *);
23110  849  277   ! ! !  
\f

tsvchlst    81.06.12.   16.11.                                                    page    29

24010  850  278   ! ! ! 
24020  851  279   ! ! ! OTHERWISE (* not implemented - now used for change of testmode *)
24030  852  280   ! ! ! BEGIN
24040  853  281   ! ! ! !   (*q test := not test;
24050  854  282   ! ! ! !   
24060  855  283   ! ! ! !   if test then testout(z,"starttestout",0);
24070  856  284   ! ! ! !   if not test then testout(z,"stop testout",0); q*)
24080  857  285   ! ! ! ! 
24090  858  286   ! ! ! ! refuse ( in_mes, unknown_route)
24100  859  287   ! ! ! ! 
24110  860  288   ! ! ! END (* otherwise *);
24120  861  289   ! ! ! 
24130  862  290   ! ! ! 
24140  863  291   ! ! END (* case - upon routings information *);
24150  864  292   ! ! 
24160  865  293   ! ! 
24170  866  294   ! UNTIL  false   (*  never stop  *)
24180  867  295   ! 
24190  868  296   END .     (* main program *)
24200  869        
24210  870          (* end of file *)
24220  871        
24230  872        
24240  873        
\f

tsvchlst    81.06.12.   16.11.                                                    page    30

           0  215*  224*  238*  317   318   320   475   476   478   845 
           1  117*  134   158   216*  223*  320   321   323   328   396   397   398   399   400   434 
              435   437   524   591   735   752   777 
           2  115*  118*  132   217*  344   345   524   524   555   555   596   596 
           4  119*  218*
           6  736 
           9  727 
          10  733   734 
          16  132 
          47  430 
         200  222*
accepted      324   337   345   347   387   404   424   484   604   720   794 
alarmlabel    109*  156   166   195*  207*  474   515   543*  544*  657 
alarmnetaddr  110*  126*
alarm_form70  194*  707 
alarm_form74  206*  810 
alfa          251*
alfa_pos      252*  727=  733   735=  735   736 
al_env_version                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              578 
as            141:  142:  156:  166:  474:  515:  548:  657:  707:  810:
at_addr_limit                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              389   594 
bm            124*  137   138   139   140   141:  148   161   162   163   164   166:  174 
boolean       249*
break         430 
buf           141:  144=  145   548:  549 
byte          198*  199*  200*  277*
canno         277*
cause         291*  535*  559 
chr           733 
comp          110*
comsem        273*
com_pool      583   757   782 
connection_code                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              121*  164 
count         111*
create        579   747   772 
data          544*  551=  552 
dc_addr         5*  274*  712   758   783   812 
del_mic       410*  423 
del_vct_elm   409*  797   815 
down          119*  135   218*  429   483   595   666 
driversem     271*
\f

tsvchlst    81.06.12.   16.11.                                                    page    31

dummy_route   623:
existing_entry                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              387 
external      279*
false         185   249*  866 
find_vct_elm  298*  386   423   479   662 
flawshape     542*  548 
free          104*  137   161 
from          359*  361 
h12           220*  690:
h20           694 
h29           694 
h70           701:
h74           807:
handler       126*  156=  170   172 
hc0           153   695:
hc1           179   699:
hc8           121*  822:
hce           824:
head          109*  145   156:  156   166:  167   195*  207*  474:  474   515:  516   543*  551   553 
              657:  658   712   811 
helppri       223*  590 
helpsize      222*  585 
high          312*  329=  330   341=  344   345 
incname       577 
index         301*  318=  320=  323=  336=  348=  374*  386   397   400=  400   401   402   403   419*
              423   426   429   430   431   433   434   471*  479   481=  483   486 
integer       111*  197*  208*  245*  252*  276*  299*  372*  410*  470*
in_mes        243*  608   621   623   657:  671   674   688   691   696   707:  810:  827   830   834 
              835   846   858 
in_sem        365=  365   486   596=  751   752   776   777 
ix            382*  397=  398   398   419*  434=  435   435 
known_index   459*  475   476   476=  478   481 
label_size    169   555 
lam_nb        199*
link          745   770 
lock          141:  142:  156:  166:  474:  515:  548:  657:  707:  810:
low           312*  328=  342=  344   344   345   348 
macro         519=  557=  660   712   812 
macroaddr       6*  244*  275*
main          102*  148   174   180 
me            103*  130 
mes           142:  144   707:  708   810:  811 
messem        268*
\f

tsvchlst    81.06.12.   16.11.                                                    page    32

mic           299*  320   321   334   340 
micadr        276*
micro         145=  171=  474   520=  558=  661   662 
mid           312*  330=  333   336   341   342   344=
move_vct_entry                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              359*  396   398   401   433   435   436 
msg           124*  130   132   140   142:  150   153   156:  178   179   180   291*  458*  474:  486 
              493   534*  548:  552   563   564   565 
netc_route    139   163   840:
netc_route1   178   681:
note          108*  141   142 
not_found     315   392 
not_ready     483   827 
no_of_by      169=  555=
no_room       388 
ok            224*  587 
opsem           4*  267*  577   750   775 
op_code       552=
ord           733 
out_of_range  792 
own           577 
place_vct_elm                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              371*  718 
port_nb       200*  761   786 
process         2*  100*  266*
quesem        269*
ready         215*  666 
rec           145   156   170=  171   359*  363   364   365   366   474   518=  556=  660   661 
receipt_mes   284*  500*  835 
rec_mes       285*  502*  512   515:  527 
reference     124*  243*  285*  291*  458*  502*  534*
refuse        291*  493   533*  827   830   858 
refuse_code   220*  564 
remove        431 
res           418*  423   424   440 
result        300*  315=  324=  337=  345   347   373*  386   387   387=  388=  392=  404=  411*  440=
              469*  479   483=  484   493   521=  559=
result_code   247*  286*  504*  521   579=  587   588   604=  662   714=  718   720   745=  747=  770=
              772=  792=  794   797   813=  815   835 
result_range  247*  286*  291*  300*  373*  411*  418*  469*  504*  535*
return        150   623   671   691 
s             486   527   565   581   674   696   753   755   756   778   780   781 
sem             7*  486   527   565   581   582   583   608   674   696   751   752   753   755   756 
              757   776   777   778   780   781   782 
\f

tsvchlst    81.06.12.   16.11.                                                    page    33

sempointer      4*  104*  267*  273*
send          172=  518   519   520   556   557   558   662   712   812 
shad          231*  426   430   431   763   788   795 
shadhelp      256*  585   590 
shadow        231*  256*
shix          366=  366   426   430   431   597=  763   788   795 
signal        148   174   180   486   527   565   674   696 
signal_to_vcc                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              457*  846 
sleep         117*  159   216*  403 
start         590   795 
state         135   159   175=  364=  364   403=  429=  483   595=  666   666=
tail          196*  718   726   742   760   761   767   785   786   797 
test          249*
tested        118*  175   217*
testopen      577 
testout       578   588 
timeoutsem    272*
timeout_sem_no                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              756   781 
tssup_sem_no  527   565   674 
ts_addr         6*  275*  519   557   668   759   784 
ts_pointer    268*  269*
ts_pointer_vector                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                7*
u1            138=  162=
u3            139=  163=  178=  523=  563=  621 
u4            132   140=  140   153   164=  179=  524=  524   552   564=  688 
unknown_opcode                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              830 
unknown_route                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              858 
unknown_sender                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              714   813 
v             125*  134=  135   145   158=  159   171   175 
vac_size      764 
vas_sem_no    755 
vcat          742 
vca_route     641:
vca_route1    641:
vcc           266*  745   749   770   774 
vcc_addr      208*  815 
vcc_inc       101*  135   145   159   171   175 
vcc_mic       197*  372*  386   389   389   402   718   726   760   785   797 
\f

tsvchlst    81.06.12.   16.11.                                                    page    34

vcc_name      251*  725=  733=  748   773 
vcc_nb        252*  726=  733   734=  734 
vcc_pri       795 
vcc_sem_no    596 
vcc_table     101*  232*
vchsem        270*
vch_help      100*  580 
vch_int1      582   696 
vch_mic_addr  520   558   669 
vch_sem_no    581   608   753   778 
vcit          767 
vci_route     523   563   640:
vci_route1    640:
vct           232*  320   321   333   396   398   398   401   402   403   426   429   430   431   433 
              435   435   436   476   483   486   580   592   665   751   752   763   776   777   788 
              795 
vct_index     237*  591=  592   596   597   662   665   718   751   752   763   776   777   788   795 
              845=  846 
vct_max       238*  317   329   388   396   397   399=  399   434   436   437=  437 
vc_addr_limit                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              389 
vc_handler      2*
vc_incar_e    359*  383*  420*
vc_kind       198*  742   767 
vc_l          134   158   388   591 
vc_mic        145   171   320   321   334   340   363=  363   402=  476   594=
vc_range      125*  231*  238*  301*  312*  374*  382*  419*  459*  471*
version        13*  578 
vic_size      789 
vis_sem_no    780 
w             582   583   608   757   782 
wait          130   137   161   608 
wanted        470*  474=  476   479 
where         244*  660=  668 
who           245*  661=  669 
work          383*  396   401   420*  433   436 
write         115*  138   162 
z             254*  577   578   588 
zone          254*
\f

tsvchlst    81.06.12.   16.11.                                                    page    35

AND                1
ARRAY              1
BEGIN             43
CASE               2
CONST              3
DIV                4
DO                27
DOWNTO             1
ELSE              18
END               50
FOR                5
FORWARD            2
IF                30
MOD                1
NIL                2
NOT                2
OF                 3
OR                 2
OTHERWISE          2
PACKED             2
PROCEDURE          9
RECORD             5
REPEAT             4
THEN              30
TO                 4
TYPE               3
UNTIL              4
VAR               25
WITH              12
\f

jg5  1981.06.12  16.12
 tsvch program
81.06.12.      16.12.                         pascal80     version 1981.04.01


   name        headline beginline endline  appetite(words) 

   vch_help       108       130     186  :      90            
   find_vct_elm   312       315     355  :      10            
   move_vct_ent   360       363     368  :       5            
   place_vct_el   382       386     406  :      21            
   del_vct_elm    418       423     441  :      22            
   signal_to_vc   469       474     497  :      17            
   receipt_mes    510       512     529  :      11            
   refuse         542       548     565  :      11            
   vc_handler      13       577     868  :     209            

 code: 6 . 128  = 6272 bytes


end of PASCAL80 compilation 

end
blocksread = 53
«eof»