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

⟦a7b6ff982⟧ TextFileVerbose

    Length: 106752 (0x1a100)
    Types: TextFileVerbose
    Names: »tsathlst«

Derivation

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

TextFileVerbose

\f

tsathlst    81.06.23.   20.18.                                                    page     1

   10    1        PROCESS at_handler(
   20    2          op_sem           : sempointer;
   30    3          VAR
   40    4          dc_address       ,
   50    5          own_address      : !macroaddr;
   60    6          VAR
   70    7          sem              : !ts_pointer_vector
   80    8          );
   90    9          
  100   10        CONST
  110   11          version          = "vers  3.18 /";
  120   12          
  130   13          
  140   14            (* ------------------------------------------------------------------------
  150   15            .
  160   16            . The at_handler presupposes the following surroundings:
  170   17            .
  180   18            . - at runtime:
  190   19            .
  200   20            .   Libraries: tslib.
  210   21            .
  220   22            .   Externals: at_connector, receipt_message, reject_message.
  230   23            .
  240   24            .
  250   25            . - at compile time:
  260   26            .
  270   27            .   Environments: alarmenv, tsenvir
  280   28            .
  290   29            .   Call: <object> = pascal80 <options> alarmenv tsenvir <source>
  300   30            .
  310   31            ------------------------------------------------------------------------ *)
  320   32           
\f

tsathlst    81.06.23.   20.18.                                                    page     2

 1010   33            (*
 1020   34            INTRODUCTION TO THE AT-HANDLER:
 1030   35            
 1040   36            
 1050   37            
 1060   38            Abbreviation list for the AT-HANDLER process:
 1070   39            
 1080   40            ---------------------------------------------
 1090   41            
 1100   42            ac        alarm centre
 1110   43            addr      address
 1120   44            at        alarm terminal
 1130   45            atc       at-connector
 1140   46            ath       at-handler
 1150   47            dc        district centre
 1160   48            del       delete
 1170   49            incar     incarnation
 1180   50            ins       insert
 1190   51            ix        index
 1200   52            locvar    local variable
 1210   53            mac       macro address
 1220   54            max       greatest
 1230   55            mic       micro address
 1240   56            min       smallest
 1250   57            msg       message
 1260   58            no        number
 1270   59            pac       primary alarm centre
 1280   60            rac       receiving alarm centre
 1290   61            rec       receiver
 1300   62            sac       sending alarm centre
 1310   63            sem       semaphore
 1320   64            send      sender
 1330   65            tss       ts-supervisor
 1340   66             
\f

tsathlst    81.06.23.   20.18.                                                    page     3

 2010   67            Pseudo-code for the AT-HANDLER process:
 2020   68            --------------------------------------
 2030   69            
 2040   70            ( this pseudo_code will be updated regularly - last time was 80.06.03 )
 2050   71            
 2060   72            
 2070   73            PROCESS at_handler("process_parameters");
 2080   74            
 2090   75            CONST
 2100   76            . "process_constants, installation dependent" (may be moved to alarm-environment);
 2110   77            
 2120   78            
 2130   79            TYPE
 2140   80            . "message_format" (may be moved to alarm-environment);
 2150   81            
 2160   82            VAR
 2170   83            . "sac_rac_table";
 2180   84            . "atc_table, binary search";
 2190   85            
 2200   86            . "addressing_data";
 2210   87            . "atc_incarnation_data";
 2220   88            . "error_handling_data";
 2230   89            
 2240   90            . "input_semaphore";
 2250   91            
 2260   92            BEGIN
 2270   93            . "initialization";
 2280   94            
 2290   95            . REPEAT
 2300   96            .   "collect a buffer on the input_semaphore, and
 2310   97            .   "handle the message in the buffer, corresponding to the
 2320   98            .    operation_code, and produce resulting messages";
 2330   99            
 2340  100            .    "for each resulting message do addressing/indexing
 2350  101            .    do supervising and signal each of the buffers to the
 2360  102            .    corresponding input_semaphore";
 2370  103            
 2380  104            . UNTIL forever;
 2390  105            
 2400  106            
 2410  107            END;
 2420  108            
 2430  109            (end of pseudo_code)
 2440  110            *)
 2450  111           
\f

tsathlst    81.06.23.   20.18.                                                    page     4

 3010  112            (* ------------------------------------------------------------------------
 3020  113            . Declaration part 1:   sac_rac table and table control variables.
 3030  114            ------------------------------------------------------------------------ *)
 3040  115          
 3050  116        VAR
 3060  117          sac_rac_tbl         : sac_rac_table
 3070  118          := sac_rac_table( sac_rac_lth ***
 3080  119                           sac_rac_tbl_entry ( sac_rac_entry( empty_addr, empty_addr ), false ) );
 3090  120          
 3100  121          sac_rac_ix          : sac_rac_range       := 1;
 3110  122          sac_rac_top         : upper_sac_rac_index := 0; (* Indicates the highest used sac_rac_index *)
 3120  123           
\f

tsathlst    81.06.23.   20.18.                                                    page     5

 4010  124            (* ------------------------------------------------------------------------
 4020  125            . Declaration part 2:  ATC incarnation table and ATC shadow table and table
 4030  126            .                      control variables.
 4040  127            ------------------------------------------------------------------------ *)
 4050  128          
 4060  129        VAR
 4070  130          atc_tbl             : atc_table
 4080  131          := atc_table( atc_tbl_lth *** atc_description( 0, 1, 1, 0, poll_delay_time,
 4090  132                                                         (..), stop_code, stop_code, 1 ) );
 4100  133          
 4110  134          shadows             : atc_shadow_table;
 4120  135          
 4130  136          atc_tbl_ix          : atc_table_range     := 1;
 4140  137          atc_tbl_top         : upper_atc_tbl_index := 0;
 4150  138           
\f

tsathlst    81.06.23.   20.18.                                                    page     6

 5010  139            (* ------------------------------------------------------------------------
 5020  140            . Declaration part 3:  resource handling.
 5030  141            ------------------------------------------------------------------------ *)
 5040  142          
 5050  143        VAR
 5060  144          main_wait            : (
 5070  145                                  idle_main            ,
 5080  146                                  busy_main            ,
 5090  147                                  busy_pool            ) := idle_main;
 5100  148          
 5110  149          claim_level          : atc_inc_claim       := claim_none;
 5120  150          
 5130  151          resource_claims      : integer             := 0;
 5140  152          
 5150  153          queue_lth            : byte                := 0;
 5160  154          
 5170  155          aux_msg              ,
 5180  156          working_0404_msg     ,
 5190  157          working_0608_msg     : reference;
 5200  158           
\f

tsathlst    81.06.23.   20.18.                                                    page     7

 6010  159            (* ------------------------------------------------------------------------
 6020  160            . Declaration part 4:  main part.
 6030  161            ------------------------------------------------------------------------ *)
 6040  162          
 6050  163        TYPE
 6060  164          route_vector        = ARRAY( netc_route..netc_route1 ) OF byte;
 6070  165          
 6080  166        CONST
 6090  167          route_vct           = route_vector( at_route, at_route1 );
 6100  168          
 6110  169        VAR
 6120  170          main_msg            : reference;
 6130  171          
 6140  172          result_code         : result_range        := accepted;
 6150  173          
 6160  174          atc_name            : alfa;
 6170  175          atc_no              : integer             := at_addr_limit;
 6180  176          alfa_pos            : 1..alfalength       := 1;
 6190  177           
\f

tsathlst    81.06.23.   20.18.                                                    page     8

 7010  178            (* ------------------------------------------------------------------------
 7020  179            . Declaration part 5:  supervision.
 7030  180            ------------------------------------------------------------------------ *)
 7040  181          
 7050  182        VAR
 7060  183          book_up_pool        : pool 1 OF updates;
 7070  184          time_out_pool       : pool 1 OF integer;
 7080  185          
 7090  186          book_up_msg         ,
 7100  187          time_out_msg        : reference;
 7110  188          
 7120  189          node_test_freq      : integer             := max_int;
 7130  190          traffic_test_freq   : integer             := max_int;
 7140  191          nt_time_out         : boolean             := false;
 7150  192          
 7160  193          dc_disconnect       : boolean             := true;
 7170  194           
\f

tsathlst    81.06.23.   20.18.                                                    page     9

 8010  195            (* ------------------------------------------------------------------------
 8020  196            . Declaration part 6:  miscellaneous.
 8030  197            ------------------------------------------------------------------------ *)
 8040  198          
 8050  199        VAR
 8060  200            (*q test                : boolean             := false; q*)
 8070  201          
 8080  202          z                   : zone;
 8090  203           
\f

tsathlst    81.06.23.   20.18.                                                    page    10

 9010  204            (* ------------------------------------------------------------------------
 9020  205            . Declaration part 7:  Externals.
 9030  206            ------------------------------------------------------------------------ *)
 9040  207          
 9050  208        PROCESS atconnector(
 9060  209          op_sem              : sempointer;
 9070  210          VAR
 9080  211          main_sem            ,
 9090  212          queue_sem           : !ts_pointer;
 9100  213          VAR
 9110  214          ath_sem             ,
 9120  215          driversem           ,
 9130  216          com_pool            : !sempointer;
 9140  217          VAR
 9150  218          actual_activity     : !connector_state;
 9160  219          VAR
 9170  220          poll_delay          : !integer;
 9180  221          VAR
 9190  222          traffic_test_freq   : !integer;
 9200  223          VAR
 9210  224          traffic_counter     : integer;
 9220  225          VAR
 9230  226          own_dc              ,
 9240  227          own_ts              : !macroaddr;
 9250  228          ownaddr             : !integer;
 9260  229          channelno           : !byte
 9270  230          );
 9280  231        EXTERNAL;
 9290  232         
\f

tsathlst    81.06.23.   20.18.                                                    page    11

10010  233        PROCEDURE book_up(
10020  234          VAR
10030  235          time_out_msg     ,
10040  236          book_up_msg      : reference;
10050  237          seconds          : integer
10060  238          );
10070  239          
10080  240            (* -----------------------------------------------------------------------
10090  241            ----------------------------------------------------------------------- *)
10100  242          
10110  243        BEGIN
10120  244    1   ! 
10130  245    2   ! IF NOT nil( book_up_msg ) THEN
10140  246    3   !   BEGIN
10150  247    4   !   ! 
10160  248    5   !   ! LOCK book_up_msg AS locvar: updates DO
10170  249    6   !   !   WITH locvar DO
10180  250    7   !   !     count:= seconds
10190  251    8   !   ! ;
10200  252    9   !   ! 
10210  253   10   !   ! IF nil( time_out_msg ) THEN
10220  254   11   !   !   BEGIN
10230  255   12   !   !   ! 
10240  256   13   !   !   ! book_up_msg^.u1:= update_req;
10250  257   14   !   !   ! book_up_msg^.u4:= #hc4
10260  258   15   !   !   ! 
10270  259   16   !   !   END
10280  260   17   !   ! ELSE
10290  261   18   !   !   BEGIN
10300  262   19   !   !   ! 
10310  263   20   !   !   ! book_up_msg^.u1:= book_req;
10320  264   21   !   !   ! book_up_msg^.u4:= #hc3;
10330  265   22   !   !   ! 
10340  266   23   !   !   ! push( time_out_msg, book_up_msg )
10350  267   24   !   !   ! 
10360  268   25   !   !   END;
10370  269   26   !   ! 
10380  270   27   !   ! signal( book_up_msg, sem( timeout_sem_no ).s^ )
10390  271   28   !   ! 
10400  272   29   !   END
10410  273   30   !   
10420  274   31   END; (* procedure book_up *)
10430  275         
\f

tsathlst    81.06.23.   20.18.                                                    page    12

11010  276        FUNCTION get_message(
11020  277          VAR
11030  278          msg          : reference;
11040  279          route        ,
11050  280          opc          : byte;
11060  281          noofbytes    : integer;
11070  282          rec_macro    : macroaddr;
11080  283          rec_micro    : integer;
11090  284          upd          : update_range;
11100  285          res          : result_range
11110  286          ): boolean;
11120  287          
11130  288            (* -----------------------------------------------------------------------
11140  289            . Function           : Returns as true with a message, supplied with a fully
11150  290            .                      updated alarmlabel, if one is available on the
11160  291            .                      semaphore, that holds the vacant resources, and if
11170  292            .                      no messages are hanging on the main semaphore.
11180  293            ----------------------------------------------------------------------- *)
11190  294          
11200  295        BEGIN
11210  296    1   ! 
11220  297    2   ! IF passive( sem( ath_sem_no ).w^ ) THEN
11230  298    3   !   BEGIN
11240  299    4   !   ! 
11250  300    5   !   ! sensesem( msg, sem( com_pool ).w^ );
11260  301    6   !   ! 
11270  302    7   !   ! IF NOT nil( msg ) THEN
11280  303    8   !   !   LOCK msg AS locvar: alarmlabel DO
11290  304    9   !   !     WITH msg^, locvar DO
11300  305   10   !   !       BEGIN
11310  306   11   !   !       ! 
11320  307   12   !   !       ! u3:= route;
11330  308   13   !   !       ! u4:= opc;
11340  309   14   !   !       ! 
11350  310   15   !   !       ! no_of_by:= label_size + noofbytes;
11360  311   16   !   !       ! 
11370  312   17   !   !       ! rec.macro:= rec_macro;
11380  313   18   !   !       ! rec.micro:= rec_micro;
11390  314   19   !   !       ! 
11400  315   20   !   !       ! send.macro:= own_address;
11410  316   21   !   !       ! send.micro:= ath_mic_addr;
11420  317   22   !   !       ! 
11430  318   23   !   !       ! update:= upd;
11440  319   24   !   !       ! result:= res;
11450  320   25   !   !       ! 
11460  321   26   !   !       ! main_wait:= idle_main
\f

tsathlst    81.06.23.   20.18.                                                    page    13

11470  322   27   !   !       ! 
11480  323   28   !   !       END
11490  324   29   !   !     ELSE
11500  325   30   !   !       main_wait:= busy_pool
11510  326   31   !   !       
11520  327   32   !   END
11530  328   33   ! ELSE
11540  329   34   !   main_wait:= busy_main
11550  330   35   ! ;
11560  331   36   ! 
11570  332   37   ! get_message:= NOT nil( msg )
11580  333   38   ! 
11590  334   39   END; (* function get_message *)
11600  335         
\f

tsathlst    81.06.23.   20.18.                                                    page    14

12010  336        FUNCTION foreign_nc(
12020  337          node_address    : macroaddr
12030  338          ): boolean;
12040  339          
12050  340            (* -----------------------------------------------------------------------
12060  341            . Function      : Returns as true if - in the alarm net hierarchy - the node
12070  342            .                 in question is a foreign NC or located below a foreign NC.
12080  343            ----------------------------------------------------------------------- *)
12090  344          
12100  345        BEGIN
12110  346    1   ! 
12120  347    2   ! WITH node_address DO
12130  348    3   !   foreign_nc:= ( dc_addr <> own_address.dc_addr )
12140  349    4   !   OR
12150  350    5   !   ( nc_addr <> own_address.nc_addr )
12160  351    6   !   
12170  352    7   END; (* function foreign_nc *)
12180  353        
12190  354         
\f

tsathlst    81.06.23.   20.18.                                                    page    15

13010  355        FUNCTION acting_ac(
13020  356          sac_rac_ix     : sac_rac_range
13030  357          ): alarmnetaddr;
13040  358          
13050  359            (* -----------------------------------------------------------------------
13060  360            . function     : Returns with the alarm net address of the AC that
13070  361            .                for the moment is functioning as receiver/sender at the
13080  362            .                entry in sac_rac table indicated by sac_rac_ix.
13090  363            ----------------------------------------------------------------------- *)
13100  364          
13110  365        BEGIN
13120  366    1   ! 
13130  367    2   ! WITH sac_rac_tbl( sac_rac_ix ).sac_rac_e DO
13140  368    3   !   IF ( substitute_ac_addr <> empty_addr ) THEN
13150  369    4   !     acting_ac:= substitute_ac_addr
13160  370    5   !   ELSE
13170  371    6   !     acting_ac:= usual_ac_addr
13180  372    7   !     
13190  373    8   END; (* function acting_ac *)
13200  374         
\f

tsathlst    81.06.23.   20.18.                                                    page    16

14010  375        FUNCTION search_sac_rac(
14020  376          ac_address      : alarmnetaddr;
14030  377          VAR
14040  378          sac_rac_ix      : sac_rac_range
14050  379          ): boolean;
14060  380          
14070  381            (* -----------------------------------------------------------------------
14080  382            . function      : Searches the sac_rac table for an entry, where
14090  383            .                 ac_address is the functioning AC.
14100  384            ----------------------------------------------------------------------- *)
14110  385          
14120  386        BEGIN
14130  387    1   ! 
14140  388    2   ! sac_rac_ix:= 1;
14150  389    3   ! 
14160  390    4   ! WHILE ( acting_ac( sac_rac_ix ) <> ac_address ) AND ( sac_rac_ix < sac_rac_top ) DO
14170  391    5   !   sac_rac_ix:= sac_rac_ix + 1;
14180  392    6   ! 
14190  393    7   ! search_sac_rac:= acting_ac( sac_rac_ix ) = ac_address
14200  394    8   ! 
14210  395    9   END; (* function search_sac_rac *)
14220  396         
\f

tsathlst    81.06.23.   20.18.                                                    page    17

15010  397          (*------------ atc_tbl-part ------------*)
15020  398        
15030  399        FUNCTION find_atc_tbl_entry(
15040  400          mic_addr        : integer;
15050  401          VAR
15060  402          atc_tbl_ix      : atc_table_range
15070  403          ): boolean;
15080  404          
15090  405            (* ----------------------------------------------------------------------
15100  406            .  This function returns the index of the element with the given micro address.
15110  407            .  If not found, then the index is the place of the new element.
15120  408            .  The search strategy is a binary search in an ordered list of
15130  409            .  elements. The smallest element has the index = 1.
15140  410            .  Error - will not appear.
15150  411            ----------------------------------------------------------------------- *)
15160  412          
15170  413        VAR
15180  414          low, mid        : atc_table_range;
15190  415          
15200  416        BEGIN
15210  417    1   ! 
15220  418    2   ! IF ( atc_tbl_top > 0 ) THEN
15230  419    3   !   BEGIN (* now the search is started *)
15240  420    4   !   ! 
15250  421    5   !   ! low := 1;
15260  422    6   !   ! atc_tbl_ix:= atc_tbl_top;
15270  423    7   !   ! 
15280  424    8   !   ! WHILE ( atc_tbl( atc_tbl_ix ).atc_mic_addr > mic_addr ) AND ( ( atc_tbl_ix - low ) > 0 ) DO
15290  425    9   !   !   BEGIN
15300  426   10   !   !   ! 
15310  427   11   !   !   ! mid:= ( atc_tbl_ix - low ) DIV 2 + low;
15320  428   12   !   !   ! 
15330  429   13   !   !   ! IF ( atc_tbl( mid ).atc_mic_addr < mic_addr ) THEN
15340  430   14   !   !   !   low:= mid + 1
15350  431   15   !   !   ! ELSE
15360  432   16   !   !   !   atc_tbl_ix:= mid
15370  433   17   !   !   !   
15380  434   18   !   !   END;
15390  435   19   !   ! 
15400  436   20   !   ! IF ( atc_tbl( atc_tbl_ix ).atc_mic_addr <> mic_addr ) THEN
15410  437   21   !   !   BEGIN
15420  438   22   !   !   ! 
15430  439   23   !   !   ! find_atc_tbl_entry:= false;
15440  440   24   !   !   ! atc_tbl_ix:= atc_tbl_ix + ord( atc_tbl( atc_tbl_ix ).atc_mic_addr < mic_addr )
15450  441   25   !   !   ! 
15460  442   26   !   !   END
\f

tsathlst    81.06.23.   20.18.                                                    page    18

15470  443   27   !   ! ELSE
15480  444   28   !   !   find_atc_tbl_entry:= true
15490  445   29   !   !   
15500  446   30   !   END
15510  447   31   ! ELSE
15520  448   32   !   BEGIN
15530  449   33   !   ! 
15540  450   34   !   ! find_atc_tbl_entry:= false;
15550  451   35   !   ! atc_tbl_ix:= 1
15560  452   36   !   ! 
15570  453   37   !   END
15580  454   38   !   
15590  455   39   END; (* find_atc_tbl_entry *)
15600  456         
\f

tsathlst    81.06.23.   20.18.                                                    page    19

16010  457        PROCEDURE place_atc_tbl_entry(
16020  458          atc_tbl_ix      : atc_table_range;
16030  459          atc_mic         : integer;
16040  460          pac_index       : sac_rac_range
16050  461          );
16060  462          
16070  463            (* ---------------------------------------------------------------------
16080  464            . Function      : Enters and initialize a new entry and re-arranges the
16090  465            .                 table.
16100  466            .                 Call only if there's room in the table and the position
16110  467            .                 in the table is located.
16120  468            ----------------------------------------------------------------------- *)
16130  469          
16140  470        VAR
16150  471          work_ix         : upper_atc_tbl_index;
16160  472          work_entry      : atc_description;
16170  473          
16180  474        BEGIN
16190  475    1   ! 
16200  476    2   ! work_entry:= atc_tbl( atc_tbl_top + 1 );
16210  477    3   ! 
16220  478    4   ! FOR work_ix:= atc_tbl_top DOWNTO atc_tbl_ix DO
16230  479    5   !   atc_tbl( work_ix + 1 ):= atc_tbl( work_ix );
16240  480    6   ! 
16250  481    7   ! atc_tbl( atc_tbl_ix ):= work_entry;
16260  482    8   ! 
16270  483    9   ! WITH atc_tbl( atc_tbl_ix ) DO
16280  484   10   !   BEGIN
16290  485   11   !   ! 
16300  486   12   !   ! atc_mic_addr := atc_mic;
16310  487   13   !   ! pac_ix := pac_index;
16320  488   14   !   ! traffic_count:= 0;
16330  489   15   !   ! delay:= poll_delay_time;
16340  490   16   !   ! claim_set:= (..);
16350  491   17   !   ! actual_activity:= stop_code;
16360  492   18   !   ! wanted_activity := stop_code
16370  493   19   !   ! 
16380  494   20   !   END;
16390  495   21   ! 
16400  496   22   ! atc_tbl_top:= atc_tbl_top + 1
16410  497   23   ! 
16420  498   24   END (* place_atc_tbl_entry *);
16430  499         
\f

tsathlst    81.06.23.   20.18.                                                    page    20

17010  500        PROCEDURE del_atc_tbl_entry(
17020  501          atc_tbl_ix      : atc_table_range
17030  502          );
17040  503          
17050  504            (* ---------------------------------------------------------------------
17060  505            . Function       : Removes the entry and re-arranges the table.
17070  506            .                  Call only if the entry in question is located.
17080  507            ---------------------------------------------------------------------- *)
17090  508          
17100  509        VAR
17110  510          work_entry      : atc_description;
17120  511          
17130  512        BEGIN
17140  513    1   ! 
17150  514    2   ! IF NOT nil( shadows( atc_tbl( atc_tbl_ix ).shad_ix ) ) THEN
17160  515    3   !   remove( shadows( atc_tbl( atc_tbl_ix ).shad_ix ) );
17170  516    4   ! 
17180  517    5   ! work_entry:= atc_tbl( atc_tbl_ix );
17190  518    6   ! 
17200  519    7   ! WHILE ( atc_tbl_ix < atc_tbl_top ) DO
17210  520    8   !   BEGIN
17220  521    9   !   ! 
17230  522   10   !   ! atc_tbl( atc_tbl_ix ):= atc_tbl( atc_tbl_ix + 1 );
17240  523   11   !   ! atc_tbl_ix:= atc_tbl_ix + 1
17250  524   12   !   ! 
17260  525   13   !   END;
17270  526   14   ! 
17280  527   15   ! atc_tbl( atc_tbl_top ):= work_entry;
17290  528   16   ! atc_tbl_top := atc_tbl_top - 1
17300  529   17   ! 
17310  530   18   END (* del_atc_tbl_entry *);
17320  531         
\f

tsathlst    81.06.23.   20.18.                                                    page    21

18010  532        PROCEDURE decrease_claims(
18020  533          VAR
18030  534          claim_set       : atc_claim_set;
18040  535          msg_kind        : atc_inc_claim
18050  536          );
18060  537          
18070  538            (* -----------------------------------------------------------------------
18080  539            ----------------------------------------------------------------------- *)
18090  540          
18100  541        BEGIN
18110  542    1   ! 
18120  543    2   ! IF msg_kind IN claim_set THEN
18130  544    3   !   BEGIN
18140  545    4   !   ! 
18150  546    5   !   ! claim_set:= claim_set - (.msg_kind.);
18160  547    6   !   ! resource_claims:= resource_claims - 1
18170  548    7   !   ! 
18180  549    8   !   END
18190  550    9   !   
18200  551   10   END; (* procedure decrease_claims *)
18210  552         
\f

tsathlst    81.06.23.   20.18.                                                    page    22

19010  553        PROCEDURE increase_claims(
19020  554          first_ix        ,
19030  555          last_ix         : atc_table_range;
19040  556          msg_kind        : atc_inc_claim
19050  557          );
19060  558          
19070  559            (* -----------------------------------------------------------------------
19080  560            ----------------------------------------------------------------------- *)
19090  561          
19100  562        BEGIN
19110  563    1   ! 
19120  564    2   ! FOR first_ix:= first_ix TO last_ix DO
19130  565    3   !   WITH atc_tbl( first_ix ) DO
19140  566    4   !     IF NOT ( msg_kind IN claim_set ) THEN
19150  567    5   !       BEGIN
19160  568    6   !       ! 
19170  569    7   !       ! claim_set:= claim_set + (.msg_kind.);
19180  570    8   !       ! resource_claims:= resource_claims + 1
19190  571    9   !       ! 
19200  572   10   !       END
19210  573   11   ! ;
19220  574   12   ! 
19230  575   13   ! IF ( msg_kind > claim_level ) THEN
19240  576   14   !   claim_level:= msg_kind
19250  577   15   !   
19260  578   16   END; (* procedure increase_claims *)
19270  579         
\f

tsathlst    81.06.23.   20.18.                                                    page    23

20010  580        PROCEDURE atc_stop_poll(
20020  581          first_ix        : atc_table_range;
20030  582          last_ix         : upper_atc_tbl_index
20040  583          );
20050  584          
20060  585            (* -----------------------------------------------------------------------
20070  586            ----------------------------------------------------------------------- *)
20080  587          
20090  588        VAR
20100  589          msg             : reference;
20110  590          
20120  591        BEGIN
20130  592    1   ! 
20140  593    2   ! IF ( first_ix <= last_ix ) THEN
20150  594    3   !   REPEAT
20160  595    4   !   ! 
20170  596    5   !   ! WITH atc_tbl( first_ix ), sac_rac_tbl( pac_ix ) DO
20180  597    6   !   !   IF ( disconnected AND ( actual_activity = start_code ) )
20190  598    7   !   !     OR
20200  599    8   !   !     ( dc_disconnect AND ( actual_activity = service_code ) ) THEN
20210  600    9   !   !     IF get_message( msg, netc_route1, #h90, 0,
20220  601   10   !   !       own_address, atc_mic_addr, stop_code, accepted ) THEN
20230  602   11   !   !       BEGIN
20240  603   12   !   !       ! 
20250  604   13   !   !       ! signal( msg, sem( ts_vect_ix ).s^ );
20260  605   14   !   !       ! 
20270  606   15   !   !       ! decrease_claims( claim_set, msg_0900_stop );
20280  607   16   !   !       ! 
20290  608   17   !   !       ! first_ix:= ( first_ix MOD last_ix ) + 1
20300  609   18   !   !       ! 
20310  610   19   !   !       END
20320  611   20   !   !     ELSE
20330  612   21   !   !       increase_claims( first_ix, last_ix, msg_0900_stop )
20340  613   22   !   !       
20350  614   23   !   UNTIL ( first_ix = 1 ) OR ( main_wait <> idle_main )
20360  615   24   !   
20370  616   25   END; (* procedure atc_stop_poll *)
20380  617         
\f

tsathlst    81.06.23.   20.18.                                                    page    24

21010  618        PROCEDURE atc_start_poll(
21020  619          first_ix        : atc_table_range;
21030  620          last_ix         : upper_atc_tbl_index
21040  621          );
21050  622          
21060  623            (* -----------------------------------------------------------------------
21070  624            ----------------------------------------------------------------------- *)
21080  625          
21090  626        VAR
21100  627          msg          : reference;
21110  628          
21120  629        BEGIN
21130  630    1   ! 
21140  631    2   ! IF ( first_ix <= last_ix ) THEN
21150  632    3   !   REPEAT
21160  633    4   !   ! 
21170  634    5   !   ! WITH atc_tbl( first_ix ), sac_rac_tbl( pac_ix ) DO
21180  635    6   !   !   IF ( actual_activity <> break_code ) THEN
21190  636    7   !   !     IF ( actual_activity <> wanted_activity ) THEN
21200  637    8   !   !       IF ( ( NOT disconnected ) AND ( wanted_activity = start_code ) )
21210  638    9   !   !         OR
21220  639   10   !   !         ( ( NOT dc_disconnect ) AND ( wanted_activity = service_code ) ) THEN
21230  640   11   !   !         IF get_message( msg, netc_route1, #h90, 4, own_address, atc_mic_addr,
21240  641   12   !   !           wanted_activity, accepted ) THEN
21250  642   13   !   !           BEGIN
21260  643   14   !   !           ! 
21270  644   15   !   !           ! LOCK msg AS locvar: al_form_0900 DO
21280  645   16   !   !           !   WITH locvar DO
21290  646   17   !   !           !     BEGIN
21300  647   18   !   !           !     ! 
21310  648   19   !   !           !     ! t_e_c_init:= 0;
21320  649   20   !   !           !     ! frequence:= delay
21330  650   21   !   !           !     ! 
21340  651   22   !   !           !     END
21350  652   23   !   !           ! ;
21360  653   24   !   !           ! 
21370  654   25   !   !           ! signal( msg, sem( ts_vect_ix ).s^ );
21380  655   26   !   !           ! 
21390  656   27   !   !           ! decrease_claims( claim_set, msg_0900_start );
21400  657   28   !   !           ! 
21410  658   29   !   !           ! first_ix:= ( first_ix MOD last_ix ) + 1
21420  659   30   !   !           ! 
21430  660   31   !   !           END
21440  661   32   !   !         ELSE
21450  662   33   !   !           increase_claims( first_ix, last_ix, msg_0900_start )
21460  663   34   !   !           
\f

tsathlst    81.06.23.   20.18.                                                    page    25

21470  664   35   !   UNTIL ( first_ix = 1 ) OR ( main_wait <> idle_main )
21480  665   36   !   
21490  666   37   END; (* procedure atc_start_poll *)
21500  667         
\f

tsathlst    81.06.23.   20.18.                                                    page    26

22010  668        PROCEDURE atc_supervise;
22020  669          
22030  670            (* -----------------------------------------------------------------------
22040  671            ----------------------------------------------------------------------- *)
22050  672          
22060  673        VAR
22070  674          msg            : reference;
22080  675          
22090  676        BEGIN
22100  677    1   ! 
22110  678    2   ! IF ( atc_tbl_top > 0 ) THEN
22120  679    3   !   BEGIN
22130  680    4   !   ! 
22140  681    5   !   ! atc_tbl_ix:= 1;
22150  682    6   !   ! 
22160  683    7   !   ! REPEAT
22170  684    8   !   ! ! 
22180  685    9   !   ! ! WITH atc_tbl( atc_tbl_ix ) DO
22190  686   10   !   ! !   IF ( actual_activity <> break_code ) THEN
22200  687   11   !   ! !     BEGIN
22210  688   12   !   ! !     ! 
22220  689   13   !   ! !     ! IF ( traffic_count > 0 ) THEN (* - Traffic since the last test - *)
22230  690   14   !   ! !     !   traffic_count:= 0
22240  691   15   !   ! !     ! ELSE
22250  692   16   !   ! !     !   IF ( traffic_count < 0 ) THEN
22260  693   17   !   ! !     !     BEGIN (* - No reaction on the last node test - *)
22270  694   18   !   ! !     !     ! 
22280  695   19   !   ! !     !     END
22290  696   20   !   ! !     !   ELSE
22300  697   21   !   ! !     !     BEGIN (* - No traffic since the last node test. Node test the ATC - *)
22310  698   22   !   ! !     !     ! 
22320  699   23   !   ! !     !     ! traffic_count:= -1;
22330  700   24   !   ! !     !     ! 
22340  701   25   !   ! !     !     ! IF get_message( msg, netc_route1, #hc0, 0,
22350  702   26   !   ! !     !     !   own_address, atc_mic_addr, read_code, accepted ) THEN
22360  703   27   !   ! !     !     !   BEGIN
22370  704   28   !   ! !     !     !   ! 
22380  705   29   !   ! !     !     !   ! signal( msg, sem( ts_vect_ix ).s^ );
22390  706   30   !   ! !     !     !   ! 
22400  707   31   !   ! !     !     !   ! decrease_claims( claim_set, msg_1200 );
22410  708   32   !   ! !     !     !   ! 
22420  709   33   !   ! !     !     !   ! atc_tbl_ix:= ( atc_tbl_ix MOD atc_tbl_top ) + 1
22430  710   34   !   ! !     !     !   ! 
22440  711   35   !   ! !     !     !   END
22450  712   36   !   ! !     !     ! ELSE
22460  713   37   !   ! !     !     !   increase_claims( atc_tbl_ix, atc_tbl_top, msg_1200 )
\f

tsathlst    81.06.23.   20.18.                                                    page    27

22470  714   38   !   ! !     !     !   
22480  715   39   !   ! !     !     END
22490  716   40   !   ! !     !     
22500  717   41   !   ! !     END
22510  718   42   !   ! !     
22520  719   43   !   ! UNTIL ( atc_tbl_ix = 1 ) OR ( main_wait <> idle_main )
22530  720   44   !   ! 
22540  721   45   !   END
22550  722   46   !   
22560  723   47   END; (* procedure atc_supervise *)
22570  724         
\f

tsathlst    81.06.23.   20.18.                                                    page    28

23010  725        PROCEDURE ac_check_connection(
23020  726          sac_rac_ix     : sac_rac_range
23030  727          );
23040  728          
23050  729            (* -----------------------------------------------------------------------
23060  730            . Function     : Signals a check of the connection to an disconnected AC
23070  731            .                if there is a vacant resource.
23080  732            ----------------------------------------------------------------------- *)
23090  733          
23100  734        VAR
23110  735          msg            : reference;
23120  736          
23130  737        BEGIN
23140  738    1   ! 
23150  739    2   ! WITH sac_rac_tbl( sac_rac_ix ) DO
23160  740    3   !   IF disconnected THEN
23170  741    4   !     IF get_message( msg, at_route, #hc8, 0,
23180  742    5   !       acting_ac( sac_rac_ix ).macro, acting_ac( sac_rac_ix ).micro, read_code, accepted ) THEN
23190  743    6   !       signal( msg, sem( tssup_sem_no ).s^ )
23200  744    7   !       
23210  745    8   END; (* procedure ac_check_connection *)
23220  746         
\f

tsathlst    81.06.23.   20.18.                                                    page    29

24010  747        BEGIN
24020  748    1   !   (*------------ main program ------------*)
24030  749    2   ! 
24040  750    3   ! testopen( z, own.incname, op_sem );
24050  751    4   ! testout( z, version, ts_env_vers );
24060  752    5   ! 
24070  753    6   !   (*------------ initialisation ------------*)
24080  754    7   ! 
24090  755    8   ! FOR atc_tbl_ix:= 1 TO atc_tbl_lth DO
24100  756    9   !   WITH atc_tbl( atc_tbl_ix ) DO
24110  757   10   !     BEGIN
24120  758   11   !     ! 
24130  759   12   !     ! shad_ix:= atc_tbl_ix;
24140  760   13   !     ! ts_vect_ix:= atc_sem_no + 2 * ( atc_tbl_ix - 1 )
24150  761   14   !     ! 
24160  762   15   !     END;
24170  763   16   ! 
24180  764   17   ! alloc( book_up_msg, book_up_pool, sem( ath_sem_no ).s^ );
24190  765   18   ! 
24200  766   19   ! WITH book_up_msg^ DO
24210  767   20   !   u3:= netc_route1;
24220  768   21   ! 
24230  769   22   ! LOCK book_up_msg AS locvar: updates DO
24240  770   23   !   WITH locvar DO
24250  771   24   !     object:= ath_mic_addr;
24260  772   25   ! 
24270  773   26   ! alloc( time_out_msg, time_out_pool, sem( ath_sem_no ).s^ );
24280  774   27   ! 
24290  775   28   ! WITH time_out_msg^ DO
24300  776   29   !   BEGIN
24310  777   30   !   ! 
24320  778   31   !   ! u1:= book_req;
24330  779   32   !   ! u3:= netc_route1;
24340  780   33   !   ! u4:= #hc2
24350  781   34   !   ! 
24360  782   35   !   END;
24370  783   36   ! 
24380  784   37   ! LOCK time_out_msg AS locvar: integer DO
24390  785   38   !   locvar:= ath_mic_addr;
24400  786   39   ! 
24410  787   40   ! IF ( link( "atconnector ", atconnector ) = accepted ) THEN
24420  788   41   !   book_up( time_out_msg, book_up_msg, node_test_freq );
24430  789   42   !  
\f

tsathlst    81.06.23.   20.18.                                                    page    30

25010  790   43   ! REPEAT (* ......................... forever .............................. *)
25020  791   44   ! ! 
25030  792   45   ! ! 
25040  793   46   ! ! REPEAT
25050  794   47   ! ! ! 
25060  795   48   ! ! ! CASE main_wait OF
25070  796   49   ! ! ! ! 
25080  797   50   ! ! ! ! idle_main,
25090  798   51   ! ! ! ! busy_main:
25100  799   52   ! ! ! !   wait( main_msg, sem( ath_sem_no ).w^ )
25110  800   53   ! ! ! ! ;
25120  801   54   ! ! ! ! 
25130  802   55   ! ! ! ! busy_pool:
25140  803   56   ! ! ! !   CASE waitsd( main_msg, sem( ath_sem_no ).w^, wait_sem_delay ) OF
25150  804   57   ! ! ! !   ! 
25160  805   58   ! ! ! !   ! a_semaphore:
25170  806   59   ! ! ! !   ! ;
25180  807   60   ! ! ! !   ! 
25190  808   61   ! ! ! !   ! a_delay:
25200  809   62   ! ! ! !   ! ;
25210  810   63   ! ! ! !   ! 
25220  811   64   ! ! ! !   ! OTHERWISE
25230  812   65   ! ! ! !   END
25240  813   66   ! ! ! ! ;
25250  814   67   ! ! ! ! 
25260  815   68   ! ! ! ! OTHERWISE
25270  816   69   ! ! ! END
25280  817   70   ! ! ! 
25290  818   71   ! ! UNTIL NOT nil( main_msg )
25300  819   72   ! ! ;
25310  820   73   ! ! 
25320  821   74   ! ! result_code:= accepted;
25330  822   75   ! ! 
25340  823   76   ! !   (*q if test then testout(z,"main_msg   u3:",main_msg^.u3);
25350  824   77   ! !   if test then testout(z,"         u4:",main_msg^.u4); q*)
25360  825   78   ! ! 
25370  826   79   ! ! WITH main_msg^ DO
25380  827   80   ! !   CASE u3 (* this is the routings information *) OF
25390  828   81   ! !   !   (* And then we handle the message depending on the receiver address.
25400  829   82   ! !   !   *)
25410  830   83   ! !   ! 
25420  831   84   ! !   ! dummy_route:
25430  832   85   ! !   !   return( main_msg )
25440  833   86   ! !   ! ;
25450  834   87   ! !   !  
\f

tsathlst    81.06.23.   20.18.                                                    page    31

26010  835   88   ! !   ! at_route: (* Message from an ATC to be routed through ATH *)
26020  836   89   ! !   !   BEGIN
26030  837   90   ! !   !   ! 
26040  838   91   ! !   !   !   (*q if test then testout(z,"from an atc ",0); q*)
26050  839   92   ! !   !   ! 
26060  840   93   ! !   !   ! CASE u4 OF (* Operation code *)
26070  841   94   ! !   !   ! ! 
26080  842   95   ! !   !   ! !   (* 00.01 - Log to PAC. Enter AC net addresses *)
26090  843   96   ! !   !   ! ! #h01:
26100  844   97   ! !   !   ! !   LOCK main_msg AS locvar: al_form_0001 DO
26110  845   98   ! !   !   ! !     WITH locvar, al_label, aac_address DO
26120  846   99   ! !   !   ! !       IF ( 0 < ts_add( 0 ) ) AND ( ts_add( 0 ) <= sac_rac_top ) THEN
26130  847  100   ! !   !   ! !         BEGIN
26140  848  101   ! !   !   ! !         ! 
26150  849  102   ! !   !   ! !         ! rec:= acting_ac( ts_add( 0 ) );
26160  850  103   ! !   !   ! !         ! 
26170  851  104   ! !   !   ! !         ! IF ( 0 < micro ) AND ( micro <= sac_rac_top ) THEN
26180  852  105   ! !   !   ! !         !   aac_address:= acting_ac( micro )
26190  853  106   ! !   !   ! !         !   
26200  854  107   ! !   !   ! !         END
26210  855  108   ! !   !   ! !       ELSE
26220  856  109   ! !   !   ! !         result_code:= unknown_receiver
26230  857  110   ! !   !   ! ! ;
26240  858  111   ! !   !   ! ! 
26250  859  112   ! !   !   ! !   (* 03.00 *)
26260  860  113   ! !   !   ! !   (* 03.01 *)
26270  861  114   ! !   !   ! !   (* 03.02 - Alarms. Enter AC address *)
26280  862  115   ! !   !   ! ! #h30..#h32:
26290  863  116   ! !   !   ! !   LOCK main_msg AS locvar: alarmlabel DO
26300  864  117   ! !   !   ! !     WITH locvar DO
26310  865  118   ! !   !   ! !       BEGIN
26320  866  119   ! !   !   ! !       ! 
26330  867  120   ! !   !   ! !       ! IF ( ( 0 < ts_add( 0 ) ) AND ( ts_add( 0 ) <= sac_rac_top ) ) THEN
26340  868  121   ! !   !   ! !       !   rec:= acting_ac( ts_add( 0 ) )
26350  869  122   ! !   !   ! !       ! ELSE
26360  870  123   ! !   !   ! !       !   result_code:= unknown_receiver;
26370  871  124   ! !   !   ! !       ! 
26380  872  125   ! !   !   ! !       !   (* inconsistency between ac_address table in ATC and sac_rac_table
26390  873  126   ! !   !   ! !       !   - maybe because of a time dependent event *)
26400  874  127   ! !   !   ! !       ! 
26410  875  128   ! !   !   ! !       END
26420  876  129   ! !   !   ! ! ;
26430  877  130   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    32

27010  878  131   ! !   !   ! !   (* 09.01 - Receipt for change of poll activity. Actual activity is modified of ATC. *)
27020  879  132   ! !   !   ! ! #h91:
27030  880  133   ! !   !   ! !   LOCK main_msg AS locvar: al_form_0900 DO
27040  881  134   ! !   !   ! !     WITH locvar, al_label DO
27050  882  135   ! !   !   ! !       IF find_atc_tbl_entry( send.micro, atc_tbl_ix ) THEN
27060  883  136   ! !   !   ! !         IF ( result = accepted ) THEN
27070  884  137   ! !   !   ! !           WITH atc_tbl( atc_tbl_ix ), sac_rac_tbl( pac_ix ) DO
27080  885  138   ! !   !   ! !             BEGIN
27090  886  139   ! !   !   ! !             ! 
27100  887  140   ! !   !   ! !             ! wanted_activity:= update;
27110  888  141   ! !   !   ! !             ! 
27120  889  142   ! !   !   ! !             ! IF disconnected OR dc_disconnect THEN
27130  890  143   ! !   !   ! !             !   atc_stop_poll( atc_tbl_ix, atc_tbl_ix )
27140  891  144   ! !   !   ! !             !   
27150  892  145   ! !   !   ! !             END
27160  893  146   ! !   !   ! !           ELSE
27170  894  147   ! !   !   ! !           ELSE
27180  895  148   ! !   !   ! !             result_code:= unknown_sender
27190  896  149   ! !   !   ! ! ;
27200  897  150   ! !   !   ! ! 
27210  898  151   ! !   !   ! ! OTHERWISE
27220  899  152   ! !   !   ! !   (* Other operation code are passed uninspected and unaltered *)
27230  900  153   ! !   !   ! ! 
27240  901  154   ! !   !   ! END (* case u4 *)
27250  902  155   ! !   !   ! ;
27260  903  156   ! !   !   ! 
27270  904  157   ! !   !   ! IF ( result_code <> accepted ) THEN
27280  905  158   ! !   !   !   reject_message( main_msg,
27290  906  159   ! !   !   !   sem( tssup_sem_no ).s, route_vct( u3 ), own_address, ath_mic_addr, result_code )
27300  907  160   ! !   !   ! ELSE
27310  908  161   ! !   !   !   signal( main_msg, sem( tssup_sem_no ).s^ )
27320  909  162   ! !   !   !   
27330  910  163   ! !   !   END (* Message from an ATC *)
27340  911  164   ! !   ! ;
27350  912  165   ! !   !  
\f

tsathlst    81.06.23.   20.18.                                                    page    33

28010  913  166   ! !   ! at_route1: (* Message from ATC to ATH *)
28020  914  167   ! !   !   BEGIN
28030  915  168   ! !   !   ! 
28040  916  169   ! !   !   ! CASE u4 OF (* Operation code *)
28050  917  170   ! !   !   ! ! 
28060  918  171   ! !   !   ! !   (* 01.02 - Rejected message *)
28070  919  172   ! !   !   ! ! #h12:
28080  920  173   ! !   !   ! !   testout( z, "garb return ", u3 )
28090  921  174   ! !   !   ! ! ;
28100  922  175   ! !   !   ! ! 
28110  923  176   ! !   !   ! ! 
28120  924  177   ! !   !   ! !   (* 04.05 - Receipt for group control. Dropped unless ATC says serious error *)
28130  925  178   ! !   !   ! ! #h45:
28140  926  179   ! !   !   ! !   LOCK main_msg AS locvar: alarmlabel DO
28150  927  180   ! !   !   ! !     WITH locvar DO
28160  928  181   ! !   !   ! !       IF NOT ( result IN (.accepted, not_steering, unknown_sender.) ) THEN
28170  929  182   ! !   !   ! !         BEGIN
28180  930  183   ! !   !   ! !         ! 
28190  931  184   ! !   !   ! !         ! result_code:= result;
28200  932  185   ! !   !   ! !         ! 
28210  933  186   ! !   !   ! !         ! LOCK working_0404_msg AS a_label: alarmlabel DO
28220  934  187   ! !   !   ! !         !   rec:= a_label.send
28230  935  188   ! !   !   ! !         !   
28240  936  189   ! !   !   ! !         END
28250  937  190   ! !   !   ! ! ;
28260  938  191   ! !   !   ! ! 
28270  939  192   ! !   !   ! !   (* 09.01 - Receipt for modification of connector state. *)
28280  940  193   ! !   !   ! ! #h91:
28290  941  194   ! !   !   ! ! ;
28300  942  195   ! !   !   ! ! 
28310  943  196   ! !   !   ! !   (* 12.15 - Receipt for completion of break routine. *)
28320  944  197   ! !   !   ! ! #hcf:
28330  945  198   ! !   !   ! !   LOCK main_msg AS locvar: alarmlabel DO
28340  946  199   ! !   !   ! !     WITH locvar, send DO
28350  947  200   ! !   !   ! !       IF find_atc_tbl_entry( micro, atc_tbl_ix ) THEN
28360  948  201   ! !   !   ! !         BEGIN
28370  949  202   ! !   !   ! !         ! 
28380  950  203   ! !   !   ! !         ! del_atc_tbl_entry( atc_tbl_ix );
28390  951  204   ! !   !   ! !         ! 
28400  952  205   ! !   !   ! !         END
28410  953  206   ! !   !   ! ! ;
28420  954  207   ! !   !   ! ! 
28430  955  208   ! !   !   ! ! 
28440  956  209   ! !   !   ! ! OTHERWISE
28450  957  210   ! !   !   ! ! testout( z, "at_route1   ", u4 )
28460  958  211   ! !   !   ! END
\f

tsathlst    81.06.23.   20.18.                                                    page    34

28470  959  212   ! !   !   ! ;
28480  960  213   ! !   !   ! 
28490  961  214   ! !   !   ! IF ( result_code <> accepted ) THEN
28500  962  215   ! !   !   !   signal( main_msg, sem( tssup_sem_no ).s^ )
28510  963  216   ! !   !   ! ELSE
28520  964  217   ! !   !   !   return( main_msg )
28530  965  218   ! !   !   !   
28540  966  219   ! !   !   END
28550  967  220   ! !   ! ;
28560  968  221   ! !   !  
\f

tsathlst    81.06.23.   20.18.                                                    page    35

29010  969  222   ! !   ! netc_route1: (* Message from TSS or from time out process to ATH *)
29020  970  223   ! !   !   BEGIN
29030  971  224   ! !   !   ! 
29040  972  225   ! !   !   ! CASE u4 OF (* Operation code *)
29050  973  226   ! !   !   ! ! 
29060  974  227   ! !   !   ! !   (* 01.02 - Rejected message *)
29070  975  228   ! !   !   ! ! #h12:
29080  976  229   ! !   !   ! !   testout( z, "garb return ", u3 );
29090  977  230   ! !   !   ! ! ;
29100  978  231   ! !   !   ! ! 
29110  979  232   ! !   !   ! !   (* 02.00 - Broadcast. DC fall-out. *)
29120  980  233   ! !   !   ! ! #h20:
29130  981  234   ! !   !   ! !   LOCK main_msg AS locvar: al_form_020_ DO
29140  982  235   ! !   !   ! !     WITH locvar, al_net_addr, macro DO
29150  983  236   ! !   !   ! !       IF ( dc_addr <> own_address.dc_addr ) THEN
29160  984  237   ! !   !   ! !         BEGIN (* - Foreign DC - *)
29170  985  238   ! !   !   ! !         ! 
29180  986  239   ! !   !   ! !         ! IF ( sac_rac_top > 0 ) THEN
29190  987  240   ! !   !   ! !         !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
29200  988  241   ! !   !   ! !         !     IF ( acting_ac( sac_rac_ix ).macro.dc_addr <> own_address.dc_addr ) THEN
29210  989  242   ! !   !   ! !         !       sac_rac_tbl( sac_rac_ix ).disconnected:= true
29220  990  243   ! !   !   ! !         ! ;
29230  991  244   ! !   !   ! !         ! 
29240  992  245   ! !   !   ! !         ! atc_stop_poll( 1, atc_tbl_top )
29250  993  246   ! !   !   ! !         ! 
29260  994  247   ! !   !   ! !         END
29270  995  248   ! !   !   ! !       ELSE
29280  996  249   ! !   !   ! !         BEGIN (* - Own DC - *)
29290  997  250   ! !   !   ! !         ! 
29300  998  251   ! !   !   ! !         ! dc_disconnect:= true;
29310  999  252   ! !   !   ! !         ! 
29320 1000  253   ! !   !   ! !         ! IF ( sac_rac_top > 0 ) THEN
29330 1001  254   ! !   !   ! !         !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
29340 1002  255   ! !   !   ! !         !     IF foreign_nc( acting_ac( sac_rac_ix ).macro ) THEN
29350 1003  256   ! !   !   ! !         !       sac_rac_tbl( sac_rac_ix ).disconnected:= true
29360 1004  257   ! !   !   ! !         ! ;
29370 1005  258   ! !   !   ! !         ! 
29380 1006  259   ! !   !   ! !         ! atc_stop_poll( 1, atc_tbl_top )
29390 1007  260   ! !   !   ! !         ! 
29400 1008  261   ! !   !   ! !         END
29410 1009  262   ! !   !   ! ! ;
29420 1010  263   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    36

30010 1011  264   ! !   !   ! !   (* 02.01 - Broadcast. DC re-established. *)
30020 1012  265   ! !   !   ! ! #h21:
30030 1013  266   ! !   !   ! !   LOCK main_msg AS locvar: al_form_020_ DO
30040 1014  267   ! !   !   ! !     WITH locvar, al_net_addr, macro DO
30050 1015  268   ! !   !   ! !       IF ( dc_addr <> own_address.dc_addr ) THEN
30060 1016  269   ! !   !   ! !         BEGIN (* - Foreign DC - *)
30070 1017  270   ! !   !   ! !         ! 
30080 1018  271   ! !   !   ! !         ! IF ( sac_rac_top > 0 ) THEN
30090 1019  272   ! !   !   ! !         !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
30100 1020  273   ! !   !   ! !         !     IF ( acting_ac( sac_rac_ix ).macro.dc_addr <> own_address.dc_addr ) THEN
30110 1021  274   ! !   !   ! !         !       ac_check_connection( sac_rac_ix )
30120 1022  275   ! !   !   ! !         !       
30130 1023  276   ! !   !   ! !         END
30140 1024  277   ! !   !   ! !       ELSE
30150 1025  278   ! !   !   ! !         BEGIN (* - Own DC - *)
30160 1026  279   ! !   !   ! !         ! 
30170 1027  280   ! !   !   ! !         ! IF dc_disconnect THEN
30180 1028  281   ! !   !   ! !         !   IF get_message( aux_msg, at_route, #hc8, 0,
30190 1029  282   ! !   !   ! !         !     dc_address, dc_erh_mic_addr, read_code, accepted ) THEN
30200 1030  283   ! !   !   ! !         !     signal( aux_msg, sem( tssup_sem_no ).s^ )
30210 1031  284   ! !   !   ! !         ! ;
30220 1032  285   ! !   !   ! !         ! 
30230 1033  286   ! !   !   ! !         ! IF ( sac_rac_top > 0 ) THEN
30240 1034  287   ! !   !   ! !         !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
30250 1035  288   ! !   !   ! !         !     IF foreign_nc( acting_ac( sac_rac_ix ).macro ) THEN
30260 1036  289   ! !   !   ! !         !       ac_check_connection( sac_rac_ix )
30270 1037  290   ! !   !   ! !         !       
30280 1038  291   ! !   !   ! !         END
30290 1039  292   ! !   !   ! ! ;
30300 1040  293   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    37

31010 1041  294   ! !   !   ! !   (* 02.02 - Broadcast. NC fall-out. *)
31020 1042  295   ! !   !   ! ! #h22:
31030 1043  296   ! !   !   ! !   LOCK main_msg AS locvar: al_form_020_ DO
31040 1044  297   ! !   !   ! !     WITH locvar, al_net_addr, macro DO
31050 1045  298   ! !   !   ! !       IF foreign_nc( macro ) THEN
31060 1046  299   ! !   !   ! !         BEGIN (* - Foreign NC - *)
31070 1047  300   ! !   !   ! !         ! 
31080 1048  301   ! !   !   ! !         ! IF ( sac_rac_top > 0 ) THEN
31090 1049  302   ! !   !   ! !         !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
31100 1050  303   ! !   !   ! !         !     IF foreign_nc( acting_ac( sac_rac_ix ).macro ) THEN
31110 1051  304   ! !   !   ! !         !       sac_rac_tbl( sac_rac_ix ).disconnected:= true
31120 1052  305   ! !   !   ! !         ! ;
31130 1053  306   ! !   !   ! !         ! 
31140 1054  307   ! !   !   ! !         ! atc_stop_poll( 1, atc_tbl_top )
31150 1055  308   ! !   !   ! !         ! 
31160 1056  309   ! !   !   ! !         END
31170 1057  310   ! !   !   ! !       ELSE
31180 1058  311   ! !   !   ! !         BEGIN (* - Own NC - *)
31190 1059  312   ! !   !   ! !         ! 
31200 1060  313   ! !   !   ! !         ! dc_disconnect:= true;
31210 1061  314   ! !   !   ! !         ! 
31220 1062  315   ! !   !   ! !         ! IF ( sac_rac_top > 0 ) THEN
31230 1063  316   ! !   !   ! !         !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
31240 1064  317   ! !   !   ! !         !     IF ( acting_ac( sac_rac_ix ).macro <> own_address ) THEN
31250 1065  318   ! !   !   ! !         !       sac_rac_tbl( sac_rac_ix ).disconnected:= true
31260 1066  319   ! !   !   ! !         ! ;
31270 1067  320   ! !   !   ! !         ! 
31280 1068  321   ! !   !   ! !         ! atc_stop_poll( 1, atc_tbl_top )
31290 1069  322   ! !   !   ! !         ! 
31300 1070  323   ! !   !   ! !         END
31310 1071  324   ! !   !   ! ! ;
31320 1072  325   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    38

32010 1073  326   ! !   !   ! !   (* 02.03 - Broadcast. NC re-established. *)
32020 1074  327   ! !   !   ! ! #h23:
32030 1075  328   ! !   !   ! !   LOCK main_msg AS locvar: al_form_020_ DO
32040 1076  329   ! !   !   ! !     WITH locvar, al_net_addr, macro DO
32050 1077  330   ! !   !   ! !       IF foreign_nc( macro ) THEN
32060 1078  331   ! !   !   ! !         BEGIN (* - Foreign NC - *)
32070 1079  332   ! !   !   ! !         ! 
32080 1080  333   ! !   !   ! !         ! IF ( sac_rac_top > 0 ) THEN
32090 1081  334   ! !   !   ! !         !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
32100 1082  335   ! !   !   ! !         !     IF foreign_nc( acting_ac( sac_rac_ix ).macro ) THEN
32110 1083  336   ! !   !   ! !         !       ac_check_connection( sac_rac_ix )
32120 1084  337   ! !   !   ! !         !       
32130 1085  338   ! !   !   ! !         END
32140 1086  339   ! !   !   ! !       ELSE
32150 1087  340   ! !   !   ! !         BEGIN (* - Own NC - *)
32160 1088  341   ! !   !   ! !         ! 
32170 1089  342   ! !   !   ! !         ! IF dc_disconnect THEN
32180 1090  343   ! !   !   ! !         !   IF get_message( aux_msg, at_route, #hc8, 0,
32190 1091  344   ! !   !   ! !         !     dc_address, dc_erh_mic_addr, read_code, accepted ) THEN
32200 1092  345   ! !   !   ! !         !     signal( aux_msg, sem( tssup_sem_no ).s^ )
32210 1093  346   ! !   !   ! !         ! ;
32220 1094  347   ! !   !   ! !         ! 
32230 1095  348   ! !   !   ! !         ! IF ( sac_rac_top > 0 ) THEN
32240 1096  349   ! !   !   ! !         !   FOR sac_rac_ix:= 1 TO atc_tbl_top DO
32250 1097  350   ! !   !   ! !         !     IF ( acting_ac( sac_rac_ix ).macro <> own_address ) THEN
32260 1098  351   ! !   !   ! !         !       ac_check_connection( sac_rac_ix )
32270 1099  352   ! !   !   ! !         !       
32280 1100  353   ! !   !   ! !         END
32290 1101  354   ! !   !   ! ! ;
32300 1102  355   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    39

33010 1103  356   ! !   !   ! !   (* 02.04 - Broadcast. TS fall-out. *)
33020 1104  357   ! !   !   ! ! #h24:
33030 1105  358   ! !   !   ! !   LOCK main_msg AS locvar: al_form_020_ DO
33040 1106  359   ! !   !   ! !     WITH locvar, al_net_addr DO
33050 1107  360   ! !   !   ! !       BEGIN
33060 1108  361   ! !   !   ! !       ! 
33070 1109  362   ! !   !   ! !       ! IF ( sac_rac_top > 0 ) THEN
33080 1110  363   ! !   !   ! !       !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
33090 1111  364   ! !   !   ! !       !     IF ( acting_ac( sac_rac_ix ).macro = macro ) THEN
33100 1112  365   ! !   !   ! !       !       sac_rac_tbl( sac_rac_ix ).disconnected:= true
33110 1113  366   ! !   !   ! !       ! ;
33120 1114  367   ! !   !   ! !       ! 
33130 1115  368   ! !   !   ! !       ! atc_stop_poll( 1, atc_tbl_top )
33140 1116  369   ! !   !   ! !       ! 
33150 1117  370   ! !   !   ! !       END
33160 1118  371   ! !   !   ! ! ;
33170 1119  372   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    40

34010 1120  373   ! !   !   ! !   (* 02.05 - Broadcast. TS re-established. *)
34020 1121  374   ! !   !   ! ! #h25:
34030 1122  375   ! !   !   ! !   LOCK main_msg AS locvar: al_form_020_ DO
34040 1123  376   ! !   !   ! !     WITH locvar, al_net_addr DO
34050 1124  377   ! !   !   ! !       BEGIN
34060 1125  378   ! !   !   ! !       ! 
34070 1126  379   ! !   !   ! !       ! IF ( sac_rac_top > 0 ) THEN
34080 1127  380   ! !   !   ! !       !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
34090 1128  381   ! !   !   ! !       !     IF ( acting_ac( sac_rac_ix ).macro = macro ) THEN
34100 1129  382   ! !   !   ! !       !       ac_check_connection( sac_rac_ix )
34110 1130  383   ! !   !   ! !       !       
34120 1131  384   ! !   !   ! !       END
34130 1132  385   ! !   !   ! ! ;
34140 1133  386   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    41

35010 1134  387   ! !   !   ! !   (* 02.06 - Broadcast. AC fall-out. *)
35020 1135  388   ! !   !   ! ! #h26:
35030 1136  389   ! !   !   ! !   BEGIN
35040 1137  390   ! !   !   ! !   ! 
35050 1138  391   ! !   !   ! !   ! LOCK main_msg AS locvar: al_form_020_ DO
35060 1139  392   ! !   !   ! !   !   WITH locvar DO
35070 1140  393   ! !   !   ! !   !     IF ( sac_rac_top > 0 ) THEN
35080 1141  394   ! !   !   ! !   !       FOR sac_rac_ix:= 1 TO sac_rac_top DO
35090 1142  395   ! !   !   ! !   !         IF ( acting_ac( sac_rac_ix ) = al_net_addr ) THEN
35100 1143  396   ! !   !   ! !   !           sac_rac_tbl( sac_rac_ix ).disconnected:= true
35110 1144  397   ! !   !   ! !   ! ;
35120 1145  398   ! !   !   ! !   ! 
35130 1146  399   ! !   !   ! !   ! atc_stop_poll( 1, atc_tbl_top )
35140 1147  400   ! !   !   ! !   ! 
35150 1148  401   ! !   !   ! !   END
35160 1149  402   ! !   !   ! ! ;
35170 1150  403   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    42

36010 1151  404   ! !   !   ! !   (* 02.07 - Broadcast. AC re-established. *)
36020 1152  405   ! !   !   ! ! #h27:
36030 1153  406   ! !   !   ! !   LOCK main_msg AS locvar: al_form_020_ DO
36040 1154  407   ! !   !   ! !     WITH locvar DO
36050 1155  408   ! !   !   ! !       IF ( sac_rac_top > 0 ) THEN
36060 1156  409   ! !   !   ! !         FOR sac_rac_ix:= 1 TO sac_rac_top DO
36070 1157  410   ! !   !   ! !           IF ( acting_ac( sac_rac_ix ) = al_net_addr ) THEN
36080 1158  411   ! !   !   ! !             ac_check_connection( sac_rac_ix )
36090 1159  412   ! !   !   ! ! ;
36100 1160  413   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    43

37010 1161  414   ! !   !   ! !   (* 04.04 - Group control is multiplied by ATH - if the sender is known *)
37020 1162  415   ! !   !   ! ! #h44:
37030 1163  416   ! !   !   ! !   IF atc_tbl_top > 0 THEN
37040 1164  417   ! !   !   ! !     BEGIN
37050 1165  418   ! !   !   ! !     ! 
37060 1166  419   ! !   !   ! !     ! LOCK main_msg AS locvar: al_form_0404 DO
37070 1167  420   ! !   !   ! !     !   WITH locvar, al_label DO
37080 1168  421   ! !   !   ! !     !     IF ( ( no_of_by - 4 ) > 0 ) AND ( ( high_micro - low_micro ) > - 1 ) THEN
37090 1169  422   ! !   !   ! !     !       BEGIN
37100 1170  423   ! !   !   ! !     !       ! 
37110 1171  424   ! !   !   ! !     !       ! IF search_sac_rac( send, sac_rac_ix ) THEN
37120 1172  425   ! !   !   ! !     !       !   ts_add( 0 ):= sac_rac_ix
37130 1173  426   ! !   !   ! !     !       ! ELSE
37140 1174  427   ! !   !   ! !     !       !   result_code:= unknown_sender
37150 1175  428   ! !   !   ! !     !       !   
37160 1176  429   ! !   !   ! !     !       END
37170 1177  430   ! !   !   ! !     !     ELSE
37180 1178  431   ! !   !   ! !     !       result_code:= data_inconsistent;
37190 1179  432   ! !   !   ! !     ! 
37200 1180  433   ! !   !   ! !     ! IF ( result_code = accepted ) THEN
37210 1181  434   ! !   !   ! !     !   signal( main_msg, sem( ath_int1 ).s^ )
37220 1182  435   ! !   !   ! !     !   
37230 1183  436   ! !   !   ! !     END
37240 1184  437   ! !   !   ! !   ELSE
37250 1185  438   ! !   !   ! !     result_code:= unknown_receiver
37260 1186  439   ! !   !   ! ! ;
37270 1187  440   ! !   !   ! ! 
37280 1188  441   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    44

38010 1189  442   ! !   !   ! !   (* 06.00 - Creation of an ATC incarnation *)
38020 1190  443   ! !   !   ! ! #h60:
38030 1191  444   ! !   !   ! !   IF ( atc_tbl_top < atc_tbl_lth ) THEN
38040 1192  445   ! !   !   ! !     BEGIN
38050 1193  446   ! !   !   ! !     ! 
38060 1194  447   ! !   !   ! !     ! LOCK main_msg AS locvar: al_form_0600 DO
38070 1195  448   ! !   !   ! !     !   WITH locvar, al_label, atc_tbl_e DO
38080 1196  449   ! !   !   ! !     !     IF ( send.macro <> dc_address ) THEN
38090 1197  450   ! !   !   ! !     !       result_code:= forbidden
38100 1198  451   ! !   !   ! !     !     ELSE
38110 1199  452   ! !   !   ! !     !       BEGIN
38120 1200  453   ! !   !   ! !     !       ! 
38130 1201  454   ! !   !   ! !     !       ! IF find_atc_tbl_entry( atc_mic, atc_tbl_ix ) THEN
38140 1202  455   ! !   !   ! !     !       !   result_code:= existing_entry
38150 1203  456   ! !   !   ! !     !       ! ELSE
38160 1204  457   ! !   !   ! !     !       !   IF ( pac_ix < 1 ) OR ( sac_rac_top < pac_ix ) THEN
38170 1205  458   ! !   !   ! !     !       !     result_code:= out_of_range
38180 1206  459   ! !   !   ! !     !       !   ELSE
38190 1207  460   ! !   !   ! !     !       !     BEGIN
38200 1208  461   ! !   !   ! !     !       !     ! 
38210 1209  462   ! !   !   ! !     !       !     ! place_atc_tbl_entry( atc_tbl_ix, atc_mic, pac_ix );
38220 1210  463   ! !   !   ! !     !       !     ! 
38230 1211  464   ! !   !   ! !     !       !     !   (* calculate an unambigouos atc_name *)
38240 1212  465   ! !   !   ! !     !       !     ! atc_name:= "atc__       ";
38250 1213  466   ! !   !   ! !     !       !     ! atc_no:= atc_mic;
38260 1214  467   ! !   !   ! !     !       !     ! alfa_pos:= 8;
38270 1215  468   ! !   !   ! !     !       !     ! 
38280 1216  469   ! !   !   ! !     !       !     ! REPEAT
38290 1217  470   ! !   !   ! !     !       !     ! ! 
38300 1218  471   ! !   !   ! !     !       !     ! ! atc_name( alfa_pos ):= chr( atc_no MOD 10 + ord( "0" ) );
38310 1219  472   ! !   !   ! !     !       !     ! ! atc_no:= atc_no DIV 10;
38320 1220  473   ! !   !   ! !     !       !     ! ! alfa_pos:= alfa_pos - 1
38330 1221  474   ! !   !   ! !     !       !     ! ! 
38340 1222  475   ! !   !   ! !     !       !     ! UNTIL ( alfa_pos = 4 );
38350 1223  476   ! !   !   ! !     !       !     ! 
38360 1224  477   ! !   !   ! !     !       !     !   (* Create and start the incarnation *)
38370 1225  478   ! !   !   ! !     !       !     ! WITH atc_tbl( atc_tbl_ix ) DO
38380 1226  479   ! !   !   ! !     !       !     !   result_code:= create(
38390 1227  480   ! !   !   ! !     !       !     !   atc_name                     ,
38400 1228  481   ! !   !   ! !     !       !     !   atconnector(
38410 1229  482   ! !   !   ! !     !       !     !   op_sem                       ,
38420 1230  483   ! !   !   ! !     !       !     !   sem( ts_vect_ix )            ,
38430 1231  484   ! !   !   ! !     !       !     !   sem( ts_vect_ix + 1 )        ,
38440 1232  485   ! !   !   ! !     !       !     !   sem( ath_sem_no ).s          ,
38450 1233  486   ! !   !   ! !     !       !     !   sem( lam_no + lam_sem_no ).s ,
38460 1234  487   ! !   !   ! !     !       !     !   sem( com_pool ).w            ,
\f

tsathlst    81.06.23.   20.18.                                                    page    45

38470 1235  488   ! !   !   ! !     !       !     !   actual_activity              ,
38480 1236  489   ! !   !   ! !     !       !     !   delay                        ,
38490 1237  490   ! !   !   ! !     !       !     !   node_test_freq               ,
38500 1238  491   ! !   !   ! !     !       !     !   traffic_test_freq            ,
38510 1239  492   ! !   !   ! !     !       !     !   dc_address                   ,
38520 1240  493   ! !   !   ! !     !       !     !   own_address                  ,
38530 1241  494   ! !   !   ! !     !       !     !   atc_mic                      ,
38540 1242  495   ! !   !   ! !     !       !     !   port_no
38550 1243  496   ! !   !   ! !     !       !     !   )                            ,
38560 1244  497   ! !   !   ! !     !       !     !   shadows( shad_ix )           ,
38570 1245  498   ! !   !   ! !     !       !     !   atc_size
38580 1246  499   ! !   !   ! !     !       !     !   );
38590 1247  500   ! !   !   ! !     !       !     ! 
38600 1248  501   ! !   !   ! !     !       !     ! IF ( result_code = accepted ) THEN
38610 1249  502   ! !   !   ! !     !       !     !   start( shadows( atc_tbl( atc_tbl_ix ).shad_ix ), atc_pri )
38620 1250  503   ! !   !   ! !     !       !     ! ELSE
38630 1251  504   ! !   !   ! !     !       !     !   BEGIN
38640 1252  505   ! !   !   ! !     !       !     !   ! 
38650 1253  506   ! !   !   ! !     !       !     !   ! del_atc_tbl_entry( atc_tbl_ix );
38660 1254  507   ! !   !   ! !     !       !     !   ! result_code:= breaked
38670 1255  508   ! !   !   ! !     !       !     !   ! 
38680 1256  509   ! !   !   ! !     !       !     !   END
38690 1257  510   ! !   !   ! !     !       !     !   
38700 1258  511   ! !   !   ! !     !       !     END
38710 1259  512   ! !   !   ! !     !       !     
38720 1260  513   ! !   !   ! !     !       END
38730 1261  514   ! !   !   ! !     !       
38740 1262  515   ! !   !   ! !     END
38750 1263  516   ! !   !   ! !   ELSE
38760 1264  517   ! !   !   ! !     result_code:= no_room
38770 1265  518   ! !   !   ! ! ;
38780 1266  519   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    46

39010 1267  520   ! !   !   ! !   (* 06.08 - Remove ATC incarnation. *)
39020 1268  521   ! !   !   ! ! #h68:
39030 1269  522   ! !   !   ! !   LOCK main_msg AS locvar: al_form_0608 DO
39040 1270  523   ! !   !   ! !     WITH locvar, al_label, atc_tbl_e DO
39050 1271  524   ! !   !   ! !       IF ( send.macro <> dc_address ) THEN
39060 1272  525   ! !   !   ! !         result:= forbidden
39070 1273  526   ! !   !   ! !       ELSE
39080 1274  527   ! !   !   ! !         IF find_atc_tbl_entry( atc_mic, atc_tbl_ix ) THEN
39090 1275  528   ! !   !   ! !           del_atc_tbl_entry( atc_tbl_ix )
39100 1276  529   ! !   !   ! !         ELSE
39110 1277  530   ! !   !   ! !           result_code:= not_found
39120 1278  531   ! !   !   ! ! ;
39130 1279  532   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    47

40010 1280  533   ! !   !   ! !   (* 10.10 - Operation on sac_rac table *)
40020 1281  534   ! !   !   ! ! #haa:
40030 1282  535   ! !   !   ! !   LOCK main_msg AS locvar: al_form_1010 DO
40040 1283  536   ! !   !   ! !     WITH locvar, al_label DO
40050 1284  537   ! !   !   ! !       IF ( send.macro <> dc_address ) THEN
40060 1285  538   ! !   !   ! !         result_code:= forbidden
40070 1286  539   ! !   !   ! !       ELSE
40080 1287  540   ! !   !   ! !         IF ( sac_rac_tbl_ix < 1 ) OR ( sac_rac_lth < sac_rac_tbl_ix ) THEN
40090 1288  541   ! !   !   ! !           result_code:= out_of_range
40100 1289  542   ! !   !   ! !         ELSE
40110 1290  543   ! !   !   ! !           CASE update OF
40120 1291  544   ! !   !   ! !           ! 
40130 1292  545   ! !   !   ! !           ! read_code:
40140 1293  546   ! !   !   ! !           !   tbl_entry:= sac_rac_tbl( sac_rac_tbl_ix ).sac_rac_e
40150 1294  547   ! !   !   ! !           ! ;
40160 1295  548   ! !   !   ! !           ! 
40170 1296  549   ! !   !   ! !           ! insert_code:
40180 1297  550   ! !   !   ! !           !   WITH sac_rac_tbl( sac_rac_tbl_ix ) DO
40190 1298  551   ! !   !   ! !           !     BEGIN
40200 1299  552   ! !   !   ! !           !     ! 
40210 1300  553   ! !   !   ! !           !     ! sac_rac_e:= tbl_entry;
40220 1301  554   ! !   !   ! !           !     ! disconnected:= true;
40230 1302  555   ! !   !   ! !           !     ! 
40240 1303  556   ! !   !   ! !           !     ! IF ( sac_rac_tbl_ix > sac_rac_top ) THEN
40250 1304  557   ! !   !   ! !           !     !   sac_rac_top:= sac_rac_tbl_ix
40260 1305  558   ! !   !   ! !           !     ! ;
40270 1306  559   ! !   !   ! !           !     ! 
40280 1307  560   ! !   !   ! !           !     ! ac_check_connection( sac_rac_tbl_ix )
40290 1308  561   ! !   !   ! !           !     ! 
40300 1309  562   ! !   !   ! !           !     END
40310 1310  563   ! !   !   ! !           ! ;
40320 1311  564   ! !   !   ! !           ! 
40330 1312  565   ! !   !   ! !           ! remove_code:
40340 1313  566   ! !   !   ! !           !   WITH sac_rac_tbl( sac_rac_tbl_ix ) DO
40350 1314  567   ! !   !   ! !           !     BEGIN
40360 1315  568   ! !   !   ! !           !     ! 
40370 1316  569   ! !   !   ! !           !     ! sac_rac_e:= sac_rac_entry( empty_addr, empty_addr );
40380 1317  570   ! !   !   ! !           !     ! disconnected:= false;
40390 1318  571   ! !   !   ! !           !     ! 
40400 1319  572   ! !   !   ! !           !     ! IF ( sac_rac_top = sac_rac_tbl_ix ) THEN
40410 1320  573   ! !   !   ! !           !     !   BEGIN
40420 1321  574   ! !   !   ! !           !     !   ! 
40430 1322  575   ! !   !   ! !           !     !   ! WHILE ( sac_rac_top > 1 ) AND ( acting_ac( sac_rac_top ) = empty_addr ) DO
40440 1323  576   ! !   !   ! !           !     !   !   sac_rac_top:= sac_rac_top - 1
40450 1324  577   ! !   !   ! !           !     !   ! ;
40460 1325  578   ! !   !   ! !           !     !   ! 
\f

tsathlst    81.06.23.   20.18.                                                    page    48

40470 1326  579   ! !   !   ! !           !     !   ! IF ( acting_ac( sac_rac_top ) = empty_addr ) THEN
40480 1327  580   ! !   !   ! !           !     !   !   sac_rac_top:= sac_rac_top - 1
40490 1328  581   ! !   !   ! !           !     !   !   
40500 1329  582   ! !   !   ! !           !     !   END
40510 1330  583   ! !   !   ! !           !     !   
40520 1331  584   ! !   !   ! !           !     END
40530 1332  585   ! !   !   ! !           ! ;
40540 1333  586   ! !   !   ! !           ! 
40550 1334  587   ! !   !   ! !           ! OTHERWISE
40560 1335  588   ! !   !   ! !           ! result_code:= unknown_update
40570 1336  589   ! !   !   ! !           ! 
40580 1337  590   ! !   !   ! !           END
40590 1338  591   ! !   !   ! ! ;
40600 1339  592   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    49

41010 1340  593   ! !   !   ! !   (* 12.00 - Node test. Check connection to disconnected DC and AC's. *)
41020 1341  594   ! !   !   ! ! #hc0:
41030 1342  595   ! !   !   ! !   BEGIN
41040 1343  596   ! !   !   ! !   ! 
41050 1344  597   ! !   !   ! !   ! LOCK main_msg AS locvar: al_form_1200 DO
41060 1345  598   ! !   !   ! !   !   WITH locvar DO
41070 1346  599   ! !   !   ! !   !     BEGIN
41080 1347  600   ! !   !   ! !   !     ! 
41090 1348  601   ! !   !   ! !   !     ! node_test_freq:= master_time_out;
41100 1349  602   ! !   !   ! !   !     ! traffic_test_freq:= master_time_out + tolerance
41110 1350  603   ! !   !   ! !   !     ! 
41120 1351  604   ! !   !   ! !   !     END
41130 1352  605   ! !   !   ! !   ! ;
41140 1353  606   ! !   !   ! !   ! 
41150 1354  607   ! !   !   ! !   ! book_up( time_out_msg, book_up_msg, node_test_freq );
41160 1355  608   ! !   !   ! !   ! 
41170 1356  609   ! !   !   ! !   ! IF dc_disconnect THEN
41180 1357  610   ! !   !   ! !   !   IF get_message( aux_msg, at_route, #hc8, 0,
41190 1358  611   ! !   !   ! !   !     dc_address, dc_erh_mic_addr, read_code, accepted ) THEN
41200 1359  612   ! !   !   ! !   !     signal( aux_msg, sem( tssup_sem_no ).s^ )
41210 1360  613   ! !   !   ! !   ! ;
41220 1361  614   ! !   !   ! !   ! 
41230 1362  615   ! !   !   ! !   ! IF ( sac_rac_top > 0 ) THEN
41240 1363  616   ! !   !   ! !   !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
41250 1364  617   ! !   !   ! !   !     ac_check_connection( sac_rac_ix )
41260 1365  618   ! !   !   ! !   ! ;
41270 1366  619   ! !   !   ! !   ! 
41280 1367  620   ! !   !   ! !   ! nt_time_out:= false;
41290 1368  621   ! !   !   ! !   ! 
41300 1369  622   ! !   !   ! !   ! atc_supervise
41310 1370  623   ! !   !   ! !   ! 
41320 1371  624   ! !   !   ! !   END
41330 1372  625   ! !   !   ! ! ;
41340 1373  626   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    50

42010 1374  627   ! !   !   ! !   (* 12.02 - Time out alarm on own TSS. Overtake the node test function.
42020 1375  628   ! !   !   ! !   -          Disconnect DC and all AC's and stop all ATC's. *)
42030 1376  629   ! !   !   ! ! #hc2:
42040 1377  630   ! !   !   ! !   BEGIN
42050 1378  631   ! !   !   ! !   ! 
42060 1379  632   ! !   !   ! !   ! book_up( main_msg, book_up_msg, node_test_freq );
42070 1380  633   ! !   !   ! !   ! 
42080 1381  634   ! !   !   ! !   ! IF NOT nt_time_out THEN
42090 1382  635   ! !   !   ! !   !   BEGIN
42100 1383  636   ! !   !   ! !   !   ! 
42110 1384  637   ! !   !   ! !   !   ! nt_time_out:= true;
42120 1385  638   ! !   !   ! !   !   ! 
42130 1386  639   ! !   !   ! !   !   ! dc_disconnect:= true;
42140 1387  640   ! !   !   ! !   !   ! 
42150 1388  641   ! !   !   ! !   !   ! IF ( sac_rac_top > 0 ) THEN
42160 1389  642   ! !   !   ! !   !   !   FOR sac_rac_ix:= 1 TO sac_rac_top DO
42170 1390  643   ! !   !   ! !   !   !     IF ( acting_ac( sac_rac_ix ) <> empty_addr ) THEN
42180 1391  644   ! !   !   ! !   !   !       sac_rac_tbl( sac_rac_ix ).disconnected:= true
42190 1392  645   ! !   !   ! !   !   ! ;
42200 1393  646   ! !   !   ! !   !   ! 
42210 1394  647   ! !   !   ! !   !   ! atc_stop_poll( 1, atc_tbl_top )
42220 1395  648   ! !   !   ! !   !   ! 
42230 1396  649   ! !   !   ! !   !   END
42240 1397  650   ! !   !   ! !   ! ;
42250 1398  651   ! !   !   ! !   ! 
42260 1399  652   ! !   !   ! !   ! atc_supervise
42270 1400  653   ! !   !   ! !   ! 
42280 1401  654   ! !   !   ! !   END
42290 1402  655   ! !   !   ! ! ;
42300 1403  656   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    51

43010 1404  657   ! !   !   ! !   (* 12.03 *)
43020 1405  658   ! !   !   ! !   (* 12.04 - Returned book/update message from time out process *)
43030 1406  659   ! !   !   ! ! #hc3..#hc4:
43040 1407  660   ! !   !   ! !   book_up_msg :=: main_msg
43050 1408  661   ! !   !   ! ! ;
43060 1409  662   ! !   !   ! ! 
43070 1410  663   ! !   !   ! !   (* 12.09 - Receipt for dummy alarm from PAC or from DC. *)
43080 1411  664   ! !   !   ! ! #hc9:
43090 1412  665   ! !   !   ! !   BEGIN
43100 1413  666   ! !   !   ! !   ! 
43110 1414  667   ! !   !   ! !   ! LOCK main_msg AS locvar: alarmlabel DO
43120 1415  668   ! !   !   ! !   !   WITH locvar DO
43130 1416  669   ! !   !   ! !   !     IF ( send.macro = dc_address ) THEN
43140 1417  670   ! !   !   ! !   !       dc_disconnect:= false
43150 1418  671   ! !   !   ! !   !     ELSE
43160 1419  672   ! !   !   ! !   !       IF ( sac_rac_top > 0 ) THEN
43170 1420  673   ! !   !   ! !   !         FOR sac_rac_ix:= 1 TO sac_rac_top DO
43180 1421  674   ! !   !   ! !   !           IF ( acting_ac( sac_rac_ix ) = send ) THEN
43190 1422  675   ! !   !   ! !   !             sac_rac_tbl( sac_rac_ix ).disconnected:= false
43200 1423  676   ! !   !   ! !   ! ;
43210 1424  677   ! !   !   ! !   ! 
43220 1425  678   ! !   !   ! !   ! atc_start_poll( 1, atc_tbl_top )
43230 1426  679   ! !   !   ! !   ! 
43240 1427  680   ! !   !   ! !   END
43250 1428  681   ! !   !   ! ! ;
43260 1429  682   ! !   !   ! !  
\f

tsathlst    81.06.23.   20.18.                                                    page    52

44010 1430  683   ! !   !   ! ! OTHERWISE
44020 1431  684   ! !   !   ! ! reject_message( main_msg,
44030 1432  685   ! !   !   ! ! sem( tssup_sem_no ).s, route_vct( u3 ), own_address, ath_mic_addr, unknown_opcode )
44040 1433  686   ! !   !   ! ! 
44050 1434  687   ! !   !   ! END (* case u4 to ATH *)
44060 1435  688   ! !   !   ! ;
44070 1436  689   ! !   !   ! 
44080 1437  690   ! !   !   ! IF NOT nil( main_msg ) THEN
44090 1438  691   ! !   !   !   IF main_msg^.u4 IN (.#h12, #h20..#h27, #hc9.) THEN
44100 1439  692   ! !   !   !     return( main_msg )
44110 1440  693   ! !   !   !   ELSE
44120 1441  694   ! !   !   !     receipt_message( main_msg, sem( tssup_sem_no ).s, route_vct( u3 ), 0, result_code )
44130 1442  695   ! !   !   !     
44140 1443  696   ! !   !   END (* Message from TSS to ATH *)
44150 1444  697   ! !   ! ;
44160 1445  698   ! !   !  
\f

tsathlst    81.06.23.   20.18.                                                    page    53

45010 1446  699   ! !   ! netc_route: (* Message to an ATC from TSS to be routed through ATH *)
45020 1447  700   ! !   !   BEGIN
45030 1448  701   ! !   !   ! 
45040 1449  702   ! !   !   !   (*q if test then testout(z,"to an atc   ",0); q*)
45050 1450  703   ! !   !   ! 
45060 1451  704   ! !   !   ! IF atc_tbl_top > 0 THEN
45070 1452  705   ! !   !   !   LOCK main_msg AS locvar: alarmlabel DO
45080 1453  706   ! !   !   !     WITH locvar DO
45090 1454  707   ! !   !   !       IF find_atc_tbl_entry( rec.micro, atc_tbl_ix ) THEN
45100 1455  708   ! !   !   !         WITH atc_tbl( atc_tbl_ix ) DO
45110 1456  709   ! !   !   !           IF ( actual_activity <> break_code ) THEN
45120 1457  710   ! !   !   !             CASE u4 OF (* Operation code *)
45130 1458  711   ! !   !   !             ! 
45140 1459  712   ! !   !   !             !   (* 04.00 - Control. Find index of AC in sac_rac table. *)
45150 1460  713   ! !   !   !             ! #h40:
45160 1461  714   ! !   !   !             !   BEGIN
45170 1462  715   ! !   !   !             !   ! 
45180 1463  716   ! !   !   !             !   ! IF ( acting_ac( pac_ix ) <> send ) THEN
45190 1464  717   ! !   !   !             !   !   BEGIN
45200 1465  718   ! !   !   !             !   !   ! 
45210 1466  719   ! !   !   !             !   !   ! IF search_sac_rac( send, sac_rac_ix ) THEN
45220 1467  720   ! !   !   !             !   !   !   result_code:= accepted
45230 1468  721   ! !   !   !             !   !   ! ELSE
45240 1469  722   ! !   !   !             !   !   !   result_code:= unknown_sender
45250 1470  723   ! !   !   !             !   !   !   
45260 1471  724   ! !   !   !             !   !   END
45270 1472  725   ! !   !   !             !   ! ELSE
45280 1473  726   ! !   !   !             !   !   sac_rac_ix:= pac_ix;
45290 1474  727   ! !   !   !             !   ! 
45300 1475  728   ! !   !   !             !   ! IF ( result_code = accepted ) THEN
45310 1476  729   ! !   !   !             !   !   ts_add( 0 ):= sac_rac_ix
45320 1477  730   ! !   !   !             !   !   
45330 1478  731   ! !   !   !             !   END
45340 1479  732   ! !   !   !             ! ;
45350 1480  733   ! !   !   !             ! 
45360 1481  734   ! !   !   !             !   (* 08.04 - Extern test. Check the legitimacy *)
45370 1482  735   ! !   !   !             ! #h84:
45380 1483  736   ! !   !   !             !   IF ( acting_ac( pac_ix ) <> send ) THEN
45390 1484  737   ! !   !   !             !     result_code:= forbidden
45400 1485  738   ! !   !   !             !   ELSE
45410 1486  739   ! !   !   !             !     ts_add( 0 ):= pac_ix
45420 1487  740   ! !   !   !             ! ;
45430 1488  741   ! !   !   !             ! 
45440 1489  742   ! !   !   !             ! OTHERWISE
45450 1490  743   ! !   !   !             !   (* Other operation codes are passed uninspected and unaltered *)
45460 1491  744   ! !   !   !             !  
\f

tsathlst    81.06.23.   20.18.                                                    page    54

46010 1492  745   ! !   !   !             END (* case operation code *)
46020 1493  746   ! !   !   !           ELSE
46030 1494  747   ! !   !   !             result_code:= breaked
46040 1495  748   ! !   !   !           ELSE
46050 1496  749   ! !   !   !             result_code:= not_found
46060 1497  750   ! !   !   !           ELSE
46070 1498  751   ! !   !   !             result_code:= unknown_receiver
46080 1499  752   ! !   !   ! ;
46090 1500  753   ! !   !   !   (* end - lock main_msg. end - with locvar, atc_tbl *)
46100 1501  754   ! !   !   ! 
46110 1502  755   ! !   !   ! IF ( result_code <> accepted ) THEN
46120 1503  756   ! !   !   !   reject_message( main_msg,
46130 1504  757   ! !   !   !   sem( tssup_sem_no ).s, route_vct( u3 ), own_address, ath_mic_addr, result_code )
46140 1505  758   ! !   !   ! ELSE
46150 1506  759   ! !   !   !   signal( main_msg, sem( atc_tbl( atc_tbl_ix ).ts_vect_ix ).s^ )
46160 1507  760   ! !   !   !   
46170 1508  761   ! !   !   END (* Message from TSS to an AT *)
46180 1509  762   ! !   ! ;
46190 1510  763   ! !   ! 
46200 1511  764   ! !   ! OTHERWISE (* Unknown route *)
46210 1512  765   ! !   ! BEGIN
46220 1513  766   ! !   ! !   (*q test := not test;
46230 1514  767   ! !   ! !   if test then testout(z,"starttestout",0);
46240 1515  768   ! !   ! !   if not test then testout(z,"stop testout",0); q*)
46250 1516  769   ! !   ! ! 
46260 1517  770   ! !   ! ! reject_message( main_msg,
46270 1518  771   ! !   ! ! sem( tssup_sem_no ).s, at_route, own_address, ath_mic_addr, unknown_route )
46280 1519  772   ! !   ! ! 
46290 1520  773   ! !   ! END
46300 1521  774   ! !   ! ;
46310 1522  775   ! !   ! 
46320 1523  776   ! !   END (* case route - with main_msg^ *)
46330 1524  777   ! !   
46340 1525  778   ! UNTIL forever
46350 1526  779   ! 
46360 1527  780   END (* process at_handler *).
46370 1528        
46380 1529        
\f

tsathlst    81.06.23.   20.18.                                                    page    55

           0  122*  131*  131*  137*  151*  153*  418   424   488   600   648   678   689   690   692 
              701   741   846   846   846   849   851   867   867   867   868   986  1000  1018  1028 
             1033  1048  1062  1080  1090  1095  1109  1126  1140  1155  1163  1168  1172  1357  1362 
             1388  1419  1441  1451  1476  1486 
           1  121*  131*  131*  132*  136*  176*  176*  183*  184*  388   391   421   430   451   476 
              479   496   522   523   528   547   570   608   614   658   664   681   699   709   719 
              755   760   987   992  1001  1006  1019  1034  1049  1054  1063  1068  1081  1096  1110 
             1115  1127  1141  1146  1156  1168  1204  1220  1231  1287  1322  1323  1327  1363  1389 
             1394  1420  1425 
           2  427   760 
           4  640  1168  1222 
           8 1214 
          10 1218  1219 
aac_address   845   852=
accepted      172*  601   641   702   742   787   821   883   904   928   961  1029  1091  1180  1248 
             1358  1467  1475  1502 
acting_ac     355*  369=  371=  390   393   742   742   849   852   868   988  1002  1020  1035  1050 
             1064  1082  1097  1111  1128  1142  1157  1322  1326  1390  1421  1463  1483 
actual_activity                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              218*  491=  597   599   635   636   686  1235  1456 
ac_address    376*  390   393 
ac_check_connection                                              <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              725* 1021  1036  1083  1098  1129  1158  1307  1364 
alarmlabel    303   863   926   933   945  1414  1452 
alarmnetaddr  357*  376*
alfa          174*
alfalength    176*
alfa_pos      176* 1214= 1218  1220= 1220  1222 
alloc         764   773 
al_form_0001  844 
al_form_020_  981  1013  1043  1075  1105  1122  1138  1153 
al_form_0404 1166 
al_form_0600 1194 
al_form_0608 1269 
al_form_0900  644   880 
al_form_1010 1282 
al_form_1200 1344 
al_label      845   881  1167  1195  1270  1283 
al_net_addr   982  1014  1044  1076  1106  1123  1142  1157 
as            248:  303:  644:  769:  784:  844:  863:  880:  926:  933:  945:  981: 1013: 1043: 1075:
             1105: 1122: 1138: 1153: 1166: 1194: 1269: 1282: 1344: 1414: 1452:
atconnector   208*  787  1228 
atc_claim_set                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              534*
\f

tsathlst    81.06.23.   20.18.                                                    page    56

atc_description                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              131*  472*  510*
atc_inc_claim                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              149*  535*  556*
atc_mic       459*  486  1201  1209  1213  1241  1274 
atc_mic_addr  424   429   436   440   486=  601   640   702 
atc_name      174* 1212= 1218= 1227 
atc_no        175* 1213= 1218  1219= 1219 
atc_pri      1249 
atc_sem_no    760 
atc_shadow_table                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              134*
atc_size     1245 
atc_start_poll                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              618* 1425 
atc_stop_poll                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              580*  890   992  1006  1054  1068  1115  1146  1394 
atc_supervise                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              668* 1369  1399 
atc_table     130*  131*
atc_table_range                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              136*  402*  414*  458*  501*  555*  581*  619*
atc_tbl       130*  424   429   436   440   476   479=  479   481=  483   514   515   517   522=  522 
              527=  565   596   634   685   756   884  1225  1249  1455  1506 
atc_tbl_e    1195  1270 
atc_tbl_ix    136*  402*  422=  424   424   427   432=  436   440=  440   440   451=  458*  478   481 
              483   501*  514   515   517   519   522   522   523=  523   681=  685   709=  709   713 
              719   755=  756   759   760   882   884   890   890   947   950  1201  1209  1225  1249 
             1253  1274  1275  1454  1455  1506 
atc_tbl_lth   131*  755  1191 
atc_tbl_top   137*  418   422   476   478   496=  496   519   527   528=  528   678   709   713   992 
             1006  1054  1068  1096  1115  1146  1163  1191  1394  1425  1451 
ath_int1     1181 
ath_mic_addr  316   771   785   906  1432  1504  1518 
ath_sem       214*
ath_sem_no    297   764   773   799   803  1232 
at_addr_limit                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              175*
at_handler      1*
at_route      167*  741   835: 1028  1090  1357  1518 
at_route1     167*  913:
aux_msg       155* 1028  1030  1090  1092  1357  1359 
a_delay       808:
a_label       933:  934 
\f

tsathlst    81.06.23.   20.18.                                                    page    57

a_semaphore   805:
book_req      263   778 
book_up       233*  788  1354  1379 
book_up_msg   186*  236*  245   248:  256   257   263   264   266   270   764   766   769:  788  1354 
             1379  1407=
book_up_pool  183*  764 
boolean       191*  193*  286*  338*  379*  403*
breaked      1254  1494 
break_code    635   686  1456 
busy_main     146*  329   798:
busy_pool     147*  325   802:
byte          153*  164*  229*  280*
channelno     229*
chr          1218 
claim_level   149*  575   576=
claim_none    149*
claim_set     490=  534*  543   546=  546   566   569=  569   606   656   707 
com_pool      216*  300  1234 
connector_state                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              218*
count         250=
create       1226 
data_inconsistent                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1178 
dc_addr       348   348   983   983   988   988  1015  1015  1020  1020 
dc_address      4* 1029  1091  1196  1239  1271  1284  1358  1416 
dc_disconnect                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              193*  599   639   889   998= 1027  1060= 1089  1356  1386= 1417=
dc_erh_mic_addr                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1029  1091  1358 
decrease_claims                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              532*  606   656   707 
delay         489=  649  1236 
del_atc_tbl_entry                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              500*  950  1253  1275 
disconnected  597   637   740   889   989= 1003= 1051= 1065= 1112= 1143= 1301= 1317= 1391= 1422=
driversem     215*
dummy_route   831:
empty_addr    119*  119*  368  1316  1316  1322  1326  1390 
existing_entry                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1202 
external      231*
false         119*  191*  439   450  1317  1367  1417  1422 
find_atc_tbl_entry                                               <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              399*  439=  444=  450=  882   947  1201  1274  1454 
\f

tsathlst    81.06.23.   20.18.                                                    page    58

first_ix      554*  564=  564   565   581*  593   596   608=  608   612   614   619*  631   634   658=
              658   662   664 
forbidden    1197  1272  1285  1484 
foreign_nc    336*  348= 1002  1035  1045  1050  1077  1082 
forever      1525 
frequence     649=
get_message   276*  332=  600   640   701   741  1028  1090  1357 
h01           843:
h12           919:  975: 1438 
h20           980: 1438 
h21          1012:
h22          1042:
h23          1074:
h24          1104:
h25          1121:
h26          1135:
h27          1152: 1438 
h30           862 
h32           862:
h40          1460:
h44          1162:
h45           925:
h60          1190:
h68          1268:
h84          1482:
h90           600   640 
h91           879:  940:
haa          1281:
hc0           701  1341:
hc2           780  1376:
hc3           264  1406 
hc4           257  1406:
hc8           741  1028  1090  1357 
hc9          1411: 1438 
hcf           944:
high_micro   1168 
idle_main     145*  147*  321   614   664   719   797:
incname       750 
increase_claims                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              553*  612   662   713 
insert_code  1296:
integer       151*  175*  184*  189*  190*  220*  222*  224*  228*  237*  281*  283*  400*  459*  784 
label_size    310 
lam_no       1233 
\f

tsathlst    81.06.23.   20.18.                                                    page    59

lam_sem_no   1233 
last_ix       555*  564   582*  593   608   612   620*  631   658   662 
link          787 
lock          248:  303:  644:  769:  784:  844:  863:  880:  926:  933:  945:  981: 1013: 1043: 1075:
             1105: 1122: 1138: 1153: 1166: 1194: 1269: 1282: 1344: 1414: 1452:
locvar        248:  249   303:  304   644:  645   769:  770   784:  785=  844:  845   863:  864   880:
              881   926:  927   945:  946   981:  982  1013: 1014  1043: 1044  1075: 1076  1105: 1106 
             1122: 1123  1138: 1139  1153: 1154  1166: 1167  1194: 1195  1269: 1270  1282: 1283  1344:
             1345  1414: 1415  1452: 1453 
low           414*  421=  424   427   427   430=
low_micro    1168 
macro         312=  315=  742   982   988  1002  1014  1020  1035  1044  1045  1050  1064  1076  1077 
             1082  1097  1111  1111  1128  1128  1196  1271  1284  1416 
macroaddr       5*  227*  282*  337*
main_msg      170*  799   803   818   826   832   844:  863:  880:  905   908   926:  945:  962   964 
              981: 1013: 1043: 1075: 1105: 1122: 1138: 1153: 1166: 1181  1194: 1269: 1282: 1344: 1379 
             1407  1414: 1431  1437  1438  1439  1441  1452: 1503  1506  1517 
main_sem      211*
main_wait     144*  321=  325=  329=  614   664   719   795 
master_time_out                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1348  1349 
max_int       189*  190*
micro         313=  316=  742   851   851   852   882   947  1454 
mic_addr      400*  424   429   436   440 
mid           414*  427=  429   430   432 
msg           278*  300   302   303:  304   332   589*  600   604   627*  640   644:  654   674*  701 
              705   735*  741   743 
msg_0900_start                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              656   662 
msg_0900_stop                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              606   612 
msg_1200      707   713 
msg_kind      535*  543   546   556*  566   569   575   576 
nc_addr       350   350 
netc_route    164* 1446:
netc_route1   164*  600   640   701   767   779   969:
node_address  337*  347 
node_test_freq                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              189*  788  1237  1348= 1354  1379 
noofbytes     281*  310 
not_found    1277  1496 
not_steering  928 
no_of_by      310= 1168 
no_room      1264 
\f

tsathlst    81.06.23.   20.18.                                                    page    60

nt_time_out   191* 1367= 1381  1384=
object        771=
opc           280*  308 
op_sem          2*  209*  750  1229 
ord           440  1218 
out_of_range 1205  1288 
own           750 
ownaddr       228*
own_address     5*  315   348   350   601   640   702   906   983   988  1015  1020  1064  1097  1240 
             1432  1504  1518 
own_dc        226*
own_ts        227*
pac_index     460*  487 
pac_ix        487=  596   634   884  1204  1204  1209  1463  1473  1483  1486 
passive       297 
place_atc_tbl_entry                                              <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              457* 1209 
poll_delay    220*
poll_delay_time                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              131*  489 
pool          183*  184*
port_no      1242 
process         1*  208*
push          266 
queue_lth     153*
queue_sem     212*
read_code     702   742  1029  1091  1292: 1358 
rec           312   313   849=  868=  934= 1454 
receipt_message                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1441 
rec_macro     282*  312 
rec_micro     283*  313 
reference     157*  170*  187*  236*  278*  589*  627*  674*  735*
reject_message                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              905  1431  1503  1517 
remove        515 
remove_code  1312:
res           285*  319 
resource_claims                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              151*  547=  547   570=  570 
result        319=  883   928   931  1272=
result_code   172*  821=  856=  870=  895=  904   906   931=  961  1174= 1178= 1180  1185= 1197= 1202=
             1205= 1226= 1248  1254= 1264= 1277= 1285= 1288= 1335= 1441  1467= 1469= 1475  1484= 1494=
             1496= 1498= 1502  1504 
\f

tsathlst    81.06.23.   20.18.                                                    page    61

result_range  172*  285*
return        832   964  1439 
route         279*  307 
route_vct     167*  906  1432  1441  1504 
route_vector  164*  167*
s             270   604   654   705   743   764   773   906   908   962  1030  1092  1181  1232  1233 
             1359  1432  1441  1504  1506  1518 
sac_rac_e     367  1293  1300= 1316=
sac_rac_entry                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              119* 1316 
sac_rac_ix    121*  356*  367   378*  388=  390   390   391=  391   393   726*  739   742   742   987=
              988   989  1001= 1002  1003  1019= 1020  1021  1034= 1035  1036  1049= 1050  1051  1063=
             1064  1065  1081= 1082  1083  1096= 1097  1098  1110= 1111  1112  1127= 1128  1129  1141=
             1142  1143  1156= 1157  1158  1171  1172  1363= 1364  1389= 1390  1391  1420= 1421  1422 
             1466  1473= 1476 
sac_rac_lth   118* 1287 
sac_rac_range                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              121*  356*  378*  460*  726*
sac_rac_table                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              117*  118*
sac_rac_tbl   117*  367   596   634   739   884   989  1003  1051  1065  1112  1143  1293  1297  1313 
             1391  1422 
sac_rac_tbl_ix                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1287  1287  1293  1297  1303  1304  1307  1313  1319 
sac_rac_tbl_entry                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              119*
sac_rac_top   122*  390   846   851   867   986   987  1000  1001  1018  1019  1033  1034  1048  1049 
             1062  1063  1080  1081  1095  1109  1110  1126  1127  1140  1141  1155  1156  1204  1303 
             1304= 1319  1322  1322  1323= 1323  1326  1327= 1327  1362  1363  1388  1389  1419  1420 
search_sac_rac                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              375*  393= 1171  1466 
seconds       237*  250 
sem             7*  270   297   300   604   654   705   743   764   773   799   803   906   908   962 
             1030  1092  1181  1230  1231  1232  1233  1234  1359  1432  1441  1504  1506  1518 
sempointer      2*  209*  216*
send          315   316   882   934   946  1171  1196  1271  1284  1416  1421  1463  1466  1483 
sensesem      300 
service_code  599   639 
shadows       134*  514   515  1244  1249 
shad_ix       514   515   759= 1244  1249 
signal        270   604   654   705   743   908   962  1030  1092  1181  1359  1506 
start        1249 
start_code    597   637 
stop_code     132*  132*  491   492   601 
\f

tsathlst    81.06.23.   20.18.                                                    page    62

substitute_ac_addr                                               <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              368   369 
tbl_entry    1293= 1300 
testopen      750 
testout       751   920   957   976 
timeout_sem_no                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              270 
time_out_msg  187*  235*  253   266   773   775   784:  788  1354 
time_out_pool                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              184*  773 
tolerance    1349 
traffic_count                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              488=  689   690=  692   699=
traffic_counter                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              224*
traffic_test_freq                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              190*  222* 1238  1349=
true          193*  444   989   998  1003  1051  1060  1065  1112  1143  1301  1384  1386  1391 
tssup_sem_no  743   906   908   962  1030  1092  1359  1432  1441  1504  1518 
ts_add        846   846   849   867   867   868  1172= 1476= 1486=
ts_env_vers   751 
ts_pointer    212*
ts_pointer_vector                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                7*
ts_vect_ix    604   654   705   760= 1230  1231  1506 
t_e_c_init    648=
u1            256=  263=  778=
u3            307=  767=  779=  827   906   920   976  1432  1441  1504 
u4            257=  264=  308=  780=  840   916   957   972  1438  1457 
unknown_opcode                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1432 
unknown_receiver                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              856   870  1185  1498 
unknown_route                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1518 
unknown_sender                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              895   928  1174  1469 
unknown_update                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1335 
upd           284*  318 
update        318=  887  1290 
updates       183*  248   769 
update_range  284*
update_req    256 
\f

tsathlst    81.06.23.   20.18.                                                    page    63

upper_atc_tbl_index                                              <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              137*  471*  582*  620*
upper_sac_rac_index                                              <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              122*
usual_ac_addr                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              371 
version        11*  751 
w             297   300   799   803  1234 
wait          799 
waitsd        803 
wait_sem_delay                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              803 
wanted_activity                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              492=  636   637   639   641   887=
working_0404_msg                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              156*  933:
working_0608_msg                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              157*
work_entry    472*  476=  481   510*  517=  527 
work_ix       471*  478=  479   479 
z             202*  750   751   920   957   976 
zone          202*
\f

tsathlst    81.06.23.   20.18.                                                    page    64

AND               11
ARRAY              1
BEGIN             75
CASE               8
CONST              2
DIV                2
DO                89
DOWNTO             1
ELSE              43
END               83
FOR               18
FUNCTION           5
IF               105
IN                 4
MOD                4
NIL                7
NOT               11
OF                11
OR                 9
OTHERWISE          8
PROCEDURE          9
REPEAT             6
THEN             105
TO                17
TYPE               1
UNTIL              6
VAR               27
WHILE              4
WITH              41
*pascal80 codesize.12000 alarmenv tsenvir source
81.06.23.      20.20.                         pascal80     version 1981.04.01


   name        headline beginline endline  appetite(words) 

   book_up        243       246     274  :       9            
   get_message    295       298     332  :      11            
   foreign_nc     345       352     350  :       6            
   acting_ac      365       367     373  :       7            
   search_sac_r   386       388     395  :      17            
   find_atc_tbl   414       419     455  :      10            
   place_atc_tb   471       476     498  :      18            
   del_atc_tbl_   510       515     530  :      23            
   decrease_cla   541       544     551  :       6            
   increase_cla   562       564     578  :      11            
   atc_stop_pol   589       594     614  :      28            
   atc_start_po   627       632     664  :      30            
   atc_supervis   674       679     723  :      26            
   ac_check_con   735       739     743  :      38            
   at_handler      11       750    1527  :     328            

 code: 1 . 958  = 12958 bytes


end of PASCAL80 compilation 

end
blocksread = 55
*o c
«eof»