DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

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

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦70ab458c2⟧ TextFile

    Length: 53760 (0xd200)
    Types: TextFile
    Names: »festrlst«

Derivation

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

TextFile

\f

festrlst    81.05.13.   11.35.                                                    page     1

   10    1        PROCESS streamer(
   20    2          VAR input_sem, xmitter, receiver : ! ts_pointer;
   30    3          retrans_max : integer;
   40    4          op : sempointer);
   50    5          
   60    6          
   70    7        CONST
   80    8          version = "vers  1.01 /";
   90    9          output_buffers = 1;
  100   10          input_buffers  = 1;
  110   11          own_data_size  = 8;    (* bytes *)
  120   12          
  130   13          sense_com      = 0;
  140   14          write_data     = 2;
  150   15          write_read_data= 3;
  160   16          regret_input   = 4;
  170   17          input          = 5;
  180   18          output         = 6; <* output = input + 1 is demanded *>
  190   19          tell_next_notice=8;
  200   20          read_stream    = 9;
  210   21          write_stream   =10;
  220   22          regret_output  =12;
  230   23          
  240   24        CONST
  250   25          chain_in       = 8;
  260   26          chain_out      = 8;
  270   27          restart_notices= 1;
  280   28          noticed_output = 2;
  290   29          received_input = 3;
  300   30          ready_request  = 4;
  310   31          free_in        = 5;
  320   32          free_out       = 6;
  330   33          chain_max      = 6 + chain_in + chain_out;
  340   34          
  350   35        TYPE
  360   36          chain_rec      = RECORD
  370   37                           !  next, prev, c_stream, c_func : byte;
  380   38                           !  ref : reference;
  390   39                           END;
  400   40          chain_mem      = ARRAY(1..chain_max) OF chain_rec;
  410   41          
  420   42        VAR
  430   43          chain : chain_mem;
  440   44          
  450   45          z : zone;
  460   46          
\f

festrlst    81.05.13.   11.35.                                                    page     2

  470   47        CONST
  480   48          request        = 0;
  490   49          notice         = 0;
  500   50          master_out     = 1;
  510   51          no_stream      = 0;
  520   52          max_stream     =63;
  530   53          
  540   54          stream_size    =max_stream + 1;
  550   55          master_block   = 256 DIV stream_size - 1;
  560   56          master_size    = 2;
  570   57          buffer_size    = stream_size DIV master_size;
  580   58          
  590   59          ok_result      = 0;
  600   60          rejected       = 1;
  610   61          soft_error     = 2;
  620   62            (*              *) blocklength_error = 64;
  630   63          hard_error     = 3;
  640   64          un_intelligible= 4;
  650   65          master         = 5;
  660   66          overload       = 6;
  670   67          
  680   68          max_integer    = 32767;
  690   69          
  700   70        TYPE
  710   71          data_buffer    = RECORD
  720   72                           !  first, last, next : integer;
  730   73                           END;
  740   74          own_data       = RECORD
  750   75                           !  first, last, next : integer;
  760   76                           !  d : ARRAY(1..own_data_size DIV 2) OF integer;
  770   77                           END;
  780   78          
  790   79        VAR
  800   80          header, sense_device, desc_header, message : reference;
  810   81          
  820   82          waiting_output,
  830   83          out_desc_sem,
  840   84          pending_input, in_desc_sem : semaphore;
  850   85          
  860   86          output_stopped, input_stopped: boolean;
  870   87          notices_received: PACKED ARRAY(0..max_stream) OF byte ;
  880   88          
  890   89          xmit_pool     : pool output_buffers + output_buffers;
  900   90          sense_pool    : pool input_buffers + output_buffers;
  910   91          receive_pool  : pool input_buffers  + buffer_size;
  920   92          message_pool  : pool input_buffers OF own_data;
\f

festrlst    81.05.13.   11.35.                                                    page     3

  930   93          
  940   94          operation, result, status, stream , result_modif,
  950   95          output_block_no, input_block_no : integer;
  960   96          
  970   97          
  980   98          PROCEDURE move_element(from, into : integer);
  990   99          VAR fn, fp, tn : integer;
 1000  100          BEGIN
 1010  101    1     ! WITH chain(into) DO
 1020  102    2     !   BEGIN
 1030  103    3     !   ! tn := next; next := from;
 1040  104    4     !   END;
 1050  105    5     ! WITH chain(from) DO
 1060  106    6     !   BEGIN
 1070  107    7     !   ! fn   := next; fp   := prev;
 1080  108    8     !   ! next := tn  ; prev := into;
 1090  109    9     !   END;
 1100  110   10     ! chain(fp).next := fn  ;
 1110  111   11     ! chain(fn).prev := fp  ;
 1120  112   12     ! chain(tn).prev := from;
 1130  113   13     END (* procedure move chain-element *) ;
 1140  114          
 1150  115          
 1160  116          FUNCTION search_sem(VAR s: semaphore): integer;
 1170  117          VAR stream, stop : byte;
 1180  118          BEGIN
 1190  119    1     ! WITH message^ DO
 1200  120    2     !   BEGIN
 1210  121    3     !   ! stop := u1; stream := u3;
 1220  122    4     !   END;
 1230  123    5     ! search_sem := 0;
 1240  124    6     ! REPEAT
 1250  125    7     ! ! signal(message, s);
 1260  126    8     ! ! wait(message, s);
 1270  127    9     ! ! WITH message^ DO
 1280  128   10     ! !   IF u1 <> stop THEN
 1290  129   11     ! !     IF u3 DIV stream_size <> master_block THEN
 1300  130   12     ! !       IF u3 MOD stream_size = stream THEN search_sem := 1;
 1310  131   13     ! UNTIL stop = message^.u1;
 1320  132   14     END (* procedure to find a specific stream request on a semaphore *) ;
 1330  133          
 1340  134          
 1350  135          FUNCTION search_chain(start, stream, func_code : integer; no_regret:boolean) : integer;
 1360  136          VAR last, s, f : byte;
 1370  137          BEGIN
 1380  138    1     ! search_chain := 0;
\f

festrlst    81.05.13.   11.35.                                                    page     4

 1390  139    2     ! last         := start;
 1400  140    3     ! start        := chain(start).next;
 1410  141    4     ! WHILE start  <> last DO
 1420  142    5     !   WITH  chain(start) DO
 1430  143    6     !     BEGIN
 1440  144    7     !     ! IF nil(ref) THEN
 1450  145    8     !     !   BEGIN
 1460  146    9     !     !   ! s := c_stream; f := c_func;
 1470  147   10     !     !   ! IF no_regret THEN f := sense_com;
 1480  148   11     !     !   END ELSE
 1490  149   12     !     !   WITH ref^ DO
 1500  150   13     !     !     BEGIN
 1510  151   14     !     !     ! s := u3; f := u1;
 1520  152   15     !     !     END;
 1530  153   16     !     ! IF (s = stream) AND (f = func_code) THEN
 1540  154   17     !     !   BEGIN
 1550  155   18     !     !   ! search_chain := start;
 1560  156   19     !     !   ! start        := last ;
 1570  157   20     !     !   END ELSE
 1580  158   21     !     !   BEGIN
 1590  159   22     !     !   ! start        := next ;
 1600  160   23     !     !   END;
 1610  161   24     !     END;
 1620  162   25     END (* procedure search chain for stream-number *) ;
 1630  163          
 1640  164          
 1650  165          PROCEDURE decode_message(VAR operation, result : integer);
 1660  166          VAR user_result, block_no : integer;
 1670  167          LABEL comp_result;
 1680  168          BEGIN
 1690  169    1     ! pop(header, message);
 1700  170    2     ! WITH header^ DO
 1710  171    3     !   BEGIN
 1720  172    4     !   ! result       := u2 MOD 8;
 1730  173    5     !   ! result_modif := u2 - result;
 1740  174    6     !   ! IF u1 = write_read_data THEN
 1750  175    7     !   !   BEGIN
 1760  176    8     !   !   ! user_result := ok_result;
 1770  177    9     !   !   ! operation   := u4 MOD master_size + input;
 1780  178   10     !   !   ! comp_result:
 1790  179   11     !   !   !   CASE result OF
 1800  180   12     !   !   !   ! ok_result, soft_error:
 1810  181   13     !   !   !   !   BEGIN
 1820  182   14     !   !   !   !   ! block_no := u3 DIV stream_size;
 1830  183   15     !   !   !   !   ! IF block_no = master_block THEN
 1840  184   16     !   !   !   !   !   BEGIN
\f

festrlst    81.05.13.   11.35.                                                    page     5

 1850  185   17     !   !   !   !   !   ! result := master;
 1860  186   18     !   !   !   !   !   END ELSE
 1870  187   19     !   !   !   !   !   IF block_no <> u4 DIV stream_size THEN
 1880  188   20     !   !   !   !   !     BEGIN
 1890  189   21     !   !   !   !   !     ! result := master;
 1900  190   22     !   !   !   !   !     END;
 1910  191   23     !   !   !   !   END;
 1920  192   24     !   !   !   ! hard_error:   ;
 1930  193   25     !   !   !   ! rejected  :   ;
 1940  194   26     !   !   !   ! OTHERWISE  BEGIN
 1950  195   27     !   !   !   ! ! user_result := un_intelligible;
 1960  196   28     !   !   !   ! ! result      := result - un_intelligible;
 1970  197   29     !   !   !   ! ! GOTO comp_result;
 1980  198   30     !   !   !   ! END;
 1990  199   31     !   !   !   END;
 2000  200   32     !   !   END ELSE
 2010  201   33     !   !   BEGIN
 2020  202   34     !   !   ! operation  := u1;
 2030  203   35     !   !   ! user_result:= u2;
 2040  204   36     !   !   ! push(header, message);
 2050  205   37     !   !   END;
 2060  206   38     !   END;
 2070  207   39     ! IF NOT nil(message) THEN
 2080  208   40     !   BEGIN
 2090  209   41     !   ! message^.u2 := user_result;
 2100  210   42     !   END;
 2110  211   43     END (* decode the received message *) ;
 2120  212          
 2130  213          
 2140  214          PROCEDURE next_notice(VAR stream : integer);
 2150  215          VAR r : reference;
 2160  216            ptr : integer;
 2170  217          BEGIN
 2180  218    1     ! WITH chain(restart_notices) DO
 2190  219    2     !   IF prev <> restart_notices THEN
 2200  220    3     !     BEGIN
 2210  221    4     !     ! stream := chain(next).ref^.u3;
 2220  222    5     !     ! move_element(next, chain(noticed_output).prev);
 2230  223    6     !     END ELSE
 2240  224    7     !     WITH chain(free_out) DO
 2250  225    8     !       IF prev = free_out THEN
 2260  226    9     !         BEGIN
 2270  227   10     !         ! stream := no_stream;
 2280  228   11     !         END ELSE
 2290  229   12     !         BEGIN
 2300  230   13     !         ! sensesem(r, waiting_output);
\f

festrlst    81.05.13.   11.35.                                                    page     6

 2310  231   14     !         ! IF nil(r) THEN
 2320  232   15     !         !   BEGIN
 2330  233   16     !         !   ! stream := no_stream;
 2340  234   17     !         !   END ELSE
 2350  235   18     !         !   BEGIN
 2360  236   19     !         !   ! stream := r^.u3;
 2370  237   20     !         !   ! ptr := search_chain(noticed_output, stream, write_stream, false);
 2380  238   21     !         !   ! IF ptr = 0 THEN ptr := next ELSE
 2390  239   22     !         !   !   IF NOT nil(chain(ptr).ref) THEN ptr := next;
 2400  240   23     !         !   ! chain(ptr).ref :=: r;
 2410  241   24     !         !   ! IF ptr = next THEN
 2420  242   25     !         !   !   move_element(next, chain(noticed_output).prev) ELSE
 2430  243   26     !         !   !   stream := no_stream;
 2440  244   27     !         !   END;
 2450  245   28     !         END;
 2460  246   29     END (* procedure to find the next notice *) ;
 2470  247          
 2480  248          
 2490  249          PROCEDURE return_output(result : integer);
 2500  250          BEGIN
 2510  251    1     ! IF NOT nil(message) THEN
 2520  252    2     !   BEGIN
 2530  253    3     !   ! WITH message^ DO u2 := u2 + result;
 2540  254    4     !   ! return(message);
 2550  255    5     !   END;
 2560  256    6     END (* procedure to return output-data to the user *) ;
 2570  257          
 2580  258          
 2590  259          PROCEDURE xqt_request;
 2600  260          VAR stream, ptr : integer;
 2610  261          BEGIN
 2620  262    1     ! stream := header^.u3 MOD stream_size;
 2630  263    2     ! IF stream <> no_stream THEN
 2640  264    3     !   BEGIN
 2650  265    4     !   ! ptr := search_chain(noticed_output, stream, write_stream, false);
 2660  266    5     !   ! message :=: chain(ptr).ref ;
 2670  267    6     !   ! move_element(ptr, free_out);
 2680  268    7     !   END;
 2690  269    8     END (* procedure to find the requested data *) ;
 2700  270          
 2710  271          
 2720  272          PROCEDURE xmit(operation, status : integer);
 2730  273          VAR block_no, stream, buffers : integer;
 2740  274          BEGIN
 2750  275    1     ! IF operation = notice THEN
 2760  276    2     !   BEGIN
\f

festrlst    81.05.13.   11.35.                                                    page     7

 2770  277    3     !   ! block_no := output_block_no MOD 3;
 2780  278    4     !   ! buffers  := 0;
 2790  279    5     !   ! next_notice(stream);
 2800  280    6     !   END ELSE
 2810  281    7     !   BEGIN
 2820  282    8     !   ! stream  := output_buffers*master_size + status;
 2830  283    9     !   ! block_no:= master_block;
 2840  284   10     !   ! buffers := output_buffers;
 2850  285   11     !   ! alloc(sense_device, sense_pool, input_sem.s^);
 2860  286   12     !   ! sense_device^.u1 := sense_com;
 2870  287   13     !   ! signal(sense_device, xmitter.s^);
 2880  288   14     !   END;
 2890  289   15     ! desc_header^.u3 := block_no*stream_size + stream;
 2900  290   16     ! WITH header^ DO
 2910  291   17     !   BEGIN
 2920  292   18     !   ! u1 := write_read_data;
 2930  293   19     !   ! u3 := desc_header^.u3;
 2940  294   20     !   ! u4 := block_no*stream_size + buffers*master_size + 1;
 2950  295   21     !   END;
 2960  296   22     ! signal(desc_header, out_desc_sem);
 2970  297   23     ! push(header, message);
 2980  298   24     ! signal(message, xmitter.s^);
 2990  299   25     ! IF output_block_no = max_integer THEN output_block_no := -1;
 3000  300   26     ! output_block_no := output_block_no + 1;
 3010  301   27     END (* procedure to send a new data-buffer to the transmitter *) ;
 3020  302          
 3030  303          
 3040  304          PROCEDURE restart_xmitter(receiver_buffers : integer);
 3050  305          VAR ptr : integer;
 3060  306          BEGIN
 3070  307    1     ! ptr := restart_notices;
 3080  308    2     ! WITH chain(noticed_output) DO
 3090  309    3     !   WHILE noticed_output <> prev DO
 3100  310    4     !     BEGIN
 3110  311    5     !     ! move_element(next, ptr);
 3120  312    6     !     ! ptr := chain(ptr).next ;
 3130  313    7     !     END;
 3140  314    8     ! output_stopped := false;
 3150  315    9     ! output_block_no := 0;
 3160  316   10     ! FOR ptr := 1 TO output_buffers DO
 3170  317   11     !   BEGIN
 3180  318   12     !   ! alloc(desc_header, xmit_pool, out_desc_sem);
 3190  319   13     !   ! alloc(header, xmit_pool  , input_sem.s^);
 3200  320   14     !   ! xmit(notice, 0);
 3210  321   15     !   END;
 3220  322   16     END (* restart of the transmitter *) ;
\f

festrlst    81.05.13.   11.35.                                                    page     8

 3230  323          
 3240  324          
 3250  325          FUNCTION master_match(VAR received, xmitted : integer): boolean;
 3260  326          BEGIN
 3270  327    1     ! master_match := false;
 3280  328    2     ! WITH desc_header^ DO
 3290  329    3     !   IF u3 DIV stream_size = master_block THEN
 3300  330    4     !     BEGIN
 3310  331    5     !     ! master_match := true;
 3320  332    6     !     ! xmitted      := u3 MOD master_size;
 3330  333    7     !     ! IF received = master THEN
 3340  334    8     !     !   received := header^.u3 MOD master_size ELSE
 3350  335    9     !     !   received := -1;
 3360  336   10     !     END;
 3370  337   11     END (* procedure to test if a master-out is answered with master-in *) ;
 3380  338          
 3390  339          
 3400  340          PROCEDURE return_input(result : integer);
 3410  341          BEGIN
 3420  342    1     ! IF NOT nil(message) THEN
 3430  343    2     !   BEGIN
 3440  344    3     !   ! LOCK message AS d:data_buffer DO WITH d DO
 3450  345    4     !   !     IF next - first <= 1 THEN
 3460  346    5     !   !       BEGIN
 3470  347    6     !   !       ! next := first;
 3480  348    7     !   !       ! IF result = ok_result THEN result := rejected;
 3490  349    8     !   !       END;
 3500  350    9     !   ! WITH message^ DO u2 := u2 + result;
 3510  351   10     !   ! return(message);
 3520  352   11     !   END;
 3530  353   12     END (* procedure to return input buffers to the user *) ;
 3540  354          
 3550  355          
 3560  356          PROCEDURE xqt_notice;
 3570  357          VAR stream, ptr, notice_no : integer;
 3580  358          BEGIN
 3590  359    1     ! stream := header^.u3 MOD stream_size;
 3600  360    2     ! IF stream <> no_stream THEN
 3610  361    3     !   BEGIN
 3620  362    4     !   ! notice_no := notices_received(stream);
 3630  363    5     !   ! IF notice_no = 0 THEN
 3640  364    6     !   !   BEGIN
 3650  365    7     !   !   ! ptr := search_chain(received_input, stream, read_stream, false);
 3660  366    8     !   !   ! IF ptr = 0 THEN
 3670  367    9     !   !   !   BEGIN
 3680  368   10     !   !   !   ! notice_no := 1;
\f

festrlst    81.05.13.   11.35.                                                    page     9

 3690  369   11     !   !   !   ! ptr := search_chain(received_input, stream, tell_next_notice, false);
 3700  370   12     !   !   !   ! IF ptr <> 0 THEN
 3710  371   13     !   !   !   !   BEGIN
 3720  372   14     !   !   !   !   ! message :=: chain(ptr).ref;
 3730  373   15     !   !   !   !   ! message^.u2 := ok_result;
 3740  374   16     !   !   !   !   ! return(message);
 3750  375   17     !   !   !   !   ! move_element(ptr, free_in);
 3760  376   18     !   !   !   !   END;
 3770  377   19     !   !   !   END ELSE
 3780  378   20     !   !   !   BEGIN
 3790  379   21     !   !   !   ! move_element(ptr, chain(ready_request).prev);
 3800  380   22     !   !   !   END;
 3810  381   23     !   !   END ELSE
 3820  382   24     !   !   BEGIN
 3830  383   25     !   !   ! notice_no := notice_no + 1;
 3840  384   26     !   !   END;
 3850  385   27     !   ! notices_received(stream) := notice_no;
 3860  386   28     !   END;
 3870  387   29     END (* procedure to execute a notice *) ;
 3880  388          
 3890  389          
 3900  390          PROCEDURE place_input(el:integer; VAR in_ref: reference);
 3910  391          VAR stream, n : integer;
 3920  392          BEGIN
 3930  393    1     ! stream := in_ref^.u3;
 3940  394    2     ! n := notices_received(stream);
 3950  395    3     ! IF n > 0 THEN
 3960  396    4     !   BEGIN
 3970  397    5     !   ! IF in_ref^.u1 = tell_next_notice THEN
 3980  398    6     !   !   BEGIN
 3990  399    7     !   !   ! n := 0;
 4000  400    8     !   !   END ELSE
 4010  401    9     !   !   BEGIN
 4020  402   10     !   !   ! notices_received(stream) := n -1;
 4030  403   11     !   !   ! n := ready_request;
 4040  404   12     !   !   END;
 4050  405   13     !   END ELSE
 4060  406   14     !   BEGIN
 4070  407   15     !   ! n := received_input;
 4080  408   16     !   END;
 4090  409   17     ! IF n > 0 THEN
 4100  410   18     !   BEGIN
 4110  411   19     !   ! chain(el).ref :=: in_ref;
 4120  412   20     !   ! move_element(el, chain(n).prev);
 4130  413   21     !   END ELSE
 4140  414   22     !   BEGIN
\f

festrlst    81.05.13.   11.35.                                                    page    10

 4150  415   23     !   ! in_ref^.u2 := ok_result;
 4160  416   24     !   ! return(in_ref);
 4170  417   25     !   END;
 4180  418   26     END (* procedure to place incoming input-request *) ;
 4190  419          
 4200  420          
 4210  421          PROCEDURE next_request(VAR stream : integer);
 4220  422          BEGIN
 4230  423    1     ! WITH chain(ready_request) DO
 4240  424    2     !   IF prev = ready_request THEN
 4250  425    3     !     BEGIN
 4260  426    4     !     ! stream := no_stream;
 4270  427    5     !     END ELSE
 4280  428    6     !     BEGIN
 4290  429    7     !     ! message :=: chain(next).ref;
 4300  430    8     !     ! stream  :=  message^.u3;
 4310  431    9     !     ! move_element(next, free_in);
 4320  432   10     !     END;
 4330  433   11     END (* procedure to find the next request *) ;
 4340  434          
 4350  435          
 4360  436          PROCEDURE send_input;
 4370  437          BEGIN
 4380  438    1     ! wait(message, pending_input);
 4390  439    2     ! pop(desc_header, message);
 4400  440    3     ! signal(desc_header, in_desc_sem);
 4410  441    4     ! LOCK header AS buf:own_data DO
 4420  442    5     !   WITH buf DO
 4430  443    6     !     BEGIN
 4440  444    7     !     ! first := 6;
 4450  445    8     !     ! IF nil(message) THEN last := own_data_size ELSE last := 0;
 4460  446    9     !     ! last  := first + last - 1;
 4470  447   10     !     ! next  := first;
 4480  448   11     !     END;
 4490  449   12     ! push(header, message);
 4500  450   13     ! signal(message, receiver.s^);
 4510  451   14     ! input_block_no := (input_block_no + 1) MOD 3;
 4520  452   15     END (* procedure to send the next input message *) ;
 4530  453          
 4540  454          
 4550  455          PROCEDURE receive(operation, status : integer);
 4560  456          VAR block_no, stream, buffers, expected_block : integer;
 4570  457          BEGIN
 4580  458    1     ! IF operation = request THEN
 4590  459    2     !   BEGIN
 4600  460    3     !   ! buffers  := 0;
\f

festrlst    81.05.13.   11.35.                                                    page    11

 4610  461    4     !   ! block_no := input_block_no;
 4620  462    5     !   ! expected_block := (block_no+1)MOD 3;
 4630  463    6     !   ! next_request(stream);
 4640  464    7     !   END ELSE
 4650  465    8     !   BEGIN
 4660  466    9     !   ! alloc(sense_device, sense_pool, input_sem.s^);
 4670  467   10     !   ! sense_device^.u1 := sense_com;
 4680  468   11     !   ! signal(sense_device, receiver.s^);
 4690  469   12     !   ! buffers := input_buffers;
 4700  470   13     !   ! stream  := input_buffers*master_size + status;
 4710  471   14     !   ! block_no:= master_block;
 4720  472   15     !   ! expected_block := master_block;
 4730  473   16     !   END;
 4740  474   17     ! desc_header^.u3 := block_no*stream_size + stream;
 4750  475   18     ! WITH header^ DO
 4760  476   19     !   BEGIN
 4770  477   20     !   ! u1 := write_read_data;
 4780  478   21     !   ! u3 := desc_header^.u3;
 4790  479   22     !   ! u4 := expected_block*stream_size + buffers*master_size;
 4800  480   23     !   END;
 4810  481   24     ! push(desc_header, message);
 4820  482   25     ! signal(message, pending_input);
 4830  483   26     ! send_input;
 4840  484   27     END (* procedure to send the next receive-operation *) ;
 4850  485          
 4860  486          
 4870  487          
 4880  488          PROCEDURE restart_receiver(buffering : integer);
 4890  489          VAR ptr : integer;
 4900  490          BEGIN
 4910  491    1     ! ptr := received_input;
 4920  492    2     ! WITH chain(ready_request) DO
 4930  493    3     !   WHILE ready_request <> prev DO
 4940  494    4     !     BEGIN
 4950  495    5     !     ! move_element(next, ptr);
 4960  496    6     !     ! ptr := chain(ptr).next;
 4970  497    7     !     END;
 4980  498    8     ! FOR ptr := 0 TO max_stream DO
 4990  499    9     !   notices_received(ptr) := 0;
 5000  500   10     ! 
 5010  501   11     ! FOR ptr := 1 TO buffering-1 DO
 5020  502   12     !   BEGIN
 5030  503   13     !   ! alloc(message, receive_pool, pending_input);
 5040  504   14     !   ! WITH message^ DO
 5050  505   15     !   !   BEGIN
 5060  506   16     !   !   ! u1 := 0; u2 := 0;
\f

festrlst    81.05.13.   11.35.                                                    page    12

 5070  507   17     !   !   ! u3 := no_stream ;
 5080  508   18     !   !   END;
 5090  509   19     !   ! return(message);
 5100  510   20     !   END;
 5110  511   21     ! ptr := 1;
 5120  512   22     ! IF NOT nil(desc_header) THEN
 5130  513   23     !   BEGIN
 5140  514   24     !   ! WITH desc_header^ DO
 5150  515   25     !   !   BEGIN
 5160  516   26     !   !   ! u1 := 0; u2 := 0; u3 := no_stream;
 5170  517   27     !   !   END;
 5180  518   28     !   ! signal(desc_header, pending_input);
 5190  519   29     !   ! WITH header^ DO
 5200  520   30     !   !   BEGIN
 5210  521   31     !   !   ! u3 := (master_block*stream_size + input_buffers*master_size);
 5220  522   32     !   !   ! u4 := 0;
 5230  523   33     !   !   END;
 5240  524   34     !   ! send_input;
 5250  525   35     !   ! ptr := 2;
 5260  526   36     !   END;
 5270  527   37     ! 
 5280  528   38     ! input_block_no := 0; input_stopped := false;
 5290  529   39     ! FOR ptr := ptr TO input_buffers DO
 5300  530   40     !   BEGIN
 5310  531   41     !   ! alloc(desc_header, receive_pool, in_desc_sem);
 5320  532   42     !   ! alloc(header, message_pool, input_sem.s^);
 5330  533   43     !   ! receive(request, 0);
 5340  534   44     !   END;
 5350  535   45     END (* procedure to restart the receiver *) ;
 5360  536          
 5370  537          
 5380  538          PROCEDURE test_master(trans_mitter : boolean; answer : integer);
 5390  539          VAR sent, count : integer;
 5400  540          BEGIN
 5410  541    1     ! IF master_match(answer, sent) THEN
 5420  542    2     !   BEGIN
 5430  543    3     !   ! IF answer = 0 THEN
 5440  544    4     !   !   BEGIN
 5450  545    5     !   !   ! sent := (header^.u3 MOD stream_size) DIV master_size;
 5460  546    6     !   !   ! IF trans_mitter THEN
 5470  547    7     !   !   !   BEGIN
 5480  548    8     !   !   !   ! release(header); release(desc_header);
 5490  549    9     !   !   !   ! restart_xmitter(sent);
 5500  550   10     !   !   !   END ELSE
 5510  551   11     !   !   !   BEGIN
 5520  552   12     !   !   !   ! restart_receiver(sent);
\f

festrlst    81.05.13.   11.35.                                                    page    13

 5530  553   13     !   !   !   END;
 5540  554   14     !   !   END ELSE
 5550  555   15     !   !   BEGIN
 5560  556   16     !   !   ! IF trans_mitter THEN count := -1 ELSE count := 0;
 5570  557   17     !   !   ! IF answer <> sent THEN
 5580  558   18     !   !   !   BEGIN
 5590  559   19     !   !   !   ! sent := master_size;
 5600  560   20     !   !   !   ! count:= -1;
 5610  561   21     !   !   !   END;
 5620  562   22     !   !   ! sent := sent + count;
 5630  563   23     !   !   ! IF trans_mitter THEN xmit(master_out, sent) ELSE receive(master_out, sent);
 5640  564   24     !   !   END;
 5650  565   25     !   END ELSE
 5660  566   26     !   BEGIN
 5670  567   27     !   ! release(desc_header);
 5680  568   28     !   ! sent := (header^.u4 MOD stream_size) DIV master_size;
 5690  569   29     !   ! IF sent = 0 THEN
 5700  570   30     !   !   BEGIN
 5710  571   31     !   !   ! release(header);
 5720  572   32     !   !   END ELSE
 5730  573   33     !   !   BEGIN
 5740  574   34     !   !   ! sent       := sent*master_size + master_size - 1;
 5750  575   35     !   !   ! header^.u3 := master_block*stream_size + sent;
 5760  576   36     !   !   ! IF trans_mitter THEN signal(header, xmitter.s^) ELSE
 5770  577   37     !   !   !   IF open(pending_input) THEN send_input ELSE
 5780  578   38     !   !   !     signal(header, receiver.s^);
 5790  579   39     !   !   END;
 5800  580   40     !   END;
 5810  581   41     END (* procedure to master-clear the transmitter *) ;
 5820  582          
 5830  583          
 5840  584          PROCEDURE link_chain(head, start, stop : integer);
 5850  585          VAR i : integer;
 5860  586          BEGIN
 5870  587    1     ! WITH chain(head) DO
 5880  588    2     !   BEGIN
 5890  589    3     !   ! next := start; prev := stop;
 5900  590    4     !   END;
 5910  591    5     ! FOR i := start TO stop DO
 5920  592    6     !   WITH chain(i) DO
 5930  593    7     !     BEGIN
 5940  594    8     !     ! next := i + 1;
 5950  595    9     !     ! prev := i - 1;
 5960  596   10     !     ! IF i = start THEN prev := head;
 5970  597   11     !     ! IF i = stop  THEN next := head;
 5980  598   12     !     END;
\f

festrlst    81.05.13.   11.35.                                                    page    14

 5990  599   13     END (* procedure to initialize a chain *);
 6000  600          
 6010  601          
 6020  602        BEGIN
 6030  603    1   ! 
 6040  604    2   ! FOR input_block_no := 1 TO chain_max DO
 6050  605    3   !   WITH chain(input_block_no) DO
 6060  606    4   !     BEGIN
 6070  607    5   !     ! next := input_block_no; prev := next;
 6080  608    6   !     END;
 6090  609    7   ! link_chain(free_in, 7, 6 + chain_in);
 6100  610    8   ! link_chain(free_out, 7 + chain_in, chain_max);
 6110  611    9   ! 
 6120  612   10   ! testopen( z, own.incname, op);
 6130  613   11   ! testout( z, version, fe_env_version);
 6140  614   12   ! 
 6150  615   13   ! restart_xmitter(1);
 6160  616   14   ! restart_receiver(1);
 6170  617   15   ! 
 6180  618   16   ! WHILE true DO
 6190  619   17   !   BEGIN
 6200  620   18   !   ! wait(message, input_sem.w^);
 6210  621   19   !   ! decode_message(operation, result);
 6220  622   20   !   ! CASE operation OF
 6230  623   21   !   ! ! sense_com,
 6240  624   22   !   ! ! write_data:
 6250  625   23   !   ! !   release(message);
 6260  626   24   !   ! ! regret_output:
 6270  627   25   !   ! !   BEGIN
 6280  628   26   !   ! !   ! status := search_sem(out_desc_sem);
 6290  629   27   !   ! !   ! IF status = 0 THEN
 6300  630   28   !   ! !   !   BEGIN
 6310  631   29   !   ! !   !   ! status := search_chain(restart_notices, message^.u3, write_stream, true);
 6320  632   30   !   ! !   !   ! IF status <> 0 THEN move_element(status, free_in) ELSE
 6330  633   31   !   ! !   !   !   BEGIN
 6340  634   32   !   ! !   !   !   ! status := search_chain(noticed_output, message^.u3, write_stream, true);
 6350  635   33   !   ! !   !   !   ! IF status <> 0 THEN
 6360  636   34   !   ! !   !   !   !   WITH chain(status), ref^ DO
 6370  637   35   !   ! !   !   !   !     BEGIN
 6380  638   36   !   ! !   !   !   !     ! c_func := u1; c_stream := u3;
 6390  639   37   !   ! !   !   !   !     END;
 6400  640   38   !   ! !   !   !   END;
 6410  641   39   !   ! !   !   ! IF status <> 0 THEN sense_device :=: chain(status).ref ELSE
 6420  642   40   !   ! !   !   !   BEGIN
 6430  643   41   !   ! !   !   !   ! status := search_sem(waiting_output);
 6440  644   42   !   ! !   !   !   ! IF status <> 0 THEN
\f

festrlst    81.05.13.   11.35.                                                    page    15

 6450  645   43   !   ! !   !   !   !   BEGIN
 6460  646   44   !   ! !   !   !   !   ! stream := message^.u3;
 6470  647   45   !   ! !   !   !   !   ! REPEAT
 6480  648   46   !   ! !   !   !   !   ! ! IF NOT nil(message) THEN signal(message, waiting_output);
 6490  649   47   !   ! !   !   !   !   ! ! wait(message, waiting_output);
 6500  650   48   !   ! !   !   !   !   ! ! operation := message^.u1;
 6510  651   49   !   ! !   !   !   !   ! ! IF (message^.u3=stream) AND (nil(sense_device)) THEN
 6520  652   50   !   ! !   !   !   !   ! !   sense_device :=: message;
 6530  653   51   !   ! !   !   !   !   ! UNTIL operation = regret_output;
 6540  654   52   !   ! !   !   !   !   END;
 6550  655   53   !   ! !   !   !   END;
 6560  656   54   !   ! !   !   ! IF status <> 0 THEN status := ok_result ELSE status := un_intelligible;
 6570  657   55   !   ! !   !   END ELSE status := rejected;
 6580  658   56   !   ! !   ! message^.u2 := status;
 6590  659   57   !   ! !   ! push(message, sense_device);
 6600  660   58   !   ! !   ! return(sense_device);
 6610  661   59   !   ! !   END;
 6620  662   60   !   ! ! regret_input:
 6630  663   61   !   ! !   BEGIN
 6640  664   62   !   ! !   ! status := search_sem(in_desc_sem);
 6650  665   63   !   ! !   ! IF status = 0 THEN status := search_sem(pending_input);
 6660  666   64   !   ! !   ! IF status = 0 THEN
 6670  667   65   !   ! !   !   BEGIN
 6680  668   66   !   ! !   !   ! status := search_chain(ready_request, message^.u3, read_stream, false);
 6690  669   67   !   ! !   !   ! IF status = 0 THEN
 6700  670   68   !   ! !   !   !   status := search_chain(received_input, message^.u3, read_stream, false);
 6710  671   69   !   ! !   !   ! IF status = 0 THEN
 6720  672   70   !   ! !   !   !   BEGIN
 6730  673   71   !   ! !   !   !   ! status := un_intelligible;
 6740  674   72   !   ! !   !   !   END ELSE
 6750  675   73   !   ! !   !   !   BEGIN
 6760  676   74   !   ! !   !   !   ! sense_device     :=: chain(status).ref;
 6770  677   75   !   ! !   !   !   ! move_element(status, free_in);
 6780  678   76   !   ! !   !   !   ! status   := ok_result;
 6790  679   77   !   ! !   !   !   END;
 6800  680   78   !   ! !   !   END ELSE
 6810  681   79   !   ! !   !   BEGIN
 6820  682   80   !   ! !   !   ! status := rejected;
 6830  683   81   !   ! !   !   END;
 6840  684   82   !   ! !   ! message^.u2 := status;
 6850  685   83   !   ! !   ! push(message, sense_device);
 6860  686   84   !   ! !   ! return(sense_device);
 6870  687   85   !   ! !   END;
 6880  688   86   !   ! ! write_stream:
 6890  689   87   !   ! !   signal(message, waiting_output);
 6900  690   88   !   ! ! read_stream, tell_next_notice:
\f

festrlst    81.05.13.   11.35.                                                    page    16

 6910  691   89   !   ! !   WITH chain(free_in) DO
 6920  692   90   !   ! !     IF free_in = prev THEN
 6930  693   91   !   ! !       BEGIN
 6940  694   92   !   ! !       ! WITH chain(received_input) DO
 6950  695   93   !   ! !       !   IF prev <> received_input THEN place_input(next, message);
 6960  696   94   !   ! !       ! message^.u2 := ok_result;
 6970  697   95   !   ! !       ! return_input(overload);
 6980  698   96   !   ! !       END ELSE
 6990  699   97   !   ! !       BEGIN
 7000  700   98   !   ! !       ! place_input(next, message);
 7010  701   99   !   ! !       END;
 7020  702  100   !   ! ! output:
 7030  703  101   !   ! !   BEGIN
 7040  704  102   !   ! !   ! wait(desc_header, out_desc_sem);
 7050  705  103   !   ! !   ! IF output_stopped THEN
 7060  706  104   !   ! !   !   BEGIN
 7070  707  105   !   ! !   !   ! return_output(master);
 7080  708  106   !   ! !   !   ! test_master(true, result);
 7090  709  107   !   ! !   !   END ELSE
 7100  710  108   !   ! !   !   BEGIN
 7110  711  109   !   ! !   !   ! return_output(result + result_modif);
 7120  712  110   !   ! !   !   ! CASE result OF
 7130  713  111   !   ! !   !   ! ! ok_result, soft_error:
 7140  714  112   !   ! !   !   ! !   BEGIN
 7150  715  113   !   ! !   !   ! !   ! xqt_request;
 7160  716  114   !   ! !   !   ! !   ! operation := notice;
 7170  717  115   !   ! !   !   ! !   END;
 7180  718  116   !   ! !   !   ! ! OTHERWISE
 7190  719  117   !   ! !   !   ! ! BEGIN
 7200  720  118   !   ! !   !   ! ! ! output_stopped := true;
 7210  721  119   !   ! !   !   ! ! ! operation := master_out;
 7220  722  120   !   ! !   !   ! ! ! status    := master_size - 1;
 7230  723  121   !   ! !   !   ! ! END;
 7240  724  122   !   ! !   !   ! END;
 7250  725  123   !   ! !   !   ! xmit(operation, status);
 7260  726  124   !   ! !   !   END;
 7270  727  125   !   ! !   END;
 7280  728  126   !   ! ! input:
 7290  729  127   !   ! !   BEGIN
 7300  730  128   !   ! !   ! wait(desc_header, in_desc_sem);
 7310  731  129   !   ! !   ! IF input_stopped THEN
 7320  732  130   !   ! !   !   BEGIN
 7330  733  131   !   ! !   !   ! return_input(master);
 7340  734  132   !   ! !   !   ! test_master(false, result);
 7350  735  133   !   ! !   !   END ELSE
 7360  736  134   !   ! !   !   BEGIN
\f

festrlst    81.05.13.   11.35.                                                    page    17

 7370  737  135   !   ! !   !   ! return_input(result+result_modif);
 7380  738  136   !   ! !   !   ! CASE result OF
 7390  739  137   !   ! !   !   ! ! ok_result, soft_error:
 7400  740  138   !   ! !   !   ! !   BEGIN
 7410  741  139   !   ! !   !   ! !   ! xqt_notice;
 7420  742  140   !   ! !   !   ! !   ! operation := request;
 7430  743  141   !   ! !   !   ! !   END;
 7440  744  142   !   ! !   !   ! ! OTHERWISE
 7450  745  143   !   ! !   !   ! ! BEGIN
 7460  746  144   !   ! !   !   ! ! ! input_stopped := true;
 7470  747  145   !   ! !   !   ! ! ! operation := master_out;
 7480  748  146   !   ! !   !   ! ! ! status    := master_size - 1;
 7490  749  147   !   ! !   !   ! ! END;
 7500  750  148   !   ! !   !   ! END;
 7510  751  149   !   ! !   !   ! receive(operation, status);
 7520  752  150   !   ! !   !   END;
 7530  753  151   !   ! !   END;
 7540  754  152   !   ! ! OTHERWISE
 7550  755  153   !   ! ! BEGIN
 7560  756  154   !   ! ! ! message^.u2 := un_intelligible;
 7570  757  155   !   ! ! ! return(message);
 7580  758  156   !   ! ! END;
 7590  759  157   !   ! END;
 7600  760  158   !   END;
 7610  761  159   END.
 7620  762      
\f

festrlst    81.05.13.   11.35.                                                    page    18

           0   13*   48*   49*   51*   59*   87*  123   138   238   278   315   320   363   366   370 
              395   399   409   445   460   498   499   506   506   516   516   522   528   533   543 
              556   569   629   632   635   641   644   656   665   666   669   671 
           1    9*   10*   27*   40*   50*   54*   55*   60*   76*  130   294   299   300   316   335 
              345   368   383   402   446   451   462   501   501   511   556   560   574   594   595 
              604   615   616   722   748 
           2   14*   28*   56*   61*   76*  525 
           3   15*   29*   63*  277   451   462 
           4   16*   30*   64*
           5   17*   31*   65*
           6   18*   32*   33*   66*  444   609 
           7  609   610 
           8   11*   19*   25*   26*  172 
           9   20*
          10   21*
          12   22*
          63   52*
          64   62*
         256   55*
       32767   68*
alloc         285   318   319   466   503   531   532 
answer        538*  541   543   557 
as            344:  441:
blocklength_error                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               62*
block_no      166*  182=  183   187   273*  277=  283=  289   294   456*  461=  462   471=  474 
boolean        86*  135*  325*  538*
buf           441:  442 
buffering     488*  501 
buffers       273*  278=  284=  294   456*  460=  469=  479 
buffer_size    57*   91*
byte           37*   87*  117*  136*
chain          43*  101   105   110   111   112   140   142   218   221   222   224   239   240   242 
              266   308   312   372   379   411   412   423   429   492   496   587   592   605   636 
              641   676   691   694 
chain_in       25*   33*  609   610 
chain_max      33*   40*  604   610 
chain_mem      40*   43*
chain_out      26*   33*
chain_rec      36*   40*
comp_result   167*  178:  197 
count         539*  556=  556=  560=  562 
c_func         37*  146   638=
c_stream       37*  146   638=
\f

festrlst    81.05.13.   11.35.                                                    page    19

d              76*  344:  344 
data_buffer    71*  344 
decode_message                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              165*  621 
desc_header    80*  289   293   296   318   328   439   440   474   478   481   512   514   518   531 
              548   567   704   730 
el            390*  411   412 
expected_block                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              456*  462=  472=  479 
f             136*  146=  147=  151=  153 
false         237   265   314   327   365   369   528   668   670   734 
fe_env_version                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              613 
first          72*   75*  345   347   444=  446   447 
fn             99*  107=  110   111 
fp             99*  107=  110   111 
free_in        31*  375   431   609   632   677   691   692 
free_out       32*  224   225   267   610 
from           98*  103   105   112 
func_code     135*  153 
hard_error     63*  192:
head          584*  587   596   597 
header         80*  169   170   204   262   290   297   319   334   359   441:  449   475   519   532 
              545   548   568   571   575   576   578 
i             585*  591=  592   594   595   596   597 
incname       612 
input          17*  177   728:
input_block_no                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               95*  451=  451   461   528=  604=  605   607 
input_buffers                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               10*   90*   91*   92*  469   470   521   529 
input_sem       2*  285   319   466   532   620 
input_stopped                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               86*  528=  731   746=
integer         3*   72*   75*   76*   95*   98*   99*  116*  135*  135*  165*  166*  214*  216*  249*
              260*  272*  273*  304*  305*  325*  340*  357*  390*  391*  421*  455*  456*  488*  489*
              538*  539*  584*  585*
into           98*  101   108 
in_desc_sem    84*  440   531   664   730 
in_ref        390*  393   397   411   415   416 
last           72*   75*  136*  139=  141   156   445=  445=  446=  446 
link_chain    584*  609   610 
lock          344:  441:
master         65*  185   189   333   707   733 
\f

festrlst    81.05.13.   11.35.                                                    page    20

master_block   55*  129   183   283   329   471   472   521   575 
master_match  325*  327=  331=  541 
master_out     50*  563   563   721   747 
master_size    56*   57*  177   282   294   332   334   470   479   521   545   559   568   574   574 
              722   748 
max_integer    68*  299 
max_stream     52*   54*   87*  498 
message        80*  119   125   126   127   131   169   204   207   209   251   253   254   266=  297 
              298   342   344:  350   351   372=  373   374   429=  430   438   439   445   449   450 
              481   482   503   504   509   620   625   631   634   646   648   648   649   650   651 
              652   658   659   668   670   684   685   689   695   696   700   756   757 
message_pool   92*  532 
move_element   98*  222   242   267   311   375   379   412   431   495   632   677 
n             391*  394=  395   399=  402   403=  407=  409   412 
next           37*   72*   75*  103   103=  107   108=  110=  140   159   221   222   238   239   241 
              242   311   312   345   347=  429   431   447=  495   496   589=  594=  597=  607=  607 
              695   700 
next_notice   214*  279 
next_request  421*  463 
notice         49*  275   320   716 
noticed_output                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               28*  222   237   242   265   308   309   634 
notices_received                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               87*  362   385=  394   402=  499=
notice_no     357*  362=  363   368=  383=  383   385 
no_regret     135*  147 
no_stream      51*  227   233   243   263   360   426   507   516 
ok_result      59*  176   180:  348   373   415   656   678   696   713:  739:
op              4*  612 
open          577 
operation      94*  165*  177=  202=  272*  275   455*  458   621   622   650=  653   716=  721=  725 
              742=  747=  751 
output         18*  702:
output_block_no                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               95*  277   299   299=  300=  300   315=
output_buffers                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                9*   89*   89*   90*  282   284   316 
output_stopped                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               86*  314=  705   720=
out_desc_sem   83*  296   318   628   704 
overload       66*  697 
own           612 
own_data       74*   92*  441 
own_data_size                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               11*   76*  445 
\f

festrlst    81.05.13.   11.35.                                                    page    21

pending_input                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               84*  438   482   503   518   577   665 
place_input   390*  695   700 
pool           89*   90*   91*   92*
pop           169   439 
prev           37*  107   108=  111=  112=  219   222   225   242   309   379   412   424   493   589=
              595=  596=  607=  692   695 
process         1*
ptr           216*  237=  238   238=  239   239=  240   241   260*  265=  266   267   305*  307=  311 
              312=  312   316=  357*  365=  366   369=  370   372   375   379   489*  491=  495   496=
              496   498=  499   501=  511=  525=  529=  529 
push          204   297   449   481   659   685 
r             215*  230   231   236   240 
ready_request                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               30*  379   403   423   424   492   493   668 
read_stream    20*  365   668   670   690:
receive       455*  533   563   751 
received      325*  333   334=  335=
received_input                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               29*  365   369   407   491   670   694   695 
receiver        2*  450   468   578 
receiver_buffers                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              304*
receive_pool   91*  503   531 
ref            38*  144   149   221   239   240=  266   372   411=  429   636   641   676 
reference      38*   80*  215*  390*
regret_input   16*  662:
regret_output                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               22*  626:  653 
rejected       60*  193:  348   657   682 
release       548   548   567   571   625 
request        48*  458   533   742 
restart_notices                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               27*  218   219   307   631 
restart_receiver                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              488*  552   616 
restart_xmitter                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              304*  549   615 
result         94*  165*  172=  173   179   185=  189=  196=  196   249*  253   340*  348   348=  350 
              621   708   711   712   734   737   738 
result_modif   94*  173=  711   737 
retrans_max     3*
return        254   351   374   416   509   660   686   757 
return_input  340*  697   733   737 
\f

festrlst    81.05.13.   11.35.                                                    page    22

return_output                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              249*  707   711 
s             116*  125   126   136*  146=  151=  153   285   287   298   319   450   466   468   532 
              576   578 
search_chain  135*  138=  155=  237   265   365   369   631   634   668   670 
search_sem    116*  123=  130=  628   643   664   665 
semaphore      84*  116*
sempointer      4*
send_input    436*  483   524   577 
sensesem      230 
sense_com      13*  147   286   467   623:
sense_device   80*  285   286   287   466   467   468   641=  651   652=  659   660   676=  685   686 
sense_pool     90*  285   466 
sent          539*  541   545=  549   552   557   559=  562=  562   563   563   568=  569   574=  574 
              575 
signal        125   287   296   298   440   450   468   482   518   576   578   648   689 
soft_error     61*  180:  713:  739:
start         135*  139   140=  140   141   142   155   156=  159=  584*  589   591   596 
status         94*  272*  282   455*  470   628=  629   631=  632   632   634=  635   636   641   641 
              643=  644   656   656=  656=  657=  658   664=  665   665=  666   668=  669   670=  671 
              673=  676   677   678=  682=  684   722=  725   748=  751 
stop          117*  121=  128   131   584*  589   591   597 
stream         94*  117*  121=  130   135*  153   214*  221=  227=  233=  236=  237   243=  260*  262=
              263   265   273*  279   282=  289   357*  359=  360   362   365   369   385   391*  393=
              394   402   421*  426=  430=  456*  463   470=  474   646=  651 
streamer        1*
stream_size    54*   55*   57*  129   130   182   187   262   289   294   329   359   474   479   521 
              545   568   575 
tell_next_notice                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               19*  369   397   690:
testopen      612 
testout       613 
test_master   538*  708   734 
tn             99*  103=  108   112 
trans_mitter  538*  546   556   563   576 
true          331   618   631   634   708   720   746 
ts_pointer      2*
u1            121   128   131   151   174   202   286=  292=  397   467=  477=  506=  516=  638   650 
u2            172   173   203   209=  253=  253   350=  350   373=  415=  506=  516=  658=  684=  696=
              756=
u3            121   129   130   151   182   221   236   262   289=  293=  293   329   332   334   359 
              393   430   474=  478=  478   507=  516=  521=  545   575=  631   634   638   646   651 
              668   670 
u4            177   187   294=  479=  522=  568 
\f

festrlst    81.05.13.   11.35.                                                    page    23

un_intelligible                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               64*  195   196   656   673   756 
user_result   166*  176=  195=  203=  209 
version         8*  613 
w             620 
wait          126   438   620   649   704   730 
waiting_output                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               82*  230   643   648   649   689 
write_data     14*  624:
write_read_data                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               15*  174   292   477 
write_stream   21*  237   265   631   634   688:
xmit          272*  320   563   725 
xmitted       325*  332=
xmitter         2*  287   298   576 
xmit_pool      89*  318   319 
xqt_notice    356*  741 
xqt_request   259*  715 
z              45*  612   613 
zone           45*
\f

festrlst    81.05.13.   11.35.                                                    page    24

AND                2
ARRAY              3
BEGIN            113
CASE               4
CONST              3
DIV                9
DO                40
ELSE              36
END              120
FOR                6
FUNCTION           3
GOTO               1
IF                63
LABEL              1
MOD               12
NIL               10
NOT                6
OF                 8
OTHERWISE          4
PACKED             1
PROCEDURE         16
RECORD             3
REPEAT             2
THEN              63
TO                 6
TYPE               2
UNTIL              2
VAR               23
WHILE              4
WITH              28
\f

jg8  1981.05.13  11.37
 festr program
81.05.13.      11.36.                         pascal80     version 1981.04.01


   name        headline beginline endline  appetite(words) 

   move_element    99       101     113  :      10            
   search_sem     117       119     132  :       7            
   search_chain   136       138     162  :      11            
   decode_messa   166       169     211  :       9            
   next_notice    215       218     246  :      24            
   return_outpu   250       252     256  :       7            
   xqt_request    260       262     269  :      17            
   xmit           273       276     301  :      19            
   restart_xmit   305       307     322  :      18            
   master_match   326       327     337  :       6            
   return_input   341       343     353  :       8            
   xqt_notice     357       359     387  :      18            
   place_input    391       393     418  :      16            
   next_request   422       423     433  :      12            
   send_input     437       438     452  :      10            
   receive        456       459     484  :      20            
   restart_rece   489       491     535  :      20            
   test_master    539       542     581  :      17            
   link_chain     585       587     599  :      11            
   streamer         8       604     761  :     315            

 code: 2 . 624  = 6624 bytes


end of PASCAL80 compilation 

end
blocksread = 53
▶EOF◀