|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 54528 (0xd500) Types: TextFileVerbose Names: »ncperlst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »ncperlst«
\f ncperlst 81.06.09. 15.17. page 1 10 1 \f ncperlst 81.06.09. 15.17. page 2 1010 2 1020 3 PROCESS ncsupervisor ( 1030 4 opsem : sempointer; (* operator *) 1040 5 VAR main_sem : !ts_pointer; (* my input semaphore *) 1050 6 VAR free_sem : !ts_pointer; (* nc buffer pool *) 1060 7 VAR done : !ts_pointer; (* answer from timeout *) 1070 8 VAR net_sem, (* netconnector *) 1080 9 timeout_sem : !sempointer (* timeout module *) 1090 10 ); 1100 11 1110 12 CONST 1120 13 1130 14 version = "vers p.14 /"; 1140 15 1150 16 \f ncperlst 81.06.09. 15.17. page 3 2010 17 2020 18 CONST 2030 19 2040 20 2050 21 no_nc_talk = 30; (* number of buffers for nc *) 2060 22 last_node = 2; (* max number of ts addresses *) 2070 23 max_node = last_node+1; 2080 24 dc = 0; 2090 25 2100 26 copy_code = #h10; 2110 27 refuse_code = #h12; 2120 28 dc_down = #h20; 2130 29 dc_up = #h21; 2140 30 nc_down = #h22; 2150 31 nc_up = #h23; 2160 32 ts_down = #h24; 2170 33 ts_up = #h25; 2180 34 tablerequest= #hae; 2190 35 var_code = #hb0; 2200 36 var_answ = #hb1; 2210 37 nodetest_code=#hc0; 2220 38 nodetest_answ=#hc1; 2230 39 connect_code= #hc8; 2240 40 connect_answ= #hc9; 2250 41 finis_code = #hce; 2260 42 2270 43 words = size_listen - 1 - ( label_size DIV 2); 2280 44 maxbytes = words*2; 2290 45 refuse_length = 2*label_size+2; 2300 46 bc_length = label_size + 4 + 2; 2310 47 ae_length = label_size + 4; 2320 48 test_length = label_size + 10; 2330 49 2340 50 delay1 = 250; (* 1 sec = 1000 m sec *) 2350 51 delay2 = 2; 2360 52 margin = 5; (* timeout tolerance *) 2370 53 read_clock = 2; 2380 54 writetimer = 6; 2390 55 2400 56 write = 2; 2410 57 \f ncperlst 81.06.09. 15.17. page 4 3010 58 3020 59 TYPE 3030 60 3040 61 status = ( down, starting, sleep, ready ); 3050 62 3060 63 node_range = 0..max_node; 3070 64 3080 65 flawshape = PACKED RECORD (* for 1.0 and 1.2 *) 3090 66 ! head, 3100 67 ! data: alarmlabel 3110 68 END; 3120 69 3130 70 3140 71 note = PACKED RECORD (* for 2.xx and 10.14 *) 3150 72 ! head: alarmlabel; 3160 73 ! comp: alarmnetaddr; 3170 74 ! cnt : integer 3180 75 END; 3190 76 3200 77 3210 78 form11= PACKED RECORD (* for 11.0 and 11.1 *) 3220 79 ! head: alarmlabel; 3230 80 ! address: macroaddr; 3240 81 END; 3250 82 3260 83 params = RECORD 3270 84 ! n1, n2, n3: integer; 3280 85 ! rec : alarmnetaddr; 3290 86 END; 3300 87 3310 88 testshape = PACKED RECORD (* for 12.0, 12.1, 12.8, 12.9 *) 3320 89 ! head: alarmlabel; 3330 90 ! testno, peri : integer; 3340 91 ! data: ARRAY ( 3..words) OF integer; 3350 92 END; 3360 93 3370 94 3380 95 3390 96 \f ncperlst 81.06.09. 15.17. page 5 4010 97 4020 98 VAR 4030 99 4040 100 tickmess : pool 1; (* 1 sec ticks *) 4050 101 clockpool: pool 1 OF ts_time; (* timing *) 4060 102 bufferpool: pool no_nc_talk OF testshape; 4070 103 4080 104 clock_msg, 4090 105 ms, msg : reference; 4100 106 4110 107 n, ts, nodes : node_range := 0; 4120 108 4130 109 index : ARRAY ( node_range) OF node_range; 4140 110 addr : ARRAY ( node_range) OF alarmnetaddr; 4150 111 state : ARRAY ( node_range) OF status; 4160 112 tests : ARRAY ( node_range) OF integer; 4170 113 4180 114 ar, 4190 115 who, (* message receiver *) 4200 116 here : alarmnetaddr := (* my addr *) 4210 117 alarmnetaddr(macroaddr(0,0,0),0); 4220 118 4230 119 from : macroaddr; (* message sender *) 4240 120 4250 121 periode: integer:= 5*60; (* timeout periode *) 4260 122 rest_time : integer:= 5*60; (* rest # sec to timeout *) 4270 123 4280 124 np, l, k, nr, ns, 4290 125 h : integer; 4300 126 cause : result_range; 4310 127 4320 128 console : zone; 4330 129 4340 130 4350 131 4360 132 PROCEDURE readram ( VAR w: byte; adr: integer); 4370 133 EXTERNAL; 4380 134 4390 135 4400 136 PROCEDURE writeram ( adr, w: integer); 4410 137 EXTERNAL; 4420 138 4430 139 \f ncperlst 81.06.09. 15.17. page 6 5010 140 5020 141 FUNCTION gettime : ts_time; 5030 142 5040 143 TYPE 5050 144 clock_form = RECORD time: ts_time END; 5060 145 5070 146 BEGIN 5080 147 1 ! 5090 148 2 ! signal ( clock_msg, timeout_sem^); 5100 149 3 ! wait ( clock_msg, done.w^); 5110 150 4 ! LOCK clock_msg AS buf: clock_form DO 5120 151 5 ! gettime:= buf.time 5130 152 6 ! 5140 153 7 END; 5150 154 5160 155 5170 156 5180 157 PROCEDURE writetime; 5190 158 VAR t: ts_time; 5200 159 BEGIN 5210 160 1 ! t:= gettime; 5220 161 2 ! testout ( console, "time ", t(0)); 5230 162 3 ! testout ( console, " mm ss ", t(1)); 5240 163 4 END; 5250 164 5260 165 \f ncperlst 81.06.09. 15.17. page 7 6010 166 6020 167 PROCEDURE xmit ( VAR m: reference; u4val: byte ); 6030 168 6040 169 BEGIN 6050 170 1 ! m^.u1:= write; 6060 171 2 ! m^.u3:= nc_route; 6070 172 3 ! m^.u4:= u4val; 6080 173 4 ! signal ( m, net_sem^) 6090 174 5 END; 6100 175 6110 176 6120 177 6130 178 6140 179 6150 180 6160 181 PROCEDURE answer ( 6170 182 VAR m : reference; 6180 183 cause : result_range; 6190 184 oper : byte ); 6200 185 6210 186 BEGIN 6220 187 1 ! LOCK m AS head: alarmlabel DO 6230 188 2 ! WITH head DO 6240 189 3 ! BEGIN 6250 190 4 ! ! rec:= send; 6260 191 5 ! ! send:= here; 6270 192 6 ! ! result:= cause; 6280 193 7 ! ! ts_add:= gettime; 6290 194 8 ! END; 6300 195 9 ! xmit ( m, oper); 6310 196 10 END; 6320 197 6330 198 6340 199 \f ncperlst 81.06.09. 15.17. page 8 7010 200 7020 201 7030 202 PROCEDURE refuse ( VAR m : reference; cause : result_range ); 7040 203 7050 204 BEGIN 7060 205 1 ! 7070 206 2 ! LOCK m AS buf : flawshape DO 7080 207 3 ! WITH buf DO 7090 208 4 ! BEGIN 7100 209 5 ! ! data:= head; 7110 210 6 ! ! data.op_code:= m^.u4; 7120 211 7 ! ! head.no_of_by:= refuse_length; 7130 212 8 ! ! head.rec:= head.send; 7140 213 9 ! ! head.send:= here; 7150 214 10 ! ! head.result:= cause; 7160 215 11 ! ! head.ts_add:= gettime; 7170 216 12 ! ! 7180 217 13 ! ! sensesem ( ms, free_sem.w^); 7190 218 14 ! ! IF NOT nil ( ms) THEN 7200 219 15 ! ! BEGIN 7210 220 16 ! ! ! LOCK ms AS new : flawshape DO 7220 221 17 ! ! ! BEGIN 7230 222 18 ! ! ! ! new:= buf; 7240 223 19 ! ! ! ! new.head.rec:= addr(dc); 7250 224 20 ! ! ! END; 7260 225 21 ! ! ! xmit ( ms, copy_code); 7270 226 22 ! ! END; 7280 227 23 ! ! 7290 228 24 ! END; 7300 229 25 ! xmit ( m, refuse_code); 7310 230 26 ! 7320 231 27 END; 7330 232 7340 233 7350 234 \f ncperlst 81.06.09. 15.17. page 9 8010 235 8020 236 PROCEDURE insert ( new: macroaddr; newstate: status ); 8030 237 8040 238 VAR t: node_range; 8050 239 BEGIN 8060 240 1 ! 8070 241 2 ! IF ( new.dc_addr = here.macro.dc_addr ) AND 8080 242 3 ! ( new.nc_addr = here.macro.nc_addr ) AND 8090 243 4 ! ( new.ts_addr <> 0 ) THEN 8100 244 5 ! BEGIN (* new is one of my ts *) 8110 245 6 ! ! addr(nodes+1).macro:= new; 8120 246 7 ! ! t:= index(new.ts_addr); 8130 247 8 ! ! IF t = max_node THEN 8140 248 9 ! ! BEGIN 8150 249 10 ! ! ! t:= nodes+1; 8160 250 11 ! ! ! index(new.ts_addr):= t; 8170 251 12 ! ! ! nodes:= t; 8180 252 13 ! ! END; 8190 253 14 ! ! IF msg^.u4 = ts_down THEN state(t):= down ELSE 8200 254 15 ! ! IF msg^.u4 = ts_up THEN state(t):= ready ELSE 8210 255 16 ! ! state(t):= newstate; 8220 256 17 ! END; 8230 257 18 ! 8240 258 19 END; 8250 259 8260 260 8270 261 \f ncperlst 81.06.09. 15.17. page 10 9010 262 PROCEDURE update ( VAR msg: reference); 9020 263 9030 264 BEGIN (* 11.0 from dc *) 9040 265 1 ! 9050 266 2 ! LOCK msg AS buf: form11 DO 9060 267 3 ! WITH buf DO 9070 268 4 ! BEGIN 9080 269 5 ! ! insert ( address, starting); 9090 270 6 ! ! here:= buf.head.rec; 9100 271 7 ! END; 9110 272 8 ! answer ( msg, accepted, var_answ); 9120 273 9 ! 9130 274 10 END; 9140 275 9150 276 \f ncperlst 81.06.09. 15.17. page 11 10010 277 10020 278 10030 279 PROCEDURE first ( VAR m : reference ); 10040 280 10050 281 VAR res : byte; 10060 282 10070 283 BEGIN 10080 284 1 ! 10090 285 2 ! LOCK m AS buf : testshape DO 10100 286 3 ! WITH buf, head DO 10110 287 4 ! BEGIN 10120 288 5 ! ! IF ( m^.u4 = nodetest_code) AND (* 12.0 from dc *) 10130 289 6 ! ! ( rec.macro.ts_addr = 0 ) AND 10140 290 7 ! ! ( send.macro.nc_addr = 0 ) AND 10150 291 8 ! ! ( send.macro.ts_addr = 0 ) THEN 10160 292 9 ! ! BEGIN 10170 293 10 ! ! ! here.macro:= rec.macro; 10180 294 11 ! ! ! periode:= abs ( peri); 10190 295 12 ! ! ! rest_time:= periode; 10200 296 13 ! ! ! addr(dc).macro.dc_addr:= here.macro.dc_addr; 10210 297 14 ! ! ! state(dc):= ready; 10220 298 15 ! ! ! cause:= not_ready; 10230 299 16 ! ! ! res:= nodetest_answ; 10240 300 17 ! ! END ELSE 10250 301 18 ! ! BEGIN 10260 302 19 ! ! ! cause:= unknown_opcode; 10270 303 20 ! ! ! res:= refuse_code; 10280 304 21 ! ! END; 10290 305 22 ! END; 10300 306 23 ! 10310 307 24 ! answer ( m, cause, res); 10320 308 25 ! 10330 309 26 END; 10340 310 10350 311 10360 312 \f ncperlst 81.06.09. 15.17. page 12 11010 313 11020 314 PROCEDURE restart ( where: alarmnetaddr); 11030 315 11040 316 BEGIN (* send 10.14 to dc *) 11050 317 1 ! 11060 318 2 ! wait ( ms, free_sem.w^); 11070 319 3 ! LOCK ms AS buf: note DO 11080 320 4 ! WITH buf, head DO 11090 321 5 ! BEGIN 11100 322 6 ! ! no_of_by:= ae_length; 11110 323 7 ! ! rec:= addr(dc); 11120 324 8 ! ! send:= here; 11130 325 9 ! ! update:= insert_code; 11140 326 10 ! ! result:= accepted; 11150 327 11 ! ! ts_add:= gettime; 11160 328 12 ! ! comp:= where; 11170 329 13 ! END; 11180 330 14 ! xmit ( ms, tablerequest); 11190 331 15 ! 11200 332 16 END; 11210 333 11220 334 \f ncperlst 81.06.09. 15.17. page 13 12010 335 12020 336 12030 337 PROCEDURE broadcast ( 12040 338 operation : byte; (* op code *) 12050 339 who : alarmnetaddr; (* receiver *) 12060 340 where : alarmnetaddr; (* component *) 12070 341 c : integer (* count *) 12080 342 ); 12090 343 12100 344 BEGIN 12110 345 1 ! 12120 346 2 ! wait ( ms, free_sem.w^); 12130 347 3 ! LOCK ms AS buf : note DO 12140 348 4 ! WITH buf, head DO 12150 349 5 ! BEGIN 12160 350 6 ! ! no_of_by:= bc_length; 12170 351 7 ! ! rec:= who; 12180 352 8 ! ! send:= here; 12190 353 9 ! ! update:= insert_code; 12200 354 10 ! ! ts_add:= gettime; 12210 355 11 ! ! comp:= where; 12220 356 12 ! ! cnt:= c 12230 357 13 ! END; 12240 358 14 ! 12250 359 15 ! xmit ( ms, operation) 12260 360 16 ! 12270 361 17 END; 12280 362 12290 363 12300 364 12310 365 \f ncperlst 81.06.09. 15.17. page 14 13010 366 13020 367 PROCEDURE test_all; 13030 368 13040 369 BEGIN (* test all ts *) 13050 370 1 ! 13060 371 2 ! FOR ts:= 1 TO nodes DO 13070 372 3 ! BEGIN 13080 373 4 ! ! 13090 374 5 ! ! IF state(ts) = sleep THEN (* answer missing *) 13100 375 6 ! ! BEGIN 13110 376 7 ! ! ! state(ts):= down; 13120 377 8 ! ! ! FOR n:= 0 TO nodes DO 13130 378 9 ! ! ! IF n <> ts THEN 13140 379 10 ! ! ! broadcast ( ts_down, addr(n), addr(ts), 0); 13150 380 11 ! ! END; 13160 381 12 ! ! 13170 382 13 ! ! wait ( ms, free_sem.w^); 13180 383 14 ! ! LOCK ms AS buf: testshape DO 13190 384 15 ! ! WITH buf, head DO 13200 385 16 ! ! BEGIN 13210 386 17 ! ! ! no_of_by:= test_length; 13220 387 18 ! ! ! rec:= addr(ts); 13230 388 19 ! ! ! send:= here; 13240 389 20 ! ! ! update:= insert_code; 13250 390 21 ! ! ! ts_add:= gettime; 13260 391 22 ! ! ! count ( tests(ts)); 13270 392 23 ! ! ! testno:= tests(ts); 13280 393 24 ! ! ! peri:= periode+margin; 13290 394 25 ! ! END; 13300 395 26 ! ! IF state(ts) = ready THEN state(ts):= sleep; 13310 396 27 ! ! xmit ( ms, nodetest_code) 13320 397 28 ! ! 13330 398 29 ! END 13340 399 30 END; 13350 400 13360 401 13370 402 \f ncperlst 81.06.09. 15.17. page 15 14010 403 14020 404 (*--------------------- exception for nc-sup -------------------------*) 14030 405 14040 406 PROCEDURE exception ( cause : integer); 14050 407 14060 408 VAR switch: byte; 14070 409 14080 410 BEGIN 14090 411 1 ! trace ( cause); (* shows where I was *) 14100 412 2 ! 14110 413 3 ! (* clear resources *) 14120 414 4 ! IF NOT nil ( msg) THEN refuse ( msg, breaked); 14130 415 5 ! IF nil ( ms) THEN wait ( ms, free_sem.w^); 14140 416 6 ! 14150 417 7 ! LOCK ms AS buf: testshape DO 14160 418 8 ! WITH buf, head DO 14170 419 9 ! BEGIN 14180 420 10 ! ! no_of_by:= label_size + 2; 14190 421 11 ! ! send:= addr(dc); 14200 422 12 ! ! testno:= cause 14210 423 13 ! END; 14220 424 14 ! answer ( ms, breaked, finis_code); 14230 425 15 ! 14240 426 16 ! FOR h:= 1 TO no_nc_talk DO 14250 427 17 ! BEGIN 14260 428 18 ! ! wait ( ms, free_sem.w^); 14270 429 19 ! ! release ( ms) 14280 430 20 ! END; 14290 431 21 ! 14300 432 22 ! (* exception loop *) 14310 433 23 ! h:= 0; 14320 434 24 ! REPEAT 14330 435 25 ! ! wait ( msg, main_sem.w^); 14340 436 26 ! ! IF ownertest ( tickmess, msg) THEN 14350 437 27 ! ! release ( msg) 14360 438 28 ! ! ELSE 14370 439 29 ! ! refuse ( msg, breaked); 14380 440 30 ! ! h:= h+1; 14390 441 31 ! ! 14400 442 32 ! ! IF h>2 THEN 14410 443 33 ! ! BEGIN (* autoload *) 14420 444 34 ! ! ! readram ( switch, 10); 14430 445 35 ! ! ! IF switch DIV 16 = 6 THEN 14440 446 36 ! ! ! BEGIN 14450 447 37 ! ! ! ! writeram ( 6,0); writeram ( 5,1); 14460 448 38 ! ! ! ! WHILE true DO ; \f ncperlst 81.06.09. 15.17. page 16 14470 449 39 ! ! ! END 14480 450 40 ! ! END; 14490 451 41 ! UNTIL false 14500 452 42 ! 14510 453 43 END; 14520 454 14530 455 14540 456 \f ncperlst 81.06.09. 15.17. page 17 15010 457 (*-------------------- main program -----------------------------*) 15020 458 15030 459 BEGIN 15040 460 1 ! testopen ( console, own.incname, opsem); 15050 461 2 ! testout ( console, version, al_env_version); 15060 462 3 ! 15070 463 4 ! 15080 464 5 ! (* 15090 465 6 ! for ts:= 0 to max_node do 15100 466 7 ! begin 15110 467 8 ! index(ts):= max_node; 15120 468 9 ! addr(ts).macro:= macroaddr(0,0,0); 15130 469 10 ! addr(ts).micro:= tss_mic_addr; 15140 470 11 ! state(ts):= down; 15150 471 12 ! tests(ts):= 0 15160 472 13 ! end; 15170 473 14 ! addr(dc).micro:= dc_erh_mic_addr; 15180 474 15 ! 15190 475 16 ! for h:= 1 to no_nc_talk do 15200 476 17 ! begin 15210 477 18 ! alloc ( msg, bufferpool, free_sem.s^); 15220 478 19 ! msg^.u3:= nc_route; 15230 479 20 ! signal( msg, free_sem.s^) 15240 480 21 ! end; 15250 481 22 ! *) 15260 482 23 ! alloc ( clock_msg, clockpool, done.s^); 15270 483 24 ! clock_msg^.u1:= read_clock; 15280 484 25 ! clock_msg^.u3:= nc_route; 15290 485 26 ! 15300 486 27 ! (* wait for 12.00 *) 15310 487 28 ! REPEAT 15320 488 29 ! ! wait ( msg, main_sem.w^); 15330 489 30 ! ! CASE msg^.u3 OF 15340 490 31 ! ! ! dummy_route: return ( msg); 15350 491 32 ! ! ! netc_route1: return ( msg); (* refused *) 15360 492 33 ! ! ! netc_route: first ( msg); 15370 493 34 ! ! ! OTHERWISE signal ( msg, net_sem^); 15380 494 35 ! ! END (* case *) 15390 495 36 ! UNTIL state(dc) = ready; 15400 496 37 ! 15410 497 38 ! restart ( here); 15420 498 39 ! alloc ( msg, tickmess, main_sem.s^); 15430 499 40 ! msg^.u1:= writetimer; 15440 500 41 ! msg^.u3:= delay1; 15450 501 42 ! msg^.u4:= delay2; 15460 502 43 ! (* \f ncperlst 81.06.09. 15.17. page 18 15470 503 44 ! sendtimer ( msg); 15480 504 45 ! *) 15490 505 46 ! 15500 506 47 ! (*q trace ( 370); (* only for debug *) 15510 507 48 ! \f ncperlst 81.06.09. 15.17. page 19 16010 508 49 ! 16020 509 50 ! (*------------------------ main loop ----------------------------------*) 16030 510 51 ! 16040 511 52 ! REPEAT 16050 512 53 ! ! 16060 513 54 ! ! wait ( msg, main_sem.w^); 16070 514 55 ! ! 16080 515 56 ! ! IF ownertest ( tickmess, msg) THEN (* timer *) 16090 516 57 ! ! BEGIN 16100 517 58 ! ! ! rest_time:= rest_time - 1; 16110 518 59 ! ! ! msg^.u3:= delay1; 16120 519 60 ! ! ! msg^.u4:= delay2; 16130 520 61 ! ! ! sendtimer ( msg); 16140 521 62 ! ! ! 16150 522 63 ! ! ! IF rest_time <= 0 THEN (* timeout *) 16160 523 64 ! ! ! BEGIN 16170 524 65 ! ! ! ! <* skip UNTIL dc makes nodetest ---------------------------- *> 16180 525 66 ! ! ! ! IF state(dc) <> down THEN 16190 526 67 ! ! ! ! BEGIN 16200 527 68 ! ! ! ! ! state(dc):= down; 16210 528 69 ! ! ! ! ! FOR ts:= 1 TO nodes DO 16220 529 70 ! ! ! ! ! broadcast ( dc_down, addr(ts), addr(dc), 0); 16230 530 71 ! ! ! ! END; 16240 531 72 ! ! ! ! <* ----------------------------------------------------------------*> 16250 532 73 ! ! ! ! test_all; 16260 533 74 ! ! ! ! rest_time:= periode; 16270 534 75 ! ! ! ! 16280 535 76 ! ! ! END (* timeout *) 16290 536 77 ! ! END (* timer *) 16300 537 78 ! ! ELSE 16310 538 79 ! ! 16320 539 80 ! ! IF msg^.u3 = dummy_route THEN 16330 540 81 ! ! return ( msg) 16340 541 82 ! ! ELSE 16350 542 83 ! ! 16360 543 84 ! ! \f ncperlst 81.06.09. 15.17. page 20 17010 544 85 ! ! 17020 545 86 ! ! BEGIN (* other messages *) 17030 546 87 ! ! ! 17040 547 88 ! ! ! LOCK msg AS head: alarmlabel DO 17050 548 89 ! ! ! BEGIN 17060 549 90 ! ! ! ! who:= head.rec; 17070 550 91 ! ! ! ! from:= head.send.macro 17080 551 92 ! ! ! END; 17090 552 93 ! ! ! 17100 553 94 ! ! ! IF who = here THEN (* for me *) 17110 554 95 ! ! ! BEGIN 17120 555 96 ! ! ! ! CASE msg^.u4 OF 17130 556 97 ! ! ! ! ! 17140 557 98 ! ! ! ! ! refuse_code: 17150 558 99 ! ! ! ! ! BEGIN 17160 559 100 ! ! ! ! ! ! LOCK msg AS buf: testshape DO 17170 560 101 ! ! ! ! ! ! WITH buf DO 17180 561 102 ! ! ! ! ! ! IF state(index(peri MOD 64)) <> down THEN 17190 562 103 ! ! ! ! ! ! BEGIN 17200 563 104 ! ! ! ! ! ! ! testout ( console, "msg to ", peri); 17210 564 105 ! ! ! ! ! ! ! testout ( console, "returned ", data(6)); 17220 565 106 ! ! ! ! ! ! END; 17230 566 107 ! ! ! ! ! ! return ( msg) 17240 567 108 ! ! ! ! ! END; 17250 568 109 ! ! ! ! ! 17260 569 110 ! ! ! ! ! #h20..#h23, 17270 570 111 ! ! ! ! ! #h26..#h29: 17280 571 112 ! ! ! ! ! BEGIN (* broadcast *) 17290 572 113 ! ! ! ! ! ! LOCK msg AS buf: note DO 17300 573 114 ! ! ! ! ! ! WITH buf DO 17310 574 115 ! ! ! ! ! ! BEGIN 17320 575 116 ! ! ! ! ! ! ! IF from = addr(dc).macro THEN head.send.micro:= addr(dc).micro; 17330 576 117 ! ! ! ! ! ! ! FOR ts:= 0 TO nodes DO 17340 577 118 ! ! ! ! ! ! ! IF head.send <> addr(ts) THEN 17350 578 119 ! ! ! ! ! ! ! broadcast ( msg^.u4, addr(ts), comp, cnt) 17360 579 120 ! ! ! ! ! ! END; 17370 580 121 ! ! ! ! ! ! return ( msg); 17380 581 122 ! ! ! ! ! END; 17390 582 123 ! ! ! ! ! 17400 583 124 ! ! ! ! ! \f ncperlst 81.06.09. 15.17. page 21 18010 584 125 ! ! ! ! ! 18020 585 126 ! ! ! ! ! ts_down, 18030 586 127 ! ! ! ! ! ts_up : 18040 587 128 ! ! ! ! ! BEGIN (* ts broadcast *) 18050 588 129 ! ! ! ! ! ! LOCK msg AS buf: note DO 18060 589 130 ! ! ! ! ! ! WITH buf, head DO 18070 590 131 ! ! ! ! ! ! BEGIN 18080 591 132 ! ! ! ! ! ! ! 18090 592 133 ! ! ! ! ! ! ! insert ( comp.macro, ready); 18100 593 134 ! ! ! ! ! ! ! 18110 594 135 ! ! ! ! ! ! ! IF from = addr(dc).macro THEN head.send.micro:= addr(dc).micro; 18120 595 136 ! ! ! ! ! ! ! FOR ts:= 0 TO nodes DO 18130 596 137 ! ! ! ! ! ! ! IF head.send<> addr(ts) THEN 18140 597 138 ! ! ! ! ! ! ! broadcast ( msg^.u4, addr(ts), comp, cnt); 18150 598 139 ! ! ! ! ! ! END; 18160 599 140 ! ! ! ! ! ! return ( msg); 18170 600 141 ! ! ! ! ! ! 18180 601 142 ! ! ! ! ! END; 18190 602 143 ! ! ! ! ! 18200 603 144 ! ! ! ! ! var_code: 18210 604 145 ! ! ! ! ! BEGIN 18220 605 146 ! ! ! ! ! ! IF from = addr(dc).macro THEN (* 11.0 *) 18230 606 147 ! ! ! ! ! ! update ( msg) ELSE 18240 607 148 ! ! ! ! ! ! refuse ( msg, unknown_sender); 18250 608 149 ! ! ! ! ! ! \f ncperlst 81.06.09. 15.17. page 22 19010 609 150 ! ! ! ! ! ! (*------------------ perf. test ---------------------------------*) 19020 610 151 ! ! ! ! ! ! REPEAT 19030 611 152 ! ! ! ! ! ! ! wait ( msg, main_sem.w^); 19040 612 153 ! ! ! ! ! ! ! IF msg^.u4 = 02 THEN 19050 613 154 ! ! ! ! ! ! ! BEGIN 19060 614 155 ! ! ! ! ! ! ! ! LOCK msg AS buf: params DO 19070 615 156 ! ! ! ! ! ! ! ! WITH buf DO 19080 616 157 ! ! ! ! ! ! ! ! BEGIN 19090 617 158 ! ! ! ! ! ! ! ! ! np:= n1; 19100 618 159 ! ! ! ! ! ! ! ! ! l:= n2; 19110 619 160 ! ! ! ! ! ! ! ! ! k:= n3; 19120 620 161 ! ! ! ! ! ! ! ! ! ar:= rec 19130 621 162 ! ! ! ! ! ! ! ! END; 19140 622 163 ! ! ! ! ! ! ! END; 19150 623 164 ! ! ! ! ! ! ! IF msg^.u4 < #h30 THEN return ( msg) ELSE 19160 624 165 ! ! ! ! ! ! ! answer ( msg, accepted, msg^.u4+1); 19170 625 166 ! ! ! ! ! ! ! IF k>no_nc_talk THEN k:= no_nc_talk; 19180 626 167 ! ! ! ! ! ! ! IF l>maxbytes THEN l:= maxbytes; 19190 627 168 ! ! ! ! ! ! ! FOR h:= 1 TO k DO 19200 628 169 ! ! ! ! ! ! ! BEGIN 19210 629 170 ! ! ! ! ! ! ! ! alloc ( msg, bufferpool, main_sem.s^); 19220 630 171 ! ! ! ! ! ! ! ! msg^.u3:= nc_route; 19230 631 172 ! ! ! ! ! ! ! ! signal ( msg, free_sem.s^); 19240 632 173 ! ! ! ! ! ! ! END; 19250 633 174 ! ! ! ! ! ! ! 19260 634 175 ! ! ! ! ! ! ! nr:= 0; 19270 635 176 ! ! ! ! ! ! ! ns:= 0; 19280 636 177 ! ! ! ! ! ! ! writetime; 19290 637 178 ! ! ! ! ! ! ! REPEAT 19300 638 179 ! ! ! ! ! ! ! ! WHILE open ( main_sem.w^) DO 19310 639 180 ! ! ! ! ! ! ! ! BEGIN 19320 640 181 ! ! ! ! ! ! ! ! ! IF msg^.u4 = nodetest_answ THEN 19330 641 182 ! ! ! ! ! ! ! ! ! BEGIN 19340 642 183 ! ! ! ! ! ! ! ! ! ! nr:= nr+1; 19350 643 184 ! ! ! ! ! ! ! ! ! ! signal ( msg, free_sem.s^); 19360 644 185 ! ! ! ! ! ! ! ! ! END ELSE 19370 645 186 ! ! ! ! ! ! ! ! ! IF msg^.u4 = 01 THEN 19380 646 187 ! ! ! ! ! ! ! ! ! BEGIN 19390 647 188 ! ! ! ! ! ! ! ! ! ! testout ( console, " sendt ", ns); 19400 648 189 ! ! ! ! ! ! ! ! ! ! testout ( console, " modtaget ", nr); 19410 649 190 ! ! ! ! ! ! ! ! ! ! return ( msg) 19420 650 191 ! ! ! ! ! ! ! ! ! END ELSE 19430 651 192 ! ! ! ! ! ! ! ! ! IF msg^.u4 < #h30 THEN return ( msg) ELSE 19440 652 193 ! ! ! ! ! ! ! ! ! answer ( msg, accepted, msg^.u4+1); 19450 653 194 ! ! ! ! ! ! ! ! END; 19460 654 195 ! ! ! ! ! ! ! ! \f ncperlst 81.06.09. 15.17. page 23 19470 655 196 ! ! ! ! ! ! ! ! WHILE open ( free_sem.w^) AND ( ns < np ) DO 19480 656 197 ! ! ! ! ! ! ! ! BEGIN 19490 657 198 ! ! ! ! ! ! ! ! ! wait ( msg, free_sem.w^); 19500 658 199 ! ! ! ! ! ! ! ! ! ns:= ns+1; 19510 659 200 ! ! ! ! ! ! ! ! ! LOCK msg AS buf: testshape DO 19520 660 201 ! ! ! ! ! ! ! ! ! WITH buf, head DO 19530 661 202 ! ! ! ! ! ! ! ! ! BEGIN 19540 662 203 ! ! ! ! ! ! ! ! ! ! no_of_by:= label_size +l; 19550 663 204 ! ! ! ! ! ! ! ! ! ! rec:= ar; 19560 664 205 ! ! ! ! ! ! ! ! ! ! send:= here; 19570 665 206 ! ! ! ! ! ! ! ! ! ! ts_add:= gettime; 19580 666 207 ! ! ! ! ! ! ! ! ! ! testno:= ns; 19590 667 208 ! ! ! ! ! ! ! ! ! ! peri:= 3600; 19600 668 209 ! ! ! ! ! ! ! ! ! END; 19610 669 210 ! ! ! ! ! ! ! ! ! msg^.u3:= nc_route; 19620 670 211 ! ! ! ! ! ! ! ! ! msg^.u4:= nodetest_code; 19630 671 212 ! ! ! ! ! ! ! ! ! signal ( msg, net_sem^); 19640 672 213 ! ! ! ! ! ! ! ! END; 19650 673 214 ! ! ! ! ! ! ! ! wait ( msg, main_sem.w^); 19660 674 215 ! ! ! ! ! ! ! ! signal ( msg, main_sem.s^); 19670 675 216 ! ! ! ! ! ! ! UNTIL nr+ns = np+np; 19680 676 217 ! ! ! ! ! ! ! 19690 677 218 ! ! ! ! ! ! ! writetime; 19700 678 219 ! ! ! ! ! ! ! FOR h:= 1 TO k DO 19710 679 220 ! ! ! ! ! ! ! BEGIN 19720 680 221 ! ! ! ! ! ! ! ! wait ( msg, free_sem.w^); 19730 681 222 ! ! ! ! ! ! ! ! release ( msg) 19740 682 223 ! ! ! ! ! ! ! END 19750 683 224 ! ! ! ! ! ! ! 19760 684 225 ! ! ! ! ! ! UNTIL false 19770 685 226 ! ! ! ! ! ! 19780 686 227 ! ! ! ! ! END; 19790 687 228 ! ! ! ! ! 19800 688 229 ! ! ! ! ! 19810 689 230 ! ! ! ! ! 19820 690 231 ! ! ! ! ! nodetest_code: 19830 691 232 ! ! ! ! ! BEGIN (* 12.0 *) 19840 692 233 ! ! ! ! ! ! IF from = addr(dc).macro THEN 19850 693 234 ! ! ! ! ! ! BEGIN 19860 694 235 ! ! ! ! ! ! ! LOCK msg AS buf: testshape DO 19870 695 236 ! ! ! ! ! ! ! periode:= abs ( buf.peri); 19880 696 237 ! ! ! ! ! ! ! rest_time:= periode; 19890 697 238 ! ! ! ! ! ! ! answer ( msg, accepted, nodetest_answ); 19900 698 239 ! ! ! ! ! ! ! IF state(dc) = down THEN 19910 699 240 ! ! ! ! ! ! ! BEGIN 19920 700 241 ! ! ! ! ! ! ! ! FOR ts:= 1 TO nodes DO \f ncperlst 81.06.09. 15.17. page 24 19930 701 242 ! ! ! ! ! ! ! ! broadcast ( dc_up, addr(ts), addr(dc), 0); 19940 702 243 ! ! ! ! ! ! ! END; 19950 703 244 ! ! ! ! ! ! ! state(dc):= ready; 19960 704 245 ! ! ! ! ! ! ! test_all; 19970 705 246 ! ! ! ! ! ! ! rest_time:= periode; 19980 706 247 ! ! ! ! ! ! END 19990 707 248 ! ! ! ! ! ! ELSE 20000 708 249 ! ! ! ! ! ! refuse ( msg, unknown_sender) 20010 709 250 ! ! ! ! ! END; 20020 710 251 ! ! ! ! ! 20030 711 252 ! ! ! ! ! 20040 712 253 ! ! ! ! ! 20050 713 254 ! ! ! ! ! <* *> 20060 714 255 ! ! ! ! ! (*-------------- only for debug of own exception ------------------*) 20070 715 256 ! ! ! ! ! 20080 716 257 ! ! ! ! ! #h0b: (* 0.11 *) 20090 717 258 ! ! ! ! ! BEGIN 20100 718 259 ! ! ! ! ! ! h:= h DIV msg^.u1; (* if u1 = 0 *) 20110 719 260 ! ! ! ! ! ! exception ( msg^.u2); (* or use u2 *) 20120 720 261 ! ! ! ! ! END; 20130 721 262 ! ! ! ! ! 20140 722 263 ! ! ! ! ! <* *> 20150 723 264 ! ! ! ! ! 20160 724 265 ! ! ! ! ! 20170 725 266 ! ! ! ! ! \f ncperlst 81.06.09. 15.17. page 25 21010 726 267 ! ! ! ! ! 21020 727 268 ! ! ! ! ! nodetest_answ: (* 12.1 *) 21030 728 269 ! ! ! ! ! BEGIN 21040 729 270 ! ! ! ! ! ! LOCK msg AS buf: testshape DO 21050 730 271 ! ! ! ! ! ! WITH buf DO 21060 731 272 ! ! ! ! ! ! BEGIN 21070 732 273 ! ! ! ! ! ! ! ts:= index(head.send.macro.ts_addr); 21080 733 274 ! ! ! ! ! ! ! IF ts <= nodes THEN (* found *) 21090 734 275 ! ! ! ! ! ! ! BEGIN 21100 735 276 ! ! ! ! ! ! ! ! IF head.result = not_ready THEN 21110 736 277 ! ! ! ! ! ! ! ! BEGIN 21120 737 278 ! ! ! ! ! ! ! ! ! restart ( head.send); 21130 738 279 ! ! ! ! ! ! ! ! ! IF state(ts) >= sleep THEN (* ts autoloaded *) 21140 739 280 ! ! ! ! ! ! ! ! ! FOR n:= 0 TO nodes DO 21150 740 281 ! ! ! ! ! ! ! ! ! IF n <> ts THEN 21160 741 282 ! ! ! ! ! ! ! ! ! broadcast ( ts_down, addr(n), addr(ts), 0); 21170 742 283 ! ! ! ! ! ! ! ! ! state(ts):= starting; 21180 743 284 ! ! ! ! ! ! ! ! END ELSE 21190 744 285 ! ! ! ! ! ! ! ! BEGIN 21200 745 286 ! ! ! ! ! ! ! ! ! IF state(ts) = down THEN 21210 746 287 ! ! ! ! ! ! ! ! ! BEGIN 21220 747 288 ! ! ! ! ! ! ! ! ! ! FOR n:= 0 TO nodes DO 21230 748 289 ! ! ! ! ! ! ! ! ! ! IF n <> ts THEN 21240 749 290 ! ! ! ! ! ! ! ! ! ! broadcast ( ts_up, addr(n), addr(ts), 0) 21250 750 291 ! ! ! ! ! ! ! ! ! END; 21260 751 292 ! ! ! ! ! ! ! ! ! state(ts):= ready; 21270 752 293 ! ! ! ! ! ! ! ! END; 21280 753 294 ! ! ! ! ! ! ! ! IF tests(ts) <> testno THEN 21290 754 295 ! ! ! ! ! ! ! ! BEGIN 21300 755 296 ! ! ! ! ! ! ! ! ! testout ( console, "send no. ", tests(ts)); 21310 756 297 ! ! ! ! ! ! ! ! ! testout ( console, "received ", testno); 21320 757 298 ! ! ! ! ! ! ! ! END; 21330 758 299 ! ! ! ! ! ! ! ! (* look at data(2..8) *) 21340 759 300 ! ! ! ! ! ! ! END 21350 760 301 ! ! ! ! ! ! ! ELSE 21360 761 302 ! ! ! ! ! ! ! insert ( from, starting); 21370 762 303 ! ! ! ! ! ! END; 21380 763 304 ! ! ! ! ! ! return ( msg); 21390 764 305 ! ! ! ! ! END; 21400 765 306 ! ! ! ! ! 21410 766 307 ! ! ! ! ! connect_code: (* 12.8 *) 21420 767 308 ! ! ! ! ! BEGIN 21430 768 309 ! ! ! ! ! ! answer ( msg, accepted, connect_answ) 21440 769 310 ! ! ! ! ! END 21450 770 311 ! ! ! ! ! 21460 771 312 ! ! ! ! ! OTHERWISE \f ncperlst 81.06.09. 15.17. page 26 21470 772 313 ! ! ! ! ! refuse ( msg, unknown_opcode) 21480 773 314 ! ! ! ! ! 21490 774 315 ! ! ! ! END (* case *) 21500 775 316 ! ! ! END (* who = here *) 21510 776 317 ! ! ! 21520 777 318 ! ! ! \f ncperlst 81.06.09. 15.17. page 27 22010 778 319 ! ! ! 22020 779 320 ! ! ! ELSE 22030 780 321 ! ! ! 22040 781 322 ! ! ! IF ( msg^.u3 = netc_route1 ) THEN (* refused by netc *) 22050 782 323 ! ! ! return ( msg) ELSE 22060 783 324 ! ! ! 22070 784 325 ! ! ! IF ( msg^.u3 = netc_route2 ) THEN (* answer from netc *) 22080 785 326 ! ! ! signal ( msg, net_sem^) 22090 786 327 ! ! ! ELSE 22100 787 328 ! ! ! 22110 788 329 ! ! ! IF who.micro = netc_mic_addr THEN (* to netc *) 22120 789 330 ! ! ! BEGIN 22130 790 331 ! ! ! ! msg^.u3:= netc_route1; 22140 791 332 ! ! ! ! signal ( msg, net_sem^); 22150 792 333 ! ! ! END ELSE 22160 793 334 ! ! ! 22170 794 335 ! ! ! IF ( from = addr(dc).macro ) 22180 795 336 ! ! ! AND ( msg^.u4 = var_code) 22190 796 337 ! ! ! AND ( who.micro = tss_mic_addr ) THEN 22200 797 338 ! ! ! update ( msg) 22210 798 339 ! ! ! ELSE 22220 799 340 ! ! ! refuse ( msg, unknown_receiver); 22230 800 341 ! ! END 22240 801 342 ! ! 22250 802 343 ! UNTIL false; 22260 803 344 ! 22270 804 345 END . (* of nc - supervisor *) 22280 805 22290 806 22300 807 \f ncperlst 81.06.09. 15.17. page 28 0 24* 63* 107* 117* 117* 117* 117* 161 243 289 290 291 377 379 433 447 522 529 576 595 634 635 701 739 741 747 749 1 23* 43* 100* 101* 162 245 249 371 426 440 447 517 528 624 627 642 652 658 678 700 2 22* 43* 44* 45* 45* 46* 51* 53* 56* 420 442 3 91* 4 46* 47* 5 52* 121* 122* 447 6 54* 445 447 564 01 645 02 612 10 48* 444 16 445 30 21* 60 121* 122* 64 561 250 50* 3600 667 abs 294 695 accepted 272 326 624 652 697 768 addr 110* 223 245 296 323 379 379 387 421 529 529 575 575 577 578 594 594 596 597 605 692 701 701 741 741 749 749 794 address 80* 269 adr 132* 136* ae_length 47* 322 alarmlabel 67* 72* 79* 89* 187 547 alarmnetaddr 73* 85* 110* 116* 117* 314* 339* 340* alloc 482 498 629 al_env_version <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 461 answer 181* 272 307 424 624 652 697 768 ar 114* 620= 663 as 150: 187: 206: 220: 266: 285: 319: 347: 383: 417: 547: 559: 572: 588: 614: 659: 694: 729: bc_length 46* 350 breaked 414 424 439 broadcast 337* 379 529 578 597 701 741 749 buf 150: 151 206: 207 222 266: 267 270 285: 286 319: 320 347: 348 383: 384 417: 418 559: 560 572: 573 588: 589 614: 615 659: 660 694: 695 729: 730 bufferpool 102* 629 byte 132* 167* 184* 281* 338* 408* c 341* 356 cause 126* 183* 192 202* 214 298= 302= 307 406* 411 422 \f ncperlst 81.06.09. 15.17. page 29 clockpool 101* 482 clock_form 144* 150 clock_msg 104* 148 149 150: 482 483 484 cnt 74* 356= 578 597 comp 73* 328= 355= 578 592 597 connect_answ 40* 768 connect_code 39* 766: console 128* 161 162 460 461 563 564 647 648 755 756 copy_code 26* 225 count 391 data 67* 91* 209= 210 564 dc 24* 223 296 297 323 421 495 525 527 529 575 575 594 594 605 692 698 701 703 794 dc_addr 241 241 296= 296 dc_down 28* 529 dc_up 29* 701 delay1 50* 500 518 delay2 51* 501 519 done 7* 149 482 down 61* 253 376 525 527 561 698 745 dummy_route 490: 539 exception 406* 719 external 133* 137* false 451 684 802 finis_code 41* 424 first 279* 492 flawshape 65* 206 220 form11 78* 266 free_sem 6* 217 318 346 382 415 428 631 643 655 657 680 from 119* 550= 575 594 605 692 761 794 gettime 141* 151= 160 193 215 327 354 390 665 h 125* 426= 433= 440= 440 442 627= 678= 718= 718 h0b 716: h10 26* h12 27* h20 28* 569 h21 29* h22 30* h23 31* 569 h24 32* h25 33* h26 570 h29 570: h30 623 651 \f ncperlst 81.06.09. 15.17. page 30 hae 34* hb0 35* hb1 36* hc0 37* hc1 38* hc8 39* hc9 40* hce 41* head 66* 72* 79* 89* 187: 188 209 211 212 212 213 214 215 223 270 286 320 348 384 418 547: 549 550 575 577 589 594 596 660 732 735 737 here 116* 191 213 241 242 270= 293 296 324 352 388 497 553 664 incname 460 index 109* 246 250= 561 732 insert 236* 269 592 761 insert_code 325 353 389 integer 74* 84* 90* 91* 112* 121* 122* 125* 132* 136* 341* 406* k 124* 619= 625 625= 627 678 l 124* 618= 626 626= 662 label_size 43* 45* 46* 47* 48* 420 662 last_node 22* 23* lock 150: 187: 206: 220: 266: 285: 319: 347: 383: 417: 547: 559: 572: 588: 614: 659: 694: 729: m 167* 170 171 172 173 182* 187: 195 202* 206: 210 229 279* 285: 288 307 macro 241 242 245= 289 290 291 293= 293 296 296 550 575 592 594 605 692 732 794 macroaddr 80* 117* 119* 236* main_sem 5* 435 488 498 513 611 629 638 673 674 margin 52* 393 maxbytes 44* 626 626 max_node 23* 63* 247 micro 575= 575 594= 594 788 796 ms 105* 217 218 220: 225 318 319: 330 346 347: 359 382 383: 396 415 415 417: 424 428 429 msg 105* 253 254 262* 266: 272 414 414 435 436 437 439 488 489 490 491 492 493 498 499 500 501 513 515 518 519 520 539 540 547: 555 559: 566 572: 578 580 588: 597 599 606 607 611 612 614: 623 623 624 624 629 630 631 640 643 645 649 651 651 652 652 657 659: 669 670 671 673 674 680 681 694: 697 708 718 719 729: 763 768 772 781 782 784 785 790 791 795 797 799 n 107* 377= 378 379 739= 740 741 747= 748 749 n1 84* 617 n2 84* 618 \f ncperlst 81.06.09. 15.17. page 31 n3 84* 619 ncsupervisor 3* nc_addr 242 242 290 nc_down 30* nc_route 171 484 630 669 nc_up 31* netc_mic_addr <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 788 netc_route 492: netc_route1 491: 781 790 netc_route2 784 net_sem 8* 173 493 671 785 791 new 220: 222= 223 236* 241 242 243 245 246 250 newstate 236* 255 nodes 107* 245 249 251= 371 377 528 576 595 700 733 739 747 nodetest_answ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 38* 299 640 697 727: nodetest_code <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 37* 288 396 670 690: node_range 63* 107* 109* 109* 110* 111* 112* 238* note 71* 319 347 572 588 not_ready 298 735 no_nc_talk 21* 102* 426 625 625 no_of_by 211= 322= 350= 386= 420= 662= np 124* 617= 655 675 675 nr 124* 634= 642= 642 648 675 ns 124* 635= 647 655 658= 658 666 675 open 638 655 oper 184* 195 operation 338* 359 opsem 4* 460 op_code 210= own 460 ownertest 436 515 params 83* 614 peri 90* 294 393= 561 563 667= 695 periode 121* 294= 295 393 533 695= 696 705 pool 100* 101* 102* process 3* readram 132* 444 ready 61* 254 297 395 495 592 703 751 read_clock 53* 483 rec 85* 190= 212= 223= 270 289 293 323= 351= 387= 549 620 663= reference 105* 167* 182* 202* 262* 279* \f ncperlst 81.06.09. 15.17. page 32 refuse 202* 414 439 607 708 772 799 refuse_code 27* 229 303 557: refuse_length <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 45* 211 release 429 437 681 res 281* 299= 303= 307 restart 314* 497 737 rest_time 122* 295= 517= 517 522 533= 696= 705= result 192= 214= 326= 735 result_range 126* 183* 202* return 490 491 540 566 580 599 623 649 651 763 782 s 482 498 629 631 643 674 sempointer 4* 9* send 190 191= 212 213= 290 291 324= 352= 388= 421= 550 575 577 594 596 664= 732 737 sendtimer 520 sensesem 217 signal 148 173 493 631 643 671 674 785 791 size_listen 43* sleep 61* 374 395 738 starting 61* 269 742 761 state 111* 253= 254= 255= 297= 374 376= 395 395= 495 525 527= 561 698 703= 738 742= 745 751= status 61* 111* 236* switch 408* 444 445 t 158* 160= 161 162 238* 246= 247 249= 250 251 253 254 255 tablerequest 34* 330 testno 90* 392= 422= 666= 753 756 testopen 460 testout 161 162 461 563 564 647 648 755 756 tests 112* 391 392 753 755 testshape 88* 102* 285 383 417 559 659 694 729 test_all 367* 532 704 test_length 48* 386 tickmess 100* 436 498 515 time 144* 151 timeout_sem 9* 148 trace 411 true 448 ts 107* 371= 374 376 378 379 387 391 392 395 395 528= 529 576= 577 578 595= 596 597 700= 701 732= 733 738 740 741 742 745 748 749 751 753 755 tss_mic_addr 796 ts_add 193= 215= 327= 354= 390= 665= \f ncperlst 81.06.09. 15.17. page 33 ts_addr 243 246 250 289 291 732 ts_down 32* 253 379 585: 741 ts_pointer 5* 6* 7* ts_time 101* 141* 144* 158* ts_up 33* 254 586: 749 u1 170= 483= 499= 718 u2 719 u3 171= 484= 489 500= 518= 539 630= 669= 781 784 790= u4 172= 210 253 254 288 501= 519= 555 578 597 612 623 624 640 645 651 652 670= 795 u4val 167* 172 unknown_opcode <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 302 772 unknown_receiver <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 799 unknown_sender <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 607 708 update 262* 325= 353= 389= 606 797 var_answ 36* 272 var_code 35* 603: 795 version 14* 461 w 132* 136* 149 217 318 346 382 415 428 435 488 513 611 638 655 657 673 680 wait 149 318 346 382 415 428 435 488 513 611 657 673 680 where 314* 328 340* 355 who 115* 339* 351 549= 553 788 796 words 43* 44* 91* write 56* 170 writeram 136* 447 447 writetime 157* 636 677 writetimer 54* 499 xmit 167* 195 225 229 330 359 396 zone 128* \f ncperlst 81.06.09. 15.17. page 34 AND 8 ARRAY 5 BEGIN 67 CASE 2 CONST 2 DIV 3 DO 46 ELSE 19 END 75 FOR 11 FUNCTION 1 IF 45 MOD 1 NIL 3 NOT 2 OF 9 OTHERWISE 2 PACKED 4 PROCEDURE 13 RECORD 6 REPEAT 5 THEN 45 TO 11 TYPE 2 UNTIL 5 VAR 15 WHILE 3 WITH 14 nc performance 81.06.09. 15.18. pascal80 version 1981.04.01 name headline beginline endline appetite(words) gettime 144 148 151 : 9 writetime 158 160 163 : 25 xmit 169 170 173 : 5 answer 186 187 196 : 18 refuse 204 206 231 : 18 insert 238 244 258 : 6 update 264 266 274 : 14 first 281 285 309 : 20 restart 316 318 332 : 20 broadcast 344 346 359 : 20 test_all 369 371 399 : 25 exception 408 411 453 : 19 ncsupervisor 14 460 804 : 162 code: 9 . 384 = 7584 bytes end of PASCAL80 compilation end blocksread = 53 «eof»