|
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◀