|
|
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: »tsvchlst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »tsvchlst«
\f
tsvchlst 81.06.12. 16.11. page 1
10 1
\f
tsvchlst 81.06.12. 16.11. page 2
1010 2 PROCESS vc_handler(
1020 3
1030 4 opsem : sempointer;
1040 5 VAR dc_addr,
1050 6 ts_addr : !macroaddr;
1060 7 VAR sem : !ts_pointer_vector
1070 8 );
1080 9
1090 10
1100 11 CONST
1110 12
1120 13 version = "vers 3.91 /";
1130 14 (* ------------ *)
1140 15
\f
tsvchlst 81.06.12. 16.11. page 3
2010 16 (*
2020 17 INTRODUCTION TO THE VC-HANDLER:
2030 18
2040 19
2050 20
2060 21 Abbreviation list for the VC-HANDLER prosess:
2070 22
2080 23 ( the introduction of the alarmenvironment has made some inconsistenses in the list )
2090 24
2100 25 ---------------------------------------------
2110 26
2120 27 adr address
2130 28 at alarm terminal
2140 29 atc at-connector
2150 30 ath at-handler
2160 31 buf buffer
2170 32 dc district center
2180 33 del delete
2190 34 elm element
2200 35 in input
2210 36 incar incarnation
2220 37 ins insert
2230 38 mac macro address
2240 39 max greatest
2250 40 mes message
2260 41 mic micro address
2270 42 min smallest
2280 43 nb number
2290 44 pvc primary vc
2300 45 rec receiver
2310 46 sem semaphore
2320 47 sen sender
2330 48 sup ts-supervisor
2340 49 vc alarm center
2350 50 vcc vc-connector
2360 51 vct vc-table
2370 52
\f
tsvchlst 81.06.12. 16.11. page 4
3010 53
3020 54 Pseudo-code for the VC-HANDLER process:
3030 55 --------------------------------------
3040 56
3050 57 ( this pseudo_code will be updated regularly - last time was 81.02.06 )
3060 58
3070 59 PROCESS vc_handler("process_parameters");
3080 60
3090 61 CONST
3100 62 . "process_constants, installation dependent" (may be moved to alarm-environment);
3110 63
3120 64 TYPE
3130 65 . "message_format" (may be moved to alarm-environment);
3140 66
3150 67 VAR
3160 68 . "vc_table, binary search";
3170 69
3180 70 . "addressing_data";
3190 71 . "scheduling_data";
3200 72 . "supervising_data";
3210 73 . "vcc_incarnation_data";
3220 74 . "error_handling_data";
3230 75
3240 76 . "input_semaphore";
3250 77 . "wait_buffer_semaphore";
3260 78
3270 79 BEGIN
3280 80 . "initialization";
3290 81
3300 82 . REPEAT
3310 83 . "wait a message on the input_semaphore, and
3320 84 . "handle the message in the buffer, corresponding to the
3330 85 . operation_code, and produce resulting messages";
3340 86
3350 87 . "for each resulting message do addressing/indexing
3360 88 . do supervising and signal each of the buffers to the
3370 89 . corresponding input_semaphore";
3380 90
3390 91 . until forever
3400 92
3410 93 END; * of pseudo code *
3420 94
3430 95 *)
3440 96
\f
tsvchlst 81.06.12. 16.11. page 5
4010 97
4020 98 (*--------------------- process vch help -------------------------------*)
4030 99
4040 100 PROCESS vch_help (
4050 101 VAR vcc_inc : vcc_table; (* incarnation table *)
4060 102 VAR main, (* vch sem *)
4070 103 me, (* vch help sem *)
4080 104 free : !sempointer (* free buffers sem *)
4090 105 );
4100 106
4110 107 TYPE
4120 108 note = PACKED RECORD (* for broadcast *)
4130 109 ! head : alarmlabel;
4140 110 ! comp : alarmnetaddr;
4150 111 ! count : integer
4160 112 END;
4170 113
4180 114 CONST
4190 115 write = 2;
4200 116
4210 117 sleep = 1;
4220 118 tested= 2;
4230 119 down = 4;
4240 120
4250 121 connection_code = #hc8;
4260 122
4270 123 VAR
4280 124 msg, bm : reference;
4290 125 v : vc_range;
4300 126 handler: alarmnetaddr;
4310 127
4320 128 BEGIN (*------------ main help program ----------------*)
4330 129 1 ! REPEAT
4340 130 2 ! ! wait ( msg, me^);
4350 131 3 ! !
4360 132 4 ! ! IF msg^.u4 DIV 16 = 2 THEN (* broadcast *)
4370 133 5 ! ! BEGIN
4380 134 6 ! ! ! FOR v:= 1 TO vc_l DO
4390 135 7 ! ! ! IF vcc_inc(v).state < down THEN (* send a broadcast *)
4400 136 8 ! ! ! BEGIN
4410 137 9 ! ! ! ! wait ( bm, free^);
4420 138 10 ! ! ! ! bm^.u1:= write;
4430 139 11 ! ! ! ! bm^.u3:= netc_route;
4440 140 12 ! ! ! ! bm^.u4:= msg^.u4;
4450 141 13 ! ! ! ! LOCK bm AS buf: note DO
4460 142 14 ! ! ! ! LOCK msg AS mes: note DO
\f
tsvchlst 81.06.12. 16.11. page 6
4470 143 15 ! ! ! ! BEGIN
4480 144 16 ! ! ! ! ! buf:= mes;
4490 145 17 ! ! ! ! ! buf.head.rec.micro:= vcc_inc(v).vc_mic
4500 146 18 ! ! ! ! END;
4510 147 19 ! ! ! !
4520 148 20 ! ! ! ! signal ( bm, main^)
4530 149 21 ! ! ! END;
4540 150 22 ! ! ! return ( msg)
4550 151 23 ! ! END
4560 152 24 ! ! ELSE
4570 153 25 ! ! IF msg^.u4 = #hc0 THEN (* node test *)
4580 154 26 ! ! BEGIN
4590 155 27 ! ! !
4600 156 28 ! ! ! LOCK msg AS head: alarmlabel DO handler:= head.rec;
4610 157 29 ! ! !
4620 158 30 ! ! ! FOR v:= 1 TO vc_l DO
4630 159 31 ! ! ! IF vcc_inc(v).state = sleep THEN
4640 160 32 ! ! ! BEGIN
4650 161 33 ! ! ! ! wait ( bm, free^);
4660 162 34 ! ! ! ! bm^.u1:= write;
4670 163 35 ! ! ! ! bm^.u3:= netc_route;
4680 164 36 ! ! ! ! bm^.u4:= connection_code;
4690 165 37 ! ! ! !
4700 166 38 ! ! ! ! LOCK bm AS head: alarmlabel DO
4710 167 39 ! ! ! ! WITH head DO
4720 168 40 ! ! ! ! BEGIN
4730 169 41 ! ! ! ! ! no_of_by:= label_size;
4740 170 42 ! ! ! ! ! rec:= handler;
4750 171 43 ! ! ! ! ! rec.micro:= vcc_inc(v).vc_mic;
4760 172 44 ! ! ! ! ! send:= handler;
4770 173 45 ! ! ! ! END;
4780 174 46 ! ! ! ! signal ( bm, main^);
4790 175 47 ! ! ! ! vcc_inc(v).state:= tested;
4800 176 48 ! ! ! END;
4810 177 49 ! ! !
4820 178 50 ! ! ! msg^.u3:= netc_route1; (* let vch make receipt *)
4830 179 51 ! ! ! msg^.u4:= #hc1;
4840 180 52 ! ! ! signal ( msg, main^)
4850 181 53 ! ! END; (* node test *)
4860 182 54 ! !
4870 183 55 ! !
4880 184 56 ! !
4890 185 57 ! UNTIL false;
4900 186 58 END;
4910 187
4920 188
\f
tsvchlst 81.06.12. 16.11. page 7
5010 189
5020 190 (*--------------------- vch ----------------------------------------*)
5030 191
5040 192 TYPE
5050 193
5060 194 alarm_form70 = RECORD (* used in 7.0 *)
5070 195 ! head : alarmlabel;
5080 196 ! tail : RECORD
5090 197 ! ! vcc_mic : integer;
5100 198 ! ! vc_kind : byte; (* 0 means at- and 1 means it-kind *)
5110 199 ! ! lam_nb : byte; (* index to the sem array *)
5120 200 ! ! port_nb : byte; (* channel number *)
5130 201 ! END;
5140 202 END;
5150 203
5160 204
5170 205
5180 206 alarm_form74 = RECORD (* format in 7.4 *)
5190 207 ! head : alarmlabel;
5200 208 ! vcc_addr : integer
5210 209 END;
5220 210
5230 211
5240 212
5250 213 CONST
5260 214
5270 215 ready = 0; (* vcc states *)
5280 216 sleep = 1;
5290 217 tested= 2;
5300 218 down = 4;
5310 219
5320 220 refuse_code = #h12; (* opcode 1.2 *)
5330 221
5340 222 helpsize = 200;
5350 223 helppri = -1;
5360 224 ok = 0;
5370 225
5380 226
\f
tsvchlst 81.06.12. 16.11. page 8
6010 227 VAR
6020 228
6030 229 (*------------ incar-part ------------*)
6040 230
6050 231 shad : ARRAY ( vc_range) OF shadow;
6060 232 vct : vcc_table; (* incarnation table *)
6070 233 (* is used for administration of semaphores and shadow_variables
6080 234 . to all the vcc_incarnations
6090 235 *)
6100 236
6110 237 vct_index,
6120 238 vct_max : vc_range := 0;
6130 239
6140 240
6150 241 (*------------ main-part ------------*)
6160 242
6170 243 in_mes : reference;
6180 244 where : macroaddr; (* receiver *)
6190 245 who : integer;
6200 246
6210 247 result_code : result_range;
6220 248
6230 249 test : boolean := false; (* true means testmode *)
6240 250
6250 251 vcc_name : alfa;
6260 252 vcc_nb, alfa_pos : integer;
6270 253
6280 254 z : zone;
6290 255
6300 256 shadhelp : shadow;
6310 257
6320 258
6330 259
\f
tsvchlst 81.06.12. 16.11. page 9
7010 260 (*------------ procedures and functions ------------*)
7020 261
7030 262
7040 263 (*------------ externals ------------*)
7050 264
7060 265
7070 266 PROCESS vcc(
7080 267 opsem : sempointer;
7090 268 VAR messem : !ts_pointer;
7100 269 VAR quesem : !ts_pointer;
7110 270 VAR vchsem,
7120 271 driversem,
7130 272 timeoutsem,
7140 273 comsem : !sempointer;
7150 274 VAR dc_addr,
7160 275 ts_addr: !macroaddr;
7170 276 micadr : integer;
7180 277 canno : byte
7190 278 );
7200 279 EXTERNAL;
7210 280
7220 281 (*------------ forward declaration ------------*)
7230 282
7240 283
7250 284 PROCEDURE receipt_mes(
7260 285 VAR rec_mes : reference;
7270 286 result_code : result_range
7280 287 );
7290 288 FORWARD;
7300 289
7310 290
7320 291 PROCEDURE refuse ( VAR msg : reference; cause : result_range);
7330 292 FORWARD;
7340 293
7350 294
\f
tsvchlst 81.06.12. 16.11. page 10
8010 295 (*------------ vct_part ------------*)
8020 296
8030 297
8040 298 PROCEDURE find_vct_elm(
8050 299 mic : integer;
8060 300 VAR result : result_range;
8070 301 VAR index : vc_range
8080 302 );
8090 303 (*---------------------------------------------------------------
8100 304 . This procedure returns the index of the element with the given
8110 305 . micro-address. If not found, then the index is that of the
8120 306 . element in front of the place, where it ought to be.
8130 307 . The search strategi is binary search in an ordered list of
8140 308 . elements. The smallest element has the index = 1.
8150 309 . Error - will not appear.
8160 310 ----------------------------------------------------------------*)
8170 311 VAR
8180 312 low, mid, high : vc_range;
8190 313
8200 314 BEGIN
8210 315 1 ! result:= not_found;
8220 316 2 !
8230 317 3 ! IF vct_max = 0 THEN
8240 318 4 ! index := 0 (* vct is empty *)
8250 319 5 ! ELSE (* we first check the lower bound *)
8260 320 6 ! IF mic < vct(1).vc_mic THEN index := 0 ELSE
8270 321 7 ! IF mic = vct(1).vc_mic THEN
8280 322 8 ! BEGIN
8290 323 9 ! ! index:= 1;
8300 324 10 ! ! result:= accepted
8310 325 11 ! END
8320 326 12 ! ELSE
8330 327 13 ! BEGIN (* now the search is started *)
8340 328 14 ! ! low := 1;
8350 329 15 ! ! high := vct_max; (* >1 *)
8360 330 16 ! ! mid := high;
8370 331 17 ! !
8380 332 18 ! ! REPEAT
8390 333 19 ! ! ! WITH vct(mid) DO
8400 334 20 ! ! ! IF mic = vc_mic THEN
8410 335 21 ! ! ! BEGIN
8420 336 22 ! ! ! ! index := mid;
8430 337 23 ! ! ! ! result:= accepted
8440 338 24 ! ! ! END
8450 339 25 ! ! ! ELSE
8460 340 26 ! ! ! IF mic < vc_mic THEN
\f
tsvchlst 81.06.12. 16.11. page 11
8470 341 27 ! ! ! high := mid
8480 342 28 ! ! ! ELSE low := mid; (* mic > vc_mic *)
8490 343 29 ! ! ! (* end with *)
8500 344 30 ! ! ! mid := (high - low) DIV 2 + low;
8510 345 31 ! ! UNTIL (result = accepted) OR ( high - low < 2 );
8520 346 32 ! !
8530 347 33 ! ! IF result <> accepted THEN
8540 348 34 ! ! index := low; (* mic ought to be placed between low and high *)
8550 349 35 ! END (* search-part *);
8560 350 36 !
8570 351 37 ! (*q if test then
8580 352 38 ! if result = accepted then testout(z,"vct index :",index)
8590 353 39 ! else testout(z,"not in vct :",mic); q*)
8600 354 40 !
8610 355 41 END (* find_vct_el *);
8620 356
8630 357
\f
tsvchlst 81.06.12. 16.11. page 12
9010 358
9020 359 PROCEDURE move_vct_entry ( VAR rec, from : vc_incar_e );
9030 360 BEGIN
9040 361 1 ! WITH from DO
9050 362 2 ! BEGIN
9060 363 3 ! ! rec.vc_mic:= vc_mic;
9070 364 4 ! ! rec.state:= state;
9080 365 5 ! ! rec.in_sem:= in_sem;
9090 366 6 ! ! rec.shix := shix
9100 367 7 ! END
9110 368 8 END; (* of move *)
9120 369
9130 370
\f
tsvchlst 81.06.12. 16.11. page 13
10010 371 PROCEDURE place_vct_elm(
10020 372 vcc_mic : integer;
10030 373 VAR result : result_range;
10040 374 VAR index : vc_range
10050 375 );
10060 376 (*---------------------------------------------------------------------
10070 377 . This procedure makes place for an element in the vct, if room for it
10080 378 . and initialize it.
10090 379 . Error => result := rejected.
10100 380 ---------------------------------------------------------------------*)
10110 381 VAR
10120 382 ix : vc_range;
10130 383 work : vc_incar_e;
10140 384
10150 385 BEGIN
10160 386 1 ! find_vct_elm( vcc_mic, result, index );
10170 387 2 ! IF result = accepted THEN result:= existing_entry ELSE
10180 388 3 ! IF vct_max >= vc_l THEN result:= no_room ELSE
10190 389 4 ! IF (vcc_mic < vc_addr_limit) OR (vcc_mic >= at_addr_limit) THEN
10200 390 5 ! BEGIN
10210 391 6 ! ! (*q if test then testout(z,"place_err ",vcc_mic); q*)
10220 392 7 ! ! result:= not_found
10230 393 8 ! END
10240 394 9 ! ELSE
10250 395 10 ! BEGIN (* place the element *)
10260 396 11 ! ! move_vct_entry ( work, vct(vct_max+1));
10270 397 12 ! ! FOR ix:= vct_max DOWNTO index+1 DO
10280 398 13 ! ! move_vct_entry ( vct(ix+1), vct(ix));
10290 399 14 ! ! vct_max := vct_max + 1;
10300 400 15 ! ! index := index + 1; (* that's the new place *)
10310 401 16 ! ! move_vct_entry ( vct(index), work);
10320 402 17 ! ! vct(index).vc_mic:= vcc_mic;
10330 403 18 ! ! vct(index).state:= sleep;
10340 404 19 ! ! result:= accepted
10350 405 20 ! END;
10360 406 21 END (* place_vct_elm *);
10370 407
10380 408
\f
tsvchlst 81.06.12. 16.11. page 14
11010 409 PROCEDURE del_vct_elm(
11020 410 del_mic : integer;
11030 411 VAR result : result_range
11040 412 );
11050 413 (*-----------------------------------------------------------------------
11060 414 . This procedure delets an element in the vct, if found.
11070 415 . Error => dc
11080 416 -----------------------------------------------------------------------*)
11090 417 VAR
11100 418 res : result_range;
11110 419 index, ix : vc_range;
11120 420 work : vc_incar_e;
11130 421
11140 422 BEGIN
11150 423 1 ! find_vct_elm(del_mic, res, index);
11160 424 2 ! IF res = accepted THEN
11170 425 3 !
11180 426 4 ! IF NOT nil ( shad(vct(index).shix)) THEN
11190 427 5 ! BEGIN
11200 428 6 ! !
11210 429 7 ! ! vct(index).state:= down;
11220 430 8 ! ! break ( shad(vct(index).shix), 47);
11230 431 9 ! ! remove ( shad(vct(index).shix));
11240 432 10 ! !
11250 433 11 ! ! move_vct_entry ( work, vct(index));
11260 434 12 ! ! FOR ix := index TO vct_max - 1 DO
11270 435 13 ! ! move_vct_entry ( vct(ix), vct(ix+1));
11280 436 14 ! ! move_vct_entry ( vct(vct_max), work);
11290 437 15 ! ! vct_max := vct_max - 1;
11300 438 16 ! !
11310 439 17 ! END;
11320 440 18 ! result:= res
11330 441 19 END (* del_vct_elm *);
11340 442
\f
tsvchlst 81.06.12. 16.11. page 15
12010 443 (*------------ sup-part ------------*)
12020 444
12030 445
12040 446 (*-------------------------------------------------------------------
12050 447 . this part will later include several procedures for handling
12060 448 . this modules supervision of vcc's and tss.
12070 449 . so far - you will meet the comment "supervision", where these
12080 450 . procedures are to be called,
12090 451 . and that takes place immediately after waits, and when signalling.
12100 452 --------------------------------------------------------------------*)
12110 453
\f
tsvchlst 81.06.12. 16.11. page 16
13010 454 (*------------ signal-part ------------*)
13020 455
13030 456
13040 457 PROCEDURE signal_to_vcc (
13050 458 VAR msg : reference;
13060 459 known_index : vc_range
13070 460 );
13080 461 (*----------------------------------------------------------------------
13090 462 . This procedure signals the message to the input_semaphore of the vcc,
13100 463 . and do the supervision. If known_index is zero, this procedure
13110 464 . finds the vct-index itself.
13120 465 . No check on known_index.
13130 466 . Error => send receipt_mes.
13140 467 -----------------------------------------------------------------------*)
13150 468 VAR
13160 469 result : result_range;
13170 470 wanted : integer;
13180 471 index : vc_range;
13190 472
13200 473 BEGIN
13210 474 1 ! LOCK msg AS head : alarmlabel DO wanted:= head.rec.micro;
13220 475 2 ! IF known_index <> 0 THEN (* check *)
13230 476 3 ! IF vct(known_index).vc_mic <> wanted THEN known_index:= 0;
13240 477 4 !
13250 478 5 ! IF known_index = 0 THEN
13260 479 6 ! find_vct_elm( wanted, result, index )
13270 480 7 ! ELSE
13280 481 8 ! index := known_index;
13290 482 9 !
13300 483 10 ! IF vct(index).state = down THEN result:= not_ready;
13310 484 11 ! IF result = accepted THEN
13320 485 12 ! BEGIN
13330 486 13 ! ! signal ( msg, sem( vct(index).in_sem).s^ );
13340 487 14 ! ! (* supervision - here we need the index for identification of the vcc *)
13350 488 15 ! END
13360 489 16 ! ELSE
13370 490 17 ! BEGIN
13380 491 18 ! ! (*-- reject --*)
13390 492 19 ! !
13400 493 20 ! ! refuse ( msg, result );
13410 494 21 ! !
13420 495 22 ! ! (*q if test then testout(z,"sgnl_vct_err",index); q*)
13430 496 23 ! END;
13440 497 24 END (* signal_to_vcc *);
13450 498
\f
tsvchlst 81.06.12. 16.11. page 17
14010 499
14020 500 PROCEDURE receipt_mes (
14030 501
14040 502 VAR rec_mes : reference;
14050 503
14060 504 result_code : result_range
14070 505 );
14080 506 (*------------------------------------------------------------------
14090 507 . This procedure signals receipt-messages to the sup with the
14100 508 . correct u3, u4, address, no_of_by, and result_code.
14110 509 --------------------------------------------------------------------*)
14120 510 BEGIN
14130 511 1 !
14140 512 2 ! WITH rec_mes^ DO
14150 513 3 ! BEGIN
14160 514 4 ! !
14170 515 5 ! ! LOCK rec_mes AS head : alarmlabel DO
14180 516 6 ! ! WITH head DO
14190 517 7 ! ! BEGIN
14200 518 8 ! ! ! rec := send;
14210 519 9 ! ! ! send.macro:= ts_addr;
14220 520 10 ! ! ! send.micro:= vch_mic_addr;
14230 521 11 ! ! ! result := result_code;
14240 522 12 ! ! END (* lock - with *);
14250 523 13 ! ! u3:= vci_route;
14260 524 14 ! ! u4:= (u4 DIV 2)*2 + 1;
14270 525 15 ! END (* with *);
14280 526 16 !
14290 527 17 ! signal( rec_mes, sem(tssup_sem_no).s^ );
14300 528 18 !
14310 529 19 END (* receipt_mes *);
14320 530
14330 531
\f
tsvchlst 81.06.12. 16.11. page 18
15010 532
15020 533 PROCEDURE refuse (
15030 534 VAR msg : reference; (* message to refused *)
15040 535 cause : result_range (* result code *)
15050 536 );
15060 537
15070 538 (* send 1.2 back to sender *)
15080 539
15090 540 TYPE
15100 541
15110 542 flawshape = PACKED RECORD (* for 1.2 *)
15120 543 ! head : alarmlabel;
15130 544 ! data : alarmlabel
15140 545 END;
15150 546
15160 547 BEGIN
15170 548 1 ! LOCK msg AS buf : flawshape DO
15180 549 2 ! WITH buf DO
15190 550 3 ! BEGIN
15200 551 4 ! ! data:= head;
15210 552 5 ! ! data.op_code:= msg^.u4;
15220 553 6 ! ! WITH head DO
15230 554 7 ! ! BEGIN
15240 555 8 ! ! ! no_of_by:= 2*label_size+2;
15250 556 9 ! ! ! rec:= send;
15260 557 10 ! ! ! send.macro:= ts_addr;
15270 558 11 ! ! ! send.micro:= vch_mic_addr;
15280 559 12 ! ! ! result:= cause;
15290 560 13 ! ! END
15300 561 14 ! END;
15310 562 15 !
15320 563 16 ! msg^.u3:= vci_route;
15330 564 17 ! msg^.u4:= refuse_code;
15340 565 18 ! signal ( msg, sem(tssup_sem_no).s^)
15350 566 19 !
15360 567 20 END;
15370 568
15380 569
15390 570
\f
tsvchlst 81.06.12. 16.11. page 19
16010 571
16020 572 BEGIN
16030 573 1 ! (*------------ main program ------------*)
16040 574 2 !
16050 575 3 ! (*------------ initialisation ------------*)
16060 576 4 !
16070 577 5 ! testopen ( z, own.incname, opsem);
16080 578 6 ! testout(z,version,al_env_version);
16090 579 7 ! result_code := create ( "vchhelp ",
16100 580 8 ! vch_help ( vct,
16110 581 9 ! sem(vch_sem_no).s,
16120 582 10 ! sem(vch_int1).w,
16130 583 11 ! sem(com_pool).w
16140 584 12 ! ),
16150 585 13 ! shadhelp, helpsize );
16160 586 14 !
16170 587 15 ! IF result_code <> ok THEN
16180 588 16 ! testout ( z,"help create=", result_code)
16190 589 17 ! ELSE
16200 590 18 ! start ( shadhelp, helppri);
16210 591 19 ! FOR vct_index:= 1 TO vc_l DO
16220 592 20 ! WITH vct(vct_index) DO
16230 593 21 ! BEGIN
16240 594 22 ! ! vc_mic:= at_addr_limit;
16250 595 23 ! ! state:= down;
16260 596 24 ! ! in_sem:= vcc_sem_no - 2 + 2 * vct_index;
16270 597 25 ! ! shix:= vct_index
16280 598 26 ! END;
16290 599 27 !
16300 600 28 ! (*------------ main repeat_loop-part ------------*)
16310 601 29 !
16320 602 30 ! REPEAT (* until terminate situation *)
16330 603 31 ! !
16340 604 32 ! ! result_code:= accepted;
16350 605 33 ! !
16360 606 34 ! ! (*q if test then testout(z,"wait in_sem ",0); q*)
16370 607 35 ! !
16380 608 36 ! ! wait( in_mes, sem( vch_sem_no ).w^ );
16390 609 37 ! ! (* here it waits effectively, if no messages has been scheduled *)
16400 610 38 ! !
16410 611 39 ! ! (* if test then testout(z,"in_mes u3:",in_mes^.u3);
16420 612 40 ! ! if test then testout(z," u4:",in_mes^.u4); *)
16430 613 41 ! !
16440 614 42 ! ! (* first of all we group the messages, depending on from where it
16450 615 43 ! ! . does come.
16460 616 44 ! ! *)
\f
tsvchlst 81.06.12. 16.11. page 20
16470 617 45 ! !
16480 618 46 ! ! (*q if test then testout(z,"case u3:",in_mes^.u3);
16490 619 47 ! ! if test then testout(z," u4:",in_mes^.u4); q*)
16500 620 48 ! !
16510 621 49 ! ! CASE in_mes^.u3 OF
16520 622 50 ! ! !
16530 623 51 ! ! ! dummy_route : return ( in_mes );
16540 624 52 ! ! !
16550 625 53 ! ! !
\f
tsvchlst 81.06.12. 16.11. page 21
17010 626 54 ! ! ! <* timer NOT used
17020 627 55 ! ! ! tim_route, tim_route1 (* from timeout *) :
17030 628 56 ! ! ! BEGIN
17040 629 57 ! ! ! (*q if test then testout(z,"from timeout",0); q*)
17050 630 58 ! ! !
17060 631 59 ! ! !
17070 632 60 ! ! ! (* case on opcode *)
17080 633 61 ! ! !
17090 634 62 ! ! ! receipt_mes( in_mes, rejected ); (* ?????? *)
17100 635 63 ! ! !
17110 636 64 ! ! ! END (* from timeout *);
17120 637 65 ! ! ! *>
17130 638 66 ! ! !
\f
tsvchlst 81.06.12. 16.11. page 22
18010 639 67 ! ! !
18020 640 68 ! ! ! vci_route, vci_route1,
18030 641 69 ! ! ! vca_route, vca_route1 (* from a vcc - of kind at *) :
18040 642 70 ! ! !
18050 643 71 ! ! ! BEGIN
18060 644 72 ! ! ! ! (* signal to sup *)
18070 645 73 ! ! ! !
18080 646 74 ! ! ! ! (* No check here. But this block is planned used, when
18090 647 75 ! ! ! ! . the following opcodes are met:
18100 648 76 ! ! ! ! .
18110 649 77 ! ! ! ! . 0.2 3.1 3.2 3.4 3.5 4.0 8.1 8.3 8.4 9.1 10.3 10.5
18120 650 78 ! ! ! ! . 1.2
18130 651 79 ! ! ! ! .
18140 652 80 ! ! ! ! *)
18150 653 81 ! ! ! !
18160 654 82 ! ! ! ! (*q if test then testout(z,"from a vcc ",0); q*)
18170 655 83 ! ! ! !
18180 656 84 ! ! ! ! (* supervision *)
18190 657 85 ! ! ! ! LOCK in_mes AS head : alarmlabel DO
18200 658 86 ! ! ! ! WITH head DO
18210 659 87 ! ! ! ! BEGIN
18220 660 88 ! ! ! ! ! where:= rec.macro;
18230 661 89 ! ! ! ! ! who:= rec.micro;
18240 662 90 ! ! ! ! ! find_vct_elm ( send.micro, result_code, vct_index);
18250 663 91 ! ! ! ! END;
18260 664 92 ! ! ! !
18270 665 93 ! ! ! ! WITH vct(vct_index) DO
18280 666 94 ! ! ! ! IF state < down THEN state:= ready;
18290 667 95 ! ! ! !
18300 668 96 ! ! ! ! IF ( where = ts_addr )
18310 669 97 ! ! ! ! AND ( who = vch_mic_addr ) THEN (* for me *)
18320 670 98 ! ! ! ! BEGIN
18330 671 99 ! ! ! ! ! return ( in_mes);
18340 672 100 ! ! ! ! END
18350 673 101 ! ! ! ! ELSE
18360 674 102 ! ! ! ! signal(in_mes,sem( tssup_sem_no).s^);
18370 675 103 ! ! ! !
18380 676 104 ! ! ! !
18390 677 105 ! ! ! END (* from a vcc *);
18400 678 106 ! ! !
18410 679 107 ! ! !
\f
tsvchlst 81.06.12. 16.11. page 23
19010 680 108 ! ! !
19020 681 109 ! ! ! netc_route1: (* to vch itself *)
19030 682 110 ! ! !
19040 683 111 ! ! ! BEGIN
19050 684 112 ! ! ! !
19060 685 113 ! ! ! !
19070 686 114 ! ! ! ! (*q if test then testout(z,"to vch ",in_mes^.u4); q*)
19080 687 115 ! ! ! !
19090 688 116 ! ! ! ! CASE in_mes^.u4 (* operation code *) OF
19100 689 117 ! ! ! ! !
19110 690 118 ! ! ! ! ! (* 1.2 *) #h12 :
19120 691 119 ! ! ! ! ! return ( in_mes);
19130 692 120 ! ! ! ! !
19140 693 121 ! ! ! ! ! (* 2.x *)
19150 694 122 ! ! ! ! ! #h20..#h29,
19160 695 123 ! ! ! ! ! #hc0 :
19170 696 124 ! ! ! ! ! signal ( in_mes, sem(vch_int1).s^);
19180 697 125 ! ! ! ! !
19190 698 126 ! ! ! ! ! (* 12.1 from help *)
19200 699 127 ! ! ! ! ! #hc1: ;
19210 700 128 ! ! ! ! !
19220 701 129 ! ! ! ! ! (* 7.0 *) #h70 :
19230 702 130 ! ! ! ! ! BEGIN
19240 703 131 ! ! ! ! ! ! (* creation of a vcc_incanation *)
19250 704 132 ! ! ! ! ! ! (*** yet, creation is only allowed for vc's of kind at ***)
19260 705 133 ! ! ! ! ! ! (*** later we must remember to test on vc_kind ***)
19270 706 134 ! ! ! ! ! !
19280 707 135 ! ! ! ! ! ! LOCK in_mes AS mes : alarm_form70 DO
19290 708 136 ! ! ! ! ! ! WITH mes DO
19300 709 137 ! ! ! ! ! ! BEGIN
19310 710 138 ! ! ! ! ! ! ! (* update vct *)
19320 711 139 ! ! ! ! ! ! !
19330 712 140 ! ! ! ! ! ! ! IF (head.send.macro <> dc_addr) THEN
19340 713 141 ! ! ! ! ! ! ! BEGIN
19350 714 142 ! ! ! ! ! ! ! ! result_code:= unknown_sender;
19360 715 143 ! ! ! ! ! ! ! ! (*q if test then testout(z,"7.0 bad <> :",head.send.macro.dc_addr); q*)
19370 716 144 ! ! ! ! ! ! ! END
19380 717 145 ! ! ! ! ! ! ! ELSE
19390 718 146 ! ! ! ! ! ! ! place_vct_elm( tail.vcc_mic, result_code, vct_index );
19400 719 147 ! ! ! ! ! ! !
19410 720 148 ! ! ! ! ! ! ! IF result_code = accepted THEN
19420 721 149 ! ! ! ! ! ! ! BEGIN
19430 722 150 ! ! ! ! ! ! ! !
19440 723 151 ! ! ! ! ! ! ! ! (* make an unambiguous vcc_name *)
19450 724 152 ! ! ! ! ! ! ! !
19460 725 153 ! ! ! ! ! ! ! ! vcc_name := "vccon__ ";
\f
tsvchlst 81.06.12. 16.11. page 24
19470 726 154 ! ! ! ! ! ! ! ! vcc_nb := tail.vcc_mic;
19480 727 155 ! ! ! ! ! ! ! ! alfa_pos := 9;
19490 728 156 ! ! ! ! ! ! ! !
19500 729 157 ! ! ! ! ! ! ! ! REPEAT
19510 730 158 ! ! ! ! ! ! ! ! ! (*q if test then testout(z,"vcc_nb-part:",vcc_nb);
19520 731 159 ! ! ! ! ! ! ! ! ! if test then testout(z,"alfa_pos :",alfa_pos); q*)
19530 732 160 ! ! ! ! ! ! ! ! !
19540 733 161 ! ! ! ! ! ! ! ! ! vcc_name( alfa_pos ) := chr( vcc_nb MOD 10 + ord( "0" ) );
19550 734 162 ! ! ! ! ! ! ! ! ! vcc_nb := vcc_nb DIV 10;
19560 735 163 ! ! ! ! ! ! ! ! ! alfa_pos := alfa_pos - 1;;
19570 736 164 ! ! ! ! ! ! ! ! UNTIL alfa_pos = 6;
19580 737 165 ! ! ! ! ! ! ! !
19590 738 166 ! ! ! ! ! ! ! ! (* create and start the vcc_incarnation *)
19600 739 167 ! ! ! ! ! ! ! !
19610 740 168 ! ! ! ! ! ! ! ! (*q if test then testout(z,"creating vcc",vct_index); q*)
19620 741 169 ! ! ! ! ! ! ! !
19630 742 170 ! ! ! ! ! ! ! ! IF tail.vc_kind = vcat THEN (* create vc at connector *)
19640 743 171 ! ! ! ! ! ! ! ! BEGIN
19650 744 172 ! ! ! ! ! ! ! ! !
19660 745 173 ! ! ! ! ! ! ! ! ! result_code:= link ( "vcatc ", vcc)
19670 746 174 ! ! ! ! ! ! ! ! ! ;
19680 747 175 ! ! ! ! ! ! ! ! ! result_code := create(
19690 748 176 ! ! ! ! ! ! ! ! ! vcc_name,
19700 749 177 ! ! ! ! ! ! ! ! ! vcc(
19710 750 178 ! ! ! ! ! ! ! ! ! opsem,
19720 751 179 ! ! ! ! ! ! ! ! ! sem( vct(vct_index).in_sem),
19730 752 180 ! ! ! ! ! ! ! ! ! sem( vct(vct_index).in_sem + 1 ),
19740 753 181 ! ! ! ! ! ! ! ! ! sem( vch_sem_no ).s,
19750 754 182 ! ! ! ! ! ! ! ! ! (* <<<sem( lam_sem_no + tail.lam_nb ).s, >>> *)
19760 755 183 ! ! ! ! ! ! ! ! ! sem(vas_sem_no).s,
19770 756 184 ! ! ! ! ! ! ! ! ! sem( timeout_sem_no ).s,
19780 757 185 ! ! ! ! ! ! ! ! ! sem(com_pool).w,
19790 758 186 ! ! ! ! ! ! ! ! ! dc_addr,
19800 759 187 ! ! ! ! ! ! ! ! ! ts_addr,
19810 760 188 ! ! ! ! ! ! ! ! ! tail.vcc_mic,
19820 761 189 ! ! ! ! ! ! ! ! ! tail.port_nb
19830 762 190 ! ! ! ! ! ! ! ! ! ),
19840 763 191 ! ! ! ! ! ! ! ! ! shad(vct( vct_index ).shix),
19850 764 192 ! ! ! ! ! ! ! ! ! vac_size)
19860 765 193 ! ! ! ! ! ! ! ! END
19870 766 194 ! ! ! ! ! ! ! ! ELSE
19880 767 195 ! ! ! ! ! ! ! ! IF tail.vc_kind = vcit THEN (* create vc it connector *)
19890 768 196 ! ! ! ! ! ! ! ! BEGIN
19900 769 197 ! ! ! ! ! ! ! ! !
19910 770 198 ! ! ! ! ! ! ! ! ! result_code:= link ( "vcitc ", vcc )
19920 771 199 ! ! ! ! ! ! ! ! ! ;
\f
tsvchlst 81.06.12. 16.11. page 25
19930 772 200 ! ! ! ! ! ! ! ! ! result_code:= create (
19940 773 201 ! ! ! ! ! ! ! ! ! vcc_name,
19950 774 202 ! ! ! ! ! ! ! ! ! vcc (
19960 775 203 ! ! ! ! ! ! ! ! ! opsem,
19970 776 204 ! ! ! ! ! ! ! ! ! sem( vct(vct_index).in_sem),
19980 777 205 ! ! ! ! ! ! ! ! ! sem( vct(vct_index).in_sem+1),
19990 778 206 ! ! ! ! ! ! ! ! ! sem( vch_sem_no).s,
20000 779 207 ! ! ! ! ! ! ! ! ! (* <<< sem ( lam_sem_no + tail.lam_nb).s, >>> *)
20010 780 208 ! ! ! ! ! ! ! ! ! sem( vis_sem_no).s,
20020 781 209 ! ! ! ! ! ! ! ! ! sem( timeout_sem_no ).s,
20030 782 210 ! ! ! ! ! ! ! ! ! sem( com_pool).w,
20040 783 211 ! ! ! ! ! ! ! ! ! dc_addr,
20050 784 212 ! ! ! ! ! ! ! ! ! ts_addr,
20060 785 213 ! ! ! ! ! ! ! ! ! tail.vcc_mic,
20070 786 214 ! ! ! ! ! ! ! ! ! tail.port_nb
20080 787 215 ! ! ! ! ! ! ! ! ! ),
20090 788 216 ! ! ! ! ! ! ! ! ! shad(vct(vct_index).shix),
20100 789 217 ! ! ! ! ! ! ! ! ! vic_size)
20110 790 218 ! ! ! ! ! ! ! ! END
20120 791 219 ! ! ! ! ! ! ! ! ELSE
20130 792 220 ! ! ! ! ! ! ! ! result_code:= out_of_range;
20140 793 221 ! ! ! ! ! ! ! !
20150 794 222 ! ! ! ! ! ! ! ! IF result_code = accepted THEN
20160 795 223 ! ! ! ! ! ! ! ! start ( shad(vct(vct_index).shix), vcc_pri)
20170 796 224 ! ! ! ! ! ! ! ! ELSE
20180 797 225 ! ! ! ! ! ! ! ! del_vct_elm( tail.vcc_mic, result_code );
20190 798 226 ! ! ! ! ! ! ! !
20200 799 227 ! ! ! ! ! ! ! !
20210 800 228 ! ! ! ! ! ! ! ! (*q if test then testout(z,"create value",c); q*)
20220 801 229 ! ! ! ! ! ! ! END (* if *);
20230 802 230 ! ! ! ! ! ! END (* lock - with *);
20240 803 231 ! ! ! ! ! !
20250 804 232 ! ! ! ! ! END (* creation of a vcc_incarnation *);
20260 805 233 ! ! ! ! !
\f
tsvchlst 81.06.12. 16.11. page 26
21010 806 234 ! ! ! ! !
21020 807 235 ! ! ! ! ! #h74: (* remove a vcc *)
21030 808 236 ! ! ! ! ! BEGIN
21040 809 237 ! ! ! ! ! !
21050 810 238 ! ! ! ! ! ! LOCK in_mes AS mes : alarm_form74 DO
21060 811 239 ! ! ! ! ! ! WITH mes, head DO
21070 812 240 ! ! ! ! ! ! IF send.macro <> dc_addr THEN
21080 813 241 ! ! ! ! ! ! result_code:= unknown_sender
21090 814 242 ! ! ! ! ! ! ELSE
21100 815 243 ! ! ! ! ! ! del_vct_elm ( vcc_addr, result_code)
21110 816 244 ! ! ! ! ! !
21120 817 245 ! ! ! ! ! END;
21130 818 246 ! ! ! ! !
21140 819 247 ! ! ! ! !
21150 820 248 ! ! ! ! !
\f
tsvchlst 81.06.12. 16.11. page 27
22010 821 249 ! ! ! ! !
22020 822 250 ! ! ! ! ! (* 12.8 *) #hc8: ;
22030 823 251 ! ! ! ! !
22040 824 252 ! ! ! ! ! (* 12.14 *) #hce:
22050 825 253 ! ! ! ! ! BEGIN
22060 826 254 ! ! ! ! ! ! (* state:= down broadcast vcc down *)
22070 827 255 ! ! ! ! ! ! refuse ( in_mes, not_ready);
22080 828 256 ! ! ! ! ! END
22090 829 257 ! ! ! ! ! OTHERWISE
22100 830 258 ! ! ! ! ! refuse ( in_mes, unknown_opcode)
22110 831 259 ! ! ! ! !
22120 832 260 ! ! ! ! END; (* case *)
22130 833 261 ! ! ! !
22140 834 262 ! ! ! ! IF NOT nil ( in_mes) THEN
22150 835 263 ! ! ! ! receipt_mes ( in_mes, result_code);
22160 836 264 ! ! ! !
22170 837 265 ! ! ! END; (* for vch *)
22180 838 266 ! ! !
\f
tsvchlst 81.06.12. 16.11. page 28
23010 839 267 ! ! !
23020 840 268 ! ! ! netc_route:
23030 841 269 ! ! ! BEGIN (* for a vcc *)
23040 842 270 ! ! ! !
23050 843 271 ! ! ! ! (*q if test then testout ( z, "to a vcc ", in_mes^.u4); q*)
23060 844 272 ! ! ! !
23070 845 273 ! ! ! ! vct_index:= 0;
23080 846 274 ! ! ! ! signal_to_vcc ( in_mes, vct_index)
23090 847 275 ! ! ! !
23100 848 276 ! ! ! END (* to a vcc *);
23110 849 277 ! ! !
\f
tsvchlst 81.06.12. 16.11. page 29
24010 850 278 ! ! !
24020 851 279 ! ! ! OTHERWISE (* not implemented - now used for change of testmode *)
24030 852 280 ! ! ! BEGIN
24040 853 281 ! ! ! ! (*q test := not test;
24050 854 282 ! ! ! !
24060 855 283 ! ! ! ! if test then testout(z,"starttestout",0);
24070 856 284 ! ! ! ! if not test then testout(z,"stop testout",0); q*)
24080 857 285 ! ! ! !
24090 858 286 ! ! ! ! refuse ( in_mes, unknown_route)
24100 859 287 ! ! ! !
24110 860 288 ! ! ! END (* otherwise *);
24120 861 289 ! ! !
24130 862 290 ! ! !
24140 863 291 ! ! END (* case - upon routings information *);
24150 864 292 ! !
24160 865 293 ! !
24170 866 294 ! UNTIL false (* never stop *)
24180 867 295 !
24190 868 296 END . (* main program *)
24200 869
24210 870 (* end of file *)
24220 871
24230 872
24240 873
\f
tsvchlst 81.06.12. 16.11. page 30
0 215* 224* 238* 317 318 320 475 476 478 845
1 117* 134 158 216* 223* 320 321 323 328 396 397 398 399 400 434
435 437 524 591 735 752 777
2 115* 118* 132 217* 344 345 524 524 555 555 596 596
4 119* 218*
6 736
9 727
10 733 734
16 132
47 430
200 222*
accepted 324 337 345 347 387 404 424 484 604 720 794
alarmlabel 109* 156 166 195* 207* 474 515 543* 544* 657
alarmnetaddr 110* 126*
alarm_form70 194* 707
alarm_form74 206* 810
alfa 251*
alfa_pos 252* 727= 733 735= 735 736
al_env_version <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
578
as 141: 142: 156: 166: 474: 515: 548: 657: 707: 810:
at_addr_limit <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
389 594
bm 124* 137 138 139 140 141: 148 161 162 163 164 166: 174
boolean 249*
break 430
buf 141: 144= 145 548: 549
byte 198* 199* 200* 277*
canno 277*
cause 291* 535* 559
chr 733
comp 110*
comsem 273*
com_pool 583 757 782
connection_code <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
121* 164
count 111*
create 579 747 772
data 544* 551= 552
dc_addr 5* 274* 712 758 783 812
del_mic 410* 423
del_vct_elm 409* 797 815
down 119* 135 218* 429 483 595 666
driversem 271*
\f
tsvchlst 81.06.12. 16.11. page 31
dummy_route 623:
existing_entry <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
387
external 279*
false 185 249* 866
find_vct_elm 298* 386 423 479 662
flawshape 542* 548
free 104* 137 161
from 359* 361
h12 220* 690:
h20 694
h29 694
h70 701:
h74 807:
handler 126* 156= 170 172
hc0 153 695:
hc1 179 699:
hc8 121* 822:
hce 824:
head 109* 145 156: 156 166: 167 195* 207* 474: 474 515: 516 543* 551 553
657: 658 712 811
helppri 223* 590
helpsize 222* 585
high 312* 329= 330 341= 344 345
incname 577
index 301* 318= 320= 323= 336= 348= 374* 386 397 400= 400 401 402 403 419*
423 426 429 430 431 433 434 471* 479 481= 483 486
integer 111* 197* 208* 245* 252* 276* 299* 372* 410* 470*
in_mes 243* 608 621 623 657: 671 674 688 691 696 707: 810: 827 830 834
835 846 858
in_sem 365= 365 486 596= 751 752 776 777
ix 382* 397= 398 398 419* 434= 435 435
known_index 459* 475 476 476= 478 481
label_size 169 555
lam_nb 199*
link 745 770
lock 141: 142: 156: 166: 474: 515: 548: 657: 707: 810:
low 312* 328= 342= 344 344 345 348
macro 519= 557= 660 712 812
macroaddr 6* 244* 275*
main 102* 148 174 180
me 103* 130
mes 142: 144 707: 708 810: 811
messem 268*
\f
tsvchlst 81.06.12. 16.11. page 32
mic 299* 320 321 334 340
micadr 276*
micro 145= 171= 474 520= 558= 661 662
mid 312* 330= 333 336 341 342 344=
move_vct_entry <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
359* 396 398 401 433 435 436
msg 124* 130 132 140 142: 150 153 156: 178 179 180 291* 458* 474: 486
493 534* 548: 552 563 564 565
netc_route 139 163 840:
netc_route1 178 681:
note 108* 141 142
not_found 315 392
not_ready 483 827
no_of_by 169= 555=
no_room 388
ok 224* 587
opsem 4* 267* 577 750 775
op_code 552=
ord 733
out_of_range 792
own 577
place_vct_elm <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
371* 718
port_nb 200* 761 786
process 2* 100* 266*
quesem 269*
ready 215* 666
rec 145 156 170= 171 359* 363 364 365 366 474 518= 556= 660 661
receipt_mes 284* 500* 835
rec_mes 285* 502* 512 515: 527
reference 124* 243* 285* 291* 458* 502* 534*
refuse 291* 493 533* 827 830 858
refuse_code 220* 564
remove 431
res 418* 423 424 440
result 300* 315= 324= 337= 345 347 373* 386 387 387= 388= 392= 404= 411* 440=
469* 479 483= 484 493 521= 559=
result_code 247* 286* 504* 521 579= 587 588 604= 662 714= 718 720 745= 747= 770=
772= 792= 794 797 813= 815 835
result_range 247* 286* 291* 300* 373* 411* 418* 469* 504* 535*
return 150 623 671 691
s 486 527 565 581 674 696 753 755 756 778 780 781
sem 7* 486 527 565 581 582 583 608 674 696 751 752 753 755 756
757 776 777 778 780 781 782
\f
tsvchlst 81.06.12. 16.11. page 33
sempointer 4* 104* 267* 273*
send 172= 518 519 520 556 557 558 662 712 812
shad 231* 426 430 431 763 788 795
shadhelp 256* 585 590
shadow 231* 256*
shix 366= 366 426 430 431 597= 763 788 795
signal 148 174 180 486 527 565 674 696
signal_to_vcc <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
457* 846
sleep 117* 159 216* 403
start 590 795
state 135 159 175= 364= 364 403= 429= 483 595= 666 666=
tail 196* 718 726 742 760 761 767 785 786 797
test 249*
tested 118* 175 217*
testopen 577
testout 578 588
timeoutsem 272*
timeout_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
756 781
tssup_sem_no 527 565 674
ts_addr 6* 275* 519 557 668 759 784
ts_pointer 268* 269*
ts_pointer_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
7*
u1 138= 162=
u3 139= 163= 178= 523= 563= 621
u4 132 140= 140 153 164= 179= 524= 524 552 564= 688
unknown_opcode <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
830
unknown_route <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
858
unknown_sender <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
714 813
v 125* 134= 135 145 158= 159 171 175
vac_size 764
vas_sem_no 755
vcat 742
vca_route 641:
vca_route1 641:
vcc 266* 745 749 770 774
vcc_addr 208* 815
vcc_inc 101* 135 145 159 171 175
vcc_mic 197* 372* 386 389 389 402 718 726 760 785 797
\f
tsvchlst 81.06.12. 16.11. page 34
vcc_name 251* 725= 733= 748 773
vcc_nb 252* 726= 733 734= 734
vcc_pri 795
vcc_sem_no 596
vcc_table 101* 232*
vchsem 270*
vch_help 100* 580
vch_int1 582 696
vch_mic_addr 520 558 669
vch_sem_no 581 608 753 778
vcit 767
vci_route 523 563 640:
vci_route1 640:
vct 232* 320 321 333 396 398 398 401 402 403 426 429 430 431 433
435 435 436 476 483 486 580 592 665 751 752 763 776 777 788
795
vct_index 237* 591= 592 596 597 662 665 718 751 752 763 776 777 788 795
845= 846
vct_max 238* 317 329 388 396 397 399= 399 434 436 437= 437
vc_addr_limit <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
389
vc_handler 2*
vc_incar_e 359* 383* 420*
vc_kind 198* 742 767
vc_l 134 158 388 591
vc_mic 145 171 320 321 334 340 363= 363 402= 476 594=
vc_range 125* 231* 238* 301* 312* 374* 382* 419* 459* 471*
version 13* 578
vic_size 789
vis_sem_no 780
w 582 583 608 757 782
wait 130 137 161 608
wanted 470* 474= 476 479
where 244* 660= 668
who 245* 661= 669
work 383* 396 401 420* 433 436
write 115* 138 162
z 254* 577 578 588
zone 254*
\f
tsvchlst 81.06.12. 16.11. page 35
AND 1
ARRAY 1
BEGIN 43
CASE 2
CONST 3
DIV 4
DO 27
DOWNTO 1
ELSE 18
END 50
FOR 5
FORWARD 2
IF 30
MOD 1
NIL 2
NOT 2
OF 3
OR 2
OTHERWISE 2
PACKED 2
PROCEDURE 9
RECORD 5
REPEAT 4
THEN 30
TO 4
TYPE 3
UNTIL 4
VAR 25
WITH 12
\f
jg5 1981.06.12 16.12
tsvch program
81.06.12. 16.12. pascal80 version 1981.04.01
name headline beginline endline appetite(words)
vch_help 108 130 186 : 90
find_vct_elm 312 315 355 : 10
move_vct_ent 360 363 368 : 5
place_vct_el 382 386 406 : 21
del_vct_elm 418 423 441 : 22
signal_to_vc 469 474 497 : 17
receipt_mes 510 512 529 : 11
refuse 542 548 565 : 11
vc_handler 13 577 868 : 209
code: 6 . 128 = 6272 bytes
end of PASCAL80 compilation
end
blocksread = 53
«eof»