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

⟦08bcf53da⟧ TextFileVerbose

    Length: 161280 (0x27600)
    Types: TextFileVerbose
    Names: »tsvaclst«

Derivation

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

TextFileVerbose

\f

tsvaclst    81.06.16.   13.41.                                                    page     1

   10    1           
\f

tsvaclst    81.06.16.   13.41.                                                    page     2

 1010    2            (* vc(at)-connector alarmsystem  *)
 1020    3          
 1030    4            (**** short decription of process *****
 1040    5            
 1050    6            PROCESS vcatc ( param );
 1060    7            declarations;
 1070    8            procedures;
 1080    9            functions;
 1090   10            
 1100   11            BEGIN
 1110   12            start of lam-driver;
 1120   13            alloc of buffers;
 1130   14            initialiser variables;
 1140   15            
 1150   16            REPEAT
 1160   17            read buffer to mess_ref;
 1170   18            rute , func , types := depend of u3 and u4;
 1180   19            
 1190   20            *** classify buffer ***
 1200   21            CASE rute of
 1210   22            CASE types of
 1220   23            
 1230   24            : buftype:=
 1240   25            
 1250   26            END
 1260   27            END
 1270   28            
 1280   29            action:= acttable ( vcatc_state , buftype );
 1290   30            
 1300   31            *** make action ***
 1310   32            CASE action of
 1320   33            1 :
 1330   34            2 :
 1340   35            8 : lamspeak;
 1350   36            16 :
 1360   37            END
 1370   38            
 1380   39            *** send buffer ***
 1390   40            CASE buftype of
 1400   41            
 1410   42            
 1420   43            END
 1430   44            UNTIL FALSE
 1440   45            END.
 1450   46            ***)
 1460   47           
\f

tsvaclst    81.06.16.   13.41.                                                    page     3

 2010   48        PROCESS vcatc(
 2020   49          opsem      : sempointer;
 2030   50          VAR
 2040   51          messem  ,                   (*input to connector*)
 2050   52          queuesem   : !ts_pointer;   (*queue of unprocessed messages*)
 2060   53          VAR
 2070   54          vchsem  ,                   (*output to vc-handler*)
 2080   55          lamsem  ,                   (*message to lam-driver*)
 2090   56          timeoutsem ,                (*for booking and update*)
 2100   57          com_pool : !sempointer;
 2110   58          VAR
 2120   59          dc_macro,                   (*macro for own dc*)
 2130   60          ts_macro: !macroaddr;       (*macro for own ts*)
 2140   61          micadr     : integer;       (*micro adr for this vc(at)*)
 2150   62          canno      : byte);         (*cannel number to lamdriver*)
 2160   63          
 2170   64          
 2180   65           
\f

tsvaclst    81.06.16.   13.41.                                                    page     4

 3010   66        CONST
 3020   67          version         = "vers  3.20 /";
 3030   68          max_lbuf_needed = 5;   (*------ consts used by LAMSPEAK ------*)
 3040   69          max_info_bytes  = 2;
 3050   70          
 3060   71          
 3070   72        TYPE
 3080   73          mask_unknown = RECORD
 3090   74                         !  fix : alarmlabel;
 3100   75                         !  data: alarmlabel;
 3110   76                         END;
 3120   77          
 3130   78          mask_byte    = RECORD
 3140   79                         !  fix : alarmlabel;
 3150   80                         !  data: ARRAY (1..4) OF byte;
 3160   81                         END;
 3170   82          
 3180   83          mask_broad   = RECORD
 3190   84                         !  fix : alarmlabel;
 3200   85                         !  data: alarmnetaddr;
 3210   86                         END;
 3220   87          
 3230   88          mask_service = RECORD
 3240   89                         !  fix : alarmlabel;
 3250   90                         !  data: integer;
 3260   91                         END;
 3270   92          
 3280   93          mask_poll    = RECORD
 3290   94                         !  fix : alarmlabel;
 3300   95                         !  error_count : integer;
 3310   96                         !  poll_rate   : integer;
 3320   97                         END;
 3330   98          
 3340   99          mask_vcm     = RECORD
 3350  100                         !  fix  : alarmlabel;
 3360  101                         !  data : alarmnetaddr;
 3370  102                         !  datab: byte
 3380  103                         END;
 3390  104          
 3400  105          mask_atvcdc  = RECORD
 3410  106                         !  fix : alarmlabel;
 3420  107                         !  at  : alarmnetaddr;
 3430  108                         !  vc  : alarmnetaddr;
 3440  109                         !  dc  : alarmnetaddr;
 3450  110                         END;
 3460  111          
\f

tsvaclst    81.06.16.   13.41.                                                    page     5

 3470  112          mask_atadr   = RECORD
 3480  113                         !  fix  : alarmlabel;
 3490  114                         !  entry: at_addr_e;
 3500  115                         END;
 3510  116          
 3520  117          mask_atts    = RECORD
 3530  118                         !  fix  : alarmlabel;
 3540  119                         !  entry: at_ts_e;
 3550  120                         END;
 3560  121          
 3570  122          mask_vcmat  = RECORD
 3580  123                        !  fix  : alarmlabel;
 3590  124                        !  entry: vcmat_e;
 3600  125                        END;
 3610  126          
 3620  127          mask_test    = RECORD
 3630  128                         !  fix  : alarmlabel;
 3640  129                         !  data : ARRAY(1..5) OF integer;
 3650  130                         END;
 3660  131          
 3670  132          ch_format  = PACKED RECORD
 3680  133                              !  cntl_inf : byte;
 3690  134                              !  time_inf : byte;
 3700  135                              END;
 3710  136          
 3720  137          state_type =  (notready,       (* initially table *)
 3730  138                         passive,         (* waiting start poll *)
 3740  139                         active,          (* polling state *)
 3750  140                         lam_talk,        (* lamspeak active *)
 3760  141                         lam_need_buf,    (* lamspeak waiting listenbuf *)
 3770  142                         vcatc_need_buf,  (* vcatc waiting listenbuf *)
 3780  143                         wait_shorttime,  (* waiting shorttime from vcath *)
 3790  144                         stop_poll);      (* send stop poll mess *)
 3800  145          
 3810  146          buf_type   = (unknown,  (*unknown buffer*)
 3820  147                        alarm  ,  (*alarmbuffer*)
 3830  148                        listen ,  (*listen buffer*)
 3840  149                        table  ,  (*buffer for update tables*)
 3850  150                        report ,  (*buffer to vc(at)*)
 3860  151                        service,  (*buffer to vc(at)-connector*)
 3870  152                        testat ,  (*testbuffer to vc(at)*)
 3880  153                        operate,  (*vc,dc operations*)
 3890  154                        clock  ,  (*poll pulse*)
 3900  155                        ltime  ,  (*longtime timeout*)
 3910  156                        stime  ,  (*shorttime timeout*)
 3920  157                        lam    ,  (*answer from lam-driver*)
\f

tsvaclst    81.06.16.   13.41.                                                    page     6

 3930  158                        used   ,  (*current buffer on inner semaphore*)
 3940  159                        empty  ,  (*empty buffer to return*)
 3950  160                        broad  ,  (*broadcast*)
 3960  161                        permiss);  (* dc to vc mess buffer *)
 3970  162          
 3980  163          input_type       = (from_sem       ,
 3990  164                              from_listen_ref,
 4000  165                              nothing        );
 4010  166          
 4020  167          
 4030  168            (*------------- Types only used by the LAMSPEAK procedure ---------*)
 4040  169          
 4050  170          to_telegram_type = PACKED RECORD
 4060  171                                    !  to_data      : 0..255;    (* 8 bits *)
 4070  172                                    !  to_opcode    : 0..  3;    (* 2 bits *)
 4080  173                                    !  to_serial_no : 0..  1;    (* 1 bit  *)
 4090  174                                    !  to_check     : 0.. 31     (* 5 bits *)
 4100  175                                    END;
 4110  176          
 4120  177          lbuf_kind_type   = (log, norm);
 4130  178          
 4140  179          lbuf_record       = RECORD
 4150  180                              !  kind : lbuf_kind_type;
 4160  181                              !  noob : integer;
 4170  182                              !  reci : alarmnetaddr;
 4180  183                              !  opco : byte;
 4190  184                              !  upda : 0..15;
 4200  185                              !  resu : 0..15;
 4210  186                              !  dta1 : byte;
 4220  187                              !  dta2 : byte;
 4230  188                              !  addr : alarmnetaddr
 4240  189                              END;
 4250  190          
 4260  191          oknok_type       = (ok , nok);  (* state of transmitter line *)
 4270  192           
\f

tsvaclst    81.06.16.   13.41.                                                    page     7

 5010  193        VAR
 5020  194          test        : boolean := true;
 5030  195          buftype     : buf_type;          (* type of current buffer *)
 5040  196          vcatc_state : state_type;
 5050  197          old_state   : state_type;
 5060  198          input       : input_type;
 5070  199          line        : oknok_type;   (* transmitter line state *)
 5080  200          lamspeak_state :  (nottele, lettertovc, polling, letterfromvc, testi);
 5090  201          
 5100  202          
 5110  203            (* no of record's in tables *)
 5120  204          noatadr,
 5130  205          noatts ,
 5140  206          novcm  : integer := 0;
 5150  207          
 5160  208            (*tables*)
 5170  209          atadrtable: ARRAY(1..at_addr_l) OF at_addr_e;(*atadrcode <=> netadr*)
 5180  210          attstable : ARRAY(1..at_ts_l ) OF at_ts_e;   (*ts addresse for at*)
 5190  211          vcmtable  : ARRAY(1..vcmat_l ) OF vcmat_e;   (*vc addresse for potentiel guard transfer*)
 5200  212          
 5210  213            (* DC addres *)
 5220  214          own_dc,
 5230  215          own_dc_log : alarmnetaddr;
 5240  216          rute  : byte;
 5250  217          func,
 5260  218          types : func_grp;
 5270  219          found : boolean;         (* auxiliary *)
 5280  220          action,                  (* auxiliary *)
 5290  221          intg_aux,                (* auxiliary *)
 5300  222          next  : integer;         (* auxiliary *)
 5310  223          adr_code: byte;
 5320  224          cur_vcm  ,
 5330  225          zero_addr,
 5340  226          work     : alarmnetaddr;
 5350  227          listen_ref,           (* unused listenbufs *)
 5360  228          bookup_ref,           (*booking or update timeout module*)
 5370  229          clock_ref,            (*unused clockbuffer*)
 5380  230          timeout_ref,          (*unused timeoutbuffer*)
 5390  231          tolam_ref,            (* unused lambuffer *)
 5400  232          fromlam_ref,          (* buffer from lamdriver *)
 5410  233          mess_ref : reference; (* current buffer *)
 5420  234          timeout_answer: semaphore;       (* immediately answer from timeout modul *)
 5430  235          
 5440  236          lam_pool  : pool 1 OF integer;          (* rettes til integer *)
 5450  237          tim_pool  : pool no_vcc_tim OF timers; (* rettes til timers *)
 5460  238          book_pool : pool no_vcc_upd OF updates; (* rettes til updates *)
\f

tsvaclst    81.06.16.   13.41.                                                    page     8

 5470  239          
 5480  240            (* counters *)
 5490  241          pack_counter,                   (* no of mess to vch *)
 5500  242          trans_ok    ,                   (* succession of ok telegram *)
 5510  243          no_of_queue,                    (* no of bufs in queue *)
 5520  244          line_error_count,               (* total number of transmiterror *)
 5530  245          no_of_listen,                   (* no of bufs on listensem *)
 5540  246          no_of_returned,                 (* no of received returned bufs *)
 5550  247          no_of_released,                 (* no of needless bufs released *)
 5560  248          no_of_unknown : integer:= 0;    (* no of unknown messages received *)
 5570  249          
 5580  250          index,object: integer;      (*param to book and update*)
 5590  251          
 5600  252            (* limits *)
 5610  253          serve_limit     : integer := service_lim;
 5620  254          stoppoll_limit  : integer := stop_poll_lim;
 5630  255          max_succ_errors : integer := max_succ_lin_err;
 5640  256          fix_incr_on_err : integer := trans_err_rate;
 5650  257          poll_delay      : integer := poll_delay_time;
 5660  258          
 5670  259          zout : zone;        (* testoutput from modul *)
 5680  260          
 5690  261            (*--------- Vars only used by the LAMSPEAK procedure ----------*)
 5700  262          
 5710  263          speak_action        : integer := 8; (* as p_ack in polling state *)
 5720  264          keep_the_telegram   : to_telegram_type;
 5730  265          area_to_lam        ,
 5740  266          area_from_lam       : ARRAY (1..3) OF byte;
 5750  267          lbuf_info           : ARRAY (1..max_lbuf_needed) OF lbuf_record;
 5760  268          keep_the_opcode     : byte;
 5770  269          keep_sender         : alarmnetaddr;
 5780  270          teletxt             : alfa;
 5790  271          at_table_addr       : alarmnetaddr;
 5800  272          atts_table_index    : integer;
 5810  273          
 5820  274          serial_no       ,
 5830  275          succ_line_errors,
 5840  276          area_pointer    ,
 5850  277          lbuf_needed         : integer := 0;
 5860  278          
 5870  279          below_serve_limit  ,
 5880  280          below_stoppoll_limit,
 5890  281          lamtest,
 5900  282          boo                 : boolean := true;
 5910  283          
 5920  284           
\f

tsvaclst    81.06.16.   13.41.                                                    page     9

 6010  285        TYPE
 6020  286          row = ARRAY(buf_type) OF integer;
 6030  287          col = ARRAY(state_type) OF row;
 6040  288        CONST
 6050  289          acttable = col (
 6060  290                            (*                     u              s     o                       p *)
 6070  291                            (*                     n     l     r  e  t  p                       e *)
 6080  292                            (*                     k  a  i  t  e  r  e  e  c  l  s        e  b  r *)
 6090  293                            (*                     n  l  s  a  p  v  s  r  l  t  t     u  m  r  m *)
 6100  294                            (*                     o  a  t  b  o  i  t  a  o  i  i  l  s  p  o  i *)
 6110  295                            (*                     w  r  e  l  r  c  a  t  c  m  m  a  e  t  a  s *)
 6120  296                            (*                     n  m  n  e  t  e  t  e  k  e  e  m  d  y  d  s *)
 6130  297                            (*not_ready     *)row( 1, 2, 4, 5, 2, 2, 2, 2, 6, 6, 6, 6, 0,18,19, 2),
 6140  298                            (*passive       *)row( 1, 3, 4, 5, 3, 7, 3,15, 6, 6, 6, 6, 0,18,19, 3),
 6150  299                            (*active        *)row( 1, 8, 4, 5, 8, 7, 8,15, 8, 6, 6, 6, 0,18,19, 8),
 6160  300                            (*lam_talk      *)row( 1, 9, 4, 9, 9, 7, 9,15,10,11,12, 8, 0,18,19, 9),
 6170  301                            (*lam_need_buf  *)row( 1, 9, 8, 9, 9, 7, 9,15,19,11,12,17, 0,18,19, 9),
 6180  302                            (*vcatc_need_buf*)row( 1, 9,13, 9, 9, 7, 9, 9,10, 6,14,17, 0,18,19, 9),
 6190  303                            (*wait_shorttime*)row( 1, 9,16, 9, 9, 9, 9, 9,10, 6,14,17, 0,18,19, 9),
 6200  304                            (*stop_poll     *)row( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
 6210  305           
\f

tsvaclst    81.06.16.   13.41.                                                    page    10

 7010  306          
 7020  307          PROCEDURE save_listen_buf;
 7030  308          FORWARD;
 7040  309          
 7050  310          PROCEDURE update(ticks: integer);
 7060  311              (* update the booked timeoutbuffer *)
 7070  312          BEGIN
 7080  313    1     ! bookup_ref^.u1:= update_req;
 7090  314    2     ! bookup_ref^.u4:= #hc4;
 7100  315    3     ! LOCK bookup_ref AS buf: updates DO
 7110  316    4     !   BEGIN
 7120  317    5     !   ! buf.index := index;
 7130  318    6     !   ! buf.count := ticks;
 7140  319    7     !   ! buf.object:= object
 7150  320    8     !   END;
 7160  321    9     ! signal(bookup_ref,timeoutsem^);
 7170  322   10     ! wait  (bookup_ref,timeout_answer);
 7180  323   11     !   (*q if test then testout(zout,"update      ",ticks*10+bookup_ref^.u2); q*)
 7190  324   12     END;
 7200  325          
 7210  326          PROCEDURE book(ticks: integer);
 7220  327              (* booking of one modultimeout *)
 7230  328          BEGIN
 7240  329    1     ! IF NOT nil( timeout_ref ) THEN
 7250  330    2     !   BEGIN
 7260  331    3     !   ! bookup_ref^.u1:= book_req;
 7270  332    4     !   ! bookup_ref^.u4:= #hc3;
 7280  333    5     !   ! LOCK bookup_ref AS buf: updates DO
 7290  334    6     !   !   BEGIN
 7300  335    7     !   !   ! buf.count:= ticks;
 7310  336    8     !   !   ! buf.object:= ticks
 7320  337    9     !   !   END;
 7330  338   10     !   ! LOCK timeout_ref AS buf: timers DO
 7340  339   11     !   !   buf.object:= ticks;
 7350  340   12     !   ! push(timeout_ref,bookup_ref);
 7360  341   13     !   ! signal(bookup_ref,timeoutsem^);
 7370  342   14     !   ! wait(bookup_ref,timeout_answer);
 7380  343   15     !   !   (*q if test then testout(zout,"book        ",ticks*10+bookup_ref^.u2); q*)
 7390  344   16     !   ! LOCK bookup_ref AS buf: updates DO
 7400  345   17     !   !   BEGIN
 7410  346   18     !   !   ! index := buf.index;
 7420  347   19     !   !   ! object:= buf.object
 7430  348   20     !   !   END
 7440  349   21     !   END
 7450  350   22     END;
 7460  351          
\f

tsvaclst    81.06.16.   13.41.                                                    page    11

 7470  352          FUNCTION get_macro_atts(adr: macroaddr; func: byte): boolean;
 7480  353          VAR
 7490  354            found: boolean:= false;
 7500  355          BEGIN
 7510  356    1     ! next:= 1;
 7520  357    2     ! WHILE (NOT found) AND (next<=noatts) DO
 7530  358    3     !   BEGIN
 7540  359    4     !   ! IF (adr.dc_addr=attstable(next).ts_addr.dc_addr) AND
 7550  360    5     !   !   (attstable(next).ts_type=ts_type_pvc) THEN
 7560  361    6     !   !   IF func=1 THEN found:= true ELSE
 7570  362    7     !   !     IF adr.nc_addr=attstable(next).ts_addr.nc_addr THEN
 7580  363    8     !   !       IF func=2 THEN found:= true ELSE
 7590  364    9     !   !         IF adr.ts_addr=attstable(next).ts_addr.ts_addr THEN
 7600  365   10     !   !           found:= true;
 7610  366   11     !   ! IF NOT found THEN next:= next + 1;
 7620  367   12     !   END;
 7630  368   13     ! get_macro_atts:= found;
 7640  369   14     END;
 7650  370          
 7660  371          FUNCTION get_macro_at(adr: macroaddr; func: byte): boolean;
 7670  372          VAR
 7680  373            found: boolean:= false;
 7690  374          BEGIN
 7700  375    1     ! next:= 1;
 7710  376    2     ! WHILE (NOT found) AND (next<=noatadr) DO
 7720  377    3     !   BEGIN
 7730  378    4     !   ! IF adr.dc_addr=atadrtable(next).at_addr.macro.dc_addr THEN
 7740  379    5     !   !   IF func=1 THEN found:= true ELSE
 7750  380    6     !   !     IF adr.nc_addr=atadrtable(next).at_addr.macro.nc_addr THEN
 7760  381    7     !   !       IF func=2 THEN found:= true ELSE
 7770  382    8     !   !         IF adr=atadrtable(next).at_addr.macro THEN
 7780  383    9     !   !           found:= true;
 7790  384   10     !   ! IF NOT found THEN next:= next + 1;
 7800  385   11     !   END;
 7810  386   12     ! get_macro_at:= found;
 7820  387   13     END;
 7830  388           
\f

tsvaclst    81.06.16.   13.41.                                                    page    12

 8010  389          FUNCTION get_vc_code(vcadr: alarmnetaddr; VAR code: byte): boolean;
 8020  390          VAR
 8030  391            found: boolean:= false;
 8040  392          BEGIN
 8050  393    1     ! next:= 1;
 8060  394    2     ! WHILE (NOT found) AND (next<=novcm) DO
 8070  395    3     !   IF vcadr=vcmtable(next).vc_addr THEN
 8080  396    4     !     BEGIN
 8090  397    5     !     ! found:= true;
 8100  398    6     !     ! code:= vcmtable(next).vc_code
 8110  399    7     !     END ELSE next:= next+1;
 8120  400    8     ! get_vc_code:= found;
 8130  401    9     END;
 8140  402          
 8150  403          FUNCTION get_vc_netaddr(VAR vcadr: alarmnetaddr; code: byte): boolean;
 8160  404          VAR
 8170  405            found: boolean:= false;
 8180  406          BEGIN
 8190  407    1     ! next:= 1;
 8200  408    2     ! WHILE (NOT found) AND (next<=novcm) DO
 8210  409    3     !   IF code=vcmtable(next).vc_code THEN
 8220  410    4     !     BEGIN
 8230  411    5     !     ! found:= true;
 8240  412    6     !     ! vcadr:= vcmtable(next).vc_addr
 8250  413    7     !     END ELSE next:= next+1;
 8260  414    8     ! get_vc_netaddr:= found;
 8270  415    9     END;
 8280  416           
\f

tsvaclst    81.06.16.   13.41.                                                    page    13

 9010  417          FUNCTION get_adr_code(atadr: alarmnetaddr; VAR code: byte): boolean;
 9020  418          VAR
 9030  419            found: boolean:= false;
 9040  420          BEGIN
 9050  421    1     ! next:= 1;
 9060  422    2     ! WHILE (NOT found) AND (next<=noatadr) DO
 9070  423    3     !   IF atadr=atadrtable(next).at_addr THEN
 9080  424    4     !     BEGIN
 9090  425    5     !     ! found:= true;
 9100  426    6     !     ! code := atadrtable(next).addr_code
 9110  427    7     !     END ELSE next:= next+1;
 9120  428    8     ! get_adr_code:= found;
 9130  429    9     END;
 9140  430          
 9150  431          
 9160  432          
 9170  433          FUNCTION get_net_addr(VAR atadr: alarmnetaddr; code: byte): boolean;
 9180  434          VAR
 9190  435            found: boolean:= false;
 9200  436          BEGIN
 9210  437    1     ! next:= 1;
 9220  438    2     ! WHILE (NOT found) AND (next<=noatadr) DO
 9230  439    3     !   IF code = atadrtable(next).addr_code THEN
 9240  440    4     !     BEGIN
 9250  441    5     !     ! found:= true;
 9260  442    6     !     ! atadr:= atadrtable(next).at_addr
 9270  443    7     !     END ELSE next:= next+1;
 9280  444    8     ! get_net_addr:= found;
 9290  445    9     END;
 9300  446          
 9310  447           
\f

tsvaclst    81.06.16.   13.41.                                                    page    14

10010  448          
10020  449          FUNCTION get_atts_index(tsadr: macroaddr; VAR index: integer): boolean;
10030  450          VAR
10040  451            found: boolean:= false;
10050  452          BEGIN
10060  453    1     ! next := 1;
10070  454    2     ! WHILE (NOT found) AND (next<=noatts) DO
10080  455    3     !   IF tsadr = attstable(next).ts_addr THEN
10090  456    4     !     BEGIN
10100  457    5     !     ! found:= true;
10110  458    6     !     ! index:= attstable(next).index
10120  459    7     !     END ELSE next:= next+1;
10130  460    8     ! get_atts_index:= found;
10140  461    9     END;
10150  462          
10160  463          FUNCTION pack_dc_macro ( adr: alarmnetaddr ): macroaddr;
10170  464          BEGIN
10180  465    1     ! pack_dc_macro.dc_addr:= adr.macro.dc_addr;
10190  466    2     ! pack_dc_macro.nc_addr:= 0;
10200  467    3     ! pack_dc_macro.ts_addr:= 0;
10210  468    4     END;
10220  469          
10230  470          
10240  471           
\f

tsvaclst    81.06.16.   13.41.                                                    page    15

11010  472          
11020  473          PROCEDURE unknown_buf(error: byte);
11030  474              (* returning of one unknown buffer *)
11040  475          BEGIN
11050  476    1     ! IF mess_ref^.u4=#h12 THEN buftype:= empty ELSE
11060  477    2     !   LOCK mess_ref AS buf: mask_unknown DO
11070  478    3     !     WITH buf DO
11080  479    4     !       BEGIN
11090  480    5     !       ! fix.op_code:= mess_ref^.u4;
11100  481    6     !       ! data:= fix;
11110  482    7     !       ! mess_ref^.u4:= #h12;
11120  483    8     !       ! fix.rec       := fix.send;;
11130  484    9     !       ! fix.send.macro:= ts_macro;
11140  485   10     !       ! fix.send.micro:= micadr;
11150  486   11     !       ! fix.no_of_by  := 2*label_size+2;
11160  487   12     !       ! fix.update    := 0;
11170  488   13     !       ! fix.result    := error;
11180  489   14     !       ! buftype:= unknown
11190  490   15     !       END;
11200  491   16     ! no_of_unknown:= (no_of_unknown MOD max_int) + 1
11210  492   17     END;
11220  493          
11230  494           
\f

tsvaclst    81.06.16.   13.41.                                                    page    16

12010  495          PROCEDURE send_to_vch;
12020  496          BEGIN
12030  497    1     ! CASE mess_ref^.u4 DIV 16 OF
12040  498    2     ! ! 4,8 : pack_counter:= (pack_counter+1) MOD max_int;
12050  499    3     ! ! OTHERWISE
12060  500    4     ! END;
12070  501    5     ! signal(mess_ref,vchsem^);
12080  502    6     END;
12090  503          
12100  504          PROCEDURE restart_clock;
12110  505          BEGIN
12120  506    1     ! signal(mess_ref,timeoutsem^);
12130  507    2     ! IF no_of_listen<2 THEN
12140  508    3     !   BEGIN
12150  509    4     !   ! sensesem(mess_ref,com_pool^);
12160  510    5     !   ! IF NOT nil (mess_ref) THEN save_listen_buf;
12170  511    6     !   ! buftype:= clock;
12180  512    7     !   END
12190  513    8     END;
12200  514           
\f

tsvaclst    81.06.16.   13.41.                                                    page    17

13010  515          FUNCTION get_listen_buf: boolean;
13020  516              (* serving out one listenbuf from listen_ref *)
13030  517          BEGIN
13040  518    1     ! IF no_of_listen>0 THEN
13050  519    2     !   BEGIN
13060  520    3     !   ! pop(mess_ref,listen_ref);
13070  521    4     !   ! mess_ref^.u2:= 1;
13080  522    5     !   ! mess_ref^.u3:= netc_route;
13090  523    6     !   ! mess_ref^.u4:= #hc5;
13100  524    7     !   ! buftype:= listen;
13110  525    8     !   ! no_of_listen:= no_of_listen - 1;
13120  526    9     !   !   (*q if test then testout(zout," no of li : ",no_of_listen); q*)
13130  527   10     !   ! get_listen_buf:= true;
13140  528   11     !   END ELSE
13150  529   12     !   get_listen_buf:= false
13160  530   13     END;
13170  531          
13180  532          
13190  533          
13200  534          PROCEDURE save_listen_buf;
13210  535              (* save listenbuf from mess_ref to listen_ref *)
13220  536          BEGIN
13230  537    1     ! push(mess_ref,listen_ref);
13240  538    2     ! buftype:= used;
13250  539    3     ! no_of_listen:= no_of_listen + 1;
13260  540    4     !   (*q if test then testout(zout," no of li : ", no_of_listen); q*)
13270  541    5     END;
13280  542          
13290  543          
13300  544          
13310  545          
13320  546           
\f

tsvaclst    81.06.16.   13.41.                                                    page    18

14010  547          
14020  548          PROCEDURE lamspeak;
14030  549            
14040  550              (***************************************************************
14050  551              *                                                              *
14060  552              * Function:    Lamspeak is responsible for the communication   *
14070  553              *              with VC(AT) via lamdriver, that is the protocol *
14080  554              *              for telegram communication is administrated by  *
14090  555              *              lamspeak.                                       *
14100  556              *              The VC(AT)-Conn is in state LAM_TALK. Lamspeak  *
14110  557              *              can change vcatc_state to either ACTIVE or      *
14120  558              *              LAM_NEED_BUF, else vcatc_state is unchanged     *
14130  559              *              LAM_TALK.                                       *
14140  560              *                                                              *
14150  561              * Externals:                                                   *
14160  562              *                                                              *
14170  563              * Parameters:  None.
14180  564              *                                                              *
14190  565              * Semaphores:  None.
14200  566              *                                                              *
14210  567              * Programmed june 1980 by SRS
14220  568              *                                                              *
14230  569              ***************************************************************)
14240  570            
14250  571            
14260  572             
\f

tsvaclst    81.06.16.   13.41.                                                    page    19

15010  573          CONST
15020  574            
15030  575            p_ack  = 0;     data   = 1;      opr    = 2;
15040  576            status = 3;     d_ack  = 4;      t_ack  = 5;
15050  577            nak    = 6;     free   = 7;
15060  578            
15070  579          TYPE
15080  580            
15090  581            from_telegram_type = PACKED RECORD
15100  582                                        !  from_data   : 0..255;   (* 8 bits *)
15110  583                                        !  from_opcode : 0..  7;   (* 3 bits *)
15120  584                                        !  from_check  : 0.. 31    (* 5 bits *)
15130  585                                        END;
15140  586            
15150  587            mask_norm_lbuf = PACKED RECORD
15160  588                                    !  fix_label : alarmlabel;
15170  589                                    !  norm_inf  : byte;
15180  590                                    !  norm_inf1 : byte
15190  591                                    END;
15200  592            
15210  593            mask_log_lbuf  = PACKED RECORD
15220  594                                    !  fix_label : alarmlabel;
15230  595                                    !  log_addr  : alarmnetaddr;
15240  596                                    !  log_opc   : byte;
15250  597                                    !  log_alarm : byte
15260  598                                    END;
15270  599            
15280  600          VAR
15290  601            
15300  602            slave_opcode         : integer;
15310  603            slave_data           : byte;
15320  604            
15330  605            numb_of_bytes        : integer := label_size;
15340  606            lam_timeout          : boolean := false;
15350  607            boo                  : boolean := true;
15360  608            
15370  609            
15380  610             
\f

tsvaclst    81.06.16.   13.41.                                                    page    20

16010  611            PROCEDURE calltest(VAR r : reference);
16020  612            BEGIN
16030  613    1       !   (*x lock r as telegram : to_telegram_type do
16040  614    2       !   begin
16050  615    3       !   if serial_no=0 then
16060  616    4       !   case telegram.to_opcode of
16070  617    5       !   0: teletxt := "  * POLL  0 ";
16080  618    6       !   1: teletxt := "  * DATA  0 ";
16090  619    7       !   2: teletxt := "  * TESTI 0 ";
16100  620    8       !   3: teletxt := "  * OPR   0 "
16110  621    9       !   end
16120  622   10       !   else
16130  623   11       !   case telegram.to_opcode of
16140  624   12       !   0: teletxt := "  * POLL  1 ";
16150  625   13       !   1: teletxt := "  * DATA  1 ";
16160  626   14       !   2: teletxt := "  * TESTI 1 ";
16170  627   15       !   3: teletxt := "  * OPR   1 "
16180  628   16       !   end;
16190  629   17       !   testout(zout, teletxt, telegram.to_data);
16200  630   18       !   end; x*)
16210  631   19       END;
16220  632            
16230  633             
\f

tsvaclst    81.06.16.   13.41.                                                    page    21

17010  634            PROCEDURE build_same_telegram( VAR r: reference );
17020  635            BEGIN
17030  636    1       ! r^.u2 := canno;
17040  637    2       ! 
17050  638    3       ! LOCK r AS telegram : to_telegram_type DO
17060  639    4       !   telegram := keep_the_telegram;
17070  640    5       ! IF lamtest THEN calltest( r );
17080  641    6       ! 
17090  642    7       END (* of procedure build_same_telegram *);
17100  643            
17110  644            
17120  645            PROCEDURE build_serial_changed_telegram( VAR r: reference );
17130  646            BEGIN  (* build the same telegram, but change serial_no *)
17140  647    1       ! r^.u2 := canno;
17150  648    2       ! serial_no := 1 - serial_no;
17160  649    3       ! 
17170  650    4       ! LOCK r AS telegram: to_telegram_type DO
17180  651    5       !   BEGIN
17190  652    6       !   ! telegram := keep_the_telegram;
17200  653    7       !   ! telegram.to_serial_no := serial_no
17210  654    8       !   END (* of lock statement *);
17220  655    9       ! 
17230  656   10       ! boo := check5( r, generate);
17240  657   11       ! 
17250  658   12       ! LOCK r AS telegram: to_telegram_type DO
17260  659   13       !   keep_the_telegram := telegram;
17270  660   14       ! 
17280  661   15       END (* of procedure build_serial_changed_telegram *);
17290  662            
17300  663            
17310  664             
\f

tsvaclst    81.06.16.   13.41.                                                    page    22

18010  665            PROCEDURE build_a_poll_telegram( VAR r: reference );
18020  666            BEGIN
18030  667    1       ! 
18040  668    2       ! r^.u2 := canno;
18050  669    3       ! 
18060  670    4       ! LOCK r AS telegram : to_telegram_type DO
18070  671    5       !   BEGIN
18080  672    6       !   !   (*----------------------------------- build up the buffer *)
18090  673    7       !   ! 
18100  674    8       !   ! serial_no := 1 - serial_no;
18110  675    9       !   ! WITH telegram DO
18120  676   10       !   !   BEGIN
18130  677   11       !   !   !   (*------------------------------ build the telegram *)
18140  678   12       !   !   ! to_opcode   := 0;
18150  679   13       !   !   ! to_serial_no:= serial_no;
18160  680   14       !   !   ! to_data     := 0;
18170  681   15       !   !   ! IF serial_no = 0 THEN
18180  682   16       !   !   !   to_check := 10            (* as bits 01010 *)
18190  683   17       !   !   ! ELSE
18200  684   18       !   !   !   to_check :=  19;           (* as bits 10011 *)
18210  685   19       !   !   END;
18220  686   20       !   !   (*---------------------------------- keep the telegram *)
18230  687   21       !   ! keep_the_telegram := telegram;
18240  688   22       !   ! 
18250  689   23       !   END (* of lock statement *);
18260  690   24       ! IF lamtest THEN calltest( r );
18270  691   25       ! 
18280  692   26       END (* of procedure build_a_poll_telegram *);
18290  693            
18300  694             
\f

tsvaclst    81.06.16.   13.41.                                                    page    23

19010  695            PROCEDURE build_a_letter_telegram( VAR r: reference );
19020  696            BEGIN
19030  697    1       ! serial_no := 1 - serial_no;
19040  698    2       ! r^.u2 := canno;
19050  699    3       ! 
19060  700    4       ! LOCK r AS telegram : to_telegram_type DO
19070  701    5       !   BEGIN   (* build up the buffer *)
19080  702    6       !   ! 
19090  703    7       !   ! WITH telegram DO
19100  704    8       !   !   BEGIN
19110  705    9       !   !   ! IF area_pointer = 1 THEN
19120  706   10       !   !   !   to_opcode := 3   (* OPR master opcode *)
19130  707   11       !   !   ! ELSE
19140  708   12       !   !   !   to_opcode := 1;  (* DATA master opcode *)
19150  709   13       !   !   ! to_serial_no := serial_no;
19160  710   14       !   !   ! to_data := area_to_lam( area_pointer );
19170  711   15       !   !   END;
19180  712   16       !   END (* of lock statement *);
19190  713   17       ! IF lamtest THEN calltest( r );
19200  714   18       ! 
19210  715   19       ! boo := check5( r, generate );  (* complete the telegram *)
19220  716   20       ! 
19230  717   21       !   (*---------------------------- keep the telegram *)
19240  718   22       ! LOCK r AS telegram : to_telegram_type DO
19250  719   23       !   keep_the_telegram := telegram;
19260  720   24       ! 
19270  721   25       END (* of procedure build_a_letter_telegram *);
19280  722            
19290  723            
19300  724            
19310  725            
19320  726             
\f

tsvaclst    81.06.16.   13.41.                                                    page    24

20010  727            PROCEDURE build_line_dep_telegram(
20020  728              VAR r   : reference;
20030  729              line_was: oknok_type
20040  730              );
20050  731              
20060  732                (* Maybe the serial number at VC(AT) has been changed *
20070  733                *  of some unknown reason. Line_was = nok indicates   *
20080  734                *  that the serial_no must be changed.                *)
20090  735              
20100  736            BEGIN
20110  737    1       ! 
20120  738    2       ! IF line_was = ok THEN
20130  739    3       !   build_same_telegram( r )
20140  740    4       ! ELSE   (* line was not ok *)
20150  741    5       !   build_serial_changed_telegram( r);
20160  742    6       ! 
20170  743    7       END (* of procedure build_line_dep_telegram *);
20180  744            
20190  745            
20200  746             
\f

tsvaclst    81.06.16.   13.41.                                                    page    25

21010  747            PROCEDURE build_an_lbuf(
21020  748              VAR r   : reference;
21030  749              x       : lbuf_record
21040  750              );
21050  751              
21060  752            BEGIN
21070  753    1       ! r^.u4 := x.opco;
21080  754    2       ! 
21090  755    3       ! CASE x.kind OF
21100  756    4       ! ! norm:
21110  757    5       ! !   LOCK r AS buf : mask_norm_lbuf DO
21120  758    6       ! !     BEGIN
21130  759    7       ! !     ! WITH buf.fix_label DO
21140  760    8       ! !     !   BEGIN
21150  761    9       ! !     !   ! no_of_by := x.noob;
21160  762   10       ! !     !   ! rec      := x.reci;
21170  763   11       ! !     !   ! op_code  := x.opco;
21180  764   12       ! !     !   ! update   := x.upda;
21190  765   13       ! !     !   ! result   := x.resu
21200  766   14       ! !     !   END;
21210  767   15       ! !     ! buf.norm_inf := x.dta1;
21220  768   16       ! !     ! buf.norm_inf1:= x.dta2
21230  769   17       ! !     END;
21240  770   18       ! ! 
21250  771   19       ! ! log:
21260  772   20       ! !   LOCK r AS buf : mask_log_lbuf DO
21270  773   21       ! !     BEGIN
21280  774   22       ! !     ! WITH buf.fix_label DO
21290  775   23       ! !     !   BEGIN
21300  776   24       ! !     !   ! no_of_by := x.noob;
21310  777   25       ! !     !   ! rec      := x.reci;
21320  778   26       ! !     !   ! op_code  := x.opco;
21330  779   27       ! !     !   ! update   := x.upda;
21340  780   28       ! !     !   ! result   := x.resu
21350  781   29       ! !     !   END;
21360  782   30       ! !     ! buf.log_addr  := x.addr;
21370  783   31       ! !     ! buf.log_opc   := x.dta1;
21380  784   32       ! !     ! buf.log_alarm := x.dta2;
21390  785   33       ! !     END
21400  786   34       ! END (* of case on x.kind *);
21410  787   35       ! 
21420  788   36       END (* of procedure build_an_lbuf *);
21430  789            
21440  790            
21450  791             
\f

tsvaclst    81.06.16.   13.41.                                                    page    26

22010  792            PROCEDURE demand_lbuf(
22020  793              d_kind : lbuf_kind_type;
22030  794              d_noob : integer;
22040  795              d_reci : alarmnetaddr;
22050  796              d_opco : byte;
22060  797              d_upda : update_range;
22070  798              d_resu : result_range;
22080  799              d_dta1 : byte;
22090  800              d_dta2 : byte;
22100  801              d_addr : alarmnetaddr
22110  802              );
22120  803              
22130  804            BEGIN
22140  805    1       ! 
22150  806    2       ! lbuf_needed := lbuf_needed + 1;
22160  807    3       ! WITH lbuf_info( lbuf_needed ) DO
22170  808    4       !   BEGIN
22180  809    5       !   ! kind := d_kind;
22190  810    6       !   ! noob := label_size + d_noob;
22200  811    7       !   ! reci := d_reci;
22210  812    8       !   ! opco := d_opco;
22220  813    9       !   ! upda := d_upda;
22230  814   10       !   ! resu := d_resu;
22240  815   11       !   ! dta1 := d_dta1;
22250  816   12       !   ! dta2 := d_dta2;
22260  817   13       !   ! addr := d_addr
22270  818   14       !   END;
22280  819   15       ! 
22290  820   16       END (* of procedure demand_lbuf *);
22300  821             
\f

tsvaclst    81.06.16.   13.41.                                                    page    27

23010  822            PROCEDURE fault_at_line;
23020  823            BEGIN
23030  824    1       ! 
23040  825    2       ! IF succ_line_errors <> max_int THEN
23050  826    3       !   succ_line_errors := succ_line_errors + 1;
23060  827    4       ! 
23070  828    5       ! IF succ_line_errors = max_succ_errors THEN
23080  829    6       !   BEGIN   (*------ line alarm *)
23090  830    7       !   ! IF lam_timeout THEN   (* timeout *)
23100  831    8       !   !   demand_lbuf( norm, 1, own_dc, #h31, 0, 0,
23110  832    9       !   !   at_tim_excess, 0, own_dc)
23120  833   10       !   ! ELSE                   (* not timeout *)
23130  834   11       !   !   demand_lbuf( norm, 1, own_dc, #h31, 0, 0,
23140  835   12       !   !   call, 0, own_dc );
23150  836   13       !   ! lam_timeout := false;
23160  837   14       !   END;
23170  838   15       ! 
23180  839   16       ! IF line_error_count <= (max_int - fix_incr_on_err) THEN
23190  840   17       !   line_error_count := line_error_count + fix_incr_on_err
23200  841   18       ! ELSE
23210  842   19       !   line_error_count := max_int;
23220  843   20       ! 
23230  844   21       ! IF (line_error_count >= serve_limit) AND below_serve_limit THEN
23240  845   22       !   BEGIN   (*------service alarm *)
23250  846   23       !   !   (* high counter *)
23260  847   24       !   ! demand_lbuf( norm, 1, own_dc, #h34, 0, 0,
23270  848   25       !   ! call, 0, own_dc );
23280  849   26       !   ! below_serve_limit := false;
23290  850   27       !   END;
23300  851   28       ! 
23310  852   29       ! IF (line_error_count >= stoppoll_limit) AND below_stoppoll_limit THEN
23320  853   30       !   BEGIN   (*------ stoppoll alarm *)
23330  854   31       !   !   (* high counter *)
23340  855   32       !   ! demand_lbuf( norm, 1, own_dc, #h35, 0, 0,
23350  856   33       !   ! call, 0, own_dc );
23360  857   34       !   ! below_stoppoll_limit := false;
23370  858   35       !   END;
23380  859   36       ! 
23390  860   37       ! line := nok;
23400  861   38       ! 
23410  862   39       END (* of fault_at_line *);
23420  863             
\f

tsvaclst    81.06.16.   13.41.                                                    page    28

24010  864            PROCEDURE ok_at_line;
24020  865            BEGIN
24030  866    1       ! line_error_count := line_error_count - 1;
24040  867    2       ! IF line_error_count < 0 THEN
24050  868    3       !   line_error_count := 0;   (* Must not be negative *)
24060  869    4       ! 
24070  870    5       ! IF (line_error_count < serve_limit) AND NOT(below_serve_limit) THEN
24080  871    6       !   BEGIN  (*------ recall service alarm *)
24090  872    7       !   !   (* low counter *)
24100  873    8       !   ! demand_lbuf( norm, 1, own_dc, #h34, 0, 0,
24110  874    9       !   ! recall, 0, own_dc );
24120  875   10       !   ! below_serve_limit := true;
24130  876   11       !   END;
24140  877   12       ! 
24150  878   13       ! IF (line_error_count < stoppoll_limit) AND NOT(below_stoppoll_limit) THEN
24160  879   14       !   BEGIN   (*------ recall stoppoll alarm *)
24170  880   15       !   !   (* low counter *)
24180  881   16       !   ! demand_lbuf( norm, 1, own_dc, #h35, 0, 0,
24190  882   17       !   ! recall, 0, own_dc );
24200  883   18       !   ! below_stoppoll_limit := true;
24210  884   19       !   END;
24220  885   20       ! 
24230  886   21       ! IF succ_line_errors >= max_succ_errors THEN
24240  887   22       !   BEGIN   (*------recall line alarm *)
24250  888   23       !   ! demand_lbuf( norm, 1, own_dc, #h31, 0, 0,
24260  889   24       !   ! recall, 0, own_dc );
24270  890   25       !   END;
24280  891   26       ! 
24290  892   27       ! succ_line_errors := 0;
24300  893   28       ! 
24310  894   29       ! line := ok;
24320  895   30       ! 
24330  896   31       !   (*q if test then
24340  897   32       !   begin
24350  898   33       !   testout(zout,"line state: ",ord(line));
24360  899   34       !   testout(zout,"succ lineerr",succ_line_errors);
24370  900   35       !   testout(zout,"lineerrcount",line_error_count);
24380  901   36       !   end; q*)
24390  902   37       ! 
24400  903   38       END (* of ok_at_line *);
24410  904            
24420  905             
\f

tsvaclst    81.06.16.   13.41.                                                    page    29

25010  906            PROCEDURE to_lam_driver;
25020  907              
25030  908                (***********************************************************
25040  909                * The buftype is alarm, report or testat.                  *
25050  910                * Send a letter to VC(AT). A letter is always 3 telegrams  *
25060  911                * The reference to the message buffer is mess_ref and this *
25070  912                * buffer will be released, ie buftype = empty.             *
25080  913                * The reference to the unused lam buffer is tolam_ref.     *
25090  914                * The letter is stored in the area_to_lam array            *
25100  915                ************************************************************)
25110  916              
25120  917            BEGIN
25130  918    1       ! 
25140  919    2       ! CASE buftype OF
25150  920    3       ! ! 
25160  921    4       ! ! testat :    (* Send TESTI telegram by order of own DC *)
25170  922    5       ! !   BEGIN     (* opcode 8,0 or 8,2 *)
25180  923    6       ! !   ! 
25190  924    7       ! !   ! serial_no := 1 - serial_no;
25200  925    8       ! !   ! tolam_ref^.u2 := canno;
25210  926    9       ! !   ! 
25220  927   10       ! !   !   (*----------------------- build the telegram of TESTI *)
25230  928   11       ! !   ! LOCK tolam_ref AS telegram : to_telegram_type DO
25240  929   12       ! !   !   BEGIN
25250  930   13       ! !   !   ! WITH telegram DO
25260  931   14       ! !   !   !   BEGIN
25270  932   15       ! !   !   !   ! to_opcode := 2;
25280  933   16       ! !   !   !   ! to_serial_no := serial_no;
25290  934   17       ! !   !   !   ! IF keep_the_opcode = #h80 THEN
25300  935   18       ! !   !   !   !   to_data := 0
25310  936   19       ! !   !   !   ! ELSE
25320  937   20       ! !   !   !   !   to_data := 1;
25330  938   21       ! !   !   !   END;
25340  939   22       ! !   !   END (* of lock statement *);
25350  940   23       ! !   ! IF lamtest THEN calltest( tolam_ref );
25360  941   24       ! !   ! 
25370  942   25       ! !   !   (*----------------------- complete the telegram *)
25380  943   26       ! !   ! boo := check5( tolam_ref, generate );
25390  944   27       ! !   ! 
25400  945   28       ! !   !   (*----------------------- keep the telegram *)
25410  946   29       ! !   ! LOCK tolam_ref AS telegram : to_telegram_type DO
25420  947   30       ! !   !   keep_the_telegram := telegram;
25430  948   31       ! !   ! 
25440  949   32       ! !   ! lamspeak_state := testi;
25450  950   33       ! !   ! 
25460  951   34       ! !   ! signal( tolam_ref, lamsem^ );
\f

tsvaclst    81.06.16.   13.41.                                                    page    30

25470  952   35       ! !   END (* of testat *);
25480  953   36       ! ! 
25490  954   37       ! ! alarm,
25500  955   38       ! ! report :    (* Send a letter by order of an AT-CONNECTOR *)
25510  956   39       ! !   BEGIN
25520  957   40       ! !   ! 
25530  958   41       ! !   ! area_pointer := 1;
25540  959   42       ! !   ! 
25550  960   43       ! !   ! area_to_lam( 1 ) := keep_the_opcode;
25560  961   44       ! !   ! area_to_lam( 2 ) := adr_code; (* a lookup in the AT-addr_table *
25570  962   45       ! !   !                               * is made outside lamspeak      *)
25580  963   46       ! !   ! 
25590  964   47       ! !   ! LOCK mess_ref AS buf : mask_norm_lbuf DO
25600  965   48       ! !   !   BEGIN
25610  966   49       ! !   !   ! numb_of_bytes := buf.fix_label.no_of_by;
25620  967   50       ! !   !   ! IF numb_of_bytes = label_size THEN
25630  968   51       ! !   !   !   area_to_lam( 3 ) := 0
25640  969   52       ! !   !   ! ELSE   (* nbbbbb numb_of_bytes must be label_size + 1 here *)
25650  970   53       ! !   !   !   area_to_lam( 3 ) := buf.norm_inf;
25660  971   54       ! !   !   ! 
25670  972   55       ! !   !   ! IF (keep_the_opcode=#h41) OR (keep_the_opcode=#h85) THEN
25680  973   56       ! !   !   !   CASE buf.fix_label.result OF
25690  974   57       ! !   !   !   ! 0: area_to_lam(1) := keep_the_opcode    (* accepted *)
25700  975   58       ! !   !   !   !   OTHERWISE area_to_lam(1) := keep_the_opcode+1   (* rejected *)
25710  976   59       ! !   !   !   END (* of case *);
25720  977   60       ! !   !   ! 
25730  978   61       ! !   !   END (* of lock statement *);
25740  979   62       ! !   ! 
25750  980   63       ! !   ! build_a_letter_telegram( tolam_ref );
25760  981   64       ! !   ! lamspeak_state := lettertovc;
25770  982   65       ! !   ! signal( tolam_ref, lamsem^ );
25780  983   66       ! !   ! 
25790  984   67       ! !   END; (* of alarm, report *)
25800  985   68       ! ! 
25810  986   69       ! ! permiss :   (* send a letter by order of own dc, opcode 0.1-6.2-6.4 *)
25820  987   70       ! !   BEGIN
25830  988   71       ! !   ! area_pointer := 1;
25840  989   72       ! !   ! area_to_lam(1) := keep_the_opcode;
25850  990   73       ! !   ! 
25860  991   74       ! !   ! IF (func=2) OR (func=9) THEN
25870  992   75       ! !   !   LOCK mess_ref AS buf: mask_byte DO
25880  993   76       ! !   !     WITH buf DO
25890  994   77       ! !   !       CASE func OF
25900  995   78       ! !   !       ! 2 : BEGIN
25910  996   79       ! !   !       !   ! area_to_lam(2):= fix.op_code;
25920  997   80       ! !   !       !   ! area_to_lam(3):= fix.update
\f

tsvaclst    81.06.16.   13.41.                                                    page    31

25930  998   81       ! !   !       !   END;
25940  999   82       ! !   !       ! 9 : BEGIN
25950 1000   83       ! !   !       !   ! area_to_lam(2):= fix.op_code;
25960 1001   84       ! !   !       !   ! area_to_lam(3):= data(1)
25970 1002   85       ! !   !       !   END
25980 1003   86       ! !   !       END ELSE
25990 1004   87       ! !   !       LOCK mess_ref AS buf: mask_vcm DO
26000 1005   88       ! !   !         WITH buf DO
26010 1006   89       ! !   !           BEGIN
26020 1007   90       ! !   !           ! CASE func OF
26030 1008   91       ! !   !           ! ! 0: BEGIN
26040 1009   92       ! !   !           ! !   ! area_to_lam(2):= fix.op_code;
26050 1010   93       ! !   !           ! !   ! area_to_lam(3):= datab;
26060 1011   94       ! !   !           ! !   END;
26070 1012   95       ! !   !           ! ! 1: BEGIN
26080 1013   96       ! !   !           ! !   ! area_to_lam(2):= fix.op_code;
26090 1014   97       ! !   !           ! !   ! area_to_lam(3):= fix.result;
26100 1015   98       ! !   !           ! !   END;
26110 1016   99       ! !   !           ! ! 6: BEGIN
26120 1017  100       ! !   !           ! !   ! area_to_lam(2) := fix.op_code;
26130 1018  101       ! !   !           ! !   ! area_to_lam(3) := fix.update;  (* 0: says start at, 1: stop at *)
26140 1019  102       ! !   !           ! !   END;
26150 1020  103       ! !   !           ! ! 7: BEGIN
26160 1021  104       ! !   !           ! !   ! area_to_lam(2):= 0;
26170 1022  105       ! !   !           ! !   ! area_to_lam(3):= 0;
26180 1023  106       ! !   !           ! !   END;
26190 1024  107       ! !   !           ! END; (* of case *)
26200 1025  108       ! !   !           END; (* of lock statement *)
26210 1026  109       ! !   ! 
26220 1027  110       ! !   ! build_a_letter_telegram( tolam_ref );
26230 1028  111       ! !   ! lamspeak_state := lettertovc;
26240 1029  112       ! !   ! signal( tolam_ref, lamsem^ );
26250 1030  113       ! !   ! 
26260 1031  114       ! !   END (* of permiss *)
26270 1032  115       ! !   
26280 1033  116       ! END (* of case *);
26290 1034  117       ! 
26300 1035  118       END (* of to_lam_driver *);
26310 1036            
26320 1037             
\f

tsvaclst    81.06.16.   13.41.                                                    page    32

27010 1038            PROCEDURE from_lam_driver;
27020 1039            VAR
27030 1040              hlp, i: integer;
27040 1041            BEGIN
27050 1042    1       ! 
27060 1043    2       ! CASE lamspeak_state OF
27070 1044    3       ! ! 
27080 1045    4       ! ! lettertovc :   (* master telegram is opr or data ================*)
27090 1046    5       ! !   CASE slave_opcode OF
27100 1047    6       ! !   ! 
27110 1048    7       ! !   ! p_ack,
27120 1049    8       ! !   ! data ,
27130 1050    9       ! !   ! opr  :   (* non expected answer on opr or data *)
27140 1051   10       ! !   !   speak_action := 1;
27150 1052   11       ! !   ! 
27160 1053   12       ! !   ! status:
27170 1054   13       ! !   !   speak_action := 14;
27180 1055   14       ! !   ! 
27190 1056   15       ! !   ! d_ack:
27200 1057   16       ! !   !   CASE area_pointer OF
27210 1058   17       ! !   !   ! 1:   (* non expected answer on opr *)
27220 1059   18       ! !   !   !   speak_action := 1;
27230 1060   19       ! !   !   ! 2:   (* data sended for the first time *)
27240 1061   20       ! !   !   !   speak_action := 3
27250 1062   21       ! !   !   !   OTHERWISE   (* data sended for the third time *)
27260 1063   22       ! !   !   !   speak_action := 4
27270 1064   23       ! !   !   END (* of case on area_pointer *);
27280 1065   24       ! !   ! 
27290 1066   25       ! !   ! t_ack:
27300 1067   26       ! !   !   CASE area_pointer OF
27310 1068   27       ! !   !   ! 1:   (* expected answer on opr *)
27320 1069   28       ! !   !   !   speak_action := 3
27330 1070   29       ! !   !   !   OTHERWISE   (* non expected answer on data *)
27340 1071   30       ! !   !   !   speak_action := 1
27350 1072   31       ! !   !   END (* of case on area_pointer *);
27360 1073   32       ! !   ! 
27370 1074   33       ! !   ! nak ,
27380 1075   34       ! !   ! free:
27390 1076   35       ! !   !   speak_action := 2;
27400 1077   36       ! !   ! 
27410 1078   37       ! !   END (* of case in lettertovc *);
27420 1079   38       ! ! 
27430 1080   39       ! ! 
27440 1081   40       ! ! letterfromvc:   (* master telegram is poll =====================*)
27450 1082   41       ! !   CASE slave_opcode OF
27460 1083   42       ! !   ! 
\f

tsvaclst    81.06.16.   13.41.                                                    page    33

27470 1084   43       ! !   ! p_ack:
27480 1085   44       ! !   !   speak_action := 5;
27490 1086   45       ! !   ! 
27500 1087   46       ! !   ! data :
27510 1088   47       ! !   !   CASE area_pointer OF
27520 1089   48       ! !   !   ! 1:
27530 1090   49       ! !   !   !   speak_action := 1;
27540 1091   50       ! !   !   ! 2:
27550 1092   51       ! !   !   !   speak_action := 6;
27560 1093   52       ! !   !   ! 3:
27570 1094   53       ! !   !   !   speak_action := 7
27580 1095   54       ! !   !   END (* of case *);
27590 1096   55       ! !   ! 
27600 1097   56       ! !   ! opr  ,
27610 1098   57       ! !   ! d_ack,
27620 1099   58       ! !   ! t_ack:   (* non expected answer on poll *)
27630 1100   59       ! !   !   speak_action := 1;
27640 1101   60       ! !   ! 
27650 1102   61       ! !   ! status:
27660 1103   62       ! !   !   speak_action := 14;
27670 1104   63       ! !   ! 
27680 1105   64       ! !   ! nak  ,
27690 1106   65       ! !   ! free :
27700 1107   66       ! !   !   speak_action := 2;
27710 1108   67       ! !   END (* of case in letterfromvc *);
27720 1109   68       ! ! 
27730 1110   69       ! ! 
27740 1111   70       ! ! polling:   (* master telegram is poll ===========================*)
27750 1112   71       ! !   CASE slave_opcode OF
27760 1113   72       ! !   ! 
27770 1114   73       ! !   ! p_ack:
27780 1115   74       ! !   !   speak_action := 8;
27790 1116   75       ! !   ! 
27800 1117   76       ! !   ! data ,
27810 1118   77       ! !   ! d_ack,
27820 1119   78       ! !   ! t_ack:   (* non expected answer on poll *)
27830 1120   79       ! !   !   speak_action := 9;
27840 1121   80       ! !   ! 
27850 1122   81       ! !   ! opr  :
27860 1123   82       ! !   !   speak_action := 10;
27870 1124   83       ! !   ! 
27880 1125   84       ! !   ! status:
27890 1126   85       ! !   !   speak_action := 14;
27900 1127   86       ! !   ! 
27910 1128   87       ! !   ! nak  ,
27920 1129   88       ! !   ! free :
\f

tsvaclst    81.06.16.   13.41.                                                    page    34

27930 1130   89       ! !   !   speak_action := 11;
27940 1131   90       ! !   ! 
27950 1132   91       ! !   END (* of case in polling *);
27960 1133   92       ! ! 
27970 1134   93       ! ! 
27980 1135   94       ! ! testi :   (* master telegram is testi =============================*)
27990 1136   95       ! !   CASE slave_opcode OF
28000 1137   96       ! !   ! 
28010 1138   97       ! !   ! p_ack ,
28020 1139   98       ! !   ! data  ,
28030 1140   99       ! !   ! opr   ,
28040 1141  100       ! !   ! d_ack :   (* non expected answer on testi *)
28050 1142  101       ! !   !   speak_action := 1;
28060 1143  102       ! !   ! 
28070 1144  103       ! !   ! status:
28080 1145  104       ! !   !   speak_action := 14;
28090 1146  105       ! !   ! 
28100 1147  106       ! !   ! t_ack :
28110 1148  107       ! !   !   speak_action := 12;
28120 1149  108       ! !   ! 
28130 1150  109       ! !   ! nak   ,
28140 1151  110       ! !   ! free  :
28150 1152  111       ! !   !   speak_action := 2;
28160 1153  112       ! !   ! 
28170 1154  113       ! !   END (* of case in testi *)
28180 1155  114       ! END (* of case on lamspeak_state *);
28190 1156  115       ! 
28200 1157  116       ! 
28210 1158  117       ! CASE speak_action OF   (* the treatment of: "speak_actions" =======*)
28220 1159  118       ! ! 
28230 1160  119       ! ! 1:   (* non expected answers *)
28240 1161  120       ! !   BEGIN
28250 1162  121       ! !   ! build_line_dep_telegram( tolam_ref, line );
28260 1163  122       ! !   ! fault_at_line;
28270 1164  123       ! !   ! signal( tolam_ref, lamsem^ )
28280 1165  124       ! !   END;
28290 1166  125       ! ! 
28300 1167  126       ! ! 2:   (* nak and free answers only *)
28310 1168  127       ! !   BEGIN
28320 1169  128       ! !   ! fault_at_line;
28330 1170  129       ! !   ! build_same_telegram( tolam_ref );
28340 1171  130       ! !   ! signal( tolam_ref, lamsem^ )
28350 1172  131       ! !   END;
28360 1173  132       ! ! 
28370 1174  133       ! ! 3:   (* letter not finished *)
28380 1175  134       ! !   BEGIN
\f

tsvaclst    81.06.16.   13.41.                                                    page    35

28390 1176  135       ! !   ! ok_at_line;
28400 1177  136       ! !   ! area_pointer := area_pointer + 1;
28410 1178  137       ! !   ! build_a_letter_telegram( tolam_ref );
28420 1179  138       ! !   ! signal( tolam_ref, lamsem^ )
28430 1180  139       ! !   END;
28440 1181  140       ! ! 
28450 1182  141       ! ! 4:   (* letter finished, make receipt *)
28460 1183  142       ! !   BEGIN
28470 1184  143       ! !   ! ok_at_line;
28480 1185  144       ! !   ! area_pointer := 1;
28490 1186  145       ! !   ! 
28500 1187  146       ! !   ! CASE area_to_lam(1) OF
28510 1188  147       ! !   ! ! #h30, #h31, #h32 :   (* make receipt of delivered alarm *)
28520 1189  148       ! !   ! !   BEGIN
28530 1190  149       ! !   ! !   ! boo := get_net_addr( at_table_addr, area_to_lam(2) );
28540 1191  150       ! !   ! !   ! demand_lbuf( log, 6, own_dc_log, #h2, 0, 0,
28550 1192  151       ! !   ! !   ! area_to_lam(1), area_to_lam(3), at_table_addr )
28560 1193  152       ! !   ! !   END;
28570 1194  153       ! !   ! ! #h62 :    (* make receipt of other *)
28580 1195  154       ! !   ! !   BEGIN
28590 1196  155       ! !   ! !   ! boo:= get_net_addr ( at_table_addr, area_to_lam(2));
28600 1197  156       ! !   ! !   ! work.macro:= pack_dc_macro ( at_table_addr );
28610 1198  157       ! !   ! !   ! work.micro:= dc_test_mic_addr;
28620 1199  158       ! !   ! !   ! demand_lbuf ( log, 4, work, #h63,
28630 1200  159       ! !   ! !   ! 0, 0, 0, 0, at_table_addr );
28640 1201  160       ! !   ! !   END;
28650 1202  161       ! !   ! ! OTHERWISE (* nothing *)
28660 1203  162       ! !   ! END (* of case *);
28670 1204  163       ! !   ! 
28680 1205  164       ! !   !   (* make master poll to handle response from vc *)
28690 1206  165       ! !   ! build_a_poll_telegram( tolam_ref );
28700 1207  166       ! !   ! lamspeak_state := polling;
28710 1208  167       ! !   ! signal( tolam_ref, lamsem^ )
28720 1209  168       ! !   END;
28730 1210  169       ! ! 
28740 1211  170       ! ! 5:   (* poll answers leading to poll sending *)
28750 1212  171       ! !   BEGIN
28760 1213  172       ! !   ! ok_at_line;
28770 1214  173       ! !   ! build_a_poll_telegram( tolam_ref );
28780 1215  174       ! !   ! signal( tolam_ref, lamsem^ )
28790 1216  175       ! !   END;
28800 1217  176       ! ! 
28810 1218  177       ! ! 6:
28820 1219  178       ! !   BEGIN
28830 1220  179       ! !   ! area_from_lam(area_pointer) := slave_data;
28840 1221  180       ! !   ! area_pointer := area_pointer + 1;
\f

tsvaclst    81.06.16.   13.41.                                                    page    36

28850 1222  181       ! !   ! ok_at_line;
28860 1223  182       ! !   ! build_a_poll_telegram( tolam_ref );
28870 1224  183       ! !   ! signal( tolam_ref, lamsem^ )
28880 1225  184       ! !   END;
28890 1226  185       ! ! 
28900 1227  186       ! ! 7:   (* three gathered telegrams, make lbuf *)
28910 1228  187       ! !   BEGIN
28920 1229  188       ! !   ! area_from_lam(area_pointer) := slave_data;
28930 1230  189       ! !   ! ok_at_line;
28940 1231  190       ! !   ! area_pointer := 1;
28950 1232  191       ! !   ! lamspeak_state := nottele;
28960 1233  192       ! !   ! 
28970 1234  193       ! !   !   (* send the letter via lbuf *)
28980 1235  194       ! !   ! hlp := area_from_lam(1);
28990 1236  195       ! !   ! found:= true;
29000 1237  196       ! !   ! 
29010 1238  197       ! !   ! IF (hlp<7) OR (hlp=#h40) OR (hlp=#h84) THEN
29020 1239  198       ! !   !   found:= get_net_addr( at_table_addr, area_from_lam(2)) ELSE
29030 1240  199       ! !   !   IF hlp=#h20 THEN
29040 1241  200       ! !   !     found:= get_vc_netaddr( work, area_from_lam(2));
29050 1242  201       ! !   ! CASE found OF
29060 1243  202       ! !   ! ! true :
29070 1244  203       ! !   ! !   BEGIN
29080 1245  204       ! !   ! !   ! CASE hlp OF
29090 1246  205       ! !   ! !   ! ! #h40, #h84 :           (* "styr" or "test" *)
29100 1247  206       ! !   ! !   ! !   demand_lbuf( norm, 1, at_table_addr, hlp, 0, 0,
29110 1248  207       ! !   ! !   ! !   area_from_lam(3), 0, own_dc );
29120 1249  208       ! !   ! !   ! ! 7, 8 :     (* nedl{g VC *)
29130 1250  209       ! !   ! !   ! !   demand_lbuf( norm, 0, own_dc, #h73, 0, area_from_lam(3) MOD 2,
29140 1251  210       ! !   ! !   ! !   0, 0, at_table_addr);
29150 1252  211       ! !   ! !   ! ! #h20 :     (* message *)
29160 1253  212       ! !   ! !   ! !   demand_lbuf( norm, 1, work, #h98, 0, 0,
29170 1254  213       ! !   ! !   ! !   area_from_lam(3), 0, own_dc);
29180 1255  214       ! !   ! !   ! ! 1..6 :      (* "start AT", "stop AT", "-start AT" *)
29190 1256  215       ! !   ! !   ! !     (* "-stop AT", "nlat"   , "-nlat"     *)
29200 1257  216       ! !   ! !   ! !   BEGIN
29210 1258  217       ! !   ! !   ! !   ! CASE hlp OF
29220 1259  218       ! !   ! !   ! !   ! ! 1, 3:  i := start_code; (* permission was "start at" *)
29230 1260  219       ! !   ! !   ! !   ! ! 2, 4:  i :=  stop_code; (* permission was "stop  at" *)
29240 1261  220       ! !   ! !   ! !   ! ! 5:  i:= accepted;
29250 1262  221       ! !   ! !   ! !   ! ! 6:  i:= not_accepted
29260 1263  222       ! !   ! !   ! !   ! END (* of case *);
29270 1264  223       ! !   ! !   ! !   ! work.macro:= pack_dc_macro ( at_table_addr );
29280 1265  224       ! !   ! !   ! !   ! work.micro:= dc_poll_mic_addr;
29290 1266  225       ! !   ! !   ! !   ! CASE hlp OF
29300 1267  226       ! !   ! !   ! !   ! ! 1,2,3,4:
\f

tsvaclst    81.06.16.   13.41.                                                    page    37

29310 1268  227       ! !   ! !   ! !   ! !   demand_lbuf( log, 4, work, #h64, i, area_from_lam(3) MOD 2,
29320 1269  228       ! !   ! !   ! !   ! !   0, 0, at_table_addr );
29330 1270  229       ! !   ! !   ! !   ! ! 5,6:
29340 1271  230       ! !   ! !   ! !   ! !   demand_lbuf( log, 4, work, #h67, 0, i,
29350 1272  231       ! !   ! !   ! !   ! !   0, 0, at_table_addr );
29360 1273  232       ! !   ! !   ! !   ! END (* case *);
29370 1274  233       ! !   ! !   ! !   END
29380 1275  234       ! !   ! !   ! !   OTHERWISE
29390 1276  235       ! !   ! !   ! !   BEGIN   (* refuse command *)
29400 1277  236       ! !   ! !   ! !   ! area_to_lam(1) := #h10;
29410 1278  237       ! !   ! !   ! !   ! area_to_lam(2) := area_from_lam(2);
29420 1279  238       ! !   ! !   ! !   ! area_to_lam(3) := area_from_lam(3);
29430 1280  239       ! !   ! !   ! !   ! lamspeak_state := lettertovc;
29440 1281  240       ! !   ! !   ! !   ! build_a_letter_telegram( tolam_ref );
29450 1282  241       ! !   ! !   ! !   ! signal( tolam_ref, lamsem^ );
29460 1283  242       ! !   ! !   ! !   END;
29470 1284  243       ! !   ! !   ! END (* end case hlp *);
29480 1285  244       ! !   ! !   END;
29490 1286  245       ! !   ! ! 
29500 1287  246       ! !   ! ! false:
29510 1288  247       ! !   ! !   BEGIN
29520 1289  248       ! !   ! !   ! IF (hlp = #h40) OR (hlp = #h84) THEN
29530 1290  249       ! !   ! !   !   area_to_lam(1) := #hf0
29540 1291  250       ! !   ! !   ! ELSE
29550 1292  251       ! !   ! !   !   IF hlp=#h20 THEN
29560 1293  252       ! !   ! !   !     area_to_lam(1):= #hf1
29570 1294  253       ! !   ! !   !   ELSE
29580 1295  254       ! !   ! !   !     IF (0<hlp) AND (hlp<7) THEN
29590 1296  255       ! !   ! !   !       area_to_lam(1) := #hf0
29600 1297  256       ! !   ! !   !     ELSE
29610 1298  257       ! !   ! !   !       area_to_lam(1) := #h10;
29620 1299  258       ! !   ! !   ! area_to_lam(2) := area_from_lam(2);
29630 1300  259       ! !   ! !   ! area_to_lam(3) := area_from_lam(3);
29640 1301  260       ! !   ! !   ! lamspeak_state := lettertovc;
29650 1302  261       ! !   ! !   ! build_a_letter_telegram( tolam_ref );
29660 1303  262       ! !   ! !   ! signal( tolam_ref, lamsem^ );
29670 1304  263       ! !   ! !   END (* of false *)
29680 1305  264       ! !   ! END (* of case on check *)
29690 1306  265       ! !   END (* of action 7 *);
29700 1307  266       ! ! 
29710 1308  267       ! ! 8:   (* a single poll caused by a clockpulse *)
29720 1309  268       ! !   BEGIN
29730 1310  269       ! !   ! ok_at_line;
29740 1311  270       ! !   ! buftype := used;
29750 1312  271       ! !   ! lamspeak_state := nottele
29760 1313  272       ! !   END (* of action 8 *);
\f

tsvaclst    81.06.16.   13.41.                                                    page    38

29770 1314  273       ! ! 
29780 1315  274       ! ! 9:   (* non expected answers caused by a single poll *)
29790 1316  275       ! !   BEGIN
29800 1317  276       ! !   ! fault_at_line;
29810 1318  277       ! !   ! buftype := used;
29820 1319  278       ! !   ! lamspeak_state := nottele
29830 1320  279       ! !   END (* of action 9 *);
29840 1321  280       ! ! 
29850 1322  281       ! ! 10:   (* first telegram of a letter is comming *)
29860 1323  282       ! !   BEGIN
29870 1324  283       ! !   ! ok_at_line;;
29880 1325  284       ! !   ! area_from_lam(1) := slave_data;
29890 1326  285       ! !   ! area_pointer := 2;
29900 1327  286       ! !   ! build_a_poll_telegram( tolam_ref );
29910 1328  287       ! !   ! lamspeak_state := letterfromvc;
29920 1329  288       ! !   ! signal ( tolam_ref, lamsem^ )
29930 1330  289       ! !   END (* of action 10 *);
29940 1331  290       ! ! 
29950 1332  291       ! ! 11:   (* nak and free answers in polling state only *)
29960 1333  292       ! !   BEGIN
29970 1334  293       ! !   ! fault_at_line;
29980 1335  294       ! !   ! buftype := used;
29990 1336  295       ! !   ! lamspeak_state := nottele
30000 1337  296       ! !   END;
30010 1338  297       ! ! 
30020 1339  298       ! ! 12:   (* usable answers on master testi *)
30030 1340  299       ! !   BEGIN
30040 1341  300       ! !   ! 
30050 1342  301       ! !   ! ok_at_line;
30060 1343  302       ! !   ! demand_lbuf( norm, 1, keep_sender, keep_the_opcode+1, 0, accepted,
30070 1344  303       ! !   ! slave_data, 0, own_dc );
30080 1345  304       ! !   !   (*------ 8.1 or 8.3 demanded *)
30090 1346  305       ! !   ! buftype := used;
30100 1347  306       ! !   ! lamspeak_state := nottele;
30110 1348  307       ! !   ! 
30120 1349  308       ! !   END (* of action 12 *);
30130 1350  309       ! ! 
30140 1351  310       ! ! 13:   (* empty *);
30150 1352  311       ! ! 
30160 1353  312       ! ! 14:   (* status answers *)
30170 1354  313       ! !   BEGIN
30180 1355  314       ! !   ! demand_lbuf( norm, 1, own_dc, #h32, 0, 0,
30190 1356  315       ! !   ! slave_data, 0, own_dc );
30200 1357  316       ! !   ! ok_at_line;
30210 1358  317       ! !   ! build_serial_changed_telegram( tolam_ref);
30220 1359  318       ! !   ! signal( tolam_ref, lamsem^ )
\f

tsvaclst    81.06.16.   13.41.                                                    page    39

30230 1360  319       ! !   END (* of action 14 *);
30240 1361  320       ! ! 
30250 1362  321       ! END (* of case on speak_action *);
30260 1363  322       ! 
30270 1364  323       END (* of from_lam_driver procedure *);
30280 1365            
30290 1366             
\f

tsvaclst    81.06.16.   13.41.                                                    page    40

31010 1367          BEGIN
31020 1368    1     !   (*******************************************
31030 1369    2     !   **** the body of the lamspeak procedure ****
31040 1370    3     !   ********************************************)
31050 1371    4     ! 
31060 1372    5     !   (*q if test then testout(zout,"speak st in ",ord(lamspeak_state)); q*)
31070 1373    6     ! 
31080 1374    7     ! CASE buftype OF
31090 1375    8     ! ! clock :                                                  (* <--------<< *)
31100 1376    9     ! !     (* ------ No nessage buffer is involved.       *
31110 1377   10     ! !     *  ------ The lam buffer is idle at tolam_ref. *)
31120 1378   11     ! !   
31130 1379   12     ! !   BEGIN
31140 1380   13     ! !   ! 
31150 1381   14     ! !   ! build_a_poll_telegram( tolam_ref );
31160 1382   15     ! !   ! lamspeak_state := polling;
31170 1383   16     ! !   ! signal( tolam_ref, lamsem^ );
31180 1384   17     ! !   ! 
31190 1385   18     ! !   END;
31200 1386   19     ! ! 
31210 1387   20     ! ! permiss,
31220 1388   21     ! ! alarm,                                                  (* <--------<< *)
31230 1389   22     ! ! report,
31240 1390   23     ! ! testat:
31250 1391   24     ! !     (* the message buffer is involved at mess_ref.  *
31260 1392   25     ! !     *  return  this buffer, ie buftype := empty.    *
31270 1393   26     ! !     *  The lam buffer is idle at tolam_ref.         *)
31280 1394   27     ! !   BEGIN
31290 1395   28     ! !   ! keep_the_opcode:= mess_ref^.u4;
31300 1396   29     ! !   ! to_lam_driver;
31310 1397   30     ! !   ! buftype := empty;
31320 1398   31     ! !   END;
31330 1399   32     ! ! 
31340 1400   33     ! ! lam :
31350 1401   34     ! !     (* The message buffer is a lam buffer, that is        *
31360 1402   35     ! !     *  the lam buffer is not idle.                        *
31370 1403   36     ! !     *  Transfer the reference, ie tolam_ref :=: mess_ref. *)
31380 1404   37     ! !   BEGIN
31390 1405   38     ! !   ! tolam_ref :=: mess_ref;
31400 1406   39     ! !   ! 
31410 1407   40     ! !   ! LOCK tolam_ref AS telegram : from_telegram_type DO
31420 1408   41     ! !   !   BEGIN   (*----- get all the information needed *)
31430 1409   42     ! !   !   ! slave_opcode := telegram.from_opcode;
31440 1410   43     ! !   !   ! slave_data   := telegram.from_data;
31450 1411   44     ! !   !   END;
31460 1412   45     ! !   ! 
\f

tsvaclst    81.06.16.   13.41.                                                    page    41

31470 1413   46     ! !   !   (*x if lamtest then
31480 1414   47     ! !   !   begin
31490 1415   48     ! !   !   case slave_opcode of
31500 1416   49     ! !   !   0: teletxt := "    P-ACK   ";
31510 1417   50     ! !   !   1: teletxt := "    DATA    ";
31520 1418   51     ! !   !   2: teletxt := "    OPR     ";
31530 1419   52     ! !   !   3: teletxt := "    STATUS  ";
31540 1420   53     ! !   !   4: teletxt := "    D-ACK   ";
31550 1421   54     ! !   !   5: teletxt := "    T-ACK   ";
31560 1422   55     ! !   !   6: teletxt := "    NAK     ";
31570 1423   56     ! !   !   7: teletxt := "    FREE    "
31580 1424   57     ! !   !   end;
31590 1425   58     ! !   !   testout(zout, teletxt, slave_data);
31600 1426   59     ! !   !   end; x*)
31610 1427   60     ! !   ! 
31620 1428   61     ! !   ! IF check5( tolam_ref, check ) = false THEN
31630 1429   62     ! !   !   BEGIN
31640 1430   63     ! !   !   ! slave_opcode := free;
31650 1431   64     ! !   !   ! IF lamtest THEN testout(zout,"CHEHK5FAULT ",slave_opcode);
31660 1432   65     ! !   !   END;
31670 1433   66     ! !   ! 
31680 1434   67     ! !   ! IF tolam_ref^.u2 <> 0 THEN
31690 1435   68     ! !   !   BEGIN
31700 1436   69     ! !   !   ! slave_opcode := free;
31710 1437   70     ! !   !   ! IF tolam_ref^.u2 = 5 THEN
31720 1438   71     ! !   !   !   BEGIN
31730 1439   72     ! !   !   !   ! lam_timeout := true;
31740 1440   73     ! !   !   !   !   (*x if lamtest then testout(zout,"LAMTIMEOUT  ",slave_opcode); x*)
31750 1441   74     ! !   !   !   END;
31760 1442   75     ! !   !   !   (*x if lamtest then testout(zout,"LAMFAULT    ",tolam_ref^.u2); x*)
31770 1443   76     ! !   !   END;
31780 1444   77     ! !   ! 
31790 1445   78     ! !   ! from_lam_driver;
31800 1446   79     ! !   ! 
31810 1447   80     ! !   END;
31820 1448   81     ! ! 
31830 1449   82     ! ! listen :                                               (* <--------<< *)
31840 1450   83     ! !     (* The listen buffer is refered to by mess_ref. *)
31850 1451   84     ! !   BEGIN
31860 1452   85     ! !   !   (*---- Nb ---- if lbuf_needed < 1 the program fault *)
31870 1453   86     ! !   ! 
31880 1454   87     ! !   ! build_an_lbuf( mess_ref, lbuf_info( lbuf_needed ) );
31890 1455   88     ! !   ! 
31900 1456   89     ! !   ! lbuf_needed := lbuf_needed - 1;
31910 1457   90     ! !   ! 
31920 1458   91     ! !   ! buftype := listen;
\f

tsvaclst    81.06.16.   13.41.                                                    page    42

31930 1459   92     ! !   ! 
31940 1460   93     ! !   END
31950 1461   94     ! !   OTHERWISE
31960 1462   95     ! !     (*-------- Nb --- program fault *);
31970 1463   96     ! ! 
31980 1464   97     ! END (* of case on buftype *);
31990 1465   98     ! 
32000 1466   99     ! IF lamspeak_state = nottele THEN
32010 1467  100     !   vcatc_state := active;
32020 1468  101     ! 
32030 1469  102     ! IF lbuf_needed > 0 THEN
32040 1470  103     !   BEGIN
32050 1471  104     !   !   (*q if test then testout(zout,"lbuf needed:",lbuf_needed); q*)
32060 1472  105     !   ! vcatc_state := lam_need_buf;
32070 1473  106     !   ! IF no_of_listen > 0 THEN
32080 1474  107     !   !   input := from_listen_ref;  (* There is a lbuf *)
32090 1475  108     !   END;
32100 1476  109     ! 
32110 1477  110     !   (*q if test then testout(zout,"speak st out",ord(lamspeak_state)); q*)
32120 1478  111     END (* of lamspeak procedure *);
32130 1479           
\f

tsvaclst    81.06.16.   13.41.                                                    page    43

33010 1480        BEGIN   (***** main program *****)
33020 1481    1   ! 
33030 1482    2   !   (* initier module *)
33040 1483    3   ! testopen(zout,own.incname,opsem);
33050 1484    4   ! testout(zout, version, al_env_version);
33060 1485    5   ! testout (zout, "chann/addr  ", canno*1000+micadr);
33070 1486    6   ! 
33080 1487    7   ! alloc(mess_ref,lam_pool,messem.s^);
33090 1488    8   ! WITH mess_ref^ DO
33100 1489    9   !   BEGIN
33110 1490   10   !   ! u1:= create_at_ch;
33120 1491   11   !   ! u2:= canno;
33130 1492   12   !   ! u3:= lam_route
33140 1493   13   !   END;
33150 1494   14   ! LOCK mess_ref AS buf : ch_format DO
33160 1495   15   !   WITH buf DO
33170 1496   16   !     BEGIN
33180 1497   17   !     ! cntl_inf:= at_control;
33190 1498   18   !     ! time_inf:= con_lam_time
33200 1499   19   !     END;
33210 1500   20   ! signal(mess_ref,lamsem^);
33220 1501   21   !   (* initier timeout buffers *)
33230 1502   22   ! alloc(bookup_ref,book_pool,timeout_answer);
33240 1503   23   ! bookup_ref^.u3:= tim_route1;
33250 1504   24   ! 
33260 1505   25   ! alloc(clock_ref,tim_pool,messem.s^);
33270 1506   26   ! WITH clock_ref^ DO
33280 1507   27   !   BEGIN
33290 1508   28   !   ! u1:= delay_req;
33300 1509   29   !   ! u3:= tim_route;
33310 1510   30   !   ! u4:= #hc1
33320 1511   31   !   END;
33330 1512   32   ! LOCK clock_ref AS buf: timers DO
33340 1513   33   !   buf.object:= poll_delay;
33350 1514   34   ! 
33360 1515   35   ! alloc(timeout_ref,tim_pool,messem.s^);
33370 1516   36   ! WITH timeout_ref^ DO
33380 1517   37   !   BEGIN
33390 1518   38   !   ! u1:= book_req;
33400 1519   39   !   ! u3:= tim_route1;
33410 1520   40   !   ! u4:= #hc2
33420 1521   41   !   END;
33430 1522   42   !  
\f

tsvaclst    81.06.16.   13.41.                                                    page    44

34010 1523   43   ! line        := ok;
34020 1524   44   ! input       := from_sem;
34030 1525   45   ! vcatc_state := notready;      (* <--------<< *)
34040 1526   46   ! old_state   := notready;
34050 1527   47   ! lamspeak_state := nottele;
34060 1528   48   ! zero_addr   := alarmnetaddr(macroaddr(0,0,0),0);
34070 1529   49   ! cur_vcm     := zero_addr;
34080 1530   50   ! own_dc.macro     := dc_macro;
34090 1531   51   ! own_dc.micro     := dc_erh_mic_addr;
34100 1532   52   ! own_dc_log.macro := dc_macro;
34110 1533   53   ! own_dc_log.micro := dc_log_mic_addr;
34120 1534   54   ! 
34130 1535   55   ! novcm:= 1;
34140 1536   56   ! vcmtable(novcm).vc_code:= 0;
34150 1537   57   ! vcmtable(novcm).vc_addr:= own_dc;
34160 1538   58   ! vcmtable(novcm).vc_arrange:= 0;
34170 1539   59   ! vcmtable(novcm).vc_relief := false;
34180 1540   60   ! 
34190 1541   61   !  
\f

tsvaclst    81.06.16.   13.41.                                                    page    45

35010 1542   62   ! REPEAT
35020 1543   63   ! !   (* read one new buffer *)
35030 1544   64   ! !   (*q if test then
35040 1545   65   ! !   begin
35050 1546   66   ! !   testout(zout," input    : ",ord(input));
35060 1547   67   ! !   testout(zout," vcatc st : ",ord(vcatc_state));
35070 1548   68   ! !   end; q*)
35080 1549   69   ! ! 
35090 1550   70   ! ! 
35100 1551   71   ! ! CASE input OF
35110 1552   72   ! ! ! from_sem        :
35120 1553   73   ! ! !   BEGIN
35130 1554   74   ! ! !   ! CASE vcatc_state OF
35140 1555   75   ! ! !   ! ! notready..active  : IF NOT nil(fromlam_ref) THEN
35150 1556   76   ! ! !   ! !     mess_ref :=: fromlam_ref ELSE
35160 1557   77   ! ! !   ! !   IF no_of_queue>0 THEN
35170 1558   78   ! ! !   ! !     BEGIN
35180 1559   79   ! ! !   ! !     ! wait(mess_ref,queuesem.w^);
35190 1560   80   ! ! !   ! !     ! no_of_queue:= no_of_queue - 1
35200 1561   81   ! ! !   ! !     END ELSE
35210 1562   82   ! ! !   ! !     wait(mess_ref,messem.w^);
35220 1563   83   ! ! !   ! ! lam_talk           : IF NOT nil(fromlam_ref) THEN
35230 1564   84   ! ! !   ! !     mess_ref :=: fromlam_ref ELSE
35240 1565   85   ! ! !   ! !   wait(mess_ref,messem.w^);
35250 1566   86   ! ! !   ! ! OTHERWISE wait(mess_ref,messem.w^)
35260 1567   87   ! ! !   ! END;
35270 1568   88   ! ! !   ! buftype:= unknown;
35280 1569   89   ! ! !   END;
35290 1570   90   ! ! ! from_listen_ref :
35300 1571   91   ! ! !   BEGIN
35310 1572   92   ! ! !   ! found:= get_listen_buf;
35320 1573   93   ! ! !   ! input:= from_sem;
35330 1574   94   ! ! !   ! buftype:= unknown;
35340 1575   95   ! ! !   END;
35350 1576   96   ! ! ! nothing         : input:= from_sem
35360 1577   97   ! ! !   OTHERWISE
35370 1578   98   ! ! END;
35380 1579   99   ! ! 
35390 1580  100   ! ! 
35400 1581  101   ! !   (* classify buffer *)
35410 1582  102   ! ! rute := mess_ref^.u3;
35420 1583  103   ! ! func := mess_ref^.u4 DIV 16;
35430 1584  104   ! ! types:= mess_ref^.u4 MOD 16;
35440 1585  105   ! ! 
35450 1586  106   ! !   (*q if test then
35460 1587  107   ! !   begin
\f

tsvaclst    81.06.16.   13.41.                                                    page    46

35470 1588  108   ! !   testout(zout," route    : ",rute);
35480 1589  109   ! !   testout(zout," functype : ",func*100+types);
35490 1590  110   ! !   end; q*)
35500 1591  111   ! ! 
35510 1592  112   ! ! IF buftype=unknown THEN
35520 1593  113   ! !   CASE rute OF
35530 1594  114   ! !   ! dummy_route : (*this buffer must bee returned*)
35540 1595  115   ! !   !   buftype:= empty;
35550 1596  116   ! !   ! tim_route   : (* delay from timeoutmodule *)
35560 1597  117   ! !   !   CASE types OF
35570 1598  118   ! !   !   ! 1 : buftype:= clock
35580 1599  119   ! !   !   !   OTHERWISE unknown_buf(unknown_opcode)
35590 1600  120   ! !   !   END;
35600 1601  121   ! !   ! tim_route1  : (* timeout answer and longtimeout *)
35610 1602  122   ! !   !   CASE types OF
35620 1603  123   ! !   !   ! 2 : LOCK mess_ref AS buf : timers DO
35630 1604  124   ! !   !   !     IF buf.object = vcc_vch_ltime THEN
35640 1605  125   ! !   !   !       buftype:= ltime ELSE
35650 1606  126   ! !   !   !       IF buf.object = vcc_vch_stime THEN
35660 1607  127   ! !   !   !         buftype:= stime ELSE
35670 1608  128   ! !   !   !         unknown_buf(rejected)
35680 1609  129   ! !   !   !         OTHERWISE unknown_buf(unknown_opcode)
35690 1610  130   ! !   !   END;
35700 1611  131   ! !   ! netc_route : (*buffer from vch*)
35710 1612  132   ! !   !   CASE func OF
35720 1613  133   ! !   !   ! 0 : CASE types OF
35730 1614  134   ! !   !   !   ! 1 : buftype:= permiss     (* dc --> vc *)
35740 1615  135   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode);
35750 1616  136   ! !   !   !   END;
35760 1617  137   ! !   !   ! 1 : CASE types OF
35770 1618  138   ! !   !   !   ! 2 : buftype:= permiss   (* xxx --> vc *)
35780 1619  139   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode);
35790 1620  140   ! !   !   !   END;
35800 1621  141   ! !   !   ! 2 : CASE types OF
35810 1622  142   ! !   !   !   ! 0,1,
35820 1623  143   ! !   !   !   ! 2,3,
35830 1624  144   ! !   !   !   ! 4,5,
35840 1625  145   ! !   !   !   ! 6,7,
35850 1626  146   ! !   !   !   ! 8,9 : buftype:= broad
35860 1627  147   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode)
35870 1628  148   ! !   !   !   END;
35880 1629  149   ! !   !   ! 3 : CASE types OF
35890 1630  150   ! !   !   !   ! 0,1,2 : buftype:= alarm     (* at --> vcat *)
35900 1631  151   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode)
35910 1632  152   ! !   !   !   END;
35920 1633  153   ! !   !   ! 4 : CASE types OF
\f

tsvaclst    81.06.16.   13.41.                                                    page    47

35930 1634  154   ! !   !   !   ! 1 : buftype:= report     (* at --> vcat *)
35940 1635  155   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode)
35950 1636  156   ! !   !   !   END;
35960 1637  157   ! !   !   ! 6 : CASE types OF
35970 1638  158   ! !   !   !   ! 2 ,
35980 1639  159   ! !   !   !   ! 4 ,
35990 1640  160   ! !   !   !   ! 6 : buftype := permiss    (* dc --> vc *)
36000 1641  161   ! !   !   !   !   OTHERWISE unknown_buf( unknown_opcode )
36010 1642  162   ! !   !   !   END;
36020 1643  163   ! !   !   ! 7 : CASE types OF
36030 1644  164   ! !   !   !   ! 2 : buftype:= permiss     (* dc --> vc *)
36040 1645  165   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode)
36050 1646  166   ! !   !   !   END;
36060 1647  167   ! !   !   ! 8 : CASE types OF
36070 1648  168   ! !   !   !   ! 0,2 : buftype:= testat;     (* dc --> vcat *)
36080 1649  169   ! !   !   !   ! 5 : buftype:= report     (* at --> vcat *)
36090 1650  170   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode)
36100 1651  171   ! !   !   !   END;
36110 1652  172   ! !   !   ! 9 : CASE types OF
36120 1653  173   ! !   !   !   ! 0 ,
36130 1654  174   ! !   !   !   ! 2 : buftype:= operate;
36140 1655  175   ! !   !   !   ! 8 : buftype:= permiss
36150 1656  176   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode)
36160 1657  177   ! !   !   !   END;
36170 1658  178   ! !   !   ! 10 : CASE types OF
36180 1659  179   ! !   !   !   ! 2,4,6 : buftype:= table
36190 1660  180   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode)
36200 1661  181   ! !   !   !   END;
36210 1662  182   ! !   !   ! 11 : CASE types OF
36220 1663  183   ! !   !   !   ! 2,4,6,8,10,12,14 : buftype:= service
36230 1664  184   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode)
36240 1665  185   ! !   !   !   END;
36250 1666  186   ! !   !   ! 12 : CASE types OF
36260 1667  187   ! !   !   !   ! 5 : buftype:= listen;
36270 1668  188   ! !   !   !   ! 8 : buftype:= service
36280 1669  189   ! !   !   !   !   OTHERWISE unknown_buf(unknown_opcode)
36290 1670  190   ! !   !   !   END
36300 1671  191   ! !   !   !   OTHERWISE unknown_buf(unknown_opcode)
36310 1672  192   ! !   !   END;
36320 1673  193   ! !   ! lam_route   : (* buffer from lamdriver *)
36330 1674  194   ! !   !   buftype:= lam
36340 1675  195   ! !   !   OTHERWISE unknown_buf(unknown_route)
36350 1676  196   ! !   END;
36360 1677  197   ! ! 
36370 1678  198   ! !  
\f

tsvaclst    81.06.16.   13.41.                                                    page    48

37010 1679  199   ! !   (* make action *)
37020 1680  200   ! ! action:= acttable(vcatc_state,buftype);
37030 1681  201   ! !   (*q if test then
37040 1682  202   ! !   begin
37050 1683  203   ! !   testout(zout," buftype  : ",ord(buftype));
37060 1684  204   ! !   testout(zout," action   : ",action);
37070 1685  205   ! !   end; q*)
37080 1686  206   ! ! CASE action OF
37090 1687  207   ! ! ! 
37100 1688  208   ! ! ! 1 : (* no action, has been taken *);
37110 1689  209   ! ! ! 
37120 1690  210   ! ! ! 2 : (* not ready *)
37130 1691  211   ! ! !   unknown_buf(not_ready);
37140 1692  212   ! ! ! 
37150 1693  213   ! ! ! 3 : (* passive , alarm/report/testat received *)
37160 1694  214   ! ! !   IF cur_vcm <> zero_addr THEN
37170 1695  215   ! ! !       (* send to current vcm *)
37180 1696  216   ! ! !     LOCK mess_ref AS buf: alarmlabel DO
37190 1697  217   ! ! !       buf.rec:= cur_vcm
37200 1698  218   ! ! !     ELSE
37210 1699  219   ! ! !       unknown_buf(passivated);
37220 1700  220   ! ! ! 
37230 1701  221   ! ! ! 4 : (* save listenbuf *)
37240 1702  222   ! ! !   save_listen_buf;
37250 1703  223   ! ! ! 
37260 1704  224   ! ! ! 5 : (* update table *)
37270 1705  225   ! ! !   BEGIN
37280 1706  226   ! ! !   ! CASE types OF
37290 1707  227   ! ! !   ! ! 2 : (* at_addr *)
37300 1708  228   ! ! !   ! !   LOCK mess_ref AS buf : mask_atadr DO
37310 1709  229   ! ! !   ! !     WITH buf DO
37320 1710  230   ! ! !   ! !       BEGIN
37330 1711  231   ! ! !   ! !       ! fix.result:= accepted;
37340 1712  232   ! ! !   ! !       ! IF get_adr_code(entry.at_addr, adr_code) THEN
37350 1713  233   ! ! !   ! !       !   CASE fix.update OF
37360 1714  234   ! ! !   ! !       !   ! read_code:  BEGIN
37370 1715  235   ! ! !   ! !       !   !   ! entry:= atadrtable(next);
37380 1716  236   ! ! !   ! !       !   !   ! fix.no_of_by:= label_size + 5;
37390 1717  237   ! ! !   ! !       !   !   END;
37400 1718  238   ! ! !   ! !       !   ! insert_code : BEGIN
37410 1719  239   ! ! !   ! !       !   !   ! atadrtable(next):= atadrtable(noatadr);
37420 1720  240   ! ! !   ! !       !   !   ! noatadr:= noatadr - 1;
37430 1721  241   ! ! !   ! !       !   !   ! IF get_net_addr(work, entry.addr_code) THEN
37440 1722  242   ! ! !   ! !       !   !   !   atadrtable(next):= entry ELSE
37450 1723  243   ! ! !   ! !       !   !   !   BEGIN
37460 1724  244   ! ! !   ! !       !   !   !   ! noatadr:= noatadr + 1;
\f

tsvaclst    81.06.16.   13.41.                                                    page    49

37470 1725  245   ! ! !   ! !       !   !   !   ! atadrtable(noatadr):= entry
37480 1726  246   ! ! !   ! !       !   !   !   END;
37490 1727  247   ! ! !   ! !       !   !   END;
37500 1728  248   ! ! !   ! !       !   ! remove_code: BEGIN
37510 1729  249   ! ! !   ! !       !   !   ! atadrtable(next):= atadrtable(noatadr);
37520 1730  250   ! ! !   ! !       !   !   ! noatadr:= noatadr - 1;
37530 1731  251   ! ! !   ! !       !   !   ! IF get_net_addr(work, entry.addr_code) THEN
37540 1732  252   ! ! !   ! !       !   !   !   BEGIN
37550 1733  253   ! ! !   ! !       !   !   !   ! atadrtable(next):= atadrtable(noatadr);
37560 1734  254   ! ! !   ! !       !   !   !   ! noatadr:= noatadr - 1;
37570 1735  255   ! ! !   ! !       !   !   !   END;
37580 1736  256   ! ! !   ! !       !   !   END;
37590 1737  257   ! ! !   ! !       !   ! OTHERWISE fix.result:= unknown_update;
37600 1738  258   ! ! !   ! !       !   END (* case found *)
37610 1739  259   ! ! !   ! !       ! ELSE
37620 1740  260   ! ! !   ! !       !   CASE fix.update OF
37630 1741  261   ! ! !   ! !       !   ! read_code:
37640 1742  262   ! ! !   ! !       !   !   IF get_net_addr(work, entry.addr_code) THEN
37650 1743  263   ! ! !   ! !       !   !     BEGIN
37660 1744  264   ! ! !   ! !       !   !     ! entry:= atadrtable(next);
37670 1745  265   ! ! !   ! !       !   !     ! fix.no_of_by:= label_size + 5;
37680 1746  266   ! ! !   ! !       !   !     END ELSE
37690 1747  267   ! ! !   ! !       !   !     fix.result:= not_found;
37700 1748  268   ! ! !   ! !       !   ! insert_code:
37710 1749  269   ! ! !   ! !       !   !   IF get_net_addr(work, entry.addr_code) THEN
37720 1750  270   ! ! !   ! !       !   !     atadrtable(next):= entry ELSE
37730 1751  271   ! ! !   ! !       !   !     IF noatadr<at_addr_l THEN
37740 1752  272   ! ! !   ! !       !   !       BEGIN
37750 1753  273   ! ! !   ! !       !   !       ! noatadr:= noatadr + 1;
37760 1754  274   ! ! !   ! !       !   !       ! atadrtable(noatadr):= entry
37770 1755  275   ! ! !   ! !       !   !       END ELSE
37780 1756  276   ! ! !   ! !       !   !       fix.result:= no_room;
37790 1757  277   ! ! !   ! !       !   ! remove_code:
37800 1758  278   ! ! !   ! !       !   !   IF get_net_addr(work, entry.addr_code) THEN
37810 1759  279   ! ! !   ! !       !   !     BEGIN
37820 1760  280   ! ! !   ! !       !   !     ! atadrtable(next):= atadrtable(noatadr);
37830 1761  281   ! ! !   ! !       !   !     ! noatadr:= noatadr - 1;
37840 1762  282   ! ! !   ! !       !   !     END ELSE
37850 1763  283   ! ! !   ! !       !   !     fix.result:= not_found;
37860 1764  284   ! ! !   ! !       !   ! OTHERWISE
37870 1765  285   ! ! !   ! !       !   ! fix.result:= unknown_update;
37880 1766  286   ! ! !   ! !       !   END (* case not found *)
37890 1767  287   ! ! !   ! !       END; (* with buf *)
37900 1768  288   ! ! !   ! ! 4 : (* at-ts *)
37910 1769  289   ! ! !   ! !   LOCK mess_ref AS buf: mask_atts DO
37920 1770  290   ! ! !   ! !     WITH buf DO
\f

tsvaclst    81.06.16.   13.41.                                                    page    50

37930 1771  291   ! ! !   ! !       BEGIN
37940 1772  292   ! ! !   ! !       ! fix.result:= accepted;
37950 1773  293   ! ! !   ! !       ! IF get_atts_index( entry.ts_addr, intg_aux) THEN
37960 1774  294   ! ! !   ! !       !   CASE fix.update OF
37970 1775  295   ! ! !   ! !       !   ! read_code:
37980 1776  296   ! ! !   ! !       !   !   BEGIN
37990 1777  297   ! ! !   ! !       !   !   ! entry:= attstable(next);
38000 1778  298   ! ! !   ! !       !   !   ! fix.no_of_by:= label_size + 5;
38010 1779  299   ! ! !   ! !       !   !   END;
38020 1780  300   ! ! !   ! !       !   ! insert_code:
38030 1781  301   ! ! !   ! !       !   !   attstable(next):= entry;
38040 1782  302   ! ! !   ! !       !   ! remove_code:
38050 1783  303   ! ! !   ! !       !   !   BEGIN
38060 1784  304   ! ! !   ! !       !   !   ! attstable(next):= attstable(noatts);
38070 1785  305   ! ! !   ! !       !   !   ! noatts:= noatts - 1;
38080 1786  306   ! ! !   ! !       !   !   END;
38090 1787  307   ! ! !   ! !       !   ! OTHERWISE fix.result:= unknown_update;
38100 1788  308   ! ! !   ! !       !   END (* case found *)
38110 1789  309   ! ! !   ! !       ! ELSE
38120 1790  310   ! ! !   ! !       !   CASE fix.update OF
38130 1791  311   ! ! !   ! !       !   ! read_code:
38140 1792  312   ! ! !   ! !       !   !   fix.result:= not_found;
38150 1793  313   ! ! !   ! !       !   ! insert_code:
38160 1794  314   ! ! !   ! !       !   !   IF noatts<at_ts_l THEN
38170 1795  315   ! ! !   ! !       !   !     BEGIN
38180 1796  316   ! ! !   ! !       !   !     ! noatts:= noatts + 1;
38190 1797  317   ! ! !   ! !       !   !     ! attstable(noatts):= entry;
38200 1798  318   ! ! !   ! !       !   !     END ELSE
38210 1799  319   ! ! !   ! !       !   !     fix.result:= no_room;
38220 1800  320   ! ! !   ! !       !   ! remove_code:
38230 1801  321   ! ! !   ! !       !   !   fix.result:= not_found;
38240 1802  322   ! ! !   ! !       !   ! OTHERWISE fix.result:= unknown_update;
38250 1803  323   ! ! !   ! !       !   END (* case not found *)
38260 1804  324   ! ! !   ! !       END; (* with buf *)
38270 1805  325   ! ! !   ! ! 6 : (* vcmat *)
38280 1806  326   ! ! !   ! !   LOCK mess_ref AS buf : mask_vcmat DO
38290 1807  327   ! ! !   ! !     WITH buf DO
38300 1808  328   ! ! !   ! !       BEGIN
38310 1809  329   ! ! !   ! !       ! fix.result:= accepted;
38320 1810  330   ! ! !   ! !       ! IF get_vc_code(entry.vc_addr, adr_code) THEN
38330 1811  331   ! ! !   ! !       !   CASE fix.update OF
38340 1812  332   ! ! !   ! !       !   ! read_code:
38350 1813  333   ! ! !   ! !       !   !   BEGIN
38360 1814  334   ! ! !   ! !       !   !   ! entry:=vcmtable(next);
38370 1815  335   ! ! !   ! !       !   !   ! fix.no_of_by:= label_size + 5;
38380 1816  336   ! ! !   ! !       !   !   END;
\f

tsvaclst    81.06.16.   13.41.                                                    page    51

38390 1817  337   ! ! !   ! !       !   ! insert_code:
38400 1818  338   ! ! !   ! !       !   !   vcmtable(next):= entry;
38410 1819  339   ! ! !   ! !       !   ! remove_code:
38420 1820  340   ! ! !   ! !       !   !   BEGIN
38430 1821  341   ! ! !   ! !       !   !   ! vcmtable(next):= vcmtable(novcm);
38440 1822  342   ! ! !   ! !       !   !   ! novcm:= novcm - 1;
38450 1823  343   ! ! !   ! !       !   !   END;
38460 1824  344   ! ! !   ! !       !   ! OTHERWISE fix.result:= unknown_update;
38470 1825  345   ! ! !   ! !       !   END (* case found *)
38480 1826  346   ! ! !   ! !       ! ELSE
38490 1827  347   ! ! !   ! !       !   CASE fix.update OF
38500 1828  348   ! ! !   ! !       !   ! read_code:
38510 1829  349   ! ! !   ! !       !   !   fix.result:= not_found;
38520 1830  350   ! ! !   ! !       !   ! insert_code:
38530 1831  351   ! ! !   ! !       !   !   IF novcm<vcmat_l THEN
38540 1832  352   ! ! !   ! !       !   !     BEGIN
38550 1833  353   ! ! !   ! !       !   !     ! novcm:= novcm + 1;
38560 1834  354   ! ! !   ! !       !   !     ! vcmtable(novcm):= entry;
38570 1835  355   ! ! !   ! !       !   !     END ELSE
38580 1836  356   ! ! !   ! !       !   !     fix.result:= no_room;
38590 1837  357   ! ! !   ! !       !   ! remove_code:
38600 1838  358   ! ! !   ! !       !   !   fix.result:= not_found;
38610 1839  359   ! ! !   ! !       !   ! OTHERWISE fix.result:= unknown_update;
38620 1840  360   ! ! !   ! !       !   END (* case not found *)
38630 1841  361   ! ! !   ! !       END; (* with buf *)
38640 1842  362   ! ! !   ! ! 
38650 1843  363   ! ! !   ! ! OTHERWISE (* nothing *)
38660 1844  364   ! ! !   ! ! 
38670 1845  365   ! ! !   ! END;
38680 1846  366   ! ! !   END;
38690 1847  367   ! ! ! 
38700 1848  368   ! ! ! 6 : (* save received buffer *)
38710 1849  369   ! ! !   BEGIN
38720 1850  370   ! ! !   ! CASE buftype OF
38730 1851  371   ! ! !   ! ! clock :
38740 1852  372   ! ! !   ! !   BEGIN
38750 1853  373   ! ! !   ! !   ! clock_ref:=: mess_ref;
38760 1854  374   ! ! !   ! !   ! WHILE get_listen_buf DO
38770 1855  375   ! ! !   ! !   !   return(mess_ref)
38780 1856  376   ! ! !   ! !   END;
38790 1857  377   ! ! !   ! ! ltime,
38800 1858  378   ! ! !   ! ! stime : timeout_ref :=: mess_ref;
38810 1859  379   ! ! !   ! ! lam   :
38820 1860  380   ! ! !   ! !   BEGIN
38830 1861  381   ! ! !   ! !   ! mess_ref^.u1:= write_read_at;
38840 1862  382   ! ! !   ! !   ! tolam_ref :=: mess_ref;
\f

tsvaclst    81.06.16.   13.41.                                                    page    52

38850 1863  383   ! ! !   ! !   ! IF vcatc_state=notready THEN
38860 1864  384   ! ! !   ! !   !   BEGIN
38870 1865  385   ! ! !   ! !   !   !   (* book(vcc_vch_ltime); *)
38880 1866  386   ! ! !   ! !   !   ! vcatc_state:= passive      (* <--------<< *)
38890 1867  387   ! ! !   ! !   !   END
38900 1868  388   ! ! !   ! !   END
38910 1869  389   ! ! !   ! !   OTHERWISE (* nothing *)
38920 1870  390   ! ! !   ! END;
38930 1871  391   ! ! !   ! buftype:= used
38940 1872  392   ! ! !   END;
38950 1873  393   ! ! ! 
38960 1874  394   ! ! ! 7 : (* service on variable limit and counters *)
38970 1875  395   ! ! !   BEGIN
38980 1876  396   ! ! !   ! IF func=12 THEN types:=0;
38990 1877  397   ! ! !   ! LOCK mess_ref AS buf: alarmlabel DO
39000 1878  398   ! ! !   !   buf.result:= accepted;
39010 1879  399   ! ! !   ! CASE types OF
39020 1880  400   ! ! !   ! ! 0 : (* return with reciept *);
39030 1881  401   ! ! !   ! ! 2 : (* read line error count *)
39040 1882  402   ! ! !   ! !   LOCK mess_ref AS buf: mask_service DO
39050 1883  403   ! ! !   ! !     WITH buf DO
39060 1884  404   ! ! !   ! !       BEGIN
39070 1885  405   ! ! !   ! !       ! fix.no_of_by:= label_size + 2;
39080 1886  406   ! ! !   ! !       ! CASE fix.update OF
39090 1887  407   ! ! !   ! !       ! ! read_code  : data:= line_error_count;
39100 1888  408   ! ! !   ! !       ! ! insert_code: line_error_count:= data
39110 1889  409   ! ! !   ! !       ! !   OTHERWISE fix.result:= unknown_update
39120 1890  410   ! ! !   ! !       ! END
39130 1891  411   ! ! !   ! !       END;
39140 1892  412   ! ! !   ! ! 4 : (* read pack counter *)
39150 1893  413   ! ! !   ! !   LOCK mess_ref AS buf: mask_service DO
39160 1894  414   ! ! !   ! !     WITH buf DO
39170 1895  415   ! ! !   ! !       BEGIN
39180 1896  416   ! ! !   ! !       ! fix.no_of_by:= label_size + 2;
39190 1897  417   ! ! !   ! !       ! CASE fix.update OF
39200 1898  418   ! ! !   ! !       ! ! read_code : data:= pack_counter
39210 1899  419   ! ! !   ! !       ! !   OTHERWISE fix.result:= unknown_update
39220 1900  420   ! ! !   ! !       ! END
39230 1901  421   ! ! !   ! !       END;
39240 1902  422   ! ! !   ! ! 6 : (* update service limit *)
39250 1903  423   ! ! !   ! !   LOCK mess_ref AS buf: mask_service DO
39260 1904  424   ! ! !   ! !     WITH buf DO
39270 1905  425   ! ! !   ! !       BEGIN
39280 1906  426   ! ! !   ! !       ! fix.no_of_by:= label_size + 2;
39290 1907  427   ! ! !   ! !       ! CASE fix.update OF
39300 1908  428   ! ! !   ! !       ! ! read_code   : data:= serve_limit;
\f

tsvaclst    81.06.16.   13.41.                                                    page    53

39310 1909  429   ! ! !   ! !       ! ! insert_code : serve_limit:= data
39320 1910  430   ! ! !   ! !       ! !   OTHERWISE fix.result:= unknown_update
39330 1911  431   ! ! !   ! !       ! END
39340 1912  432   ! ! !   ! !       END;
39350 1913  433   ! ! !   ! ! 8 : (* read current vcm *)
39360 1914  434   ! ! !   ! !   LOCK mess_ref AS buf: mask_vcm DO
39370 1915  435   ! ! !   ! !     WITH buf DO
39380 1916  436   ! ! !   ! !       BEGIN
39390 1917  437   ! ! !   ! !       ! fix.no_of_by:= label_size + 4;
39400 1918  438   ! ! !   ! !       ! CASE fix.update OF
39410 1919  439   ! ! !   ! !       ! ! read_code : data:= cur_vcm
39420 1920  440   ! ! !   ! !       ! !   OTHERWISE fix.result:= unknown_update
39430 1921  441   ! ! !   ! !       ! END
39440 1922  442   ! ! !   ! !       END;
39450 1923  443   ! ! !   ! ! 10 : (* update stoppoll limit *)
39460 1924  444   ! ! !   ! !   LOCK mess_ref AS buf: mask_service DO
39470 1925  445   ! ! !   ! !     WITH buf DO
39480 1926  446   ! ! !   ! !       BEGIN
39490 1927  447   ! ! !   ! !       ! fix.no_of_by:= label_size + 2;
39500 1928  448   ! ! !   ! !       ! CASE fix.update OF
39510 1929  449   ! ! !   ! !       ! ! read_code   : data:= stoppoll_limit;
39520 1930  450   ! ! !   ! !       ! ! insert_code : stoppoll_limit:= data
39530 1931  451   ! ! !   ! !       ! !   OTHERWISE fix.result:= unknown_update
39540 1932  452   ! ! !   ! !       ! END
39550 1933  453   ! ! !   ! !       END;
39560 1934  454   ! ! !   ! ! 12 : (* update max succ errors *)
39570 1935  455   ! ! !   ! !   LOCK mess_ref AS buf: mask_service DO
39580 1936  456   ! ! !   ! !     WITH buf DO
39590 1937  457   ! ! !   ! !       BEGIN
39600 1938  458   ! ! !   ! !       ! fix.no_of_by:= label_size + 2;
39610 1939  459   ! ! !   ! !       ! CASE fix.update OF
39620 1940  460   ! ! !   ! !       ! ! read_code   : data:= max_succ_errors;
39630 1941  461   ! ! !   ! !       ! ! insert_code : max_succ_errors:= data
39640 1942  462   ! ! !   ! !       ! !   OTHERWISE fix.result:= unknown_update
39650 1943  463   ! ! !   ! !       ! END
39660 1944  464   ! ! !   ! !       END;
39670 1945  465   ! ! !   ! ! 14 : (* intern tests *)
39680 1946  466   ! ! !   ! !   LOCK mess_ref AS buf: mask_test DO
39690 1947  467   ! ! !   ! !     WITH buf DO
39700 1948  468   ! ! !   ! !       CASE fix.update OF
39710 1949  469   ! ! !   ! !       ! 0 : (* test off *)
39720 1950  470   ! ! !   ! !       !   test:= false;
39730 1951  471   ! ! !   ! !       ! 1 : (* test on *)
39740 1952  472   ! ! !   ! !       !   test:= true;
39750 1953  473   ! ! !   ! !       ! 2 : (* lamtest off *)
39760 1954  474   ! ! !   ! !       !   lamtest := false;
\f

tsvaclst    81.06.16.   13.41.                                                    page    54

39770 1955  475   ! ! !   ! !       ! 3 : (* lamtest on  *)
39780 1956  476   ! ! !   ! !       !   lamtest := true;
39790 1957  477   ! ! !   ! !       ! 4 : (* get variable *)
39800 1958  478   ! ! !   ! !       !   BEGIN
39810 1959  479   ! ! !   ! !       !   ! fix.no_of_by:= label_size + 10;
39820 1960  480   ! ! !   ! !       !   ! data(1):= no_of_listen;
39830 1961  481   ! ! !   ! !       !   ! data(2):= no_of_returned;
39840 1962  482   ! ! !   ! !       !   ! data(3):= no_of_released;
39850 1963  483   ! ! !   ! !       !   ! data(4):= no_of_unknown;
39860 1964  484   ! ! !   ! !       !   ! data(5):= no_of_queue;
39870 1965  485   ! ! !   ! !       !   END;
39880 1966  486   ! ! !   ! !       ! 5 : (* get states *)
39890 1967  487   ! ! !   ! !       !   BEGIN
39900 1968  488   ! ! !   ! !       !   ! fix.no_of_by:= label_size + 10;
39910 1969  489   ! ! !   ! !       !   ! data(1):= ord(vcatc_state);
39920 1970  490   ! ! !   ! !       !   ! data(2):= ord(old_state);
39930 1971  491   ! ! !   ! !       !   ! data(3):= ord(lamspeak_state);
39940 1972  492   ! ! !   ! !       !   ! data(4):= ord(input);
39950 1973  493   ! ! !   ! !       !   ! data(5):= poll_delay MOD 256;
39960 1974  494   ! ! !   ! !       !   END;
39970 1975  495   ! ! !   ! !       ! OTHERWISE fix.result:= unknown_update;
39980 1976  496   ! ! !   ! !       END;
39990 1977  497   ! ! !   ! ! OTHERWISE (* nothing *)
40000 1978  498   ! ! !   ! END
40010 1979  499   ! ! !   END;
40020 1980  500   ! ! ! 
40030 1981  501   ! ! ! 8 : (* call lamspeak *)
40040 1982  502   ! ! !   BEGIN
40050 1983  503   ! ! !   ! found:= true;
40060 1984  504   ! ! !   ! CASE buftype OF
40070 1985  505   ! ! !   ! ! report,
40080 1986  506   ! ! !   ! ! alarm : LOCK mess_ref AS buf: alarmlabel DO
40090 1987  507   ! ! !   ! !     BEGIN
40100 1988  508   ! ! !   ! !     ! found:= get_adr_code(buf.send,adr_code);
40110 1989  509   ! ! !   ! !     ! IF found THEN buf.op_code:= adr_code
40120 1990  510   ! ! !   ! !     END;
40130 1991  511   ! ! !   ! ! permiss:
40140 1992  512   ! ! !   ! !   IF func=1 THEN
40150 1993  513   ! ! !   ! !     LOCK mess_ref AS buf: mask_unknown DO
40160 1994  514   ! ! !   ! !       WITH buf DO
40170 1995  515   ! ! !   ! !         BEGIN
40180 1996  516   ! ! !   ! !         ! fix.op_code:= data.op_code;
40190 1997  517   ! ! !   ! !         END
40200 1998  518   ! ! !   ! !       ELSE
40210 1999  519   ! ! !   ! !         LOCK mess_ref AS buf: mask_vcm DO
40220 2000  520   ! ! !   ! !           WITH buf DO
\f

tsvaclst    81.06.16.   13.41.                                                    page    55

40230 2001  521   ! ! !   ! !             BEGIN
40240 2002  522   ! ! !   ! !             ! CASE func OF
40250 2003  523   ! ! !   ! !             ! ! 0 : BEGIN
40260 2004  524   ! ! !   ! !             ! !   ! found:= get_adr_code( fix.send, adr_code);
40270 2005  525   ! ! !   ! !             ! !   ! IF found THEN fix.op_code:= adr_code
40280 2006  526   ! ! !   ! !             ! !   ! ELSE fix.result:= unknown_sender
40290 2007  527   ! ! !   ! !             ! !   END;
40300 2008  528   ! ! !   ! !             ! ! 6 : BEGIN
40310 2009  529   ! ! !   ! !             ! !   ! found:= get_adr_code(data,adr_code);
40320 2010  530   ! ! !   ! !             ! !   ! IF found THEN fix.op_code:= adr_code
40330 2011  531   ! ! !   ! !             ! !   ! ELSE fix.result:= not_found
40340 2012  532   ! ! !   ! !             ! !   END;
40350 2013  533   ! ! !   ! !             ! ! 2,7 : (* nothing *);
40360 2014  534   ! ! !   ! !             ! ! 9 : BEGIN
40370 2015  535   ! ! !   ! !             ! !   ! found:= get_vc_code( fix.send, adr_code);
40380 2016  536   ! ! !   ! !             ! !   ! IF found THEN fix.op_code:= adr_code
40390 2017  537   ! ! !   ! !             ! !   ! ELSE fix.result:= unknown_sender
40400 2018  538   ! ! !   ! !             ! !   END;
40410 2019  539   ! ! !   ! !             ! END; (* case *)
40420 2020  540   ! ! !   ! !             END; (* lock *)
40430 2021  541   ! ! !   ! ! testat: LOCK mess_ref AS buf: alarmlabel DO
40440 2022  542   ! ! !   ! !     keep_sender    := buf.send;
40450 2023  543   ! ! !   ! ! clock : restart_clock;
40460 2024  544   ! ! !   ! ! OTHERWISE (* nothing *)
40470 2025  545   ! ! !   ! END;
40480 2026  546   ! ! !   ! IF found THEN
40490 2027  547   ! ! !   !   BEGIN
40500 2028  548   ! ! !   !   ! vcatc_state:= lam_talk;     (* <--------<< *)
40510 2029  549   ! ! !   !   ! lamspeak
40520 2030  550   ! ! !   !   END ELSE
40530 2031  551   ! ! !   !   unknown_buf(unknown_sender)
40540 2032  552   ! ! !   END;
40550 2033  553   ! ! ! 
40560 2034  554   ! ! ! 9 : (* save mess_ref *)
40570 2035  555   ! ! !   BEGIN
40580 2036  556   ! ! !   ! signal(mess_ref,queuesem.s^);
40590 2037  557   ! ! !   ! no_of_queue:= no_of_queue + 1;
40600 2038  558   ! ! !   ! buftype:= used
40610 2039  559   ! ! !   END;
40620 2040  560   ! ! ! 
40630 2041  561   ! ! ! 10 : (* restart clock *)
40640 2042  562   ! ! !   restart_clock;
40650 2043  563   ! ! ! 
40660 2044  564   ! ! ! 11 : (* long timeout *)
40670 2045  565   ! ! !   BEGIN
40680 2046  566   ! ! !   ! timeout_ref :=: mess_ref;
\f

tsvaclst    81.06.16.   13.41.                                                    page    56

40690 2047  567   ! ! !   ! buftype:= used;
40700 2048  568   ! ! !   ! old_state:= vcatc_state;
40710 2049  569   ! ! !   ! IF get_listen_buf THEN
40720 2050  570   ! ! !   !   BEGIN (* listenbuf found *)
40730 2051  571   ! ! !   !   ! mess_ref^.u2:= 0;     (* empty databuffer *)
40740 2052  572   ! ! !   !   ! book(vcc_vch_stime);
40750 2053  573   ! ! !   !   ! vcatc_state:= wait_shorttime;     (* <--------<< *)
40760 2054  574   ! ! !   !   END ELSE
40770 2055  575   ! ! !   !   BEGIN (* listenbuf not found *)
40780 2056  576   ! ! !   !   ! vcatc_state:= vcatc_need_buf;     (* <--------<< *)
40790 2057  577   ! ! !   !   END
40800 2058  578   ! ! !   END;
40810 2059  579   ! ! ! 
40820 2060  580   ! ! ! 12 : (* book longtime *)
40830 2061  581   ! ! !   BEGIN
40840 2062  582   ! ! !   ! timeout_ref :=: mess_ref;
40850 2063  583   ! ! !   ! book(vcc_vch_ltime)
40860 2064  584   ! ! !   END;
40870 2065  585   ! ! ! 
40880 2066  586   ! ! ! 13 : (* listenbuf ready to vcatc *)
40890 2067  587   ! ! !   BEGIN
40900 2068  588   ! ! !   ! mess_ref^.u2:= 0;      (* empty databuffer *)
40910 2069  589   ! ! !   ! book(vcc_vch_stime);
40920 2070  590   ! ! !   ! vcatc_state:= wait_shorttime     (* <--------<< *)
40930 2071  591   ! ! !   END;
40940 2072  592   ! ! ! 
40950 2073  593   ! ! ! 14 : (* modul error *)
40960 2074  594   ! ! !     (* temporary solution *)
40970 2075  595   ! ! !   BEGIN
40980 2076  596   ! ! !   ! timeout_ref :=: mess_ref;
40990 2077  597   ! ! !   ! testout(zout,"timeout vch ",ord(vcatc_state));
41000 2078  598   ! ! !   ! vcatc_state := passive;
41010 2079  599   ! ! !   ! book(vcc_vch_ltime)
41020 2080  600   ! ! !   END;
41030 2081  601   ! ! ! 
41040 2082  602   ! ! ! 15 : (* dc or vc operations *)
41050 2083  603   ! ! !   CASE types OF
41060 2084  604   ! ! !   ! 0 : (* order to start or stop polling *)
41070 2085  605   ! ! !   !   LOCK mess_ref AS buf: mask_poll DO
41080 2086  606   ! ! !   !     WITH buf DO
41090 2087  607   ! ! !   !       CASE fix.update OF
41100 2088  608   ! ! !   !       ! stop_code : (* stop poll *)
41110 2089  609   ! ! !   !       !   IF vcatc_state <> passive THEN
41120 2090  610   ! ! !   !       !     BEGIN
41130 2091  611   ! ! !   !       !     ! area_pointer := 1;
41140 2092  612   ! ! !   !       !     ! lamspeak_state := nottele;  (* lamspeak is initialized *)
\f

tsvaclst    81.06.16.   13.41.                                                    page    57

41150 2093  613   ! ! !   !       !     ! vcatc_state:= passive;     (* <--------<< *)
41160 2094  614   ! ! !   !       !     ! fix.result:= accepted;
41170 2095  615   ! ! !   !       !     END ELSE
41180 2096  616   ! ! !   !       !     fix.result:= rejected;
41190 2097  617   ! ! !   !       ! start_code : (* start poll *)
41200 2098  618   ! ! !   !       !   IF (vcatc_state=passive) AND (NOT nil(tolam_ref)) AND (NOT nil(clock_ref)) THEN
41210 2099  619   ! ! !   !       !     BEGIN
41220 2100  620   ! ! !   !       !     ! vcatc_state:= active;     (* <--------<< *)
41230 2101  621   ! ! !   !       !     ! poll_delay:= poll_rate;
41240 2102  622   ! ! !   !       !     ! LOCK clock_ref AS cbuf: timers DO
41250 2103  623   ! ! !   !       !     !   cbuf.object:= poll_delay;
41260 2104  624   ! ! !   !       !     ! signal(clock_ref,timeoutsem^);     (* start clock timeout *)
41270 2105  625   ! ! !   !       !     ! fix.result:= accepted;
41280 2106  626   ! ! !   !       !     ! line_error_count:= error_count;
41290 2107  627   ! ! !   !       !     END ELSE
41300 2108  628   ! ! !   !       !     fix.result:= rejected;
41310 2109  629   ! ! !   !       ! OTHERWISE fix.result:= unknown_update;
41320 2110  630   ! ! !   !       END;
41330 2111  631   ! ! !   ! 2 : (* at-vc control *)
41340 2112  632   ! ! !   !   BEGIN
41350 2113  633   ! ! !   !   ! LOCK mess_ref AS buf: mask_atvcdc DO
41360 2114  634   ! ! !   !   !   WITH buf DO
41370 2115  635   ! ! !   !   !     BEGIN
41380 2116  636   ! ! !   !   !     ! buftype:= alarm;
41390 2117  637   ! ! !   !   !     ! IF fix.send = at THEN
41400 2118  638   ! ! !   !   !     !   BEGIN
41410 2119  639   ! ! !   !   !     !   ! mess_ref^.u4:= mess_ref^.u4 + 1;
41420 2120  640   ! ! !   !   !     !   ! fix.send:= fix.rec;
41430 2121  641   ! ! !   !   !     !   ! fix.rec := dc;
41440 2122  642   ! ! !   !   !     !   ! fix.result:= accepted;
41450 2123  643   ! ! !   !   !     !   END ELSE
41460 2124  644   ! ! !   !   !     !   IF fix.send = dc THEN
41470 2125  645   ! ! !   !   !     !     BEGIN
41480 2126  646   ! ! !   !   !     !     ! fix.send:= fix.rec;
41490 2127  647   ! ! !   !   !     !     ! fix.rec := at;
41500 2128  648   ! ! !   !   !     !     ! fix.result:= accepted;
41510 2129  649   ! ! !   !   !     !     END ELSE
41520 2130  650   ! ! !   !   !     !     buftype := unknown;
41530 2131  651   ! ! !   !   !     END;
41540 2132  652   ! ! !   !   ! IF buftype = unknown THEN unknown_buf( unknown_sender );
41550 2133  653   ! ! !   !   END
41560 2134  654   ! ! !   !   OTHERWISE (* nothing *)
41570 2135  655   ! ! !   END;
41580 2136  656   ! ! ! 
41590 2137  657   ! ! ! 16 : (* one listenbuf arrived before shorttimeout *)
41600 2138  658   ! ! !   BEGIN
\f

tsvaclst    81.06.16.   13.41.                                                    page    58

41610 2139  659   ! ! !   ! save_listen_buf;
41620 2140  660   ! ! !   ! input:= from_listen_ref;
41630 2141  661   ! ! !   ! vcatc_state:= old_state     (* <--------<< *)
41640 2142  662   ! ! !   END;
41650 2143  663   ! ! ! 17 : (* lambuf arrived before lamspeak ready *)
41660 2144  664   ! ! !   fromlam_ref :=: mess_ref;
41670 2145  665   ! ! ! 18 : (* return buffer to pool *)
41680 2146  666   ! ! !   BEGIN
41690 2147  667   ! ! !   ! return(mess_ref);
41700 2148  668   ! ! !   ! no_of_returned:= (no_of_returned MOD max_int) + 1;
41710 2149  669   ! ! !   ! buftype:= used;
41720 2150  670   ! ! !   END;
41730 2151  671   ! ! ! 19 : (* broadcast *)
41740 2152  672   ! ! !   BEGIN
41750 2153  673   ! ! !   ! buftype:= permiss;
41760 2154  674   ! ! !   ! LOCK mess_ref AS buf: mask_broad DO
41770 2155  675   ! ! !   !   WITH buf DO
41780 2156  676   ! ! !   !     CASE types OF
41790 2157  677   ! ! !   !     ! 0,1 : (* DC *)
41800 2158  678   ! ! !   !     !   BEGIN
41810 2159  679   ! ! !   !     !   ! fix.update:= 1;
41820 2160  680   ! ! !   !     !   ! IF dc_macro=data.macro THEN
41830 2161  681   ! ! !   !     !   !   fix.op_code:= 0 ELSE
41840 2162  682   ! ! !   !     !   !   IF get_macro_atts(data.macro,1) THEN
41850 2163  683   ! ! !   !     !   !     IF get_macro_at(data.macro,1) THEN
41860 2164  684   ! ! !   !     !   !       fix.op_code:= atadrtable(next).addr_code
41870 2165  685   ! ! !   !     !   !     ELSE buftype:= empty
41880 2166  686   ! ! !   !     !   !     ELSE buftype:= empty;
41890 2167  687   ! ! !   !     !   END;
41900 2168  688   ! ! !   !     ! 2,3 : (* NC *)
41910 2169  689   ! ! !   !     !   BEGIN
41920 2170  690   ! ! !   !     !   ! fix.update:= 2;
41930 2171  691   ! ! !   !     !   ! mess_ref^.u4:= mess_ref^.u4 - 2;
41940 2172  692   ! ! !   !     !   ! IF (dc_macro.dc_addr=data.macro.dc_addr) AND
41950 2173  693   ! ! !   !     !   !   (dc_macro.nc_addr=data.macro.nc_addr) THEN
41960 2174  694   ! ! !   !     !   !   fix.op_code:= 0 ELSE
41970 2175  695   ! ! !   !     !   !   IF get_macro_atts(data.macro,2) THEN
41980 2176  696   ! ! !   !     !   !     IF get_macro_at(data.macro,2) THEN
41990 2177  697   ! ! !   !     !   !       fix.op_code:= atadrtable(next).addr_code
42000 2178  698   ! ! !   !     !   !     ELSE buftype:= empty
42010 2179  699   ! ! !   !     !   !     ELSE buftype:= empty;
42020 2180  700   ! ! !   !     !   END;
42030 2181  701   ! ! !   !     ! 4,5 : (* TS *)
42040 2182  702   ! ! !   !     !   BEGIN
42050 2183  703   ! ! !   !     !   ! fix.update:= 3;
42060 2184  704   ! ! !   !     !   ! mess_ref^.u4:= mess_ref^.u4 - 4;
\f

tsvaclst    81.06.16.   13.41.                                                    page    59

42070 2185  705   ! ! !   !     !   ! IF ts_macro=data.macro THEN
42080 2186  706   ! ! !   !     !   !   fix.op_code:= 0 ELSE
42090 2187  707   ! ! !   !     !   !   IF get_macro_atts(data.macro,3) THEN
42100 2188  708   ! ! !   !     !   !     IF get_macro_at(data.macro,3) THEN
42110 2189  709   ! ! !   !     !   !       fix.op_code:= atadrtable(next).addr_code
42120 2190  710   ! ! !   !     !   !     ELSE buftype:= empty
42130 2191  711   ! ! !   !     !   !     ELSE buftype:= empty;
42140 2192  712   ! ! !   !     !   END;
42150 2193  713   ! ! !   !     ! 6,7 : (* VC *)
42160 2194  714   ! ! !   !     !   buftype:= empty;
42170 2195  715   ! ! !   !     ! 8,9 : (* AT *)
42180 2196  716   ! ! !   !     !   BEGIN
42190 2197  717   ! ! !   !     !   ! fix.update:= 0;
42200 2198  718   ! ! !   !     !   ! IF get_adr_code(data,adr_code) THEN
42210 2199  719   ! ! !   !     !   !   fix.op_code:= adr_code ELSE
42220 2200  720   ! ! !   !     !   !   buftype:= empty;
42230 2201  721   ! ! !   !     !   END;
42240 2202  722   ! ! !   !     ! OTHERWISE (* nothing *);
42250 2203  723   ! ! !   !     END (* case *);
42260 2204  724   ! ! !   ! IF buftype=permiss THEN
42270 2205  725   ! ! !   !   input:= nothing;
42280 2206  726   ! ! !   END;
42290 2207  727   ! ! ! 20 : (* lam need buf *)
42300 2208  728   ! ! !   BEGIN
42310 2209  729   ! ! !   ! restart_clock;
42320 2210  730   ! ! !   ! IF no_of_listen>0 THEN
42330 2211  731   ! ! !   !   input:= from_listen_ref
42340 2212  732   ! ! !   ! ELSE
42350 2213  733   ! ! !   !   IF no_of_queue>5 THEN
42360 2214  734   ! ! !   !     BEGIN
42370 2215  735   ! ! !   !     ! wait(mess_ref,queuesem.w^);
42380 2216  736   ! ! !   !     ! no_of_queue:= no_of_queue - 1;
42390 2217  737   ! ! !   !     ! unknown_buf(no_resources)
42400 2218  738   ! ! !   !     END
42410 2219  739   ! ! !   END
42420 2220  740   ! ! !   OTHERWISE unknown_buf(rejected)
42430 2221  741   ! ! END (* case *);
42440 2222  742   ! ! 
42450 2223  743   ! !  
\f

tsvaclst    81.06.16.   13.41.                                                    page    60

43010 2224  744   ! !   (* send buffer *)
43020 2225  745   ! !   (*q if test then
43030 2226  746   ! !   testout(zout,"buftype out:",ord(buftype)); q*)
43040 2227  747   ! ! CASE buftype OF
43050 2228  748   ! ! ! operate,
43060 2229  749   ! ! ! table  ,
43070 2230  750   ! ! ! service:
43080 2231  751   ! ! !   BEGIN   (* receipt in current buffer , back to sender *)
43090 2232  752   ! ! !   ! mess_ref^.u3:= vca_route;
43100 2233  753   ! ! !   ! mess_ref^.u4:= mess_ref^.u4 + 1;
43110 2234  754   ! ! !   ! LOCK mess_ref AS buf: alarmlabel DO
43120 2235  755   ! ! !   !   BEGIN
43130 2236  756   ! ! !   !   ! buf.rec:= buf.send;
43140 2237  757   ! ! !   !   ! buf.send.macro:= ts_macro;
43150 2238  758   ! ! !   !   ! buf.send.micro:= micadr;
43160 2239  759   ! ! !   !   END;
43170 2240  760   ! ! !   ! send_to_vch
43180 2241  761   ! ! !   END;
43190 2242  762   ! ! ! unknown:
43200 2243  763   ! ! !   BEGIN     (* send buffer to own dc or sender *)
43210 2244  764   ! ! !   ! mess_ref^.u3:= vca_route;
43220 2245  765   ! ! !   ! send_to_vch
43230 2246  766   ! ! !   END;
43240 2247  767   ! ! ! listen:
43250 2248  768   ! ! !   BEGIN     (* new listenbuffer are used *)
43260 2249  769   ! ! !   ! mess_ref^.u3:= vca_route1;    (* request listenbuffer *)
43270 2250  770   ! ! !   ! LOCK mess_ref AS buf: alarmlabel DO
43280 2251  771   ! ! !   !   BEGIN
43290 2252  772   ! ! !   !   ! buf.send.macro:= ts_macro;
43300 2253  773   ! ! !   !   ! buf.send.micro:= micadr;
43310 2254  774   ! ! !   !   END;
43320 2255  775   ! ! !   ! send_to_vch
43330 2256  776   ! ! !   END;
43340 2257  777   ! ! ! report,
43350 2258  778   ! ! ! testat,
43360 2259  779   ! ! ! alarm:
43370 2260  780   ! ! !   BEGIN     (* send to other receiver *)
43380 2261  781   ! ! !   ! mess_ref^.u3:= vca_route;
43390 2262  782   ! ! !   ! send_to_vch
43400 2263  783   ! ! !   END;
43410 2264  784   ! ! ! empty:
43420 2265  785   ! ! !   BEGIN     (* buffer is empty, release to pool *)
43430 2266  786   ! ! !   ! mess_ref^.u2:= 0;
43440 2267  787   ! ! !   ! mess_ref^.u3:= vca_route;
43450 2268  788   ! ! !   ! IF no_of_listen<2 THEN
43460 2269  789   ! ! !   !   save_listen_buf ELSE
\f

tsvaclst    81.06.16.   13.41.                                                    page    61

43470 2270  790   ! ! !   !   return(mess_ref)
43480 2271  791   ! ! !   END
43490 2272  792   ! ! !   OTHERWISE (* nothing *)
43500 2273  793   ! ! END (* send buffer *);
43510 2274  794   ! ! 
43520 2275  795   ! ! IF input <> nothing THEN
43530 2276  796   ! !   IF NOT nil(mess_ref) THEN
43540 2277  797   ! !     BEGIN  (* needless buffer , possible program error *)
43550 2278  798   ! !     !   (*q if test then testout(zout,"released :  ",mess_ref^.u4); q*)
43560 2279  799   ! !     ! no_of_released:= (no_of_released MOD max_int) + 1;
43570 2280  800   ! !     ! return(mess_ref);
43580 2281  801   ! !     END;
43590 2282  802   ! ! 
43600 2283  803   ! UNTIL false;
43610 2284  804   END.
43620 2285      
43630 2286      
\f

tsvaclst    81.06.16.   13.41.                                                    page    62

           0  171*  172*  173*  174*  184*  185*  206*  248*  277*  297*  298*  299*  300*  301*  302*
              303*  304*  304*  304*  304*  304*  304*  304*  304*  304*  304*  304*  304*  304*  304*
              304*  304*  466   467   487   518   575*  582*  583*  584*  678   680   681   831   831 
              832   834   834   835   847   847   848   855   855   856   867   868   873   873   874 
              881   881   882   888   888   889   892   935   968   974: 1008: 1021  1022  1191  1191 
             1200  1200  1200  1200  1247  1247  1248  1250  1250  1251  1251  1253  1253  1254  1269 
             1269  1271  1272  1272  1295  1343  1344  1355  1355  1356  1434  1469  1473  1528  1528 
             1528  1528  1536  1538  1557  1613: 1622: 1630: 1648: 1653: 1876  1880: 1949: 2003: 2051 
             2068  2084: 2157: 2161  2174  2186  2197  2210  2266 
           1   80*  129*  173*  209*  210*  211*  236*  266*  267*  297*  298*  299*  300*  301*  302*
              303*  356   361   366   375   379   384   393   399   407   413   421   427   437   443 
              453   459   491   498   521   525   539   575*  648   674   697   705   708   806   826 
              831   834   847   855   866   873   881   888   924   937   958   960   974   975   975 
              988   989  1001  1012: 1051  1058: 1059  1068: 1071  1089: 1090  1100  1142  1160: 1177 
             1185  1187  1192  1221  1231  1235  1247  1253  1255  1259: 1267: 1277  1290  1293  1296 
             1298  1325  1343  1343  1355  1456  1535  1560  1598: 1614: 1617: 1622: 1630: 1634: 1688:
             1720  1724  1730  1734  1753  1761  1785  1796  1822  1833  1951: 1960  1969  1992  2037 
             2091  2119  2148  2157: 2159  2162  2163  2216  2233  2279 
           2   69*  297*  297*  297*  297*  297*  297*  363   381   486   486   507   575*  932   961 
              991   995:  996  1000  1009  1013  1017  1021  1060: 1076  1091: 1107  1152  1167: 1190 
             1196  1239  1241  1250  1260: 1267: 1268  1278  1278  1299  1299  1326  1603: 1618: 1621:
             1623: 1630: 1638: 1644: 1648: 1654: 1659: 1663: 1690: 1707: 1881: 1885  1896  1906  1927 
             1938  1953: 1961  1970  2013: 2111: 2168: 2170  2171  2175  2176  2268 
           3  172*  266*  298*  298*  298*  298*  576*  706   968   970   997  1001  1010  1014  1018 
             1022  1061  1069  1093: 1174: 1192  1248  1250  1254  1259: 1267: 1268  1279  1279  1300 
             1300  1623: 1629: 1693: 1955: 1962  1971  2168: 2183  2187  2188 
           4   80*  297*  298*  299*  300*  498:  576* 1063  1182: 1199  1260: 1267: 1268  1271  1624:
             1633: 1639: 1659: 1663: 1701: 1768: 1892: 1917  1957: 1963  1972  2181: 2184 
           5   68*  129*  297*  298*  299*  576* 1085  1211: 1261: 1270: 1437  1624: 1649: 1667: 1704:
             1716  1745  1778  1815  1964  1966: 1973  2181: 2213 
           6  297*  297*  297*  297*  298*  298*  298*  298*  299*  299*  299*  302*  303*  577* 1016:
             1092  1191  1218: 1255: 1262: 1270: 1625: 1637: 1640: 1659: 1663: 1805: 1848: 1902: 2008:
             2193:
           7  298*  299*  300*  301*  302*  577*  583* 1020: 1094  1227: 1238  1249: 1295  1625: 1643:
             1874: 2013: 2193:
           8  263*  299*  299*  299*  299*  299*  300*  301*  498: 1115  1249: 1308: 1626: 1647: 1655:
             1663: 1668: 1913: 1981: 2195:
           9  300*  300*  300*  300*  300*  301*  301*  301*  301*  301*  302*  302*  302*  302*  302*
              302*  303*  303*  303*  303*  303*  303*  303*  991   999: 1120  1315: 1626: 1652: 2014:
             2034: 2195:
          10  300*  302*  303*  682  1123  1322: 1658: 1663: 1923: 1959  1968  2041:
          11  300*  301* 1130  1332: 1662: 2044:
          12  300*  301* 1148  1339: 1663: 1666: 1876  1934: 2060:
          13  302* 1351: 2066:
\f

tsvaclst    81.06.16.   13.41.                                                    page    63

          14  302*  303* 1054  1103  1126  1145  1353: 1663: 1945: 2073:
          15  184*  185*  298*  299*  300*  301* 2082:
          16  303*  497  1583  1584  2137:
          17  301*  302*  303* 2143:
          18  297*  298*  299*  300*  301*  302*  303* 2145:
          19  297*  298*  299*  300*  301*  301*  302*  303*  684  2151:
          20 2207:
          31  174*  584*
         255  171*  582*
         256 1973 
        1000 1485 
accepted     1261  1343  1711  1772  1809  1878  2094  2105  2122  2128 
action        220* 1680= 1686 
active        139* 1467  1555: 2100 
acttable      289* 1680 
addr          188*  782   817=
addr_code     426   439  1721  1731  1742  1749  1758  2164  2177  2189 
adr           352*  359   362   364   371*  378   380   382   463*  465 
adr_code      223*  961  1712  1810  1988  1989  2004  2005  2009  2010  2015  2016  2198  2199 
alarm         147*  954: 1388: 1630  1986: 2116  2259:
alarmlabel     74*   75*   79*   84*   89*   94*  100*  106*  113*  118*  123*  128*  588*  594* 1696 
             1877  1986  2021  2234  2250 
alarmnetaddr   85*  101*  107*  108*  109*  182*  188*  215*  226*  269*  271*  389*  403*  417*  433*
              463*  595*  795*  801* 1528 
alfa          270*
alloc        1487  1502  1505  1515 
al_env_version                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1484 
area_from_lam                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              266* 1220= 1229= 1235  1239  1241  1248  1250  1254  1268  1278  1279  1299  1300  1325=
area_pointer  276*  705   710   958=  988= 1057  1067  1088  1177= 1177  1185= 1220  1221= 1221  1229 
             1231= 1326= 2091=
area_to_lam   265*  710   960=  961=  968=  970=  974=  975=  989=  996=  997= 1000= 1001= 1009= 1010=
             1013= 1014= 1017= 1018= 1021= 1022= 1187  1190  1192  1192  1196  1277= 1278= 1279= 1290=
             1293= 1296= 1298= 1299= 1300=
as            315:  333:  338:  344:  477:  638:  650:  658:  670:  700:  718:  757:  772:  928:  946:
              964:  992: 1004: 1407: 1494: 1512: 1603: 1696: 1708: 1769: 1806: 1877: 1882: 1893: 1903:
             1914: 1924: 1935: 1946: 1986: 1993: 1999: 2021: 2085: 2102: 2113: 2154: 2234: 2250:
at            107* 2117  2127 
atadr         417*  423   433*  442=
atadrtable    209*  378   380   382   423   426   439   442  1715  1719= 1719  1722= 1725= 1729= 1729 
             1733= 1733  1744  1750= 1754= 1760= 1760  2164  2177  2189 
attstable     210*  359   360   362   364   455   458  1777  1781= 1784= 1784  1797=
atts_table_index                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              272*
\f

tsvaclst    81.06.16.   13.41.                                                    page    64

at_addr       378   380   382   423   442  1712 
at_addr_e     114*  209*
at_addr_l     209* 1751 
at_control   1497 
at_table_addr                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              271* 1190  1192  1196  1197  1200  1239  1247  1251  1264  1269  1272 
at_tim_excess                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              832 
at_ts_e       119*  210*
at_ts_l       210* 1794 
below_serve_limit                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              279*  844   849=  870   875=
below_stoppoll_limit                                             <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              280*  852   857=  878   883=
boo           282*  607*  656=  715=  943= 1190= 1196=
book          326* 2052  2063  2069  2079 
bookup_ref    228*  313   314   315:  321   322   331   332   333:  340   341   342   344: 1502  1503 
book_pool     238* 1502 
book_req      331  1518 
boolean       194*  219*  282*  352*  354*  371*  373*  389*  391*  403*  405*  417*  419*  433*  435*
              449*  451*  515*  606*  607*
broad         160* 1626 
buf           315:  317   318   319   333:  335   336   338:  339   344:  346   347   477:  478   757:
              759   767   768   772:  774   782   783   784   964:  966   970   973   992:  993  1004:
             1005  1494: 1495  1512: 1513  1603: 1604  1606  1696: 1697  1708: 1709  1769: 1770  1806:
             1807  1877: 1878  1882: 1883  1893: 1894  1903: 1904  1914: 1915  1924: 1925  1935: 1936 
             1946: 1947  1986: 1988  1989  1993: 1994  1999: 2000  2021: 2022  2085: 2086  2113: 2114 
             2154: 2155  2234: 2236  2236  2237  2238  2250: 2252  2253 
buftype       195*  476=  489=  511=  524=  538=  919  1311= 1318= 1335= 1346= 1374  1397= 1458= 1568=
             1574= 1592  1595= 1598= 1605= 1607= 1614= 1618= 1626= 1630= 1634= 1640= 1644= 1648= 1649=
             1654= 1655= 1659= 1663= 1667= 1668= 1674= 1680  1850  1871= 1984  2038= 2047= 2116= 2130=
             2132  2149= 2153= 2165= 2166= 2178= 2179= 2190= 2191= 2194= 2200= 2204  2227 
buf_type      146*  195*  286*
build_an_lbuf                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              747* 1454 
build_a_letter_telegram                                          <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              695*  980  1027  1178  1281  1302 
build_a_poll_telegram                                            <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              665* 1206  1214  1223  1327  1381 
build_line_dep_telegram                                          <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              727* 1162 
build_same_telegram                                              <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              634*  739  1170 
build_serial_changed_telegram                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              645*  741  1358 
\f

tsvaclst    81.06.16.   13.41.                                                    page    65

byte           62*   80*  102*  133*  134*  183*  186*  187*  216*  223*  266*  268*  352*  371*  389*
              403*  417*  433*  473*  589*  590*  596*  597*  603*  796*  799*  800*
call          835   848   856 
calltest      611*  640   690   713   940 
canno          62*  636   647   668   698   925  1485  1491 
cbuf         2102: 2103 
check        1428 
check5        656   715   943  1428 
ch_format     132* 1494 
clock         154*  511  1375: 1598  1851: 2023:
clock_ref     229* 1505  1506  1512: 1853= 2098  2102: 2104 
cntl_inf      133* 1497=
code          389*  398=  403*  409   417*  426=  433*  439 
col           287*  289*
com_pool       57*  509 
con_lam_time 1498 
count         318=  335=
create_at_ch 1490 
cur_vcm       224* 1529= 1694  1697  1919 
data           75*   80*   85*   90*  101*  129*  481=  575* 1001  1049: 1087: 1117: 1139: 1887= 1888 
             1898= 1908= 1909  1919= 1929= 1930  1940= 1941  1960= 1961= 1962= 1963= 1964= 1969= 1970=
             1971= 1972= 1973= 1996  2009  2160  2162  2163  2172  2173  2175  2176  2185  2187  2188 
             2198 
datab         102* 1010 
dc            109* 2121  2124 
dc_addr       359   359   378   378   465=  465  2172  2172 
dc_erh_mic_addr                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1531 
dc_log_mic_addr                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1533 
dc_macro       59* 1530  1532  2160  2172  2173 
dc_poll_mic_addr                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1265 
dc_test_mic_addr                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1198 
delay_req    1508 
demand_lbuf   792*  831   834   847   855   873   881   888  1191  1199  1247  1250  1253  1268  1271 
             1343  1355 
dta1          186*  767   783   815=
dta2          187*  768   784   816=
dummy_route  1594:
d_ack         576* 1056: 1098: 1118: 1141:
d_addr        801*  817 
d_dta1        799*  815 
\f

tsvaclst    81.06.16.   13.41.                                                    page    66

d_dta2        800*  816 
d_kind        793*  809 
d_noob        794*  810 
d_opco        796*  812 
d_reci        795*  811 
d_resu        798*  814 
d_upda        797*  813 
empty         159*  476  1397  1595  2165  2166  2178  2179  2190  2191  2194  2200  2264:
entry         114*  119*  124* 1712  1715= 1721  1722  1725  1731  1742  1744= 1749  1750  1754  1758 
             1773  1777= 1781  1797  1810  1814= 1818  1834 
error         473*  488 
error_count    95* 2106 
false         354*  373*  391*  405*  419*  435*  451*  529   606*  836   849   857  1287: 1428  1539 
             1950  1954  2283 
fault_at_line                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              822* 1163  1169  1317  1334 
fix            74*   79*   84*   89*   94*  100*  106*  113*  118*  123*  128*  480   481   483   483 
              484   485   486   487   488   996   997  1000  1009  1013  1014  1017  1018  1711  1713 
             1716  1737  1740  1745  1747  1756  1763  1765  1772  1774  1778  1787  1790  1792  1799 
             1801  1802  1809  1811  1815  1824  1827  1829  1836  1838  1839  1885  1886  1889  1896 
             1897  1899  1906  1907  1910  1917  1918  1920  1927  1928  1931  1938  1939  1942  1948 
             1959  1968  1975  1996  2004  2005  2006  2010  2011  2015  2016  2017  2087  2094  2096 
             2105  2108  2109  2117  2120  2120  2121  2122  2124  2126  2126  2127  2128  2159  2161 
             2164  2170  2174  2177  2183  2186  2189  2197  2199 
fix_incr_on_err                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              256*  839   840 
fix_label     588*  594*  759   774   966   973 
found         219*  354*  357   361=  363=  365=  366   368   373*  376   379=  381=  383=  384   386 
              391*  394   397=  400   405*  408   411=  414   419*  422   425=  428   435*  438   441=
              444   451*  454   457=  460  1236= 1239= 1241= 1242  1572= 1983= 1988= 1989  2004= 2005 
             2009= 2010  2015= 2016  2026 
free          577* 1075: 1106: 1129: 1151: 1430  1436 
fromlam_ref   232* 1555  1556  1563  1564  2144=
from_check    584*
from_data     582* 1410 
from_lam_driver                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1038* 1445 
from_listen_ref                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              164* 1474  1570: 2140  2211 
from_opcode   583* 1409 
from_sem      163* 1524  1552: 1573  1576 
from_telegram_type                                               <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              581* 1407 
func          217*  352*  361   363   371*  379   381   991   991   994  1007  1583= 1612  1876  1992 
             2002 
\f

tsvaclst    81.06.16.   13.41.                                                    page    67

func_grp      218*
generate      656   715   943 
get_adr_code  417*  428= 1712  1988  2004  2009  2198 
get_atts_index                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              449*  460= 1773 
get_listen_buf                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              515*  527=  529= 1572  1854  2049 
get_macro_at  371*  386= 2163  2176  2188 
get_macro_atts                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              352*  368= 2162  2175  2187 
get_net_addr  433*  444= 1190  1196  1239  1721  1731  1742  1749  1758 
get_vc_code   389*  400= 1810  2015 
get_vc_netaddr                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              403*  414= 1241 
h10          1277  1298 
h12           476   482 
h2           1191 
h20          1240  1252: 1292 
h30          1188 
h31           831   834   888  1188 
h32          1188: 1355 
h34           847   873 
h35           855   881 
h40          1238  1246  1289 
h41           972 
h62          1194:
h63          1199 
h64          1268 
h67          1271 
h73          1250 
h80           934 
h84          1238  1246: 1289 
h85           972 
h98          1253 
hc1          1510 
hc2          1520 
hc3           332 
hc4           314 
hc5           523 
hf0          1290  1296 
hf1          1293 
hlp          1040* 1235= 1238  1238  1238  1240  1245  1247  1258  1266  1289  1289  1292  1295  1295 
i            1040* 1259= 1260= 1261= 1262= 1268  1271 
incname      1483 
\f

tsvaclst    81.06.16.   13.41.                                                    page    68

index         250*  317=  317   346=  346   449*  458=  458 
input         198* 1474= 1524= 1551  1573= 1576= 1972  2140= 2205= 2211= 2275 
input_type    163*  198*
insert_code  1718: 1748: 1780: 1793: 1817: 1830: 1888: 1909: 1930: 1941:
integer        61*   90*   95*   96*  129*  181*  206*  222*  236*  248*  250*  253*  254*  255*  256*
              257*  263*  272*  277*  286*  310*  326*  449*  602*  605*  794* 1040*
intg_aux      221* 1773 
keep_sender   269* 1343  2022=
keep_the_opcode                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              268*  934   960   972   972   974   975   989  1343  1395=
keep_the_telegram                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              264*  639   652   659=  687=  719=  947=
kind          180*  755   809=
label_size    486   605*  810   967  1716  1745  1778  1815  1885  1896  1906  1917  1927  1938  1959 
             1968 
lam           157* 1400: 1674  1859:
lamsem         55*  951   982  1029  1164  1171  1179  1208  1215  1224  1282  1303  1329  1359  1383 
             1500 
lamspeak      548* 2029 
lamspeak_state                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              200*  949=  981= 1028= 1043  1207= 1232= 1280= 1301= 1312= 1319= 1328= 1336= 1347= 1382=
             1466  1527= 1971  2092=
lamtest       281*  640   690   713   940  1431  1954= 1956=
lam_need_buf  141* 1472 
lam_pool      236* 1487 
lam_route    1492  1673:
lam_talk      140* 1563: 2028 
lam_timeout   606*  830   836= 1439=
lbuf_info     267*  807  1454 
lbuf_kind_type                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              177*  180*  793*
lbuf_needed   277*  806=  806   807  1454  1456= 1456  1469 
lbuf_record   179*  267*  749*
letterfromvc  200* 1081: 1328 
lettertovc    200*  981  1028  1045: 1280  1301 
line          199*  860=  894= 1162  1523=
line_error_count                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              244*  839   840=  840   842=  844   852   866=  866   867   868=  870   878  1887  1888=
             2106=
line_was      729*  738 
listen        148*  524  1449: 1458  1667  2247:
listen_ref    227*  520   537 
lock          315:  333:  338:  344:  477:  638:  650:  658:  670:  700:  718:  757:  772:  928:  946:
              964:  992: 1004: 1407: 1494: 1512: 1603: 1696: 1708: 1769: 1806: 1877: 1882: 1893: 1903:
             1914: 1924: 1935: 1946: 1986: 1993: 1999: 2021: 2085: 2102: 2113: 2154: 2234: 2250:
\f

tsvaclst    81.06.16.   13.41.                                                    page    69

log           177*  771: 1191  1199  1268  1271 
log_addr      595*  782=
log_alarm     597*  784=
log_opc       596*  783=
ltime         155* 1605  1857:
macro         378   380   382   465   484= 1197= 1264= 1530= 1532= 2160  2162  2163  2172  2173  2175 
             2176  2185  2187  2188  2237= 2252=
macroaddr      60*  352*  371*  449*  463* 1528 
mask_atadr    112* 1708 
mask_atts     117* 1769 
mask_atvcdc   105* 2113 
mask_broad     83* 2154 
mask_byte      78*  992 
mask_log_lbuf                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              593*  772 
mask_norm_lbuf                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              587*  757   964 
mask_poll      93* 2085 
mask_service   88* 1882  1893  1903  1924  1935 
mask_test     127* 1946 
mask_unknown   73*  477  1993 
mask_vcm       99* 1004  1914  1999 
mask_vcmat    122* 1806 
max_info_bytes                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               69*
max_int       491   498   825   839   842  2148  2279 
max_lbuf_needed                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               68*  267*
max_succ_errors                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              255*  828   886  1940  1941=
max_succ_lin_err                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              255*
messem         51* 1487  1505  1515  1562  1565  1566 
mess_ref      233*  476   477:  480   482   497   501   506   509   510   520   521   522   523   537 
              964:  992: 1004: 1395  1405  1454  1487  1488  1494: 1500  1556= 1559  1562  1564= 1565 
             1566  1582  1583  1584  1603: 1696: 1708: 1769: 1806: 1853  1855  1858  1861  1862  1877:
             1882: 1893: 1903: 1914: 1924: 1935: 1946: 1986: 1993: 1999: 2021: 2036  2046  2051  2062 
             2068  2076  2085: 2113: 2119  2119  2144  2147  2154: 2171  2171  2184  2184  2215  2232 
             2233  2233  2234: 2244  2249  2250: 2261  2266  2267  2270  2276  2280 
micadr         61*  485  1485  2238  2253 
micro         485= 1198= 1265= 1531= 1533= 2238= 2253=
nak           577* 1074: 1105: 1128: 1150:
nc_addr       362   362   380   380   466= 2173  2173 
netc_route    522  1611:
\f

tsvaclst    81.06.16.   13.41.                                                    page    70

next          222*  356=  357   359   360   362   364   366=  366   375=  376   378   380   382   384=
              384   393=  394   395   398   399=  399   407=  408   409   412   413=  413   421=  422 
              423   426   427=  427   437=  438   439   442   443=  443   453=  454   455   458   459=
              459  1715  1719  1722  1729  1733  1744  1750  1760  1777  1781  1784  1814  1818  1821 
             2164  2177  2189 
noatadr       204*  376   422   438  1719  1720= 1720  1724= 1724  1725  1729  1730= 1730  1733  1734=
             1734  1751  1753= 1753  1754  1760  1761= 1761 
noatts        205*  357   454  1784  1785= 1785  1794  1796= 1796  1797 
nok           191*  860 
noob          181*  761   776   810=
norm          177*  756:  831   834   847   855   873   881   888  1247  1250  1253  1343  1355 
norm_inf      589*  767=  970 
norm_inf1     590*  768=
nothing       165* 1576: 2205  2275 
notready      137* 1525  1526  1555  1863 
nottele       200* 1232  1312  1319  1336  1347  1466  1527  2092 
not_accepted 1262 
not_found    1747  1763  1792  1801  1829  1838  2011 
not_ready    1691 
novcm         206*  394   408  1535= 1536  1537  1538  1539  1821  1822= 1822  1831  1833= 1833  1834 
no_of_by      486=  761=  776=  966  1716= 1745= 1778= 1815= 1885= 1896= 1906= 1917= 1927= 1938= 1959=
             1968=
no_of_listen  245*  507   518   525=  525   539=  539  1473  1960  2210  2268 
no_of_queue   243* 1557  1560= 1560  1964  2037= 2037  2213  2216= 2216 
no_of_released                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              247* 1962  2279= 2279 
no_of_returned                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              246* 1961  2148= 2148 
no_of_unknown                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              248*  491=  491  1963 
no_resources 2217 
no_room      1756  1799  1836 
no_vcc_tim    237*
no_vcc_upd    238*
numb_of_bytes                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              605*  966=  967 
object        250*  319=  319   336=  339=  347=  347  1513= 1604  1606  2103=
ok            191*  738   894  1523 
oknok_type    191*  199*  729*
ok_at_line    864* 1176  1184  1213  1222  1230  1310  1324  1342  1357 
old_state     197* 1526= 1970  2048= 2141 
opco          183*  753   763   778   812=
operate       153* 1654  2228:
opr           575* 1050: 1097: 1122: 1140:
\f

tsvaclst    81.06.16.   13.41.                                                    page    71

opsem          49* 1483 
op_code       480=  763=  778=  996  1000  1009  1013  1017  1989= 1996= 1996  2005= 2010= 2016= 2161=
             2164= 2174= 2177= 2186= 2189= 2199=
ord          1969  1970  1971  1972  2077 
own          1483 
own_dc        214*  831   832   834   835   847   848   855   856   873   874   881   882   888   889 
             1248  1250  1254  1344  1355  1356  1530  1531  1537 
own_dc_log    215* 1191  1532  1533 
pack_counter  241*  498=  498  1898 
pack_dc_macro                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              463*  465   466   467  1197  1264 
passivated   1699 
passive       138* 1866  2078  2089  2093  2098 
permiss       161*  986: 1387: 1614  1618  1640  1644  1655  1991: 2153  2204 
polling       200* 1111: 1207  1382 
poll_delay    257* 1513  1973  2101= 2103 
poll_delay_time                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              257*
poll_rate      96* 2101 
pool          236*  237*  238*
pop           520 
process        48*
push          340   537 
p_ack         575* 1048: 1084: 1114: 1138:
queuesem       52* 1559  2036  2215 
r             611*  634*  636   638:  640   645*  647   650:  656   658:  665*  668   670:  690   695*
              698   700:  713   715   718:  728*  739   741   748*  753   757:  772:
read_code    1714: 1741: 1775: 1791: 1812: 1828: 1887: 1898: 1908: 1919: 1929: 1940:
rec           483=  762=  777= 1697= 2120  2121= 2126  2127= 2236=
recall        874   882   889 
reci          182*  762   777   811=
reference     233*  611*  634*  645*  665*  695*  728*  748*
rejected     1608  2096  2108  2220 
remove_code  1728: 1757: 1782: 1800: 1819: 1837:
report        150*  955: 1389: 1634  1649  1985: 2257:
restart_clock                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              504* 2023  2042  2209 
resu          185*  765   780   814=
result        488=  765=  780=  973  1014  1711= 1737= 1747= 1756= 1763= 1765= 1772= 1787= 1792= 1799=
             1801= 1802= 1809= 1824= 1829= 1836= 1838= 1839= 1878= 1889= 1899= 1910= 1920= 1931= 1942=
             1975= 2006= 2011= 2017= 2094= 2096= 2105= 2108= 2109= 2122= 2128=
result_range  798*
return       1855  2147  2270  2280 
row           286*  287*  297*  298*  299*  300*  301*  302*  303*  304*
\f

tsvaclst    81.06.16.   13.41.                                                    page    72

rute          216* 1582= 1593 
s            1487  1505  1515  2036 
save_listen_buf                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              307*  510   534* 1702  2139  2269 
semaphore     234*
sempointer     49*   57*
send          483   484   485  1988  2004  2015  2022  2117  2120= 2124  2126= 2236  2237  2238  2252 
             2253 
send_to_vch   495* 2240  2245  2255  2262 
sensesem      509 
serial_no     274*  648=  648   653   674=  674   679   681   697=  697   709   924=  924   933 
serve_limit   253*  844   870  1908  1909=
service       151* 1663  1668  2230:
service_lim   253*
signal        321   341   501   506   951   982  1029  1164  1171  1179  1208  1215  1224  1282  1303 
             1329  1359  1383  1500  2036  2104 
slave_data    603* 1220  1229  1325  1344  1356  1410=
slave_opcode  602* 1046  1082  1112  1136  1409= 1430= 1431  1436=
speak_action  263* 1051= 1054= 1059= 1061= 1063= 1069= 1071= 1076= 1085= 1090= 1092= 1094= 1100= 1103=
             1107= 1115= 1120= 1123= 1126= 1130= 1142= 1145= 1148= 1152= 1158 
start_code   1259  2097:
state_type    137*  196*  197*  287*
status        576* 1053: 1102: 1125: 1144:
stime         156* 1607  1858:
stoppoll_limit                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              254*  852   878  1929  1930=
stop_code    1260  2088:
stop_poll     144*
stop_poll_lim                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              254*
succ_line_errors                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              275*  825   826=  826   828   886   892=
table         149* 1659  2229:
telegram      638:  639=  650:  652=  653   658:  659   670:  675   687   700:  703   718:  719   928:
              930   946:  947  1407: 1409  1410 
teletxt       270*
test          194* 1950= 1952=
testat        152*  921: 1390: 1648  2021: 2258:
testi         200*  949  1135:
testopen     1483 
testout      1431  1484  1485  2077 
ticks         310*  318   326*  335   336   339 
timeoutsem     56*  321   341   506  2104 
timeout_answer                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              234*  322   342  1502 
\f

tsvaclst    81.06.16.   13.41.                                                    page    73

timeout_ref   230*  329   338:  340  1515  1516  1858= 2046= 2062= 2076=
timers        237*  338  1512  1603  2102 
time_inf      134* 1498=
tim_pool      237* 1505  1515 
tim_route    1509  1596:
tim_route1   1503  1519  1601:
tolam_ref     231*  925   928:  940   943   946:  951   980   982  1027  1029  1162  1164  1170  1171 
             1178  1179  1206  1208  1214  1215  1223  1224  1281  1282  1302  1303  1327  1329  1358 
             1359  1381  1383  1405= 1407: 1428  1434  1437  1862= 2098 
to_check      174*  682=  684=
to_data       171*  680=  710=  935=  937=
to_lam_driver                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              906* 1396 
to_opcode     172*  678=  706=  708=  932=
to_serial_no  173*  653=  679=  709=  933=
to_telegram_type                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              170*  264*  638   650   658   670   700   718   928   946 
trans_err_rate                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              256*
trans_ok      242*
true          194*  282*  361   363   365   379   381   383   397   411   425   441   457   527   607*
              875   883  1236  1243: 1439  1952  1956  1983 
tsadr         449*  455 
ts_addr       359   362   364   364   364   455   467= 1773 
ts_macro       60*  484  2185  2237  2252 
ts_pointer     52*
ts_type       360 
ts_type_pvc   360 
types         218* 1584= 1597  1602  1613  1617  1621  1629  1633  1637  1643  1647  1652  1658  1662 
             1666  1706  1876= 1879  2083  2156 
t_ack         576* 1066: 1099: 1119: 1147:
u1            313=  331= 1490= 1508= 1518= 1861=
u2            521=  636=  647=  668=  698=  925= 1434  1437  1491= 2051= 2068= 2266=
u3            522= 1492= 1503= 1509= 1519= 1582  2232= 2244= 2249= 2261= 2267=
u4            314=  332=  476   480   482=  497   523=  753= 1395  1510= 1520= 1583  1584  2119= 2119 
             2171= 2171  2184= 2184  2233= 2233 
unknown       146*  489  1568  1574  1592  2130  2132  2242:
unknown_buf   473* 1599  1608  1609  1615  1619  1627  1631  1635  1641  1645  1650  1656  1660  1664 
             1669  1671  1675  1691  1699  2031  2132  2217  2220 
unknown_opcode                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1599  1609  1615  1619  1627  1631  1635  1641  1645  1650  1656  1660  1664  1669  1671 
unknown_route                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1675 
unknown_sender                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             2006  2017  2031  2132 
\f

tsvaclst    81.06.16.   13.41.                                                    page    74

unknown_update                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1737  1765  1787  1802  1824  1839  1889  1899  1910  1920  1931  1942  1975  2109 
upda          184*  764   779   813=
update        310*  487=  764=  779=  997  1018  1713  1740  1774  1790  1811  1827  1886  1897  1907 
             1918  1928  1939  1948  2087  2159= 2170= 2183= 2197=
updates       238*  315   333   344 
update_range  797*
update_req    313 
used          158*  538  1311  1318  1335  1346  1871  2038  2047  2149 
vc            108*
vcadr         389*  395   403*  412=
vcatc          48*
vcatc_need_buf                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              142* 2056 
vcatc_state   196* 1467= 1472= 1525= 1554  1680  1863  1866= 1969  2028= 2048  2053= 2056= 2070= 2077 
             2078= 2089  2093= 2098  2100= 2141=
vca_route    2232  2244  2261  2267 
vca_route1   2249 
vcc_vch_ltime                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1604  2063  2079 
vcc_vch_stime                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1606  2052  2069 
vchsem         54*  501 
vcmat_e       124*  211*
vcmat_l       211* 1831 
vcmtable      211*  395   398   409   412  1536  1537  1538  1539  1814  1818= 1821= 1821  1834=
vc_addr       395   412  1537= 1810 
vc_arrange   1538=
vc_code       398   409  1536=
vc_relief    1539=
version        67* 1484 
w            1559  1562  1565  1566  2215 
wait          322   342  1559  1562  1565  1566  2215 
wait_shorttime                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              143* 2053  2070 
work          226* 1197  1198  1199  1241  1253  1264  1265  1268  1271  1721  1731  1742  1749  1758 
write_read_at                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1861 
x             749*  753   755   761   762   763   764   765   767   768   776   777   778   779   780 
              782   783   784 
zero_addr     225* 1528= 1529  1694 
zone          259*
zout          259* 1431  1483  1484  1485  2077 
\f

tsvaclst    81.06.16.   13.41.                                                    page    75

AND               16
ARRAY              9
BEGIN            176
CASE              62
CONST              3
DIV                2
DO                80
ELSE              61
END              255
FORWARD            1
FUNCTION           9
IF               103
MOD                8
NIL                7
NOT               18
OF                74
OR                 5
OTHERWISE         47
PACKED             5
PROCEDURE         20
RECORD            17
REPEAT             1
THEN             103
TYPE               3
UNTIL              1
VAR               25
WHILE              8
WITH              28
\f

jg6  1981.06.16  13.44
 tsvac program
81.06.16.      13.44.                         pascal80     version 1981.04.01


   name        headline beginline endline  appetite(words) 

   update         312       313     324  :       7            
   book           328       330     350  :       7            
   get_macro_at   354       356     369  :       7            
   get_macro_at   373       375     387  :       8            
   get_vc_code    391       393     401  :       8            
   get_vc_netad   405       407     415  :       8            
   get_adr_code   419       421     429  :       8            
   get_net_addr   435       437     445  :       8            
   get_atts_ind   451       453     461  :       8            
   pack_dc_macr   464       465     468  :       5            
   unknown_buf    475       476     492  :       9            
   send_to_vch    496       498     502  :       4            
   restart_cloc   505       506     513  :       9            
   get_listen_b   517       519     530  :       4            
   save_listen_   536       537     541  :       4            
   calltest       612       631     631  :       2            
   build_same_t   635       636     642  :      12            
   build_serial   646       647     661  :      15            
   build_a_poll   666       668     692  :      12            
   build_a_lett   696       697     721  :      15            
   build_line_d   736       739     743  :      10            
   build_an_lbu   752       753     788  :      11            
   demand_lbuf    804       806     820  :       7            
   fault_at_lin   823       826     862  :      19            
   ok_at_line     865       866     903  :      19            
   to_lam_drive   917       921    1035  :      15            
   from_lam_dri  1040      1045    1364  :      24            
   lamspeak       575      1375    1478  :      24            
   vcatc           67      1483    2284  :     292            

 code: 5 . 2612  = 17612 bytes


end of PASCAL80 compilation 

end
blocksread = 53
«eof»