|
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: 158208 (0x26a00) Types: TextFileVerbose Names: »tsnetlst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »tsnetlst«
\f tsnetlst 81.06.15. 18.39. page 1 10 1 20 2 PROCESS netconnector( 30 3 global_timeout : byte; 40 4 op_sem : sempointer; (* operator semaphore *) 50 5 VAR 60 6 pax_pool_sem, 70 7 main_sem : !ts_pointer ; (* main semaphore *) 80 8 local_sems 90 9 : netc_loc_sems; 100 10 VAR 110 11 com_pool_sem, 120 12 timeout_sem, 130 13 dte_sem : !sempointer (* dte semaphore *) 140 14 ); 150 15 160 16 CONST 170 17 version = "vers 1.20 /"; 180 18 (* --------------*) 190 19 200 20 (*================================================================= 210 21 " " 220 22 " net connector " 230 23 " " 240 24 " establishes a connection between the alarmapplikation and " 250 25 " a x.25 dte module " 260 26 " " 270 27 " the module can receive three kinds of messages : " 280 28 " " 290 29 " - messages to net connector " 300 30 " - messages to node supervisor " 310 31 " - messages to paxnet " 320 32 " " 330 33 ==================================================================*) 340 34 \f tsnetlst 81.06.15. 18.39. page 2 1010 35 (* introduction to netconnector 1020 36 1030 37 abbreviation list : 1040 38 ----------------- 1050 39 1060 40 sem semaphore 1070 41 1080 42 1090 43 1100 44 pseudo code version 81.15.01 : 1110 45 ---------------------------- 1120 46 1130 47 1140 48 1150 49 *) 1160 50 1170 51 (*--- udest}ender : 1180 52 1190 53 udtagelse fra generel ventek| 1200 54 reset af str|m 1210 55 clear str|m 1220 56 behandling af ikke-ok resultater 1230 57 1240 58 ---- *) 1250 59 \f tsnetlst 81.06.15. 18.39. page 3 2010 60 (*---------------------------------------------------------------- 2020 61 . constants . 2030 62 ------------------------------------------------------------------*) 2040 63 CONST 2050 64 2060 65 2070 66 ric_delay_1 = 0; (* delay used for receiving on incomming call *) 2080 67 2090 68 ric_delay_2 = 0; (* delay used for ric-buffers *) 2100 69 (* delay = ric-delay-1 * (2 ** ric-delay-2) msec *) 2110 70 all_ric_bufs = 2; (* total number of ric-buffers *) 2120 71 2130 72 dc_index = max_locals +2; 2140 73 2150 74 max_pax_table = dc_index + max_globals; 2160 75 2170 76 netc_routes = (. netc_route, netc_route1, netc_route2 .); 2180 77 first_codes = (. #h30, #h40, #h41, #hc0, #hc1 .); 2190 78 \f tsnetlst 81.06.15. 18.39. page 4 3010 79 TYPE 3020 80 mess_10_12_type 3030 81 = RECORD 3040 82 ! a : alarmlabel; 3050 83 ! pax_index : integer; 3060 84 ! pax_entry : paxnet_e; 3070 85 END; 3080 86 3090 87 release_cause = (accept, reject); 3100 88 3110 89 stat_type = ARRAY (1..16) OF integer; 3120 90 \f tsnetlst 81.06.15. 18.39. page 5 4010 91 (*------------------------------------------------------------------- 4020 92 . variables section . 4030 93 ----------------------------------------------------------------------*) 4040 94 VAR 4050 95 act_pax_index : integer; 4060 96 act_stream_index : byte; 4070 97 act_pax_addr : ext_pax_addr; 4080 98 4090 99 local_macro, 4100 100 alarm_macro : macroaddr; 4110 101 alarm_op_code : byte; 4120 102 4130 103 no_address : boolean := true; 4140 104 pax_table_top, 4150 105 local_mac_top : byte; 4160 106 4170 107 i,j,k : integer; 4180 108 z : zone; 4190 109 4200 110 act_facilities : integer := 0; 4210 111 CONST 4220 112 4230 113 loca_packets = 1; 4240 114 lost_packets = 2; 4250 115 nons_packets = 3; 4260 116 send_packets = 4; 4270 117 reci_packets = 5; 4280 118 retr_packets = 6; 4290 119 call_packets = 7; 4300 120 rica_packets = 8; 4310 121 netc_packets = 9; 4320 122 copy_packets = 10; 4330 123 aicc_packets = 11; 4340 124 reji_packets = 12; 4350 125 4360 126 no_pax_bufs = 13; 4370 127 no_com_bufs = 14; 4380 128 ill_adr_bufs= 15; 4390 129 dubl_packets = 16; 4400 130 4410 131 VAR 4420 132 stat : stat_type := stat_type(16 *** 0); 4430 133 4440 134 tst : integer := 255; 4450 135 4460 136 (* \f tsnetlst 81.06.15. 18.39. page 6 4470 137 2 - protocol values 4480 138 4 - actions on each stream 4490 139 8 - results from dte 4500 140 16 - write checkpoints 4510 141 32 - write table contents 4520 142 64 - write procedurecalls 4530 143 ----*) 4540 144 \f tsnetlst 81.06.15. 18.39. page 7 5010 145 (*--------------------------------------------------------------- 5020 146 . pools . 5030 147 -----------------------------------------------------------------*) 5040 148 VAR 5050 149 5060 150 timer_pool : pool 1; 5070 151 5080 152 (*--------------------------------------------------------------- 5090 153 . references . 5100 154 -----------------------------------------------------------------*) 5110 155 5120 156 t_ref, 5130 157 nil_ref, 5140 158 ref, 5150 159 in_ref (* input reference *) 5160 160 : reference; 5170 161 5180 162 (*-------------------------------------------------------------- 5190 163 . internal semaphores . 5200 164 -----------------------------------------------------------------*) 5210 165 5220 166 5230 167 \f tsnetlst 81.06.15. 18.39. page 8 6010 168 (*---------------------------------------------------------------- 6020 169 . tables section . 6030 170 ------------------------------------------------------------------*) 6040 171 VAR 6050 172 6060 173 pax_table (* is used for routing alarmnetmessages *) 6070 174 : ARRAY(1..max_pax_table+1) OF paxnet_e; 6080 175 6090 176 stream_states 6100 177 : ARRAY (min_stream_no-1..max_stream_no) OF stream_s_e; 6110 178 6120 179 \f tsnetlst 81.06.15. 18.39. page 9 7010 180 (*------------------------------------------------------------------ 7020 181 . externals 7030 182 --------------------------------------------------------------------*) 7040 183 7050 184 PROCEDURE reject_message ( 7060 185 VAR 7070 186 msg : reference; 7080 187 VAR 7090 188 rec_sem : !sempointer; 7100 189 route : byte; 7110 190 sender_macro : macroaddr; 7120 191 sender_micro : integer; 7130 192 result_code : result_range 7140 193 ); 7150 194 EXTERNAL; 7160 195 \f tsnetlst 81.06.15. 18.39. page 10 8010 196 (*---------------------------------------------------------- 8020 197 - forwards - 8030 198 ------------------------------------------------------------*) 8040 199 8050 200 PROCEDURE send_aic_buf( 8060 201 stream, 8070 202 call_id, 8080 203 c_data 8090 204 : byte ); 8100 205 FORWARD; 8110 206 8120 207 PROCEDURE send_rejic_buf ( 8130 208 call_id, 8140 209 diag_code : byte ); 8150 210 FORWARD; 8160 211 8170 212 FUNCTION local_transmitter ( 8180 213 VAR 8190 214 ref : reference; 8200 215 local_macro : macroaddr): integer; 8210 216 FORWARD; 8220 217 8230 218 PROCEDURE send_rdata_bufs ( 8240 219 no_of_bufs, 8250 220 stream : byte ); 8260 221 FORWARD; 8270 222 8280 223 PROCEDURE send_sdata_buf ( 8290 224 VAR iref : reference; 8300 225 stream_no : byte; 8310 226 opr_code : byte ; 8320 227 c_data : byte ); 8330 228 FORWARD; 8340 229 8350 230 PROCEDURE send_to_stream ( 8360 231 VAR 8370 232 ref : reference; 8380 233 stream_index : integer 8390 234 ); FORWARD; 8400 235 8410 236 PROCEDURE release_uo_data ( 8420 237 cause : release_cause; 8430 238 stream : byte ); 8440 239 FORWARD; 8450 240 8460 241 PROCEDURE send_to_wait ( \f tsnetlst 81.06.15. 18.39. page 11 8470 242 VAR ref : reference; 8480 243 pax_index : byte ); 8490 244 FORWARD; 8500 245 \f tsnetlst 81.06.15. 18.39. page 12 9010 246 (*=============================================================== 9020 247 " procedures section " 9030 248 ==================================================================*) 9040 249 9050 250 PROCEDURE write_create_pars; 9060 251 (*------------------------------------------------------- 9070 252 . writes all the create parameters 9080 253 ---------------------------------------------------------*) 9090 254 BEGIN 9100 255 1 ! testout(z,"global-timou", global_timeout); 9110 256 2 ! testout(z,"pax-pool ", pax_pool); 9120 257 3 ! testout(z,"common pool ", com_pool); 9130 258 4 ! testout(z,"main sem no ", netc_sem_no); 9140 259 5 ! testout(z,"local supsem", tssup_sem_no); 9150 260 6 ! testout(z,"local ncsem ", nc_sem_no); 9160 261 7 ! testout(z,"timeoutsemno", timeout_sem_no); 9170 262 8 ! testout(z,"dte sem no ", dte_sem_no); 9180 263 9 END; 9190 264 9200 265 \f tsnetlst 81.06.15. 18.39. page 13 10010 266 PROCEDURE write_paxnet_entry ( i:integer); 10020 267 (*--------------------------------------------------------- 10030 268 . writes the content of paxnet entry number i 10040 269 . used for testpurposes 10050 270 -----------------------------------------------------------*) 10060 271 BEGIN 10070 272 1 ! WITH pax_table(i) DO 10080 273 2 ! BEGIN 10090 274 3 ! ! testout(z,"pax-table-no", i); 10100 275 4 ! ! testout(z,"al_mac_dc ", al_mac_addr.dc_addr); 10110 276 5 ! ! testout(z,"al_mac_nc ", al_mac_addr.nc_addr); 10120 277 6 ! ! testout(z,"al_mac_ts ", al_mac_addr.ts_addr); 10130 278 7 ! ! testout(z,"ext_pax_net ", pax_addr(3)); 10140 279 8 ! ! testout(z,"ext_pax_reg ", pax_addr(6)); 10150 280 9 ! ! testout(z,"ext_pax_node", pax_addr(8)*10+pax_addr(9)); 10160 281 10 ! ! testout(z,"stream-no ", stream_no); 10170 282 11 ! ! testout(z,"max-retrans ", max_retrans); 10180 283 12 ! END; 10190 284 13 END; 10200 285 \f tsnetlst 81.06.15. 18.39. page 14 11010 286 PROCEDURE write_stream_state (i:integer); 11020 287 (*--------------------------------------------------------- 11030 288 . writes the content of stream-states(i) 11040 289 . used for testpurposes 11050 290 -----------------------------------------------------------*) 11060 291 BEGIN 11070 292 1 ! WITH stream_states(i) DO 11080 293 2 ! BEGIN 11090 294 3 ! ! testout(z,"stream-stats", i); 11100 295 4 ! ! IF NOT nil( act_out) THEN 11110 296 5 ! ! testout(z,"not-nil-act ", 1) 11120 297 6 ! ! ELSE 11130 298 7 ! ! testout(z,"nil-act-out ", 0); 11140 299 8 ! ! CASE state OF 11150 300 9 ! ! ! free : testout(z,"s=free ", l_f_q*100+l_s_q); 11160 301 10 ! ! ! calling : testout(z,"s=calling ", l_f_q*100+l_s_q); 11170 302 11 ! ! ! sending : testout(z,"s=sending ", l_f_q*100+l_s_q); 11180 303 12 ! ! ! receiving : testout(z,"s=receiving ", l_f_q*100+l_s_q); 11190 304 13 ! ! ! waiting : testout(z,"s=waiting ", l_f_q*100+l_s_q); 11200 305 14 ! ! ! clearing : testout(z,"s=clearing ", l_f_q*100+l_s_q); 11210 306 15 ! ! ! resetting : testout(z,"s=resetting ", l_f_q*100+l_s_q); 11220 307 16 ! ! END; 11230 308 17 ! ! testout(z,"timers-1 ", timers(1)); 11240 309 18 ! END; 11250 310 19 END; 11260 311 \f tsnetlst 81.06.15. 18.39. page 15 12010 312 FUNCTION connec_to_addr ( 12020 313 VAR stream_indx : byte ) : boolean; 12030 314 (*-------------------------------------------------------------- 12040 315 . checks if there is a stream active to act-pax-addr 12050 316 ----------------------------------------------------------------*) 12060 317 VAR i : byte := min_stream_no; 12070 318 BEGIN 12080 319 1 ! connec_to_addr := false; 12090 320 2 ! 12100 321 3 ! stream_indx := min_stream_no -1; 12110 322 4 ! 12120 323 5 ! WHILE i <= max_stream_no DO 12130 324 6 ! WITH stream_states(i) DO 12140 325 7 ! BEGIN 12150 326 8 ! ! IF (state <> free) 12160 327 9 ! ! AND ( act_pax_addr = pax_addr) THEN 12170 328 10 ! ! BEGIN 12180 329 11 ! ! ! connec_to_addr := true; 12190 330 12 ! ! ! stream_indx := i; 12200 331 13 ! ! ! i:= max_stream_no; 12210 332 14 ! ! END; 12220 333 15 ! ! i := i+1; 12230 334 16 ! END; 12240 335 17 ! 12250 336 18 ! IF tst>64 THEN 12260 337 19 ! testout(z,"connec-to-ad", stream_indx); 12270 338 20 END; 12280 339 \f tsnetlst 81.06.15. 18.39. page 16 13010 340 PROCEDURE init_stream_states ; 13020 341 (*--------------------------------------------------------------- 13030 342 . initializes the stream_table . 13040 343 -----------------------------------------------------------------*) 13050 344 VAR 13060 345 i,j : integer; 13070 346 ref : reference; 13080 347 13090 348 BEGIN 13100 349 1 ! FOR i := min_stream_no-1 TO max_stream_no DO 13110 350 2 ! WITH stream_states(i) DO 13120 351 3 ! BEGIN 13130 352 4 ! ! l_f_q := 0; 13140 353 5 ! ! l_s_q := 0; 13150 354 6 ! ! max_retrans := 0; 13160 355 7 ! ! retrans_count := 0; 13170 356 8 ! ! retrans_timo := stream_timeout; 13180 357 9 ! ! retrans_timer := retrans_timo; 13190 358 10 ! ! pax_addr := ext_pax_addr(14***0); 13200 359 11 ! ! v_s_inc := 0; 13210 360 12 ! ! v_s := 1; 13220 361 13 ! ! v_r_inc := 0; 13230 362 14 ! ! v_r := 0; 13240 363 15 ! ! 13250 364 16 ! ! FOR j:= 1 TO max_queue DO 13260 365 17 ! ! timers( j ) := 0; 13270 366 18 ! ! 13280 367 19 ! ! state := free; 13290 368 20 ! END 13300 369 21 END; 13310 370 \f tsnetlst 81.06.15. 18.39. page 17 14010 371 PROCEDURE update_stream_state ( 14020 372 entry : byte; 14030 373 upd_kind : upd_kinds ; 14040 374 new_state : state_type ); 14050 375 (*--------------------------------------------------- 14060 376 . updates the streamstates 14070 377 -----------------------------------------------------*) 14080 378 VAR 14090 379 ref : reference; 14100 380 14110 381 BEGIN 14120 382 1 ! WITH stream_states(entry) DO 14130 383 2 ! BEGIN 14140 384 3 ! ! CASE upd_kind OF 14150 385 4 ! ! ! 14160 386 5 ! ! ! inc_all : 14170 387 6 ! ! ! BEGIN 14180 388 7 ! ! ! ! state := new_state; 14190 389 8 ! ! ! ! IF alarm_op_code IN first_codes THEN 14200 390 9 ! ! ! ! BEGIN 14210 391 10 ! ! ! ! ! count(l_f_q); 14220 392 11 ! ! ! ! ! timers( l_f_q) := stream_timeout; 14230 393 12 ! ! ! ! END 14240 394 13 ! ! ! ! ELSE 14250 395 14 ! ! ! ! count( l_s_q); 14260 396 15 ! ! ! END; 14270 397 16 ! ! ! 14280 398 17 ! ! ! inc_q : 14290 399 18 ! ! ! BEGIN 14300 400 19 ! ! ! ! IF alarm_op_code IN first_codes THEN 14310 401 20 ! ! ! ! BEGIN 14320 402 21 ! ! ! ! ! count( l_f_q); 14330 403 22 ! ! ! ! ! timers( l_f_q) := stream_timeout; 14340 404 23 ! ! ! ! END 14350 405 24 ! ! ! ! ELSE 14360 406 25 ! ! ! ! count(l_s_q); 14370 407 26 ! ! ! END; 14380 408 27 ! ! ! 14390 409 28 ! ! ! dec_f_q : 14400 410 29 ! ! ! BEGIN 14410 411 30 ! ! ! ! l_f_q := l_f_q -1; 14420 412 31 ! ! ! ! FOR i := 1 TO l_f_q DO 14430 413 32 ! ! ! ! timers(i) := timers( i+1); 14440 414 33 ! ! ! END; 14450 415 34 ! ! ! 14460 416 35 ! ! ! dec_s_q : \f tsnetlst 81.06.15. 18.39. page 18 14470 417 36 ! ! ! l_s_q := l_s_q -1; 14480 418 37 ! ! ! 14490 419 38 ! ! ! new_stat : 14500 420 39 ! ! ! state := new_state; 14510 421 40 ! ! ! 14520 422 41 ! ! END (* case *); 14530 423 42 ! ! IF tst>64 THEN 14540 424 43 ! ! write_stream_state( entry); 14550 425 44 ! END 14560 426 45 END; 14570 427 \f tsnetlst 81.06.15. 18.39. page 19 15010 428 PROCEDURE update_pax_table ( 15020 429 i : integer; 15030 430 VAR a : alarmlabel; 15040 431 VAR new_pax_e : paxnet_e ); 15050 432 (*------------------------------------------------------ 15060 433 . updates the pax-table with new-pax-e in respect to 15070 434 . upd-code, and deleivers the result in res-code 15080 435 --------------------------------------------------------*) 15090 436 BEGIN 15100 437 1 ! IF (i>0) AND (i<=max_pax_table) THEN 15110 438 2 ! BEGIN 15120 439 3 ! ! 15130 440 4 ! ! a.result := accepted; 15140 441 5 ! ! 15150 442 6 ! ! IF i>=max_locals+1 THEN i:=i+1; 15160 443 7 ! ! (* because DC has no entry for searching *) 15170 444 8 ! ! 15180 445 9 ! ! CASE a.update OF 15190 446 10 ! ! ! 15200 447 11 ! ! ! read_code : (* read from pax-table *) 15210 448 12 ! ! ! new_pax_e := pax_table(i); 15220 449 13 ! ! ! 15230 450 14 ! ! ! <*---- deleted because OF rc.pgs.55 ------- 15240 451 15 ! ! ! insert_code : (* insert entry in pax-table *) 15250 452 16 ! ! ! (* entryes can only be inserted just below the top *) 15260 453 17 ! ! ! BEGIN 15270 454 18 ! ! ! IF ((i=local_mac_top-1) AND (new_pax_e.stream_no>0)) OR 15280 455 19 ! ! ! (( i=pax_table_top-1) AND (new_pax_e.stream_no=0)) THEN 15290 456 20 ! ! ! BEGIN 15300 457 21 ! ! ! pax_table(i) := new_pax_e; 15310 458 22 ! ! ! IF i = 1 THEN no_address := false; 15320 459 23 ! ! ! IF (i=local_mac_top-1) AND (local_mac_top<max_locals+1) THEN 15330 460 24 ! ! ! local_mac_top := local_mac_top +1 15340 461 25 ! ! ! ELSE 15350 462 26 ! ! ! IF (i=pax_table_top-1) AND (pax_table_top<max_pax_table) THEN 15360 463 27 ! ! ! pax_table_top := pax_table_top +1; 15370 464 28 ! ! ! END 15380 465 29 ! ! ! ELSE 15390 466 30 ! ! ! a.result := not_accepted; 15400 467 31 ! ! ! END; 15410 468 32 ! ! ! ----------------------------*> 15420 469 33 ! ! ! \f tsnetlst 81.06.15. 18.39. page 20 16010 470 34 ! ! ! insert_code : (* insert entry in pax-table *) 16020 471 35 ! ! ! BEGIN 16030 472 36 ! ! ! ! (* modifying can be done anywhere in the table *) 16040 473 37 ! ! ! ! 16050 474 38 ! ! ! ! pax_table(i) := new_pax_e; 16060 475 39 ! ! ! ! 16070 476 40 ! ! ! ! IF i <= max_locals THEN 16080 477 41 ! ! ! ! IF i >= local_mac_top THEN 16090 478 42 ! ! ! ! local_mac_top := i+1 16100 479 43 ! ! ! ! ELSE 16110 480 44 ! ! ! ! ELSE 16120 481 45 ! ! ! ! IF i >= pax_table_top THEN 16130 482 46 ! ! ! ! pax_table_top := i+1; 16140 483 47 ! ! ! ! IF i=1 THEN no_address := false; 16150 484 48 ! ! ! END; 16160 485 49 ! ! ! 16170 486 50 ! ! ! remove_code : (* remove entry in pax-table *) 16180 487 51 ! ! ! (* entryes has to be removed from the top *) 16190 488 52 ! ! ! BEGIN 16200 489 53 ! ! ! ! IF (i=local_mac_top-1) OR (i=pax_table_top-1) THEN 16210 490 54 ! ! ! ! BEGIN 16220 491 55 ! ! ! ! ! pax_table(i).al_mac_addr := nil_macro; 16230 492 56 ! ! ! ! ! IF i=1 THEN no_address := true; 16240 493 57 ! ! ! ! ! 16250 494 58 ! ! ! ! ! IF i=local_mac_top-1 THEN 16260 495 59 ! ! ! ! ! local_mac_top := local_mac_top-1 16270 496 60 ! ! ! ! ! ELSE 16280 497 61 ! ! ! ! ! pax_table_top := pax_table_top -1; 16290 498 62 ! ! ! ! END 16300 499 63 ! ! ! ! ELSE 16310 500 64 ! ! ! ! a.result := not_accepted; 16320 501 65 ! ! ! END; 16330 502 66 ! ! ! OTHERWISE 16340 503 67 ! ! ! a.result := unknown_update 16350 504 68 ! ! END 16360 505 69 ! END 16370 506 70 ! ELSE 16380 507 71 ! a.result := no_room; 16390 508 72 ! 16400 509 73 ! IF tst>64 THEN 16410 510 74 ! write_paxnet_entry(i); 16420 511 75 END; 16430 512 \f tsnetlst 81.06.15. 18.39. page 21 17010 513 PROCEDURE init_pax_table ; 17020 514 (*----------------------------------------------------- 17030 515 . initializes the pax-table 17040 516 -------------------------------------------------------*) 17050 517 VAR 17060 518 i: integer; 17070 519 BEGIN 17080 520 1 ! 17090 521 2 ! FOR i := 2 TO max_pax_table DO 17100 522 3 ! WITH pax_table(i) DO 17110 523 4 ! BEGIN 17120 524 5 ! ! al_mac_addr := nil_macro; 17130 525 6 ! ! stream_no := 1; 17140 526 7 ! ! max_retrans := 0; 17150 527 8 ! END; 17160 528 9 ! 17170 529 10 ! WITH pax_table(1) DO 17180 530 11 ! BEGIN 17190 531 12 ! ! al_mac_addr := macroaddr(0,0,0); 17200 532 13 ! ! pax_addr := ext_pax_addr(13***0, netc_mic_addr); 17210 533 14 ! ! stream_no := 1; 17220 534 15 ! END; 17230 535 16 ! 17240 536 17 ! WITH pax_table( dc_index) DO 17250 537 18 ! BEGIN 17260 538 19 ! ! al_mac_addr := dc_alarm_macro; 17270 539 20 ! ! pax_addr := paxnet_config(1); 17280 540 21 ! END; 17290 541 22 END; 17300 542 17310 543 \f tsnetlst 81.06.15. 18.39. page 22 18010 544 PROCEDURE send_to_systimer ( 18020 545 VAR 18030 546 ref : reference ); 18040 547 (*----------------------------------------------------- 18050 548 . sends a timerbuffer to systemtimer 18060 549 -------------------------------------------------------*) 18070 550 BEGIN 18080 551 1 ! ref^.u3 := 50; 18090 552 2 ! ref^.u4 := 7; 18100 553 3 ! 18110 554 4 ! sendtimer( ref); 18120 555 5 END; 18130 556 18140 557 FUNCTION free_stream : byte; 18150 558 (*--------------------------------------------------------------- 18160 559 . finds the first idle stream in the stream-states . 18170 560 -----------------------------------------------------------------*) 18180 561 VAR 18190 562 i : integer; 18200 563 18210 564 BEGIN 18220 565 1 ! i:= min_stream_no; 18230 566 2 ! 18240 567 3 ! WHILE (stream_states(i).state <> free) AND (i<max_stream_no) DO 18250 568 4 ! i:= i+1; 18260 569 5 ! 18270 570 6 ! IF stream_states(i).state = free THEN 18280 571 7 ! free_stream := i 18290 572 8 ! ELSE 18300 573 9 ! free_stream := min_stream_no -1; 18310 574 10 ! 18320 575 11 ! IF tst>64 THEN 18330 576 12 ! testout(z,"free-stream ", i); 18340 577 13 END; 18350 578 18360 579 \f tsnetlst 81.06.15. 18.39. page 23 19010 580 PROCEDURE start_new_inc( 19020 581 stream : byte ); 19030 582 (*----------------------------------------------- 19040 583 . starts a new incarnation og messagenumbers 19050 584 -------------------------------------------------*) 19060 585 BEGIN 19070 586 1 ! WITH stream_states( stream) DO 19080 587 2 ! BEGIN 19090 588 3 ! ! v_s_inc := (v_s_inc +1) MOD 256; 19100 589 4 ! ! v_s := 1; 19110 590 5 ! ! v_r_inc := (v_r_inc +1) MOD 256; 19120 591 6 ! ! v_r := 0; 19130 592 7 ! END; 19140 593 8 ! 19150 594 9 ! IF tst>64 THEN 19160 595 10 ! testout(z,"start-new-in", stream); 19170 596 11 END; 19180 597 \f tsnetlst 81.06.15. 18.39. page 24 20010 598 PROCEDURE set_retrans ( 20020 599 stream : byte ); 20030 600 (*-------------------------------------------------- 20040 601 . sets max-retrans retrans-count retrans-timo 20050 602 . and retrans-timer 20060 603 ----------------------------------------------------*) 20070 604 BEGIN 20080 605 1 ! WITH stream_states( stream) DO 20090 606 2 ! BEGIN 20100 607 3 ! ! max_retrans := pax_table( act_out^.u1).max_retrans; 20110 608 4 ! ! retrans_count := 0; 20120 609 5 ! ! retrans_timo := stream_timeout; 20130 610 6 ! ! retrans_timer := retrans_timo; 20140 611 7 ! END; 20150 612 8 END; 20160 613 20170 614 PROCEDURE set_control ( 20180 615 stream : byte; 20190 616 opr : byte; 20200 617 VAR call_field : call_field_type ); 20210 618 (*------------------------------------------------- 20220 619 . sets control-field in call-field 20230 620 ---------------------------------------------------*) 20240 621 BEGIN 20250 622 1 ! WITH call_field.control DO 20260 623 2 ! WITH stream_states( stream) DO 20270 624 3 ! BEGIN 20280 625 4 ! ! op_code := opr; 20290 626 5 ! ! data := 0; 20300 627 6 ! ! n_s_inc := v_s_inc; 20310 628 7 ! ! n_s := v_s; 20320 629 8 ! ! n_r_inc := v_r_inc; 20330 630 9 ! ! n_r := v_r; 20340 631 10 ! ! 20350 632 11 ! ! IF tst>64 THEN 20360 633 12 ! ! testout(z,"set-control ", stream); 20370 634 13 ! END 20380 635 14 END; 20390 636 \f tsnetlst 81.06.15. 18.39. page 25 21010 637 PROCEDURE make_a_call ( 21020 638 stream_no : byte ); 21030 639 (*------------------------------------------------------- 21040 640 . makes a call request at dte 21050 641 ---------------------------------------------------------*) 21060 642 VAR 21070 643 ref : reference; 21080 644 BEGIN 21090 645 1 ! count( stat( call_packets)); 21100 646 2 ! 21110 647 3 ! sensesem( ref, pax_pool_sem.w^); 21120 648 4 ! 21130 649 5 ! IF NOT nil( ref) THEN 21140 650 6 ! BEGIN 21150 651 7 ! ! 21160 652 8 ! ! ref^.u1 := dte_car; 21170 653 9 ! ! ref^.u2 := dte_default; 21180 654 10 ! ! ref^.u3 := stream_no; 21190 655 11 ! ! ref^.u4 := to_link; 21200 656 12 ! ! 21210 657 13 ! ! LOCK ref AS buf : car_buf_type DO 21220 658 14 ! ! WITH buf DO 21230 659 15 ! ! BEGIN 21240 660 16 ! ! ! first := ric_first_val; 21250 661 17 ! ! ! 21260 662 18 ! ! ! q_bit := false; 21270 663 19 ! ! ! 21280 664 20 ! ! ! set_control( stream_no, dte_car, call_buf); 21290 665 21 ! ! ! 21300 666 22 ! ! ! WITH call_buf DO 21310 667 23 ! ! ! BEGIN 21320 668 24 ! ! ! ! dte_adr_l := l_dte_adr; 21330 669 25 ! ! ! ! dte_adr := act_pax_addr; 21340 670 26 ! ! ! ! facility_l := l_facilities; 21350 671 27 ! ! ! ! facility := act_facilities; 21360 672 28 ! ! ! ! 21370 673 29 ! ! ! ! LOCK stream_states( stream_no).act_out AS abuf : max_alarm_mess DO 21380 674 30 ! ! ! ! BEGIN 21390 675 31 ! ! ! ! ! alarm_mess := abuf; 21400 676 32 ! ! ! ! ! last := ric_first_val + l_control + abuf.al.no_of_by -1+2; 21410 677 33 ! ! ! ! END; 21420 678 34 ! ! ! END 21430 679 35 ! ! END; 21440 680 36 ! ! signal( ref, dte_sem^); 21450 681 37 ! ! 21460 682 38 ! ! IF tst>64 THEN \f tsnetlst 81.06.15. 18.39. page 26 21470 683 39 ! ! testout(z,"make-a-call ", stream_no); 21480 684 40 ! END 21490 685 41 ! ELSE 21500 686 42 ! BEGIN 21510 687 43 ! ! IF tst>4 THEN 21520 688 44 ! ! testout(z,"no car buf ",0); 21530 689 45 ! ! 21540 690 46 ! ! count( stat( no_pax_bufs)); 21550 691 47 ! END; 21560 692 48 END; 21570 693 \f tsnetlst 81.06.15. 18.39. page 27 22010 694 PROCEDURE start_stream ( 22020 695 VAR ref : reference; 22030 696 stream_no, 22040 697 pax_index : byte ); 22050 698 (*-------------------------------------------------------- 22060 699 - makes a stream ready for use - 22070 700 ----------------------------------------------------------*) 22080 701 BEGIN 22090 702 1 ! stream_states( stream_no).pax_addr := pax_table( pax_index).pax_addr; 22100 703 2 ! 22110 704 3 ! ref^.u1 := pax_index; 22120 705 4 ! ref :=: stream_states( stream_no).act_out; 22130 706 5 ! 22140 707 6 ! update_stream_state( stream_no, new_stat, calling); 22150 708 7 ! act_pax_addr := pax_table( pax_index).pax_addr; 22160 709 8 ! start_new_inc( stream_no); 22170 710 9 ! send_rdata_bufs( windowsize, stream_no); 22180 711 10 ! make_a_call( stream_no); 22190 712 11 ! 22200 713 12 ! set_retrans( stream_no); 22210 714 13 ! 22220 715 14 ! IF tst>64 THEN 22230 716 15 ! testout(z,"start-stream", stream_no); 22240 717 16 END; 22250 718 \f tsnetlst 81.06.15. 18.39. page 28 23010 719 FUNCTION copy_data ( 23020 720 amess : max_alarm_mess; 23030 721 VAR user_ref : reference ) : byte; 23040 722 (*-------------------------------------------------------- 23050 723 . copies an alarmmess into a buffer from common pool 23060 724 ----------------------------------------------------------*) 23070 725 BEGIN 23080 726 1 ! sensesem( user_ref, com_pool_sem^); 23090 727 2 ! 23100 728 3 ! IF NOT nil( user_ref) THEN 23110 729 4 ! BEGIN 23120 730 5 ! ! user_ref^.u3 := netc_route; 23130 731 6 ! ! LOCK user_ref AS abuf : max_alarm_mess DO 23140 732 7 ! ! BEGIN 23150 733 8 ! ! ! abuf := amess; 23160 734 9 ! ! ! user_ref^.u4 := amess.al.op_code; 23170 735 10 ! ! ! IF tst>64 THEN 23180 736 11 ! ! ! testout(z,"copy data ", amess.al.no_of_by); 23190 737 12 ! ! END; 23200 738 13 ! ! 23210 739 14 ! ! count( stat( copy_packets)); 23220 740 15 ! ! 23230 741 16 ! ! copy_data := data_received; 23240 742 17 ! END 23250 743 18 ! ELSE 23260 744 19 ! BEGIN 23270 745 20 ! ! copy_data := data_not_received; 23280 746 21 ! ! count( stat( no_com_bufs)); 23290 747 22 ! ! IF tst>64 THEN 23300 748 23 ! ! testout(z,"copy data ", 0); 23310 749 24 ! END; 23320 750 25 ! 23330 751 26 END; 23340 752 23350 753 \f tsnetlst 81.06.15. 18.39. page 29 24010 754 PROCEDURE handle_10_12_mess ( 24020 755 VAR in_ref : reference ); 24030 756 (*--------------------------------------------------------- 24040 757 . handles any message with netconnector as receiver 24050 758 -----------------------------------------------------------*) 24060 759 BEGIN 24070 760 1 ! count( stat( netc_packets)); 24080 761 2 ! 24090 762 3 ! IF in_ref^.u4 = #hac THEN 24100 763 4 ! BEGIN 24110 764 5 ! ! (*-- update paxnettable --*) 24120 765 6 ! ! 24130 766 7 ! ! LOCK in_ref AS buf : mess_10_12_type DO 24140 767 8 ! ! BEGIN 24150 768 9 ! ! ! 24160 769 10 ! ! ! update_pax_table( buf.pax_index, buf.a, buf.pax_entry); 24170 770 11 ! ! ! 24180 771 12 ! ! ! buf.a.op_code := #had; 24190 772 13 ! ! ! local_macro := buf.a.rec.macro; 24200 773 14 ! ! ! buf.a.rec := buf.a.send; 24210 774 15 ! ! ! buf.a.send.macro := local_macro; 24220 775 16 ! ! ! buf.a.send.micro := netc_mic_addr; 24230 776 17 ! ! ! 24240 777 18 ! ! ! in_ref^.u4 := #had; 24250 778 19 ! ! END; 24260 779 20 ! ! 24270 780 21 ! ! in_ref^.u3 := netc_route2; 24280 781 22 ! ! 24290 782 23 ! ! act_pax_index := local_transmitter( in_ref, local_macro); 24300 783 24 ! END 24310 784 25 ! \f tsnetlst 81.06.15. 18.39. page 30 25010 785 26 ! ELSE 25020 786 27 ! (*-- message <> 10.12 received with netcon as receiver --*) 25030 787 28 ! BEGIN 25040 788 29 ! ! count( stat( ill_adr_bufs)); 25050 789 30 ! ! 25060 790 31 ! ! IF in_ref^.u4 = #h12 THEN 25070 791 32 ! ! return( in_ref) 25080 792 33 ! ! ELSE 25090 793 34 ! ! BEGIN 25100 794 35 ! ! ! LOCK in_ref AS buf:alarmlabel DO 25110 795 36 ! ! ! local_macro := buf.rec.macro; 25120 796 37 ! ! ! 25130 797 38 ! ! ! k := local_transmitter( nil_ref, local_macro); 25140 798 39 ! ! ! 25150 799 40 ! ! ! reject_message 25160 800 41 ! ! ! ( in_ref, local_sems(k), netc_route1, local_macro, 25170 801 42 ! ! ! netc_mic_addr, unknown_opcode); 25180 802 43 ! ! ! 25190 803 44 ! ! ! 25200 804 45 ! ! ! IF tst>4 THEN 25210 805 46 ! ! ! testout(z,"address err ", i) 25220 806 47 ! ! END; 25230 807 48 ! END; 25240 808 49 END; 25250 809 \f tsnetlst 81.06.15. 18.39. page 31 26010 810 PROCEDURE handle_node_test ( 26020 811 VAR alabel : alarmlabel ); 26030 812 (*--------------------------------------------------------------- 26040 813 . updates pax-table with act-pax-addr when node-test comes 26050 814 . and netc has no address 26060 815 -----------------------------------------------------------------*) 26070 816 BEGIN 26080 817 1 ! IF alabel.op_code = #hc0 THEN 26090 818 2 ! BEGIN 26100 819 3 ! ! pax_table(1).al_mac_addr := alabel.rec.macro; 26110 820 4 ! ! no_address := false; 26120 821 5 ! ! 26130 822 6 ! ! IF alabel.send.macro.nc_addr = 0 THEN 26140 823 7 ! ! k := dc_index 26150 824 8 ! ! ELSE 26160 825 9 ! ! k := dc_index + 1; 26170 826 10 ! ! 26180 827 11 ! ! pax_table(k).al_mac_addr := alabel.send.macro; 26190 828 12 ! ! pax_table(k).pax_addr := act_pax_addr; 26200 829 13 ! ! pax_table(k).max_retrans := 0; 26210 830 14 ! ! 26220 831 15 ! ! IF tst>16 THEN 26230 832 16 ! ! BEGIN 26240 833 17 ! ! ! testout(z,"ha-node-test", k); 26250 834 18 ! ! ! write_paxnet_entry(k); 26260 835 19 ! ! END; 26270 836 20 ! ! 26280 837 21 ! ! IF pax_table_top <= k THEN 26290 838 22 ! ! pax_table_top := k+1; 26300 839 23 ! ! 26310 840 24 ! END; 26320 841 25 END; 26330 842 \f tsnetlst 81.06.15. 18.39. page 32 27010 843 FUNCTION stream_transmitter ( 27020 844 VAR stream : byte; (* zero means make a call *) 27030 845 op_code : byte; 27040 846 c_data : byte; 27050 847 VAR ref : reference (* nil means send a receipt *) 27060 848 ) : integer; 27070 849 (*---------------------------------------------------------- 27080 850 . 1. sends a receipt without data on stream 27090 851 . 2. sends a receipt with data on stream 27100 852 . 3. makes a call if stream is zero and a free stream exists 27110 853 ------------------------------------------------------------*) 27120 854 VAR 27130 855 alarm_macro : macroaddr; 27140 856 i : integer; 27150 857 BEGIN 27160 858 1 ! IF tst>64 THEN 27170 859 2 ! testout(z,"strm-transm ", stream); 27180 860 3 ! 27190 861 4 ! IF NOT nil(ref) THEN 27200 862 5 ! BEGIN 27210 863 6 ! ! (*- a message has to be send to net -*) 27220 864 7 ! ! 27230 865 8 ! ! IF stream = 0 THEN 27240 866 9 ! ! BEGIN 27250 867 10 ! ! ! 27260 868 11 ! ! ! LOCK ref AS abuf : alarmlabel DO 27270 869 12 ! ! ! BEGIN 27280 870 13 ! ! ! ! alarm_macro := abuf.rec.macro; 27290 871 14 ! ! ! ! alarm_op_code := abuf.op_code; 27300 872 15 ! ! ! END; 27310 873 16 ! ! ! 27320 874 17 ! ! ! pax_table( pax_table_top).al_mac_addr := alarm_macro; 27330 875 18 ! ! ! 27340 876 19 ! ! ! i:= dc_index; 27350 877 20 ! ! ! 27360 878 21 ! ! ! WHILE pax_table(i).al_mac_addr <> alarm_macro DO 27370 879 22 ! ! ! i:= i+1; 27380 880 23 ! ! ! \f tsnetlst 81.06.15. 18.39. page 33 28010 881 24 ! ! ! IF i<pax_table_top THEN 28020 882 25 ! ! ! BEGIN 28030 883 26 ! ! ! ! (*- a receiver exists ; now check streams -*) 28040 884 27 ! ! ! ! 28050 885 28 ! ! ! ! IF tst>16 THEN 28060 886 29 ! ! ! ! testout(z,"rec exists ", i); 28070 887 30 ! ! ! ! 28080 888 31 ! ! ! ! stream := free_stream; 28090 889 32 ! ! ! ! 28100 890 33 ! ! ! ! IF stream >= min_stream_no THEN 28110 891 34 ! ! ! ! BEGIN 28120 892 35 ! ! ! ! ! start_stream( ref, stream, i); 28130 893 36 ! ! ! ! END 28140 894 37 ! ! ! ! ELSE 28150 895 38 ! ! ! ! send_to_wait( ref, i); 28160 896 39 ! ! ! END 28170 897 40 ! ! ! \f tsnetlst 81.06.15. 18.39. page 34 29010 898 41 ! ! ! ELSE 29020 899 42 ! ! ! BEGIN 29030 900 43 ! ! ! ! (*- no receiver exists in table -*) 29040 901 44 ! ! ! ! (*- check exit-addr or free stream -*) 29050 902 45 ! ! ! ! 29060 903 46 ! ! ! ! IF tst>16 THEN 29070 904 47 ! ! ! ! testout(z,"no addr ",i); 29080 905 48 ! ! ! ! 29090 906 49 ! ! ! ! 29100 907 50 ! ! ! ! 29110 908 51 ! ! ! ! act_pax_addr := pax_table( dc_index).pax_addr; 29120 909 52 ! ! ! ! IF connec_to_addr( act_stream_index) THEN 29130 910 53 ! ! ! ! BEGIN 29140 911 54 ! ! ! ! ! ref^.u1 := dc_index; 29150 912 55 ! ! ! ! ! send_to_stream( ref, act_stream_index) 29160 913 56 ! ! ! ! END 29170 914 57 ! ! ! ! ELSE 29180 915 58 ! ! ! ! BEGIN 29190 916 59 ! ! ! ! ! stream:=free_stream; 29200 917 60 ! ! ! ! ! 29210 918 61 ! ! ! ! ! IF stream >= min_stream_no THEN 29220 919 62 ! ! ! ! ! BEGIN 29230 920 63 ! ! ! ! ! ! start_stream( ref, stream, dc_index); 29240 921 64 ! ! ! ! ! END 29250 922 65 ! ! ! ! ! ELSE 29260 923 66 ! ! ! ! ! BEGIN 29270 924 67 ! ! ! ! ! ! IF tst>16 THEN 29280 925 68 ! ! ! ! ! ! testout(z,"wait dc ",stream); 29290 926 69 ! ! ! ! ! ! 29300 927 70 ! ! ! ! ! ! send_to_wait( ref, dc_index); 29310 928 71 ! ! ! ! ! END; 29320 929 72 ! ! ! ! END; 29330 930 73 ! ! ! END 29340 931 74 ! ! ! \f tsnetlst 81.06.15. 18.39. page 35 30010 932 75 ! ! END 30020 933 76 ! ! ELSE 30030 934 77 ! ! BEGIN 30040 935 78 ! ! ! IF tst>16 THEN 30050 936 79 ! ! ! testout(z,"send datarec", op_code); 30060 937 80 ! ! ! 30070 938 81 ! ! ! send_sdata_buf( ref, stream, op_code,c_data); 30080 939 82 ! ! END; 30090 940 83 ! END (* not nil ref *) 30100 941 84 ! ELSE 30110 942 85 ! BEGIN 30120 943 86 ! ! (*- a receipt has to be made *) 30130 944 87 ! ! 30140 945 88 ! ! IF tst>16 THEN 30150 946 89 ! ! testout(z,"send receipt", op_code); 30160 947 90 ! ! 30170 948 91 ! ! send_sdata_buf( ref, stream, op_code,c_data); 30180 949 92 ! ! 30190 950 93 ! END; 30200 951 94 ! stream_transmitter := stream; 30210 952 95 ! 30220 953 96 ! IF tst>64 THEN 30230 954 97 ! testout(z,"strm-transm ", stream); 30240 955 98 END; 30250 956 \f tsnetlst 81.06.15. 18.39. page 36 31010 957 FUNCTION local_receiver ( 31020 958 VAR 31030 959 ref : reference; 31040 960 VAR 31050 961 remote_macro : macroaddr 31060 962 ): integer; 31070 963 (*---------------------------------------------------------------- 31080 964 . routes a message either to further handling by netconnector . 31090 965 . or routes it to local user at once . 31100 966 ------------------------------------------------------------------*) 31110 967 VAR 31120 968 i : integer := 1; 31130 969 BEGIN 31140 970 1 ! count( stat( loca_packets)); 31150 971 2 ! 31160 972 3 ! ref^.u3 := netc_route; 31170 973 4 ! 31180 974 5 ! LOCK ref AS buf : alarmlabel DO 31190 975 6 ! BEGIN 31200 976 7 ! ! alarm_op_code := ref^.u4; 31210 977 8 ! ! buf.op_code := ref^.u4; 31220 978 9 ! ! remote_macro := buf.rec.macro; 31230 979 10 ! END; 31240 980 11 ! 31250 981 12 ! pax_table( pax_table_top).al_mac_addr := remote_macro; 31260 982 13 ! 31270 983 14 ! WHILE pax_table(i).al_mac_addr <> remote_macro DO i:= i+1; 31280 984 15 ! 31290 985 16 ! IF (i < local_mac_top) THEN 31300 986 17 ! signal( ref, local_sems(pax_table(i).stream_no)^); 31310 987 18 ! 31320 988 19 ! pax_table( pax_table_top).al_mac_addr := nil_macro; 31330 989 20 ! 31340 990 21 ! local_receiver := i; 31350 991 22 ! 31360 992 23 ! IF tst>64 THEN 31370 993 24 ! testout(z,"local-receiv", i); 31380 994 25 END; 31390 995 \f tsnetlst 81.06.15. 18.39. page 37 32010 996 FUNCTION stream_receiver ( 32020 997 func : byte; 32030 998 VAR ref: reference ) : integer; 32040 999 (*------------------------------------------------------- 32050 1000 . receives a message from dte-module and looks at 32060 1001 . control.op-code 32070 1002 . if this is a command, the data are either used by netcon 32080 1003 . or send to local user via local-transmitter 32090 1004 . if it is a receipt, this is handled by the netcon 32100 1005 ---------------------------------------------------------*) 32110 1006 VAR 32120 1007 stream : byte := 0; 32130 1008 user_ref : reference; 32140 1009 result : byte; 32150 1010 BEGIN 32160 1011 1 ! CASE func OF 32170 1012 2 ! ! 32180 1013 3 ! ! dte_ric : (*- incomming call -*) 32190 1014 4 ! ! BEGIN 32200 1015 5 ! ! ! count( stat( rica_packets)); 32210 1016 6 ! ! ! LOCK ref AS buf : ric_buf_type DO 32220 1017 7 ! ! ! WITH buf DO 32230 1018 8 ! ! ! BEGIN 32240 1019 9 ! ! ! ! result := copy_data( call_buf.alarm_mess, user_ref); 32250 1020 10 ! ! ! ! 32260 1021 11 ! ! ! ! IF tst>64 THEN 32270 1022 12 ! ! ! ! testout(z,"strm-rec-ric", result); 32280 1023 13 ! ! ! ! 32290 1024 14 ! ! ! ! IF result = data_received THEN 32300 1025 15 ! ! ! ! BEGIN 32310 1026 16 ! ! ! ! ! 32320 1027 17 ! ! ! ! ! act_pax_addr := call_buf.dte_adr; 32330 1028 18 ! ! ! ! ! 32340 1029 19 ! ! ! ! ! IF NOT connec_to_addr( stream) THEN 32350 1030 20 ! ! ! ! ! BEGIN 32360 1031 21 ! ! ! ! ! ! stream := free_stream; 32370 1032 22 ! ! ! ! ! ! 32380 1033 23 ! ! ! ! ! ! IF stream >= min_stream_no THEN 32390 1034 24 ! ! ! ! ! ! BEGIN 32400 1035 25 ! ! ! ! ! ! ! send_rdata_bufs( windowsize, stream); 32410 1036 26 ! ! ! ! ! ! ! stream_states( stream).pax_addr := act_pax_addr; 32420 1037 27 ! ! ! ! ! ! ! update_stream_state( stream, new_stat, receiving); 32430 1038 28 ! ! ! ! ! ! END 32440 1039 29 ! ! ! ! ! END; 32450 1040 30 ! ! ! ! ! 32460 1041 31 ! ! ! ! ! LOCK user_ref AS abuf : alarmlabel DO \f tsnetlst 81.06.15. 18.39. page 38 32470 1042 32 ! ! ! ! ! BEGIN 32480 1043 33 ! ! ! ! ! ! alarm_macro := abuf.rec.macro; 32490 1044 34 ! ! ! ! ! ! IF no_address THEN 32500 1045 35 ! ! ! ! ! ! handle_node_test( abuf); 32510 1046 36 ! ! ! ! ! END; 32520 1047 37 ! ! ! ! ! 32530 1048 38 ! ! ! ! ! IF tst>16 THEN 32540 1049 39 ! ! ! ! ! testout(z,"ric to local", alarm_macro.ts_addr); 32550 1050 40 ! ! ! ! ! 32560 1051 41 ! ! ! ! ! IF stream >= min_stream_no THEN 32570 1052 42 ! ! ! ! ! BEGIN 32580 1053 43 ! ! ! ! ! ! WITH stream_states( stream) DO 32590 1054 44 ! ! ! ! ! ! IF v_r_inc*256 +v_r <> call_buf.control.n_s_inc*256+call_buf.control.n_s THEN 32600 1055 45 ! ! ! ! ! ! BEGIN 32610 1056 46 ! ! ! ! ! ! ! act_pax_index := local_transmitter( user_ref, alarm_macro); 32620 1057 47 ! ! ! ! ! ! ! v_r_inc := call_buf.control.n_s_inc; 32630 1058 48 ! ! ! ! ! ! ! v_r := call_buf.control.n_s; 32640 1059 49 ! ! ! ! ! ! END 32650 1060 50 ! ! ! ! ! ! ELSE 32660 1061 51 ! ! ! ! ! ! BEGIN (* dublicated package *) 32670 1062 52 ! ! ! ! ! ! ! count( stat( dubl_packets)); 32680 1063 53 ! ! ! ! ! ! ! return( user_ref); 32690 1064 54 ! ! ! ! ! ! ! IF tst>64 THEN 32700 1065 55 ! ! ! ! ! ! ! testout(z,"dublicate-r ", stat( dubl_packets)); 32710 1066 56 ! ! ! ! ! ! END; 32720 1067 57 ! ! ! ! ! ! 32730 1068 58 ! ! ! ! ! ! send_aic_buf( stream, call_id, data_received); 32740 1069 59 ! ! ! ! ! END 32750 1070 60 ! ! ! ! ! ELSE 32760 1071 61 ! ! ! ! ! send_rejic_buf( call_id, data_received); 32770 1072 62 ! ! ! ! END 32780 1073 63 ! ! ! ! ELSE 32790 1074 64 ! ! ! ! (*-- no buffer ready for data --*) 32800 1075 65 ! ! ! ! send_rejic_buf( call_id, data_not_received); 32810 1076 66 ! ! ! END; 32820 1077 67 ! ! END; 32830 1078 68 ! ! 32840 1079 69 ! ! \f tsnetlst 81.06.15. 18.39. page 39 33010 1080 70 ! ! dte_rdata : (*- receive data -*) 33020 1081 71 ! ! BEGIN 33030 1082 72 ! ! ! count( stat( reci_packets)); 33040 1083 73 ! ! ! stream := ref^.u3; 33050 1084 74 ! ! ! LOCK ref AS dbuf : dte_sdata_data DO 33060 1085 75 ! ! ! WITH dbuf DO 33070 1086 76 ! ! ! BEGIN 33080 1087 77 ! ! ! ! 33090 1088 78 ! ! ! ! result := copy_data( alarm_mess, user_ref); 33100 1089 79 ! ! ! ! 33110 1090 80 ! ! ! ! IF tst>64 THEN 33120 1091 81 ! ! ! ! testout(z,"strm-rec-dat", result); 33130 1092 82 ! ! ! ! 33140 1093 83 ! ! ! ! IF result = data_received THEN 33150 1094 84 ! ! ! ! BEGIN 33160 1095 85 ! ! ! ! ! 33170 1096 86 ! ! ! ! ! LOCK user_ref AS abuf : alarmlabel DO 33180 1097 87 ! ! ! ! ! BEGIN 33190 1098 88 ! ! ! ! ! ! alarm_macro := abuf.rec.macro; 33200 1099 89 ! ! ! ! ! ! IF no_address THEN 33210 1100 90 ! ! ! ! ! ! BEGIN 33220 1101 91 ! ! ! ! ! ! ! act_pax_addr := stream_states( stream).pax_addr; 33230 1102 92 ! ! ! ! ! ! ! handle_node_test( abuf); 33240 1103 93 ! ! ! ! ! ! END; 33250 1104 94 ! ! ! ! ! END; 33260 1105 95 ! ! ! ! ! 33270 1106 96 ! ! ! ! ! 33280 1107 97 ! ! ! ! ! IF tst>16 THEN 33290 1108 98 ! ! ! ! ! testout(z,"rdata to loc", alarm_macro.ts_addr); 33300 1109 99 ! ! ! ! ! 33310 1110 100 ! ! ! ! ! WITH stream_states( stream) DO 33320 1111 101 ! ! ! ! ! IF v_r_inc*256+v_r <> control.n_s_inc*256+control.n_s THEN 33330 1112 102 ! ! ! ! ! BEGIN 33340 1113 103 ! ! ! ! ! ! act_pax_index := local_transmitter( user_ref, alarm_macro); 33350 1114 104 ! ! ! ! ! ! v_r_inc := control.n_s_inc; 33360 1115 105 ! ! ! ! ! ! v_r := control.n_s; 33370 1116 106 ! ! ! ! ! END 33380 1117 107 ! ! ! ! ! ELSE 33390 1118 108 ! ! ! ! ! BEGIN (* dublicated package *) 33400 1119 109 ! ! ! ! ! ! count( stat( dubl_packets)); 33410 1120 110 ! ! ! ! ! ! return( user_ref); 33420 1121 111 ! ! ! ! ! ! IF tst>64 THEN 33430 1122 112 ! ! ! ! ! ! testout(z,"dublicate-d ", stat( dubl_packets)); 33440 1123 113 ! ! ! ! ! END; 33450 1124 114 ! ! ! ! ! stream := stream_transmitter( ref^.u3, opc_receipt, data_received, nil_ref); 33460 1125 115 ! ! ! ! END \f tsnetlst 81.06.15. 18.39. page 40 33470 1126 116 ! ! ! ! ELSE 33480 1127 117 ! ! ! ! (*-- no buffer ready for data --*) 33490 1128 118 ! ! ! ! stream := stream_transmitter( ref^.u3, opc_receipt, data_not_received, nil_ref); 33500 1129 119 ! ! ! END 33510 1130 120 ! ! END; 33520 1131 121 ! ! 33530 1132 122 ! ! OTHERWISE 33540 1133 123 ! ! count( stat( nons_packets)); 33550 1134 124 ! END (* case *); 33560 1135 125 ! stream_receiver := stream; 33570 1136 126 END; 33580 1137 \f tsnetlst 81.06.15. 18.39. page 41 34010 1138 FUNCTION local_transmitter ( 34020 1139 VAR 34030 1140 ref : reference; 34040 1141 local_macro : macroaddr ):integer; 34050 1142 (*---------------------------------------------------- 34060 1143 . routes a message to local user, i e . 34070 1144 . tssupervisor, ncsupervisor, dcsimulator . 34080 1145 . or others . 34090 1146 . either because it is received from the net . 34100 1147 . or because it is not transmitted to the net . 34110 1148 ----------------------------------------------------*) 34120 1149 VAR 34130 1150 i : integer := 1; 34140 1151 34150 1152 BEGIN 34160 1153 1 ! 34170 1154 2 ! IF NOT nil( ref) THEN 34180 1155 3 ! IF NOT( ref^.u3 IN netc_routes) THEN 34190 1156 4 ! ref^.u3 := netc_route; 34200 1157 5 ! 34210 1158 6 ! pax_table( local_mac_top).al_mac_addr := local_macro; 34220 1159 7 ! 34230 1160 8 ! WHILE pax_table(i).al_mac_addr <> local_macro DO i:= i+1; 34240 1161 9 ! 34250 1162 10 ! 34260 1163 11 ! IF (i = local_mac_top) OR (pax_table(i).stream_no =0) THEN 34270 1164 12 ! BEGIN 34280 1165 13 ! ! IF tst>64 THEN 34290 1166 14 ! ! testout(z,"local-trm-to", 1); 34300 1167 15 ! ! 34310 1168 16 ! ! local_transmitter := 1; 34320 1169 17 ! ! IF NOT nil( ref) THEN 34330 1170 18 ! ! signal( ref, local_sems(1)^) 34340 1171 19 ! END 34350 1172 20 ! ELSE 34360 1173 21 ! BEGIN 34370 1174 22 ! ! IF tst>64 THEN 34380 1175 23 ! ! testout(z,"local-transm", i); 34390 1176 24 ! ! 34400 1177 25 ! ! local_transmitter := i; 34410 1178 26 ! ! IF NOT nil( ref) THEN 34420 1179 27 ! ! signal( ref, local_sems(pax_table(i).stream_no)^); 34430 1180 28 ! END; 34440 1181 29 ! 34450 1182 30 ! pax_table( local_mac_top).al_mac_addr := nil_macro; 34460 1183 31 ! \f tsnetlst 81.06.15. 18.39. page 42 34470 1184 32 END; 34480 1185 \f tsnetlst 81.06.15. 18.39. page 43 35010 1186 PROCEDURE send_to_stream ( 35020 1187 VAR 35030 1188 ref : reference ; 35040 1189 stream_index : integer 35050 1190 ); 35060 1191 (*-------------------------------------------------------------- 35070 1192 - sends an outputmessage to stream and updates the tables - 35080 1193 ----------------------------------------------------------------*) 35090 1194 35100 1195 BEGIN 35110 1196 1 ! 35120 1197 2 ! IF (( alarm_op_code IN first_codes) 35130 1198 3 ! AND (stream_states( stream_index).l_f_q < max_queue)) 35140 1199 4 ! OR NOT ( alarm_op_code IN first_codes) THEN 35150 1200 5 ! BEGIN 35160 1201 6 ! ! IF tst>64 THEN 35170 1202 7 ! ! testout(z,"send to strm", stream_index); 35180 1203 8 ! ! 35190 1204 9 ! ! IF nil( stream_states(stream_index).act_out) THEN 35200 1205 10 ! ! BEGIN 35210 1206 11 ! ! ! ref :=: stream_states(stream_index).act_out; 35220 1207 12 ! ! ! make_a_call( stream_index); 35230 1208 13 ! ! ! update_stream_state( stream_index, new_stat, calling); 35240 1209 14 ! ! ! set_retrans(stream_index); 35250 1210 15 ! ! END 35260 1211 16 ! ! ELSE 35270 1212 17 ! ! BEGIN 35280 1213 18 ! ! ! IF alarm_op_code IN first_codes THEN 35290 1214 19 ! ! ! signal( ref, stream_states( stream_index).first_queue) 35300 1215 20 ! ! ! ELSE 35310 1216 21 ! ! ! signal( ref, stream_states(stream_index).second_queue); 35320 1217 22 ! ! ! CASE stream_states( stream_index).state OF 35330 1218 23 ! ! ! ! calling, 35340 1219 24 ! ! ! ! sending : 35350 1220 25 ! ! ! ! update_stream_state( stream_index, inc_q, sending); 35360 1221 26 ! ! ! ! waiting, 35370 1222 27 ! ! ! ! receiving : 35380 1223 28 ! ! ! ! update_stream_state( stream_index, inc_all, sending); 35390 1224 29 ! ! ! ! OTHERWISE; 35400 1225 30 ! ! ! END; 35410 1226 31 ! ! END 35420 1227 32 ! END 35430 1228 33 ! \f tsnetlst 81.06.15. 18.39. page 44 36010 1229 34 ! ELSE 36020 1230 35 ! IF ref^.u4 = #h12 THEN 36030 1231 36 ! return( ref) 36040 1232 37 ! ELSE 36050 1233 38 ! BEGIN 36060 1234 39 ! ! IF tst>64 THEN 36070 1235 40 ! ! testout(z,"queu too big", stream_index); 36080 1236 41 ! ! 36090 1237 42 ! ! LOCK ref AS a : alarmlabel DO 36100 1238 43 ! ! local_macro := a.send.macro; 36110 1239 44 ! ! k := local_transmitter( nil_ref, local_macro); 36120 1240 45 ! ! 36130 1241 46 ! ! reject_message 36140 1242 47 ! ! ( ref, local_sems(k), netc_route1, local_macro, 36150 1243 48 ! ! netc_mic_addr, no_resources); 36160 1244 49 ! ! 36170 1245 50 ! END; 36180 1246 51 END; 36190 1247 \f tsnetlst 81.06.15. 18.39. page 45 37010 1248 PROCEDURE send_to_wait ( 37020 1249 VAR ref : reference; 37030 1250 pax_index : byte ); 37040 1251 (*------------------------------------------------------------- 37050 1252 . sends an outputbuffer to wait_queue at stream-states index 37060 1253 . no min-stream-no - 1 37070 1254 ---------------------------------------------------------------*) 37080 1255 BEGIN 37090 1256 1 ! update_stream_state( min_stream_no-1, inc_q, free); 37100 1257 2 ! 37110 1258 3 ! 37120 1259 4 ! ref^.u1 := pax_index; 37130 1260 5 ! 37140 1261 6 ! IF alarm_op_code IN first_codes THEN 37150 1262 7 ! signal( ref, stream_states( min_stream_no-1).first_queue) 37160 1263 8 ! ELSE 37170 1264 9 ! signal( ref, stream_states( min_stream_no-1).second_queue); 37180 1265 10 ! IF tst>64 THEN 37190 1266 11 ! testout(z,"send-to-wait", pax_index); 37200 1267 12 END; 37210 1268 \f tsnetlst 81.06.15. 18.39. page 46 38010 1269 PROCEDURE make_ric_bufs ( 38020 1270 no_of_bufs : byte 38030 1271 ); 38040 1272 (*------------------------------------------------------------- 38050 1273 . - gets a receive incomming call buffer and makes it ready . 38060 1274 . for use . 38070 1275 ---------------------------------------------------------------*) 38080 1276 VAR 38090 1277 i : integer; 38100 1278 ref : reference; 38110 1279 38120 1280 BEGIN 38130 1281 1 ! IF tst>64 THEN 38140 1282 2 ! testout(z,"make-ric-buf", no_of_bufs); 38150 1283 3 ! 38160 1284 4 ! FOR i:= 1 TO no_of_bufs DO 38170 1285 5 ! BEGIN 38180 1286 6 ! ! 38190 1287 7 ! ! sensesem( ref, pax_pool_sem.w^); 38200 1288 8 ! ! 38210 1289 9 ! ! IF NOT nil( ref) THEN 38220 1290 10 ! ! BEGIN 38230 1291 11 ! ! ! 38240 1292 12 ! ! ! ref^.u1 := dte_ric; 38250 1293 13 ! ! ! ref^.u2 := dte_default; 38260 1294 14 ! ! ! ref^.u3 := netc_route; 38270 1295 15 ! ! ! ref^.u4 := to_link; 38280 1296 16 ! ! ! 38290 1297 17 ! ! ! LOCK ref AS ric_buf : ric_buf_type DO 38300 1298 18 ! ! ! WITH ric_buf DO 38310 1299 19 ! ! ! BEGIN 38320 1300 20 ! ! ! ! first := ric_first_val; 38330 1301 21 ! ! ! ! last := ric_first_val+min_ric_data-1; 38340 1302 22 ! ! ! ! delay1:=ric_delay_1; 38350 1303 23 ! ! ! ! delay2:=ric_delay_2; 38360 1304 24 ! ! ! ! call_id:= 0; 38370 1305 25 ! ! ! END; 38380 1306 26 ! ! ! 38390 1307 27 ! ! ! signal( ref, dte_sem^ ); 38400 1308 28 ! ! END 38410 1309 29 ! ! \f tsnetlst 81.06.15. 18.39. page 47 39010 1310 30 ! ! ELSE 39020 1311 31 ! ! BEGIN 39030 1312 32 ! ! ! count( stat( no_pax_bufs)); 39040 1313 33 ! ! ! IF tst>4 THEN 39050 1314 34 ! ! ! testout(z,"no ric bufs ", i); 39060 1315 35 ! ! END; 39070 1316 36 ! END; 39080 1317 37 END; (* make-ric-bufs *) 39090 1318 \f tsnetlst 81.06.15. 18.39. page 48 40010 1319 PROCEDURE send_aic_buf ( 40020 1320 stream, 40030 1321 call_id, 40040 1322 c_data 40050 1323 : byte ); 40060 1324 (*---------------------------------------------------------------- 40070 1325 . sends an aic-buffer to the dte . 40080 1326 ------------------------------------------------------------------*) 40090 1327 VAR 40100 1328 ref : reference; 40110 1329 BEGIN 40120 1330 1 ! IF tst>64 THEN 40130 1331 2 ! testout(z,"send-aic-buf", stream); 40140 1332 3 ! 40150 1333 4 ! sensesem( ref, pax_pool_sem.w^); 40160 1334 5 ! 40170 1335 6 ! IF NOT nil( ref) THEN 40180 1336 7 ! BEGIN 40190 1337 8 ! ! count( stat( aicc_packets)); 40200 1338 9 ! ! ref^.u1 := dte_aic; 40210 1339 10 ! ! ref^.u2 := dte_default; 40220 1340 11 ! ! ref^.u3 := stream; 40230 1341 12 ! ! ref^.u4 := to_link; 40240 1342 13 ! ! 40250 1343 14 ! ! LOCK ref AS aic : aic_buf_type DO 40260 1344 15 ! ! WITH aic DO 40270 1345 16 ! ! BEGIN 40280 1346 17 ! ! ! first := aic_first_val; 40290 1347 18 ! ! ! last := aic_first_val +1; 40300 1348 19 ! ! ! aic_id:= call_id; 40310 1349 20 ! ! ! aic_q := false; 40320 1350 21 ! ! END; 40330 1351 22 ! ! 40340 1352 23 ! ! signal( ref, dte_sem^); 40350 1353 24 ! ! send_sdata_buf( ref, stream, dte_aic, c_data); 40360 1354 25 ! END 40370 1355 26 ! ELSE 40380 1356 27 ! BEGIN 40390 1357 28 ! ! count( stat( no_pax_bufs)); 40400 1358 29 ! ! IF tst>4 THEN 40410 1359 30 ! ! testout(z,"no aic buf ",0); 40420 1360 31 ! END; 40430 1361 32 ! 40440 1362 33 END (* send-aic-buf *); 40450 1363 \f tsnetlst 81.06.15. 18.39. page 49 41010 1364 PROCEDURE send_rejic_buf ( 41020 1365 call_id, 41030 1366 diag_code : byte ); 41040 1367 (*---------------------------------------------------------- 41050 1368 . sends a ric-buffer to dte . 41060 1369 ------------------------------------------------------------*) 41070 1370 VAR 41080 1371 ref : reference ; 41090 1372 BEGIN 41100 1373 1 ! 41110 1374 2 ! IF tst>64 THEN 41120 1375 3 ! testout(z,"send-rejic ", call_id); 41130 1376 4 ! 41140 1377 5 ! sensesem ( ref, pax_pool_sem.w^); 41150 1378 6 ! 41160 1379 7 ! IF NOT nil( ref) THEN 41170 1380 8 ! BEGIN 41180 1381 9 ! ! count( stat( reji_packets)); 41190 1382 10 ! ! 41200 1383 11 ! ! ref^.u1 := dte_rejic; 41210 1384 12 ! ! ref^.u2 := dte_default; 41220 1385 13 ! ! ref^.u3 := call_id; 41230 1386 14 ! ! ref^.u4 := to_link; 41240 1387 15 ! ! 41250 1388 16 ! ! LOCK ref AS rejic : rejic_buf_type DO 41260 1389 17 ! ! WITH rejic DO 41270 1390 18 ! ! BEGIN 41280 1391 19 ! ! ! first := rejic_first_val; 41290 1392 20 ! ! ! last := rejic_first_val +1; 41300 1393 21 ! ! ! rejic_id := call_id; 41310 1394 22 ! ! ! rejic_diag := diag_code; 41320 1395 23 ! ! END; 41330 1396 24 ! ! 41340 1397 25 ! ! signal( ref, dte_sem^); 41350 1398 26 ! END 41360 1399 27 ! ELSE 41370 1400 28 ! BEGIN 41380 1401 29 ! ! count( stat( no_pax_bufs)); 41390 1402 30 ! ! IF tst>4 THEN 41400 1403 31 ! ! testout(z,"no rejic buf", 0); 41410 1404 32 ! END; 41420 1405 33 ! 41430 1406 34 END (* send-rejic-buf *); 41440 1407 \f tsnetlst 81.06.15. 18.39. page 50 42010 1408 PROCEDURE send_ric_buf ( 42020 1409 VAR 42030 1410 ref : reference ); 42040 1411 (*-------------------------------------------------------- 42050 1412 - sends a ric-buffer to dte - 42060 1413 ----------------------------------------------------------*) 42070 1414 BEGIN 42080 1415 1 ! ref^.u2 := dte_default; 42090 1416 2 ! 42100 1417 3 ! signal( ref, dte_sem^); 42110 1418 4 END; 42120 1419 \f tsnetlst 81.06.15. 18.39. page 51 43010 1420 PROCEDURE send_sdata_buf ( 43020 1421 VAR iref : reference; 43030 1422 stream_no : byte; 43040 1423 opr_code : byte ; 43050 1424 c_data : byte ); 43060 1425 (*------------------------------------------------- 43070 1426 . sends a sdata buffer to dte 43080 1427 ---------------------------------------------------*) 43090 1428 VAR 43100 1429 ref : reference; 43110 1430 i : integer; 43120 1431 BEGIN 43130 1432 1 ! IF tst>64 THEN 43140 1433 2 ! BEGIN 43150 1434 3 ! ! testout(z,"send-sdata-b", stream_no); 43160 1435 4 ! ! testout(z,"op-code ", opr_code); 43170 1436 5 ! END; 43180 1437 6 ! 43190 1438 7 ! sensesem( ref, pax_pool_sem.w^); 43200 1439 8 ! 43210 1440 9 ! IF NOT nil( ref) THEN 43220 1441 10 ! BEGIN 43230 1442 11 ! ! 43240 1443 12 ! ! count( stat( send_packets)); 43250 1444 13 ! ! ref^.u1 := dte_sdata; 43260 1445 14 ! ! ref^.u2 := dte_default; 43270 1446 15 ! ! ref^.u3 := stream_no; 43280 1447 16 ! ! ref^.u4 := to_link; 43290 1448 17 ! ! 43300 1449 18 ! ! LOCK ref AS buf : dte_sdata_data DO 43310 1450 19 ! ! BEGIN 43320 1451 20 ! ! ! buf.first := sdata_first_val; 43330 1452 21 ! ! ! buf.last := sdata_first_val + l_control -1; 43340 1453 22 ! ! ! 43350 1454 23 ! ! ! buf.q_bit := false; 43360 1455 24 ! ! ! buf.m_bit := false; 43370 1456 25 ! ! ! \f tsnetlst 81.06.15. 18.39. page 52 44010 1457 26 ! ! ! WITH buf.control DO 44020 1458 27 ! ! ! WITH stream_states( stream_no) DO 44030 1459 28 ! ! ! BEGIN 44040 1460 29 ! ! ! ! op_code := opr_code; 44050 1461 30 ! ! ! ! data := c_data; 44060 1462 31 ! ! ! ! n_s_inc := v_s_inc; 44070 1463 32 ! ! ! ! n_s := v_s; 44080 1464 33 ! ! ! ! n_r_inc := v_r_inc; 44090 1465 34 ! ! ! ! n_r := v_r; 44100 1466 35 ! ! ! END; 44110 1467 36 ! ! ! 44120 1468 37 ! ! ! IF NOT nil( iref) THEN 44130 1469 38 ! ! ! LOCK iref AS abuf : max_alarm_mess DO 44140 1470 39 ! ! ! BEGIN 44150 1471 40 ! ! ! ! buf.alarm_mess := abuf; 44160 1472 41 ! ! ! ! buf.last := buf.last + abuf.al.no_of_by+2; 44170 1473 42 ! ! ! END 44180 1474 43 ! ! ! ELSE 44190 1475 44 ! ! ! buf.alarm_mess.al.no_of_by := 0; 44200 1476 45 ! ! ! 44210 1477 46 ! ! END; 44220 1478 47 ! ! signal( ref, dte_sem^); 44230 1479 48 ! END 44240 1480 49 ! ELSE 44250 1481 50 ! BEGIN 44260 1482 51 ! ! count( stat( no_pax_bufs)); 44270 1483 52 ! ! IF tst>4 THEN 44280 1484 53 ! ! testout(z,"no sdata buf", 0); 44290 1485 54 ! END; 44300 1486 55 END; 44310 1487 \f tsnetlst 81.06.15. 18.39. page 53 45010 1488 PROCEDURE retransmit_data ( 45020 1489 stream : byte ); 45030 1490 (*-------------------------------------------------------------- 45040 1491 . retransmits the data at stream_states(stream).act_out 45050 1492 ----------------------------------------------------------------*) 45060 1493 BEGIN 45070 1494 1 ! IF tst>64 THEN 45080 1495 2 ! testout(z,"retransmit ", stream); 45090 1496 3 ! 45100 1497 4 ! WITH stream_states( stream) DO 45110 1498 5 ! BEGIN 45120 1499 6 ! ! IF NOT nil( act_out) THEN 45130 1500 7 ! ! BEGIN 45140 1501 8 ! ! ! retrans_count := retrans_count +1; 45150 1502 9 ! ! ! 45160 1503 10 ! ! ! IF retrans_count <= max_retrans THEN 45170 1504 11 ! ! ! BEGIN 45180 1505 12 ! ! ! ! retrans_timer := retrans_timo; 45190 1506 13 ! ! ! ! send_sdata_buf( act_out, stream, opc_command,0); 45200 1507 14 ! ! ! END 45210 1508 15 ! ! ! ELSE 45220 1509 16 ! ! ! BEGIN (* reject the packet *) 45230 1510 17 ! ! ! ! count( stat( lost_packets)); 45240 1511 18 ! ! ! ! release_uo_data( reject, stream); 45250 1512 19 ! ! ! END; 45260 1513 20 ! ! END; 45270 1514 21 ! END; 45280 1515 22 ! 45290 1516 23 END; 45300 1517 45310 1518 \f tsnetlst 81.06.15. 18.39. page 54 46010 1519 PROCEDURE release_uo_data ( 46020 1520 cause : release_cause; 46030 1521 stream : byte ); 46040 1522 (*--------------------------------------------------------------- 46050 1523 . releases the data at stream_states(stream).act_out 46060 1524 -----------------------------------------------------------------*) 46070 1525 BEGIN 46080 1526 1 ! IF tst>64 THEN 46090 1527 2 ! testout(z,"release-uo ", stream); 46100 1528 3 ! 46110 1529 4 ! WITH stream_states( stream) DO 46120 1530 5 ! v_s := (v_s+1) MOD 256; 46130 1531 6 ! (*---- release act-out ----*) 46140 1532 7 ! 46150 1533 8 ! IF NOT nil( stream_states(stream).act_out) THEN 46160 1534 9 ! BEGIN 46170 1535 10 ! ! IF cause = accept THEN 46180 1536 11 ! ! return( stream_states(stream).act_out) 46190 1537 12 ! ! ELSE 46200 1538 13 ! ! (*--- reject with no-connection --- *) 46210 1539 14 ! ! IF stream_states(stream).act_out^.u4 = #h12 THEN 46220 1540 15 ! ! return( stream_states(stream).act_out) 46230 1541 16 ! ! ELSE 46240 1542 17 ! ! BEGIN 46250 1543 18 ! ! ! LOCK stream_states(stream).act_out AS a:alarmlabel DO 46260 1544 19 ! ! ! local_macro := a.send.macro; 46270 1545 20 ! ! ! k := local_transmitter( nil_ref, local_macro); 46280 1546 21 ! ! ! 46290 1547 22 ! ! ! reject_message 46300 1548 23 ! ! ! (stream_states(stream).act_out, local_sems(k), netc_route1, 46310 1549 24 ! ! ! local_macro, 46320 1550 25 ! ! ! netc_mic_addr, no_connection); 46330 1551 26 ! ! ! 46340 1552 27 ! ! END; 46350 1553 28 ! ! \f tsnetlst 81.06.15. 18.39. page 55 47010 1554 29 ! ! (*---- take the next in queue ----*) 47020 1555 30 ! ! 47030 1556 31 ! ! sensesem( stream_states(stream).act_out, stream_states(stream).first_queue); 47040 1557 32 ! ! 47050 1558 33 ! ! IF nil( stream_states( stream).act_out) THEN 47060 1559 34 ! ! BEGIN 47070 1560 35 ! ! ! sensesem( stream_states( stream).act_out, stream_states( stream).second_queue); 47080 1561 36 ! ! ! IF NOT nil(stream_states(stream).act_out) THEN 47090 1562 37 ! ! ! update_stream_state(stream,dec_s_q,free); 47100 1563 38 ! ! END 47110 1564 39 ! ! ELSE 47120 1565 40 ! ! update_stream_state( stream, dec_f_q, free); 47130 1566 41 ! ! IF nil( stream_states(stream).act_out) THEN 47140 1567 42 ! ! BEGIN 47150 1568 43 ! ! ! stream_states(stream).retrans_timer := 0; 47160 1569 44 ! ! ! IF stream_states( stream).state = calling THEN 47170 1570 45 ! ! ! update_stream_state( stream, new_stat, free) 47180 1571 46 ! ! ! ELSE 47190 1572 47 ! ! ! IF cause = accept THEN 47200 1573 48 ! ! ! update_stream_state( stream, new_stat, waiting) 47210 1574 49 ! ! ! ELSE 47220 1575 50 ! ! ! update_stream_state( stream, new_stat, free) 47230 1576 51 ! ! END 47240 1577 52 ! ! ELSE 47250 1578 53 ! ! BEGIN 47260 1579 54 ! ! ! set_retrans( stream); 47270 1580 55 ! ! ! 47280 1581 56 ! ! ! WITH stream_states( stream) DO 47290 1582 57 ! ! ! BEGIN 47300 1583 58 ! ! ! ! 47310 1584 59 ! ! ! ! IF cause = accept THEN 47320 1585 60 ! ! ! ! send_sdata_buf( act_out, stream, opc_command, 0) 47330 1586 61 ! ! ! ! ELSE 47340 1587 62 ! ! ! ! BEGIN 47350 1588 63 ! ! ! ! ! make_a_call( stream); 47360 1589 64 ! ! ! ! ! update_stream_state( stream, new_stat, calling); 47370 1590 65 ! ! ! ! END; 47380 1591 66 ! ! ! END; 47390 1592 67 ! ! END; 47400 1593 68 ! END; 47410 1594 69 END; 47420 1595 \f tsnetlst 81.06.15. 18.39. page 56 48010 1596 PROCEDURE return_rdata_buf ( 48020 1597 VAR ref : reference ); 48030 1598 (*---------------------------------------------------------- 48040 1599 . sends a rdata-buffer to dte again 48050 1600 ------------------------------------------------------------*) 48060 1601 BEGIN 48070 1602 1 ! IF tst>64 THEN 48080 1603 2 ! testout(z,"return-rdata", ref^.u2); 48090 1604 3 ! 48100 1605 4 ! ref^.u2 := dte_default; 48110 1606 5 ! 48120 1607 6 ! LOCK ref AS rdata : dte_sdata_data DO 48130 1608 7 ! rdata.last := sdata_first_val + l_control + l_listen -1; 48140 1609 8 ! 48150 1610 9 ! signal( ref, dte_sem^); 48160 1611 10 ! 48170 1612 11 END; 48180 1613 \f tsnetlst 81.06.15. 18.39. page 57 49010 1614 PROCEDURE send_rdata_bufs ( 49020 1615 no_of_bufs, 49030 1616 stream : byte ); 49040 1617 (*------------------------------------------------------ 49050 1618 - sends rdata bufs to dte - 49060 1619 --------------------------------------------------------*) 49070 1620 VAR 49080 1621 i : integer; 49090 1622 ref : reference ; 49100 1623 49110 1624 BEGIN 49120 1625 1 ! IF tst>64 THEN 49130 1626 2 ! testout(z,"send-rdata-b", stream); 49140 1627 3 ! 49150 1628 4 ! FOR i := 1 TO no_of_bufs DO 49160 1629 5 ! BEGIN 49170 1630 6 ! ! sensesem( ref, pax_pool_sem.w^); 49180 1631 7 ! ! 49190 1632 8 ! ! IF NOT nil( ref) THEN 49200 1633 9 ! ! BEGIN 49210 1634 10 ! ! ! 49220 1635 11 ! ! ! ref^.u1 := dte_rdata; 49230 1636 12 ! ! ! ref^.u2 := dte_default; 49240 1637 13 ! ! ! ref^.u3 := stream; 49250 1638 14 ! ! ! ref^.u4 := to_link; 49260 1639 15 ! ! ! 49270 1640 16 ! ! ! LOCK ref AS rdata : dte_sdata_data DO 49280 1641 17 ! ! ! WITH rdata DO 49290 1642 18 ! ! ! BEGIN 49300 1643 19 ! ! ! ! first := sdata_first_val; 49310 1644 20 ! ! ! ! last := sdata_first_val +l_control+ l_listen -1; 49320 1645 21 ! ! ! END; 49330 1646 22 ! ! ! 49340 1647 23 ! ! ! signal( ref, dte_sem^); 49350 1648 24 ! ! END 49360 1649 25 ! ! ELSE 49370 1650 26 ! ! BEGIN 49380 1651 27 ! ! ! count( stat( no_pax_bufs)); 49390 1652 28 ! ! ! IF tst>4 THEN 49400 1653 29 ! ! ! testout(z,"no rdata buf",0); 49410 1654 30 ! ! END; 49420 1655 31 ! END 49430 1656 32 END (* send-rdata-bufs *); 49440 1657 \f tsnetlst 81.06.15. 18.39. page 58 50010 1658 FUNCTION ok_receive_state ( 50020 1659 VAR ref : reference 50030 1660 ) : boolean; 50040 1661 (*---------------------------------------------------------- 50050 1662 . tests the dte-rdata-buffer 50060 1663 . in ( control.op-code and control.data ) 50070 1664 . and checks the state of the stream 50080 1665 . value : 50090 1666 . true -- if data should be received by stream-receiver 50100 1667 . false - if it is an answer on a command 50110 1668 -------------------------------------------------------------*) 50120 1669 BEGIN 50130 1670 1 ! IF tst>64 THEN 50140 1671 2 ! testout(z,"ok-receiv-st", 0); 50150 1672 3 ! 50160 1673 4 ! ok_receive_state := false; 50170 1674 5 ! 50180 1675 6 ! LOCK ref AS rdata : dte_sdata_data DO 50190 1676 7 ! WITH stream_states( ref^.u3) DO 50200 1677 8 ! CASE state OF 50210 1678 9 ! ! 50220 1679 10 ! ! free : (*-- the rdata is nonsens --*) 50230 1680 11 ! ! BEGIN 50240 1681 12 ! ! ! count( stat( nons_packets)); 50250 1682 13 ! ! ! 50260 1683 14 ! ! ! (*-- send clear stream --*) 50270 1684 15 ! ! ! 50280 1685 16 ! ! ! (*--?????????--*) 50290 1686 17 ! ! ! 50300 1687 18 ! ! END; 50310 1688 19 ! ! \f tsnetlst 81.06.15. 18.39. page 59 51010 1689 20 ! ! calling : 51020 1690 21 ! ! (*----- dte-aic, dte-rejic and dte-clr is interesting ---*) 51030 1691 22 ! ! BEGIN 51040 1692 23 ! ! ! CASE rdata.control.op_code OF 51050 1693 24 ! ! ! ! 51060 1694 25 ! ! ! ! dte_aic : 51070 1695 26 ! ! ! ! (*----- the call has been accepted -----*) 51080 1696 27 ! ! ! ! BEGIN 51090 1697 28 ! ! ! ! ! 51100 1698 29 ! ! ! ! ! update_stream_state( ref^.u3, new_stat, sending); 51110 1699 30 ! ! ! ! ! 51120 1700 31 ! ! ! ! ! IF (rdata.control.n_r_inc = v_s_inc) 51130 1701 32 ! ! ! ! ! AND (rdata.control.n_r = v_s) THEN 51140 1702 33 ! ! ! ! ! IF rdata.control.data = data_received THEN 51150 1703 34 ! ! ! ! ! release_uo_data( accept, ref^.u3) 51160 1704 35 ! ! ! ! ! ELSE 51170 1705 36 ! ! ! ! ! IF rdata.control.data = data_not_received THEN 51180 1706 37 ! ! ! ! ! retransmit_data( ref^.u3); 51190 1707 38 ! ! ! ! ! 51200 1708 39 ! ! ! ! END; 51210 1709 40 ! ! ! ! 51220 1710 41 ! ! ! ! dte_rejic : 51230 1711 42 ! ! ! ! (*------- the call was rejected ---*) 51240 1712 43 ! ! ! ! BEGIN 51250 1713 44 ! ! ! ! ! 51260 1714 45 ! ! ! ! ! IF rdata.control.data = data_received THEN 51270 1715 46 ! ! ! ! ! BEGIN 51280 1716 47 ! ! ! ! ! ! release_uo_data( accept, ref^.u3); 51290 1717 48 ! ! ! ! ! ! 51300 1718 49 ! ! ! ! ! ! (* clear stream *) 51310 1719 50 ! ! ! ! ! ! (*-----?????????????------*) 51320 1720 51 ! ! ! ! ! END 51330 1721 52 ! ! ! ! ! ELSE 51340 1722 53 ! ! ! ! ! IF rdata.control.data = data_not_received THEN 51350 1723 54 ! ! ! ! ! BEGIN 51360 1724 55 ! ! ! ! ! ! act_pax_addr := stream_states( ref^.u3).pax_addr; 51370 1725 56 ! ! ! ! ! ! make_a_call( ref^.u3); 51380 1726 57 ! ! ! ! ! END; 51390 1727 58 ! ! ! ! END; 51400 1728 59 ! ! ! ! \f tsnetlst 81.06.15. 18.39. page 60 52010 1729 60 ! ! ! ! opc_receipt : 52020 1730 61 ! ! ! ! (*--------- data receipt from remote netcon -------*) 52030 1731 62 ! ! ! ! 52040 1732 63 ! ! ! ! IF (rdata.control.n_r_inc = v_s_inc) 52050 1733 64 ! ! ! ! AND (rdata.control.n_r = v_s) THEN 52060 1734 65 ! ! ! ! IF rdata.control.data = data_received THEN 52070 1735 66 ! ! ! ! release_uo_data( accept, ref^.u3) 52080 1736 67 ! ! ! ! ELSE 52090 1737 68 ! ! ! ! IF rdata.control.data = data_not_received THEN 52100 1738 69 ! ! ! ! retransmit_data( ref^.u3); 52110 1739 70 ! ! ! ! 52120 1740 71 ! ! ! ! dte_clr : 52130 1741 72 ! ! ! ! (*----- clear from remote netcon ---*) 52140 1742 73 ! ! ! ! 52150 1743 74 ! ! ! ! (*--- clear stream ---*) 52160 1744 75 ! ! ! ! (*---??????????????---*) 52170 1745 76 ! ! ! ! BEGIN 52180 1746 77 ! ! ! ! END; 52190 1747 78 ! ! ! ! 52200 1748 79 ! ! ! ! OTHERWISE 52210 1749 80 ! ! ! ! (*------ nonsens ---*) 52220 1750 81 ! ! ! ! BEGIN 52230 1751 82 ! ! ! ! ! count( stat( nons_packets)); 52240 1752 83 ! ! ! ! END; 52250 1753 84 ! ! ! ! 52260 1754 85 ! ! ! END (*case *) 52270 1755 86 ! ! ! 52280 1756 87 ! ! END (*calling *); 52290 1757 88 ! ! \f tsnetlst 81.06.15. 18.39. page 61 53010 1758 89 ! ! sending : 53020 1759 90 ! ! (*----- opc-receipt and opc-command are interesting ----*) 53030 1760 91 ! ! BEGIN 53040 1761 92 ! ! ! CASE rdata.control.op_code OF 53050 1762 93 ! ! ! ! 53060 1763 94 ! ! ! ! opc_receipt : 53070 1764 95 ! ! ! ! (*--------- receipt for send uo-data ----- *) 53080 1765 96 ! ! ! ! BEGIN 53090 1766 97 ! ! ! ! ! IF (rdata.control.n_r_inc = v_s_inc) 53100 1767 98 ! ! ! ! ! AND (rdata.control.n_r = v_s) THEN 53110 1768 99 ! ! ! ! ! IF rdata.control.data = data_received THEN 53120 1769 100 ! ! ! ! ! release_uo_data( accept, ref^.u3) 53130 1770 101 ! ! ! ! ! ELSE 53140 1771 102 ! ! ! ! ! IF rdata.control.data = data_not_received THEN 53150 1772 103 ! ! ! ! ! retransmit_data( ref^.u3); 53160 1773 104 ! ! ! ! END; 53170 1774 105 ! ! ! ! 53180 1775 106 ! ! ! ! opc_command : 53190 1776 107 ! ! ! ! (*--------- data-received on active stream ------- *) 53200 1777 108 ! ! ! ! BEGIN 53210 1778 109 ! ! ! ! ! ok_receive_state := true; 53220 1779 110 ! ! ! ! ! count( stat( reci_packets)); 53230 1780 111 ! ! ! ! END; 53240 1781 112 ! ! ! ! 53250 1782 113 ! ! ! ! dte_reset : 53260 1783 114 ! ! ! ! (*------- reset counters and retransmit data ------*) 53270 1784 115 ! ! ! ! BEGIN 53280 1785 116 ! ! ! ! END; 53290 1786 117 ! ! ! ! 53300 1787 118 ! ! ! ! dte_clr : 53310 1788 119 ! ! ! ! (*----- send clear ok and make a new call -----*) 53320 1789 120 ! ! ! ! BEGIN 53330 1790 121 ! ! ! ! END; 53340 1791 122 ! ! ! ! OTHERWISE 53350 1792 123 ! ! ! ! count( stat( nons_packets)); 53360 1793 124 ! ! ! ! 53370 1794 125 ! ! ! END (* case *); 53380 1795 126 ! ! ! 53390 1796 127 ! ! END; (* sending *) 53400 1797 128 ! ! \f tsnetlst 81.06.15. 18.39. page 62 54010 1798 129 ! ! receiving, 54020 1799 130 ! ! waiting : 54030 1800 131 ! ! (*------- opc-command, dte-clr and dte-reset are interesting --*) 54040 1801 132 ! ! BEGIN 54050 1802 133 ! ! ! CASE rdata.control.op_code OF 54060 1803 134 ! ! ! ! 54070 1804 135 ! ! ! ! opc_command : 54080 1805 136 ! ! ! ! (*--------- data received on active stream -----*) 54090 1806 137 ! ! ! ! BEGIN 54100 1807 138 ! ! ! ! ! ok_receive_state := true; 54110 1808 139 ! ! ! ! ! count( stat( reci_packets)); 54120 1809 140 ! ! ! ! ! update_stream_state( ref^.u3, new_stat, receiving); 54130 1810 141 ! ! ! ! END; 54140 1811 142 ! ! ! ! 54150 1812 143 ! ! ! ! dte_reset : 54160 1813 144 ! ! ! ! (*------- reset counters -----*) 54170 1814 145 ! ! ! ! BEGIN 54180 1815 146 ! ! ! ! END; 54190 1816 147 ! ! ! ! 54200 1817 148 ! ! ! ! dte_clr : 54210 1818 149 ! ! ! ! (*----- send clear ok ------*) 54220 1819 150 ! ! ! ! BEGIN 54230 1820 151 ! ! ! ! END; 54240 1821 152 ! ! ! ! 54250 1822 153 ! ! ! ! OTHERWISE 54260 1823 154 ! ! ! ! count( stat( nons_packets)); 54270 1824 155 ! ! ! END(* case *) 54280 1825 156 ! ! ! 54290 1826 157 ! ! END (* waiting *); 54300 1827 158 ! ! 54310 1828 159 ! ! clearing : 54320 1829 160 ! ! (*------ implemented later ------*) 54330 1830 161 ! ! BEGIN 54340 1831 162 ! ! END; 54350 1832 163 ! ! 54360 1833 164 ! ! resetting : 54370 1834 165 ! ! (*------ implemented later --------*) 54380 1835 166 ! ! BEGIN 54390 1836 167 ! ! END; 54400 1837 168 ! ! OTHERWISE; 54410 1838 169 ! ! 54420 1839 170 ! END; (* case *) 54430 1840 171 ! 54440 1841 172 END; (* procedure *) 54450 1842 \f tsnetlst 81.06.15. 18.39. page 63 55010 1843 PROCEDURE dte_result_handler ( 55020 1844 VAR 55030 1845 ref : reference 55040 1846 ); 55050 1847 (*---------------------------------------------------------- 55060 1848 . - handles all not ok results given from dte . 55070 1849 ------------------------------------------------------------*) 55080 1850 BEGIN 55090 1851 1 ! IF tst>16 THEN 55100 1852 2 ! testout(z,"dte-res-nok ", ref^.u2); 55110 1853 3 ! 55120 1854 4 ! CASE ref^.u1 OF 55130 1855 5 ! ! 55140 1856 6 ! ! dte_rdata : 55150 1857 7 ! ! BEGIN 55160 1858 8 ! ! ! IF tst>16 THEN 55170 1859 9 ! ! ! testout(z,"dte-rdata-no",ref^.u2); 55180 1860 10 ! ! ! 55190 1861 11 ! ! ! CASE in_ref^.u2 OF 55200 1862 12 ! ! ! ! 55210 1863 13 ! ! ! ! dte_remo_clear : (* rejic or clear *) 55220 1864 14 ! ! ! ! 55230 1865 15 ! ! ! ! IF ok_receive_state( ref) THEN 55240 1866 16 ! ! ! ! BEGIN 55250 1867 17 ! ! ! ! ! signal( ref, pax_pool_sem.s^); 55260 1868 18 ! ! ! ! END; 55270 1869 19 ! ! ! ! 55280 1870 20 ! ! ! ! OTHERWISE 55290 1871 21 ! ! ! ! BEGIN 55300 1872 22 ! ! ! ! ! return_rdata_buf( ref); 55310 1873 23 ! ! ! ! END 55320 1874 24 ! ! ! END (* case *); 55330 1875 25 ! ! ! 55340 1876 26 ! ! END; 55350 1877 27 ! ! 55360 1878 28 ! ! dte_aic, dte_rejic : 55370 1879 29 ! ! BEGIN 55380 1880 30 ! ! ! IF tst>16 THEN 55390 1881 31 ! ! ! testout(z,"in dte-ric ",0); 55400 1882 32 ! ! ! signal( ref, pax_pool_sem.s^); 55410 1883 33 ! ! ! 55420 1884 34 ! ! END; 55430 1885 35 ! ! 55440 1886 36 ! ! dte_clr : 55450 1887 37 ! ! BEGIN 55460 1888 38 ! ! ! IF tst>16 THEN \f tsnetlst 81.06.15. 18.39. page 64 55470 1889 39 ! ! ! testout(z,"in dte-clr ",0); 55480 1890 40 ! ! ! signal( ref, pax_pool_sem.s^); 55490 1891 41 ! ! ! 55500 1892 42 ! ! END; 55510 1893 43 ! ! \f tsnetlst 81.06.15. 18.39. page 65 56010 1894 44 ! ! dte_res : 56020 1895 45 ! ! BEGIN 56030 1896 46 ! ! ! IF tst>16 THEN 56040 1897 47 ! ! ! testout(z,"in dte-res ",0); 56050 1898 48 ! ! ! signal( ref, pax_pool_sem.s^); 56060 1899 49 ! ! ! 56070 1900 50 ! ! END; 56080 1901 51 ! ! 56090 1902 52 ! ! dte_stat : 56100 1903 53 ! ! BEGIN 56110 1904 54 ! ! ! IF tst>16 THEN 56120 1905 55 ! ! ! testout(z,"in dte-stat ",0); 56130 1906 56 ! ! ! signal( ref, pax_pool_sem.s^); 56140 1907 57 ! ! ! 56150 1908 58 ! ! END; 56160 1909 59 ! ! 56170 1910 60 ! ! dte_ric : 56180 1911 61 ! ! BEGIN 56190 1912 62 ! ! ! IF tst>16 THEN 56200 1913 63 ! ! ! testout(z,"in dte-ric ",0); 56210 1914 64 ! ! ! signal( ref, pax_pool_sem.s^); 56220 1915 65 ! ! ! 56230 1916 66 ! ! END 56240 1917 67 ! ! 56250 1918 68 ! ! OTHERWISE 56260 1919 69 ! ! BEGIN 56270 1920 70 ! ! ! IF tst>16 THEN 56280 1921 71 ! ! ! testout(z,"in unkn fct ",0); 56290 1922 72 ! ! ! signal( ref, pax_pool_sem.s^); 56300 1923 73 ! ! ! 56310 1924 74 ! ! END; 56320 1925 75 ! ! 56330 1926 76 ! ! ref^.u2 := dte_default; 56340 1927 77 ! ! signal( ref, dte_sem^); 56350 1928 78 ! ! 56360 1929 79 ! END; 56370 1930 80 END; 56380 1931 56390 1932 \f tsnetlst 81.06.15. 18.39. page 66 57010 1933 PROCEDURE ts_wait ( 57020 1934 VAR 57030 1935 mes_ref : reference; 57040 1936 VAR 57050 1937 sem_ptr : sempointer 57060 1938 ); 57070 1939 57080 1940 (*---------------------------------------------------------------- 57090 1941 . wait with return of dummy messages . 57100 1942 ----------------------------------------------------------------*) 57110 1943 57120 1944 BEGIN 57130 1945 1 ! 57140 1946 2 ! wait( mes_ref, sem_ptr^); 57150 1947 3 ! 57160 1948 4 ! WHILE (mes_ref^.u3 = dummy_route) 57170 1949 5 ! AND NOT ownertest( timer_pool, mes_ref) DO 57180 1950 6 ! BEGIN 57190 1951 7 ! ! IF tst>4 THEN 57200 1952 8 ! ! testout(z,"dummybuf ret",0); 57210 1953 9 ! ! 57220 1954 10 ! ! signal(mes_ref, pax_pool_sem.s^); 57230 1955 11 ! ! wait( mes_ref, sem_ptr^); 57240 1956 12 ! END; 57250 1957 13 ! 57260 1958 14 END (* ts_wait *); 57270 1959 57280 1960 57290 1961 \f tsnetlst 81.06.15. 18.39. page 67 58010 1962 (*--------------------------------------------------------------- 58020 1963 . main program . 58030 1964 -----------------------------------------------------------------*) 58040 1965 58050 1966 BEGIN 58060 1967 1 ! 58070 1968 2 ! testopen( z, own.incname, op_sem); 58080 1969 3 ! testout( z, version , al_env_version); 58090 1970 4 ! 58100 1971 5 ! write_create_pars; 58110 1972 6 ! 58120 1973 7 ! (*--- initialize internal tables ---*) 58130 1974 8 ! 58140 1975 9 ! local_mac_top := 2; 58150 1976 10 ! pax_table_top := dc_index + 1; 58160 1977 11 ! 58170 1978 12 ! init_stream_states; 58180 1979 13 ! init_pax_table; 58190 1980 14 ! 58200 1981 15 ! 58210 1982 16 ! 58220 1983 17 ! (*--- listen at dte ---*) 58230 1984 18 ! 58240 1985 19 ! make_ric_bufs( all_ric_bufs); 58250 1986 20 ! 58260 1987 21 ! 58270 1988 22 ! alloc( ref, timer_pool, main_sem.s^); 58280 1989 23 ! send_to_systimer( ref); 58290 1990 24 ! 58300 1991 25 ! 58310 1992 26 ! \f tsnetlst 81.06.15. 18.39. page 68 59010 1993 27 ! (*------------------------------------------------------------ 59020 1994 28 ! . main loop . 59030 1995 29 ! --------------------------------------------------------------*) 59040 1996 30 ! 59050 1997 31 ! REPEAT (* until forever *) 59060 1998 32 ! ! 59070 1999 33 ! ! ts_wait( in_ref, main_sem.w); 59080 2000 34 ! ! 59090 2001 35 ! ! IF ownertest ( timer_pool, in_ref) THEN 59100 2002 36 ! ! BEGIN 59110 2003 37 ! ! ! (*------------------------------------------------------- 59120 2004 38 ! ! ! . buffer from TIMER 59130 2005 39 ! ! ! ---------------------------------------------------------*) 59140 2006 40 ! ! ! 59150 2007 41 ! ! ! send_to_systimer( in_ref); 59160 2008 42 ! ! ! 59170 2009 43 ! ! ! FOR i := min_stream_no-1 TO max_stream_no DO 59180 2010 44 ! ! ! WITH stream_states(i) DO 59190 2011 45 ! ! ! BEGIN 59200 2012 46 ! ! ! ! (*--- check timeout for all buffers in first-queue ----*) 59210 2013 47 ! ! ! ! j:= 1; 59220 2014 48 ! ! ! ! 59230 2015 49 ! ! ! ! WHILE j <= l_f_q DO 59240 2016 50 ! ! ! ! IF timers(j) > 0 THEN 59250 2017 51 ! ! ! ! BEGIN 59260 2018 52 ! ! ! ! ! timers(j) := timers(j) -1; 59270 2019 53 ! ! ! ! ! 59280 2020 54 ! ! ! ! ! IF timers(j) = 0 THEN 59290 2021 55 ! ! ! ! ! BEGIN 59300 2022 56 ! ! ! ! ! ! 59310 2023 57 ! ! ! ! ! ! IF tst>4 THEN 59320 2024 58 ! ! ! ! ! ! testout(z,"timeout on ", i*100+j); 59330 2025 59 ! ! ! ! ! ! 59340 2026 60 ! ! ! ! ! ! 59350 2027 61 ! ! ! ! ! ! (* reject uo data *) 59360 2028 62 ! ! ! ! ! ! sensesem( t_ref, first_queue); 59370 2029 63 ! ! ! ! ! ! 59380 2030 64 ! ! ! ! ! ! IF NOT nil( t_ref) THEN 59390 2031 65 ! ! ! ! ! ! BEGIN 59400 2032 66 ! ! ! ! ! ! ! LOCK t_ref AS a:alarmlabel DO 59410 2033 67 ! ! ! ! ! ! ! local_macro := a.send.macro; 59420 2034 68 ! ! ! ! ! ! ! 59430 2035 69 ! ! ! ! ! ! ! k := local_transmitter( nil_ref, local_macro); 59440 2036 70 ! ! ! ! ! ! ! 59450 2037 71 ! ! ! ! ! ! ! reject_message 59460 2038 72 ! ! ! ! ! ! ! ( t_ref, local_sems(k), netc_route1, local_macro, \f tsnetlst 81.06.15. 18.39. page 69 59470 2039 73 ! ! ! ! ! ! ! netc_mic_addr, not_ready); 59480 2040 74 ! ! ! ! ! ! END; 59490 2041 75 ! ! ! ! ! ! 59500 2042 76 ! ! ! ! ! ! update_stream_state(i,dec_f_q, free); 59510 2043 77 ! ! ! ! ! END 59520 2044 78 ! ! ! ! ! ELSE 59530 2045 79 ! ! ! ! ! j:=j+1 59540 2046 80 ! ! ! ! END 59550 2047 81 ! ! ! ! ELSE 59560 2048 82 ! ! ! ! BEGIN 59570 2049 83 ! ! ! ! ! IF tst>4 THEN 59580 2050 84 ! ! ! ! ! testout(z,"wrong timer ", j); 59590 2051 85 ! ! ! ! ! timers(j) := 60; 59600 2052 86 ! ! ! ! ! j:= l_f_q +1; 59610 2053 87 ! ! ! ! END; 59620 2054 88 ! ! ! ! 59630 2055 89 ! ! ! ! IF NOT nil( act_out) THEN 59640 2056 90 ! ! ! ! IF retrans_timer >= 0 THEN 59650 2057 91 ! ! ! ! BEGIN 59660 2058 92 ! ! ! ! ! 59670 2059 93 ! ! ! ! ! IF retrans_timer = 0 THEN 59680 2060 94 ! ! ! ! ! BEGIN 59690 2061 95 ! ! ! ! ! ! (*--- the action is dependent on the stream state --*) 59700 2062 96 ! ! ! ! ! ! 59710 2063 97 ! ! ! ! ! ! CASE state OF 59720 2064 98 ! ! ! ! ! ! ! free : (* do nothing *) 59730 2065 99 ! ! ! ! ! ! ! BEGIN 59740 2066 100 ! ! ! ! ! ! ! ! release_uo_data( reject, i); 59750 2067 101 ! ! ! ! ! ! ! END; 59760 2068 102 ! ! ! ! ! ! ! 59770 2069 103 ! ! ! ! ! ! ! calling : (* make a new call *) 59780 2070 104 ! ! ! ! ! ! ! BEGIN 59790 2071 105 ! ! ! ! ! ! ! ! retrans_count := retrans_count +1; 59800 2072 106 ! ! ! ! ! ! ! ! 59810 2073 107 ! ! ! ! ! ! ! ! IF retrans_count <= max_retrans THEN 59820 2074 108 ! ! ! ! ! ! ! ! BEGIN 59830 2075 109 ! ! ! ! ! ! ! ! ! retrans_timer := retrans_timo; 59840 2076 110 ! ! ! ! ! ! ! ! ! act_pax_addr := pax_addr; 59850 2077 111 ! ! ! ! ! ! ! ! ! make_a_call(i); 59860 2078 112 ! ! ! ! ! ! ! ! END 59870 2079 113 ! ! ! ! ! ! ! ! ELSE 59880 2080 114 ! ! ! ! ! ! ! ! BEGIN (* reject the packet *) 59890 2081 115 ! ! ! ! ! ! ! ! ! count( stat( lost_packets)); 59900 2082 116 ! ! ! ! ! ! ! ! ! release_uo_data( reject, i); 59910 2083 117 ! ! ! ! ! ! ! ! END; 59920 2084 118 ! ! ! ! ! ! ! END; \f tsnetlst 81.06.15. 18.39. page 70 59930 2085 119 ! ! ! ! ! ! ! \f tsnetlst 81.06.15. 18.39. page 71 60010 2086 120 ! ! ! ! ! ! ! sending : (* send again *) 60020 2087 121 ! ! ! ! ! ! ! retransmit_data(i); 60030 2088 122 ! ! ! ! ! ! ! 60040 2089 123 ! ! ! ! ! ! ! waiting, 60050 2090 124 ! ! ! ! ! ! ! clearing : (*- clear stream -*) 60060 2091 125 ! ! ! ! ! ! ! BEGIN 60070 2092 126 ! ! ! ! ! ! ! ! (*--- ??????? --*) 60080 2093 127 ! ! ! ! ! ! ! ! testout(z,"* state err1", 1); 60090 2094 128 ! ! ! ! ! ! ! END; 60100 2095 129 ! ! ! ! ! ! ! 60110 2096 130 ! ! ! ! ! ! ! resetting : (*-- reset stream ---*) 60120 2097 131 ! ! ! ! ! ! ! BEGIN 60130 2098 132 ! ! ! ! ! ! ! ! (*--- ??????? --*) 60140 2099 133 ! ! ! ! ! ! ! END; 60150 2100 134 ! ! ! ! ! ! ! 60160 2101 135 ! ! ! ! ! ! ! receiving : (* do nothing *) 60170 2102 136 ! ! ! ! ! ! ! BEGIN 60180 2103 137 ! ! ! ! ! ! ! ! testout(z,"* state err2", 2); 60190 2104 138 ! ! ! ! ! ! ! END 60200 2105 139 ! ! ! ! ! ! ! OTHERWISE; 60210 2106 140 ! ! ! ! ! ! END ; (* case *) 60220 2107 141 ! ! ! ! ! END 60230 2108 142 ! ! ! ! ! ELSE 60240 2109 143 ! ! ! ! ! retrans_timer := retrans_timer -1; 60250 2110 144 ! ! ! ! END; 60260 2111 145 ! ! ! END 60270 2112 146 ! ! END 60280 2113 147 ! ! \f tsnetlst 81.06.15. 18.39. page 72 61010 2114 148 ! ! ELSE 61020 2115 149 ! ! 61030 2116 150 ! ! IF in_ref^.u4 = to_link THEN 61040 2117 151 ! ! BEGIN (* a buffer from dte *) 61050 2118 152 ! ! ! (*----------------------------------- 61060 2119 153 ! ! ! . buffer from DTE 61070 2120 154 ! ! ! -------------------------------------*) 61080 2121 155 ! ! ! 61090 2122 156 ! ! ! IF in_ref^.u2 = dte_ok_result THEN 61100 2123 157 ! ! ! BEGIN (* all went well at dte *) 61110 2124 158 ! ! ! ! CASE in_ref^.u1 OF 61120 2125 159 ! ! ! ! ! 61130 2126 160 ! ! ! ! ! dte_car : (* ok-answer on call request *) 61140 2127 161 ! ! ! ! ! BEGIN 61150 2128 162 ! ! ! ! ! ! IF tst>16 THEN 61160 2129 163 ! ! ! ! ! ! testout(z,"dte-car-ok ",0); 61170 2130 164 ! ! ! ! ! ! signal( in_ref, pax_pool_sem.s^); 61180 2131 165 ! ! ! ! ! END; 61190 2132 166 ! ! ! ! ! 61200 2133 167 ! ! ! ! ! dte_aic, dte_rejic : (* ok-answer on receipt on call *) 61210 2134 168 ! ! ! ! ! BEGIN 61220 2135 169 ! ! ! ! ! ! IF tst>16 THEN 61230 2136 170 ! ! ! ! ! ! testout(z,"dte-rec-ok ",0); 61240 2137 171 ! ! ! ! ! ! signal( in_ref, pax_pool_sem.s^); 61250 2138 172 ! ! ! ! ! END; 61260 2139 173 ! ! ! ! ! 61270 2140 174 ! ! ! ! ! dte_clr : (* ok-answer on clear request *) 61280 2141 175 ! ! ! ! ! BEGIN 61290 2142 176 ! ! ! ! ! ! IF tst>16 THEN 61300 2143 177 ! ! ! ! ! ! testout(z,"dte-clr-ok ", 0); 61310 2144 178 ! ! ! ! ! ! signal( in_ref, pax_pool_sem.s^); 61320 2145 179 ! ! ! ! ! END; 61330 2146 180 ! ! ! ! ! \f tsnetlst 81.06.15. 18.39. page 73 62010 2147 181 ! ! ! ! ! dte_res : (* ok-answer on reset request *) 62020 2148 182 ! ! ! ! ! BEGIN 62030 2149 183 ! ! ! ! ! ! IF tst>16 THEN 62040 2150 184 ! ! ! ! ! ! testout(z,"dte-reset-ok",0); 62050 2151 185 ! ! ! ! ! ! signal( in_ref, pax_pool_sem.s^); 62060 2152 186 ! ! ! ! ! END; 62070 2153 187 ! ! ! ! ! 62080 2154 188 ! ! ! ! ! dte_stat : (* ok-answer on stream status *) 62090 2155 189 ! ! ! ! ! BEGIN 62100 2156 190 ! ! ! ! ! ! IF tst>16 THEN 62110 2157 191 ! ! ! ! ! ! testout(z,"dte-stat-ok ",0); 62120 2158 192 ! ! ! ! ! ! signal( in_ref, pax_pool_sem.s^); 62130 2159 193 ! ! ! ! ! END; 62140 2160 194 ! ! ! ! ! 62150 2161 195 ! ! ! ! ! \f tsnetlst 81.06.15. 18.39. page 74 63010 2162 196 ! ! ! ! ! dte_sdata : (* ok-answer on send data *) 63020 2163 197 ! ! ! ! ! BEGIN 63030 2164 198 ! ! ! ! ! ! IF tst>16 THEN 63040 2165 199 ! ! ! ! ! ! testout(z,"dte-sdata-ok",0); 63050 2166 200 ! ! ! ! ! ! signal( in_ref, pax_pool_sem.s^); 63060 2167 201 ! ! ! ! ! ! 63070 2168 202 ! ! ! ! ! END; 63080 2169 203 ! ! ! ! ! 63090 2170 204 ! ! ! ! ! dte_rdata : (* ok-answer on receive data *) 63100 2171 205 ! ! ! ! ! BEGIN 63110 2172 206 ! ! ! ! ! ! IF tst>16 THEN 63120 2173 207 ! ! ! ! ! ! testout(z,"dte-rdata-ok",0); 63130 2174 208 ! ! ! ! ! ! 63140 2175 209 ! ! ! ! ! ! IF ok_receive_state( in_ref) THEN 63150 2176 210 ! ! ! ! ! ! i := stream_receiver( dte_rdata, in_ref); 63160 2177 211 ! ! ! ! ! ! 63170 2178 212 ! ! ! ! ! ! return_rdata_buf( in_ref); 63180 2179 213 ! ! ! ! ! ! 63190 2180 214 ! ! ! ! ! END; 63200 2181 215 ! ! ! ! ! 63210 2182 216 ! ! ! ! ! dte_ric : (* ok-answer on receive call *) 63220 2183 217 ! ! ! ! ! BEGIN 63230 2184 218 ! ! ! ! ! ! IF tst>16 THEN 63240 2185 219 ! ! ! ! ! ! testout(z,"dte-ric-ok ", 0); 63250 2186 220 ! ! ! ! ! ! 63260 2187 221 ! ! ! ! ! ! i := stream_receiver( dte_ric, in_ref); 63270 2188 222 ! ! ! ! ! ! 63280 2189 223 ! ! ! ! ! ! in_ref^.u2 := dte_default; 63290 2190 224 ! ! ! ! ! ! 63300 2191 225 ! ! ! ! ! ! signal( in_ref, dte_sem^); 63310 2192 226 ! ! ! ! ! END 63320 2193 227 ! ! ! ! ! 63330 2194 228 ! ! ! ! ! OTHERWISE 63340 2195 229 ! ! ! ! ! BEGIN 63350 2196 230 ! ! ! ! ! ! signal( in_ref, pax_pool_sem.s^); 63360 2197 231 ! ! ! ! ! END 63370 2198 232 ! ! ! ! END (* case *); 63380 2199 233 ! ! ! END 63390 2200 234 ! ! ! ELSE 63400 2201 235 ! ! ! BEGIN 63410 2202 236 ! ! ! ! dte_result_handler( in_ref); 63420 2203 237 ! ! ! ! 63430 2204 238 ! ! ! ! IF NOT nil( in_ref) THEN 63440 2205 239 ! ! ! ! BEGIN 63450 2206 240 ! ! ! ! ! IF tst>16 THEN 63460 2207 241 ! ! ! ! ! testout(z,"resulthandle",0); \f tsnetlst 81.06.15. 18.39. page 75 63470 2208 242 ! ! ! ! ! signal( in_ref, pax_pool_sem.s^); 63480 2209 243 ! ! ! ! END 63490 2210 244 ! ! ! END 63500 2211 245 ! ! END 63510 2212 246 ! ! \f tsnetlst 81.06.15. 18.39. page 76 64010 2213 247 ! ! ELSE 64020 2214 248 ! ! IF in_ref^.u4 = dyn_test THEN 64030 2215 249 ! ! BEGIN 64040 2216 250 ! ! ! (*---------------------------------------------------- 64050 2217 251 ! ! ! . buffer to set testmode 64060 2218 252 ! ! ! ------------------------------------------------------*) 64070 2219 253 ! ! ! 64080 2220 254 ! ! ! tst := in_ref^.u3; 64090 2221 255 ! ! ! 64100 2222 256 ! ! ! CASE in_ref^.u2 OF 64110 2223 257 ! ! ! ! 1: LOCK in_ref AS buf : stat_type DO 64120 2224 258 ! ! ! ! buf := stat; 64130 2225 259 ! ! ! ! 2: LOCK in_ref AS buf : paxnet_e DO 64140 2226 260 ! ! ! ! buf := pax_table(in_ref^.u1); 64150 2227 261 ! ! ! ! 64160 2228 262 ! ! ! ! 3: LOCK in_ref AS buf : RECORD 64170 2229 263 ! ! ! ! ! lfq,lsq : integer; 64180 2230 264 ! ! ! ! ! p_addr : ext_pax_addr; 64190 2231 265 ! ! ! ! ! r_t,r_to,r_c,m_r,v_s_i,vs,v_r_i,vr : byte; 64200 2232 266 ! ! ! ! ! t_1 : integer 64210 2233 267 ! ! ! ! END DO 64220 2234 268 ! ! ! ! WITH buf DO 64230 2235 269 ! ! ! ! WITH stream_states( in_ref^.u1) DO 64240 2236 270 ! ! ! ! BEGIN 64250 2237 271 ! ! ! ! ! lfq:=l_f_q; 64260 2238 272 ! ! ! ! ! lsq:=l_s_q; 64270 2239 273 ! ! ! ! ! p_addr:=pax_addr; 64280 2240 274 ! ! ! ! ! r_t:=retrans_timer; 64290 2241 275 ! ! ! ! ! r_to := retrans_timo; 64300 2242 276 ! ! ! ! ! r_c := retrans_count; 64310 2243 277 ! ! ! ! ! m_r := max_retrans; 64320 2244 278 ! ! ! ! ! v_s_i := v_s_inc; 64330 2245 279 ! ! ! ! ! vs:= v_s; 64340 2246 280 ! ! ! ! ! v_r_i := v_r_inc; 64350 2247 281 ! ! ! ! ! vr := v_r; 64360 2248 282 ! ! ! ! ! t_1 := timers(1); 64370 2249 283 ! ! ! ! END; 64380 2250 284 ! ! ! ! OTHERWISE; 64390 2251 285 ! ! ! END (* case *); 64400 2252 286 ! ! ! 64410 2253 287 ! ! ! return( in_ref); 64420 2254 288 ! ! END 64430 2255 289 ! ! \f tsnetlst 81.06.15. 18.39. page 77 65010 2256 290 ! ! ELSE 65020 2257 291 ! ! (*------------------------------------- 65030 2258 292 ! ! . buffer from SUPERVISOR 65040 2259 293 ! ! ---------------------------------------*) 65050 2260 294 ! ! 65060 2261 295 ! ! IF (in_ref^.u3 >= netc_route) 65070 2262 296 ! ! AND (in_ref^.u3 <= netc_route2 ) THEN 65080 2263 297 ! ! BEGIN (* message to paxnet *) 65090 2264 298 ! ! ! 65100 2265 299 ! ! ! IF tst>16 THEN 65110 2266 300 ! ! ! testout(z,"sup-buffer ", (in_ref^.u4 DIV 16)*100+in_ref^.u4 MOD 16); 65120 2267 301 ! ! ! 65130 2268 302 ! ! ! LOCK in_ref AS buf : alarmlabel DO 65140 2269 303 ! ! ! alarm_macro := buf.rec.macro; 65150 2270 304 ! ! ! 65160 2271 305 ! ! ! 65170 2272 306 ! ! ! IF in_ref^.u3 = netc_route1 THEN 65180 2273 307 ! ! ! handle_10_12_mess( in_ref) 65190 2274 308 ! ! ! \f tsnetlst 81.06.15. 18.39. page 78 66010 2275 309 ! ! ! ELSE 66020 2276 310 ! ! ! BEGIN 66030 2277 311 ! ! ! ! (*-- a message to the net --*) 66040 2278 312 ! ! ! ! 66050 2279 313 ! ! ! ! act_pax_index := local_receiver( in_ref, alarm_macro); 66060 2280 314 ! ! ! ! 66070 2281 315 ! ! ! ! IF NOT nil( in_ref) THEN 66080 2282 316 ! ! ! ! 66090 2283 317 ! ! ! ! IF act_pax_index < pax_table_top THEN (* the alarmmacro is in pax-table *) 66100 2284 318 ! ! ! ! BEGIN 66110 2285 319 ! ! ! ! ! 66120 2286 320 ! ! ! ! ! IF tst>16 THEN 66130 2287 321 ! ! ! ! ! testout(z,"macro in tab", act_pax_index); 66140 2288 322 ! ! ! ! ! 66150 2289 323 ! ! ! ! ! act_pax_addr := pax_table( act_pax_index).pax_addr; 66160 2290 324 ! ! ! ! ! 66170 2291 325 ! ! ! ! ! IF NOT connec_to_addr( act_stream_index) THEN 66180 2292 326 ! ! ! ! ! BEGIN (* no stream active to this address *) 66190 2293 327 ! ! ! ! ! ! (* and no waiting on this address *) 66200 2294 328 ! ! ! ! ! ! 66210 2295 329 ! ! ! ! ! ! act_stream_index := free_stream; 66220 2296 330 ! ! ! ! ! ! 66230 2297 331 ! ! ! ! ! ! IF act_stream_index < min_stream_no THEN 66240 2298 332 ! ! ! ! ! ! BEGIN (* no streams are ready for use *) 66250 2299 333 ! ! ! ! ! ! ! IF tst>16 THEN 66260 2300 334 ! ! ! ! ! ! ! testout( z, "no streams ",in_ref^.u4); 66270 2301 335 ! ! ! ! ! ! ! send_to_wait( in_ref, act_pax_index); 66280 2302 336 ! ! ! ! ! ! END 66290 2303 337 ! ! ! ! ! ! ELSE 66300 2304 338 ! ! ! ! ! ! BEGIN (* act-stream-index points to an idle stream *) 66310 2305 339 ! ! ! ! ! ! ! 66320 2306 340 ! ! ! ! ! ! ! IF tst>16 THEN 66330 2307 341 ! ! ! ! ! ! ! testout( z, "idle stream ", act_stream_index); 66340 2308 342 ! ! ! ! ! ! ! start_stream( in_ref,act_stream_index, act_pax_index); 66350 2309 343 ! ! ! ! ! ! END 66360 2310 344 ! ! ! ! ! END 66370 2311 345 ! ! ! ! ! ELSE 66380 2312 346 ! ! ! ! ! BEGIN 66390 2313 347 ! ! ! ! ! ! (* index at act-pax-index points to active stream *) 66400 2314 348 ! ! ! ! ! ! 66410 2315 349 ! ! ! ! ! ! in_ref^.u1 := act_pax_index MOD 256 ; 66420 2316 350 ! ! ! ! ! ! send_to_stream( in_ref, act_stream_index); 66430 2317 351 ! ! ! ! ! END; 66440 2318 352 ! ! ! ! END 66450 2319 353 ! ! ! ! \f tsnetlst 81.06.15. 18.39. page 79 67010 2320 354 ! ! ! ! ELSE 67020 2321 355 ! ! ! ! (*--- reject with unknown receiver ---*) 67030 2322 356 ! ! ! ! IF in_ref^.u4 = #h12 THEN 67040 2323 357 ! ! ! ! return( in_ref) 67050 2324 358 ! ! ! ! ELSE 67060 2325 359 ! ! ! ! BEGIN 67070 2326 360 ! ! ! ! ! (*-- no alarmmacro in table --*) 67080 2327 361 ! ! ! ! ! 67090 2328 362 ! ! ! ! ! LOCK in_ref AS a : alarmlabel DO 67100 2329 363 ! ! ! ! ! local_macro := a.send.macro; 67110 2330 364 ! ! ! ! ! k := local_transmitter( nil_ref, local_macro); 67120 2331 365 ! ! ! ! ! 67130 2332 366 ! ! ! ! ! reject_message 67140 2333 367 ! ! ! ! ! ( in_ref, local_sems(k), netc_route1, local_macro, 67150 2334 368 ! ! ! ! ! netc_mic_addr, unknown_receiver); 67160 2335 369 ! ! ! ! ! 67170 2336 370 ! ! ! ! END; 67180 2337 371 ! ! ! END 67190 2338 372 ! ! END 67200 2339 373 ! ! \f tsnetlst 81.06.15. 18.39. page 80 68010 2340 374 ! ! ELSE 68020 2341 375 ! ! IF in_ref^.u4 = #h12 THEN 68030 2342 376 ! ! return( in_ref) 68040 2343 377 ! ! ELSE 68050 2344 378 ! ! BEGIN (* message from paxnet *) 68060 2345 379 ! ! ! IF tst>4 THEN 68070 2346 380 ! ! ! BEGIN 68080 2347 381 ! ! ! ! testout( z, "unknown mess", in_ref^.u3); 68090 2348 382 ! ! ! ! testout( z, "in notownbuf", in_ref^.u4); 68100 2349 383 ! ! ! END; 68110 2350 384 ! ! ! 68120 2351 385 ! ! ! LOCK in_ref AS a : alarmlabel DO 68130 2352 386 ! ! ! local_macro := a.send.macro; 68140 2353 387 ! ! ! k := local_transmitter( nil_ref, local_macro); 68150 2354 388 ! ! ! 68160 2355 389 ! ! ! reject_message 68170 2356 390 ! ! ! ( in_ref, local_sems(k), netc_route1, local_macro, 68180 2357 391 ! ! ! netc_mic_addr, unknown_route); 68190 2358 392 ! ! ! 68200 2359 393 ! ! END; 68210 2360 394 ! ! 68220 2361 395 ! UNTIL false; 68230 2362 396 END. 68240 2363 68250 2364 \f tsnetlst 81.06.15. 18.39. page 81 0 66* 68* 110* 132* 298 352 353 354 355 358 359 361 362 365 437 526 531 531 531 532 591 608 626 688 748 822 829 865 1007* 1163 1304 1359 1403 1475 1484 1506 1568 1585 1653 1671 1881 1889 1897 1905 1913 1921 1952 2016 2020 2056 2059 2129 2136 2143 2150 2157 2165 2173 2185 2207 1 89* 113* 150* 174* 174* 177* 296 308 321 333 349 360 364 411 412 413 417 442 442 478 482 483 489 489 492 494 495 497 525 529 533 539 568 573 588 589 590 676 819 825 838 879 968* 983 1150* 1160 1166 1168 1170 1256 1262 1264 1284 1301 1347 1392 1452 1501 1530 1608 1628 1644 1976 2009 2013 2018 2045 2052 2071 2093 2109 2223: 2248 2 70* 72* 114* 521 676 1472 1975 2103 2225: 3 115* 278 2228: 4 116* 687 804 1313 1358 1402 1483 1652 1951 2023 2049 2345 5 117* 6 118* 279 7 119* 552 8 120* 280 9 121* 280 10 122* 280 11 123* 12 124* 13 126* 532 14 127* 358 15 128* 16 89* 129* 132* 831 885 903 924 935 945 1048 1107 1851 1858 1880 1888 1896 1904 1912 1920 2128 2135 2142 2149 2156 2164 2172 2184 2206 2265 2266 2266 2286 2299 2306 50 551 60 2051 64 336 423 509 575 594 632 682 715 735 747 858 953 992 1021 1064 1090 1121 1165 1174 1201 1234 1265 1281 1330 1374 1432 1494 1526 1602 1625 1670 100 300 301 302 303 304 305 306 2024 2266 255 134* 256 588 590 1054 1054 1111 1111 1530 2315 a 82* 430* 440 445 500 503 507 769 771 772 773 773 774 775 1237: 1238 1543: 1544 2032: 2033 2328: 2329 2351: 2352 abuf 673: 675 676 731: 733= 868: 870 871 1041: 1043 1045 1096: 1098 1102 1469: 1471 1472 accept 87* 1535 1572 1584 1703 1716 1735 1769 accepted 440 act_facilities <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 110* 671 act_out 295 607 673: 705 1204 1206 1499 1506 1533 1536 1539 1540 1543: 1548 1556 1558 1560 1561 1566 1585 2055 \f tsnetlst 81.06.15. 18.39. page 82 act_pax_addr 97* 327 669 708= 828 908= 1027= 1036 1101= 1724= 2076= 2289= act_pax_index <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 95* 782= 1056= 1113= 2279= 2283 2287 2289 2301 2308 2315 act_stream_index <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 96* 909 912 2291 2295= 2297 2307 2308 2316 aic 1343: 1344 aicc_packets 123* 1337 aic_buf_type 1343 aic_first_val <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1346 1347 aic_id 1348= aic_q 1349= al 676 734 736 1472 1475 alabel 811* 817 819 822 827 alarmlabel 82* 430* 794 811* 868 974 1041 1096 1237 1543 2032 2268 2328 2351 alarm_macro 100* 855* 870= 874 878 1043= 1049 1056 1098= 1108 1113 2269= 2279 alarm_mess 675= 1019 1088 1471= 1475 alarm_op_code <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 101* 389 400 871= 976= 1197 1199 1213 1261 alloc 1988 all_ric_bufs 70* 1985 al_env_version <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1969 al_mac_addr 275 276 277 491= 524= 531= 538= 819= 827= 874= 878 981= 983 988= 1158= 1160 1182= amess 720* 733 734 736 as 657: 673: 731: 766: 794: 868: 974: 1016: 1041: 1084: 1096: 1237: 1297: 1343: 1388: 1449: 1469: 1543: 1607: 1640: 1675: 2032: 2223: 2225: 2228: 2268: 2328: 2351: boolean 103* 313* 1660* buf 657: 658 766: 769 769 769 771 772 773 773 774 775 794: 795 974: 977 978 1016: 1017 1449: 1451 1452 1454 1455 1457 1471 1472 1472 1475 2223: 2224= 2225: 2226= 2228: 2234 2268: 2269 byte 3* 96* 101* 105* 189* 204* 209* 220* 225* 226* 227* 238* 243* 313* 317* 372* 557* 581* 599* 615* 616* 638* 697* 721* 844* 845* 846* 997* 1007* 1009* 1250* 1270* 1323* 1366* 1422* 1423* 1424* 1489* 1521* 1616* 2231 calling 301: 707 1208 1218: 1569 1589 1689: 2069: call_buf 664 666 1019 1027 1054 1054 1057 1058 call_field 617* 622 call_field_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 617* call_id 202* 208* 1068 1071 1075 1304= 1321* 1348 1365* 1375 1385 1393 call_packets 119* 645 car_buf_type 657 cause 237* 1520* 1535 1572 1584 \f tsnetlst 81.06.15. 18.39. page 83 clearing 305: 1828: 2090: com_pool 257 com_pool_sem 11* 726 connec_to_addr <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 312* 319= 329= 909 1029 2291 control 622 1054 1054 1057 1058 1111 1111 1114 1115 1457 1692 1700 1701 1702 1705 1714 1722 1732 1733 1734 1737 1761 1766 1767 1768 1771 1802 copy_data 719* 741= 745= 1019 1088 copy_packets 122* 739 count 391 395 402 406 645 690 739 746 760 788 970 1015 1062 1082 1119 1133 1312 1337 1357 1381 1401 1443 1482 1510 1651 1681 1751 1779 1792 1808 1823 2081 c_data 203* 227* 846* 938 948 1322* 1353 1424* 1461 data 626= 1461= 1702 1705 1714 1722 1734 1737 1768 1771 data_not_received <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 745 1075 1128 1705 1722 1737 1771 data_received <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 741 1024 1068 1071 1093 1124 1702 1714 1734 1768 dbuf 1084: 1085 dc_addr 275 dc_alarm_macro <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 538 dc_index 72* 74* 536 823 825 876 908 911 920 927 1976 dec_f_q 409: 1565 2042 dec_s_q 416: 1562 delay1 1302= delay2 1303= diag_code 209* 1366* 1394 dte_adr 669= 1027 dte_adr_l 668= dte_aic 1338 1353 1694: 1878: 2133: dte_car 652 664 2126: dte_clr 1740: 1787: 1817: 1886: 2140: dte_default 653 1293 1339 1384 1415 1445 1605 1636 1926 2189 dte_ok_result <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2122 dte_rdata 1080: 1635 1856: 2170: 2176 dte_rejic 1383 1710: 1878: 2133: dte_remo_clear <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1863: dte_res 1894: 2147: dte_reset 1782: 1812: dte_result_handler <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1843* 2202 \f tsnetlst 81.06.15. 18.39. page 84 dte_ric 1013: 1292 1910: 2182: 2187 dte_sdata 1444 2162: dte_sdata_data <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1084 1449 1607 1640 1675 dte_sem 13* 680 1307 1352 1397 1417 1478 1610 1647 1927 2191 dte_sem_no 262 dte_stat 1902: 2154: dubl_packets 129* 1062 1065 1119 1122 dummy_route 1948 dyn_test 2214 entry 372* 382 424 external 194* ext_pax_addr 97* 358 532 2230 facility 671= facility_l 670= false 319 483 662 820 1349 1454 1455 1673 2361 first 660= 1300= 1346= 1391= 1451= 1643= first_codes 77* 389 400 1197 1199 1213 1261 first_queue 1214 1262 1556 2028 free 300: 326 367 567 570 1256 1562 1565 1570 1575 1679: 2042 2064: free_stream 557* 571= 573= 888 916 1031 2295 func 997* 1011 global_timeout <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 3* 255 h12 790 1230 1539 2322 2341 h30 77* h40 77* h41 77* hac 762 had 771 777 handle_10_12_mess <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 754* 2273 handle_node_test <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 810* 1045 1102 hc0 77* 817 hc1 77* i 107* 266* 272 274 286* 292 294 317* 323 324 330 331= 333= 333 345* 349= 350 412= 413 413 429* 437 437 442 442= 442 448 474 476 477 478 481 482 483 489 489 491 492 494 510 518* 521= 522 562* 565= 567 567 568= 568 570 571 576 805 856* 876= 878 879= 879 881 886 892 895 904 968* 983 983= 983 985 986 990 993 1150* 1160 1160= 1160 1163 1163 1175 1177 1179 1277* 1284= 1314 1430* 1621* 1628= 2009= 2010 2024 2042 2066 2077 2082 2087 2176= 2187= ill_adr_bufs 128* 788 \f tsnetlst 81.06.15. 18.39. page 85 incname 1968 inc_all 386: 1223 inc_q 398: 1220 1256 init_pax_table <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 513* 1979 init_stream_states <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 340* 1978 insert_code 470: integer 83* 89* 95* 107* 110* 134* 191* 215* 233* 266* 286* 345* 429* 518* 562* 848* 856* 962* 968* 998* 1141* 1150* 1189* 1277* 1430* 1621* 2229 2232 in_ref 159* 755* 762 766: 777 780 782 790 791 794: 800 1861 1999 2001 2007 2116 2122 2124 2130 2137 2144 2151 2158 2166 2175 2176 2178 2187 2189 2191 2196 2202 2204 2208 2214 2220 2222 2223: 2225: 2226 2228: 2235 2253 2261 2262 2266 2266 2268: 2272 2273 2279 2281 2300 2301 2308 2315 2316 2322 2323 2328: 2333 2341 2342 2347 2348 2351: 2356 iref 224* 1421* 1468 1469: j 107* 345* 364= 365 2013= 2015 2016 2018 2018 2020 2024 2045= 2045 2050 2051 2052= k 107* 797= 800 823= 825= 827 828 829 833 834 837 838 1239= 1242 1545= 1548 2035= 2038 2330= 2333 2353= 2356 last 676= 1301= 1347= 1392= 1452= 1472= 1472 1608= 1644= lfq 2229: 2237= local_macro 99* 215* 772= 774 782 795= 797 800 1141* 1158 1160 1238= 1239 1242 1544= 1545 1549 2033= 2035 2038 2329= 2330 2333 2352= 2353 2356 local_mac_top <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 105* 477 478= 489 494 495= 495 985 1158 1163 1182 1975= local_receiver <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 957* 990= 2279 local_sems 8* 800 986 1170 1179 1242 1548 2038 2333 2356 local_transmitter <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 212* 782 797 1056 1113 1138* 1168= 1177= 1239 1545 2035 2330 2353 loca_packets 113* 970 lock 657: 673 731: 766: 794: 868: 974: 1016: 1041: 1084: 1096: 1237: 1297: 1343: 1388: 1449: 1469: 1543 1607: 1640: 1675: 2032: 2223: 2225: 2228: 2268: 2328: 2351: lost_packets 114* 1510 2081 lsq 2229: 2238= l_control 676 1452 1608 1644 l_dte_adr 668 l_facilities 670 l_f_q 300 301 302 303 304 305 306 352= 391 392 402 403 411= 411 412 1198 2015 2052 2237 l_listen 1608 1644 l_s_q 300 301 302 303 304 305 306 353= 395 406 417= 417 2238 macro 772 774= 795 819 822 827 870 978 1043 1098 1238 1544 2033 2269 2329 2352 \f tsnetlst 81.06.15. 18.39. page 86 macroaddr 100* 190* 215* 531 855* 961* 1141* main_sem 7* 1988 1999 make_a_call 637* 711 1207 1588 1725 2077 make_ric_bufs <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1269* 1985 max_alarm_mess <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 673 720* 731 1469 max_globals 74* max_locals 72* 442 476 max_pax_table <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 74* 174* 437 521 max_queue 364 1198 max_retrans 282 354= 526= 607= 607 829= 1503 2073 2243 max_stream_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 177* 323 331 349 567 2009 mess_10_12_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 80* 766 mes_ref 1935* 1946 1948 1949 1954 1955 micro 775= min_ric_data 1301 min_stream_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 177* 317* 321 349 565 573 890 918 1033 1051 1256 1262 1264 2009 2297 msg 186* m_bit 1455= m_r 2231: 2243= nc_addr 276 822 nc_sem_no 260 netconnector 2* netc_loc_sems <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 9* netc_mic_addr <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 532 775 801 1243 1550 2039 2334 2357 netc_packets 121* 760 netc_route 76* 730 972 1156 1294 2261 netc_route1 76* 800 1242 1548 2038 2272 2333 2356 netc_route2 76* 780 2262 netc_routes 76* 1155 netc_sem_no 258 new_pax_e 431* 448= 474 new_stat 419: 707 1037 1208 1570 1573 1575 1589 1698 1809 new_state 374* 388 420 nil_macro 491 524 988 1182 nil_ref 157* 797 1124 1128 1239 1545 2035 2330 2353 nons_packets 115* 1133 1681 1751 1792 1823 \f tsnetlst 81.06.15. 18.39. page 87 not_accepted 500 not_ready 2039 no_address 103* 483= 492= 820= 1044 1099 no_com_bufs 127* 746 no_connection <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1550 no_of_bufs 219* 1270* 1282 1284 1615* 1628 no_of_by 676 736 1472 1475= no_pax_bufs 126* 690 1312 1357 1401 1482 1651 no_resources 1243 no_room 507 n_r 630= 1465= 1701 1733 1767 n_r_inc 629= 1464= 1700 1732 1766 n_s 628= 1054 1058 1111 1115 1463= n_s_inc 627= 1054 1057 1111 1114 1462= ok_receive_state <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1658* 1673= 1778= 1807= 1865 2175 opc_command 1506 1585 1775: 1804: opc_receipt 1124 1128 1729: 1763: opr 616* 625 opr_code 226* 1423* 1435 1460 op_code 625= 734 771= 817 845* 871 936 938 946 948 977= 1460= 1692 1761 1802 op_sem 4* 1968 own 1968 ownertest 1949 2001 paxnet_config <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 539 paxnet_e 84* 174* 431* 2225 pax_addr 278 279 280 280 327 358= 532= 539= 702= 702 708 828= 908 1036= 1101 1724 2076 2239 2289 pax_entry 84* 769 pax_index 83* 243* 697* 702 704 708 769 1250* 1259 1266 pax_pool 256 pax_pool_sem 6* 647 1287 1333 1377 1438 1630 1867 1882 1890 1898 1906 1914 1922 1954 2130 2137 2144 2151 2158 2166 2196 2208 pax_table 173* 272 448 474= 491 522 529 536 607 702 708 819 827 828 829 874 878 908 981 983 986 988 1158 1160 1163 1179 1182 2226 2289 pax_table_top <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 104* 481 482= 489 497= 497 837 838= 874 881 981 988 1976= 2283 pool 150* process 2* p_addr 2230: 2239= q_bit 662= 1454= rdata 1607: 1608 1640: 1641 1675: 1692 1700 1701 1702 1705 1714 1722 1732 1733 1734 1737 1761 1766 1767 1768 1771 1802 \f tsnetlst 81.06.15. 18.39. page 88 read_code 447: rec 772 773= 795 819 870 978 1043 1098 2269 receiving 303: 1037 1222: 1798: 1809 2101: reci_packets 117* 1082 1779 1808 rec_sem 188* ref 158* 214* 232* 242* 346* 379* 546* 551 552 554 643* 647 649 652 653 654 655 657: 680 695* 704 705= 847* 861 868: 892 895 911 912 920 927 938 948 959* 972 974: 976 977 986 998* 1016: 1083 1084: 1124 1128 1140* 1154 1155 1156 1169 1170 1178 1179 1188* 1206= 1214 1216 1230 1231 1237: 1242 1249* 1259 1262 1264 1278* 1287 1289 1292 1293 1294 1295 1297: 1307 1328* 1333 1335 1338 1339 1340 1341 1343: 1352 1353 1371* 1377 1379 1383 1384 1385 1386 1388: 1397 1410* 1415 1417 1429* 1438 1440 1444 1445 1446 1447 1449: 1478 1597* 1603 1605 1607: 1610 1622* 1630 1632 1635 1636 1637 1638 1640: 1647 1659* 1675: 1676 1698 1703 1706 1716 1724 1725 1735 1738 1769 1772 1809 1845* 1852 1854 1859 1865 1867 1872 1882 1890 1898 1906 1914 1922 1926 1927 1988 1989 reference 160* 186* 214* 224* 232* 242* 346* 379* 546* 643* 695* 721* 755* 847* 959* 998* 1008* 1140* 1188* 1249* 1278* 1328* 1371* 1410* 1421* 1429* 1597* 1622* 1659* 1845* 1935* reject 87* 1511 2066 2082 reject_message <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 184* 799 1241 1547 2037 2332 2355 rejic 1388: 1389 rejic_buf_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1388 rejic_diag 1394= rejic_first_val <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1391 1392 rejic_id 1393= reji_packets 124* 1381 release_cause <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 87* 237* 1520* release_uo_data <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 236* 1511 1519* 1703 1716 1735 1769 2066 2082 remote_macro 961* 978= 981 983 remove_code 486: resetting 306: 1833: 2096: result 440= 500= 503= 507= 1009* 1019= 1022 1024 1088= 1091 1093 result_code 192* result_range 192* retransmit_data <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1488* 1706 1738 1772 2087 retrans_count <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 355= 608= 1501= 1501 1503 2071= 2071 2073 2242 retrans_timer <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 357= 610= 1505= 1568= 2056 2059 2075= 2109= 2109 2240 \f tsnetlst 81.06.15. 18.39. page 89 retrans_timo 356= 357 609= 610 1505 2075 2241 retr_packets 118* return 791 1063 1120 1231 1536 1540 2253 2323 2342 return_rdata_buf <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1596* 1872 2178 rica_packets 120* 1015 ric_buf 1297: 1298 ric_buf_type 1016 1297 ric_delay_1 66* 1302 ric_delay_2 68* 1303 ric_first_val <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 660 676 1300 1301 route 189* r_c 2231: 2242= r_t 2231: 2240= r_to 2231: 2241= s 1867 1882 1890 1898 1906 1914 1922 1954 1988 2130 2137 2144 2151 2158 2166 2196 2208 sdata_first_val <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1451 1452 1608 1643 1644 second_queue 1216 1264 1560 sempointer 4* 13* 188* 1937* sem_ptr 1937* 1946 1955 send 773 774 775 822 827 1238 1544 2033 2329 2352 sender_macro 190* sender_micro 191* sending 302: 1219: 1220 1223 1698 1758: 2086: sendtimer 554 send_aic_buf 200* 1068 1319* send_packets 116* 1443 send_rdata_bufs <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 218* 710 1035 1614* send_rejic_buf <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 207* 1071 1075 1364* send_ric_buf 1408* send_sdata_buf <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 223* 938 948 1353 1420* 1506 1585 send_to_stream <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 230* 912 1186* 2316 send_to_systimer <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 544* 1989 2007 send_to_wait 241* 895 927 1248* 2301 sensesem 647 726 1287 1333 1377 1438 1556 1560 1630 2028 set_control 614* 664 \f tsnetlst 81.06.15. 18.39. page 90 set_retrans 598* 713 1209 1579 signal 680 986 1170 1179 1214 1216 1262 1264 1307 1352 1397 1417 1478 1610 1647 1867 1882 1890 1898 1906 1914 1922 1927 1954 2130 2137 2144 2151 2158 2166 2191 2196 2208 start_new_inc <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 580* 709 start_stream 694* 892 920 2308 stat 132* 645 690 739 746 760 788 970 1015 1062 1065 1082 1119 1122 1133 1312 1337 1357 1381 1401 1443 1482 1510 1651 1681 1751 1779 1792 1808 1823 2081 2224 state 299 326 367= 388= 420= 567 570 1217 1569 1677 2063 state_type 374* stat_type 89* 132* 132* 2223 stream 201* 220* 238* 581* 586 595 599* 605 615* 623 633 844* 859 865 888= 890 892 916= 918 920 925 938 948 951 954 1007* 1029 1031= 1033 1035 1036 1037 1051 1053 1068 1083= 1101 1110 1124= 1128= 1135 1320* 1331 1340 1353 1489* 1495 1497 1506 1511 1521* 1527 1529 1533 1536 1539 1540 1543 1548 1556 1556 1558 1560 1560 1561 1562 1565 1566 1568 1569 1570 1573 1575 1579 1581 1585 1588 1589 1616* 1626 1637 stream_index 233* 1189* 1198 1202 1204 1206 1207 1208 1209 1214 1216 1217 1220 1223 1235 stream_indx 313* 321= 330= 337 stream_no 225* 281 525= 533= 638* 654 664 673 683 696* 702 705 707 709 710 711 713 716 986 1163 1179 1422* 1434 1446 1458 stream_receiver <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 996* 1135= 2176 2187 stream_states <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 176* 292 324 350 382 567 570 586 605 623 673 702 705 1036 1053 1101 1110 1198 1204 1206 1214 1216 1217 1262 1264 1458 1497 1529 1533 1536 1539 1540 1543 1548 1556 1556 1558 1560 1560 1561 1566 1568 1569 1581 1676 1724 2010 2235 stream_s_e 177* stream_timeout <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 356 392 403 609 stream_transmitter <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 843* 951= 1124 1128 testopen 1968 testout 255 256 257 258 259 260 261 262 274 275 276 277 278 279 280 281 282 294 296 298 300 301 302 303 304 305 306 308 337 576 595 633 683 688 716 736 748 805 833 859 886 904 925 936 946 954 993 1022 1049 1065 1091 1108 1122 1166 1175 1202 1235 1266 1282 1314 1331 1359 1375 1403 1434 1435 1484 1495 1527 1603 1626 1653 1671 1852 1859 1881 1889 1897 1905 1913 1921 1952 1969 2024 2050 2093 2103 2129 2136 2143 2150 2157 2165 2173 2185 2207 2266 2287 2300 2307 2347 2348 timeout_sem 12* \f tsnetlst 81.06.15. 18.39. page 91 timeout_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 261 timers 308 365= 392= 403= 413= 413 2016 2018= 2018 2020 2051= 2248 timer_pool 150* 1949 1988 2001 to_link 655 1295 1341 1386 1447 1638 2116 true 103* 329 492 1778 1807 tssup_sem_no 259 tst 134* 336 423 509 575 594 632 682 687 715 735 747 804 831 858 885 903 924 935 945 953 992 1021 1048 1064 1090 1107 1121 1165 1174 1201 1234 1265 1281 1313 1330 1358 1374 1402 1432 1483 1494 1526 1602 1625 1652 1670 1851 1858 1880 1888 1896 1904 1912 1920 1951 2023 2049 2128 2135 2142 2149 2156 2164 2172 2184 2206 2220= 2265 2286 2299 2306 2345 ts_addr 277 1049 1108 ts_pointer 7* ts_wait 1933* 1999 t_1 2232: 2248= t_ref 156* 2028 2030 2032: 2038 u1 607 652= 704= 911= 1259= 1292= 1338= 1383= 1444= 1635= 1854 2124 2226 2235 2315= u2 653= 1293= 1339= 1384= 1415= 1445= 1603 1605= 1636= 1852 1859 1861 1926= 2122 2189= 2222 u3 551= 654= 730= 780= 972= 1083 1124 1128 1155 1156= 1294= 1340= 1385= 1446= 1637= 1676 1698 1703 1706 1716 1724 1725 1735 1738 1769 1772 1809 1948 2220 2261 2262 2272 2347 u4 552= 655= 734= 762 777= 790 976 977 1230 1295= 1341= 1386= 1447= 1539 1638= 2116 2214 2266 2266 2300 2322 2341 2348 unknown_opcode <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 801 unknown_receiver <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2334 unknown_route <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2357 unknown_update <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 503 update 445 update_pax_table <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 428* 769 update_stream_state <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 371* 707 1037 1208 1220 1223 1256 1562 1565 1570 1573 1575 1589 1698 1809 2042 upd_kind 373* 384 upd_kinds 373* user_ref 721* 726 728 730 731: 734 1008* 1019 1041: 1056 1063 1088 1096: 1113 1120 version 17* 1969 vr 2231: 2247= \f tsnetlst 81.06.15. 18.39. page 92 vs 2231: 2245= v_r 362= 591= 630 1054 1058= 1111 1115= 1465 2247 v_r_i 2231: 2246= v_r_inc 361= 590= 590 629 1054 1057= 1111 1114= 1464 2246 v_s 360= 589= 628 1463 1530= 1530 1701 1733 1767 2245 v_s_i 2231: 2244= v_s_inc 359= 588= 588 627 1462 1700 1732 1766 2244 w 647 1287 1333 1377 1438 1630 1999 wait 1946 1955 waiting 304: 1221: 1573 1799: 2089: windowsize 710 1035 write_create_pars <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 250* 1971 write_paxnet_entry <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 266* 510 834 write_stream_state <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 286* 424 z 108* 255 256 257 258 259 260 261 262 274 275 276 277 278 279 280 281 282 294 296 298 300 301 302 303 304 305 306 308 337 576 595 633 683 688 716 736 748 805 833 859 886 904 925 936 946 954 993 1022 1049 1065 1091 1108 1122 1166 1175 1202 1235 1266 1282 1314 1331 1359 1375 1403 1434 1435 1484 1495 1527 1603 1626 1653 1671 1852 1859 1881 1889 1897 1905 1913 1921 1952 1968 1969 2024 2050 2093 2103 2129 2136 2143 2150 2157 2165 2173 2185 2207 2266 2287 2300 2307 2347 2348 zone 108* \f tsnetlst 81.06.15. 18.39. page 93 AND 9 ARRAY 3 BEGIN 207 CASE 14 CONST 3 DIV 1 DO 73 ELSE 64 END 223 FOR 7 FORWARD 8 FUNCTION 9 IF 168 IN 7 MOD 5 NIL 23 NOT 25 OF 17 OR 3 OTHERWISE 12 PROCEDURE 36 RECORD 2 REPEAT 1 THEN 168 TO 7 TYPE 1 UNTIL 1 VAR 51 WHILE 7 WITH 31 *message compile netcon compile netcon *pascal80 alarmenv paxenv source 81.06.15. 18.40. pascal80 version 1981.04.01 name headline beginline endline appetite(words) write_create 254 255 263 : 17 write_paxnet 271 272 284 : 24 write_stream 291 292 310 : 24 connec_to_ad 317 319 338 : 21 init_stream_ 345 349 369 : 19 update_strea 379 382 426 : 24 update_pax_t 436 438 511 : 9 init_pax_tab 518 521 541 : 13 send_to_syst 550 551 555 : 10 free_stream 562 565 577 : 18 start_new_in 585 586 596 : 19 set_retrans 604 605 612 : 9 set_control 621 622 635 : 21 make_a_call 643 645 692 : 27 start_stream 701 702 717 : 17 copy_data 725 726 751 : 21 handle_10_12 759 760 808 : 19 handle_node_ 816 818 841 : 17 stream_trans 855 859 955 : 22 local_receiv 968 970 994 : 20 stream_recei 1007 1013 1136 : 50 local_transm 1150 1155 1184 : 19 send_to_stre 1195 1200 1246 : 19 send_to_wait 1255 1256 1267 : 17 make_ric_buf 1277 1282 1317 : 27 send_aic_buf 1328 1331 1362 : 23 send_rejic_b 1371 1375 1406 : 23 send_ric_buf 1414 1415 1418 : 4 send_sdata_b 1429 1433 1486 : 28 retransmit_d 1493 1495 1516 : 20 release_uo_d 1525 1527 1594 : 19 return_rdata 1601 1603 1612 : 20 send_rdata_b 1621 1626 1656 : 27 ok_receive_s 1669 1671 1841 : 21 dte_result_h 1850 1852 1930 : 19 ts_wait 1944 1946 1958 : 18 netconnector 17 1968 2362 : 899 code: 41 . 290 = 21282 bytes end of PASCAL80 compilation end blocksread = 53 *mode list.no «eof»