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

⟦c44cb10bb⟧ TextFile

    Length: 37632 (0x9300)
    Types: TextFile
    Names: »tsliblst«

Derivation

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

TextFile

\f

listi       81.06.03.   17.10.                                                    page     1

   10    1           
\f

listi       81.06.03.   17.10.                                                    page     2

 1010    2        PREFIX timerbook;
 1020    3          
 1030    4          PROCEDURE timerbook (         (*   makes a booking  *)
 1040    5            VAR msg,              (*  booking and update msg  *)
 1050    6            timer_msg: reference; (*  module timeout          *)
 1060    7            ticks,                (*  tick counter value      *)
 1070    8            object: integer;      (*  module ident            *)
 1080    9            VAR timeout_sem,      (*  timeout semaphore       *)
 1090   10            answer: semaphore);   (*  answer sem of msg       *)
 1100   11          CONST
 1110   12            writecontrol= 5;            (*  function for timeout    *)
 1120   13            rwcontrol= 7;               (*     -      -  booking    *)
 1130   14            op1202= 12*16+2;            (*  opcode    -  timeout    *)
 1140   15            op1203= 12*16+3;            (*    -       -  booking    *)
 1150   16          TYPE
 1160   17            updates= RECORD  index, count, obj: integer   END;
 1170   18            timers= RECORD  object: integer   END;
 1180   19          BEGIN
 1190   20    1     ! timer_msg^.u1:= rwcontrol;
 1200   21    2     ! timer_msg^.u3:= msg^.u3;
 1210   22    3     ! timer_msg^.u4:= op1202;
 1220   23    4     ! msg^.u1:= writecontrol;
 1230   24    5     !   (*  msg^.u3 must be initialized by yourself  *)
 1240   25    6     ! msg^.u4:= op1203;
 1250   26    7     ! LOCK msg AS buf: updates DO  WITH buf DO
 1260   27    8     !     BEGIN
 1270   28    9     !     ! count:= ticks;
 1280   29   10     !     ! obj:= object
 1290   30   11     !     END;
 1300   31   12     ! push ( timer_msg, msg);
 1310   32   13     ! signal ( msg, timeout_sem );
 1320   33   14     ! wait ( msg, answer);
 1330   34   15     END;   (*  of timer_book  *)
 1340   35          
 1350   36           
\f

listi       81.06.03.   17.10.                                                    page     3

 2010   37          
 2020   38        PREFIX timerupdate;
 2030   39          
 2040   40          PROCEDURE timerupdate (          (*  makes an update       *)
 2050   41            VAR msg: reference;    (*  update msg              *)
 2060   42            ticks: integer;        (*  tick counter value      *)
 2070   43            VAR timeout_sem,       (*  timeouts input sem      *)
 2080   44            answer: semaphore );   (*  answer sem of msg       *)
 2090   45            
 2100   46              (*  updates the tickcounter for the module      *)
 2110   47              (*  pointed to by buf.index in the msg          *)
 2120   48            
 2130   49          CONST
 2140   50            write= 4;                   (*  function for update     *)
 2150   51            op1204= #hc4;               (*  opcode    -  update     *)
 2160   52          TYPE
 2170   53            updates= RECORD  index, count, object: integer   END;
 2180   54          BEGIN
 2190   55    1     ! msg^.u1:= write;
 2200   56    2     ! msg^.u4:= op1204;
 2210   57    3     ! LOCK msg AS buf: updates DO buf.count:= ticks;
 2220   58    4     ! signal ( msg, timeout_sem );
 2230   59    5     ! wait ( msg, answer);
 2240   60    6     END;   (*  of timer_update  *)
 2250   61          
 2260   62           
\f

listi       81.06.03.   17.10.                                                    page     4

 3010   63          
 3020   64        PREFIX testopen;
 3030   65          
 3040   66          PROCEDURE testopen (
 3050   67            VAR z: zone;
 3060   68            modulename: alfa;
 3070   69            ps: ^semaphore);
 3080   70            
 3090   71          TYPE
 3100   72            opbuftype= RECORD
 3110   73                       !  first,
 3120   74                       !  last,
 3130   75                       !  next: integer;
 3140   76                       !  name: alfa;
 3150   77                       !  data: ARRAY (1..80) OF char;
 3160   78                       END (* opbuftype *);
 3170   79            
 3180   80          VAR
 3190   81            opref: reference;
 3200   82            opbuf: opbuftype;
 3210   83            i: integer;
 3220   84             
\f

listi       81.06.03.   17.10.                                                    page     5

 4010   85          BEGIN
 4020   86    1     ! z.opsem:= ps;
 4030   87    2     ! 
 4040   88    3     ! WHILE openpool(z.testoutpool) DO
 4050   89    4     !   BEGIN
 4060   90    5     !   ! alloc (opref, z.testoutpool, z.testoutsem);
 4070   91    6     !   ! opref^.u1:= 2;
 4080   92    7     !   ! 
 4090   93    8     !   ! LOCK opref AS opbuf: opbuftype DO
 4100   94    9     !   !   WITH opbuf DO
 4110   95   10     !   !     BEGIN
 4120   96   11     !   !     ! first:= 6+alfalength;
 4130   97   12     !   !     ! next:= 1;
 4140   98   13     !   !     ! 
 4150   99   14     !   !     ! name:= modulename;
 4160  100   15     !   !     END (* with opbuf do *);
 4170  101   16     !   ! return(opref);
 4180  102   17     !   END; (* while openpool *)
 4190  103   18     END (* testopen *);
 4200  104          
 4210  105           
\f

listi       81.06.03.   17.10.                                                    page     6

 5010  106          
 5020  107        PREFIX testout;
 5030  108          
 5040  109            (*****************************************************************
 5050  110            *
 5060  111            * function:    this procedure is used to produce testoutput to
 5070  112            *              the operators console from within a pascal-80
 5080  113            *              process.
 5090  114            *
 5100  115            * externals:   none
 5110  116            *
 5120  117            * environment: testenv
 5130  118            *
 5140  119            * note:        the used zone must be opened by a call of the
 5150  120            *              procedure "open".
 5160  121            *
 5170  122            * programmed may 1980 by wib and stb.
 5180  123            *
 5190  124            ******************************************************************)
 5200  125          
 5210  126           
\f

listi       81.06.03.   17.10.                                                    page     7

 6010  127          PROCEDURE testout(VAR z:zone; text:alfa; i:integer);
 6020  128              (* the procedure writes the text followed by the value of i
 6030  129              on the operator console.
 6040  130              
 6050  131              example:
 6060  132              the call:
 6070  133              _    i:=7;
 6080  134              _    testout(z, "value is    ",i);
 6090  135              yields the following output:
 6100  136              _    value is       7
 6110  137              *)
 6120  138            
 6130  139          TYPE
 6140  140            opbuftype = RECORD
 6150  141                        !  first, last, next: integer;
 6160  142                        !  name: alfa;
 6170  143                        !  data: ARRAY(1..80) OF char;
 6180  144                        END;
 6190  145            
 6200  146          VAR
 6210  147            opbuf: opbuftype;
 6220  148            opref: reference;
 6230  149            
 6240  150             
\f

listi       81.06.03.   17.10.                                                    page     8

 7010  151            PROCEDURE outchar(ch: char);
 7020  152                (* writes ch into the output buffer *)
 7030  153            BEGIN
 7040  154    1       ! LOCK opref AS opbuf: opbuftype DO
 7050  155    2       !   WITH opbuf DO
 7060  156    3       !     BEGIN
 7070  157    4       !     ! data(next):= ch;
 7080  158    5       !     ! next:= next + 1;
 7090  159    6       !     END;
 7100  160    7       ! 
 7110  161    8       END (* outchar *);
 7120  162             
\f

listi       81.06.03.   17.10.                                                    page     9

 8010  163            PROCEDURE outinteger(int,positions:integer);
 8020  164                (* writes the integer "int" into opbuf starting at
 8030  165                "outputpoint", which is updated accordingly *)
 8040  166            CONST
 8050  167              maxpos = 20; (* max number of positions in layout *)
 8060  168              base = 10;
 8070  169              
 8080  170            VAR
 8090  171              digits:ARRAY(1..maxpos) OF char;
 8100  172              used,i:integer;
 8110  173              negative:boolean;
 8120  174              
 8130  175            BEGIN
 8140  176    1       ! used:= 1;
 8150  177    2       ! 
 8160  178    3       !   (* first we initialise the digits array *)
 8170  179    4       ! FOR i:=1 TO maxpos DO digits(i):=sp;
 8180  180    5       ! 
 8190  181    6       ! i:=maxpos;
 8200  182    7       ! 
 8210  183    8       ! negative:= int<0;
 8220  184    9       ! 
 8230  185   10       ! REPEAT
 8240  186   11       ! !   (* now we unpack the digits backwards and put them
 8250  187   12       ! !   into the digits array *)
 8260  188   13       ! ! 
 8270  189   14       ! ! digits(i):= chr(abs(int MOD base) + ord("0"));
 8280  190   15       ! ! int:=int DIV base;
 8290  191   16       ! ! i:=i-1;
 8300  192   17       ! UNTIL (i=1) OR (int=0);
 8310  193   18       ! 
 8320  194   19       ! IF negative THEN
 8330  195   20       !   BEGIN
 8340  196   21       !   ! digits(i):="-";
 8350  197   22       !   ! i:=i-1;
 8360  198   23       !   END;
 8370  199   24       ! 
 8380  200   25       ! used:=maxpos-i;
 8390  201   26       ! 
 8400  202   27       ! IF int <> 0 THEN digits(1):= "*";
 8410  203   28       ! 
 8420  204   29       !   (* i næste linje skal 20 erstattes af maxpos !!!!!!!!!!!!!!!!!!!!!!!*)
 8430  205   30       ! IF (NOT (positions IN (. 1 .. 20 .)) )
 8440  206   31       !   OR (positions < used) THEN
 8450  207   32       !   positions:=used;
 8460  208   33       ! 
\f

listi       81.06.03.   17.10.                                                    page    10

 8470  209   34       ! FOR i:=maxpos+1-positions TO maxpos DO
 8480  210   35       !   outchar( digits(i) );
 8490  211   36       ! 
 8500  212   37       END (* out integer *);
 8510  213            
 8520  214            
 8530  215             
\f

listi       81.06.03.   17.10.                                                    page    11

 9010  216            PROCEDURE outstring(text: alfa);
 9020  217                (* writes the text into opbuf starting at opbuf.next
 9030  218                which is updated accordingly *)
 9040  219            VAR
 9050  220              i: integer;
 9060  221            BEGIN
 9070  222    1       ! FOR i:=1 TO alfalength DO
 9080  223    2       !   outchar( text(i) );
 9090  224    3       ! 
 9100  225    4       END (* out string *);
 9110  226             
\f

listi       81.06.03.   17.10.                                                    page    12

10010  227          BEGIN
10020  228    1     !   (**********************************************
10030  229    2     !   *
10040  230    3     !   *       m a i n  p r o g r a m
10050  231    4     !   *
10060  232    5     !   ************************************************)
10070  233    6     ! 
10080  234    7     ! wait(opref, z.testoutsem);
10090  235    8     ! 
10100  236    9     ! LOCK opref AS opbuf: opbuftype DO
10110  237   10     !   opbuf.next:= 1;
10120  238   11     ! outstring(text);
10130  239   12     ! outinteger(i,4);
10140  240   13     ! outchar(nl);
10150  241   14     ! LOCK opref AS opbuf: opbuftype DO
10160  242   15     !   WITH opbuf DO
10170  243   16     !     last:=next+16;
10180  244   17     ! 
10190  245   18     ! opref^.u2:= 0;
10200  246   19     ! signal(opref, z.opsem^);
10210  247   20     ! 
10220  248   21     ! wait(opref,z.testoutsem);
10230  249   22     ! return(opref);
10240  250   23     ! 
10250  251   24     END (* test out *);
10260  252          
10270  253           
\f

listi       81.06.03.   17.10.                                                    page    13

11010  254          
11020  255        PREFIX check5;
11030  256          
11040  257          
11050  258          FUNCTION check5(
11060  259            VAR msg: reference; (* reference to telegram in question *)
11070  260            dowhat: what           (* what must be generate or check *)
11080  261            ): boolean;            (* false if check says fault *)
11090  262            
11100  263              (********************************************************************
11110  264              *
11120  265              * function:   the check5 module either inserts a calcula-
11130  266              *             ted checksum into a telegram or controls the tele-
11140  267              *             gram with the aid of the checksum.
11150  268              *
11160  269              * externals:  none.
11170  270              *
11180  271              * parameters: msg is the reference to the telegram to check or to generate
11190  272              *             checkbits in
11200  273              *             dowhat says insert a checksum (=generate) or control the
11210  274              *             telegram of the buffer (=check).
11220  275              *
11230  276              * semaphores: none.
11240  277              *
11250  278              * version:     1/04
11260  279              *
11270  280              * programmed  may 1980 by srs
11280  281              *
11290  282              ********************************************************************)
11300  283            
11310  284             
\f

listi       81.06.03.   17.10.                                                    page    14

12010  285          TYPE
12020  286            
12030  287            telegram_type = SET OF 0..15;   (* 16 bits *)
12040  288            
12050  289              (*   0 1 2 3 4 5 6 7 8 9 A B C D E F      *
12060  290              *   I---------------I---I-I---------I     *
12070  291              *   I     data       opc l   check  I     *
12080  292              *   I---------------I---I-I---------I     *
12090  293              *                                         *
12100  294              *                                         *)
12110  295            
12120  296            
12130  297          VAR
12140  298            check_telegram ,
12150  299            calculated_sum ,
12160  300            add_to_sum     : telegram_type;
12170  301            bit_c5         ,
12180  302            bitno          : integer;
12190  303            
12200  304            
12210  305             
\f

listi       81.06.03.   17.10.                                                    page    15

13010  306            FUNCTION getbit( i: integer ): telegram_type;
13020  307                (* Here we have the checkcode table *)
13030  308            BEGIN
13040  309    1       ! CASE i OF
13050  310    2       ! ! 0:  getbit:= (. 11..15 .);            (* 11111 *)
13060  311    3       ! ! 1:  getbit:= (. 12..15 .);            (* 01111 *)
13070  312    4       ! ! 2:  getbit:= (. 11,13,15 .);          (* 10101 *)
13080  313    5       ! ! 3:  getbit:= (. 13..15 .);            (* 00111 *)
13090  314    6       ! ! 4:  getbit:= (. 11,12,14,15 .);       (* 11011 *)
13100  315    7       ! ! 5:  getbit:= (. 12,14,15 .);          (* 01011 *)
13110  316    8       ! ! 6:  getbit:= (. 11,14,15 .);          (* 10011 *)
13120  317    9       ! ! 7:  getbit:= (. 11,12,13,15 .);       (* 11101 *)
13130  318   10       ! ! 8:  getbit:= (. 12,13,15 .);          (* 01101 *)
13140  319   11       ! ! 9:  getbit:= (. 11,13,14,15 .);       (* 10111 *)
13150  320   12       ! ! 10: getbit:= (. 11,12,15 .)           (* 11001 *)
13160  321   13       ! END (* case *);
13170  322   14       END (* of getbit function *);
13180  323            
13190  324            
13200  325             
\f

listi       81.06.03.   17.10.                                                    page    16

14010  326            FUNCTION lxor( a, b: telegram_type ): telegram_type;
14020  327              
14030  328                (************************************************************
14040  329                * This Exclusive OR function operates on 16-bits at the     *
14050  330                * same time by use of set operations.                       *
14060  331                ************************************************************)
14070  332              
14080  333            BEGIN
14090  334    1       ! lxor:= (a+b)-(a*b);
14100  335    2       END (* of xor function *);
14110  336            
14120  337             
\f

listi       81.06.03.   17.10.                                                    page    17

15010  338          BEGIN        (**************************************
15020  339    1     !              ***                                ***
15030  340    2     !              *** the body of the check5 module  ***
15040  341    3     !              ***                                ***
15050  342    4     !              **************************************)
15060  343    5     ! 
15070  344    6     ! calculated_sum:= (. 12,14 .);    (* (12,14) corresponds to 01010 *)
15080  345    7     ! 
15090  346    8     ! LOCK msg AS telegram: telegram_type DO
15100  347    9     !   BEGIN
15110  348   10     !   ! 
15120  349   11     !   !   (***************************************************
15130  350   12     !   !   * the meaning of the next for-statement:
15140  351   13     !   !   *  step through the telegram. for every one bit
15150  352   14     !   !   *  change the checksum with a tabular value belon-
15160  353   15     !   !   *  ging to that bitposition.
15170  354   16     !   !   ***************************************************)
15180  355   17     !   ! 
15190  356   18     !   ! FOR bitno:=0 TO 10 DO
15200  357   19     !   !   IF bitno IN telegram THEN
15210  358   20     !   !     BEGIN
15220  359   21     !   !     ! add_to_sum:= getbit( bitno );
15230  360   22     !   !     ! calculated_sum:= lxor( calculated_sum, add_to_sum )
15240  361   23     !   !     END;
15250  362   24     !   ! 
15260  363   25     !   !   (*********** adjust bit_c5 ***********************)
15270  364   26     !   ! 
15280  365   27     !   ! bit_c5 := 0;
15290  366   28     !   ! FOR bitno := 11 TO 15 DO
15300  367   29     !   !   IF bitno IN calculated_sum THEN
15310  368   30     !   !     bit_c5 := bit_c5 + 1;
15320  369   31     !   ! 
15330  370   32     !   ! IF (bit_c5 MOD 2) = 0 THEN
15340  371   33     !   !   calculated_sum := calculated_sum - (. 15 .)
15350  372   34     !   ! ELSE
15360  373   35     !   !   calculated_sum := calculated_sum + (. 15 .);
15370  374   36     !   ! 
15380  375   37     !   !   (****** the generated telegram ******************)
15390  376   38     !   ! 
15400  377   39     !   ! check_telegram := (telegram - (. 11..15 .)) + calculated_sum;
15410  378   40     !   ! 
15420  379   41     !   ! check5:= true;
15430  380   42     !   ! 
15440  381   43     !   ! IF dowhat = generate THEN        (* apply the checksum to the telegram *)
15450  382   44     !   !   telegram := check_telegram
15460  383   45     !   ! ELSE                         (* check the telegram *)
\f

listi       81.06.03.   17.10.                                                    page    18

15470  384   46     !   !   BEGIN
15480  385   47     !   !   ! add_to_sum:= lxor( telegram, check_telegram );
15490  386   48     !   !   ! IF add_to_sum = (..) THEN
15500  387   49     !   !   !   check5:= true
15510  388   50     !   !   ! ELSE
15520  389   51     !   !   !   check5:= false;
15530  390   52     !   !   END
15540  391   53     !   END (* of lock statement *)
15550  392   54     END (* of check5 function *);
15560  393          
15570  394           
\f

listi       81.06.03.   17.10.                                                    page    19

16010  395          
16020  396        PREFIX count;
16030  397          
16040  398            (*------------------------- count ---------------------------------*)
16050  399          
16060  400          PROCEDURE count ( VAR c : integer );
16070  401            
16080  402          VAR   oldmask : boolean;
16090  403            
16100  404            FUNCTION getoflowmask : boolean;
16110  405            EXTERNAL;
16120  406            
16130  407            PROCEDURE setoflowmask ( m: boolean );
16140  408            EXTERNAL;
16150  409            
16160  410          BEGIN
16170  411    1     ! 
16180  412    2     ! oldmask:= getoflowmask;
16190  413    3     ! setoflowmask ( true);       (*  now overflow is harmless   *)
16200  414    4     ! c:= c + 1;
16210  415    5     ! IF c < 0 THEN c:= 0;
16220  416    6     ! setoflowmask ( oldmask)
16230  417    7     ! 
16240  418    8     END;  (*  of count  *)
16250  419           
\f

listi       81.06.03.   17.10.                                                    page    20

17010  420            <*
17020  421            PREFIX swap_address;
17030  422            
17040  423            (*---------------------- swap_address ---------------------------------*)
17050  424            
17060  425            PROCEDURE swap_address(
17070  426            VAR
17080  427            address1     ,
17090  428            address2     : alarmnetaddr
17100  429            );
17110  430            
17120  431            (*------------------------------------------------------------------------
17130  432            . function    : Swaps the content of two alarm net addresses
17140  433            .
17150  434            --------------------------------------------------------------------------*)
17160  435            
17170  436            
17180  437            VAR
17190  438            work_address  : alarmnetaddr;
17200  439            
17210  440            BEGIN
17220  441            
17230  442            work_address:= address2;
17240  443            address2:= address1;
17250  444            address1:= work_address
17260  445            
17270  446            END; (* procedure swap_address *)
17280  447            *>
17290  448           
\f

listi       81.06.03.   17.10.                                                    page    21

18010  449        PREFIX receipt_message;
18020  450          
18030  451            (*---------------------- receipt_message -------------------------------*)
18040  452          
18050  453          PROCEDURE receipt_message(
18060  454            VAR
18070  455            msg          : reference;
18080  456            VAR
18090  457            receiver_sem : !sempointer;
18100  458            route        : byte;
18110  459            noofby_modif : integer;
18120  460            result_code  : result_range
18130  461            );
18140  462            
18150  463              (*-------------------------------------------------------------------------
18160  464              .
18170  465              . function    : Swaps the addresses of receiver and sender and updates the
18180  466              .               result of the alarmlabel.
18190  467              .               Updates route according to call and adds 1 to the operation
18200  468              .               code, forming a receipt.
18210  469              .               No_of_by is updated with noofby_modif.
18220  470              .               The message is signalled to the receiver semaphore.
18230  471              .
18240  472              --------------------------------------------------------------------------*)
18250  473            
18260  474          VAR
18270  475            work_addr     : alarmnetaddr;
18280  476            
18290  477              <*
18300  478              PROCEDURE swap_address( VAR addr1, addr2: alarmnetaddr );
18310  479              EXTERNAL;
18320  480              *>
18330  481            
18340  482          BEGIN
18350  483    1     ! 
18360  484    2     ! LOCK msg AS locvar: alarmlabel DO
18370  485    3     !   WITH msg^, locvar DO
18380  486    4     !     BEGIN
18390  487    5     !     ! 
18400  488    6     !     ! u3:= route;
18410  489    7     !     ! 
18420  490    8     !     ! IF ( u4 < max_byte ) THEN
18430  491    9     !     !   u4:= u4 + receipt;
18440  492   10     !     ! 
18450  493   11     !     ! no_of_by:= no_of_by + noofby_modif;
18460  494   12     !     !   <*
\f

listi       81.06.03.   17.10.                                                    page    22

18470  495   13     !     !   swap_address( rec, send );
18480  496   14     !     !   *>
18490  497   15     !     ! work_addr:= rec;
18500  498   16     !     ! rec:= send;
18510  499   17     !     ! send:= work_addr;
18520  500   18     !     ! 
18530  501   19     !     ! result:= result_code
18540  502   20     !     ! 
18550  503   21     !     END; (* lock msg *)
18560  504   22     ! 
18570  505   23     ! signal( msg, receiver_sem^ )
18580  506   24     ! 
18590  507   25     END; (* procedure receipt_message *)
18600  508           
\f

listi       81.06.03.   17.10.                                                    page    23

19010  509        PREFIX reject_message;
19020  510          
19030  511            (*--------------------- reject_message ---------------------------------*)
19040  512          
19050  513          PROCEDURE reject_message(
19060  514            VAR
19070  515            msg          : reference;
19080  516            VAR
19090  517            receiver_sem : !sempointer;
19100  518            route        : byte;
19110  519            sender_macro : macroaddr;
19120  520            sender_micro : integer;
19130  521            result_code  : result_range
19140  522            );
19150  523            
19160  524              (*-------------------------------------------------------------------------
19170  525              .
19180  526              . function    : Handles a unrecognizable message. The ( supposed ) original label is
19190  527              .               copied to the data part and a new label, where receiver
19200  528              .               is the original sender and sender the address of the
19210  529              .               incarnation in question, is established.
19220  530              .               The message is released in case of size troubles, otherwise
19230  531              .               it's signalled to the receiver semaphore.
19240  532              .
19250  533              --------------------------------------------------------------------------*)
19260  534            
19270  535          TYPE
19280  536            garbage_type  = ARRAY( 0..1 ) OF alarmlabel;
19290  537            
19300  538          BEGIN
19310  539    1     ! 
19320  540    2     ! WITH msg^ DO
19330  541    3     !   IF ( size < ( label_size + 2 ) ) THEN
19340  542    4     !     release( msg )
19350  543    5     !   ELSE
19360  544    6     !     BEGIN
19370  545    7     !     ! 
19380  546    8     !     ! LOCK msg AS locvar: garbage_type DO
19390  547    9     !     !   BEGIN
19400  548   10     !     !   ! 
19410  549   11     !     !   ! locvar( 1 ):= locvar( 0 );
19420  550   12     !     !   ! 
19430  551   13     !     !   ! WITH locvar( 0 ) DO
19440  552   14     !     !   !   BEGIN
19450  553   15     !     !   !   ! 
19460  554   16     !     !   !   ! no_of_by:= 2 * label_size + 2;
\f

listi       81.06.03.   17.10.                                                    page    24

19470  555   17     !     !   !   ! 
19480  556   18     !     !   !   ! rec:= send;
19490  557   19     !     !   !   ! 
19500  558   20     !     !   !   ! send.macro:= sender_macro;
19510  559   21     !     !   !   ! send.micro:= sender_micro;
19520  560   22     !     !   !   ! 
19530  561   23     !     !   !   ! op_code:= #h12;
19540  562   24     !     !   !   ! result:= result_code
19550  563   25     !     !   !   ! 
19560  564   26     !     !   !   END;
19570  565   27     !     !   ! 
19580  566   28     !     !   ! WITH locvar( 1 ) DO
19590  567   29     !     !   !   op_code:= u4;
19600  568   30     !     !   ! 
19610  569   31     !     !   ! u3:= route;
19620  570   32     !     !   ! u4:= #h12
19630  571   33     !     !   ! 
19640  572   34     !     !   END;
19650  573   35     !     ! 
19660  574   36     !     ! signal( msg, receiver_sem^ )
19670  575   37     !     ! 
19680  576   38     !     END
19690  577   39     !     
19700  578   40     END; (* procedure reject_message *)
19710  579           
\f

listi       81.06.03.   17.10.                                                    page    25

20010  580          .
20020  581          
\f

listi       81.06.03.   17.10.                                                    page    26

           0  183   192   202   245   287*  310:  356   365   370   415   415   536*  549   551 
           1   77*   97   143*  158   171*  176   179   191   192   197   202   205   209   222   237 
              311:  368   414   536*  549   566 
           2   14*   91   312:  370   541   554   554 
           3   15*  313:
           4   50*  239   314:
           5   12*  315:
           6   96   316:
           7   13*  317:
           8  318:
           9  319:
          10  168*  320:  356 
          11  310   312   314   316   317   319   320   366   377 
          12   14*   15*  311   314   315   317   318   320   344 
          13  312   313   317   318   319 
          14  314   315   316   319   344 
          15  287*  310   311   312   313   314   315   316   317   318   319   320   366   371   373 
              377 
          16   14*   15*  243 
          20  167*  205 
          80   77*  143*
a             326*  334   334 
abs           189 
add_to_sum    300*  359=  360   385=  386 
alarmlabel    484   536*
alarmnetaddr  475*
alfa           68*   76*  127*  142*  216*
alfalength     96   222 
alloc          90 
answer         10*   33    44*   59 
as             26:   57:   93:  154:  236:  241:  346:  484:  546:
b             326*  334   334 
base          168*  189   190 
bitno         302*  356=  357   359   366=  367 
bit_c5        301*  365=  368=  368   370 
boolean       173*  261*  402*  404*  407*
buf            26:   26    57:   57 
byte          458*  518*
c             400*  414=  414   415   415=
calculated_sum                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              299*  344=  360=  360   367   371=  371   373=  373   377 
ch            151*  157 
char           77*  143*  151*  171*
check5        255*  258*  379=  387=  389=
\f

listi       81.06.03.   17.10.                                                    page    27

check_telegram                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              298*  377=  382   385 
chr           189 
count          17*   28=   53*   57=  396*  400*
data           77*  143*  157=
digits        171*  179=  189=  196=  202=  210 
dowhat        260*  381 
external      405*  408*
false         389 
first          73*   96=  141*
garbage_type  536*  546 
generate      381 
getbit        306*  310=  311=  312=  313=  314=  315=  316=  317=  318=  319=  320=  359 
getoflowmask  404*  412 
h12           561   570 
hc4            51*
i              83*  127*  172*  179=  179   181=  189   191=  191   192   196   197=  197   200   209=
              210   220*  222=  223   239   306*  309 
index          17*   53*
int           163*  183   189   190=  190   192   202 
integer         8*   17*   18*   42*   53*   75*   83*  127*  141*  163*  172*  220*  302*  306*  400*
              459*  520*
label_size    541   554 
last           74*  141*  243=
lock           26:   57:   93:  154:  236:  241:  346:  484:  546:
locvar        484:  485   546:  549=  549   551   566 
lxor          326*  334=  360   385 
m             407*
macro         558=
macroaddr     519*
maxpos        167*  171*  179   181   200   209   209 
max_byte      490 
micro         559=
modulename     68*   99 
msg             5*   21    23    25    26:   31    32    33    41*   55    56    57:   58    59   259*
              346:  455*  484:  485   505   515*  540   542   546:  574 
name           76*   99=  142*
negative      173*  183=  194 
next           75*   97=  141*  157   158=  158   237=  243 
nl            240 
noofby_modif  459*  493 
no_of_by      493=  493   554=
obj            17*   29=
object          8*   18*   29    53*
\f

listi       81.06.03.   17.10.                                                    page    28

oldmask       402*  412=  416 
op1202         14*   22 
op1203         15*   25 
op1204         51*   56 
opbuf          82*   93:   94   147*  154:  155   236:  237   241:  242 
opbuftype      72*   82*   93   140*  147*  154   236   241 
openpool       88 
opref          81*   90    91    93:  101   148*  154:  234   236:  241:  245   246   248   249 
opsem          86=  246 
op_code       561=  567=
ord           189 
outchar       151*  210   223   240 
outinteger    163*  239 
outstring     216*  238 
positions     163*  205   206   207=  209 
prefix          2*   38*   64*  107*  255*  396*  449*  509*
ps             69*   86 
push           31 
rec           497   498=  556=
receipt       491 
receipt_message                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              449*  453*
receiver_sem  457*  505   517*  574 
reference       6*   41*   81*  148*  259*  455*  515*
reject_message                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              509*  513*
release       542 
result        501=  562=
result_code   460*  501   521*  562 
result_range  460*  521*
return        101   249 
route         458*  488   518*  569 
rwcontrol      13*   20 
semaphore      10*   44*   69*
sempointer    457*  517*
send          498   499=  556   558   559 
sender_macro  519*  558 
sender_micro  520*  559 
setoflowmask  407*  413   416 
signal         32    58   246   505   574 
size          541 
sp            179 
telegram      346:  357   377   382=  385 
telegram_type                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              287*  300*  306*  326*  326*  346 
\f

listi       81.06.03.   17.10.                                                    page    29

testopen       64*   66*
testout       107*  127*
testoutpool    88    90 
testoutsem     90   234   248 
text          127*  216*  223   238 
ticks           7*   28    42*   57 
timeout_sem     9*   32    43*   58 
timerbook       2*    4*
timers         18*
timerupdate    38*   40*
timer_msg       6*   20    21    22    31 
true          379   387   413 
u1             20=   23=   55=   91=
u2            245=
u3             21=   21   488=  569=
u4             22=   25=   56=  490   491=  491   567   570=
updates        17*   26    53*   57 
used          172*  176=  200=  206   207 
wait           33    59   234   248 
what          260*
work_addr     475*  497=  499 
write          50*   55 
writecontrol   12*   23 
z              67*   86    88    90    90   127*  234   246   248 
zone           67*  127*
\f

listi       81.06.03.   17.10.                                                    page    30

ARRAY              4
BEGIN             25
CASE               1
CONST              3
DIV                1
DO                23
ELSE               4
END               31
FOR                5
FUNCTION           4
IF                11
IN                 3
MOD                2
NOT                1
OF                 6
OR                 2
PROCEDURE         11
RECORD             5
REPEAT             1
SET                1
THEN              11
TO                 5
TYPE               6
UNTIL              1
VAR               19
WHILE              1
WITH               8
 ts lib
81.06.03.      17.11.                         pascal80     version 1981.04.01


   name        headline beginline endline  appetite(words) 

   timerbook       12        20      34  :       7            
   timerupdate     50        55      60  :       7            
   testopen        72        86     103  :      70            
   outchar        153       154     161  :       9            
   outinteger     167       176     212  :      29            
   outstring      220       222     225  :      17            
   testout        140       234     251  :      69            
   getbit         308       310     322  :       4            
   lxor           333       334     335  :       7            
   check5         287       344     392  :      29            
   count          402       412     416  :       6            
   receipt_mess   475       484     505  :      13            
   reject_messa   536       540     578  :      15            

 code: 0 . 296  = 296 bytes


end of PASCAL80 compilation 

end
blocksread = 53
▶EOF◀