|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 37632 (0x9300)
Types: TextFile
Names: »tsliblst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »tsliblst«
\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◀