|
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: 106752 (0x1a100) Types: TextFile Names: »tsathlst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »tsathlst«
\f tsathlst 81.06.23. 20.18. page 1 10 1 PROCESS at_handler( 20 2 op_sem : sempointer; 30 3 VAR 40 4 dc_address , 50 5 own_address : !macroaddr; 60 6 VAR 70 7 sem : !ts_pointer_vector 80 8 ); 90 9 100 10 CONST 110 11 version = "vers 3.18 /"; 120 12 130 13 140 14 (* ------------------------------------------------------------------------ 150 15 . 160 16 . The at_handler presupposes the following surroundings: 170 17 . 180 18 . - at runtime: 190 19 . 200 20 . Libraries: tslib. 210 21 . 220 22 . Externals: at_connector, receipt_message, reject_message. 230 23 . 240 24 . 250 25 . - at compile time: 260 26 . 270 27 . Environments: alarmenv, tsenvir 280 28 . 290 29 . Call: <object> = pascal80 <options> alarmenv tsenvir <source> 300 30 . 310 31 ------------------------------------------------------------------------ *) 320 32 \f tsathlst 81.06.23. 20.18. page 2 1010 33 (* 1020 34 INTRODUCTION TO THE AT-HANDLER: 1030 35 1040 36 1050 37 1060 38 Abbreviation list for the AT-HANDLER process: 1070 39 1080 40 --------------------------------------------- 1090 41 1100 42 ac alarm centre 1110 43 addr address 1120 44 at alarm terminal 1130 45 atc at-connector 1140 46 ath at-handler 1150 47 dc district centre 1160 48 del delete 1170 49 incar incarnation 1180 50 ins insert 1190 51 ix index 1200 52 locvar local variable 1210 53 mac macro address 1220 54 max greatest 1230 55 mic micro address 1240 56 min smallest 1250 57 msg message 1260 58 no number 1270 59 pac primary alarm centre 1280 60 rac receiving alarm centre 1290 61 rec receiver 1300 62 sac sending alarm centre 1310 63 sem semaphore 1320 64 send sender 1330 65 tss ts-supervisor 1340 66 \f tsathlst 81.06.23. 20.18. page 3 2010 67 Pseudo-code for the AT-HANDLER process: 2020 68 -------------------------------------- 2030 69 2040 70 ( this pseudo_code will be updated regularly - last time was 80.06.03 ) 2050 71 2060 72 2070 73 PROCESS at_handler("process_parameters"); 2080 74 2090 75 CONST 2100 76 . "process_constants, installation dependent" (may be moved to alarm-environment); 2110 77 2120 78 2130 79 TYPE 2140 80 . "message_format" (may be moved to alarm-environment); 2150 81 2160 82 VAR 2170 83 . "sac_rac_table"; 2180 84 . "atc_table, binary search"; 2190 85 2200 86 . "addressing_data"; 2210 87 . "atc_incarnation_data"; 2220 88 . "error_handling_data"; 2230 89 2240 90 . "input_semaphore"; 2250 91 2260 92 BEGIN 2270 93 . "initialization"; 2280 94 2290 95 . REPEAT 2300 96 . "collect a buffer on the input_semaphore, and 2310 97 . "handle the message in the buffer, corresponding to the 2320 98 . operation_code, and produce resulting messages"; 2330 99 2340 100 . "for each resulting message do addressing/indexing 2350 101 . do supervising and signal each of the buffers to the 2360 102 . corresponding input_semaphore"; 2370 103 2380 104 . UNTIL forever; 2390 105 2400 106 2410 107 END; 2420 108 2430 109 (end of pseudo_code) 2440 110 *) 2450 111 \f tsathlst 81.06.23. 20.18. page 4 3010 112 (* ------------------------------------------------------------------------ 3020 113 . Declaration part 1: sac_rac table and table control variables. 3030 114 ------------------------------------------------------------------------ *) 3040 115 3050 116 VAR 3060 117 sac_rac_tbl : sac_rac_table 3070 118 := sac_rac_table( sac_rac_lth *** 3080 119 sac_rac_tbl_entry ( sac_rac_entry( empty_addr, empty_addr ), false ) ); 3090 120 3100 121 sac_rac_ix : sac_rac_range := 1; 3110 122 sac_rac_top : upper_sac_rac_index := 0; (* Indicates the highest used sac_rac_index *) 3120 123 \f tsathlst 81.06.23. 20.18. page 5 4010 124 (* ------------------------------------------------------------------------ 4020 125 . Declaration part 2: ATC incarnation table and ATC shadow table and table 4030 126 . control variables. 4040 127 ------------------------------------------------------------------------ *) 4050 128 4060 129 VAR 4070 130 atc_tbl : atc_table 4080 131 := atc_table( atc_tbl_lth *** atc_description( 0, 1, 1, 0, poll_delay_time, 4090 132 (..), stop_code, stop_code, 1 ) ); 4100 133 4110 134 shadows : atc_shadow_table; 4120 135 4130 136 atc_tbl_ix : atc_table_range := 1; 4140 137 atc_tbl_top : upper_atc_tbl_index := 0; 4150 138 \f tsathlst 81.06.23. 20.18. page 6 5010 139 (* ------------------------------------------------------------------------ 5020 140 . Declaration part 3: resource handling. 5030 141 ------------------------------------------------------------------------ *) 5040 142 5050 143 VAR 5060 144 main_wait : ( 5070 145 idle_main , 5080 146 busy_main , 5090 147 busy_pool ) := idle_main; 5100 148 5110 149 claim_level : atc_inc_claim := claim_none; 5120 150 5130 151 resource_claims : integer := 0; 5140 152 5150 153 queue_lth : byte := 0; 5160 154 5170 155 aux_msg , 5180 156 working_0404_msg , 5190 157 working_0608_msg : reference; 5200 158 \f tsathlst 81.06.23. 20.18. page 7 6010 159 (* ------------------------------------------------------------------------ 6020 160 . Declaration part 4: main part. 6030 161 ------------------------------------------------------------------------ *) 6040 162 6050 163 TYPE 6060 164 route_vector = ARRAY( netc_route..netc_route1 ) OF byte; 6070 165 6080 166 CONST 6090 167 route_vct = route_vector( at_route, at_route1 ); 6100 168 6110 169 VAR 6120 170 main_msg : reference; 6130 171 6140 172 result_code : result_range := accepted; 6150 173 6160 174 atc_name : alfa; 6170 175 atc_no : integer := at_addr_limit; 6180 176 alfa_pos : 1..alfalength := 1; 6190 177 \f tsathlst 81.06.23. 20.18. page 8 7010 178 (* ------------------------------------------------------------------------ 7020 179 . Declaration part 5: supervision. 7030 180 ------------------------------------------------------------------------ *) 7040 181 7050 182 VAR 7060 183 book_up_pool : pool 1 OF updates; 7070 184 time_out_pool : pool 1 OF integer; 7080 185 7090 186 book_up_msg , 7100 187 time_out_msg : reference; 7110 188 7120 189 node_test_freq : integer := max_int; 7130 190 traffic_test_freq : integer := max_int; 7140 191 nt_time_out : boolean := false; 7150 192 7160 193 dc_disconnect : boolean := true; 7170 194 \f tsathlst 81.06.23. 20.18. page 9 8010 195 (* ------------------------------------------------------------------------ 8020 196 . Declaration part 6: miscellaneous. 8030 197 ------------------------------------------------------------------------ *) 8040 198 8050 199 VAR 8060 200 (*q test : boolean := false; q*) 8070 201 8080 202 z : zone; 8090 203 \f tsathlst 81.06.23. 20.18. page 10 9010 204 (* ------------------------------------------------------------------------ 9020 205 . Declaration part 7: Externals. 9030 206 ------------------------------------------------------------------------ *) 9040 207 9050 208 PROCESS atconnector( 9060 209 op_sem : sempointer; 9070 210 VAR 9080 211 main_sem , 9090 212 queue_sem : !ts_pointer; 9100 213 VAR 9110 214 ath_sem , 9120 215 driversem , 9130 216 com_pool : !sempointer; 9140 217 VAR 9150 218 actual_activity : !connector_state; 9160 219 VAR 9170 220 poll_delay : !integer; 9180 221 VAR 9190 222 traffic_test_freq : !integer; 9200 223 VAR 9210 224 traffic_counter : integer; 9220 225 VAR 9230 226 own_dc , 9240 227 own_ts : !macroaddr; 9250 228 ownaddr : !integer; 9260 229 channelno : !byte 9270 230 ); 9280 231 EXTERNAL; 9290 232 \f tsathlst 81.06.23. 20.18. page 11 10010 233 PROCEDURE book_up( 10020 234 VAR 10030 235 time_out_msg , 10040 236 book_up_msg : reference; 10050 237 seconds : integer 10060 238 ); 10070 239 10080 240 (* ----------------------------------------------------------------------- 10090 241 ----------------------------------------------------------------------- *) 10100 242 10110 243 BEGIN 10120 244 1 ! 10130 245 2 ! IF NOT nil( book_up_msg ) THEN 10140 246 3 ! BEGIN 10150 247 4 ! ! 10160 248 5 ! ! LOCK book_up_msg AS locvar: updates DO 10170 249 6 ! ! WITH locvar DO 10180 250 7 ! ! count:= seconds 10190 251 8 ! ! ; 10200 252 9 ! ! 10210 253 10 ! ! IF nil( time_out_msg ) THEN 10220 254 11 ! ! BEGIN 10230 255 12 ! ! ! 10240 256 13 ! ! ! book_up_msg^.u1:= update_req; 10250 257 14 ! ! ! book_up_msg^.u4:= #hc4 10260 258 15 ! ! ! 10270 259 16 ! ! END 10280 260 17 ! ! ELSE 10290 261 18 ! ! BEGIN 10300 262 19 ! ! ! 10310 263 20 ! ! ! book_up_msg^.u1:= book_req; 10320 264 21 ! ! ! book_up_msg^.u4:= #hc3; 10330 265 22 ! ! ! 10340 266 23 ! ! ! push( time_out_msg, book_up_msg ) 10350 267 24 ! ! ! 10360 268 25 ! ! END; 10370 269 26 ! ! 10380 270 27 ! ! signal( book_up_msg, sem( timeout_sem_no ).s^ ) 10390 271 28 ! ! 10400 272 29 ! END 10410 273 30 ! 10420 274 31 END; (* procedure book_up *) 10430 275 \f tsathlst 81.06.23. 20.18. page 12 11010 276 FUNCTION get_message( 11020 277 VAR 11030 278 msg : reference; 11040 279 route , 11050 280 opc : byte; 11060 281 noofbytes : integer; 11070 282 rec_macro : macroaddr; 11080 283 rec_micro : integer; 11090 284 upd : update_range; 11100 285 res : result_range 11110 286 ): boolean; 11120 287 11130 288 (* ----------------------------------------------------------------------- 11140 289 . Function : Returns as true with a message, supplied with a fully 11150 290 . updated alarmlabel, if one is available on the 11160 291 . semaphore, that holds the vacant resources, and if 11170 292 . no messages are hanging on the main semaphore. 11180 293 ----------------------------------------------------------------------- *) 11190 294 11200 295 BEGIN 11210 296 1 ! 11220 297 2 ! IF passive( sem( ath_sem_no ).w^ ) THEN 11230 298 3 ! BEGIN 11240 299 4 ! ! 11250 300 5 ! ! sensesem( msg, sem( com_pool ).w^ ); 11260 301 6 ! ! 11270 302 7 ! ! IF NOT nil( msg ) THEN 11280 303 8 ! ! LOCK msg AS locvar: alarmlabel DO 11290 304 9 ! ! WITH msg^, locvar DO 11300 305 10 ! ! BEGIN 11310 306 11 ! ! ! 11320 307 12 ! ! ! u3:= route; 11330 308 13 ! ! ! u4:= opc; 11340 309 14 ! ! ! 11350 310 15 ! ! ! no_of_by:= label_size + noofbytes; 11360 311 16 ! ! ! 11370 312 17 ! ! ! rec.macro:= rec_macro; 11380 313 18 ! ! ! rec.micro:= rec_micro; 11390 314 19 ! ! ! 11400 315 20 ! ! ! send.macro:= own_address; 11410 316 21 ! ! ! send.micro:= ath_mic_addr; 11420 317 22 ! ! ! 11430 318 23 ! ! ! update:= upd; 11440 319 24 ! ! ! result:= res; 11450 320 25 ! ! ! 11460 321 26 ! ! ! main_wait:= idle_main \f tsathlst 81.06.23. 20.18. page 13 11470 322 27 ! ! ! 11480 323 28 ! ! END 11490 324 29 ! ! ELSE 11500 325 30 ! ! main_wait:= busy_pool 11510 326 31 ! ! 11520 327 32 ! END 11530 328 33 ! ELSE 11540 329 34 ! main_wait:= busy_main 11550 330 35 ! ; 11560 331 36 ! 11570 332 37 ! get_message:= NOT nil( msg ) 11580 333 38 ! 11590 334 39 END; (* function get_message *) 11600 335 \f tsathlst 81.06.23. 20.18. page 14 12010 336 FUNCTION foreign_nc( 12020 337 node_address : macroaddr 12030 338 ): boolean; 12040 339 12050 340 (* ----------------------------------------------------------------------- 12060 341 . Function : Returns as true if - in the alarm net hierarchy - the node 12070 342 . in question is a foreign NC or located below a foreign NC. 12080 343 ----------------------------------------------------------------------- *) 12090 344 12100 345 BEGIN 12110 346 1 ! 12120 347 2 ! WITH node_address DO 12130 348 3 ! foreign_nc:= ( dc_addr <> own_address.dc_addr ) 12140 349 4 ! OR 12150 350 5 ! ( nc_addr <> own_address.nc_addr ) 12160 351 6 ! 12170 352 7 END; (* function foreign_nc *) 12180 353 12190 354 \f tsathlst 81.06.23. 20.18. page 15 13010 355 FUNCTION acting_ac( 13020 356 sac_rac_ix : sac_rac_range 13030 357 ): alarmnetaddr; 13040 358 13050 359 (* ----------------------------------------------------------------------- 13060 360 . function : Returns with the alarm net address of the AC that 13070 361 . for the moment is functioning as receiver/sender at the 13080 362 . entry in sac_rac table indicated by sac_rac_ix. 13090 363 ----------------------------------------------------------------------- *) 13100 364 13110 365 BEGIN 13120 366 1 ! 13130 367 2 ! WITH sac_rac_tbl( sac_rac_ix ).sac_rac_e DO 13140 368 3 ! IF ( substitute_ac_addr <> empty_addr ) THEN 13150 369 4 ! acting_ac:= substitute_ac_addr 13160 370 5 ! ELSE 13170 371 6 ! acting_ac:= usual_ac_addr 13180 372 7 ! 13190 373 8 END; (* function acting_ac *) 13200 374 \f tsathlst 81.06.23. 20.18. page 16 14010 375 FUNCTION search_sac_rac( 14020 376 ac_address : alarmnetaddr; 14030 377 VAR 14040 378 sac_rac_ix : sac_rac_range 14050 379 ): boolean; 14060 380 14070 381 (* ----------------------------------------------------------------------- 14080 382 . function : Searches the sac_rac table for an entry, where 14090 383 . ac_address is the functioning AC. 14100 384 ----------------------------------------------------------------------- *) 14110 385 14120 386 BEGIN 14130 387 1 ! 14140 388 2 ! sac_rac_ix:= 1; 14150 389 3 ! 14160 390 4 ! WHILE ( acting_ac( sac_rac_ix ) <> ac_address ) AND ( sac_rac_ix < sac_rac_top ) DO 14170 391 5 ! sac_rac_ix:= sac_rac_ix + 1; 14180 392 6 ! 14190 393 7 ! search_sac_rac:= acting_ac( sac_rac_ix ) = ac_address 14200 394 8 ! 14210 395 9 END; (* function search_sac_rac *) 14220 396 \f tsathlst 81.06.23. 20.18. page 17 15010 397 (*------------ atc_tbl-part ------------*) 15020 398 15030 399 FUNCTION find_atc_tbl_entry( 15040 400 mic_addr : integer; 15050 401 VAR 15060 402 atc_tbl_ix : atc_table_range 15070 403 ): boolean; 15080 404 15090 405 (* ---------------------------------------------------------------------- 15100 406 . This function returns the index of the element with the given micro address. 15110 407 . If not found, then the index is the place of the new element. 15120 408 . The search strategy is a binary search in an ordered list of 15130 409 . elements. The smallest element has the index = 1. 15140 410 . Error - will not appear. 15150 411 ----------------------------------------------------------------------- *) 15160 412 15170 413 VAR 15180 414 low, mid : atc_table_range; 15190 415 15200 416 BEGIN 15210 417 1 ! 15220 418 2 ! IF ( atc_tbl_top > 0 ) THEN 15230 419 3 ! BEGIN (* now the search is started *) 15240 420 4 ! ! 15250 421 5 ! ! low := 1; 15260 422 6 ! ! atc_tbl_ix:= atc_tbl_top; 15270 423 7 ! ! 15280 424 8 ! ! WHILE ( atc_tbl( atc_tbl_ix ).atc_mic_addr > mic_addr ) AND ( ( atc_tbl_ix - low ) > 0 ) DO 15290 425 9 ! ! BEGIN 15300 426 10 ! ! ! 15310 427 11 ! ! ! mid:= ( atc_tbl_ix - low ) DIV 2 + low; 15320 428 12 ! ! ! 15330 429 13 ! ! ! IF ( atc_tbl( mid ).atc_mic_addr < mic_addr ) THEN 15340 430 14 ! ! ! low:= mid + 1 15350 431 15 ! ! ! ELSE 15360 432 16 ! ! ! atc_tbl_ix:= mid 15370 433 17 ! ! ! 15380 434 18 ! ! END; 15390 435 19 ! ! 15400 436 20 ! ! IF ( atc_tbl( atc_tbl_ix ).atc_mic_addr <> mic_addr ) THEN 15410 437 21 ! ! BEGIN 15420 438 22 ! ! ! 15430 439 23 ! ! ! find_atc_tbl_entry:= false; 15440 440 24 ! ! ! atc_tbl_ix:= atc_tbl_ix + ord( atc_tbl( atc_tbl_ix ).atc_mic_addr < mic_addr ) 15450 441 25 ! ! ! 15460 442 26 ! ! END \f tsathlst 81.06.23. 20.18. page 18 15470 443 27 ! ! ELSE 15480 444 28 ! ! find_atc_tbl_entry:= true 15490 445 29 ! ! 15500 446 30 ! END 15510 447 31 ! ELSE 15520 448 32 ! BEGIN 15530 449 33 ! ! 15540 450 34 ! ! find_atc_tbl_entry:= false; 15550 451 35 ! ! atc_tbl_ix:= 1 15560 452 36 ! ! 15570 453 37 ! END 15580 454 38 ! 15590 455 39 END; (* find_atc_tbl_entry *) 15600 456 \f tsathlst 81.06.23. 20.18. page 19 16010 457 PROCEDURE place_atc_tbl_entry( 16020 458 atc_tbl_ix : atc_table_range; 16030 459 atc_mic : integer; 16040 460 pac_index : sac_rac_range 16050 461 ); 16060 462 16070 463 (* --------------------------------------------------------------------- 16080 464 . Function : Enters and initialize a new entry and re-arranges the 16090 465 . table. 16100 466 . Call only if there's room in the table and the position 16110 467 . in the table is located. 16120 468 ----------------------------------------------------------------------- *) 16130 469 16140 470 VAR 16150 471 work_ix : upper_atc_tbl_index; 16160 472 work_entry : atc_description; 16170 473 16180 474 BEGIN 16190 475 1 ! 16200 476 2 ! work_entry:= atc_tbl( atc_tbl_top + 1 ); 16210 477 3 ! 16220 478 4 ! FOR work_ix:= atc_tbl_top DOWNTO atc_tbl_ix DO 16230 479 5 ! atc_tbl( work_ix + 1 ):= atc_tbl( work_ix ); 16240 480 6 ! 16250 481 7 ! atc_tbl( atc_tbl_ix ):= work_entry; 16260 482 8 ! 16270 483 9 ! WITH atc_tbl( atc_tbl_ix ) DO 16280 484 10 ! BEGIN 16290 485 11 ! ! 16300 486 12 ! ! atc_mic_addr := atc_mic; 16310 487 13 ! ! pac_ix := pac_index; 16320 488 14 ! ! traffic_count:= 0; 16330 489 15 ! ! delay:= poll_delay_time; 16340 490 16 ! ! claim_set:= (..); 16350 491 17 ! ! actual_activity:= stop_code; 16360 492 18 ! ! wanted_activity := stop_code 16370 493 19 ! ! 16380 494 20 ! END; 16390 495 21 ! 16400 496 22 ! atc_tbl_top:= atc_tbl_top + 1 16410 497 23 ! 16420 498 24 END (* place_atc_tbl_entry *); 16430 499 \f tsathlst 81.06.23. 20.18. page 20 17010 500 PROCEDURE del_atc_tbl_entry( 17020 501 atc_tbl_ix : atc_table_range 17030 502 ); 17040 503 17050 504 (* --------------------------------------------------------------------- 17060 505 . Function : Removes the entry and re-arranges the table. 17070 506 . Call only if the entry in question is located. 17080 507 ---------------------------------------------------------------------- *) 17090 508 17100 509 VAR 17110 510 work_entry : atc_description; 17120 511 17130 512 BEGIN 17140 513 1 ! 17150 514 2 ! IF NOT nil( shadows( atc_tbl( atc_tbl_ix ).shad_ix ) ) THEN 17160 515 3 ! remove( shadows( atc_tbl( atc_tbl_ix ).shad_ix ) ); 17170 516 4 ! 17180 517 5 ! work_entry:= atc_tbl( atc_tbl_ix ); 17190 518 6 ! 17200 519 7 ! WHILE ( atc_tbl_ix < atc_tbl_top ) DO 17210 520 8 ! BEGIN 17220 521 9 ! ! 17230 522 10 ! ! atc_tbl( atc_tbl_ix ):= atc_tbl( atc_tbl_ix + 1 ); 17240 523 11 ! ! atc_tbl_ix:= atc_tbl_ix + 1 17250 524 12 ! ! 17260 525 13 ! END; 17270 526 14 ! 17280 527 15 ! atc_tbl( atc_tbl_top ):= work_entry; 17290 528 16 ! atc_tbl_top := atc_tbl_top - 1 17300 529 17 ! 17310 530 18 END (* del_atc_tbl_entry *); 17320 531 \f tsathlst 81.06.23. 20.18. page 21 18010 532 PROCEDURE decrease_claims( 18020 533 VAR 18030 534 claim_set : atc_claim_set; 18040 535 msg_kind : atc_inc_claim 18050 536 ); 18060 537 18070 538 (* ----------------------------------------------------------------------- 18080 539 ----------------------------------------------------------------------- *) 18090 540 18100 541 BEGIN 18110 542 1 ! 18120 543 2 ! IF msg_kind IN claim_set THEN 18130 544 3 ! BEGIN 18140 545 4 ! ! 18150 546 5 ! ! claim_set:= claim_set - (.msg_kind.); 18160 547 6 ! ! resource_claims:= resource_claims - 1 18170 548 7 ! ! 18180 549 8 ! END 18190 550 9 ! 18200 551 10 END; (* procedure decrease_claims *) 18210 552 \f tsathlst 81.06.23. 20.18. page 22 19010 553 PROCEDURE increase_claims( 19020 554 first_ix , 19030 555 last_ix : atc_table_range; 19040 556 msg_kind : atc_inc_claim 19050 557 ); 19060 558 19070 559 (* ----------------------------------------------------------------------- 19080 560 ----------------------------------------------------------------------- *) 19090 561 19100 562 BEGIN 19110 563 1 ! 19120 564 2 ! FOR first_ix:= first_ix TO last_ix DO 19130 565 3 ! WITH atc_tbl( first_ix ) DO 19140 566 4 ! IF NOT ( msg_kind IN claim_set ) THEN 19150 567 5 ! BEGIN 19160 568 6 ! ! 19170 569 7 ! ! claim_set:= claim_set + (.msg_kind.); 19180 570 8 ! ! resource_claims:= resource_claims + 1 19190 571 9 ! ! 19200 572 10 ! END 19210 573 11 ! ; 19220 574 12 ! 19230 575 13 ! IF ( msg_kind > claim_level ) THEN 19240 576 14 ! claim_level:= msg_kind 19250 577 15 ! 19260 578 16 END; (* procedure increase_claims *) 19270 579 \f tsathlst 81.06.23. 20.18. page 23 20010 580 PROCEDURE atc_stop_poll( 20020 581 first_ix : atc_table_range; 20030 582 last_ix : upper_atc_tbl_index 20040 583 ); 20050 584 20060 585 (* ----------------------------------------------------------------------- 20070 586 ----------------------------------------------------------------------- *) 20080 587 20090 588 VAR 20100 589 msg : reference; 20110 590 20120 591 BEGIN 20130 592 1 ! 20140 593 2 ! IF ( first_ix <= last_ix ) THEN 20150 594 3 ! REPEAT 20160 595 4 ! ! 20170 596 5 ! ! WITH atc_tbl( first_ix ), sac_rac_tbl( pac_ix ) DO 20180 597 6 ! ! IF ( disconnected AND ( actual_activity = start_code ) ) 20190 598 7 ! ! OR 20200 599 8 ! ! ( dc_disconnect AND ( actual_activity = service_code ) ) THEN 20210 600 9 ! ! IF get_message( msg, netc_route1, #h90, 0, 20220 601 10 ! ! own_address, atc_mic_addr, stop_code, accepted ) THEN 20230 602 11 ! ! BEGIN 20240 603 12 ! ! ! 20250 604 13 ! ! ! signal( msg, sem( ts_vect_ix ).s^ ); 20260 605 14 ! ! ! 20270 606 15 ! ! ! decrease_claims( claim_set, msg_0900_stop ); 20280 607 16 ! ! ! 20290 608 17 ! ! ! first_ix:= ( first_ix MOD last_ix ) + 1 20300 609 18 ! ! ! 20310 610 19 ! ! END 20320 611 20 ! ! ELSE 20330 612 21 ! ! increase_claims( first_ix, last_ix, msg_0900_stop ) 20340 613 22 ! ! 20350 614 23 ! UNTIL ( first_ix = 1 ) OR ( main_wait <> idle_main ) 20360 615 24 ! 20370 616 25 END; (* procedure atc_stop_poll *) 20380 617 \f tsathlst 81.06.23. 20.18. page 24 21010 618 PROCEDURE atc_start_poll( 21020 619 first_ix : atc_table_range; 21030 620 last_ix : upper_atc_tbl_index 21040 621 ); 21050 622 21060 623 (* ----------------------------------------------------------------------- 21070 624 ----------------------------------------------------------------------- *) 21080 625 21090 626 VAR 21100 627 msg : reference; 21110 628 21120 629 BEGIN 21130 630 1 ! 21140 631 2 ! IF ( first_ix <= last_ix ) THEN 21150 632 3 ! REPEAT 21160 633 4 ! ! 21170 634 5 ! ! WITH atc_tbl( first_ix ), sac_rac_tbl( pac_ix ) DO 21180 635 6 ! ! IF ( actual_activity <> break_code ) THEN 21190 636 7 ! ! IF ( actual_activity <> wanted_activity ) THEN 21200 637 8 ! ! IF ( ( NOT disconnected ) AND ( wanted_activity = start_code ) ) 21210 638 9 ! ! OR 21220 639 10 ! ! ( ( NOT dc_disconnect ) AND ( wanted_activity = service_code ) ) THEN 21230 640 11 ! ! IF get_message( msg, netc_route1, #h90, 4, own_address, atc_mic_addr, 21240 641 12 ! ! wanted_activity, accepted ) THEN 21250 642 13 ! ! BEGIN 21260 643 14 ! ! ! 21270 644 15 ! ! ! LOCK msg AS locvar: al_form_0900 DO 21280 645 16 ! ! ! WITH locvar DO 21290 646 17 ! ! ! BEGIN 21300 647 18 ! ! ! ! 21310 648 19 ! ! ! ! t_e_c_init:= 0; 21320 649 20 ! ! ! ! frequence:= delay 21330 650 21 ! ! ! ! 21340 651 22 ! ! ! END 21350 652 23 ! ! ! ; 21360 653 24 ! ! ! 21370 654 25 ! ! ! signal( msg, sem( ts_vect_ix ).s^ ); 21380 655 26 ! ! ! 21390 656 27 ! ! ! decrease_claims( claim_set, msg_0900_start ); 21400 657 28 ! ! ! 21410 658 29 ! ! ! first_ix:= ( first_ix MOD last_ix ) + 1 21420 659 30 ! ! ! 21430 660 31 ! ! END 21440 661 32 ! ! ELSE 21450 662 33 ! ! increase_claims( first_ix, last_ix, msg_0900_start ) 21460 663 34 ! ! \f tsathlst 81.06.23. 20.18. page 25 21470 664 35 ! UNTIL ( first_ix = 1 ) OR ( main_wait <> idle_main ) 21480 665 36 ! 21490 666 37 END; (* procedure atc_start_poll *) 21500 667 \f tsathlst 81.06.23. 20.18. page 26 22010 668 PROCEDURE atc_supervise; 22020 669 22030 670 (* ----------------------------------------------------------------------- 22040 671 ----------------------------------------------------------------------- *) 22050 672 22060 673 VAR 22070 674 msg : reference; 22080 675 22090 676 BEGIN 22100 677 1 ! 22110 678 2 ! IF ( atc_tbl_top > 0 ) THEN 22120 679 3 ! BEGIN 22130 680 4 ! ! 22140 681 5 ! ! atc_tbl_ix:= 1; 22150 682 6 ! ! 22160 683 7 ! ! REPEAT 22170 684 8 ! ! ! 22180 685 9 ! ! ! WITH atc_tbl( atc_tbl_ix ) DO 22190 686 10 ! ! ! IF ( actual_activity <> break_code ) THEN 22200 687 11 ! ! ! BEGIN 22210 688 12 ! ! ! ! 22220 689 13 ! ! ! ! IF ( traffic_count > 0 ) THEN (* - Traffic since the last test - *) 22230 690 14 ! ! ! ! traffic_count:= 0 22240 691 15 ! ! ! ! ELSE 22250 692 16 ! ! ! ! IF ( traffic_count < 0 ) THEN 22260 693 17 ! ! ! ! BEGIN (* - No reaction on the last node test - *) 22270 694 18 ! ! ! ! ! 22280 695 19 ! ! ! ! END 22290 696 20 ! ! ! ! ELSE 22300 697 21 ! ! ! ! BEGIN (* - No traffic since the last node test. Node test the ATC - *) 22310 698 22 ! ! ! ! ! 22320 699 23 ! ! ! ! ! traffic_count:= -1; 22330 700 24 ! ! ! ! ! 22340 701 25 ! ! ! ! ! IF get_message( msg, netc_route1, #hc0, 0, 22350 702 26 ! ! ! ! ! own_address, atc_mic_addr, read_code, accepted ) THEN 22360 703 27 ! ! ! ! ! BEGIN 22370 704 28 ! ! ! ! ! ! 22380 705 29 ! ! ! ! ! ! signal( msg, sem( ts_vect_ix ).s^ ); 22390 706 30 ! ! ! ! ! ! 22400 707 31 ! ! ! ! ! ! decrease_claims( claim_set, msg_1200 ); 22410 708 32 ! ! ! ! ! ! 22420 709 33 ! ! ! ! ! ! atc_tbl_ix:= ( atc_tbl_ix MOD atc_tbl_top ) + 1 22430 710 34 ! ! ! ! ! ! 22440 711 35 ! ! ! ! ! END 22450 712 36 ! ! ! ! ! ELSE 22460 713 37 ! ! ! ! ! increase_claims( atc_tbl_ix, atc_tbl_top, msg_1200 ) \f tsathlst 81.06.23. 20.18. page 27 22470 714 38 ! ! ! ! ! 22480 715 39 ! ! ! ! END 22490 716 40 ! ! ! ! 22500 717 41 ! ! ! END 22510 718 42 ! ! ! 22520 719 43 ! ! UNTIL ( atc_tbl_ix = 1 ) OR ( main_wait <> idle_main ) 22530 720 44 ! ! 22540 721 45 ! END 22550 722 46 ! 22560 723 47 END; (* procedure atc_supervise *) 22570 724 \f tsathlst 81.06.23. 20.18. page 28 23010 725 PROCEDURE ac_check_connection( 23020 726 sac_rac_ix : sac_rac_range 23030 727 ); 23040 728 23050 729 (* ----------------------------------------------------------------------- 23060 730 . Function : Signals a check of the connection to an disconnected AC 23070 731 . if there is a vacant resource. 23080 732 ----------------------------------------------------------------------- *) 23090 733 23100 734 VAR 23110 735 msg : reference; 23120 736 23130 737 BEGIN 23140 738 1 ! 23150 739 2 ! WITH sac_rac_tbl( sac_rac_ix ) DO 23160 740 3 ! IF disconnected THEN 23170 741 4 ! IF get_message( msg, at_route, #hc8, 0, 23180 742 5 ! acting_ac( sac_rac_ix ).macro, acting_ac( sac_rac_ix ).micro, read_code, accepted ) THEN 23190 743 6 ! signal( msg, sem( tssup_sem_no ).s^ ) 23200 744 7 ! 23210 745 8 END; (* procedure ac_check_connection *) 23220 746 \f tsathlst 81.06.23. 20.18. page 29 24010 747 BEGIN 24020 748 1 ! (*------------ main program ------------*) 24030 749 2 ! 24040 750 3 ! testopen( z, own.incname, op_sem ); 24050 751 4 ! testout( z, version, ts_env_vers ); 24060 752 5 ! 24070 753 6 ! (*------------ initialisation ------------*) 24080 754 7 ! 24090 755 8 ! FOR atc_tbl_ix:= 1 TO atc_tbl_lth DO 24100 756 9 ! WITH atc_tbl( atc_tbl_ix ) DO 24110 757 10 ! BEGIN 24120 758 11 ! ! 24130 759 12 ! ! shad_ix:= atc_tbl_ix; 24140 760 13 ! ! ts_vect_ix:= atc_sem_no + 2 * ( atc_tbl_ix - 1 ) 24150 761 14 ! ! 24160 762 15 ! END; 24170 763 16 ! 24180 764 17 ! alloc( book_up_msg, book_up_pool, sem( ath_sem_no ).s^ ); 24190 765 18 ! 24200 766 19 ! WITH book_up_msg^ DO 24210 767 20 ! u3:= netc_route1; 24220 768 21 ! 24230 769 22 ! LOCK book_up_msg AS locvar: updates DO 24240 770 23 ! WITH locvar DO 24250 771 24 ! object:= ath_mic_addr; 24260 772 25 ! 24270 773 26 ! alloc( time_out_msg, time_out_pool, sem( ath_sem_no ).s^ ); 24280 774 27 ! 24290 775 28 ! WITH time_out_msg^ DO 24300 776 29 ! BEGIN 24310 777 30 ! ! 24320 778 31 ! ! u1:= book_req; 24330 779 32 ! ! u3:= netc_route1; 24340 780 33 ! ! u4:= #hc2 24350 781 34 ! ! 24360 782 35 ! END; 24370 783 36 ! 24380 784 37 ! LOCK time_out_msg AS locvar: integer DO 24390 785 38 ! locvar:= ath_mic_addr; 24400 786 39 ! 24410 787 40 ! IF ( link( "atconnector ", atconnector ) = accepted ) THEN 24420 788 41 ! book_up( time_out_msg, book_up_msg, node_test_freq ); 24430 789 42 ! \f tsathlst 81.06.23. 20.18. page 30 25010 790 43 ! REPEAT (* ......................... forever .............................. *) 25020 791 44 ! ! 25030 792 45 ! ! 25040 793 46 ! ! REPEAT 25050 794 47 ! ! ! 25060 795 48 ! ! ! CASE main_wait OF 25070 796 49 ! ! ! ! 25080 797 50 ! ! ! ! idle_main, 25090 798 51 ! ! ! ! busy_main: 25100 799 52 ! ! ! ! wait( main_msg, sem( ath_sem_no ).w^ ) 25110 800 53 ! ! ! ! ; 25120 801 54 ! ! ! ! 25130 802 55 ! ! ! ! busy_pool: 25140 803 56 ! ! ! ! CASE waitsd( main_msg, sem( ath_sem_no ).w^, wait_sem_delay ) OF 25150 804 57 ! ! ! ! ! 25160 805 58 ! ! ! ! ! a_semaphore: 25170 806 59 ! ! ! ! ! ; 25180 807 60 ! ! ! ! ! 25190 808 61 ! ! ! ! ! a_delay: 25200 809 62 ! ! ! ! ! ; 25210 810 63 ! ! ! ! ! 25220 811 64 ! ! ! ! ! OTHERWISE 25230 812 65 ! ! ! ! END 25240 813 66 ! ! ! ! ; 25250 814 67 ! ! ! ! 25260 815 68 ! ! ! ! OTHERWISE 25270 816 69 ! ! ! END 25280 817 70 ! ! ! 25290 818 71 ! ! UNTIL NOT nil( main_msg ) 25300 819 72 ! ! ; 25310 820 73 ! ! 25320 821 74 ! ! result_code:= accepted; 25330 822 75 ! ! 25340 823 76 ! ! (*q if test then testout(z,"main_msg u3:",main_msg^.u3); 25350 824 77 ! ! if test then testout(z," u4:",main_msg^.u4); q*) 25360 825 78 ! ! 25370 826 79 ! ! WITH main_msg^ DO 25380 827 80 ! ! CASE u3 (* this is the routings information *) OF 25390 828 81 ! ! ! (* And then we handle the message depending on the receiver address. 25400 829 82 ! ! ! *) 25410 830 83 ! ! ! 25420 831 84 ! ! ! dummy_route: 25430 832 85 ! ! ! return( main_msg ) 25440 833 86 ! ! ! ; 25450 834 87 ! ! ! \f tsathlst 81.06.23. 20.18. page 31 26010 835 88 ! ! ! at_route: (* Message from an ATC to be routed through ATH *) 26020 836 89 ! ! ! BEGIN 26030 837 90 ! ! ! ! 26040 838 91 ! ! ! ! (*q if test then testout(z,"from an atc ",0); q*) 26050 839 92 ! ! ! ! 26060 840 93 ! ! ! ! CASE u4 OF (* Operation code *) 26070 841 94 ! ! ! ! ! 26080 842 95 ! ! ! ! ! (* 00.01 - Log to PAC. Enter AC net addresses *) 26090 843 96 ! ! ! ! ! #h01: 26100 844 97 ! ! ! ! ! LOCK main_msg AS locvar: al_form_0001 DO 26110 845 98 ! ! ! ! ! WITH locvar, al_label, aac_address DO 26120 846 99 ! ! ! ! ! IF ( 0 < ts_add( 0 ) ) AND ( ts_add( 0 ) <= sac_rac_top ) THEN 26130 847 100 ! ! ! ! ! BEGIN 26140 848 101 ! ! ! ! ! ! 26150 849 102 ! ! ! ! ! ! rec:= acting_ac( ts_add( 0 ) ); 26160 850 103 ! ! ! ! ! ! 26170 851 104 ! ! ! ! ! ! IF ( 0 < micro ) AND ( micro <= sac_rac_top ) THEN 26180 852 105 ! ! ! ! ! ! aac_address:= acting_ac( micro ) 26190 853 106 ! ! ! ! ! ! 26200 854 107 ! ! ! ! ! END 26210 855 108 ! ! ! ! ! ELSE 26220 856 109 ! ! ! ! ! result_code:= unknown_receiver 26230 857 110 ! ! ! ! ! ; 26240 858 111 ! ! ! ! ! 26250 859 112 ! ! ! ! ! (* 03.00 *) 26260 860 113 ! ! ! ! ! (* 03.01 *) 26270 861 114 ! ! ! ! ! (* 03.02 - Alarms. Enter AC address *) 26280 862 115 ! ! ! ! ! #h30..#h32: 26290 863 116 ! ! ! ! ! LOCK main_msg AS locvar: alarmlabel DO 26300 864 117 ! ! ! ! ! WITH locvar DO 26310 865 118 ! ! ! ! ! BEGIN 26320 866 119 ! ! ! ! ! ! 26330 867 120 ! ! ! ! ! ! IF ( ( 0 < ts_add( 0 ) ) AND ( ts_add( 0 ) <= sac_rac_top ) ) THEN 26340 868 121 ! ! ! ! ! ! rec:= acting_ac( ts_add( 0 ) ) 26350 869 122 ! ! ! ! ! ! ELSE 26360 870 123 ! ! ! ! ! ! result_code:= unknown_receiver; 26370 871 124 ! ! ! ! ! ! 26380 872 125 ! ! ! ! ! ! (* inconsistency between ac_address table in ATC and sac_rac_table 26390 873 126 ! ! ! ! ! ! - maybe because of a time dependent event *) 26400 874 127 ! ! ! ! ! ! 26410 875 128 ! ! ! ! ! END 26420 876 129 ! ! ! ! ! ; 26430 877 130 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 32 27010 878 131 ! ! ! ! ! (* 09.01 - Receipt for change of poll activity. Actual activity is modified of ATC. *) 27020 879 132 ! ! ! ! ! #h91: 27030 880 133 ! ! ! ! ! LOCK main_msg AS locvar: al_form_0900 DO 27040 881 134 ! ! ! ! ! WITH locvar, al_label DO 27050 882 135 ! ! ! ! ! IF find_atc_tbl_entry( send.micro, atc_tbl_ix ) THEN 27060 883 136 ! ! ! ! ! IF ( result = accepted ) THEN 27070 884 137 ! ! ! ! ! WITH atc_tbl( atc_tbl_ix ), sac_rac_tbl( pac_ix ) DO 27080 885 138 ! ! ! ! ! BEGIN 27090 886 139 ! ! ! ! ! ! 27100 887 140 ! ! ! ! ! ! wanted_activity:= update; 27110 888 141 ! ! ! ! ! ! 27120 889 142 ! ! ! ! ! ! IF disconnected OR dc_disconnect THEN 27130 890 143 ! ! ! ! ! ! atc_stop_poll( atc_tbl_ix, atc_tbl_ix ) 27140 891 144 ! ! ! ! ! ! 27150 892 145 ! ! ! ! ! END 27160 893 146 ! ! ! ! ! ELSE 27170 894 147 ! ! ! ! ! ELSE 27180 895 148 ! ! ! ! ! result_code:= unknown_sender 27190 896 149 ! ! ! ! ! ; 27200 897 150 ! ! ! ! ! 27210 898 151 ! ! ! ! ! OTHERWISE 27220 899 152 ! ! ! ! ! (* Other operation code are passed uninspected and unaltered *) 27230 900 153 ! ! ! ! ! 27240 901 154 ! ! ! ! END (* case u4 *) 27250 902 155 ! ! ! ! ; 27260 903 156 ! ! ! ! 27270 904 157 ! ! ! ! IF ( result_code <> accepted ) THEN 27280 905 158 ! ! ! ! reject_message( main_msg, 27290 906 159 ! ! ! ! sem( tssup_sem_no ).s, route_vct( u3 ), own_address, ath_mic_addr, result_code ) 27300 907 160 ! ! ! ! ELSE 27310 908 161 ! ! ! ! signal( main_msg, sem( tssup_sem_no ).s^ ) 27320 909 162 ! ! ! ! 27330 910 163 ! ! ! END (* Message from an ATC *) 27340 911 164 ! ! ! ; 27350 912 165 ! ! ! \f tsathlst 81.06.23. 20.18. page 33 28010 913 166 ! ! ! at_route1: (* Message from ATC to ATH *) 28020 914 167 ! ! ! BEGIN 28030 915 168 ! ! ! ! 28040 916 169 ! ! ! ! CASE u4 OF (* Operation code *) 28050 917 170 ! ! ! ! ! 28060 918 171 ! ! ! ! ! (* 01.02 - Rejected message *) 28070 919 172 ! ! ! ! ! #h12: 28080 920 173 ! ! ! ! ! testout( z, "garb return ", u3 ) 28090 921 174 ! ! ! ! ! ; 28100 922 175 ! ! ! ! ! 28110 923 176 ! ! ! ! ! 28120 924 177 ! ! ! ! ! (* 04.05 - Receipt for group control. Dropped unless ATC says serious error *) 28130 925 178 ! ! ! ! ! #h45: 28140 926 179 ! ! ! ! ! LOCK main_msg AS locvar: alarmlabel DO 28150 927 180 ! ! ! ! ! WITH locvar DO 28160 928 181 ! ! ! ! ! IF NOT ( result IN (.accepted, not_steering, unknown_sender.) ) THEN 28170 929 182 ! ! ! ! ! BEGIN 28180 930 183 ! ! ! ! ! ! 28190 931 184 ! ! ! ! ! ! result_code:= result; 28200 932 185 ! ! ! ! ! ! 28210 933 186 ! ! ! ! ! ! LOCK working_0404_msg AS a_label: alarmlabel DO 28220 934 187 ! ! ! ! ! ! rec:= a_label.send 28230 935 188 ! ! ! ! ! ! 28240 936 189 ! ! ! ! ! END 28250 937 190 ! ! ! ! ! ; 28260 938 191 ! ! ! ! ! 28270 939 192 ! ! ! ! ! (* 09.01 - Receipt for modification of connector state. *) 28280 940 193 ! ! ! ! ! #h91: 28290 941 194 ! ! ! ! ! ; 28300 942 195 ! ! ! ! ! 28310 943 196 ! ! ! ! ! (* 12.15 - Receipt for completion of break routine. *) 28320 944 197 ! ! ! ! ! #hcf: 28330 945 198 ! ! ! ! ! LOCK main_msg AS locvar: alarmlabel DO 28340 946 199 ! ! ! ! ! WITH locvar, send DO 28350 947 200 ! ! ! ! ! IF find_atc_tbl_entry( micro, atc_tbl_ix ) THEN 28360 948 201 ! ! ! ! ! BEGIN 28370 949 202 ! ! ! ! ! ! 28380 950 203 ! ! ! ! ! ! del_atc_tbl_entry( atc_tbl_ix ); 28390 951 204 ! ! ! ! ! ! 28400 952 205 ! ! ! ! ! END 28410 953 206 ! ! ! ! ! ; 28420 954 207 ! ! ! ! ! 28430 955 208 ! ! ! ! ! 28440 956 209 ! ! ! ! ! OTHERWISE 28450 957 210 ! ! ! ! ! testout( z, "at_route1 ", u4 ) 28460 958 211 ! ! ! ! END \f tsathlst 81.06.23. 20.18. page 34 28470 959 212 ! ! ! ! ; 28480 960 213 ! ! ! ! 28490 961 214 ! ! ! ! IF ( result_code <> accepted ) THEN 28500 962 215 ! ! ! ! signal( main_msg, sem( tssup_sem_no ).s^ ) 28510 963 216 ! ! ! ! ELSE 28520 964 217 ! ! ! ! return( main_msg ) 28530 965 218 ! ! ! ! 28540 966 219 ! ! ! END 28550 967 220 ! ! ! ; 28560 968 221 ! ! ! \f tsathlst 81.06.23. 20.18. page 35 29010 969 222 ! ! ! netc_route1: (* Message from TSS or from time out process to ATH *) 29020 970 223 ! ! ! BEGIN 29030 971 224 ! ! ! ! 29040 972 225 ! ! ! ! CASE u4 OF (* Operation code *) 29050 973 226 ! ! ! ! ! 29060 974 227 ! ! ! ! ! (* 01.02 - Rejected message *) 29070 975 228 ! ! ! ! ! #h12: 29080 976 229 ! ! ! ! ! testout( z, "garb return ", u3 ); 29090 977 230 ! ! ! ! ! ; 29100 978 231 ! ! ! ! ! 29110 979 232 ! ! ! ! ! (* 02.00 - Broadcast. DC fall-out. *) 29120 980 233 ! ! ! ! ! #h20: 29130 981 234 ! ! ! ! ! LOCK main_msg AS locvar: al_form_020_ DO 29140 982 235 ! ! ! ! ! WITH locvar, al_net_addr, macro DO 29150 983 236 ! ! ! ! ! IF ( dc_addr <> own_address.dc_addr ) THEN 29160 984 237 ! ! ! ! ! BEGIN (* - Foreign DC - *) 29170 985 238 ! ! ! ! ! ! 29180 986 239 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 29190 987 240 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 29200 988 241 ! ! ! ! ! ! IF ( acting_ac( sac_rac_ix ).macro.dc_addr <> own_address.dc_addr ) THEN 29210 989 242 ! ! ! ! ! ! sac_rac_tbl( sac_rac_ix ).disconnected:= true 29220 990 243 ! ! ! ! ! ! ; 29230 991 244 ! ! ! ! ! ! 29240 992 245 ! ! ! ! ! ! atc_stop_poll( 1, atc_tbl_top ) 29250 993 246 ! ! ! ! ! ! 29260 994 247 ! ! ! ! ! END 29270 995 248 ! ! ! ! ! ELSE 29280 996 249 ! ! ! ! ! BEGIN (* - Own DC - *) 29290 997 250 ! ! ! ! ! ! 29300 998 251 ! ! ! ! ! ! dc_disconnect:= true; 29310 999 252 ! ! ! ! ! ! 29320 1000 253 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 29330 1001 254 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 29340 1002 255 ! ! ! ! ! ! IF foreign_nc( acting_ac( sac_rac_ix ).macro ) THEN 29350 1003 256 ! ! ! ! ! ! sac_rac_tbl( sac_rac_ix ).disconnected:= true 29360 1004 257 ! ! ! ! ! ! ; 29370 1005 258 ! ! ! ! ! ! 29380 1006 259 ! ! ! ! ! ! atc_stop_poll( 1, atc_tbl_top ) 29390 1007 260 ! ! ! ! ! ! 29400 1008 261 ! ! ! ! ! END 29410 1009 262 ! ! ! ! ! ; 29420 1010 263 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 36 30010 1011 264 ! ! ! ! ! (* 02.01 - Broadcast. DC re-established. *) 30020 1012 265 ! ! ! ! ! #h21: 30030 1013 266 ! ! ! ! ! LOCK main_msg AS locvar: al_form_020_ DO 30040 1014 267 ! ! ! ! ! WITH locvar, al_net_addr, macro DO 30050 1015 268 ! ! ! ! ! IF ( dc_addr <> own_address.dc_addr ) THEN 30060 1016 269 ! ! ! ! ! BEGIN (* - Foreign DC - *) 30070 1017 270 ! ! ! ! ! ! 30080 1018 271 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 30090 1019 272 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 30100 1020 273 ! ! ! ! ! ! IF ( acting_ac( sac_rac_ix ).macro.dc_addr <> own_address.dc_addr ) THEN 30110 1021 274 ! ! ! ! ! ! ac_check_connection( sac_rac_ix ) 30120 1022 275 ! ! ! ! ! ! 30130 1023 276 ! ! ! ! ! END 30140 1024 277 ! ! ! ! ! ELSE 30150 1025 278 ! ! ! ! ! BEGIN (* - Own DC - *) 30160 1026 279 ! ! ! ! ! ! 30170 1027 280 ! ! ! ! ! ! IF dc_disconnect THEN 30180 1028 281 ! ! ! ! ! ! IF get_message( aux_msg, at_route, #hc8, 0, 30190 1029 282 ! ! ! ! ! ! dc_address, dc_erh_mic_addr, read_code, accepted ) THEN 30200 1030 283 ! ! ! ! ! ! signal( aux_msg, sem( tssup_sem_no ).s^ ) 30210 1031 284 ! ! ! ! ! ! ; 30220 1032 285 ! ! ! ! ! ! 30230 1033 286 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 30240 1034 287 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 30250 1035 288 ! ! ! ! ! ! IF foreign_nc( acting_ac( sac_rac_ix ).macro ) THEN 30260 1036 289 ! ! ! ! ! ! ac_check_connection( sac_rac_ix ) 30270 1037 290 ! ! ! ! ! ! 30280 1038 291 ! ! ! ! ! END 30290 1039 292 ! ! ! ! ! ; 30300 1040 293 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 37 31010 1041 294 ! ! ! ! ! (* 02.02 - Broadcast. NC fall-out. *) 31020 1042 295 ! ! ! ! ! #h22: 31030 1043 296 ! ! ! ! ! LOCK main_msg AS locvar: al_form_020_ DO 31040 1044 297 ! ! ! ! ! WITH locvar, al_net_addr, macro DO 31050 1045 298 ! ! ! ! ! IF foreign_nc( macro ) THEN 31060 1046 299 ! ! ! ! ! BEGIN (* - Foreign NC - *) 31070 1047 300 ! ! ! ! ! ! 31080 1048 301 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 31090 1049 302 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 31100 1050 303 ! ! ! ! ! ! IF foreign_nc( acting_ac( sac_rac_ix ).macro ) THEN 31110 1051 304 ! ! ! ! ! ! sac_rac_tbl( sac_rac_ix ).disconnected:= true 31120 1052 305 ! ! ! ! ! ! ; 31130 1053 306 ! ! ! ! ! ! 31140 1054 307 ! ! ! ! ! ! atc_stop_poll( 1, atc_tbl_top ) 31150 1055 308 ! ! ! ! ! ! 31160 1056 309 ! ! ! ! ! END 31170 1057 310 ! ! ! ! ! ELSE 31180 1058 311 ! ! ! ! ! BEGIN (* - Own NC - *) 31190 1059 312 ! ! ! ! ! ! 31200 1060 313 ! ! ! ! ! ! dc_disconnect:= true; 31210 1061 314 ! ! ! ! ! ! 31220 1062 315 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 31230 1063 316 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 31240 1064 317 ! ! ! ! ! ! IF ( acting_ac( sac_rac_ix ).macro <> own_address ) THEN 31250 1065 318 ! ! ! ! ! ! sac_rac_tbl( sac_rac_ix ).disconnected:= true 31260 1066 319 ! ! ! ! ! ! ; 31270 1067 320 ! ! ! ! ! ! 31280 1068 321 ! ! ! ! ! ! atc_stop_poll( 1, atc_tbl_top ) 31290 1069 322 ! ! ! ! ! ! 31300 1070 323 ! ! ! ! ! END 31310 1071 324 ! ! ! ! ! ; 31320 1072 325 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 38 32010 1073 326 ! ! ! ! ! (* 02.03 - Broadcast. NC re-established. *) 32020 1074 327 ! ! ! ! ! #h23: 32030 1075 328 ! ! ! ! ! LOCK main_msg AS locvar: al_form_020_ DO 32040 1076 329 ! ! ! ! ! WITH locvar, al_net_addr, macro DO 32050 1077 330 ! ! ! ! ! IF foreign_nc( macro ) THEN 32060 1078 331 ! ! ! ! ! BEGIN (* - Foreign NC - *) 32070 1079 332 ! ! ! ! ! ! 32080 1080 333 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 32090 1081 334 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 32100 1082 335 ! ! ! ! ! ! IF foreign_nc( acting_ac( sac_rac_ix ).macro ) THEN 32110 1083 336 ! ! ! ! ! ! ac_check_connection( sac_rac_ix ) 32120 1084 337 ! ! ! ! ! ! 32130 1085 338 ! ! ! ! ! END 32140 1086 339 ! ! ! ! ! ELSE 32150 1087 340 ! ! ! ! ! BEGIN (* - Own NC - *) 32160 1088 341 ! ! ! ! ! ! 32170 1089 342 ! ! ! ! ! ! IF dc_disconnect THEN 32180 1090 343 ! ! ! ! ! ! IF get_message( aux_msg, at_route, #hc8, 0, 32190 1091 344 ! ! ! ! ! ! dc_address, dc_erh_mic_addr, read_code, accepted ) THEN 32200 1092 345 ! ! ! ! ! ! signal( aux_msg, sem( tssup_sem_no ).s^ ) 32210 1093 346 ! ! ! ! ! ! ; 32220 1094 347 ! ! ! ! ! ! 32230 1095 348 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 32240 1096 349 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO atc_tbl_top DO 32250 1097 350 ! ! ! ! ! ! IF ( acting_ac( sac_rac_ix ).macro <> own_address ) THEN 32260 1098 351 ! ! ! ! ! ! ac_check_connection( sac_rac_ix ) 32270 1099 352 ! ! ! ! ! ! 32280 1100 353 ! ! ! ! ! END 32290 1101 354 ! ! ! ! ! ; 32300 1102 355 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 39 33010 1103 356 ! ! ! ! ! (* 02.04 - Broadcast. TS fall-out. *) 33020 1104 357 ! ! ! ! ! #h24: 33030 1105 358 ! ! ! ! ! LOCK main_msg AS locvar: al_form_020_ DO 33040 1106 359 ! ! ! ! ! WITH locvar, al_net_addr DO 33050 1107 360 ! ! ! ! ! BEGIN 33060 1108 361 ! ! ! ! ! ! 33070 1109 362 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 33080 1110 363 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 33090 1111 364 ! ! ! ! ! ! IF ( acting_ac( sac_rac_ix ).macro = macro ) THEN 33100 1112 365 ! ! ! ! ! ! sac_rac_tbl( sac_rac_ix ).disconnected:= true 33110 1113 366 ! ! ! ! ! ! ; 33120 1114 367 ! ! ! ! ! ! 33130 1115 368 ! ! ! ! ! ! atc_stop_poll( 1, atc_tbl_top ) 33140 1116 369 ! ! ! ! ! ! 33150 1117 370 ! ! ! ! ! END 33160 1118 371 ! ! ! ! ! ; 33170 1119 372 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 40 34010 1120 373 ! ! ! ! ! (* 02.05 - Broadcast. TS re-established. *) 34020 1121 374 ! ! ! ! ! #h25: 34030 1122 375 ! ! ! ! ! LOCK main_msg AS locvar: al_form_020_ DO 34040 1123 376 ! ! ! ! ! WITH locvar, al_net_addr DO 34050 1124 377 ! ! ! ! ! BEGIN 34060 1125 378 ! ! ! ! ! ! 34070 1126 379 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 34080 1127 380 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 34090 1128 381 ! ! ! ! ! ! IF ( acting_ac( sac_rac_ix ).macro = macro ) THEN 34100 1129 382 ! ! ! ! ! ! ac_check_connection( sac_rac_ix ) 34110 1130 383 ! ! ! ! ! ! 34120 1131 384 ! ! ! ! ! END 34130 1132 385 ! ! ! ! ! ; 34140 1133 386 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 41 35010 1134 387 ! ! ! ! ! (* 02.06 - Broadcast. AC fall-out. *) 35020 1135 388 ! ! ! ! ! #h26: 35030 1136 389 ! ! ! ! ! BEGIN 35040 1137 390 ! ! ! ! ! ! 35050 1138 391 ! ! ! ! ! ! LOCK main_msg AS locvar: al_form_020_ DO 35060 1139 392 ! ! ! ! ! ! WITH locvar DO 35070 1140 393 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 35080 1141 394 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 35090 1142 395 ! ! ! ! ! ! IF ( acting_ac( sac_rac_ix ) = al_net_addr ) THEN 35100 1143 396 ! ! ! ! ! ! sac_rac_tbl( sac_rac_ix ).disconnected:= true 35110 1144 397 ! ! ! ! ! ! ; 35120 1145 398 ! ! ! ! ! ! 35130 1146 399 ! ! ! ! ! ! atc_stop_poll( 1, atc_tbl_top ) 35140 1147 400 ! ! ! ! ! ! 35150 1148 401 ! ! ! ! ! END 35160 1149 402 ! ! ! ! ! ; 35170 1150 403 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 42 36010 1151 404 ! ! ! ! ! (* 02.07 - Broadcast. AC re-established. *) 36020 1152 405 ! ! ! ! ! #h27: 36030 1153 406 ! ! ! ! ! LOCK main_msg AS locvar: al_form_020_ DO 36040 1154 407 ! ! ! ! ! WITH locvar DO 36050 1155 408 ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 36060 1156 409 ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 36070 1157 410 ! ! ! ! ! IF ( acting_ac( sac_rac_ix ) = al_net_addr ) THEN 36080 1158 411 ! ! ! ! ! ac_check_connection( sac_rac_ix ) 36090 1159 412 ! ! ! ! ! ; 36100 1160 413 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 43 37010 1161 414 ! ! ! ! ! (* 04.04 - Group control is multiplied by ATH - if the sender is known *) 37020 1162 415 ! ! ! ! ! #h44: 37030 1163 416 ! ! ! ! ! IF atc_tbl_top > 0 THEN 37040 1164 417 ! ! ! ! ! BEGIN 37050 1165 418 ! ! ! ! ! ! 37060 1166 419 ! ! ! ! ! ! LOCK main_msg AS locvar: al_form_0404 DO 37070 1167 420 ! ! ! ! ! ! WITH locvar, al_label DO 37080 1168 421 ! ! ! ! ! ! IF ( ( no_of_by - 4 ) > 0 ) AND ( ( high_micro - low_micro ) > - 1 ) THEN 37090 1169 422 ! ! ! ! ! ! BEGIN 37100 1170 423 ! ! ! ! ! ! ! 37110 1171 424 ! ! ! ! ! ! ! IF search_sac_rac( send, sac_rac_ix ) THEN 37120 1172 425 ! ! ! ! ! ! ! ts_add( 0 ):= sac_rac_ix 37130 1173 426 ! ! ! ! ! ! ! ELSE 37140 1174 427 ! ! ! ! ! ! ! result_code:= unknown_sender 37150 1175 428 ! ! ! ! ! ! ! 37160 1176 429 ! ! ! ! ! ! END 37170 1177 430 ! ! ! ! ! ! ELSE 37180 1178 431 ! ! ! ! ! ! result_code:= data_inconsistent; 37190 1179 432 ! ! ! ! ! ! 37200 1180 433 ! ! ! ! ! ! IF ( result_code = accepted ) THEN 37210 1181 434 ! ! ! ! ! ! signal( main_msg, sem( ath_int1 ).s^ ) 37220 1182 435 ! ! ! ! ! ! 37230 1183 436 ! ! ! ! ! END 37240 1184 437 ! ! ! ! ! ELSE 37250 1185 438 ! ! ! ! ! result_code:= unknown_receiver 37260 1186 439 ! ! ! ! ! ; 37270 1187 440 ! ! ! ! ! 37280 1188 441 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 44 38010 1189 442 ! ! ! ! ! (* 06.00 - Creation of an ATC incarnation *) 38020 1190 443 ! ! ! ! ! #h60: 38030 1191 444 ! ! ! ! ! IF ( atc_tbl_top < atc_tbl_lth ) THEN 38040 1192 445 ! ! ! ! ! BEGIN 38050 1193 446 ! ! ! ! ! ! 38060 1194 447 ! ! ! ! ! ! LOCK main_msg AS locvar: al_form_0600 DO 38070 1195 448 ! ! ! ! ! ! WITH locvar, al_label, atc_tbl_e DO 38080 1196 449 ! ! ! ! ! ! IF ( send.macro <> dc_address ) THEN 38090 1197 450 ! ! ! ! ! ! result_code:= forbidden 38100 1198 451 ! ! ! ! ! ! ELSE 38110 1199 452 ! ! ! ! ! ! BEGIN 38120 1200 453 ! ! ! ! ! ! ! 38130 1201 454 ! ! ! ! ! ! ! IF find_atc_tbl_entry( atc_mic, atc_tbl_ix ) THEN 38140 1202 455 ! ! ! ! ! ! ! result_code:= existing_entry 38150 1203 456 ! ! ! ! ! ! ! ELSE 38160 1204 457 ! ! ! ! ! ! ! IF ( pac_ix < 1 ) OR ( sac_rac_top < pac_ix ) THEN 38170 1205 458 ! ! ! ! ! ! ! result_code:= out_of_range 38180 1206 459 ! ! ! ! ! ! ! ELSE 38190 1207 460 ! ! ! ! ! ! ! BEGIN 38200 1208 461 ! ! ! ! ! ! ! ! 38210 1209 462 ! ! ! ! ! ! ! ! place_atc_tbl_entry( atc_tbl_ix, atc_mic, pac_ix ); 38220 1210 463 ! ! ! ! ! ! ! ! 38230 1211 464 ! ! ! ! ! ! ! ! (* calculate an unambigouos atc_name *) 38240 1212 465 ! ! ! ! ! ! ! ! atc_name:= "atc__ "; 38250 1213 466 ! ! ! ! ! ! ! ! atc_no:= atc_mic; 38260 1214 467 ! ! ! ! ! ! ! ! alfa_pos:= 8; 38270 1215 468 ! ! ! ! ! ! ! ! 38280 1216 469 ! ! ! ! ! ! ! ! REPEAT 38290 1217 470 ! ! ! ! ! ! ! ! ! 38300 1218 471 ! ! ! ! ! ! ! ! ! atc_name( alfa_pos ):= chr( atc_no MOD 10 + ord( "0" ) ); 38310 1219 472 ! ! ! ! ! ! ! ! ! atc_no:= atc_no DIV 10; 38320 1220 473 ! ! ! ! ! ! ! ! ! alfa_pos:= alfa_pos - 1 38330 1221 474 ! ! ! ! ! ! ! ! ! 38340 1222 475 ! ! ! ! ! ! ! ! UNTIL ( alfa_pos = 4 ); 38350 1223 476 ! ! ! ! ! ! ! ! 38360 1224 477 ! ! ! ! ! ! ! ! (* Create and start the incarnation *) 38370 1225 478 ! ! ! ! ! ! ! ! WITH atc_tbl( atc_tbl_ix ) DO 38380 1226 479 ! ! ! ! ! ! ! ! result_code:= create( 38390 1227 480 ! ! ! ! ! ! ! ! atc_name , 38400 1228 481 ! ! ! ! ! ! ! ! atconnector( 38410 1229 482 ! ! ! ! ! ! ! ! op_sem , 38420 1230 483 ! ! ! ! ! ! ! ! sem( ts_vect_ix ) , 38430 1231 484 ! ! ! ! ! ! ! ! sem( ts_vect_ix + 1 ) , 38440 1232 485 ! ! ! ! ! ! ! ! sem( ath_sem_no ).s , 38450 1233 486 ! ! ! ! ! ! ! ! sem( lam_no + lam_sem_no ).s , 38460 1234 487 ! ! ! ! ! ! ! ! sem( com_pool ).w , \f tsathlst 81.06.23. 20.18. page 45 38470 1235 488 ! ! ! ! ! ! ! ! actual_activity , 38480 1236 489 ! ! ! ! ! ! ! ! delay , 38490 1237 490 ! ! ! ! ! ! ! ! node_test_freq , 38500 1238 491 ! ! ! ! ! ! ! ! traffic_test_freq , 38510 1239 492 ! ! ! ! ! ! ! ! dc_address , 38520 1240 493 ! ! ! ! ! ! ! ! own_address , 38530 1241 494 ! ! ! ! ! ! ! ! atc_mic , 38540 1242 495 ! ! ! ! ! ! ! ! port_no 38550 1243 496 ! ! ! ! ! ! ! ! ) , 38560 1244 497 ! ! ! ! ! ! ! ! shadows( shad_ix ) , 38570 1245 498 ! ! ! ! ! ! ! ! atc_size 38580 1246 499 ! ! ! ! ! ! ! ! ); 38590 1247 500 ! ! ! ! ! ! ! ! 38600 1248 501 ! ! ! ! ! ! ! ! IF ( result_code = accepted ) THEN 38610 1249 502 ! ! ! ! ! ! ! ! start( shadows( atc_tbl( atc_tbl_ix ).shad_ix ), atc_pri ) 38620 1250 503 ! ! ! ! ! ! ! ! ELSE 38630 1251 504 ! ! ! ! ! ! ! ! BEGIN 38640 1252 505 ! ! ! ! ! ! ! ! ! 38650 1253 506 ! ! ! ! ! ! ! ! ! del_atc_tbl_entry( atc_tbl_ix ); 38660 1254 507 ! ! ! ! ! ! ! ! ! result_code:= breaked 38670 1255 508 ! ! ! ! ! ! ! ! ! 38680 1256 509 ! ! ! ! ! ! ! ! END 38690 1257 510 ! ! ! ! ! ! ! ! 38700 1258 511 ! ! ! ! ! ! ! END 38710 1259 512 ! ! ! ! ! ! ! 38720 1260 513 ! ! ! ! ! ! END 38730 1261 514 ! ! ! ! ! ! 38740 1262 515 ! ! ! ! ! END 38750 1263 516 ! ! ! ! ! ELSE 38760 1264 517 ! ! ! ! ! result_code:= no_room 38770 1265 518 ! ! ! ! ! ; 38780 1266 519 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 46 39010 1267 520 ! ! ! ! ! (* 06.08 - Remove ATC incarnation. *) 39020 1268 521 ! ! ! ! ! #h68: 39030 1269 522 ! ! ! ! ! LOCK main_msg AS locvar: al_form_0608 DO 39040 1270 523 ! ! ! ! ! WITH locvar, al_label, atc_tbl_e DO 39050 1271 524 ! ! ! ! ! IF ( send.macro <> dc_address ) THEN 39060 1272 525 ! ! ! ! ! result:= forbidden 39070 1273 526 ! ! ! ! ! ELSE 39080 1274 527 ! ! ! ! ! IF find_atc_tbl_entry( atc_mic, atc_tbl_ix ) THEN 39090 1275 528 ! ! ! ! ! del_atc_tbl_entry( atc_tbl_ix ) 39100 1276 529 ! ! ! ! ! ELSE 39110 1277 530 ! ! ! ! ! result_code:= not_found 39120 1278 531 ! ! ! ! ! ; 39130 1279 532 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 47 40010 1280 533 ! ! ! ! ! (* 10.10 - Operation on sac_rac table *) 40020 1281 534 ! ! ! ! ! #haa: 40030 1282 535 ! ! ! ! ! LOCK main_msg AS locvar: al_form_1010 DO 40040 1283 536 ! ! ! ! ! WITH locvar, al_label DO 40050 1284 537 ! ! ! ! ! IF ( send.macro <> dc_address ) THEN 40060 1285 538 ! ! ! ! ! result_code:= forbidden 40070 1286 539 ! ! ! ! ! ELSE 40080 1287 540 ! ! ! ! ! IF ( sac_rac_tbl_ix < 1 ) OR ( sac_rac_lth < sac_rac_tbl_ix ) THEN 40090 1288 541 ! ! ! ! ! result_code:= out_of_range 40100 1289 542 ! ! ! ! ! ELSE 40110 1290 543 ! ! ! ! ! CASE update OF 40120 1291 544 ! ! ! ! ! ! 40130 1292 545 ! ! ! ! ! ! read_code: 40140 1293 546 ! ! ! ! ! ! tbl_entry:= sac_rac_tbl( sac_rac_tbl_ix ).sac_rac_e 40150 1294 547 ! ! ! ! ! ! ; 40160 1295 548 ! ! ! ! ! ! 40170 1296 549 ! ! ! ! ! ! insert_code: 40180 1297 550 ! ! ! ! ! ! WITH sac_rac_tbl( sac_rac_tbl_ix ) DO 40190 1298 551 ! ! ! ! ! ! BEGIN 40200 1299 552 ! ! ! ! ! ! ! 40210 1300 553 ! ! ! ! ! ! ! sac_rac_e:= tbl_entry; 40220 1301 554 ! ! ! ! ! ! ! disconnected:= true; 40230 1302 555 ! ! ! ! ! ! ! 40240 1303 556 ! ! ! ! ! ! ! IF ( sac_rac_tbl_ix > sac_rac_top ) THEN 40250 1304 557 ! ! ! ! ! ! ! sac_rac_top:= sac_rac_tbl_ix 40260 1305 558 ! ! ! ! ! ! ! ; 40270 1306 559 ! ! ! ! ! ! ! 40280 1307 560 ! ! ! ! ! ! ! ac_check_connection( sac_rac_tbl_ix ) 40290 1308 561 ! ! ! ! ! ! ! 40300 1309 562 ! ! ! ! ! ! END 40310 1310 563 ! ! ! ! ! ! ; 40320 1311 564 ! ! ! ! ! ! 40330 1312 565 ! ! ! ! ! ! remove_code: 40340 1313 566 ! ! ! ! ! ! WITH sac_rac_tbl( sac_rac_tbl_ix ) DO 40350 1314 567 ! ! ! ! ! ! BEGIN 40360 1315 568 ! ! ! ! ! ! ! 40370 1316 569 ! ! ! ! ! ! ! sac_rac_e:= sac_rac_entry( empty_addr, empty_addr ); 40380 1317 570 ! ! ! ! ! ! ! disconnected:= false; 40390 1318 571 ! ! ! ! ! ! ! 40400 1319 572 ! ! ! ! ! ! ! IF ( sac_rac_top = sac_rac_tbl_ix ) THEN 40410 1320 573 ! ! ! ! ! ! ! BEGIN 40420 1321 574 ! ! ! ! ! ! ! ! 40430 1322 575 ! ! ! ! ! ! ! ! WHILE ( sac_rac_top > 1 ) AND ( acting_ac( sac_rac_top ) = empty_addr ) DO 40440 1323 576 ! ! ! ! ! ! ! ! sac_rac_top:= sac_rac_top - 1 40450 1324 577 ! ! ! ! ! ! ! ! ; 40460 1325 578 ! ! ! ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 48 40470 1326 579 ! ! ! ! ! ! ! ! IF ( acting_ac( sac_rac_top ) = empty_addr ) THEN 40480 1327 580 ! ! ! ! ! ! ! ! sac_rac_top:= sac_rac_top - 1 40490 1328 581 ! ! ! ! ! ! ! ! 40500 1329 582 ! ! ! ! ! ! ! END 40510 1330 583 ! ! ! ! ! ! ! 40520 1331 584 ! ! ! ! ! ! END 40530 1332 585 ! ! ! ! ! ! ; 40540 1333 586 ! ! ! ! ! ! 40550 1334 587 ! ! ! ! ! ! OTHERWISE 40560 1335 588 ! ! ! ! ! ! result_code:= unknown_update 40570 1336 589 ! ! ! ! ! ! 40580 1337 590 ! ! ! ! ! END 40590 1338 591 ! ! ! ! ! ; 40600 1339 592 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 49 41010 1340 593 ! ! ! ! ! (* 12.00 - Node test. Check connection to disconnected DC and AC's. *) 41020 1341 594 ! ! ! ! ! #hc0: 41030 1342 595 ! ! ! ! ! BEGIN 41040 1343 596 ! ! ! ! ! ! 41050 1344 597 ! ! ! ! ! ! LOCK main_msg AS locvar: al_form_1200 DO 41060 1345 598 ! ! ! ! ! ! WITH locvar DO 41070 1346 599 ! ! ! ! ! ! BEGIN 41080 1347 600 ! ! ! ! ! ! ! 41090 1348 601 ! ! ! ! ! ! ! node_test_freq:= master_time_out; 41100 1349 602 ! ! ! ! ! ! ! traffic_test_freq:= master_time_out + tolerance 41110 1350 603 ! ! ! ! ! ! ! 41120 1351 604 ! ! ! ! ! ! END 41130 1352 605 ! ! ! ! ! ! ; 41140 1353 606 ! ! ! ! ! ! 41150 1354 607 ! ! ! ! ! ! book_up( time_out_msg, book_up_msg, node_test_freq ); 41160 1355 608 ! ! ! ! ! ! 41170 1356 609 ! ! ! ! ! ! IF dc_disconnect THEN 41180 1357 610 ! ! ! ! ! ! IF get_message( aux_msg, at_route, #hc8, 0, 41190 1358 611 ! ! ! ! ! ! dc_address, dc_erh_mic_addr, read_code, accepted ) THEN 41200 1359 612 ! ! ! ! ! ! signal( aux_msg, sem( tssup_sem_no ).s^ ) 41210 1360 613 ! ! ! ! ! ! ; 41220 1361 614 ! ! ! ! ! ! 41230 1362 615 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 41240 1363 616 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 41250 1364 617 ! ! ! ! ! ! ac_check_connection( sac_rac_ix ) 41260 1365 618 ! ! ! ! ! ! ; 41270 1366 619 ! ! ! ! ! ! 41280 1367 620 ! ! ! ! ! ! nt_time_out:= false; 41290 1368 621 ! ! ! ! ! ! 41300 1369 622 ! ! ! ! ! ! atc_supervise 41310 1370 623 ! ! ! ! ! ! 41320 1371 624 ! ! ! ! ! END 41330 1372 625 ! ! ! ! ! ; 41340 1373 626 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 50 42010 1374 627 ! ! ! ! ! (* 12.02 - Time out alarm on own TSS. Overtake the node test function. 42020 1375 628 ! ! ! ! ! - Disconnect DC and all AC's and stop all ATC's. *) 42030 1376 629 ! ! ! ! ! #hc2: 42040 1377 630 ! ! ! ! ! BEGIN 42050 1378 631 ! ! ! ! ! ! 42060 1379 632 ! ! ! ! ! ! book_up( main_msg, book_up_msg, node_test_freq ); 42070 1380 633 ! ! ! ! ! ! 42080 1381 634 ! ! ! ! ! ! IF NOT nt_time_out THEN 42090 1382 635 ! ! ! ! ! ! BEGIN 42100 1383 636 ! ! ! ! ! ! ! 42110 1384 637 ! ! ! ! ! ! ! nt_time_out:= true; 42120 1385 638 ! ! ! ! ! ! ! 42130 1386 639 ! ! ! ! ! ! ! dc_disconnect:= true; 42140 1387 640 ! ! ! ! ! ! ! 42150 1388 641 ! ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 42160 1389 642 ! ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 42170 1390 643 ! ! ! ! ! ! ! IF ( acting_ac( sac_rac_ix ) <> empty_addr ) THEN 42180 1391 644 ! ! ! ! ! ! ! sac_rac_tbl( sac_rac_ix ).disconnected:= true 42190 1392 645 ! ! ! ! ! ! ! ; 42200 1393 646 ! ! ! ! ! ! ! 42210 1394 647 ! ! ! ! ! ! ! atc_stop_poll( 1, atc_tbl_top ) 42220 1395 648 ! ! ! ! ! ! ! 42230 1396 649 ! ! ! ! ! ! END 42240 1397 650 ! ! ! ! ! ! ; 42250 1398 651 ! ! ! ! ! ! 42260 1399 652 ! ! ! ! ! ! atc_supervise 42270 1400 653 ! ! ! ! ! ! 42280 1401 654 ! ! ! ! ! END 42290 1402 655 ! ! ! ! ! ; 42300 1403 656 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 51 43010 1404 657 ! ! ! ! ! (* 12.03 *) 43020 1405 658 ! ! ! ! ! (* 12.04 - Returned book/update message from time out process *) 43030 1406 659 ! ! ! ! ! #hc3..#hc4: 43040 1407 660 ! ! ! ! ! book_up_msg :=: main_msg 43050 1408 661 ! ! ! ! ! ; 43060 1409 662 ! ! ! ! ! 43070 1410 663 ! ! ! ! ! (* 12.09 - Receipt for dummy alarm from PAC or from DC. *) 43080 1411 664 ! ! ! ! ! #hc9: 43090 1412 665 ! ! ! ! ! BEGIN 43100 1413 666 ! ! ! ! ! ! 43110 1414 667 ! ! ! ! ! ! LOCK main_msg AS locvar: alarmlabel DO 43120 1415 668 ! ! ! ! ! ! WITH locvar DO 43130 1416 669 ! ! ! ! ! ! IF ( send.macro = dc_address ) THEN 43140 1417 670 ! ! ! ! ! ! dc_disconnect:= false 43150 1418 671 ! ! ! ! ! ! ELSE 43160 1419 672 ! ! ! ! ! ! IF ( sac_rac_top > 0 ) THEN 43170 1420 673 ! ! ! ! ! ! FOR sac_rac_ix:= 1 TO sac_rac_top DO 43180 1421 674 ! ! ! ! ! ! IF ( acting_ac( sac_rac_ix ) = send ) THEN 43190 1422 675 ! ! ! ! ! ! sac_rac_tbl( sac_rac_ix ).disconnected:= false 43200 1423 676 ! ! ! ! ! ! ; 43210 1424 677 ! ! ! ! ! ! 43220 1425 678 ! ! ! ! ! ! atc_start_poll( 1, atc_tbl_top ) 43230 1426 679 ! ! ! ! ! ! 43240 1427 680 ! ! ! ! ! END 43250 1428 681 ! ! ! ! ! ; 43260 1429 682 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 52 44010 1430 683 ! ! ! ! ! OTHERWISE 44020 1431 684 ! ! ! ! ! reject_message( main_msg, 44030 1432 685 ! ! ! ! ! sem( tssup_sem_no ).s, route_vct( u3 ), own_address, ath_mic_addr, unknown_opcode ) 44040 1433 686 ! ! ! ! ! 44050 1434 687 ! ! ! ! END (* case u4 to ATH *) 44060 1435 688 ! ! ! ! ; 44070 1436 689 ! ! ! ! 44080 1437 690 ! ! ! ! IF NOT nil( main_msg ) THEN 44090 1438 691 ! ! ! ! IF main_msg^.u4 IN (.#h12, #h20..#h27, #hc9.) THEN 44100 1439 692 ! ! ! ! return( main_msg ) 44110 1440 693 ! ! ! ! ELSE 44120 1441 694 ! ! ! ! receipt_message( main_msg, sem( tssup_sem_no ).s, route_vct( u3 ), 0, result_code ) 44130 1442 695 ! ! ! ! 44140 1443 696 ! ! ! END (* Message from TSS to ATH *) 44150 1444 697 ! ! ! ; 44160 1445 698 ! ! ! \f tsathlst 81.06.23. 20.18. page 53 45010 1446 699 ! ! ! netc_route: (* Message to an ATC from TSS to be routed through ATH *) 45020 1447 700 ! ! ! BEGIN 45030 1448 701 ! ! ! ! 45040 1449 702 ! ! ! ! (*q if test then testout(z,"to an atc ",0); q*) 45050 1450 703 ! ! ! ! 45060 1451 704 ! ! ! ! IF atc_tbl_top > 0 THEN 45070 1452 705 ! ! ! ! LOCK main_msg AS locvar: alarmlabel DO 45080 1453 706 ! ! ! ! WITH locvar DO 45090 1454 707 ! ! ! ! IF find_atc_tbl_entry( rec.micro, atc_tbl_ix ) THEN 45100 1455 708 ! ! ! ! WITH atc_tbl( atc_tbl_ix ) DO 45110 1456 709 ! ! ! ! IF ( actual_activity <> break_code ) THEN 45120 1457 710 ! ! ! ! CASE u4 OF (* Operation code *) 45130 1458 711 ! ! ! ! ! 45140 1459 712 ! ! ! ! ! (* 04.00 - Control. Find index of AC in sac_rac table. *) 45150 1460 713 ! ! ! ! ! #h40: 45160 1461 714 ! ! ! ! ! BEGIN 45170 1462 715 ! ! ! ! ! ! 45180 1463 716 ! ! ! ! ! ! IF ( acting_ac( pac_ix ) <> send ) THEN 45190 1464 717 ! ! ! ! ! ! BEGIN 45200 1465 718 ! ! ! ! ! ! ! 45210 1466 719 ! ! ! ! ! ! ! IF search_sac_rac( send, sac_rac_ix ) THEN 45220 1467 720 ! ! ! ! ! ! ! result_code:= accepted 45230 1468 721 ! ! ! ! ! ! ! ELSE 45240 1469 722 ! ! ! ! ! ! ! result_code:= unknown_sender 45250 1470 723 ! ! ! ! ! ! ! 45260 1471 724 ! ! ! ! ! ! END 45270 1472 725 ! ! ! ! ! ! ELSE 45280 1473 726 ! ! ! ! ! ! sac_rac_ix:= pac_ix; 45290 1474 727 ! ! ! ! ! ! 45300 1475 728 ! ! ! ! ! ! IF ( result_code = accepted ) THEN 45310 1476 729 ! ! ! ! ! ! ts_add( 0 ):= sac_rac_ix 45320 1477 730 ! ! ! ! ! ! 45330 1478 731 ! ! ! ! ! END 45340 1479 732 ! ! ! ! ! ; 45350 1480 733 ! ! ! ! ! 45360 1481 734 ! ! ! ! ! (* 08.04 - Extern test. Check the legitimacy *) 45370 1482 735 ! ! ! ! ! #h84: 45380 1483 736 ! ! ! ! ! IF ( acting_ac( pac_ix ) <> send ) THEN 45390 1484 737 ! ! ! ! ! result_code:= forbidden 45400 1485 738 ! ! ! ! ! ELSE 45410 1486 739 ! ! ! ! ! ts_add( 0 ):= pac_ix 45420 1487 740 ! ! ! ! ! ; 45430 1488 741 ! ! ! ! ! 45440 1489 742 ! ! ! ! ! OTHERWISE 45450 1490 743 ! ! ! ! ! (* Other operation codes are passed uninspected and unaltered *) 45460 1491 744 ! ! ! ! ! \f tsathlst 81.06.23. 20.18. page 54 46010 1492 745 ! ! ! ! END (* case operation code *) 46020 1493 746 ! ! ! ! ELSE 46030 1494 747 ! ! ! ! result_code:= breaked 46040 1495 748 ! ! ! ! ELSE 46050 1496 749 ! ! ! ! result_code:= not_found 46060 1497 750 ! ! ! ! ELSE 46070 1498 751 ! ! ! ! result_code:= unknown_receiver 46080 1499 752 ! ! ! ! ; 46090 1500 753 ! ! ! ! (* end - lock main_msg. end - with locvar, atc_tbl *) 46100 1501 754 ! ! ! ! 46110 1502 755 ! ! ! ! IF ( result_code <> accepted ) THEN 46120 1503 756 ! ! ! ! reject_message( main_msg, 46130 1504 757 ! ! ! ! sem( tssup_sem_no ).s, route_vct( u3 ), own_address, ath_mic_addr, result_code ) 46140 1505 758 ! ! ! ! ELSE 46150 1506 759 ! ! ! ! signal( main_msg, sem( atc_tbl( atc_tbl_ix ).ts_vect_ix ).s^ ) 46160 1507 760 ! ! ! ! 46170 1508 761 ! ! ! END (* Message from TSS to an AT *) 46180 1509 762 ! ! ! ; 46190 1510 763 ! ! ! 46200 1511 764 ! ! ! OTHERWISE (* Unknown route *) 46210 1512 765 ! ! ! BEGIN 46220 1513 766 ! ! ! ! (*q test := not test; 46230 1514 767 ! ! ! ! if test then testout(z,"starttestout",0); 46240 1515 768 ! ! ! ! if not test then testout(z,"stop testout",0); q*) 46250 1516 769 ! ! ! ! 46260 1517 770 ! ! ! ! reject_message( main_msg, 46270 1518 771 ! ! ! ! sem( tssup_sem_no ).s, at_route, own_address, ath_mic_addr, unknown_route ) 46280 1519 772 ! ! ! ! 46290 1520 773 ! ! ! END 46300 1521 774 ! ! ! ; 46310 1522 775 ! ! ! 46320 1523 776 ! ! END (* case route - with main_msg^ *) 46330 1524 777 ! ! 46340 1525 778 ! UNTIL forever 46350 1526 779 ! 46360 1527 780 END (* process at_handler *). 46370 1528 46380 1529 \f tsathlst 81.06.23. 20.18. page 55 0 122* 131* 131* 137* 151* 153* 418 424 488 600 648 678 689 690 692 701 741 846 846 846 849 851 867 867 867 868 986 1000 1018 1028 1033 1048 1062 1080 1090 1095 1109 1126 1140 1155 1163 1168 1172 1357 1362 1388 1419 1441 1451 1476 1486 1 121* 131* 131* 132* 136* 176* 176* 183* 184* 388 391 421 430 451 476 479 496 522 523 528 547 570 608 614 658 664 681 699 709 719 755 760 987 992 1001 1006 1019 1034 1049 1054 1063 1068 1081 1096 1110 1115 1127 1141 1146 1156 1168 1204 1220 1231 1287 1322 1323 1327 1363 1389 1394 1420 1425 2 427 760 4 640 1168 1222 8 1214 10 1218 1219 aac_address 845 852= accepted 172* 601 641 702 742 787 821 883 904 928 961 1029 1091 1180 1248 1358 1467 1475 1502 acting_ac 355* 369= 371= 390 393 742 742 849 852 868 988 1002 1020 1035 1050 1064 1082 1097 1111 1128 1142 1157 1322 1326 1390 1421 1463 1483 actual_activity <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 218* 491= 597 599 635 636 686 1235 1456 ac_address 376* 390 393 ac_check_connection <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 725* 1021 1036 1083 1098 1129 1158 1307 1364 alarmlabel 303 863 926 933 945 1414 1452 alarmnetaddr 357* 376* alfa 174* alfalength 176* alfa_pos 176* 1214= 1218 1220= 1220 1222 alloc 764 773 al_form_0001 844 al_form_020_ 981 1013 1043 1075 1105 1122 1138 1153 al_form_0404 1166 al_form_0600 1194 al_form_0608 1269 al_form_0900 644 880 al_form_1010 1282 al_form_1200 1344 al_label 845 881 1167 1195 1270 1283 al_net_addr 982 1014 1044 1076 1106 1123 1142 1157 as 248: 303: 644: 769: 784: 844: 863: 880: 926: 933: 945: 981: 1013: 1043: 1075: 1105: 1122: 1138: 1153: 1166: 1194: 1269: 1282: 1344: 1414: 1452: atconnector 208* 787 1228 atc_claim_set <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 534* \f tsathlst 81.06.23. 20.18. page 56 atc_description <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 131* 472* 510* atc_inc_claim <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 149* 535* 556* atc_mic 459* 486 1201 1209 1213 1241 1274 atc_mic_addr 424 429 436 440 486= 601 640 702 atc_name 174* 1212= 1218= 1227 atc_no 175* 1213= 1218 1219= 1219 atc_pri 1249 atc_sem_no 760 atc_shadow_table <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 134* atc_size 1245 atc_start_poll <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 618* 1425 atc_stop_poll <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 580* 890 992 1006 1054 1068 1115 1146 1394 atc_supervise <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 668* 1369 1399 atc_table 130* 131* atc_table_range <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 136* 402* 414* 458* 501* 555* 581* 619* atc_tbl 130* 424 429 436 440 476 479= 479 481= 483 514 515 517 522= 522 527= 565 596 634 685 756 884 1225 1249 1455 1506 atc_tbl_e 1195 1270 atc_tbl_ix 136* 402* 422= 424 424 427 432= 436 440= 440 440 451= 458* 478 481 483 501* 514 515 517 519 522 522 523= 523 681= 685 709= 709 713 719 755= 756 759 760 882 884 890 890 947 950 1201 1209 1225 1249 1253 1274 1275 1454 1455 1506 atc_tbl_lth 131* 755 1191 atc_tbl_top 137* 418 422 476 478 496= 496 519 527 528= 528 678 709 713 992 1006 1054 1068 1096 1115 1146 1163 1191 1394 1425 1451 ath_int1 1181 ath_mic_addr 316 771 785 906 1432 1504 1518 ath_sem 214* ath_sem_no 297 764 773 799 803 1232 at_addr_limit <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 175* at_handler 1* at_route 167* 741 835: 1028 1090 1357 1518 at_route1 167* 913: aux_msg 155* 1028 1030 1090 1092 1357 1359 a_delay 808: a_label 933: 934 \f tsathlst 81.06.23. 20.18. page 57 a_semaphore 805: book_req 263 778 book_up 233* 788 1354 1379 book_up_msg 186* 236* 245 248: 256 257 263 264 266 270 764 766 769: 788 1354 1379 1407= book_up_pool 183* 764 boolean 191* 193* 286* 338* 379* 403* breaked 1254 1494 break_code 635 686 1456 busy_main 146* 329 798: busy_pool 147* 325 802: byte 153* 164* 229* 280* channelno 229* chr 1218 claim_level 149* 575 576= claim_none 149* claim_set 490= 534* 543 546= 546 566 569= 569 606 656 707 com_pool 216* 300 1234 connector_state <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 218* count 250= create 1226 data_inconsistent <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1178 dc_addr 348 348 983 983 988 988 1015 1015 1020 1020 dc_address 4* 1029 1091 1196 1239 1271 1284 1358 1416 dc_disconnect <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 193* 599 639 889 998= 1027 1060= 1089 1356 1386= 1417= dc_erh_mic_addr <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1029 1091 1358 decrease_claims <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 532* 606 656 707 delay 489= 649 1236 del_atc_tbl_entry <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 500* 950 1253 1275 disconnected 597 637 740 889 989= 1003= 1051= 1065= 1112= 1143= 1301= 1317= 1391= 1422= driversem 215* dummy_route 831: empty_addr 119* 119* 368 1316 1316 1322 1326 1390 existing_entry <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1202 external 231* false 119* 191* 439 450 1317 1367 1417 1422 find_atc_tbl_entry <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 399* 439= 444= 450= 882 947 1201 1274 1454 \f tsathlst 81.06.23. 20.18. page 58 first_ix 554* 564= 564 565 581* 593 596 608= 608 612 614 619* 631 634 658= 658 662 664 forbidden 1197 1272 1285 1484 foreign_nc 336* 348= 1002 1035 1045 1050 1077 1082 forever 1525 frequence 649= get_message 276* 332= 600 640 701 741 1028 1090 1357 h01 843: h12 919: 975: 1438 h20 980: 1438 h21 1012: h22 1042: h23 1074: h24 1104: h25 1121: h26 1135: h27 1152: 1438 h30 862 h32 862: h40 1460: h44 1162: h45 925: h60 1190: h68 1268: h84 1482: h90 600 640 h91 879: 940: haa 1281: hc0 701 1341: hc2 780 1376: hc3 264 1406 hc4 257 1406: hc8 741 1028 1090 1357 hc9 1411: 1438 hcf 944: high_micro 1168 idle_main 145* 147* 321 614 664 719 797: incname 750 increase_claims <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 553* 612 662 713 insert_code 1296: integer 151* 175* 184* 189* 190* 220* 222* 224* 228* 237* 281* 283* 400* 459* 784 label_size 310 lam_no 1233 \f tsathlst 81.06.23. 20.18. page 59 lam_sem_no 1233 last_ix 555* 564 582* 593 608 612 620* 631 658 662 link 787 lock 248: 303: 644: 769: 784: 844: 863: 880: 926: 933: 945: 981: 1013: 1043: 1075: 1105: 1122: 1138: 1153: 1166: 1194: 1269: 1282: 1344: 1414: 1452: locvar 248: 249 303: 304 644: 645 769: 770 784: 785= 844: 845 863: 864 880: 881 926: 927 945: 946 981: 982 1013: 1014 1043: 1044 1075: 1076 1105: 1106 1122: 1123 1138: 1139 1153: 1154 1166: 1167 1194: 1195 1269: 1270 1282: 1283 1344: 1345 1414: 1415 1452: 1453 low 414* 421= 424 427 427 430= low_micro 1168 macro 312= 315= 742 982 988 1002 1014 1020 1035 1044 1045 1050 1064 1076 1077 1082 1097 1111 1111 1128 1128 1196 1271 1284 1416 macroaddr 5* 227* 282* 337* main_msg 170* 799 803 818 826 832 844: 863: 880: 905 908 926: 945: 962 964 981: 1013: 1043: 1075: 1105: 1122: 1138: 1153: 1166: 1181 1194: 1269: 1282: 1344: 1379 1407 1414: 1431 1437 1438 1439 1441 1452: 1503 1506 1517 main_sem 211* main_wait 144* 321= 325= 329= 614 664 719 795 master_time_out <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1348 1349 max_int 189* 190* micro 313= 316= 742 851 851 852 882 947 1454 mic_addr 400* 424 429 436 440 mid 414* 427= 429 430 432 msg 278* 300 302 303: 304 332 589* 600 604 627* 640 644: 654 674* 701 705 735* 741 743 msg_0900_start <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 656 662 msg_0900_stop <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 606 612 msg_1200 707 713 msg_kind 535* 543 546 556* 566 569 575 576 nc_addr 350 350 netc_route 164* 1446: netc_route1 164* 600 640 701 767 779 969: node_address 337* 347 node_test_freq <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 189* 788 1237 1348= 1354 1379 noofbytes 281* 310 not_found 1277 1496 not_steering 928 no_of_by 310= 1168 no_room 1264 \f tsathlst 81.06.23. 20.18. page 60 nt_time_out 191* 1367= 1381 1384= object 771= opc 280* 308 op_sem 2* 209* 750 1229 ord 440 1218 out_of_range 1205 1288 own 750 ownaddr 228* own_address 5* 315 348 350 601 640 702 906 983 988 1015 1020 1064 1097 1240 1432 1504 1518 own_dc 226* own_ts 227* pac_index 460* 487 pac_ix 487= 596 634 884 1204 1204 1209 1463 1473 1483 1486 passive 297 place_atc_tbl_entry <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 457* 1209 poll_delay 220* poll_delay_time <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 131* 489 pool 183* 184* port_no 1242 process 1* 208* push 266 queue_lth 153* queue_sem 212* read_code 702 742 1029 1091 1292: 1358 rec 312 313 849= 868= 934= 1454 receipt_message <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1441 rec_macro 282* 312 rec_micro 283* 313 reference 157* 170* 187* 236* 278* 589* 627* 674* 735* reject_message <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 905 1431 1503 1517 remove 515 remove_code 1312: res 285* 319 resource_claims <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 151* 547= 547 570= 570 result 319= 883 928 931 1272= result_code 172* 821= 856= 870= 895= 904 906 931= 961 1174= 1178= 1180 1185= 1197= 1202= 1205= 1226= 1248 1254= 1264= 1277= 1285= 1288= 1335= 1441 1467= 1469= 1475 1484= 1494= 1496= 1498= 1502 1504 \f tsathlst 81.06.23. 20.18. page 61 result_range 172* 285* return 832 964 1439 route 279* 307 route_vct 167* 906 1432 1441 1504 route_vector 164* 167* s 270 604 654 705 743 764 773 906 908 962 1030 1092 1181 1232 1233 1359 1432 1441 1504 1506 1518 sac_rac_e 367 1293 1300= 1316= sac_rac_entry <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 119* 1316 sac_rac_ix 121* 356* 367 378* 388= 390 390 391= 391 393 726* 739 742 742 987= 988 989 1001= 1002 1003 1019= 1020 1021 1034= 1035 1036 1049= 1050 1051 1063= 1064 1065 1081= 1082 1083 1096= 1097 1098 1110= 1111 1112 1127= 1128 1129 1141= 1142 1143 1156= 1157 1158 1171 1172 1363= 1364 1389= 1390 1391 1420= 1421 1422 1466 1473= 1476 sac_rac_lth 118* 1287 sac_rac_range <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 121* 356* 378* 460* 726* sac_rac_table <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 117* 118* sac_rac_tbl 117* 367 596 634 739 884 989 1003 1051 1065 1112 1143 1293 1297 1313 1391 1422 sac_rac_tbl_ix <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1287 1287 1293 1297 1303 1304 1307 1313 1319 sac_rac_tbl_entry <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 119* sac_rac_top 122* 390 846 851 867 986 987 1000 1001 1018 1019 1033 1034 1048 1049 1062 1063 1080 1081 1095 1109 1110 1126 1127 1140 1141 1155 1156 1204 1303 1304= 1319 1322 1322 1323= 1323 1326 1327= 1327 1362 1363 1388 1389 1419 1420 search_sac_rac <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 375* 393= 1171 1466 seconds 237* 250 sem 7* 270 297 300 604 654 705 743 764 773 799 803 906 908 962 1030 1092 1181 1230 1231 1232 1233 1234 1359 1432 1441 1504 1506 1518 sempointer 2* 209* 216* send 315 316 882 934 946 1171 1196 1271 1284 1416 1421 1463 1466 1483 sensesem 300 service_code 599 639 shadows 134* 514 515 1244 1249 shad_ix 514 515 759= 1244 1249 signal 270 604 654 705 743 908 962 1030 1092 1181 1359 1506 start 1249 start_code 597 637 stop_code 132* 132* 491 492 601 \f tsathlst 81.06.23. 20.18. page 62 substitute_ac_addr <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 368 369 tbl_entry 1293= 1300 testopen 750 testout 751 920 957 976 timeout_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 270 time_out_msg 187* 235* 253 266 773 775 784: 788 1354 time_out_pool <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 184* 773 tolerance 1349 traffic_count <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 488= 689 690= 692 699= traffic_counter <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 224* traffic_test_freq <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 190* 222* 1238 1349= true 193* 444 989 998 1003 1051 1060 1065 1112 1143 1301 1384 1386 1391 tssup_sem_no 743 906 908 962 1030 1092 1359 1432 1441 1504 1518 ts_add 846 846 849 867 867 868 1172= 1476= 1486= ts_env_vers 751 ts_pointer 212* ts_pointer_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 7* ts_vect_ix 604 654 705 760= 1230 1231 1506 t_e_c_init 648= u1 256= 263= 778= u3 307= 767= 779= 827 906 920 976 1432 1441 1504 u4 257= 264= 308= 780= 840 916 957 972 1438 1457 unknown_opcode <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1432 unknown_receiver <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 856 870 1185 1498 unknown_route <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1518 unknown_sender <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 895 928 1174 1469 unknown_update <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1335 upd 284* 318 update 318= 887 1290 updates 183* 248 769 update_range 284* update_req 256 \f tsathlst 81.06.23. 20.18. page 63 upper_atc_tbl_index <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 137* 471* 582* 620* upper_sac_rac_index <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 122* usual_ac_addr <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 371 version 11* 751 w 297 300 799 803 1234 wait 799 waitsd 803 wait_sem_delay <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 803 wanted_activity <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 492= 636 637 639 641 887= working_0404_msg <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 156* 933: working_0608_msg <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 157* work_entry 472* 476= 481 510* 517= 527 work_ix 471* 478= 479 479 z 202* 750 751 920 957 976 zone 202* \f tsathlst 81.06.23. 20.18. page 64 AND 11 ARRAY 1 BEGIN 75 CASE 8 CONST 2 DIV 2 DO 89 DOWNTO 1 ELSE 43 END 83 FOR 18 FUNCTION 5 IF 105 IN 4 MOD 4 NIL 7 NOT 11 OF 11 OR 9 OTHERWISE 8 PROCEDURE 9 REPEAT 6 THEN 105 TO 17 TYPE 1 UNTIL 6 VAR 27 WHILE 4 WITH 41 *pascal80 codesize.12000 alarmenv tsenvir source 81.06.23. 20.20. pascal80 version 1981.04.01 name headline beginline endline appetite(words) book_up 243 246 274 : 9 get_message 295 298 332 : 11 foreign_nc 345 352 350 : 6 acting_ac 365 367 373 : 7 search_sac_r 386 388 395 : 17 find_atc_tbl 414 419 455 : 10 place_atc_tb 471 476 498 : 18 del_atc_tbl_ 510 515 530 : 23 decrease_cla 541 544 551 : 6 increase_cla 562 564 578 : 11 atc_stop_pol 589 594 614 : 28 atc_start_po 627 632 664 : 30 atc_supervis 674 679 723 : 26 ac_check_con 735 739 743 : 38 at_handler 11 750 1527 : 328 code: 1 . 958 = 12958 bytes end of PASCAL80 compilation end blocksread = 55 *o c ▶EOF◀