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

⟦e3bf9d46a⟧ TextFileVerbose

    Length: 65280 (0xff00)
    Types: TextFileVerbose
    Names: »tsvaslst«

Derivation

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

TextFileVerbose

\f

tsvaslst    81.06.15.   15.00.                                                    page     1

   10    1          vagt_env;
   20    2          
   30    3            (*----------------------------------------------------*)
   40    4            (*                                                    *)
   50    5            (*              vagt for demo system                  *)
   60    6            (*                                                    *)
   70    7            (*----------------------------------------------------*)
   80    8            (*
   90    9            
  100   10            function.
  110   11            ---------
  120   12            this program acts as the lam_driver for the vc_connector.
  130   13            ( u1 = 8 or u1 = 11 )
  140   14            
  150   15            
  160   16            requests from other programs.
  170   17            ------------------------------
  180   18            
  190   19            these must obey the at-protocol.  correct telegrams are printed
  200   20            on tty in alarm format, and answers are send.
  210   21            
  220   22            
  230   23            output
  240   24            ------
  250   25            alarm       <clock> <text> <oper> <adr> <info>         alarm received.
  260   26            ready       <clock>  klar                              connected to ts.
  270   27            timeout     *<bel>                                     disconnected.
  280   28            empty       <clock>                                    command is send.
  290   29            error       <clock> <text>           ??                command rejected.
  300   30            
  310   31            <clock> ::= hh.mm.ss
  320   32            <text>  ::= name of alarm
  330   33            <oper>  ::= ff.nn    opkode of alarm
  340   34            <adr>   ::= sending at.     0..255
  350   35            <info>  ::= information     0..255
  360   36            
  370   37            
  380   38            input
  390   39            -----
  400   40            <inputline> ::= <command>: <adr> <info> <cr>
  410   41            <command>   ::= styr / test / tid: / star / stop / -sta / -sto /
  420   42            vagt / flyt / -fly / modt / -mod /
  430   43            nlat / -nla / nlvc / -nlv /
  440   44            <adr>       ::= 0..255       receiving at
  450   45            <info>      ::= 0..255       information
  460   46            in tid command: adr = hh and info = mm
\f

tsvaslst    81.06.15.   15.00.                                                    page     2

  470   47            *)
  480   48           
\f

tsvaslst    81.06.15.   15.00.                                                    page     3

 1010   49            (*------------------------ constants -------------------------------*)
 1020   50          
 1030   51        CONST
 1040   52          version = "vers  3.10 /";
 1050   53          inc_size = 355;
 1060   54          
 1070   55          ok = 0;
 1080   56          ille = 4;
 1090   57          p_ack  = 0;            (*  in answers  *)
 1100   58          vc_data= 1;
 1110   59          vc_opr = 2;
 1120   60          status = 3;
 1130   61          d_ack =  4;
 1140   62          t_ack =  5;
 1150   63          vc_nak  = 6;
 1160   64          test_ok = 6;
 1170   65          test_error= 21;
 1180   66          maxtime      =  2;    (*  maxtime*delay1 seconds between poll  *)
 1190   67          pagesize = 44;
 1200   68          ttylength = 80;       (*  line length in tty buffer   *)
 1210   69          last_text_no = 27;    (*  last tekst number   *)
 1220   70          last_com_no = 18;      (*  last command no +1   *)
 1230   71          headn = 4;
 1240   72          no_reads = 1;
 1250   73          no_writes = 3;
 1260   74          delay1       = 10;
 1270   75          delay2       = 10;    (*  1024 m seconds  *)
 1280   76          forever = false;
 1290   77           
\f

tsvaslst    81.06.15.   15.00.                                                    page     4

 2010   78            (*---------------------------- types -------------------------------*)
 2020   79          
 2030   80        TYPE
 2040   81          command     = ARRAY (1..4) OF char;
 2050   82          commands    = ARRAY (1..last_com_no) OF command;
 2060   83          opcodes     = ARRAY (1..last_com_no) OF byte;
 2070   84          funktion    = ( poll, data, test_i, opr );
 2080   85          replycode   = 0..7;
 2090   86          replycodes  = ARRAY (0..4) OF replycode;
 2100   87          errortext   = ARRAY (1..3) OF alfa;
 2110   88          alarmtext   = RECORD no: byte; tx: alfa  END;
 2120   89          textarray   = ARRAY (1..last_text_no) OF  alarmtext;
 2130   90          headarray   = ARRAY (1..headn) OF alfa;
 2140   91          statusarray = ARRAY (0..7) OF alfa;
 2150   92          
 2160   93          createshape = PACKED RECORD
 2170   94                               !  contr, timer : byte
 2180   95                               END;
 2190   96          
 2200   97          telegram = PACKED RECORD          (*  from vccon  *)
 2210   98                            !  inf: byte;
 2220   99                            !  fnc: funktion;
 2230  100                            !  lnr: 0..1;
 2240  101                            !  cbits: 0..31
 2250  102                            END;
 2260  103          
 2270  104          respons = PACKED RECORD           (*  to vccon    *)
 2280  105                           !  info: byte;
 2290  106                           !  opko: replycode;
 2300  107                           !  cbits: 0..31
 2310  108                           END;
 2320  109          
 2330  110          filebuffer = RECORD
 2340  111                       !  first, last, nextfree : integer;
 2350  112                       !  text : ARRAY ( 1..ttylength) OF char
 2360  113                       END;
 2370  114          
 2380  115          filezone = RECORD
 2390  116                     !  driver, answer_sem,
 2400  117                     !  free: integer;
 2410  118                     !  cur : reference;
 2420  119                     !  u1val, u2val : byte;
 2430  120                     !  next, top : integer
 2440  121                     END;
 2450  122           
\f

tsvaslst    81.06.15.   15.00.                                                    page     5

 3010  123        CONST
 3020  124          reply = replycodes ( p_ack, vc_data, vc_data, vc_opr, vc_nak);
 3030  125          
 3040  126          whatx = errortext ("kommandofejl","atnr fejl   ","info fejl   ");
 3050  127          
 3060  128          empty = "          > ";
 3070  129          klar  = "klar        ";
 3080  130          head = headarray (
 3090  131                            "  klokken   ","tekst       "," opkode  atn","r  info     ");
 3100  132          
 3110  133          tekst = textarray(
 3120  134                            alarmtext ( #h01, "log fra aVC "),
 3130  135                            alarmtext ( #h10, "returneret  "),
 3140  136                            alarmtext ( #h12, "afvisning!!!"),
 3150  137                            alarmtext ( #h20, "knudeudfald "),
 3160  138                            alarmtext ( #h21, "knuderetabl."),
 3170  139                            alarmtext ( #h28, "AT udfald   "),
 3180  140                            alarmtext ( #h29, "AT retabl.  "),
 3190  141                            alarmtext ( #h30, "au-alarm    "),
 3200  142                            alarmtext ( #h31, "liniealarm  "),
 3210  143                            alarmtext ( #h32, "statusalarm "),
 3220  144                            alarmtext ( #h41, "styr udf|rt "),
 3230  145                            alarmtext ( #h42, "styr afvist "),
 3240  146                            alarmtext ( #h50, "flytning?   "),
 3250  147                            alarmtext ( #h53, "flytning ok "),
 3260  148                            alarmtext ( #h54, "returnering?"),
 3270  149                            alarmtext ( #h57, "vagt retur  "),
 3280  150                            alarmtext ( #h62, "AT er ok    "),
 3290  151                            alarmtext ( #h64, "start AT?   "),
 3300  152                            alarmtext ( #h65, "stop AT?    "),
 3310  153                            alarmtext ( #h66, "nedl{g AT? "),
 3320  154                            alarmtext ( #h72, "nedl{g VC?  "),
 3330  155                            alarmtext ( #h85, "test udf|rt "),
 3340  156                            alarmtext ( #h86, "test afvist "),
 3350  157                            alarmtext ( #h98, "meddelelse  "),
 3360  158                            alarmtext ( #hf0, "AT ukendt   "),
 3370  159                            alarmtext ( #hf1, "VC ukendt   "),
 3380  160                            alarmtext ( #hff, "ukendt alarm") );
 3390  161           
\f

tsvaslst    81.06.15.   15.00.                                                    page     6

 4010  162          statustxt = statusarray(
 4020  163                                  ": afmelding ",
 4030  164                                  ": timeout   ",
 4040  165                                  ": hs fejl   ",
 4050  166                                  ": au fejl   ",
 4060  167                                  ": serif fejl",
 4070  168                                  ": genstart  ",
 4080  169                                  ": batteri ud",
 4090  170                                  ": batteri   ");
 4100  171          
 4110  172          menu = commands
 4120  173           ("styr","test","tid:","star",
 4130  174           "stop","-sta","-sto",
 4140  175           "vagt","flyt","-fly","modt","-mod",
 4150  176           "nlat","-nla","nlvc","-nlv","medd",
 4160  177           "    ");
 4170  178          
 4180  179          opkode = opcodes
 4190  180           ( #h40, #h84, #hc4, #h01,
 4200  181           #h02, #h03, #h04,
 4210  182           #h15, #h16, #h17, #h18, #h19,
 4220  183           #h05, #h06, #h07, #h08, #h20,
 4230  184           0 );
 4240  185          .
 4250  186           
\f

tsvaslst    81.06.15.   15.00.                                                    page     7

 5010  187        PROCESS atvagtsim(
 5020  188          op_sem : sempointer;
 5030  189          VAR
 5040  190          sem    : !ts_pointer_vector  (* ts semaphores *)
 5050  191          );
 5060  192          
 5070  193          
 5080  194        TYPE
 5090  195          descriptor_ix = 1..vc_l;
 5100  196          
 5110  197        VAR
 5120  198          inc_name  : alfa;
 5130  199          desc_ix   : descriptor_ix := 1;
 5140  200          no_of_inc : 0..vc_l       := 0;
 5150  201          result    : result_range  := accepted;
 5160  202          
 5170  203          ch_desc   : ARRAY( descriptor_ix ) OF
 5180  204          RECORD
 5190  205          !  chann  : byte;
 5200  206          !  main   : integer;
 5210  207          !  shad   : shadow
 5220  208          END;
 5230  209          
 5240  210          msg       : reference;
 5250  211          opzone    : zone;
 5260  212           
\f

tsvaslst    81.06.15.   15.00.                                                    page     8

 6010  213        PROCESS vagt_sim( op_sem: sempointer;
 6020  214          VAR
 6030  215          sem: !ts_pointer_vector;
 6040  216          main, vagt_int1, vagt_int2, vagt_int3, vagt_int4, lam_sem_no: !integer );
 6050  217          
 6060  218          
 6070  219        VAR
 6080  220          l, vl : 0..1;            (*  l|benumre   *)
 6090  221          lamstate,
 6100  222          oldstate,
 6110  223          austate,
 6120  224          databits : byte:= 0;
 6130  225          func: funktion;
 6140  226          lastanswer,
 6150  227          answer: respons := respons ( 0, 0, 10 );
 6160  228          sample,
 6170  229          newdata,
 6180  230          timeout,
 6190  231          h         : integer := 0;
 6200  232          dummy,
 6210  233          line_ready : boolean := false;
 6220  234          letter,                          (*  message from keyboard  *)
 6230  235          note : ARRAY (0..4) OF byte;     (*  message from vccon     *)
 6240  236          msg: reference;
 6250  237          
 6260  238          writepool: pool no_writes OF filebuffer;
 6270  239          readpool : pool no_reads OF filebuffer;
 6280  240          timerpool : pool 1;
 6290  241          
 6300  242          opzone : zone;
 6310  243          
 6320  244          portno: byte;          (*  lam channel  *)
 6330  245          linecount : integer:= 0;
 6340  246          
 6350  247          tty : filezone := filezone ( ?, ?, ?, ?, 18, 1, 1, ttylength );
 6360  248          kb  : filezone := filezone ( ?, ?, ?, ?, 17, 1, 1, ttylength );
 6370  249          
 6380  250          clockpool : pool 1 OF ts_time;    (*  to get time   *)
 6390  251          clock_msg : reference;
 6400  252           
\f

tsvaslst    81.06.15.   15.00.                                                    page     9

 7010  253          PROCEDURE open_file ( VAR f: filezone;  driv, answ, vacant: integer;
 7020  254            bufs : integer; VAR reso : pool 1; v1, v2: byte );
 7030  255          BEGIN
 7040  256    1     ! WITH f DO
 7050  257    2     !   BEGIN
 7060  258    3     !   ! driver:= driv;
 7070  259    4     !   ! answer_sem:= answ;
 7080  260    5     !   ! free:= vacant;
 7090  261    6     !   ! u1val:= v1;
 7100  262    7     !   ! u2val:= v2;
 7110  263    8     !   ! WHILE bufs > 0 DO
 7120  264    9     !   !   BEGIN
 7130  265   10     !   !   ! alloc ( cur, reso, sem(answer_sem).s^);
 7140  266   11     !   !   ! cur^.u1:= u1val;
 7150  267   12     !   !   ! cur^.u2:= 0;
 7160  268   13     !   !   ! signal ( cur, sem(free).s^ );
 7170  269   14     !   !   ! bufs:= bufs-1
 7180  270   15     !   !   END;
 7190  271   16     !   END
 7200  272   17     END;
 7210  273          
 7220  274          
 7230  275          
 7240  276          PROCEDURE outblock ( VAR f: filezone);
 7250  277          BEGIN
 7260  278    1     ! WITH f DO
 7270  279    2     !   BEGIN
 7280  280    3     !   !   (*q testout ( opzone, "outblock    ", next-1 ); q*)
 7290  281    4     !   ! LOCK cur AS buf: filebuffer DO
 7300  282    5     !   !   BEGIN
 7310  283    6     !   !   ! buf.first:= 1;
 7320  284    7     !   !   ! buf.last:= next-1;
 7330  285    8     !   !   END;
 7340  286    9     !   ! cur^.u1:= u1val;
 7350  287   10     !   ! cur^.u2:= u2val;
 7360  288   11     !   ! signal ( cur, sem(driver).s^)
 7370  289   12     !   END
 7380  290   13     END;
 7390  291           
\f

tsvaslst    81.06.15.   15.00.                                                    page    10

 8010  292          PROCEDURE file_error ( VAR f: filezone);
 8020  293          BEGIN
 8030  294    1     ! lamstate:= f.cur^.u2;
 8040  295    2     ! IF (lamstate<>0) AND (lamstate<>5) THEN
 8050  296    3     !   austate:= lamstate;
 8060  297    4     END;
 8070  298          
 8080  299          
 8090  300          
 8100  301          PROCEDURE outchar ( VAR f: filezone;  character: char );
 8110  302          BEGIN
 8120  303    1     ! WITH f DO
 8130  304    2     !   BEGIN
 8140  305    3     !   ! IF nil ( cur ) THEN
 8150  306    4     !   !   BEGIN
 8160  307    5     !   !   ! wait ( cur, sem(answer_sem).w^);
 8170  308    6     !   !   ! lamstate:= 0;
 8180  309    7     !   !   ! IF cur^.u2 <> ok THEN file_error ( f) ELSE austate:= 0;
 8190  310    8     !   !   ! next:= 1
 8200  311    9     !   !   END;
 8210  312   10     !   ! LOCK cur AS buf: filebuffer DO buf.text(next):= character;
 8220  313   11     !   ! next:= next+1;
 8230  314   12     !   ! IF next > top THEN outblock ( f);
 8240  315   13     !   END;
 8250  316   14     END;
 8260  317          
 8270  318          
 8280  319          
 8290  320          PROCEDURE print_head ( j: integer);
 8300  321          FORWARD;
 8310  322          
 8320  323          PROCEDURE outnewline ( VAR f: filezone );
 8330  324          BEGIN
 8340  325    1     ! IF linecount > pagesize THEN print_head ( 14);
 8350  326    2     ! outchar ( f, nl);
 8360  327    3     ! outchar ( f, cr);
 8370  328    4     ! linecount := linecount + 1;
 8380  329    5     END;
 8390  330           
\f

tsvaslst    81.06.15.   15.00.                                                    page    11

 9010  331          
 9020  332          PROCEDURE outinteger ( VAR f: filezone; bin: integer );
 9030  333          BEGIN
 9040  334    1     END;
 9050  335          
 9060  336          
 9070  337          
 9080  338          PROCEDURE outalfa ( VAR f: filezone; text: alfa);
 9090  339          VAR   i: integer;
 9100  340          BEGIN
 9110  341    1     ! FOR i:= 1 TO alfalength DO outchar ( f, text(i));
 9120  342    2     END;
 9130  343          
 9140  344          
 9150  345          PROCEDURE outfill ( VAR f: filezone; filler: char;  rep: integer );
 9160  346          BEGIN
 9170  347    1     ! WHILE rep > 0 DO
 9180  348    2     !   BEGIN
 9190  349    3     !   ! outchar ( f, filler);
 9200  350    4     !   ! rep:= rep-1
 9210  351    5     !   END;
 9220  352    6     END;
 9230  353          
 9240  354          PROCEDURE inblock ( VAR f: filezone;  VAR res: reference );
 9250  355              (*  called when res is an read_answer   *)
 9260  356          BEGIN
 9270  357    1     ! WITH f DO
 9280  358    2     !   BEGIN
 9290  359    3     !   ! IF NOT nil ( cur) THEN signal ( cur, sem(free).s^);
 9300  360    4     !   ! cur :=: res;
 9310  361    5     !   ! lamstate:= 0;
 9320  362    6     !   ! IF cur^.u2 <> ok THEN file_error ( f) ELSE austate:= 0;
 9330  363    7     !   ! next:= 1
 9340  364    8     !   END;
 9350  365    9     END;
 9360  366          
 9370  367          FUNCTION readchar ( VAR f: filezone): char;
 9380  368          BEGIN
 9390  369    1     ! WITH f DO
 9400  370    2     !   LOCK cur AS buf: filebuffer DO  WITH buf DO
 9410  371    3     !       IF next < nextfree THEN
 9420  372    4     !         BEGIN
 9430  373    5     !         ! readchar:= text(next);   next:= next+1
 9440  374    6     !         END ELSE readchar:= cr
 9450  375    7     END;
 9460  376           
\f

tsvaslst    81.06.15.   15.00.                                                    page    12

10010  377          FUNCTION readinteger ( VAR f: filezone): integer;
10020  378          CONST
10030  379            digits = (. "0".."9" .);
10040  380          VAR
10050  381            t: char;
10060  382            i, v: integer:= 0;
10070  383          BEGIN
10080  384    1     ! WITH f DO
10090  385    2     !   BEGIN
10100  386    3     !   ! REPEAT
10110  387    4     !   ! ! t:= readchar ( f)
10120  388    5     !   ! UNTIL ( t IN digits ) OR (t = cr );
10130  389    6     !   ! IF t = cr THEN readinteger := -1  ELSE
10140  390    7     !   !   BEGIN
10150  391    8     !   !   ! WHILE t IN digits DO
10160  392    9     !   !   !   IF i = 4 THEN    (* only 4 digits allowed *)
10170  393   10     !   !   !     t:= cr
10180  394   11     !   !   !   ELSE
10190  395   12     !   !   !     BEGIN
10200  396   13     !   !   !     ! i:= i + 1;
10210  397   14     !   !   !     ! v:= 10*v+ord(t)-ord("0");
10220  398   15     !   !   !     ! t:= readchar ( f)
10230  399   16     !   !   !     END;
10240  400   17     !   !   ! readinteger:= v
10250  401   18     !   !   END
10260  402   19     !   END
10270  403   20     END;
10280  404           
\f

tsvaslst    81.06.15.   15.00.                                                    page    13

11010  405          FUNCTION gettime : ts_time;
11020  406          BEGIN
11030  407    1     ! signal ( clock_msg, sem(timeout_sem_no).s^ );
11040  408    2     ! wait   ( clock_msg, sem(vagt_int2).w^ );
11050  409    3     ! LOCK     clock_msg AS buf: ts_time DO
11060  410    4     !   gettime:= buf;
11070  411    5     END;
11080  412          
11090  413          
11100  414          
11110  415          PROCEDURE puttime ( hh, mm : integer );
11120  416              (*  set time in timeout module    *)
11130  417          BEGIN
11140  418    1     ! clock_msg^.u1:= 5;      (*  writecontrol  *)
11150  419    2     ! LOCK clock_msg AS buf: RECORD h,m: integer END  DO
11160  420    3     !   BEGIN
11170  421    4     !   ! buf.h:= hh;
11180  422    5     !   ! buf.m:= 100*mm
11190  423    6     !   END;
11200  424    7     ! signal ( clock_msg, sem(timeout_sem_no).s^ );
11210  425    8     ! wait ( clock_msg, sem(vagt_int2).w^ );
11220  426    9     ! clock_msg^.u1:= 2
11230  427   10     END;
11240  428          
11250  429          
11260  430          PROCEDURE bindec ( bin: integer; VAR digits: alfa);
11270  431              (*  binary to decimal conversion,  at least 2 digits    *)
11280  432          CONST
11290  433            blank = "            ";
11300  434          VAR
11310  435            sign : char := " ";
11320  436            pos: integer:= alfalength;    (*  index in digits  *)
11330  437            negative : boolean;
11340  438            
11350  439          BEGIN
11360  440    1     ! digits:= blank;
11370  441    2     ! negative:= bin<0;
11380  442    3     ! bin:= abs( bin);
11390  443    4     ! REPEAT
11400  444    5     ! ! digits(pos):= chr(bin MOD 10 + ord("0"));
11410  445    6     ! ! bin:= bin DIV 10;
11420  446    7     ! ! pos:= pos-1
11430  447    8     ! UNTIL (bin=0) AND (pos<=12-2);
11440  448    9     ! IF negative THEN digits(pos):= "-";
11450  449   10     END;
11460  450           
\f

tsvaslst    81.06.15.   15.00.                                                    page    14

12010  451          PROCEDURE print_num ( bin: integer; leng: integer);
12020  452          VAR   i: integer;
12030  453            number: alfa;
12040  454          BEGIN
12050  455    1     ! bindec ( bin, number);
12060  456    2     ! FOR i:= alfalength+1-leng TO alfalength DO outchar ( tty, number(i));
12070  457    3     END;
12080  458          
12090  459          
12100  460          PROCEDURE print_time;
12110  461          FORWARD;
12120  462          
12130  463          PROCEDURE printbell;        (*  called at poll timeout    *)
12140  464          BEGIN
12150  465    1     ! IF line_ready THEN
12160  466    2     !   BEGIN
12170  467    3     !   ! outnewline ( tty);
12180  468    4     !   ! print_time;
12190  469    5     !   ! outalfa ( tty, "vagt stoppet");
12200  470    6     !   ! outchar ( tty, sp)
12210  471    7     !   END;
12220  472    8     ! outchar ( tty, "*");
12230  473    9     ! outchar ( tty, bel);
12240  474   10     ! outblock ( tty);
12250  475   11     ! timeout:= maxtime;
12260  476   12     ! line_ready:= false
12270  477   13     END;
12280  478          
12290  479          PROCEDURE print_head ( j: integer);
12300  480          VAR   i : integer;
12310  481          BEGIN
12320  482    1     ! outfill ( tty, nl, j);
12330  483    2     ! outchar ( tty, cr);
12340  484    3     ! FOR i:= 1 TO headn DO outalfa ( tty, head(i));
12350  485    4     ! outchar ( tty, nl);
12360  486    5     ! outchar ( tty, cr);
12370  487    6     ! outblock ( tty);
12380  488    7     ! linecount:= 9
12390  489    8     END;
12400  490           
\f

tsvaslst    81.06.15.   15.00.                                                    page    15

13010  491          PROCEDURE print_time;
13020  492          VAR   time: ts_time;
13030  493          BEGIN
13040  494    1     ! time:= gettime;
13050  495    2     ! outfill ( tty, sp, 2);
13060  496    3     ! print_num ( time(0), 2);
13070  497    4     ! outchar ( tty, ".");
13080  498    5     ! print_num ( time(1) DIV 100, 2);
13090  499    6     ! outchar ( tty, ".");
13100  500    7     ! print_num ( time(1) MOD 100, 2);
13110  501    8     ! outfill ( tty, sp, 2);
13120  502    9     END;
13130  503          
13140  504          PROCEDURE print_alfa ( text: alfa );         (*  print clock and alfa  *)
13150  505          BEGIN
13160  506    1     ! print_time;
13170  507    2     ! outalfa ( tty, text);
13180  508    3     ! outnewline ( tty);
13190  509    4     ! outalfa ( tty, empty);
13200  510    5     ! outblock ( tty);
13210  511    6     END;
13220  512           
\f

tsvaslst    81.06.15.   15.00.                                                    page    16

14010  513          PROCEDURE print_alarm;
14020  514          VAR   i, n: integer;
14030  515          BEGIN
14040  516    1     ! outnewline ( tty);
14050  517    2     ! print_time;
14060  518    3     ! IF ( note(1)=#h64 ) AND ( note(3)=stop_code ) THEN note(1):= #h65;
14070  519    4     !   (*  search text  *)
14080  520    5     ! i:= 0;
14090  521    6     ! REPEAT
14100  522    7     ! ! i:= i+1;
14110  523    8     ! UNTIL (tekst(i).no=note(1)) OR (i=last_text_no);
14120  524    9     ! 
14130  525   10     !   (*  the next cannot be done by a real vagt     *)
14140  526   11     ! 
14150  527   12     ! outalfa ( tty, tekst(i).tx);
14160  528   13     ! outfill ( tty, sp, 2);
14170  529   14     ! print_num ( note(1) DIV 16, 2);
14180  530   15     ! outchar ( tty, ".");
14190  531   16     ! print_num ( note(1) MOD 16, 2);
14200  532   17     ! CASE note(1) OF
14210  533   18     ! ! #h72 : (* nothing *)
14220  534   19     ! !   OTHERWISE
14230  535   20     ! !   BEGIN
14240  536   21     ! !   ! outfill ( tty, sp, 2);
14250  537   22     ! !   ! print_num ( note(2), 3);
14260  538   23     ! !   END;
14270  539   24     ! END;
14280  540   25     ! CASE note(1) OF
14290  541   26     ! ! #h62,#h64,#h65,#h66,#h72 : (* nothing *)
14300  542   27     ! !   OTHERWISE
14310  543   28     ! !   BEGIN
14320  544   29     ! !   ! outfill ( tty, sp, 3);
14330  545   30     ! !   ! print_num ( note(3), 3);
14340  546   31     ! !   END;
14350  547   32     ! END;
14360  548   33     ! outblock ( tty);
14370  549   34     ! 
14380  550   35     ! IF note(1) = #h32 THEN     (* statusalarm *)
14390  551   36     !   BEGIN
14400  552   37     !   ! n := note(3);
14410  553   38     !   ! IF n = 0 THEN
14420  554   39     !   !   BEGIN
14430  555   40     !   !   ! outnewline ( tty);
14440  556   41     !   !   ! outfill ( tty, sp, 12);
14450  557   42     !   !   ! outalfa ( tty, statustxt(0));
14460  558   43     !   !   ! outblock ( tty)
\f

tsvaslst    81.06.15.   15.00.                                                    page    17

14470  559   44     !   !   END
14480  560   45     !   ! ELSE
14490  561   46     !   !   FOR i := 7 DOWNTO 1 DO
14500  562   47     !   !     BEGIN
14510  563   48     !   !     ! IF (n MOD 2) = 1 THEN
14520  564   49     !   !     !   BEGIN
14530  565   50     !   !     !   ! outnewline ( tty);
14540  566   51     !   !     !   ! outfill ( tty, sp, 12);
14550  567   52     !   !     !   ! outalfa ( tty, statustxt(i));
14560  568   53     !   !     !   ! outblock ( tty)
14570  569   54     !   !     !   END;
14580  570   55     !   !     ! n := n DIV 2
14590  571   56     !   !     END;
14600  572   57     !   END;
14610  573   58     ! outnewline ( tty);
14620  574   59     ! outalfa ( tty, empty);
14630  575   60     ! outblock ( tty);
14640  576   61     ! sample:= 0;
14650  577   62     END;
14660  578          
14670  579           
\f

tsvaslst    81.06.15.   15.00.                                                    page    18

15010  580          PROCEDURE print_text_val ( text: alfa; val: integer );
15020  581          BEGIN
15030  582    1     ! print_num ( val, 3);
15040  583    2     ! outalfa ( tty, text );
15050  584    3     ! outnewline ( tty);
15060  585    4     END;
15070  586          
15080  587          PROCEDURE send_read ( VAR f: filezone);
15090  588          BEGIN
15100  589    1     ! WITH f DO
15110  590    2     !   BEGIN
15120  591    3     !   ! IF open ( sem(free).w^) THEN wait ( cur, sem(free).w^);
15130  592    4     !   ! IF NOT nil(cur) THEN
15140  593    5     !   !   BEGIN
15150  594    6     !   !   ! LOCK cur AS buf: filebuffer DO
15160  595    7     !   !   !   BEGIN
15170  596    8     !   !   !   ! buf.first:= 1;
15180  597    9     !   !   !   ! buf.last:= top-1;
15190  598   10     !   !   !   ! buf.nextfree:= 1
15200  599   11     !   !   !   END;
15210  600   12     !   !   ! cur^.u1:= u1val;
15220  601   13     !   !   ! cur^.u2:= u2val;
15230  602   14     !   !   ! signal ( cur, sem(driver).s^);
15240  603   15     !   !   END
15250  604   16     !   END
15260  605   17     END;
15270  606           
\f

tsvaslst    81.06.15.   15.00.                                                    page    19

16010  607          PROCEDURE read_command ( VAR newdata: integer);
16020  608          VAR
16030  609            error, i : integer;
16040  610            com: command;
16050  611            
16060  612          BEGIN
16070  613    1     ! newdata:= 0;
16080  614    2     ! FOR i:= 1 TO 4 DO com(i):= readchar( kb);
16090  615    3     ! error:= 0;
16100  616    4     ! linecount := linecount + 1;
16110  617    5     ! IF com(1) <> cr THEN
16120  618    6     !   BEGIN
16130  619    7     !   ! i:= 0;
16140  620    8     !   ! REPEAT
16150  621    9     !   ! ! i:=i+1
16160  622   10     !   ! UNTIL (menu(i)=com) OR (i=last_com_no);
16170  623   11     !   ! IF i < last_com_no THEN letter(3):= opkode(i)
16180  624   12     !   ! ELSE error:= 1;
16190  625   13     !   ! 
16200  626   14     !   ! IF error=0 THEN
16210  627   15     !   !   BEGIN
16220  628   16     !   !   ! IF (letter(3)=7) OR (letter(3)=8) THEN
16230  629   17     !   !   !   i:= 0
16240  630   18     !   !   ! ELSE
16250  631   19     !   !   !   i:= readinteger ( kb);
16260  632   20     !   !   ! IF (i<0) OR (255<i) THEN error:= 2 ELSE
16270  633   21     !   !   !   BEGIN
16280  634   22     !   !   !   ! letter(2):= i;
16290  635   23     !   !   !   !   (*  make default letter(1)    *)
16300  636   24     !   !   !   ! CASE letter(3) OF
16310  637   25     !   !   !   ! ! 1,2,
16320  638   26     !   !   !   ! ! 5,7,
16330  639   27     !   !   !   ! ! 21,22,
16340  640   28     !   !   !   ! ! 24:   letter(1):= 0;
16350  641   29     !   !   !   ! ! 3,4,
16360  642   30     !   !   !   ! ! 6,8,
16370  643   31     !   !   !   ! ! 23,25 : letter(1):= 1
16380  644   32     !   !   !   ! !   OTHERWISE
16390  645   33     !   !   !   ! !   BEGIN
16400  646   34     !   !   !   ! !   ! i:= readinteger ( kb);
16410  647   35     !   !   !   ! !   ! IF (i<0) OR (255<i) THEN error:= 3 ELSE
16420  648   36     !   !   !   ! !   !   letter(1):= i;
16430  649   37     !   !   !   ! !   END
16440  650   38     !   !   !   ! END
16450  651   39     !   !   !   END;
16460  652   40     !   !   END;
\f

tsvaslst    81.06.15.   15.00.                                                    page    20

16470  653   41     !   ! signal ( kb.cur, sem(kb.free).s^);
16480  654   42     !   ! 
16490  655   43     !   ! IF error > 0 THEN
16500  656   44     !   !   BEGIN
16510  657   45     !   !   ! print_alfa ( whatx(error));
16520  658   46     !   !   ! send_read ( kb)
16530  659   47     !   !   END
16540  660   48     !   ! ELSE
16550  661   49     !   !   IF letter(3) = #hc4 THEN   (*  set time  *)
16560  662   50     !   !     BEGIN
16570  663   51     !   !     ! puttime ( letter(2), letter(1));
16580  664   52     !   !     END  ELSE
16590  665   53     !   !     newdata:= 3;
16600  666   54     !   END;
16610  667   55     ! 
16620  668   56     ! IF (newdata = 0) AND (error = 0) THEN
16630  669   57     !   BEGIN
16640  670   58     !   ! outnewline ( tty);
16650  671   59     !   ! outalfa ( tty, empty);
16660  672   60     !   ! outblock( tty);
16670  673   61     !   ! send_read ( kb)
16680  674   62     !   END;
16690  675   63     END;
16700  676          
16710  677           
\f

tsvaslst    81.06.15.   15.00.                                                    page    21

17010  678          
17020  679            (*----------------------- main program ----------------------------*)
17030  680          
17040  681        BEGIN
17050  682    1   ! 
17060  683    2   ! testopen ( opzone, own.incname, op_sem);
17070  684    3   ! testout ( opzone, own.incname, al_env_version);
17080  685    4   ! 
17090  686    5   ! 
17100  687    6   !   (*       wait for lam reservation        *)
17110  688    7   ! 
17120  689    8   ! vl := 1;
17130  690    9   ! timeout:= 40;
17140  691   10   ! h:= ille;
17150  692   11   ! REPEAT
17160  693   12   ! ! wait ( msg, sem( main).w^ );
17170  694   13   ! ! IF msg^.u1 = create_at_ch THEN        (*  start at lam channel  *)
17180  695   14   ! !   BEGIN
17190  696   15   ! !   ! portno:= msg^.u2;
17200  697   16   ! !   ! alloc ( clock_msg, clockpool, sem(vagt_int2).s^ );
17210  698   17   ! !   ! clock_msg^.u1:= create_tty_ch;
17220  699   18   ! !   ! clock_msg^.u2:= portno;
17230  700   19   ! !   ! clock_msg^.u3:= 33;        (*  <> 0  *)
17240  701   20   ! !   ! LOCK clock_msg AS buf: createshape DO
17250  702   21   ! !   !   BEGIN
17260  703   22   ! !   !   ! buf.contr:= 2+4+16+32;     (*  even 7bit 2stop 300 bps   *)
17270  704   23   ! !   !   ! buf.timer:= 60;
17280  705   24   ! !   !   END;
17290  706   25   ! !   ! signal ( clock_msg, sem(lam_sem_no).s^ );
17300  707   26   ! !   ! wait ( clock_msg, sem(vagt_int2).w^ );
17310  708   27   ! !   ! msg^.u2:= clock_msg^.u2;
17320  709   28   ! !   ! return ( msg);
17330  710   29   ! !   ! h:= ok;
17340  711   30   ! !   END  ELSE
17350  712   31   ! !   BEGIN
17360  713   32   ! !   ! msg^.u2:= ille;   return( msg)
17370  714   33   ! !   END
17380  715   34   ! UNTIL h = ok;
17390  716   35   !  
\f

tsvaslst    81.06.15.   15.00.                                                    page    22

18010  717   36   ! open_file (  kb, lam_sem_no,  main, vagt_int4, no_reads, readpool, 17, portno);
18020  718   37   ! open_file ( tty, lam_sem_no, vagt_int1, vagt_int3, no_writes, writepool, 18, portno);
18030  719   38   ! 
18040  720   39   ! WITH tty DO
18050  721   40   !   WHILE open ( sem(free).w^) DO
18060  722   41   !     BEGIN
18070  723   42   !     ! wait ( msg, sem(free).w^ );
18080  724   43   !     ! signal ( msg, sem(answer_sem).s^ )
18090  725   44   !     END;
18100  726   45   ! 
18110  727   46   ! clock_msg^.u1:= 2;     (*  read  *)
18120  728   47   ! 
18130  729   48   ! alloc ( msg, timerpool, sem( main ).s^ );
18140  730   49   ! msg^.u1:= read_write;        msg^.u2:= 0;
18150  731   50   ! msg^.u3:= delay1;   msg^.u4:= delay2;
18160  732   51   ! sendtimer ( msg);
18170  733   52   ! outchar( tty, cr);
18180  734   53   ! outalfa( tty, "/ vagt      ");
18190  735   54   ! outalfa( tty, version);
18200  736   55   ! print_head ( 2);
18210  737   56   !  
\f

tsvaslst    81.06.15.   15.00.                                                    page    23

19010  738   57   ! 
19020  739   58   !   (*----------------------- main loop ---------------------------*)
19030  740   59   ! 
19040  741   60   ! REPEAT
19050  742   61   ! ! 
19060  743   62   ! ! wait ( msg, sem( main ).w^ );
19070  744   63   ! ! 
19080  745   64   ! ! IF ownertest ( readpool, msg) THEN      (*  read terminated   *)
19090  746   65   ! !   BEGIN
19100  747   66   ! !   !   (*q testout ( opzone, "keyboard    ", msg^.u2 ); q*)
19110  748   67   ! !   ! inblock ( kb, msg);
19120  749   68   ! !   ! IF lamstate <> 0 THEN
19130  750   69   ! !   !   send_read ( kb )
19140  751   70   ! !   ! ELSE
19150  752   71   ! !   !   read_command ( newdata);
19160  753   72   ! !   END  ELSE
19170  754   73   ! !   
19180  755   74   ! !   IF ownertest ( timerpool, msg) THEN      (*  from timer        *)
19190  756   75   ! !     BEGIN
19200  757   76   ! !     ! msg^.u1:= 6;        msg^.u2:= 0;
19210  758   77   ! !     ! msg^.u3:= delay1;   msg^.u4:= delay2;
19220  759   78   ! !     ! sendtimer ( msg);
19230  760   79   ! !     ! IF timeout > 0 THEN
19240  761   80   ! !     !   BEGIN
19250  762   81   ! !     !   ! timeout:= timeout-1;
19260  763   82   ! !     !   ! IF timeout = 0 THEN  printbell    (*  no poll in maxtime*delay1 sec  *)
19270  764   83   ! !     !   END
19280  765   84   ! !     END  ELSE
19290  766   85   ! !     
19300  767   86   ! !     IF msg^.u3 = dummy_route THEN  return ( msg)
19310  768   87   ! !     ELSE
19320  769   88   ! !       
19330  770   89   ! !       IF msg^.u1 = 11 THEN                      (*  from vccon       *)
19340  771   90   ! !         BEGIN
19350  772   91   ! !         ! LOCK msg AS buf: telegram DO  WITH buf DO
19360  773   92   ! !         !     BEGIN
19370  774   93   ! !         !     ! databits:= inf;
19380  775   94   ! !         !     ! func    := fnc;
19390  776   95   ! !         !     ! l       := lnr
19400  777   96   ! !         !     END;
19410  778   97   ! !         !  
\f

tsvaslst    81.06.15.   15.00.                                                    page    24

20010  779   98   ! !         ! 
20020  780   99   ! !         !   (*------------------- at protocol answer ----------------------------*)
20030  781  100   ! !         ! 
20040  782  101   ! !         ! IF NOT line_ready THEN vl:= l;   (* all l accepted *)
20050  783  102   ! !         ! IF l <> vl THEN
20060  784  103   ! !         !   BEGIN
20070  785  104   ! !         !   ! testout ( opzone, "l <> vl     ", vl);
20080  786  105   ! !         !   ! answer:= lastanswer
20090  787  106   ! !         !   END
20100  788  107   ! !         ! ELSE
20110  789  108   ! !         !   BEGIN
20120  790  109   ! !         !   ! vl:= 1-vl;
20130  791  110   ! !         !   ! WITH answer DO
20140  792  111   ! !         !   !   IF austate <> oldstate THEN      (*  status  *)
20150  793  112   ! !         !   !     BEGIN
20160  794  113   ! !         !   !     ! info:= austate;
20170  795  114   ! !         !   !     ! opko:= status;
20180  796  115   ! !         !   !     ! oldstate:= austate
20190  797  116   ! !         !   !     END  ELSE
20200  798  117   ! !         !   !     CASE func OF
20210  799  118   ! !         !   !     ! 
20220  800  119   ! !         !   !     ! poll:  BEGIN
20230  801  120   ! !         !   !     !   ! timeout:= maxtime;
20240  802  121   ! !         !   !     !   ! IF NOT line_ready THEN
20250  803  122   ! !         !   !     !   !   BEGIN
20260  804  123   ! !         !   !     !   !   ! outnewline ( tty);
20270  805  124   ! !         !   !     !   !   ! print_alfa ( klar );
20280  806  125   ! !         !   !     !   !   END;
20290  807  126   ! !         !   !     !   ! line_ready:= true;
20300  808  127   ! !         !   !     !   ! IF newdata = 0 THEN info:= 0  ELSE
20310  809  128   ! !         !   !     !   !   info:= letter(newdata);
20320  810  129   ! !         !   !     !   ! opko:= reply(newdata);
20330  811  130   ! !         !   !     !   ! IF newdata > 0 THEN
20340  812  131   ! !         !   !     !   !   BEGIN
20350  813  132   ! !         !   !     !   !   ! newdata:= newdata-1;
20360  814  133   ! !         !   !     !   !   ! IF newdata = 0 THEN     (*  message send    *)
20370  815  134   ! !         !   !     !   !   !   BEGIN
20380  816  135   ! !         !   !     !   !   !   ! outalfa ( tty, empty);
20390  817  136   ! !         !   !     !   !   !   ! outblock ( tty)
20400  818  137   ! !         !   !     !   !   !   END;
20410  819  138   ! !         !   !     !   !   END;
20420  820  139   ! !         !   !     !   ! IF newdata = 0 THEN send_read ( kb);
20430  821  140   ! !         !   !     !   END;   (*  poll  *)
20440  822  141   ! !         !   !     ! 
20450  823  142   ! !         !   !     ! data:  BEGIN
20460  824  143   ! !         !   !     !   ! timeout:= maxtime;
\f

tsvaslst    81.06.15.   15.00.                                                    page    25

20470  825  144   ! !         !   !     !   ! IF sample > 0 THEN
20480  826  145   ! !         !   !     !   !   BEGIN
20490  827  146   ! !         !   !     !   !   ! sample:= sample+1;
20500  828  147   ! !         !   !     !   !   ! note(sample):= databits
20510  829  148   ! !         !   !     !   !   END;
20520  830  149   ! !         !   !     !   ! IF sample = 3 THEN print_alarm;
20530  831  150   ! !         !   !     !   ! info:= databits;
20540  832  151   ! !         !   !     !   ! opko:= d_ack
20550  833  152   ! !         !   !     !   END;
20560  834  153   ! !         !   !     ! 
20570  835  154   ! !         !   !     ! opr:  BEGIN
20580  836  155   ! !         !   !     !   ! timeout:= maxtime;
20590  837  156   ! !         !   !     !   ! sample:= 1;
20600  838  157   ! !         !   !     !   ! note(1):= databits;
20610  839  158   ! !         !   !     !   ! info:= databits;
20620  840  159   ! !         !   !     !   ! opko:= t_ack
20630  841  160   ! !         !   !     !   END;
20640  842  161   ! !         !   !     ! 
20650  843  162   ! !         !   !     ! test_i:  BEGIN
20660  844  163   ! !         !   !     !   ! timeout:= maxtime;
20670  845  164   ! !         !   !     !   ! IF austate = 0 THEN info:= test_ok ELSE info:= test_error;
20680  846  165   ! !         !   !     !   ! opko:= t_ack
20690  847  166   ! !         !   !     !   END
20700  848  167   ! !         !   !     END (* of case on func *)
20710  849  168   ! !         !   END;   (*  l=vl  *)
20720  850  169   ! !         ! 
20730  851  170   ! !         ! lastanswer:= answer;
20740  852  171   ! !         ! letter(0):= answer.info;
20750  853  172   ! !         ! msg^.u2 := ok;
20760  854  173   ! !         ! 
20770  855  174   ! !         ! LOCK msg AS buf : respons DO
20780  856  175   ! !         !   buf:= answer;
20790  857  176   ! !         ! dummy:= check5 ( msg, generate);
20800  858  177   ! !         ! 
20810  859  178   ! !         ! return ( msg)
20820  860  179   ! !         END   (*  from vccon   *)   ELSE
20830  861  180   ! !         
20840  862  181   ! !         BEGIN
20850  863  182   ! !         ! testout ( opzone, "illegal msg ", msg^.u1 );
20860  864  183   ! !         ! msg^.u2:= ille;   return ( msg)
20870  865  184   ! !         END
20880  866  185   ! !         
20890  867  186   ! UNTIL forever
20900  868  187   ! 
20910  869  188   END; (* process vagt_sim *)
20920  870         
\f

tsvaslst    81.06.15.   15.00.                                                    page    26

21010  871        FUNCTION find_ch( ch: byte; VAR desc_ix: descriptor_ix ): boolean;
21020  872          
21030  873        BEGIN
21040  874    1   ! desc_ix:= 1;
21050  875    2   ! 
21060  876    3   ! WHILE ( desc_ix < vc_l ) AND ( ch <> ch_desc( desc_ix ).chann ) DO
21070  877    4   !   desc_ix:= desc_ix + 1;
21080  878    5   ! 
21090  879    6   ! find_ch:= ( ch = ch_desc( desc_ix ).chann )
21100  880    7   END; (* function find_ch *)
21110  881         
\f

tsvaslst    81.06.15.   15.00.                                                    page    27

22010  882        
22020  883        BEGIN (* process vagt *)
22030  884    1   ! testopen( opzone, own.incname, op_sem );
22040  885    2   ! testout( opzone, version, al_env_version );
22050  886    3   ! 
22060  887    4   ! FOR desc_ix:= 1 TO vc_l DO
22070  888    5   !   WITH ch_desc( desc_ix ) DO
22080  889    6   !     chann:= 255;
22090  890    7   ! 
22100  891    8   ! REPEAT (* forever *)
22110  892    9   ! ! 
22120  893   10   ! ! wait( msg, sem( vas_sem_no ).w^ );
22130  894   11   ! ! 
22140  895   12   ! ! WITH msg^ DO
22150  896   13   ! !   BEGIN
22160  897   14   ! !   ! IF ( u1 = create_at_ch ) THEN
22170  898   15   ! !   !   BEGIN
22180  899   16   ! !   !   ! IF find_ch( u2, desc_ix ) THEN
22190  900   17   ! !   !   !   BEGIN
22200  901   18   ! !   !   !   ! 
22210  902   19   ! !   !   !   ! testout( opzone, "reuse chann ", u2 );
22220  903   20   ! !   !   !   ! u2:= 0;
22230  904   21   ! !   !   !   ! return( msg )
22240  905   22   ! !   !   !   ! 
22250  906   23   ! !   !   !   END
22260  907   24   ! !   !   ! ELSE
22270  908   25   ! !   !   !   BEGIN
22280  909   26   ! !   !   !   ! IF ( no_of_inc = vc_l ) THEN
22290  910   27   ! !   !   !   !   BEGIN
22300  911   28   ! !   !   !   !   ! testout( opzone, "vagt_sim >  ", vc_l );
22310  912   29   ! !   !   !   !   ! release( msg )  (* <<<<<<<<<<<<<<<<<<<<<<<< OBS! *)
22320  913   30   ! !   !   !   !   END
22330  914   31   ! !   !   !   ! ELSE
22340  915   32   ! !   !   !   !   BEGIN
22350  916   33   ! !   !   !   !   ! no_of_inc:= no_of_inc + 1;
22360  917   34   ! !   !   !   !   ! WITH ch_desc( no_of_inc ) DO
22370  918   35   ! !   !   !   !   !   BEGIN
22380  919   36   ! !   !   !   !   !   ! chann:= u2;
22390  920   37   ! !   !   !   !   !   ! main:= vagt_int + ( no_of_inc - 1 ) * 5;
22400  921   38   ! !   !   !   !   !   ! inc_name:= "vagt ch     ";
22410  922   39   ! !   !   !   !   !   ! inc_name( 9 ):= chr( u2 DIV 10 + ord( "0" ) );
22420  923   40   ! !   !   !   !   !   ! inc_name( 10 ):= chr( u2 MOD 10 + ord( "0" ) );
22430  924   41   ! !   !   !   !   !   ! 
22440  925   42   ! !   !   !   !   !   ! result:= create( inc_name, vagt_sim( op_sem, sem, main,
22450  926   43   ! !   !   !   !   !   ! main + 1, main + 2, main + 3, main + 4, lam_sem_no ),
22460  927   44   ! !   !   !   !   !   ! shad, inc_size );
\f

tsvaslst    81.06.15.   15.00.                                                    page    28

22470  928   45   ! !   !   !   !   !   ! 
22480  929   46   ! !   !   !   !   !   ! IF result = 0 THEN
22490  930   47   ! !   !   !   !   !   !   BEGIN
22500  931   48   ! !   !   !   !   !   !   ! start( shad, vc_sim_pri );
22510  932   49   ! !   !   !   !   !   !   ! signal( msg, sem( main ).s^ )
22520  933   50   ! !   !   !   !   !   !   END
22530  934   51   ! !   !   !   !   !   ! ELSE
22540  935   52   ! !   !   !   !   !   !   testout( opzone, "create error", result )
22550  936   53   ! !   !   !   !   !   ! ;
22560  937   54   ! !   !   !   !   !   END
22570  938   55   ! !   !   !   !   END
22580  939   56   ! !   !   !   END
22590  940   57   ! !   !   END
22600  941   58   ! !   ! ELSE
22610  942   59   ! !   !   BEGIN
22620  943   60   ! !   !   ! IF find_ch( u2, desc_ix ) THEN
22630  944   61   ! !   !   !   signal( msg, sem( ch_desc( desc_ix ).main ).s^ )
22640  945   62   ! !   !   ! ELSE
22650  946   63   ! !   !   !   testout( opzone, "channel     ", u2 )
22660  947   64   ! !   !   END
22670  948   65   ! !   END (* with msg^ *)
22680  949   66   ! !   
22690  950   67   ! UNTIL forever
22700  951   68   ! 
22710  952   69   END. (* process vagt *)
22720  953      
\f

tsvaslst    81.06.15.   15.00.                                                    page    29

           0   55*   57*   85*   86*   91*  100*  101*  107*  184*  200*  200*  220*  224*  227*  227*
              231*  235*  245*  263   267   295   308   309   347   361   362   382*  441   447   496 
              520   553   557   576   613   615   619   626   629   632   640   647   655   668   668 
              730   749   757   760   763   808   808   811   814   820   825   845   852   903   929 
           1   58*   72*   81*   82*   83*   87*   89*   90*  100*  112*  195*  199*  220*  240*  247*
              247*  248*  248*  250*  254*  269   283   284   310   313   328   341   350   363   373 
              389   396   446   456   484   498   500   518   518   522   523   529   531   532   540 
              550   561   563   596   597   598   614   616   617   621   624   637:  640   643   643 
              648   663   689   762   790   813   827   837   838   874   877   887   916   920   926 
           2   59*   66*  426   447   495   496   498   500   501   528   529   531   536   537   563 
              570   632   634   637:  663   703   727   736   926 
           3   60*   73*   87*  518   537   544   545   545   552   582   623   628   628   636   641:
              647   661   665   830   926 
           4   56*   61*   71*   81*   86*  235*  392   614   641:  703   926 
           5   62*  295   418   638:  920 
           6   63*   64*  642:  757 
           7   85*   91*  561   628   638:
           8  628   642:
           9  488   922 
          10   74*   75*  227*  397   444   445   922   923   923 
          11  770 
          12  447   556   566 
          14  325 
          16  529   531   703 
          17  248*  717 
          18   70*  247*  718 
          21   65*  639:
          22  639:
          23  643:
          24  640:
          25  643:
          27   69*
          31  101*  107*
          32  703 
          33  700 
          40  690 
          44   67*
          60  704 
          80   68*
         100  422   498   500 
         255  632   647   889 
         355   53*
abs           442 
accepted      201*
\f

tsvaslst    81.06.15.   15.00.                                                    page    30

alarmtext      88*   89*  134*  135*  136*  137*  138*  139*  140*  141*  142*  143*  144*  145*  146*
              147*  148*  149*  150*  151*  152*  153*  154*  155*  156*  157*  158*  159*  160*
alfa           87*   88*   90*   91*  198*  338*  430*  453*  504*  580*
alfalength    341   436*  456   456 
alloc         265   697   729 
al_env_version                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              684   885 
answ          253*  259 
answer        227*  786=  791   851   852   856 
answer_sem    116*  259=  265   307   724 
as            281:  312:  370:  409:  419:  594:  701:  772:  855:
atvagtsim     187*
austate       223*  296=  309=  362=  792   794   796   845 
bel           473 
bin           332*  430*  441   442=  442   444   445=  445   447   451*  455 
bindec        430*  455 
blank         433*  440 
boolean       233*  437*  871*
buf           281:  283   284   312:  312   370:  370   409:  410   419:  421   422   594:  596   597 
              598   701:  703   704   772:  772   855:  856=
bufs          254*  263   269=  269 
byte           83*   88*   94*   98*  105*  119*  205*  224*  235*  244*  254*  871*
cbits         101*  107*
ch            871*  876   879 
chann         205*  876   879   889=  919=
char           81*  112*  301*  345*  367*  381*  435*
character     301*  312 
check5        857 
chr           444   922   923 
ch_desc       203*  876   879   888   917   944 
clockpool     250*  697 
clock_msg     251*  407   408   409:  418   419:  424   425   426   697   698   699   700   701:  706 
              707   708   727 
com           610*  614=  617   622 
command        81*   82*  610*
commands       82*  172*
contr          94*  703=
cr            327   374   388   389   393   483   486   617   733 
create        925 
createshape    93*  701 
create_at_ch  694   897 
create_tty_ch                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              698 
cur           118*  265   266   267   268   281:  286   287   288   294   305   307   309   312:  359 
              359   360=  362   370:  591   592   594:  600   601   602   653 
\f

tsvaslst    81.06.15.   15.00.                                                    page    31

data           84*  823:
databits      224*  774=  828   831   838   839 
delay1         74*  731   758 
delay2         75*  731   758 
descriptor_ix                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              195*  199*  203*  871*
desc_ix       199*  871*  874=  876   876   877=  877   879   887=  888   899   943   944 
digits        379*  388   391   430*  440=  444=  448=
driv          253*  258 
driver        116*  258=  288   602 
dummy         232*  857=
dummy_route   767 
d_ack          61*  832 
empty         128*  509   574   671   816 
error         609*  615=  624=  626   632=  647=  655   657   668 
errortext      87*  126*
f             253*  256   276*  278   292*  294   301*  303   309   314   323*  326   327   332*  338*
              341   345*  349   354*  357   362   367*  369   377*  384   387   398   587*  589 
false          76*  233*  476 
filebuffer    110*  238*  239*  281   312   370   594 
filezone      115*  247*  247*  248*  248*  253*  276*  292*  301*  323*  332*  338*  345*  354*  367*
              377*  587*
file_error    292*  309   362 
filler        345*  349 
find_ch       871*  879=  899   943 
first         111*  283=  596=
fnc            99*  775 
forever        76*  867   950 
free          117*  260=  268   359   591   591   653   721   723 
func          225*  775=  798 
funktion       84*   99*  225*
generate      857 
gettime       405*  410=  494 
h             231*  419:  421=  691=  710=  715 
h01           134*  180*
h02           181*
h03           181*
h04           181*
h05           183*
h06           183*
h07           183*
h08           183*
h10           135*
h12           136*
\f

tsvaslst    81.06.15.   15.00.                                                    page    32

h15           182*
h16           182*
h17           182*
h18           182*
h19           182*
h20           137*  183*
h21           138*
h28           139*
h29           140*
h30           141*
h31           142*
h32           143*  550 
h40           180*
h41           144*
h42           145*
h50           146*
h53           147*
h54           148*
h57           149*
h62           150*  541 
h64           151*  518   541 
h65           152*  518   541 
h66           153*  541 
h72           154*  533:  541:
h84           180*
h85           155*
h86           156*
h98           157*
hc4           180*  661 
head          130*  484 
headarray      90*  130*
headn          71*   90*  484 
hf0           158*
hf1           159*
hff           160*
hh            415*  421 
i             339*  341=  341   382*  392   396=  396   452*  456=  456   480*  484=  484   514*  520=
              522=  522   523   523   527   561=  567   609*  614=  614   619=  621=  621   622   622 
              623   623   629=  631=  632   632   634   646=  647   647   648 
ille           56*  691   713   864 
inblock       354*  748 
incname       683   684   884 
inc_name      198*  921=  922=  923=  925 
inc_size       53*  927 
\f

tsvaslst    81.06.15.   15.00.                                                    page    33

inf            98*  774 
info          105*  794=  808=  809=  831=  839=  845=  845=  852 
integer       111*  117*  120*  206*  216*  231*  245*  253*  254*  320*  332*  339*  345*  377*  382*
              415*  419   430*  436*  451*  451*  452*  479*  480*  514*  580*  607*  609*
j             320*  479*  482 
kb            248*  614   631   646   653   653   658   673   717   748   750   820 
klar          129*  805 
l             220*  776=  782   783 
lamstate      221*  294=  295   295   296   308=  361=  749 
lam_sem_no    216*  706   717   718   926 
last          111*  284=  597=
lastanswer    226*  786   851=
last_com_no    70*   82*   83*  622   623 
last_text_no   69*   89*  523 
leng          451*  456 
letter        234*  623=  628   628   634=  636   640=  643=  648=  661   663   663   809   852=
linecount     245*  325   328=  328   488=  616=  616 
line_ready    233*  465   476=  782   802   807=
lnr           100*  776 
lock          281:  312:  370:  409:  419:  594:  701:  772:  855:
m             419:  422=
main          206*  216*  693   717   729   743   920=  925   926   926   926   926   932   944 
maxtime        66*  475   801   824   836   844 
menu          172*  622 
mm            415*  422 
msg           210*  236*  693   694   696   708   709   713   713   723   724   729   730   730   731 
              731   732   743   745   748   755   757   757   758   758   759   767   767   770   772:
              853   855:  857   859   863   864   864   893   895   904   912   932   944 
n             514*  552=  553   563   570=  570 
negative      437*  441=  448 
newdata       229*  607*  613=  665=  668   752   808   809   810   811   813=  813   814   820 
next          120*  284   310=  312   313=  313   314   363=  371   373   373=  373 
nextfree      111*  371   598=
nl            326   482   485 
no             88*  523 
note          235*  518   518   518=  523   529   531   532   537   540   545   550   552   828=  838=
no_of_inc     200*  909   916=  916   917   920 
no_reads       72*  239*  717 
no_writes      73*  238*  718 
number        453*  455   456 
ok             55*  309   362   710   715   853 
oldstate      222*  792   796=
opcodes        83*  179*
open          591   721 
\f

tsvaslst    81.06.15.   15.00.                                                    page    34

open_file     253*  717   718 
opko          106*  795=  810=  832=  840=  846=
opkode        179*  623 
opr            84*  835:
opzone        211*  242*  683   684   785   863   884   885   902   911   935   946 
op_sem        188*  213*  683   884   925 
ord           397   397   444   922   923 
outalfa       338*  469   484   507   509   527   557   567   574   583   671   734   735   816 
outblock      276*  314   474   487   510   548   558   568   575   672   817 
outchar       301*  326   327   341   349   456   470   472   473   483   485   486   497   499   530 
              733 
outfill       345*  482   495   501   528   536   544   556   566 
outinteger    332*
outnewline    323*  467   508   516   555   565   573   584   670   804 
own           683   684   884 
ownertest     745   755 
pagesize       67*  325 
poll           84*  800:
pool          238*  239*  240*  250*  254*
portno        244*  696=  699   717   718 
pos           436*  444   446=  446   447   448 
printbell     463*  763 
print_alarm   513*  830 
print_alfa    504*  657   805 
print_head    320*  325   479*  736 
print_num     451*  496   498   500   529   531   537   545   582 
print_text_val                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              580*
print_time    460*  468   491*  506   517 
process       187*  213*
puttime       415*  663 
p_ack          57*  124*
readchar      367*  373=  374=  387   398   614 
readinteger   377*  389=  400=  631   646 
readpool      239*  717   745 
read_command  607*  752 
read_write    730 
reference     118*  210*  236*  251*  354*
release       912 
rep           345*  347   350=  350 
reply         124*  810 
replycode      85*   86*  106*
replycodes     86*  124*
res           354*  360 
\f

tsvaslst    81.06.15.   15.00.                                                    page    35

reso          254*  265 
respons       104*  227*  227*  855 
result        201*  925=  929   935 
result_range  201*
return        709   713   767   859   864   904 
s             265   268   288   359   407   424   602   653   697   706   724   729   932   944 
sample        228*  576=  825   827=  827   828   830   837=
sem           190*  215*  265   268   288   307   359   407   408   424   425   591   591   602   653 
              693   697   706   707   721   723   724   729   743   893   925   932   944 
sempointer    188*  213*
sendtimer     732   759 
send_read     587*  658   673   750   820 
shad          207*  927   931 
shadow        207*
sign          435*
signal        268   288   359   407   424   602   653   706   724   932   944 
sp            470   495   501   528   536   544   556   566 
start         931 
status         60*  795 
statusarray    91*  162*
statustxt     162*  557   567 
stop_code     518 
t             381*  387=  388   388   389   391   393=  397   398=
tekst         133*  523   527 
telegram       97*  772 
testopen      683   884 
testout       684   785   863   885   902   911   935   946 
test_error     65*  845 
test_i         84*  843:
test_ok        64*  845 
text          112*  312=  338*  341   373   504*  507   580*  583 
textarray      89*  133*
time          492*  494=  496   498   500 
timeout       230*  475=  690=  760   762=  762   763   801=  824=  836=  844=
timeout_sem_no                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              407   424 
timer          94*  704=
timerpool     240*  729   755 
top           120*  314   597 
true          807 
ts_pointer_vector                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              190*  215*
ts_time       250*  405*  409   492*
tty           247*  456   467   469   470   472   473   474   482   483   484   485   486   487   495 
              497   499   501   507   508   509   510   516   527   528   530   536   544   548   555 
              556   557   558   565   566   567   568   573   574   575   583   584   670   671   672 
\f

tsvaslst    81.06.15.   15.00.                                                    page    36

              718   720   733   734   735   804   816   817 
ttylength      68*  112*  247*  248*
tx             88*  527 
t_ack          62*  840   846 
u1            266=  286=  418=  426=  600=  694   698=  727=  730=  757=  770   863   897 
u1val         119*  261=  266   286   600 
u2            267=  287=  294   309   362   601=  696   699=  708=  708   713=  730=  757=  853=  864=
              899   902   903=  919   922   923   943   946 
u2val         119*  262=  287   601 
u3            700=  731=  758=  767 
u4            731=  758=
v             382*  397=  397   400 
v1            254*  261 
v2            254*  262 
vacant        253*  260 
vagt_env        1*
vagt_int      920 
vagt_int1     216*  718 
vagt_int2     216*  408   425   697   707 
vagt_int3     216*  718 
vagt_int4     216*  717 
vagt_sim      213*  925 
val           580*  582 
vas_sem_no    893 
vc_data        58*  124*  124*
vc_l          195*  200*  876   887   909   911 
vc_nak         63*  124*
vc_opr         59*  124*
vc_sim_pri    931 
version        52*  735   885 
vl            220*  689=  782=  783   785   790=  790 
w             307   408   425   591   591   693   707   721   723   743   893 
wait          307   408   425   591   693   707   723   743   893 
whatx         126*  657 
writepool     238*  718 
zone          211*  242*
\f

tsvaslst    81.06.15.   15.00.                                                    page    37

AND                5
ARRAY             11
BEGIN             86
CASE               4
CONST              4
DIV                5
DO                34
DOWNTO             1
ELSE              27
END               98
FOR                6
FORWARD            2
FUNCTION           4
IF                51
IN                 2
MOD                5
NIL                3
NOT                4
OF                18
OR                 6
OTHERWISE          3
PACKED             3
PROCEDURE         22
RECORD             8
REPEAT             7
THEN              51
TO                 5
TYPE               2
UNTIL              7
VAR               29
WHILE              5
WITH              14
\f

jg9  1981.06.15  15.00
 tsvas program
81.06.15.      15.00.                         pascal80     version 1981.04.01


   name        headline beginline endline  appetite(words) 

   open_file       70        73      87  :      17            
   outblock        92        96     105  :       9            
   file_error     108       109     112  :       3            
   outchar        117       121     131  :      12            
   outnewline     139       140     144  :      11            
   outinteger     148       149     149  :       2            
   outalfa        154       156     157  :      19            
   outfill        161       162     167  :      11            
   inblock        171       174     180  :      11            
   readchar       183       185     190  :      11            
   readinteger    194       202     218  :      16            
   gettime        221       222     226  :       9            
   puttime        232       233     242  :       9            
   bindec         248       255     264  :       9            
   print_num      267       270     272  :      25            
   printbell      279       281     292  :      16            
   print_head     295       297     304  :      20            
   print_time     307       309     317  :      17            
   print_alfa     320       321     326  :      16            
   print_alarm    329       331     392  :      21            
   print_text_v   396       397     400  :      16            
   send_read      403       406     420  :       9            
   read_command   424       428     490  :      24            
   vagt_sim        35       498     684  :     157            
   find_ch        688       689     694  :       8            
   atvagtsim       10       699     767  :     159            

 code: 1 . 1072  = 9264 bytes


end of PASCAL80 compilation 

end
blocksread = 53
«eof»