|
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: 142080 (0x22b00) Types: TextFileVerbose Names: »tsaoslst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »tsaoslst«
\f tsaoslst 81.06.10. 12.29. page 1 10 1 20 2 30 3 \f tsaoslst 81.06.10. 12.29. page 2 1010 4 PROCESS alarm_opsys(VAR semvector: system_vector; 1020 5 VAR evavector: appl_vector ); 1030 6 1040 7 (*************************************************** 1050 8 * 1060 9 * function: the test module is used to initialise buffers, 1070 10 * signal them to semaphores, and to write their 1080 11 * contents, when they have been handled by another 1090 12 * 1100 13 * externals: none 1110 14 * 1120 15 * var params: none 1130 16 * 1140 17 * semaphores: the module sends to the system semaphore 1150 18 * "operatorsem". 1160 19 * 1170 20 * 1180 21 * programmed may 1980 by wib and stb 1190 22 * 1200 23 ***************************************************) 1210 24 1220 25 CONST 1230 26 version = "vers 4.08 /"; 1240 27 1250 28 1260 29 \f tsaoslst 81.06.10. 12.29. page 3 2010 30 CONST 2020 31 opbufsize = 80; (* no. of bytes in buffers to the operator module *) 2030 32 (*** bufs ***) 2040 33 messbufsize= 64; (*words*) 2050 34 testbufsize= 120; 2060 35 maxbufsize= 120; 2070 36 minbufsize= 16; 2080 37 noofmodules= 21; 2090 38 noofsemaphores= ts_sem_total; 2100 39 pu= 0; (* processing unit number *) 2110 40 pr= -1; (* timeslicing priority *) 2120 41 2130 42 valparam= "param val "; 2140 43 noparam= " no param "; 2150 44 alreadyexists= " already exists "; 2160 45 doesntexist= " doesn't exist "; 2170 46 illegalno= "illegal no"; 2180 47 createerror= "error in createcall "; 2190 48 2200 49 linelength= 80; 2210 50 firstindex= 6 + alfalength; 2220 51 lastindex= firstindex + (linelength - 1); 2230 52 ok= 0; (* result from operator *) 2240 53 2250 54 2260 55 TYPE 2270 56 2280 57 (*---- for alarmenv later ------*) 2290 58 2300 59 paxpooltype = pool no_pax_bufs OF min_rut_mess; 2310 60 2320 61 opbuftype= 2330 62 RECORD 2340 63 ! first, 2350 64 ! last, 2360 65 ! next: integer; 2370 66 ! name: alfa; 2380 67 ! data: ARRAY (firstindex..lastindex) OF char 2390 68 END; 2400 69 2410 70 (*** bufs ***) 2420 71 messbuftype= ARRAY (1..messbufsize) OF integer; 2430 72 testbuftype= ARRAY (1..testbufsize) OF integer; 2440 73 minbuftype = ARRAY (1.. minbufsize) OF integer; 2450 74 maxbuftype = ARRAY (1.. maxbufsize) OF integer; 2460 75 \f tsaoslst 81.06.10. 12.29. page 4 2470 76 createchtype= 2480 77 RECORD 2490 78 ! controlinfo, timeout: byte 2500 79 END; 2510 80 2520 81 atbuffer= ARRAY (0..1) OF byte; 2530 82 2540 83 2550 84 alfa10= ARRAY (1..10) OF char; 2560 85 alfa20= ARRAY (1..20) OF char; 2570 86 2580 87 (* type necessary to compare sempointers *) 2590 88 point_rec = RECORD 2600 89 ! a: sempointer; 2610 90 END; 2620 91 2630 92 VAR 2640 93 (********* pools *********) 2650 94 opbufpool: pool 3 OF opbuftype; 2660 95 (*** bufs ***) 2670 96 testbufpool: pool 12 OF testbuftype; 2680 97 messbufpool: pool no_listen OF messbuftype; 2690 98 paxbufpool : paxpooltype; 2700 99 2710 100 (********** semaphores **********) 2720 101 spool_sem, 2730 102 countsem, (* used by "t"-command *) 2740 103 wsem, (* buffers written by the operatormodule is 2750 104 returned here *) 2760 105 wrsem (* buffers with content read by the operator 2770 106 module is returned here *) 2780 107 : semaphore; 2790 108 ts_sem : ARRAY (1..ts_sem_total) OF semaphore; 2800 109 2810 110 (********** references **********) 2820 111 nref, 2830 112 countref, (* used by "t"-command *) 2840 113 opinref, (* ref. to buffer from operator *) 2850 114 opoutref, (* ref. to buffer to operator *) 2860 115 cur (* ref. to current buffer *) 2870 116 : reference; 2880 117 2890 118 (********** pointers **********) 2900 119 spool_test_sem : sempointer; 2910 120 opsem: sempointer; 2920 121 worksem: sempointer; \f tsaoslst 81.06.10. 12.29. page 5 2930 122 sem : ts_pointer_vector; 2940 123 2950 124 (********** zones **********) 2960 125 z: zone; 2970 126 2980 127 (********** char **********) 2990 128 command: char; (* the first char the operator typed *) 3000 129 3010 130 3020 131 (********** integers **********) 3030 132 base, (* number base for input and output *) 3040 133 firstword, (* used by "o"-command *) 3050 134 i, 3060 135 incharsleft, (* no. of not yet read chars in opinbuffer *) 3070 136 j, 3080 137 k, 3090 138 lastword, (* used by "o"-command *) 3100 139 leftbyte, (* used by "p"-command *) 3110 140 moduleno, (* tested module *) 3120 141 noofparams, (* no. of params in operator line *) 3130 142 oldbase, (* used by the "b" command *) 3140 143 rightbyte, (* used by "p"-command *) 3150 144 semno, (* typed semaphore number *) 3160 145 curbufsize, (* in words *) 3170 146 curbuftype, (* 0 - 4 *) 3180 147 st (* storage requirements *) 3190 148 : integer; 3200 149 3210 150 (********** booleans **********) 3220 151 readok, (* indicates if the last call of readinteger 3230 152 yielded a result *) 3240 153 testmode 3250 154 : boolean; 3260 155 3270 156 (********** arrays **********) 3280 157 netc_locals : netc_loc_sems; 3290 158 params: ARRAY(1..50) OF integer; (* holds parameters from operator *) 3300 159 sh: ARRAY(1..noofmodules) OF shadow; (* ref. to process incarn. *) 3310 160 3320 161 (********** param to use in create **********) 3330 162 dc_addr: macroaddr := macroaddr(7,0,0); 3340 163 nc_addr: macroaddr := macroaddr(7,5,0); 3350 164 ts_addr: macroaddr := macroaddr(7,5,4); 3360 165 3370 166 (*** auxiliary to compare sempointers ***) 3380 167 ap,bp : point_rec; \f tsaoslst 81.06.10. 12.29. page 6 3390 168 node_no : byte; 3400 169 dte_addr : int_pax_addr := int_pax_addr(0,0,0,3); 3410 170 \f tsaoslst 81.06.10. 12.29. page 7 4010 171 (********** externals **********) 4020 172 PROCESS tssuper( 4030 173 op: sempointer; 4040 174 VAR ts_sem : !ts_pointer_vector); 4050 175 EXTERNAL; 4060 176 4070 177 PROCESS at_handler( 4080 178 op: sempointer; 4090 179 VAR 4100 180 dc_addr, 4110 181 ts_addr: !macroaddr; 4120 182 VAR ts_sem : !ts_pointer_vector); 4130 183 EXTERNAL; 4140 184 4150 185 PROCESS vc_handler( 4160 186 op: sempointer; 4170 187 VAR 4180 188 dc_addr, 4190 189 ts_addr: !macroaddr; 4200 190 VAR ts_sem : !ts_pointer_vector); 4210 191 EXTERNAL; 4220 192 4230 193 PROCESS timout( 4240 194 opsem: sempointer; 4250 195 VAR timeoutsem: !ts_pointer; 4260 196 ticklength, max: integer); 4270 197 EXTERNAL; 4280 198 4290 199 PROCESS atconnector( 4300 200 opsem: sempointer; 4310 201 VAR 4320 202 atcsem, 4330 203 quesem : !ts_pointer; 4340 204 VAR 4350 205 athsem, 4360 206 driversem, 4370 207 timsem, 4380 208 com_sem: !sempointer; 4390 209 VAR 4400 210 dc_addr, 4410 211 ts_addr: !macroaddr; 4420 212 ownaddr: integer; 4430 213 channelno: byte); 4440 214 EXTERNAL; 4450 215 4460 216 PROCESS vcc( \f tsaoslst 81.06.10. 12.29. page 8 4470 217 opsem: sempointer; 4480 218 VAR 4490 219 messem, 4500 220 quesem : !ts_pointer; 4510 221 VAR 4520 222 vchsem, 4530 223 lamsem, 4540 224 timeoutsem, 4550 225 com_sem: !sempointer; 4560 226 VAR 4570 227 dcaddr, 4580 228 tsaddr: !macroaddr; 4590 229 micaddr: integer; 4600 230 channelno: byte); 4610 231 EXTERNAL; 4620 232 4630 233 PROCESS tsconnector( 4640 234 opsem: sempointer; 4650 235 VAR 4660 236 tsssem, 4670 237 dcsem, 4680 238 ncsem, 4690 239 lamsem, 4700 240 timeoutsem, 4710 241 com_sem: !sempointer; 4720 242 VAR 4730 243 inputsem, 4740 244 semint1, 4750 245 semint2, 4760 246 semint3, 4770 247 semint4: !ts_pointer); 4780 248 EXTERNAL; 4790 249 4800 250 PROCESS lam( 4810 251 opsem: sempointer; 4820 252 pu, level: integer; 4830 253 VAR inputsem: !ts_pointer); 4840 254 EXTERNAL; 4850 255 4860 256 PROCESS vagt( 4870 257 opsem: sempointer; 4880 258 VAR sem: !ts_pointer_vector); 4890 259 EXTERNAL; 4900 260 4910 261 PROCESS dcmodule( 4920 262 opsem: sempointer; \f tsaoslst 81.06.10. 12.29. page 9 4930 263 VAR sem1,sem2,sem3,sem4: !sempointer; 4940 264 VAR sem5,sem6,sem7,sem8: !ts_pointer); 4950 265 EXTERNAL; 4960 266 4970 267 PROCESS tap( 4980 268 opsem: sempointer; 4990 269 VAR tab_sem: !ts_pointer); 5000 270 EXTERNAL; 5010 271 5020 272 PROCESS ncsup( 5030 273 opsem: sempointer; 5040 274 VAR 5050 275 main, 5060 276 free, 5070 277 done: !ts_pointer; 5080 278 VAR 5090 279 net_sem, 5100 280 timeoutsem: !sempointer); 5110 281 EXTERNAL; 5120 282 5130 283 PROCESS dtesimulator ( 5140 284 test_sem : sempointer; 5150 285 VAR 5160 286 pax_pool_sem, 5170 287 dte_sem : !ts_pointer; 5180 288 VAR 5190 289 netc_sem, 5200 290 rut_trm_sem, 5210 291 rut_rec_sem : !sempointer; 5220 292 dte_addr : int_pax_addr 5230 293 ); 5240 294 EXTERNAL; 5250 295 5260 296 PROCESS netconnector ( 5270 297 global_timeout : byte; 5280 298 test_sem : sempointer; 5290 299 VAR 5300 300 pax_pool_sem, 5310 301 main_sem : !ts_pointer; 5320 302 local_sem_table : netc_loc_sems; 5330 303 VAR 5340 304 com_pool_sem, 5350 305 timeout_sem, 5360 306 dte_sem : !sempointer 5370 307 ); 5380 308 EXTERNAL; \f tsaoslst 81.06.10. 12.29. page 10 5390 309 5400 310 PROCESS tapdte ( 5410 311 op_sem : sempointer; 5420 312 VAR sem : ! ts_pointer ); 5430 313 EXTERNAL; 5440 314 5450 315 PROCESS tapnet ( 5460 316 op_sem : sempointer; 5470 317 VAR sem : !ts_pointer ); 5480 318 EXTERNAL; 5490 319 5500 320 PROCESS testoutput ( 5510 321 insem, 5520 322 opsem : sempointer ); 5530 323 EXTERNAL; 5540 324 5550 325 5560 326 PROCEDURE setoflowmask( oflow: boolean); 5570 327 EXTERNAL; 5580 328 5590 329 PROCEDURE readram( VAR result:byte; index : integer); 5600 330 EXTERNAL; 5610 331 5620 332 (********** forwards **********) 5630 333 5640 334 PROCEDURE getparams; 5650 335 FORWARD; 5660 336 5670 337 PROCEDURE outdecimal(int,positions: integer); 5680 338 FORWARD; 5690 339 5700 340 PROCEDURE outinteger(int,positions: integer); 5710 341 FORWARD; 5720 342 5730 343 PROCEDURE outstring10(text: alfa10); 5740 344 FORWARD; 5750 345 5760 346 PROCEDURE outstring12(text: alfa); 5770 347 FORWARD; 5780 348 5790 349 PROCEDURE outstring20(text: alfa20); 5800 350 FORWARD; 5810 351 5820 352 FUNCTION readchar: char; 5830 353 FORWARD; 5840 354 \f tsaoslst 81.06.10. 12.29. page 11 5850 355 FUNCTION readinteger: integer; 5860 356 FORWARD; 5870 357 5880 358 PROCEDURE repeatchar; 5890 359 FORWARD; 5900 360 5910 361 PROCEDURE testmodeout (text: alfa20; i: integer); 5920 362 FORWARD; 5930 363 5940 364 PROCEDURE writenl; 5950 365 FORWARD; 5960 366 \f tsaoslst 81.06.10. 12.29. page 12 6010 367 FUNCTION dte_pax_addr (i:integer): int_pax_addr; 6020 368 VAR pax_adr : int_pax_addr; 6030 369 BEGIN 6040 370 1 ! pax_adr.net_addr := params(i); 6050 371 2 ! pax_adr.reg_addr := params(i+1); 6060 372 3 ! pax_adr.node_addr := params(i+2); 6070 373 4 ! pax_adr.ext_addr := params(i+3); 6080 374 5 ! dte_pax_addr := pax_adr; 6090 375 6 END; 6100 376 6110 377 PROCEDURE make_phead ( 6120 378 i : integer; op_code : byte; 6130 379 VAR p : format_1_packet_header ); 6140 380 BEGIN 6150 381 1 ! WITH p DO 6160 382 2 ! BEGIN 6170 383 3 ! ! format := rut_format_1; 6180 384 4 ! ! priority := rut_prio_0; 6190 385 5 ! ! packet_type := rut_pack_type; 6200 386 6 ! ! state := 0; 6210 387 7 ! ! org := dte_pax_addr(i); 6220 388 8 ! ! dst := dte_pax_addr(i+3); 6230 389 9 ! ! facility := params(9); 6240 390 10 ! ! user_field := op_code *256 + params(2); 6250 391 11 ! ! top_of_data := 0; 6260 392 12 ! END; 6270 393 13 END; 6280 394 \f tsaoslst 81.06.10. 12.29. page 13 7010 395 FUNCTION packmacro ( 7020 396 par:integer):macroaddr; 7030 397 VAR 7040 398 a:macroaddr; 7050 399 BEGIN 7060 400 1 ! a.dc_addr := params( par); 7070 401 2 ! a.nc_addr := params( par+1); 7080 402 3 ! a.ts_addr := params( par+2); 7090 403 4 ! packmacro := a; 7100 404 5 END; 7110 405 7120 406 FUNCTION packextnode ( 7130 407 par:integer) : ext_pax_addr; 7140 408 VAR 7150 409 i:integer; 7160 410 a:ext_pax_addr; 7170 411 BEGIN 7180 412 1 ! FOR i:=1 TO 6 DO 7190 413 2 ! a(i):=0; 7200 414 3 ! FOR i:=0 TO 2 DO 7210 415 4 ! BEGIN 7220 416 5 ! ! a(7+i):=params(par+i); 7230 417 6 ! ! testout(z,"params ", params(par+i)); 7240 418 7 ! END; 7250 419 8 ! FOR i:= 10 TO 14 DO 7260 420 9 ! a(i) := 0; 7270 421 10 ! FOR i := 1 TO 14 DO 7280 422 11 ! testout(z,"a ", a(i)); 7290 423 12 ! packextnode := a; 7300 424 13 END; 7310 425 \f tsaoslst 81.06.10. 12.29. page 14 8010 426 PROCEDURE get_curbuftype; 8020 427 BEGIN 8030 428 1 ! IF cur^.size < minbufsize THEN 8040 429 2 ! curbuftype:= 0 ELSE 8050 430 3 ! IF cur^.size < messbufsize THEN 8060 431 4 ! curbuftype:= 1 ELSE 8070 432 5 ! IF cur^.size < maxbufsize THEN 8080 433 6 ! curbuftype:= 2 ELSE 8090 434 7 ! IF cur^.size < testbufsize THEN 8100 435 8 ! curbuftype:= 3 ELSE 8110 436 9 ! curbuftype:= 4; 8120 437 10 ! 8130 438 11 ! CASE curbuftype OF 8140 439 12 ! ! 0: curbufsize:= 0; 8150 440 13 ! ! 1: curbufsize:= minbufsize; 8160 441 14 ! ! 2: curbufsize:= messbufsize; 8170 442 15 ! ! 3: curbufsize:= maxbufsize; 8180 443 16 ! ! 4: curbufsize:= testbufsize; 8190 444 17 ! END; 8200 445 18 END; 8210 446 \f tsaoslst 81.06.10. 12.29. page 15 9010 447 PROCEDURE getinput; 9020 448 (* reads input from console into opinref^ *) 9030 449 BEGIN 9040 450 1 ! 9050 451 2 ! testmodeout ("getinput called ",0); 9060 452 3 ! 9070 453 4 ! REPEAT 9080 454 5 ! ! LOCK opinref AS opbuf: opbuftype DO 9090 455 6 ! ! opbuf.next:= firstindex; 9100 456 7 ! ! signal (opinref, opsem^); 9110 457 8 ! ! wait (opinref, wrsem); 9120 458 9 ! UNTIL opinref^.u2= ok (* 0*); 9130 459 10 ! 9140 460 11 ! LOCK opinref AS opbuf: opbuftype DO 9150 461 12 ! WITH opbuf DO 9160 462 13 ! BEGIN 9170 463 14 ! ! incharsleft:= next - first; 9180 464 15 ! ! next:= firstindex; 9190 465 16 ! END; 9200 466 17 ! command:= readchar; 9210 467 18 ! 9220 468 19 ! testmodeout ("command read: ",ord(command)); 9230 469 20 ! 9240 470 21 ! getparams; 9250 471 22 END (* getinput *); 9260 472 \f tsaoslst 81.06.10. 12.29. page 16 10010 473 PROCEDURE getparams; 10020 474 (* reads integer parameters *) 10030 475 VAR newbase: boolean; 10040 476 BEGIN 10050 477 1 ! testmodeout ("getparams called ",0); 10060 478 2 ! 10070 479 3 ! noofparams:= 0; 10080 480 4 ! 10090 481 5 ! IF command IN (."a","b","c","d","e","f","k","n","o","p","s","t","w","x".) 10100 482 6 ! THEN 10110 483 7 ! BEGIN (* change to decimal *) 10120 484 8 ! ! oldbase:= base; 10130 485 9 ! ! base:= 10; 10140 486 10 ! ! newbase:= true; 10150 487 11 ! END 10160 488 12 ! ELSE 10170 489 13 ! newbase:= false; 10180 490 14 ! 10190 491 15 ! REPEAT 10200 492 16 ! ! noofparams:= noofparams + 1; 10210 493 17 ! ! params(noofparams):= readinteger; 10220 494 18 ! ! testmodeout ("parameter read: ",params(noofparams)); 10230 495 19 ! ! IF (noofparams=1) THEN 10240 496 20 ! ! IF command IN (."f","p".) THEN 10250 497 21 ! ! BEGIN (* change to old *) 10260 498 22 ! ! ! base:= oldbase; 10270 499 23 ! ! ! newbase:= false; 10280 500 24 ! ! END; 10290 501 25 ! ! 10300 502 26 ! UNTIL (NOT readok) OR (noofparams= 50); 10310 503 27 ! 10320 504 28 ! noofparams:= noofparams - 1; 10330 505 29 ! 10340 506 30 ! IF newbase THEN 10350 507 31 ! (* change back to old base *) 10360 508 32 ! base:= oldbase; 10370 509 33 END (* getparams *); 10380 510 \f tsaoslst 81.06.10. 12.29. page 17 11010 511 PROCEDURE init_proc( 11020 512 index: integer; 11030 513 name, 11040 514 inc_name : alfa; 11050 515 p : processrec; 11060 516 size, 11070 517 prio : integer); 11080 518 VAR 11090 519 okl, 11100 520 ok : integer; 11110 521 BEGIN 11120 522 1 ! IF NOT nil(sh(index)) THEN 11130 523 2 ! outstring20(alreadyexists) ELSE 11140 524 3 ! BEGIN 11150 525 4 ! ! IF noofparams<2 THEN st:= size; 11160 526 5 ! ! okl:= link(name,p.processref^); 11170 527 6 ! ! ok:= create(inc_name,p,sh(index),st); 11180 528 7 ! ! IF ok=0 THEN 11190 529 8 ! ! start(sh(index),prio) ELSE 11200 530 9 ! ! BEGIN 11210 531 10 ! ! ! ok:= ok*100+okl; 11220 532 11 ! ! ! outstring20(createerror); 11230 533 12 ! ! ! outstring12(inc_name); 11240 534 13 ! ! ! outdecimal(ok,5); 11250 535 14 ! ! ! writenl; 11260 536 15 ! ! ! okl:= unlink(p.processref^); 11270 537 16 ! ! END; 11280 538 17 ! END; 11290 539 18 END; 11300 540 \f tsaoslst 81.06.10. 12.29. page 18 12010 541 PROCEDURE init_modul(index: integer); 12020 542 CONST 12030 543 n1 = "tssupervisor"; 12040 544 n2 = "at_handler "; 12050 545 n3 = "vc_handler "; 12060 546 n4 = "timout "; 12070 547 n5 = "atconnector "; 12080 548 n6 = "vcatc "; 12090 549 n7 = "tsconnector "; 12100 550 n8 = "atvagtsim "; 12110 551 n9 = "lam "; 12120 552 n10= "tap "; 12130 553 n11= "dcmodule "; 12140 554 n13= "ncsupervisor"; 12150 555 n14= "vcitc "; 12160 556 n15= "itvagtsim "; 12170 557 n16= "alc "; 12180 558 n17= "netconnector"; 12190 559 n18= "dtesimulator"; 12200 560 n19= "tapdte "; 12210 561 n20= "tapnet "; 12220 562 n21= "testoutput "; 12230 563 BEGIN 12240 564 1 ! CASE index OF 12250 565 2 ! ! 1: (* tssup *) 12260 566 3 ! ! init_proc(index, n1, n1, 12270 567 4 ! ! tssuper( opsem, sem), 12280 568 5 ! ! tss_size,tss_pri); 12290 569 6 ! ! 2: (* ath *) 12300 570 7 ! ! init_proc(index, n2, n2, 12310 571 8 ! ! at_handler( opsem, dc_addr, ts_addr, sem), 12320 572 9 ! ! ath_size,ath_pri); 12330 573 10 ! ! 3: (* vch *) 12340 574 11 ! ! init_proc(index, n3, n3, 12350 575 12 ! ! vc_handler( opsem, dc_addr, ts_addr, sem), 12360 576 13 ! ! vch_size,vch_pri); 12370 577 14 ! ! 4: (* timeout *) 12380 578 15 ! ! init_proc(index, n4, n4, 12390 579 16 ! ! timout( opsem, sem(timeout_sem_no), time_out_unit, 40), 12400 580 17 ! ! tim_size,tim_pri); 12410 581 18 ! ! 5: (* atc *) 12420 582 19 ! ! init_proc(index, n5, n5, 12430 583 20 ! ! atconnector( opsem, sem(atc_sem_no), sem(atc_sem_no+1), 12440 584 21 ! ! sem(ath_sem_no).s, sem(lam_sem_no).s, sem(timeout_sem_no).s, 12450 585 22 ! ! sem(com_pool).w, dc_addr, ts_addr, 257, 7), 12460 586 23 ! ! atc_size,atc_pri); \f tsaoslst 81.06.10. 12.29. page 19 12470 587 24 ! ! 6: (* vcatc *) 12480 588 25 ! ! init_proc(index, n6, n6, 12490 589 26 ! ! vcc( opsem, sem(vcc_sem_no), sem(vcc_sem_no+1), 12500 590 27 ! ! sem(vch_sem_no).s, sem(vas_sem_no).s, sem(timeout_sem_no).s, 12510 591 28 ! ! sem(com_pool).w, dc_addr, ts_addr, 63, 2), 12520 592 29 ! ! vac_size, vcc_pri); 12530 593 30 ! ! 7: (* tsc *) 12540 594 31 ! ! init_proc(index, n7, n7, 12550 595 32 ! ! tsconnector( opsem, sem(tssup_sem_no).s, 12560 596 33 ! ! sem(dc_sem_no).s, 12570 597 34 ! ! sem(nc_sem_no).s, sem(lam_sem_no).s, sem(timeout_sem_no).s, 12580 598 35 ! ! sem(com_pool).w, sem(netc_sem_no), 12590 599 36 ! ! sem(pax_sem_2), sem(pax_sem_1), 12600 600 37 ! ! sem(pax_ncp_sem), sem(dte_sem_no)), 12610 601 38 ! ! tsc_size, tsc_pri); 12620 602 39 ! ! 8: (* atvagtsim *) 12630 603 40 ! ! init_proc(index, n8, n8, 12640 604 41 ! ! vagt( opsem, sem), 12650 605 42 ! ! vas_size, vc_sim_pri); 12660 606 43 ! ! 9: (* lam *) 12670 607 44 ! ! init_proc(index, n9, n9, 12680 608 45 ! ! lam( opsem, pu, 5, sem(lam_sem_no)), 12690 609 46 ! ! lam_size, 1); 12700 610 47 ! ! 10: (* tap *) 12710 611 48 ! ! init_proc(index, n10, n10, 12720 612 49 ! ! tap( opsem, sem(tap_sem_no)), 12730 613 50 ! ! 512, 0); 12740 614 51 ! ! 11: (* dc *) 12750 615 52 ! ! init_proc(index, n11, n11, 12760 616 53 ! ! dcmodule( opsem, sem(lam_sem_no).s, sem(netc_sem_no).s, 12770 617 54 ! ! sem(com_pool).w, sem(timeout_sem_no).s, 12780 618 55 ! ! sem(dc_sem_no), sem(dc_int1), sem(dc_int2), sem(dc_int3)), 12790 619 56 ! ! dc_sim_size, dc_sim_pri); 12800 620 57 ! ! 12: (* tap01 *) 12810 621 58 ! ! init_proc(index, n10, "tap01 ", 12820 622 59 ! ! tap ( opsem, sem(tap1_sem_no)), 12830 623 60 ! ! 512, 0); 12840 624 61 ! ! 13: (* ncsupervisor *) 12850 625 62 ! ! init_proc(index, n13, n13, 12860 626 63 ! ! ncsup( opsem, sem(nc_sem_no), sem(ncsup_int1), sem(ncsup_int2), 12870 627 64 ! ! sem(netc_sem_no).s, sem(timeout_sem_no).s), 12880 628 65 ! ! nc_sup_size, tss_pri); 12890 629 66 ! ! 14: (* vcitc *) 12900 630 67 ! ! init_proc(index, n14, n14, 12910 631 68 ! ! vcc( opsem, sem(vcc_sem_no+2), sem(vcc_sem_no+3), 12920 632 69 ! ! sem(vch_sem_no).s, sem(vis_sem_no).s, sem(timeout_sem_no).s, \f tsaoslst 81.06.10. 12.29. page 20 12930 633 70 ! ! sem(com_pool).w, dc_addr, ts_addr, 64, 3), 12940 634 71 ! ! vic_size, vcc_pri); 12950 635 72 ! ! 15: (* itvagtsim *) 12960 636 73 ! ! init_proc(index, n15, n15, 12970 637 74 ! ! vagt( opsem, sem), 12980 638 75 ! ! vis_size, vc_sim_pri); 12990 639 76 ! ! 17: (* netconnector *) 13000 640 77 ! ! init_proc ( index, n17, n17, 13010 641 78 ! ! netconnector( glob_timeout, spool_test_sem, 13020 642 79 ! ! sem( pax_pool),sem( netc_sem_no), netc_locals, 13030 643 80 ! ! sem( com_pool).w, 13040 644 81 ! ! sem( timeout_sem_no).s, sem( dte_sem_no).s), 13050 645 82 ! ! netc_size, netc_pri); 13060 646 83 ! ! 13070 647 84 ! ! 18: (* dtesimulator *) 13080 648 85 ! ! init_proc ( index, n18, n18, 13090 649 86 ! ! dtesimulator ( spool_test_sem, sem( pax_pool), sem(dte_sem_no), 13100 650 87 ! ! sem( netc_sem_no).s, 13110 651 88 ! ! sem( pax_sem_1).s, sem( pax_sem_2).s, 13120 652 89 ! ! dte_addr), 13130 653 90 ! ! netc_size, netc_pri); 13140 654 91 ! ! 19: (* tapdte *) 13150 655 92 ! ! init_proc ( index, n19, n19, 13160 656 93 ! ! tapdte ( opsem, sem(tap_dte_sem_no)), 13170 657 94 ! ! 512,0); 13180 658 95 ! ! 20: (* tapnet *) 13190 659 96 ! ! init_proc ( index, n20, n20, 13200 660 97 ! ! tapnet ( opsem, sem(tap_net_sem_no)), 13210 661 98 ! ! 512,0); 13220 662 99 ! ! 13230 663 100 ! ! 21: (* testoutput *) 13240 664 101 ! ! init_proc ( index, n21, n21, 13250 665 102 ! ! testoutput ( spool_test_sem, opsem), 13260 666 103 ! ! 512,0); 13270 667 104 ! ! 13280 668 105 ! ! 13290 669 106 ! ! 13300 670 107 ! ! OTHERWISE 13310 671 108 ! ! BEGIN 13320 672 109 ! ! ! outdecimal(index,4); 13330 673 110 ! ! ! outstring10(illegalno); 13340 674 111 ! ! END; 13350 675 112 ! END (* case *) 13360 676 113 END; 13370 677 \f tsaoslst 81.06.10. 12.29. page 21 14010 678 FUNCTION moduleready(moduleno: integer): boolean; 14020 679 (* tests if an incarnation of the module is existing 14030 680 and writes an errormessage if so *) 14040 681 BEGIN 14050 682 1 ! IF nil( sh( moduleno) ) THEN moduleready:=true 14060 683 2 ! ELSE 14070 684 3 ! BEGIN (* module is already existing *) 14080 685 4 ! ! outdecimal(moduleno,4); 14090 686 5 ! ! outstring20(alreadyexists); 14100 687 6 ! ! moduleready:=false; 14110 688 7 ! END; 14120 689 8 END (* module ready *); 14130 690 14140 691 14150 692 \f tsaoslst 81.06.10. 12.29. page 22 15010 693 PROCEDURE outchar(ch:char); 15020 694 (* writes ch into the output buffer *) 15030 695 BEGIN 15040 696 1 ! LOCK opoutref AS opbuf: opbuftype DO 15050 697 2 ! WITH opbuf DO 15060 698 3 ! BEGIN 15070 699 4 ! ! last:= last + 1; 15080 700 5 ! ! data (last):= ch; 15090 701 6 ! END; 15100 702 7 END (* outchar *); 15110 703 \f tsaoslst 81.06.10. 12.29. page 23 16010 704 PROCEDURE outdecimal (int, positions: integer); 16020 705 (* writes the integer "int" decimally into opbuf starting 16030 706 at "last", which is updated accordingly *) 16040 707 16050 708 BEGIN 16060 709 1 ! oldbase:= base; 16070 710 2 ! base:= 10; 16080 711 3 ! outinteger(int,positions); 16090 712 4 ! base:= oldbase; 16100 713 5 END (* outdecimal *); 16110 714 \f tsaoslst 81.06.10. 12.29. page 24 17010 715 PROCEDURE outinteger(int,positions:integer); 17020 716 (* writes the integer "int" into opbuf starting at 17030 717 "last", which is updated accordingly *) 17040 718 CONST 17050 719 maxpos = 20; (* max number of positions in layout *) 17060 720 17070 721 VAR 17080 722 bits: ARRAY(0..15) OF bit; 17090 723 digits:ARRAY(1..maxpos) OF char; 17100 724 curdigit, (* current pos. in digits-array to be filled out *) 17110 725 curpos, (* cur. pos. in the nunber being computed *) 17120 726 h, i, 17130 727 m, newm, 17140 728 noofdig, (* no. of digits in the resulting number *) 17150 729 noofpos, (* no. of pos. from bits-array for one number *) 17160 730 res, (* resulting number *) 17170 731 used: integer; 17180 732 17190 733 negative, zeroes: boolean; 17200 734 17210 735 BEGIN 17220 736 1 ! used:= 1; 17230 737 2 ! 17240 738 3 ! (* first we initialise the digits array *) 17250 739 4 ! FOR i:=1 TO maxpos DO digits(i):=sp; 17260 740 5 ! 17270 741 6 ! IF base= 10 THEN 17280 742 7 ! BEGIN 17290 743 8 ! ! i:=maxpos; 17300 744 9 ! ! 17310 745 10 ! ! negative:= int<0; 17320 746 11 ! ! 17330 747 12 ! ! REPEAT 17340 748 13 ! ! ! (* now we unpack the digits backwards and put them 17350 749 14 ! ! ! into the digits array *) 17360 750 15 ! ! ! 17370 751 16 ! ! ! digits(i):= chr (abs(int MOD base) + ord("0")); 17380 752 17 ! ! ! int:=int DIV base; 17390 753 18 ! ! ! i:=i-1; 17400 754 19 ! ! UNTIL (i=1) OR (int=0); 17410 755 20 ! ! 17420 756 21 ! ! IF negative THEN 17430 757 22 ! ! BEGIN 17440 758 23 ! ! ! digits(i):="-"; 17450 759 24 ! ! ! i:=i-1; 17460 760 25 ! ! END; \f tsaoslst 81.06.10. 12.29. page 25 17470 761 26 ! ! 17480 762 27 ! ! used:=maxpos-i; 17490 763 28 ! ! 17500 764 29 ! ! IF int <> 0 THEN digits(1):= "*"; 17510 765 30 ! END (* if base= 10 *) 17520 766 31 ! 17530 767 32 ! ELSE (* base= 2, 8, or 16 *) 17540 768 33 ! BEGIN 17550 769 34 ! ! (* initialise bits-array *) 17560 770 35 ! ! IF int>=0 THEN 17570 771 36 ! ! BEGIN 17580 772 37 ! ! ! FOR i:= 15 DOWNTO 1 DO 17590 773 38 ! ! ! BEGIN 17600 774 39 ! ! ! ! bits(i):= int MOD 2; 17610 775 40 ! ! ! ! int:= int DIV 2; 17620 776 41 ! ! ! END; 17630 777 42 ! ! ! bits(0):= int MOD 2; 17640 778 43 ! ! ! int:= int DIV 2; 17650 779 44 ! ! END 17660 780 45 ! ! ELSE 17670 781 46 ! ! (* int<0 *) 17680 782 47 ! ! BEGIN 17690 783 48 ! ! ! (* subtract abs(int) from 1111111...1 *) 17700 784 49 ! ! ! FOR i:= 15 DOWNTO 1 DO 17710 785 50 ! ! ! BEGIN 17720 786 51 ! ! ! ! bits(i):= 1+(int MOD 2); 17730 787 52 ! ! ! ! int:= int DIV 2; 17740 788 53 ! ! ! END; 17750 789 54 ! ! ! bits(0):= 1+(int MOD 2); 17760 790 55 ! ! ! int:= int DIV 2; 17770 791 56 ! ! ! 17780 792 57 ! ! ! (* add 1 *) 17790 793 58 ! ! ! m:= 1; 17800 794 59 ! ! ! FOR i:= 15 DOWNTO 1 DO 17810 795 60 ! ! ! BEGIN 17820 796 61 ! ! ! ! newm:= (bits(i)+m) DIV 2; 17830 797 62 ! ! ! ! bits(i):= (bits(i)+m) MOD 2; 17840 798 63 ! ! ! ! m:= newm; 17850 799 64 ! ! ! END; 17860 800 65 ! ! ! newm:= (bits(0)+m) DIV 2; 17870 801 66 ! ! ! bits(0):= (bits(0)+m) MOD 2; 17880 802 67 ! ! ! m:= newm; 17890 803 68 ! ! END (*int<0*); 17900 804 69 ! ! 17910 805 70 ! ! (* compute digits-array *) 17920 806 71 ! ! CASE base OF \f tsaoslst 81.06.10. 12.29. page 26 17930 807 72 ! ! ! 2: BEGIN 17940 808 73 ! ! ! ! noofpos:= 1; 17950 809 74 ! ! ! ! noofdig:= 16; 17960 810 75 ! ! ! END; 17970 811 76 ! ! ! 17980 812 77 ! ! ! 8: BEGIN 17990 813 78 ! ! ! ! noofpos:= 3; 18000 814 79 ! ! ! ! noofdig:= 6; 18010 815 80 ! ! ! END; 18020 816 81 ! ! ! 18030 817 82 ! ! ! 16: BEGIN 18040 818 83 ! ! ! ! noofpos:= 4; 18050 819 84 ! ! ! ! noofdig:= 4; 18060 820 85 ! ! ! END; 18070 821 86 ! ! END (* case *); 18080 822 87 ! ! 18090 823 88 ! ! curdigit:= maxpos -noofdig +1; 18100 824 89 ! ! 18110 825 90 ! ! IF base= 8 18120 826 91 ! ! THEN curpos:= 3 18130 827 92 ! ! ELSE curpos:= 1; 18140 828 93 ! ! res:= 0; 18150 829 94 ! ! zeroes:= true; 18160 830 95 ! ! 18170 831 96 ! ! FOR h:= 0 TO 15 DO 18180 832 97 ! ! BEGIN 18190 833 98 ! ! ! res:= res*2 + bits(h); 18200 834 99 ! ! ! IF curpos= noofpos THEN 18210 835 100 ! ! ! BEGIN (* time to fill out a pos. in digits-array *) 18220 836 101 ! ! ! ! IF zeroes AND (res=0) THEN 18230 837 102 ! ! ! ! BEGIN 18240 838 103 ! ! ! ! ! IF curdigit=maxpos 18250 839 104 ! ! ! ! ! THEN digits(curdigit):= "0" 18260 840 105 ! ! ! ! ! (*else digits (curdigit):= " "*); 18270 841 106 ! ! ! ! END 18280 842 107 ! ! ! ! ELSE 18290 843 108 ! ! ! ! IF res<=9 18300 844 109 ! ! ! ! THEN digits(curdigit):= chr (res + ord ("0")) 18310 845 110 ! ! ! ! ELSE digits(curdigit):= chr (res + ord ("7")); 18320 846 111 ! ! ! ! IF (res<>0) AND zeroes THEN 18330 847 112 ! ! ! ! BEGIN 18340 848 113 ! ! ! ! ! zeroes:= false; 18350 849 114 ! ! ! ! ! used:= maxpos - curdigit + 1; 18360 850 115 ! ! ! ! END; 18370 851 116 ! ! ! ! res:= 0; 18380 852 117 ! ! ! ! curpos:= 0; \f tsaoslst 81.06.10. 12.29. page 27 18390 853 118 ! ! ! ! curdigit:= curdigit + 1; 18400 854 119 ! ! ! END; 18410 855 120 ! ! ! curpos:= curpos + 1; 18420 856 121 ! ! END; 18430 857 122 ! END (* base= 2, 8, of 16 *); 18440 858 123 ! 18450 859 124 ! IF positions<used THEN outchar(sp); 18460 860 125 ! 18470 861 126 ! IF (NOT (positions IN (. 1 .. maxpos .)) ) 18480 862 127 ! OR (positions < used) THEN 18490 863 128 ! positions:=used; 18500 864 129 ! 18510 865 130 ! FOR i:=maxpos+1-positions TO maxpos DO 18520 866 131 ! BEGIN 18530 867 132 ! ! outchar( digits(i) ); 18540 868 133 ! END 18550 869 134 ! 18560 870 135 END (* out integer *); 18570 871 18580 872 18590 873 \f tsaoslst 81.06.10. 12.29. page 28 19010 874 PROCEDURE outstring10(text: alfa10); 19020 875 (* writes the text into opbuf starting at outputpointer 19030 876 which is updated accordingly *) 19040 877 VAR 19050 878 i: integer; 19060 879 BEGIN 19070 880 1 ! FOR i:=1 TO 10 DO 19080 881 2 ! outchar( text(i) ); 19090 882 3 END (* out string 10 *); 19100 883 19110 884 PROCEDURE outstring12(text: alfa); 19120 885 VAR 19130 886 i: integer; 19140 887 BEGIN 19150 888 1 ! FOR i:=1 TO 12 DO 19160 889 2 ! outchar(text(i)); 19170 890 3 END; 19180 891 \f tsaoslst 81.06.10. 12.29. page 29 20010 892 PROCEDURE outstring20(text: alfa20); 20020 893 (* analogue to outstring10 *) 20030 894 VAR 20040 895 i: integer; 20050 896 BEGIN 20060 897 1 ! FOR i:=1 TO 20 DO 20070 898 2 ! outchar( text(i) ); 20080 899 3 END (* out string 20 *); 20090 900 20100 901 20110 902 20120 903 \f tsaoslst 81.06.10. 12.29. page 30 21010 904 FUNCTION readchar: char; 21020 905 (* reads the next char from opinref^. 21030 906 next is incremented and charsleft is 21040 907 decremented *) 21050 908 BEGIN 21060 909 1 ! LOCK opinref AS opbuf: opbuftype DO 21070 910 2 ! WITH opbuf DO 21080 911 3 ! BEGIN 21090 912 4 ! ! readchar:= data(next); 21100 913 5 ! ! next:= next + 1; 21110 914 6 ! END; 21120 915 7 ! incharsleft:=incharsleft-1; 21130 916 8 END (* readchar *); 21140 917 21150 918 21160 919 21170 920 \f tsaoslst 81.06.10. 12.29. page 31 22010 921 FUNCTION readinteger : integer; 22020 922 (* reads the next integer from opinref^ starting 22030 923 at "inputpoint". upon return "inputpoint" will be 22040 924 the position just after the last char read. 22050 925 22060 926 the global boolean "readok" will be true if an 22070 927 integer was read and false otherwise *) 22080 928 22090 929 CONST 22100 930 digits = (. "0" .. "9" .); 22110 931 hexdigits = (. "a" .. "f" .); 22120 932 signs = (. "+" , "-" .); 22130 933 22140 934 VAR 22150 935 negative, digit: boolean; 22160 936 22170 937 curdigit, noofdigit, 22180 938 result: integer; 22190 939 22200 940 ch,lastchar: char; 22210 941 22220 942 22230 943 BEGIN 22240 944 1 ! readok:=false; 22250 945 2 ! lastchar:=nul; 22260 946 3 ! ch:=nul; 22270 947 4 ! digit:=false; 22280 948 5 ! 22290 949 6 ! (* now skip until a digit is encountered *) 22300 950 7 ! 22310 951 8 ! IF incharsleft > 0 THEN 22320 952 9 ! REPEAT 22330 953 10 ! ! lastchar:=ch; 22340 954 11 ! ! ch:=readchar; 22350 955 12 ! ! digit:= (ch IN digits) OR 22360 956 13 ! ! ((base= 16) AND (ch IN hexdigits)) 22370 957 14 ! UNTIL digit OR (incharsleft<=0); 22380 958 15 ! 22390 959 16 ! result:=0; 22400 960 17 ! IF base= 10 THEN 22410 961 18 ! negative:= lastchar= "-" 22420 962 19 ! ELSE negative:= false; 22430 963 20 ! 22440 964 21 ! 22450 965 22 ! IF digit THEN 22460 966 23 ! BEGIN \f tsaoslst 81.06.10. 12.29. page 32 22470 967 24 ! ! IF ch IN digits 22480 968 25 ! ! THEN result:= ord (ch) - ord ("0") 22490 969 26 ! ! ELSE result:= ord (ch) - 87 (*ord ("W")*); 22500 970 27 ! ! readok:=true; 22510 971 28 ! END; 22520 972 29 ! 22530 973 30 ! IF base=10 THEN 22540 974 31 ! BEGIN 22550 975 32 ! ! WHILE digit AND (incharsleft>0) DO 22560 976 33 ! ! BEGIN (* read the digits *) 22570 977 34 ! ! ! ch:= readchar; 22580 978 35 ! ! ! 22590 979 36 ! ! ! digit:= (ch IN digits) OR 22600 980 37 ! ! ! ((base= 16) AND (ch IN hexdigits)); 22610 981 38 ! ! ! IF digit THEN 22620 982 39 ! ! ! BEGIN 22630 983 40 ! ! ! ! IF negative AND (result=3276) AND (ch="8") 22640 984 41 ! ! ! ! THEN BEGIN 22650 985 42 ! ! ! ! ! result:= -32768; 22660 986 43 ! ! ! ! ! negative:= false; 22670 987 44 ! ! ! ! END 22680 988 45 ! ! ! ! ELSE 22690 989 46 ! ! ! ! BEGIN 22700 990 47 ! ! ! ! ! IF ch IN digits 22710 991 48 ! ! ! ! ! THEN result:= result*base+(ord(ch)-ord("0")) 22720 992 49 ! ! ! ! ! ELSE result:= result*base+(ord(ch)-87(*ord("W")*)); 22730 993 50 ! ! ! ! END; 22740 994 51 ! ! ! END; 22750 995 52 ! ! END (* while *); 22760 996 53 ! ! 22770 997 54 ! ! IF negative THEN result:= - result; 22780 998 55 ! ! 22790 999 56 ! END (* base= 10 *) 22800 1000 57 ! 22810 1001 58 ! ELSE 22820 1002 59 ! BEGIN (* base= 2, 8, or 16 *) 22830 1003 60 ! ! 22840 1004 61 ! ! CASE base OF 22850 1005 62 ! ! ! 2:BEGIN 22860 1006 63 ! ! ! ! IF ch="1" THEN negative:= true; 22870 1007 64 ! ! ! ! noofdigit:= 16; 22880 1008 65 ! ! ! END; 22890 1009 66 ! ! ! 22900 1010 67 ! ! ! 8: BEGIN 22910 1011 68 ! ! ! ! IF ch="1" THEN negative:= true; 22920 1012 69 ! ! ! ! noofdigit:= 6; \f tsaoslst 81.06.10. 12.29. page 33 22930 1013 70 ! ! ! END; 22940 1014 71 ! ! ! 22950 1015 72 ! ! ! 16: BEGIN 22960 1016 73 ! ! ! ! IF ch>="8" THEN negative:= true; 22970 1017 74 ! ! ! ! noofdigit:= 4; 22980 1018 75 ! ! ! END; 22990 1019 76 ! ! END (*case*); 23000 1020 77 ! ! curdigit:= 1; 23010 1021 78 ! ! 23020 1022 79 ! ! WHILE digit AND (incharsleft>0) DO 23030 1023 80 ! ! BEGIN 23040 1024 81 ! ! ! ch:= readchar; 23050 1025 82 ! ! ! digit:= (ch IN digits) OR 23060 1026 83 ! ! ! ((base=16) AND (ch IN hexdigits)); 23070 1027 84 ! ! ! IF digit 23080 1028 85 ! ! ! THEN BEGIN 23090 1029 86 ! ! ! ! curdigit:= curdigit+1; 23100 1030 87 ! ! ! ! IF (curdigit=noofdigit) AND negative THEN 23110 1031 88 ! ! ! ! BEGIN 23120 1032 89 ! ! ! ! ! CASE base OF 23130 1033 90 ! ! ! ! ! ! 2: result:= result - 16384 (*2^14*); 23140 1034 91 ! ! ! ! ! ! 8: result:= result - 4096 (*2^12*); 23150 1035 92 ! ! ! ! ! ! 16:result:= result - 2048 (*2^11*); 23160 1036 93 ! ! ! ! ! END (*case*) 23170 1037 94 ! ! ! ! END; 23180 1038 95 ! ! ! ! IF ch IN digits THEN 23190 1039 96 ! ! ! ! result:= result*base + (ord(ch)-ord("0")) 23200 1040 97 ! ! ! ! ELSE 23210 1041 98 ! ! ! ! result:= result*base + (ord(ch)-87 (*ord("W")*)); 23220 1042 99 ! ! ! ! IF (curdigit=noofdigit) AND negative 23230 1043 100 ! ! ! ! THEN BEGIN 23240 1044 101 ! ! ! ! ! IF result=0 23250 1045 102 ! ! ! ! ! THEN result:= -32768 23260 1046 103 ! ! ! ! ! ELSE result:= -((32767-result)+1); 23270 1047 104 ! ! ! ! END; 23280 1048 105 ! ! ! END (*if digit*); 23290 1049 106 ! ! END (*while digit*); 23300 1050 107 ! END (* base= 2, 8, or 16 *); 23310 1051 108 ! IF incharsleft > 0 THEN 23320 1052 109 ! (* we read one char too many - spit it out *) 23330 1053 110 ! repeatchar; 23340 1054 111 ! 23350 1055 112 ! readinteger:=result; 23360 1056 113 END (* read integer *); 23370 1057 \f tsaoslst 81.06.10. 12.29. page 34 24010 1058 PROCEDURE repeatchar; 24020 1059 BEGIN 24030 1060 1 ! LOCK opinref AS opbuf: opbuftype DO 24040 1061 2 ! opbuf.next:= opbuf.next - 1; 24050 1062 3 ! incharsleft:= incharsleft + 1; 24060 1063 4 END; 24070 1064 \f tsaoslst 81.06.10. 12.29. page 35 25010 1065 FUNCTION testinterval (i,first,last: integer): boolean; 25020 1066 (* true if first<=i<=last *) 25030 1067 BEGIN 25040 1068 1 ! IF (i<first) OR (i>last) THEN 25050 1069 2 ! BEGIN 25060 1070 3 ! ! outstring10(illegalno); 25070 1071 4 ! ! outinteger(i,4); 25080 1072 5 ! ! writenl; 25090 1073 6 ! ! testinterval:= false 25100 1074 7 ! END 25110 1075 8 ! ELSE 25120 1076 9 ! testinterval:= true; 25130 1077 10 END; 25140 1078 \f tsaoslst 81.06.10. 12.29. page 36 26010 1079 PROCEDURE testmodeout (text: alfa20; i: integer); 26020 1080 BEGIN 26030 1081 1 ! IF testmode THEN 26040 1082 2 ! BEGIN 26050 1083 3 ! ! outstring20 (text); 26060 1084 4 ! ! outinteger (i, 4); 26070 1085 5 ! ! writenl; 26080 1086 6 ! END; 26090 1087 7 END (* testout *); 26100 1088 \f tsaoslst 81.06.10. 12.29. page 37 27010 1089 PROCEDURE testsem(i: integer; VAR t_sem : semaphore); 27020 1090 (* test the semaphore t_sem, and 27030 1091 writes its status on the console if it is 27040 1092 non-passive *) 27050 1093 VAR more: boolean; 27060 1094 BEGIN 27070 1095 1 ! 27080 1096 2 ! IF i>0 THEN 27090 1097 3 ! BEGIN 27100 1098 4 ! ! ap.a := sem(i).s; 27110 1099 5 ! ! bp.a := sem(i).w; 27120 1100 6 ! END 27130 1101 7 ! ELSE ap:=bp; 27140 1102 8 ! IF open(t_sem) THEN 27150 1103 9 ! BEGIN (* user semaphore no. i is open *) 27160 1104 10 ! ! IF ap=bp THEN 27170 1105 11 ! ! outchar(" ") ELSE outchar("^"); 27180 1106 12 ! ! outdecimal(i,3); 27190 1107 13 ! ! outchar(":"); 27200 1108 14 ! ! more:= true; 27210 1109 15 ! ! 27220 1110 16 ! ! (* now count the no. of buffers on this semaphore *) 27230 1111 17 ! ! j:=0; (* j is the counter *) 27240 1112 18 ! ! WHILE more DO 27250 1113 19 ! ! BEGIN 27260 1114 20 ! ! ! sensesem(countref, t_sem); 27270 1115 21 ! ! ! IF nil(countref) THEN 27280 1116 22 ! ! ! more:= false 27290 1117 23 ! ! ! ELSE 27300 1118 24 ! ! ! BEGIN 27310 1119 25 ! ! ! ! signal(countref,countsem); 27320 1120 26 ! ! ! ! j:=j+1; 27330 1121 27 ! ! ! END 27340 1122 28 ! ! END; 27350 1123 29 ! ! 27360 1124 30 ! ! outdecimal(j,3); 27370 1125 31 ! ! WHILE open(countsem) DO 27380 1126 32 ! ! BEGIN (* return the buffers to sem(i) *) 27390 1127 33 ! ! ! wait(countref,countsem); 27400 1128 34 ! ! ! signal(countref,t_sem); 27410 1129 35 ! ! END; 27420 1130 36 ! ! 27430 1131 37 ! ! writenl; 27440 1132 38 ! END (* open *) 27450 1133 39 ! ELSE 27460 1134 40 ! IF locked( t_sem) THEN \f tsaoslst 81.06.10. 12.29. page 38 27470 1135 41 ! BEGIN (* user semaphore no. i is locked *) 27480 1136 42 ! ! IF ap=bp THEN 27490 1137 43 ! ! outchar(" ") ELSE outchar("^"); 27500 1138 44 ! ! outdecimal(i,3); 27510 1139 45 ! ! outchar(":"); 27520 1140 46 ! ! outstring10(" locked "); 27530 1141 47 ! ! writenl; 27540 1142 48 ! END; 27550 1143 49 END (* testsem *); 27560 1144 27570 1145 27580 1146 27590 1147 27600 1148 \f tsaoslst 81.06.10. 12.29. page 39 28010 1149 PROCEDURE writenl; 28020 1150 (* prepares opbuf for output to the operator and signals 28030 1151 it to operator module *) 28040 1152 BEGIN 28050 1153 1 ! IF NOT nil(opoutref) THEN 28060 1154 2 ! BEGIN 28070 1155 3 ! ! outchar(nl); 28080 1156 4 ! ! signal(opoutref, opsem^) 28090 1157 5 ! END; 28100 1158 6 ! wait(opoutref, wsem); 28110 1159 7 ! LOCK opoutref AS opbuf: opbuftype DO 28120 1160 8 ! opbuf.last:= firstindex; 28130 1161 9 END (* writenl *); 28140 1162 28150 1163 \f tsaoslst 81.06.10. 12.29. page 40 29010 1164 29020 1165 29030 1166 29040 1167 (**************************************** 29050 1168 * * 29060 1169 * m a i n p r o g r a m * 29070 1170 * * 29080 1171 ****************************************) 29090 1172 29100 1173 29110 1174 29120 1175 29130 1176 29140 1177 29150 1178 BEGIN 29160 1179 1 ! 29170 1180 2 ! opsem:= semvector(operatorsem); 29180 1181 3 ! spool_test_sem := ref( spool_sem); 29190 1182 4 ! testmode:= false; 29200 1183 5 ! testopen (z,own.incname,opsem); 29210 1184 6 ! testout(z,version,al_env_version); 29220 1185 7 ! 29230 1186 8 ! readram(node_no,10); 29240 1187 9 ! node_no := node_no MOD 16; 29250 1188 10 ! dte_addr.net_addr := 0; 29260 1189 11 ! dte_addr.reg_addr := 0; 29270 1190 12 ! dte_addr.node_addr := node_no; 29280 1191 13 ! dte_addr.ext_addr := 3; 29290 1192 14 ! 29300 1193 15 ! 29310 1194 16 ! testout(z,"ext-pax-addr", 29320 1195 17 ! paxnet_config( node_no,3)*1000 + paxnet_config( node_no,6)*100 + 29330 1196 18 ! paxnet_config( node_no,9)*10 + paxnet_config( node_no,14) ); 29340 1197 19 ! 29350 1198 20 ! (* initialise pointers *) 29360 1199 21 ! FOR i:=1 TO ts_sem_total DO 29370 1200 22 ! BEGIN 29380 1201 23 ! ! sem(i).s:= ref(ts_sem(i)); 29390 1202 24 ! ! sem(i).w:= sem(i).s; 29400 1203 25 ! END; 29410 1204 26 ! 29420 1205 27 ! (* initialize pointers to eva semaphores *) 29430 1206 28 ! sem(pax_sem_2).s:=ref(evavector(px_urec1)); 29440 1207 29 ! sem(pax_sem_2).w:=sem(pax_sem_2).s; 29450 1208 30 ! sem(pax_sem_1).s:=ref(evavector(px_utrm1)); 29460 1209 31 ! sem(pax_sem_1).w:=sem(pax_sem_1).s; \f tsaoslst 81.06.10. 12.29. page 41 29470 1210 32 ! sem(pax_sem_3).s := ref(evavector(px_urec2)); 29480 1211 33 ! sem(pax_sem_3).w := sem(pax_sem_3).s; 29490 1212 34 ! sem(pax_sem_4).s := ref(evavector(px_utrm2)); 29500 1213 35 ! sem(pax_sem_4).w := sem(pax_sem_4).s; 29510 1214 36 ! sem(pax_ncp_sem).s:=ref(evavector(px_ncp)); 29520 1215 37 ! sem(pax_ncp_sem).w:=sem(pax_ncp_sem).s; 29530 1216 38 ! sem(lam_sem_no).s := ref( evavector(al_lam1)); 29540 1217 39 ! sem(lam_sem_no).w := sem( lam_sem_no).s; 29550 1218 40 ! 29560 1219 41 ! (* initialize local semaphores for netconnector *) 29570 1220 42 ! 29580 1221 43 ! netc_locals(1):=sem(tssup_sem_no).s; 29590 1222 44 ! netc_locals(2):=sem(nc_sem_no).s; 29600 1223 45 ! 29610 1224 46 ! (* initialise buffers *) 29620 1225 47 ! FOR i:= 1 TO 2 DO 29630 1226 48 ! BEGIN 29640 1227 49 ! ! alloc (opoutref, opbufpool, wsem); 29650 1228 50 ! ! opoutref^.u1:=2; (* write *) 29660 1229 51 ! ! LOCK opoutref AS opbuf: opbuftype DO 29670 1230 52 ! ! WITH opbuf DO 29680 1231 53 ! ! BEGIN 29690 1232 54 ! ! ! first:= firstindex; 29700 1233 55 ! ! ! name:= "alarm "; 29710 1234 56 ! ! ! data(firstindex):= "!"; 29720 1235 57 ! ! END; 29730 1236 58 ! ! return (opoutref); 29740 1237 59 ! END; 29750 1238 60 ! writenl; 29760 1239 61 ! 29770 1240 62 ! alloc(opinref, opbufpool, wrsem); 29780 1241 63 ! 29790 1242 64 ! opinref^.u1:=1; (* read *) 29800 1243 65 ! 29810 1244 66 ! LOCK opinref AS opbuf: opbuftype DO 29820 1245 67 ! WITH opbuf DO 29830 1246 68 ! BEGIN 29840 1247 69 ! ! first:= firstindex; 29850 1248 70 ! ! last:= lastindex; 29860 1249 71 ! ! name:= "alarm "; 29870 1250 72 ! END; 29880 1251 73 ! 29890 1252 74 ! (*------- allocate all listenbuffers ---*) 29900 1253 75 ! FOR i:= 1 TO no_listen DO 29910 1254 76 ! BEGIN 29920 1255 77 ! ! alloc(cur,messbufpool,sem(com_pool).s^); \f tsaoslst 81.06.10. 12.29. page 42 29930 1256 78 ! ! return(cur); 29940 1257 79 ! END; 29950 1258 80 ! 29960 1259 81 ! (*------- allocate all paxnetbuffers ---*) 29970 1260 82 ! FOR i:=1 TO no_pax_bufs DO 29980 1261 83 ! BEGIN 29990 1262 84 ! ! alloc( cur, paxbufpool, sem(dte_sem_no).s^); 30000 1263 85 ! ! signal( cur, sem( pax_pool).s^); 30010 1264 86 ! END; 30020 1265 87 ! 30030 1266 88 ! st:= 1024; 30040 1267 89 ! base:= 10; 30050 1268 90 ! firstword:= 1; 30060 1269 91 ! lastword:= 10; 30070 1270 92 ! 30080 1271 93 ! setoflowmask(true); 30090 1272 94 ! 30100 1273 95 ! noofparams:= 0; 30110 1274 96 ! (* insert auto create with edit here *) 30120 1275 97 ! 30130 1276 98 ! REPEAT 30140 1277 99 ! ! (* read a line of input from the operator and execute it *) 30150 1278 100 ! ! 30160 1279 101 ! ! getinput; 30170 1280 102 ! ! 30180 1281 103 ! ! CASE command OF 30190 1282 104 ! ! ! 30200 1283 105 ! ! ! ";": (* comment command *) 30210 1284 106 ! ! ! BEGIN 30220 1285 107 ! ! ! END; 30230 1286 108 ! ! ! \f tsaoslst 81.06.10. 12.29. page 43 31010 1287 109 ! ! ! "a": (* alloc *) 31020 1288 110 ! ! ! (* a buffer is allocated from the messbufpool to the current 31030 1289 111 ! ! ! reference "cur". 31040 1290 112 ! ! ! 1st param is the answersem *) 31050 1291 113 ! ! ! BEGIN 31060 1292 114 ! ! ! ! semno:= params(1); 31070 1293 115 ! ! ! ! 31080 1294 116 ! ! ! ! IF noofparams >= 1 THEN 31090 1295 117 ! ! ! ! IF nil(cur) THEN 31100 1296 118 ! ! ! ! IF ((semno>0) AND (semno <= noofsemaphores)) 31110 1297 119 ! ! ! ! OR ((semno<0) AND (semno >= -applsem_max)) THEN 31120 1298 120 ! ! ! ! BEGIN 31130 1299 121 ! ! ! ! ! IF semno > 0 THEN 31140 1300 122 ! ! ! ! ! alloc (cur, testbufpool, ts_sem(semno)) 31150 1301 123 ! ! ! ! ! ELSE 31160 1302 124 ! ! ! ! ! alloc (cur, testbufpool, evavector(-semno)); 31170 1303 125 ! ! ! ! ! WITH cur^ DO 31180 1304 126 ! ! ! ! ! BEGIN 31190 1305 127 ! ! ! ! ! ! u1:= 0; 31200 1306 128 ! ! ! ! ! ! u2:= 0; 31210 1307 129 ! ! ! ! ! ! u3:= 0; 31220 1308 130 ! ! ! ! ! ! u4:= 0; 31230 1309 131 ! ! ! ! ! END; 31240 1310 132 ! ! ! ! ! get_curbuftype; 31250 1311 133 ! ! ! ! ! outstring10(" bufsize "); 31260 1312 134 ! ! ! ! ! outinteger(curbufsize, 5); 31270 1313 135 ! ! ! ! ! outinteger(cur^.size, 5) 31280 1314 136 ! ! ! ! END 31290 1315 137 ! ! ! ! ELSE outstring10(illegalno) 31300 1316 138 ! ! ! ! ELSE outstring20("you already have one") 31310 1317 139 ! ! ! ! ELSE outstring10(noparam) 31320 1318 140 ! ! ! END (* alloc*); 31330 1319 141 ! ! ! \f tsaoslst 81.06.10. 12.29. page 44 32010 1320 142 ! ! ! "b": (* base *) 32020 1321 143 ! ! ! (* defines the number base for input as well as output *) 32030 1322 144 ! ! ! (* the base is always read decimally *) 32040 1323 145 ! ! ! BEGIN 32050 1324 146 ! ! ! ! IF noofparams < 1 THEN 32060 1325 147 ! ! ! ! BEGIN 32070 1326 148 ! ! ! ! ! base:= oldbase; 32080 1327 149 ! ! ! ! ! outstring10(noparam) 32090 1328 150 ! ! ! ! END 32100 1329 151 ! ! ! ! ELSE 32110 1330 152 ! ! ! ! 32120 1331 153 ! ! ! ! IF NOT (params(1) IN (. 2, 8, 10, 16 .) ) THEN 32130 1332 154 ! ! ! ! BEGIN (* illegal base *) 32140 1333 155 ! ! ! ! ! outstring20("illegal base "); 32150 1334 156 ! ! ! ! ! base:= oldbase; 32160 1335 157 ! ! ! ! END 32170 1336 158 ! ! ! ! ELSE 32180 1337 159 ! ! ! ! base:= params(1); 32190 1338 160 ! ! ! END; 32200 1339 161 ! ! ! \f tsaoslst 81.06.10. 12.29. page 45 33010 1340 162 ! ! ! "c": (* create *) 33020 1341 163 ! ! ! (* an incarnation of each of the predefined modules to be tested 33030 1342 164 ! ! ! is created and started. 33040 1343 165 ! ! ! params are nos. of the modules to be created and started *) 33050 1344 166 ! ! ! 33060 1345 167 ! ! ! IF noofparams >= 1 THEN 33070 1346 168 ! ! ! 33080 1347 169 ! ! ! BEGIN 33090 1348 170 ! ! ! ! moduleno:= params(1); 33100 1349 171 ! ! ! ! 33110 1350 172 ! ! ! ! IF noofparams>1 THEN st:= params(2); 33120 1351 173 ! ! ! ! 33130 1352 174 ! ! ! ! IF (moduleno<1) OR (moduleno > noofmodules) THEN 33140 1353 175 ! ! ! ! BEGIN (* illegal no *) 33150 1354 176 ! ! ! ! ! outdecimal(moduleno,4); 33160 1355 177 ! ! ! ! ! outstring10(illegalno); 33170 1356 178 ! ! ! ! END 33180 1357 179 ! ! ! ! ELSE 33190 1358 180 ! ! ! ! IF moduleready(moduleno) THEN init_modul(moduleno); 33200 1359 181 ! ! ! END (* if noofparams >= 1 *) 33210 1360 182 ! ! ! ELSE outstring10 (noparam); 33220 1361 183 ! ! ! (* end create *) 33230 1362 184 ! ! ! \f tsaoslst 81.06.10. 12.29. page 46 34010 1363 185 ! ! ! "d": (* test dtesimulator *) 34020 1364 186 ! ! ! BEGIN 34030 1365 187 ! ! ! ! outstring10("test dte "); 34040 1366 188 ! ! ! ! 34050 1367 189 ! ! ! ! sensesem( nref, sem( pax_pool).w^); 34060 1368 190 ! ! ! ! 34070 1369 191 ! ! ! ! IF NOT nil( nref) THEN 34080 1370 192 ! ! ! ! BEGIN 34090 1371 193 ! ! ! ! ! nref^.u2 := 7; 34100 1372 194 ! ! ! ! ! nref^.u4 := from_link; 34110 1373 195 ! ! ! ! ! 34120 1374 196 ! ! ! ! ! CASE params(1) OF 34130 1375 197 ! ! ! ! ! ! 34140 1376 198 ! ! ! ! ! ! 34150 1377 199 ! ! ! ! ! ! 34160 1378 200 ! ! ! ! ! ! 1: (* answer to connect ext *) 34170 1379 201 ! ! ! ! ! ! BEGIN 34180 1380 202 ! ! ! ! ! ! ! nref^.u1 := rut_con; 34190 1381 203 ! ! ! ! ! ! ! nref^.u2 := rut_ok; 34200 1382 204 ! ! ! ! ! ! ! nref^.u3 := 7; 34210 1383 205 ! ! ! ! ! ! ! 34220 1384 206 ! ! ! ! ! ! ! LOCK nref AS buf: rut_prefix_type DO 34230 1385 207 ! ! ! ! ! ! ! buf.ext_no := params(2); 34240 1386 208 ! ! ! ! ! ! ! (* ie d 1 20 answers on connect ext 20 *) 34250 1387 209 ! ! ! ! ! ! END; 34260 1388 210 ! ! ! ! ! ! 34270 1389 211 ! ! ! ! ! ! 2 : (* send ric buffer *) 34280 1390 212 ! ! ! ! ! ! BEGIN 34290 1391 213 ! ! ! ! ! ! ! nref^.u1 := dte_ric; 34300 1392 214 ! ! ! ! ! ! ! nref^.u4 := to_link; 34310 1393 215 ! ! ! ! ! ! END; 34320 1394 216 ! ! ! ! ! ! (* ie d 2 sends a ric-buffer to dte *) 34330 1395 217 ! ! ! ! ! ! 34340 1396 218 ! ! ! ! ! ! 3: (* receive call from remote user *) 34350 1397 219 ! ! ! ! ! ! BEGIN 34360 1398 220 ! ! ! ! ! ! ! nref^.u1 := rut_rec; 34370 1399 221 ! ! ! ! ! ! ! nref^.u2 := rut_ok; 34380 1400 222 ! ! ! ! ! ! ! nref^.u3 := rut_default; 34390 1401 223 ! ! ! ! ! ! ! LOCK nref AS buf : rut_trp_pdata DO 34400 1402 224 ! ! ! ! ! ! ! WITH buf DO 34410 1403 225 ! ! ! ! ! ! ! BEGIN 34420 1404 226 ! ! ! ! ! ! ! ! make_phead( 3, dte_car, phead); 34430 1405 227 ! ! ! ! ! ! ! ! FOR i := label_size+3 TO l_listen DO 34440 1406 228 ! ! ! ! ! ! ! ! alarm_mess.da(i) := i; 34450 1407 229 ! ! ! ! ! ! ! END 34460 1408 230 ! ! ! ! ! ! END; \f tsaoslst 81.06.10. 12.29. page 47 34470 1409 231 ! ! ! ! ! ! (* stream sender receiver facility *) 34480 1410 232 ! ! ! ! ! ! (* ie d 3 1 0 0 4 0 0 2 0 is 4 sending call to 2 *) 34490 1411 233 ! ! ! ! ! ! \f tsaoslst 81.06.10. 12.29. page 48 35010 1412 234 ! ! ! ! ! ! 4 : (* send receipt for call *) 35020 1413 235 ! ! ! ! ! ! IF params(2) = 1 THEN 35030 1414 236 ! ! ! ! ! ! BEGIN (* aic *) 35040 1415 237 ! ! ! ! ! ! ! nref^.u1 := dte_aic; 35050 1416 238 ! ! ! ! ! ! ! nref^.u3 := 1; 35060 1417 239 ! ! ! ! ! ! ! nref^.u4 := to_link; 35070 1418 240 ! ! ! ! ! ! ! LOCK nref AS buf : aic_buf_type DO 35080 1419 241 ! ! ! ! ! ! ! BEGIN 35090 1420 242 ! ! ! ! ! ! ! ! buf.aic_id := 1; 35100 1421 243 ! ! ! ! ! ! ! ! buf.aic_q := false; 35110 1422 244 ! ! ! ! ! ! ! END 35120 1423 245 ! ! ! ! ! ! END 35130 1424 246 ! ! ! ! ! ! ELSE 35140 1425 247 ! ! ! ! ! ! BEGIN (* rejic *) 35150 1426 248 ! ! ! ! ! ! ! nref^.u1 := dte_rejic; 35160 1427 249 ! ! ! ! ! ! ! nref^.u3 := 1; 35170 1428 250 ! ! ! ! ! ! ! nref^.u4 := to_link; 35180 1429 251 ! ! ! ! ! ! ! LOCK nref AS buf : rejic_buf_type DO 35190 1430 252 ! ! ! ! ! ! ! BEGIN 35200 1431 253 ! ! ! ! ! ! ! ! buf.rejic_id := 1; 35210 1432 254 ! ! ! ! ! ! ! ! buf.rejic_diag := params(3); 35220 1433 255 ! ! ! ! ! ! ! END 35230 1434 256 ! ! ! ! ! ! END; 35240 1435 257 ! ! ! ! ! ! (* ie d 4 1 sends aic-buffer *) 35250 1436 258 ! ! ! ! ! ! (* ie d 4 0 sends rejic-buffer *) 35260 1437 259 ! ! ! ! ! ! 35270 1438 260 ! ! ! ! ! ! 5: (* receive data from remote user *) 35280 1439 261 ! ! ! ! ! ! BEGIN 35290 1440 262 ! ! ! ! ! ! ! nref^.u1 := rut_rec; 35300 1441 263 ! ! ! ! ! ! ! nref^.u2 := rut_ok; 35310 1442 264 ! ! ! ! ! ! ! nref^.u3 := rut_default; 35320 1443 265 ! ! ! ! ! ! ! LOCK nref AS buf : rut_trp_pdata DO 35330 1444 266 ! ! ! ! ! ! ! WITH buf DO 35340 1445 267 ! ! ! ! ! ! ! BEGIN 35350 1446 268 ! ! ! ! ! ! ! ! make_phead( 3, dte_sdata, phead); 35360 1447 269 ! ! ! ! ! ! ! ! control.op_code := opc_command; 35370 1448 270 ! ! ! ! ! ! ! ! FOR i := label_size+3 TO l_listen DO 35380 1449 271 ! ! ! ! ! ! ! ! alarm_mess.da(i) := i; 35390 1450 272 ! ! ! ! ! ! ! END; 35400 1451 273 ! ! ! ! ! ! END; 35410 1452 274 ! ! ! ! ! ! (* strm sender rec fac *) 35420 1453 275 ! ! ! ! ! ! (* ie d 5 1 0 0 4 0 0 2 0 sends data from 4 to 2 *) 35430 1454 276 ! ! ! ! ! ! \f tsaoslst 81.06.10. 12.29. page 49 36010 1455 277 ! ! ! ! ! ! 6: (* clear from remote user *) 36020 1456 278 ! ! ! ! ! ! BEGIN 36030 1457 279 ! ! ! ! ! ! ! nref^.u1 := rut_rec; 36040 1458 280 ! ! ! ! ! ! ! nref^.u2 := rut_ok; 36050 1459 281 ! ! ! ! ! ! ! nref^.u3 := rut_default; 36060 1460 282 ! ! ! ! ! ! ! LOCK nref AS buf : rut_trp_pdata DO 36070 1461 283 ! ! ! ! ! ! ! WITH buf DO 36080 1462 284 ! ! ! ! ! ! ! BEGIN 36090 1463 285 ! ! ! ! ! ! ! ! make_phead( 3, dte_clr, phead); 36100 1464 286 ! ! ! ! ! ! ! END; 36110 1465 287 ! ! ! ! ! ! END; 36120 1466 288 ! ! ! ! ! ! (* strm sender rec fac *) 36130 1467 289 ! ! ! ! ! ! (* ie d 6 1 0 0 4 0 0 2 0 clears stream 1 from 4 to 2 *) 36140 1468 290 ! ! ! ! ! ! 36150 1469 291 ! ! ! ! ! ! 36160 1470 292 ! ! ! ! ! ! \f tsaoslst 81.06.10. 12.29. page 50 37010 1471 293 ! ! ! ! ! ! 10: (* call request *) 37020 1472 294 ! ! ! ! ! ! BEGIN 37030 1473 295 ! ! ! ! ! ! ! nref^.u1 := dte_car; 37040 1474 296 ! ! ! ! ! ! ! nref^.u3 := params(2); 37050 1475 297 ! ! ! ! ! ! ! nref^.u4 := to_link; 37060 1476 298 ! ! ! ! ! ! ! LOCK nref AS buf:car_buf_type DO 37070 1477 299 ! ! ! ! ! ! ! WITH buf DO 37080 1478 300 ! ! ! ! ! ! ! BEGIN 37090 1479 301 ! ! ! ! ! ! ! ! first := ric_first_val; 37100 1480 302 ! ! ! ! ! ! ! ! last := ric_first_val+l_control+l_listen-1; 37110 1481 303 ! ! ! ! ! ! ! ! q_bit := false; 37120 1482 304 ! ! ! ! ! ! ! ! WITH call_buf DO 37130 1483 305 ! ! ! ! ! ! ! ! BEGIN 37140 1484 306 ! ! ! ! ! ! ! ! ! control.op_code := dte_car; 37150 1485 307 ! ! ! ! ! ! ! ! ! dte_adr_l := l_dte_adr; 37160 1486 308 ! ! ! ! ! ! ! ! ! dte_adr := paxnet_config( params(5)); 37170 1487 309 ! ! ! ! ! ! ! ! ! 37180 1488 310 ! ! ! ! ! ! ! ! ! facility_l := l_facilities; 37190 1489 311 ! ! ! ! ! ! ! ! ! facility := params(6); 37200 1490 312 ! ! ! ! ! ! ! ! ! FOR i := label_size+3 TO l_listen DO 37210 1491 313 ! ! ! ! ! ! ! ! ! alarm_mess.da(i):=i; 37220 1492 314 ! ! ! ! ! ! ! ! END; 37230 1493 315 ! ! ! ! ! ! ! END; 37240 1494 316 ! ! ! ! ! ! END; 37250 1495 317 ! ! ! ! ! ! (* strm rec fac *) 37260 1496 318 ! ! ! ! ! ! (* ie d 10 1 0 0 3 0 sends a call to 3 on stream 1 *) 37270 1497 319 ! ! ! ! ! ! (* ie d 10 2 0 0 4 0 sends a call to 4 on stream 2 *) 37280 1498 320 ! ! ! ! ! ! \f tsaoslst 81.06.10. 12.29. page 51 38010 1499 321 ! ! ! ! ! ! 11: (* call accepted from remote user *) 38020 1500 322 ! ! ! ! ! ! BEGIN 38030 1501 323 ! ! ! ! ! ! ! nref^.u1 := rut_rec; 38040 1502 324 ! ! ! ! ! ! ! nref^.u2 := rut_ok; 38050 1503 325 ! ! ! ! ! ! ! nref^.u3 := rut_default; 38060 1504 326 ! ! ! ! ! ! ! LOCK nref AS buf: rut_trp_pdata DO 38070 1505 327 ! ! ! ! ! ! ! WITH buf DO 38080 1506 328 ! ! ! ! ! ! ! make_phead( 3, dte_aic, phead); 38090 1507 329 ! ! ! ! ! ! END; 38100 1508 330 ! ! ! ! ! ! (* strm sender rec fac *) 38110 1509 331 ! ! ! ! ! ! (* ie d 11 1 0 0 3 0 0 2 0 is 3 accepting call from 2 *) 38120 1510 332 ! ! ! ! ! ! 38130 1511 333 ! ! ! ! ! ! 12: (* send data to remote user *) 38140 1512 334 ! ! ! ! ! ! BEGIN 38150 1513 335 ! ! ! ! ! ! ! nref^.u1 := dte_sdata; 38160 1514 336 ! ! ! ! ! ! ! nref^.u3 := params(2); 38170 1515 337 ! ! ! ! ! ! ! nref^.u4 := to_link; 38180 1516 338 ! ! ! ! ! ! ! LOCK nref AS buf : dte_sdata_data DO 38190 1517 339 ! ! ! ! ! ! ! WITH buf DO 38200 1518 340 ! ! ! ! ! ! ! BEGIN 38210 1519 341 ! ! ! ! ! ! ! ! q_bit := false; 38220 1520 342 ! ! ! ! ! ! ! ! m_bit := false; 38230 1521 343 ! ! ! ! ! ! ! ! control.op_code := opc_command; 38240 1522 344 ! ! ! ! ! ! ! ! FOR i := label_size+3 TO l_listen DO 38250 1523 345 ! ! ! ! ! ! ! ! alarm_mess.da(i) := i; 38260 1524 346 ! ! ! ! ! ! ! END 38270 1525 347 ! ! ! ! ! ! END; 38280 1526 348 ! ! ! ! ! ! (* ie d 12 1 sends data on stream 1 *) 38290 1527 349 ! ! ! ! ! ! 38300 1528 350 ! ! ! ! ! ! 13: (* clear stream to remote user *) 38310 1529 351 ! ! ! ! ! ! BEGIN 38320 1530 352 ! ! ! ! ! ! ! nref^.u1 := dte_clr; 38330 1531 353 ! ! ! ! ! ! ! nref^.u4 := to_link; 38340 1532 354 ! ! ! ! ! ! ! nref^.u3 := params(2); 38350 1533 355 ! ! ! ! ! ! ! LOCK nref AS buf : clear_buf_type DO 38360 1534 356 ! ! ! ! ! ! ! buf.diag_code := params(3); 38370 1535 357 ! ! ! ! ! ! END; 38380 1536 358 ! ! ! ! ! ! 38390 1537 359 ! ! ! ! ! ! (* strm diag-code *) 38400 1538 360 ! ! ! ! ! ! (* ie d 13 1 16 sends clear stream to dte *) 38410 1539 361 ! ! ! ! ! ! 38420 1540 362 ! ! ! ! ! ! 38430 1541 363 ! ! ! ! ! ! OTHERWISE 38440 1542 364 ! ! ! ! ! ! 38450 1543 365 ! ! ! ! ! ! outstring10("undef test"); 38460 1544 366 ! ! ! ! ! END; \f tsaoslst 81.06.10. 12.29. page 52 38470 1545 367 ! ! ! ! ! signal( nref, sem( dte_sem_no).s^); 38480 1546 368 ! ! ! ! END 38490 1547 369 ! ! ! ! ELSE 38500 1548 370 ! ! ! ! outstring10("no paxbufs"); 38510 1549 371 ! ! ! ! 38520 1550 372 ! ! ! END; 38530 1551 373 ! ! ! \f tsaoslst 81.06.10. 12.29. page 53 39010 1552 374 ! ! ! "f": (* fill *) 39020 1553 375 ! ! ! (* fills integers into current buffer. 39030 1554 376 ! ! ! 1st param: first word no. to be filled, 39040 1555 377 ! ! ! following: values to be assigned *) 39050 1556 378 ! ! ! BEGIN 39060 1557 379 ! ! ! ! IF noofparams < 2 THEN 39070 1558 380 ! ! ! ! outstring10("param ") 39080 1559 381 ! ! ! ! ELSE 39090 1560 382 ! ! ! ! IF (params(1) < 1) THEN 39100 1561 383 ! ! ! ! outstring20("illegal start ") 39110 1562 384 ! ! ! ! ELSE 39120 1563 385 ! ! ! ! IF nil(cur) THEN 39130 1564 386 ! ! ! ! outstring10("no buffer ") 39140 1565 387 ! ! ! ! ELSE 39150 1566 388 ! ! ! ! BEGIN (* params are ok *) 39160 1567 389 ! ! ! ! ! i:= params(1); (* i points into the messbuf *) 39170 1568 390 ! ! ! ! ! 39180 1569 391 ! ! ! ! ! FOR j:= 2 TO noofparams DO 39190 1570 392 ! ! ! ! ! (* j points into the param list *) 39200 1571 393 ! ! ! ! ! IF i <= curbufsize THEN 39210 1572 394 ! ! ! ! ! BEGIN 39220 1573 395 ! ! ! ! ! ! CASE curbuftype OF 39230 1574 396 ! ! ! ! ! ! ! 1: LOCK cur AS minbuf: minbuftype DO 39240 1575 397 ! ! ! ! ! ! ! minbuf(i):= params(j); 39250 1576 398 ! ! ! ! ! ! ! 2: LOCK cur AS messbuf: messbuftype DO 39260 1577 399 ! ! ! ! ! ! ! messbuf(i):= params(j); 39270 1578 400 ! ! ! ! ! ! ! 3: LOCK cur AS maxbuf: maxbuftype DO 39280 1579 401 ! ! ! ! ! ! ! maxbuf(i):= params(j); 39290 1580 402 ! ! ! ! ! ! ! 4: LOCK cur AS testbuf: testbuftype DO 39300 1581 403 ! ! ! ! ! ! ! testbuf(i):= params(j); 39310 1582 404 ! ! ! ! ! ! ! OTHERWISE 39320 1583 405 ! ! ! ! ! ! END; 39330 1584 406 ! ! ! ! ! ! i:= i + 1; 39340 1585 407 ! ! ! ! ! END; 39350 1586 408 ! ! ! ! ! 39360 1587 409 ! ! ! ! END (* params ok *) 39370 1588 410 ! ! ! END (* fill *); 39380 1589 411 ! ! ! \f tsaoslst 81.06.10. 12.29. page 54 40010 1590 412 ! ! ! "h": (* help *) 40020 1591 413 ! ! ! (* lists possible commands and no. of parameters *) 40030 1592 414 ! ! ! BEGIN 40040 1593 415 ! ! ! ! outstring20("comm and no of param"); writenl; 40050 1594 416 ! ! ! ! outstring20("a: allocate 1 "); writenl; 40060 1595 417 ! ! ! ! outstring20("b: base 1 "); writenl; 40070 1596 418 ! ! ! ! outstring20("c: create >=1 "); writenl; 40080 1597 419 ! ! ! ! outstring20("e: execute 1 "); writenl; 40090 1598 420 ! ! ! ! outstring20("f: fill 2 "); writenl; 40100 1599 421 ! ! ! ! outstring20("h: help 0 "); writenl; 40110 1600 422 ! ! ! ! outstring20("i: init point 0 "); writenl; 40120 1601 423 ! ! ! ! outstring20("k: kill >=1 "); writenl; 40130 1602 424 ! ! ! ! outstring20("o: output 0 to 2"); writenl; 40140 1603 425 ! ! ! ! outstring20("p: partial >=3 "); writenl; 40150 1604 426 ! ! ! ! outstring20("r: return 0 "); writenl; 40160 1605 427 ! ! ! ! outstring20("s: signal 1 "); writenl; 40170 1606 428 ! ! ! ! outstring20("t: test 0 or 1"); writenl; 40180 1607 429 ! ! ! ! outstring20("u: user param 1 to 4"); writenl; 40190 1608 430 ! ! ! ! outstring20("w: wait 1 "); writenl; 40200 1609 431 ! ! ! ! outstring20("x: exch point 2 "); writenl; 40210 1610 432 ! ! ! ! outstring20(";: comment "); 40220 1611 433 ! ! ! END; 40230 1612 434 ! ! ! \f tsaoslst 81.06.10. 12.29. page 55 41010 1613 435 ! ! ! "i": (* initialise pointers *) 41020 1614 436 ! ! ! IF noofparams=0 THEN 41030 1615 437 ! ! ! FOR i:=1 TO noofsemaphores DO sem(i).w:= sem(i).s ELSE 41040 1616 438 ! ! ! IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN 41050 1617 439 ! ! ! sem(params(1)).w:= sem(params(1)).s ELSE 41060 1618 440 ! ! ! outstring10(valparam); 41070 1619 441 ! ! ! \f tsaoslst 81.06.10. 12.29. page 56 42010 1620 442 ! ! ! "e", (* exception *) 42020 1621 443 ! ! ! (* call of exception routine in one or more incarnations *) 42030 1622 444 ! ! ! "k": (* kill *) 42040 1623 445 ! ! ! (* removes incarnation of tested module(s) 42050 1624 446 ! ! ! params are nos. of modules to be removed *) 42060 1625 447 ! ! ! 42070 1626 448 ! ! ! IF noofparams >= 1 THEN 42080 1627 449 ! ! ! FOR i:= 1 TO noofparams DO 42090 1628 450 ! ! ! BEGIN 42100 1629 451 ! ! ! ! moduleno:= params(i); 42110 1630 452 ! ! ! ! IF (1<=moduleno) AND (moduleno<=noofmodules) THEN 42120 1631 453 ! ! ! ! IF NOT nil(sh(moduleno)) THEN 42130 1632 454 ! ! ! ! IF command="e" THEN 42140 1633 455 ! ! ! ! break(sh(moduleno),#h2f) ELSE 42150 1634 456 ! ! ! ! remove (sh(moduleno)) 42160 1635 457 ! ! ! ! ELSE 42170 1636 458 ! ! ! ! BEGIN 42180 1637 459 ! ! ! ! ! outdecimal (moduleno, 4); 42190 1638 460 ! ! ! ! ! outstring10(" not alive"); 42200 1639 461 ! ! ! ! ! writenl; 42210 1640 462 ! ! ! ! END 42220 1641 463 ! ! ! ! ELSE 42230 1642 464 ! ! ! ! BEGIN 42240 1643 465 ! ! ! ! ! outdecimal (moduleno, 4); 42250 1644 466 ! ! ! ! ! outstring10(illegalno); 42260 1645 467 ! ! ! ! ! writenl; 42270 1646 468 ! ! ! ! END 42280 1647 469 ! ! ! END 42290 1648 470 ! ! ! ELSE outstring10("no params "); 42300 1649 471 ! ! ! \f tsaoslst 81.06.10. 12.29. page 57 43010 1650 472 ! ! ! "m": (* testmode *) 43020 1651 473 ! ! ! testmode:= NOT testmode; 43030 1652 474 ! ! ! \f tsaoslst 81.06.10. 12.29. page 58 44010 1653 475 ! ! ! "n": (* test netconnector *) 44020 1654 476 ! ! ! BEGIN 44030 1655 477 ! ! ! ! 44040 1656 478 ! ! ! ! outstring10("test netc "); 44050 1657 479 ! ! ! ! 44060 1658 480 ! ! ! ! 44070 1659 481 ! ! ! ! CASE params(1) OF 44080 1660 482 ! ! ! ! ! \f tsaoslst 81.06.10. 12.29. page 59 45010 1661 483 ! ! ! ! ! 1: (* update pax-table from local sup *) 45020 1662 484 ! ! ! ! ! BEGIN 45030 1663 485 ! ! ! ! ! ! sensesem( nref, sem( com_pool).w^); 45040 1664 486 ! ! ! ! ! ! 45050 1665 487 ! ! ! ! ! ! IF NOT nil( nref) THEN 45060 1666 488 ! ! ! ! ! ! BEGIN 45070 1667 489 ! ! ! ! ! ! ! nref^.u2 := 7; 45080 1668 490 ! ! ! ! ! ! ! nref^.u3 := netc_route1; 45090 1669 491 ! ! ! ! ! ! ! nref^.u4 := #hac; 45100 1670 492 ! ! ! ! ! ! ! 45110 1671 493 ! ! ! ! ! ! ! LOCK nref AS buf : RECORD 45120 1672 494 ! ! ! ! ! ! ! ! a:alarmlabel; 45130 1673 495 ! ! ! ! ! ! ! ! i : integer; 45140 1674 496 ! ! ! ! ! ! ! ! p:paxnet_e; 45150 1675 497 ! ! ! ! ! ! ! END DO 45160 1676 498 ! ! ! ! ! ! ! WITH buf DO 45170 1677 499 ! ! ! ! ! ! ! BEGIN 45180 1678 500 ! ! ! ! ! ! ! ! a.no_of_by := l_listen; 45190 1679 501 ! ! ! ! ! ! ! ! a.update := insert_code; 45200 1680 502 ! ! ! ! ! ! ! ! a.rec.macro := packmacro(2); 45210 1681 503 ! ! ! ! ! ! ! ! a.rec.micro := netc_mic_addr; 45220 1682 504 ! ! ! ! ! ! ! ! a.send.macro := packmacro(5); 45230 1683 505 ! ! ! ! ! ! ! ! p.al_mac_addr := packmacro(8); 45240 1684 506 ! ! ! ! ! ! ! ! p.pax_addr := paxnet_config( params(13)); 45250 1685 507 ! ! ! ! ! ! ! ! 45260 1686 508 ! ! ! ! ! ! ! ! i := params(14); 45270 1687 509 ! ! ! ! ! ! ! ! p.stream_no := params(15); 45280 1688 510 ! ! ! ! ! ! ! ! p.max_retrans := 1; 45290 1689 511 ! ! ! ! ! ! ! END; 45300 1690 512 ! ! ! ! ! ! END; 45310 1691 513 ! ! ! ! ! ! (* receiver sender al-mac pax indx stream *) 45320 1692 514 ! ! ! ! ! ! (* ie n 1 0 0 0 1 0 0 1 2 2 0 0 2 1 1 sets netc address *) 45330 1693 515 ! ! ! ! ! ! (* ie n 1 1 2 2 1 0 0 1 2 0 0 0 2 2 2 sets ncsup addr *) 45340 1694 516 ! ! ! ! ! ! (* ie n 1 1 2 2 1 0 0 1 3 2 0 0 3 7 0 sets global ts-adr*) 45350 1695 517 ! ! ! ! ! ! (* ie n 1 1 2 2 1 0 0 1 3 0 0 0 3 8 0 sets global nc-adr*) 45360 1696 518 ! ! ! ! ! END; 45370 1697 519 ! ! ! ! ! \f tsaoslst 81.06.10. 12.29. page 60 46010 1698 520 ! ! ! ! ! 2 : (* update pax-table from net *) 46020 1699 521 ! ! ! ! ! (*---- comming in a ric-buffer --*) 46030 1700 522 ! ! ! ! ! BEGIN 46040 1701 523 ! ! ! ! ! ! sensesem( nref, sem(pax_pool).w^); 46050 1702 524 ! ! ! ! ! ! 46060 1703 525 ! ! ! ! ! ! IF NOT nil( nref) THEN 46070 1704 526 ! ! ! ! ! ! BEGIN 46080 1705 527 ! ! ! ! ! ! ! nref^.u1 := dte_ric; 46090 1706 528 ! ! ! ! ! ! ! nref^.u2 := 0; 46100 1707 529 ! ! ! ! ! ! ! nref^.u3 := 7; 46110 1708 530 ! ! ! ! ! ! ! nref^.u4 := to_link; 46120 1709 531 ! ! ! ! ! ! ! 46130 1710 532 ! ! ! ! ! ! ! LOCK nref AS buf : tst_ric_type DO 46140 1711 533 ! ! ! ! ! ! ! BEGIN 46150 1712 534 ! ! ! ! ! ! ! ! buf.c_i := params(16); 46160 1713 535 ! ! ! ! ! ! ! ! WITH buf.c_b DO 46170 1714 536 ! ! ! ! ! ! ! ! BEGIN 46180 1715 537 ! ! ! ! ! ! ! ! ! a_l.no_of_by := l_listen; 46190 1716 538 ! ! ! ! ! ! ! ! ! a_l.op_code := #hac; 46200 1717 539 ! ! ! ! ! ! ! ! ! a_l.update := insert_code; 46210 1718 540 ! ! ! ! ! ! ! ! ! a_l.rec.macro := packmacro(2); 46220 1719 541 ! ! ! ! ! ! ! ! ! a_l.rec.micro:=netc_mic_addr; 46230 1720 542 ! ! ! ! ! ! ! ! ! a_l.send.macro:=packmacro(5); 46240 1721 543 ! ! ! ! ! ! ! ! ! a_l.send.micro := 1; 46250 1722 544 ! ! ! ! ! ! ! ! ! p_e.al_mac_addr := packmacro(8); 46260 1723 545 ! ! ! ! ! ! ! ! ! p_e.pax_addr := paxnet_config( params(13)); 46270 1724 546 ! ! ! ! ! ! ! ! ! 46280 1725 547 ! ! ! ! ! ! ! ! ! indx:=params(15); 46290 1726 548 ! ! ! ! ! ! ! ! ! p_e.stream_no := params(14); 46300 1727 549 ! ! ! ! ! ! ! ! ! p_e.max_retrans := 1; 46310 1728 550 ! ! ! ! ! ! ! ! ! d_a := p_e.pax_addr; 46320 1729 551 ! ! ! ! ! ! ! ! END; 46330 1730 552 ! ! ! ! ! ! ! END 46340 1731 553 ! ! ! ! ! ! END; 46350 1732 554 ! ! ! ! ! END; 46360 1733 555 ! ! ! ! ! (* receiver sender al-mac pax strm indx call-id *) 46370 1734 556 ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 4 2 0 0 4 1 9 1 sets global ts-addr *) 46380 1735 557 ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 4 0 0 0 4 2 10 2 sets global nc-addr *) 46390 1736 558 ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 5 2 0 0 5 3 11 3 sets global ts-addr *) 46400 1737 559 ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 5 0 0 0 5 4 12 4 sets global nc-addr *) 46410 1738 560 ! ! ! ! ! \f tsaoslst 81.06.10. 12.29. page 61 47010 1739 561 ! ! ! ! ! 3: (* send alarmmessage from local *) 47020 1740 562 ! ! ! ! ! BEGIN 47030 1741 563 ! ! ! ! ! ! sensesem( nref, sem(com_pool).w^); 47040 1742 564 ! ! ! ! ! ! 47050 1743 565 ! ! ! ! ! ! IF NOT nil( nref) THEN 47060 1744 566 ! ! ! ! ! ! BEGIN 47070 1745 567 ! ! ! ! ! ! ! nref^.u2 := 7; 47080 1746 568 ! ! ! ! ! ! ! nref^.u3 := tss_route; 47090 1747 569 ! ! ! ! ! ! ! nref^.u4 := #h30; 47100 1748 570 ! ! ! ! ! ! ! 47110 1749 571 ! ! ! ! ! ! ! LOCK nref AS abuf : max_alarm_mess DO 47120 1750 572 ! ! ! ! ! ! ! WITH abuf DO 47130 1751 573 ! ! ! ! ! ! ! BEGIN 47140 1752 574 ! ! ! ! ! ! ! ! al.no_of_by := l_listen; 47150 1753 575 ! ! ! ! ! ! ! ! al.rec.macro := packmacro(2); 47160 1754 576 ! ! ! ! ! ! ! ! al.rec.micro := 0; 47170 1755 577 ! ! ! ! ! ! ! ! al.send.macro := packmacro(5); 47180 1756 578 ! ! ! ! ! ! ! ! al.send.micro := 0; 47190 1757 579 ! ! ! ! ! ! ! ! FOR i := label_size+3 TO l_listen DO 47200 1758 580 ! ! ! ! ! ! ! ! da(i) := i; 47210 1759 581 ! ! ! ! ! ! ! END; 47220 1760 582 ! ! ! ! ! ! ! 47230 1761 583 ! ! ! ! ! ! ! (* receiver sender *) 47240 1762 584 ! ! ! ! ! ! ! (* ie n 3 1 2 0 1 0 0 gives an alarm to ncsup local *) 47250 1763 585 ! ! ! ! ! ! ! (* ie n 3 1 3 2 1 0 0 gives an alarm to tssup global *) 47260 1764 586 ! ! ! ! ! ! ! (* ie n 3 1 3 0 1 0 0 gives an alarm to ncsup global *) 47270 1765 587 ! ! ! ! ! ! END; 47280 1766 588 ! ! ! ! ! END; 47290 1767 589 ! ! ! ! ! \f tsaoslst 81.06.10. 12.29. page 62 48010 1768 590 ! ! ! ! ! 4: (* update pax-table from net *) 48020 1769 591 ! ! ! ! ! (*--- comming in a databuffer ---*) 48030 1770 592 ! ! ! ! ! BEGIN 48040 1771 593 ! ! ! ! ! ! sensesem( nref, sem( pax_pool).w^); 48050 1772 594 ! ! ! ! ! ! 48060 1773 595 ! ! ! ! ! ! IF NOT nil(nref) THEN 48070 1774 596 ! ! ! ! ! ! BEGIN 48080 1775 597 ! ! ! ! ! ! ! nref^.u1 := dte_rdata; 48090 1776 598 ! ! ! ! ! ! ! nref^.u2 := 0; 48100 1777 599 ! ! ! ! ! ! ! nref^.u3 := params(2) MOD 256; 48110 1778 600 ! ! ! ! ! ! ! nref^.u4 := to_link; 48120 1779 601 ! ! ! ! ! ! ! 48130 1780 602 ! ! ! ! ! ! ! LOCK nref AS buf : tst_sdata_data DO 48140 1781 603 ! ! ! ! ! ! ! WITH buf DO 48150 1782 604 ! ! ! ! ! ! ! BEGIN 48160 1783 605 ! ! ! ! ! ! ! ! control.op_code := opc_command; 48170 1784 606 ! ! ! ! ! ! ! ! WITH a_l DO 48180 1785 607 ! ! ! ! ! ! ! ! BEGIN 48190 1786 608 ! ! ! ! ! ! ! ! ! no_of_by := l_listen; 48200 1787 609 ! ! ! ! ! ! ! ! ! op_code := #hac; 48210 1788 610 ! ! ! ! ! ! ! ! ! update := insert_code; 48220 1789 611 ! ! ! ! ! ! ! ! ! rec.macro := packmacro(3); 48230 1790 612 ! ! ! ! ! ! ! ! ! rec.micro := netc_mic_addr; 48240 1791 613 ! ! ! ! ! ! ! ! ! send.macro := packmacro(6); 48250 1792 614 ! ! ! ! ! ! ! ! ! send.micro := 0; 48260 1793 615 ! ! ! ! ! ! ! ! END; 48270 1794 616 ! ! ! ! ! ! ! ! indx := params(9); 48280 1795 617 ! ! ! ! ! ! ! ! WITH p_e DO 48290 1796 618 ! ! ! ! ! ! ! ! BEGIN 48300 1797 619 ! ! ! ! ! ! ! ! ! al_mac_addr := packmacro(10); 48310 1798 620 ! ! ! ! ! ! ! ! ! pax_addr := paxnet_config( params(15)); 48320 1799 621 ! ! ! ! ! ! ! ! ! 48330 1800 622 ! ! ! ! ! ! ! ! ! stream_no := params(16); 48340 1801 623 ! ! ! ! ! ! ! ! ! max_retrans := 1; 48350 1802 624 ! ! ! ! ! ! ! ! END; 48360 1803 625 ! ! ! ! ! ! ! END; 48370 1804 626 ! ! ! ! ! ! END; 48380 1805 627 ! ! ! ! ! END; 48390 1806 628 ! ! ! ! ! 48400 1807 629 ! ! ! ! ! (* strm receiver sender indx al-mac pax strm *) 48410 1808 630 ! ! ! ! ! (* n 4 1 1 2 2 1 0 0 1 1 4 2 0 0 4 1 *) 48420 1809 631 ! ! ! ! ! \f tsaoslst 81.06.10. 12.29. page 63 49010 1810 632 ! ! ! ! ! 5: (* send data or receipt from net *) 49020 1811 633 ! ! ! ! ! BEGIN 49030 1812 634 ! ! ! ! ! ! sensesem( nref, sem(pax_pool).w^); 49040 1813 635 ! ! ! ! ! ! 49050 1814 636 ! ! ! ! ! ! IF NOT nil( nref) THEN 49060 1815 637 ! ! ! ! ! ! BEGIN 49070 1816 638 ! ! ! ! ! ! ! nref^.u1 := dte_rdata; 49080 1817 639 ! ! ! ! ! ! ! nref^.u2 := 0; 49090 1818 640 ! ! ! ! ! ! ! nref^.u3 := params(4) MOD 256; 49100 1819 641 ! ! ! ! ! ! ! nref^.u4 := to_link; 49110 1820 642 ! ! ! ! ! ! ! 49120 1821 643 ! ! ! ! ! ! ! LOCK nref AS buf : tst_sdata_data DO 49130 1822 644 ! ! ! ! ! ! ! WITH buf DO 49140 1823 645 ! ! ! ! ! ! ! BEGIN 49150 1824 646 ! ! ! ! ! ! ! ! control.op_code := params(2); 49160 1825 647 ! ! ! ! ! ! ! ! control.data := params(3); 49170 1826 648 ! ! ! ! ! ! ! ! a_l.rec.macro := packmacro(5); 49180 1827 649 ! ! ! ! ! ! ! ! a_l.rec.micro := 0; 49190 1828 650 ! ! ! ! ! ! ! ! a_l.op_code := #h30; 49200 1829 651 ! ! ! ! ! ! ! END; 49210 1830 652 ! ! ! ! ! ! END; 49220 1831 653 ! ! ! ! ! END; 49230 1832 654 ! ! ! ! ! 49240 1833 655 ! ! ! ! ! (* opcode data stream receiver *) 49250 1834 656 ! ! ! ! ! (* n 5 x x 1 1 2 2 *) 49260 1835 657 ! ! ! ! ! (* dte-aic 16 128 data-received *) 49270 1836 658 ! ! ! ! ! (* dte-rej 20 64 data-not-received *) 49280 1837 659 ! ! ! ! ! (* opc-rec 96 *) 49290 1838 660 ! ! ! ! ! (* opc-com 48 *) 49300 1839 661 ! ! ! ! ! 49310 1840 662 ! ! ! ! ! 49320 1841 663 ! ! ! ! ! OTHERWISE 49330 1842 664 ! ! ! ! ! outstring10("undef test"); 49340 1843 665 ! ! ! ! END; 49350 1844 666 ! ! ! ! IF NOT nil( nref) THEN 49360 1845 667 ! ! ! ! signal( nref, sem( netc_sem_no).s^) 49370 1846 668 ! ! ! ! ELSE 49380 1847 669 ! ! ! ! outstring10("no buffers"); 49390 1848 670 ! ! ! END; 49400 1849 671 ! ! ! 49410 1850 672 ! ! ! \f tsaoslst 81.06.10. 12.29. page 64 50010 1851 673 ! ! ! "o": (* output *) 50020 1852 674 ! ! ! (* outputs current buffer incl. user parameters 50030 1853 675 ! ! ! 1st param is firstword, 50040 1854 676 ! ! ! 2nd param is lastword *) 50050 1855 677 ! ! ! BEGIN 50060 1856 678 ! ! ! ! IF nil(cur) THEN 50070 1857 679 ! ! ! ! outstring10 ("no buffer ") 50080 1858 680 ! ! ! ! ELSE 50090 1859 681 ! ! ! ! BEGIN 50100 1860 682 ! ! ! ! ! outchar("u"); 50110 1861 683 ! ! ! ! ! outchar(":"); 50120 1862 684 ! ! ! ! ! 50130 1863 685 ! ! ! ! ! outinteger(cur^.u1,4); 50140 1864 686 ! ! ! ! ! outinteger(cur^.u2,4); 50150 1865 687 ! ! ! ! ! outinteger(cur^.u3,4); 50160 1866 688 ! ! ! ! ! outinteger(cur^.u4,4); 50170 1867 689 ! ! ! ! ! writenl; 50180 1868 690 ! ! ! ! ! 50190 1869 691 ! ! ! ! ! IF (noofparams>=1) AND (params(1)>=1) 50200 1870 692 ! ! ! ! ! AND (params(1)<= curbufsize) THEN 50210 1871 693 ! ! ! ! ! firstword:= params(1); 50220 1872 694 ! ! ! ! ! 50230 1873 695 ! ! ! ! ! IF (noofparams>=2) AND (params(2)<=curbufsize) THEN 50240 1874 696 ! ! ! ! ! lastword:= params(2); 50250 1875 697 ! ! ! ! ! IF lastword>curbufsize THEN 50260 1876 698 ! ! ! ! ! lastword:= curbufsize; 50270 1877 699 ! ! ! ! ! 50280 1878 700 ! ! ! ! ! IF cur^.size<curbufsize THEN 50290 1879 701 ! ! ! ! ! outstring20("too small buffer ") ELSE 50300 1880 702 ! ! ! ! ! FOR i:= firstword TO lastword DO 50310 1881 703 ! ! ! ! ! BEGIN 50320 1882 704 ! ! ! ! ! ! outdecimal(i,3); 50330 1883 705 ! ! ! ! ! ! outchar(":"); 50340 1884 706 ! ! ! ! ! ! CASE curbuftype OF 50350 1885 707 ! ! ! ! ! ! ! 1: LOCK cur AS minbuf: minbuftype DO 50360 1886 708 ! ! ! ! ! ! ! j:= minbuf(i); 50370 1887 709 ! ! ! ! ! ! ! 2: LOCK cur AS messbuf: messbuftype DO 50380 1888 710 ! ! ! ! ! ! ! j:= messbuf(i); 50390 1889 711 ! ! ! ! ! ! ! 3: LOCK cur AS maxbuf: maxbuftype DO 50400 1890 712 ! ! ! ! ! ! ! j:= maxbuf(i); 50410 1891 713 ! ! ! ! ! ! ! 4: LOCK cur AS testbuf: testbuftype DO 50420 1892 714 ! ! ! ! ! ! ! j:= testbuf(i); 50430 1893 715 ! ! ! ! ! ! ! OTHERWISE 50440 1894 716 ! ! ! ! ! ! ! j:= 0; 50450 1895 717 ! ! ! ! ! ! END; 50460 1896 718 ! ! ! ! ! ! IF base= 2 THEN \f tsaoslst 81.06.10. 12.29. page 65 50470 1897 719 ! ! ! ! ! ! outinteger(j,17) 50480 1898 720 ! ! ! ! ! ! ELSE 50490 1899 721 ! ! ! ! ! ! outinteger(j,7); 50500 1900 722 ! ! ! ! ! ! writenl; 50510 1901 723 ! ! ! ! ! END; 50520 1902 724 ! ! ! ! END (* ok *); 50530 1903 725 ! ! ! END (* output *); 50540 1904 726 ! ! ! \f tsaoslst 81.06.10. 12.29. page 66 51010 1905 727 ! ! ! "p": (* partial words *) 51020 1906 728 ! ! ! (* fills partial words i.e. bytes into current buffer. 51030 1907 729 ! ! ! 1st param: word no. in which to start 51040 1908 730 ! ! ! 2nd param: byte no. (of 1st word) in which to start: 51050 1909 731 ! ! ! - 0: left byte 51060 1910 732 ! ! ! - 1: right byte 51070 1911 733 ! ! ! following: byte values to be assigned *) 51080 1912 734 ! ! ! BEGIN 51090 1913 735 ! ! ! ! IF noofparams<2 THEN 51100 1914 736 ! ! ! ! outstring10("param ") 51110 1915 737 ! ! ! ! ELSE 51120 1916 738 ! ! ! ! IF (params(1)<1) THEN 51130 1917 739 ! ! ! ! outstring20("illegal start-word ") 51140 1918 740 ! ! ! ! ELSE 51150 1919 741 ! ! ! ! IF NOT (params(2) IN (.0,1.)) THEN 51160 1920 742 ! ! ! ! outstring20 ("2nd must be 0 or 1 ") 51170 1921 743 ! ! ! ! ELSE 51180 1922 744 ! ! ! ! IF nil (cur) THEN 51190 1923 745 ! ! ! ! outstring10 ("no buffer ") 51200 1924 746 ! ! ! ! ELSE 51210 1925 747 ! ! ! ! BEGIN (* params are ok *) 51220 1926 748 ! ! ! ! ! i:= params(1); (* i points into current buffer *) 51230 1927 749 ! ! ! ! ! j:= params(2); 51240 1928 750 ! ! ! ! ! 51250 1929 751 ! ! ! ! ! IF cur^.size<messbufsize THEN 51260 1930 752 ! ! ! ! ! outstring20("too small buffer ") ELSE 51270 1931 753 ! ! ! ! ! LOCK cur AS messbuf: messbuftype DO 51280 1932 754 ! ! ! ! ! BEGIN 51290 1933 755 ! ! ! ! ! ! IF messbuf(i)<0 THEN 51300 1934 756 ! ! ! ! ! ! leftbyte:= (messbuf(i)+255) DIV 256 51310 1935 757 ! ! ! ! ! ! ELSE 51320 1936 758 ! ! ! ! ! ! leftbyte:= messbuf(i) DIV 256; 51330 1937 759 ! ! ! ! ! ! 51340 1938 760 ! ! ! ! ! ! FOR k:= 3 TO noofparams DO 51350 1939 761 ! ! ! ! ! ! (* k points into the parameter list *) 51360 1940 762 ! ! ! ! ! ! IF i<= messbufsize THEN 51370 1941 763 ! ! ! ! ! ! BEGIN 51380 1942 764 ! ! ! ! ! ! ! CASE j OF 51390 1943 765 ! ! ! ! ! ! ! ! 0: 51400 1944 766 ! ! ! ! ! ! ! ! BEGIN (* left *) 51410 1945 767 ! ! ! ! ! ! ! ! ! rightbyte:= abs(messbuf(i) MOD 256); 51420 1946 768 ! ! ! ! ! ! ! ! ! leftbyte := params (k); 51430 1947 769 ! ! ! ! ! ! ! ! END; 51440 1948 770 ! ! ! ! ! ! ! ! 1: 51450 1949 771 ! ! ! ! ! ! ! ! BEGIN (* right *) 51460 1950 772 ! ! ! ! ! ! ! ! ! rightbyte:= params (k); \f tsaoslst 81.06.10. 12.29. page 67 51470 1951 773 ! ! ! ! ! ! ! ! ! IF leftbyte>=128 THEN 51480 1952 774 ! ! ! ! ! ! ! ! ! BEGIN 51490 1953 775 ! ! ! ! ! ! ! ! ! ! messbuf(i):= (leftbyte-128)*256 + rightbyte; 51500 1954 776 ! ! ! ! ! ! ! ! ! ! IF messbuf(i)>0 THEN 51510 1955 777 ! ! ! ! ! ! ! ! ! ! messbuf(i):= -((32767-messbuf(i))+1) 51520 1956 778 ! ! ! ! ! ! ! ! ! ! ELSE messbuf(i):= -32768; 51530 1957 779 ! ! ! ! ! ! ! ! ! END 51540 1958 780 ! ! ! ! ! ! ! ! ! ELSE 51550 1959 781 ! ! ! ! ! ! ! ! ! messbuf(i):= leftbyte*256 + rightbyte; 51560 1960 782 ! ! ! ! ! ! ! ! ! i:= i+1; 51570 1961 783 ! ! ! ! ! ! ! ! END; 51580 1962 784 ! ! ! ! ! ! ! ! 51590 1963 785 ! ! ! ! ! ! ! END (* case *); 51600 1964 786 ! ! ! ! ! ! ! 51610 1965 787 ! ! ! ! ! ! ! j:= 1-j; 51620 1966 788 ! ! ! ! ! ! END; 51630 1967 789 ! ! ! ! ! ! 51640 1968 790 ! ! ! ! ! ! IF (j=1) AND (i<=messbufsize) THEN 51650 1969 791 ! ! ! ! ! ! IF leftbyte>=128 THEN 51660 1970 792 ! ! ! ! ! ! BEGIN 51670 1971 793 ! ! ! ! ! ! ! IF messbuf(i)>0 THEN 51680 1972 794 ! ! ! ! ! ! ! messbuf(i):= (leftbyte-128)*256 + rightbyte 51690 1973 795 ! ! ! ! ! ! ! ELSE messbuf(i):= - 32768; 51700 1974 796 ! ! ! ! ! ! ! messbuf(i):= -((32767-messbuf(i))+1); 51710 1975 797 ! ! ! ! ! ! END 51720 1976 798 ! ! ! ! ! ! ELSE 51730 1977 799 ! ! ! ! ! ! messbuf(i):= leftbyte*256 + rightbyte; 51740 1978 800 ! ! ! ! ! END (* lock *); 51750 1979 801 ! ! ! ! END (* params ok *); 51760 1980 802 ! ! ! END (* partial *); 51770 1981 803 ! ! ! \f tsaoslst 81.06.10. 12.29. page 68 52010 1982 804 ! ! ! "r": (* return *) 52020 1983 805 ! ! ! (* returns current buffer *) 52030 1984 806 ! ! ! IF nil(cur) 52040 1985 807 ! ! ! THEN outstring10("no buffer ") 52050 1986 808 ! ! ! ELSE return(cur); 52060 1987 809 ! ! ! \f tsaoslst 81.06.10. 12.29. page 69 53010 1988 810 ! ! ! "s": (* signal *) 53020 1989 811 ! ! ! (* signals current buffer to one of the predefined semaphores. 53030 1990 812 ! ! ! 1st param is semno *) 53040 1991 813 ! ! ! BEGIN 53050 1992 814 ! ! ! ! semno:= params(1); 53060 1993 815 ! ! ! ! 53070 1994 816 ! ! ! ! IF noofparams >= 1 THEN 53080 1995 817 ! ! ! ! IF (1<=semno) AND (semno<=noofsemaphores) THEN 53090 1996 818 ! ! ! ! IF NOT nil(cur) THEN 53100 1997 819 ! ! ! ! signal (cur,ts_sem(semno)) 53110 1998 820 ! ! ! ! ELSE outstring10("no buffer ") 53120 1999 821 ! ! ! ! ELSE 53130 2000 822 ! ! ! ! IF (semno <= -1) AND (semno >= -applsem_max) THEN 53140 2001 823 ! ! ! ! signal( cur, evavector( -semno)) 53150 2002 824 ! ! ! ! ELSE outstring10(illegalno) 53160 2003 825 ! ! ! ! ELSE outstring10(noparam) 53170 2004 826 ! ! ! END (* signal *); 53180 2005 827 ! ! ! \f tsaoslst 81.06.10. 12.29. page 70 54010 2006 828 ! ! ! "t": (* testsem *) 54020 2007 829 ! ! ! (* tests the status of the specified semaphores. 54030 2008 830 ! ! ! if none is specified, the status of all the 54040 2009 831 ! ! ! user semaphores is given. 54050 2010 832 ! ! ! in both cases nothing will be written for a semaphore 54060 2011 833 ! ! ! if it is passive. *) 54070 2012 834 ! ! ! BEGIN 54080 2013 835 ! ! ! ! IF noofparams=0 THEN 54090 2014 836 ! ! ! ! BEGIN (* test all semaphores *) 54100 2015 837 ! ! ! ! ! 54110 2016 838 ! ! ! ! ! FOR i:= -applsem_max TO -1 DO 54120 2017 839 ! ! ! ! ! testsem( i,evavector(-i)); 54130 2018 840 ! ! ! ! ! 54140 2019 841 ! ! ! ! ! FOR i:=1 TO noofsemaphores DO 54150 2020 842 ! ! ! ! ! testsem(i,ts_sem(i)) 54160 2021 843 ! ! ! ! END (* test all *) 54170 2022 844 ! ! ! ! ELSE 54180 2023 845 ! ! ! ! BEGIN (* test the specified semaphores *) 54190 2024 846 ! ! ! ! ! 54200 2025 847 ! ! ! ! ! FOR i:=1 TO noofparams DO 54210 2026 848 ! ! ! ! ! IF (params(i)=0) OR (params(i)>noofsemaphores) 54220 2027 849 ! ! ! ! ! OR (params(i) < -applsem_max) THEN 54230 2028 850 ! ! ! ! ! BEGIN (* illegal no. *) 54240 2029 851 ! ! ! ! ! ! outstring20("illegal no.: "); 54250 2030 852 ! ! ! ! ! ! outdecimal(params(i),3); 54260 2031 853 ! ! ! ! ! ! writenl; 54270 2032 854 ! ! ! ! ! END (* illegal no *) 54280 2033 855 ! ! ! ! ! ELSE 54290 2034 856 ! ! ! ! ! BEGIN 54300 2035 857 ! ! ! ! ! ! IF params(i)>0 THEN 54310 2036 858 ! ! ! ! ! ! testsem( params(i), ts_sem(params(i))) 54320 2037 859 ! ! ! ! ! ! ELSE 54330 2038 860 ! ! ! ! ! ! testsem( params(i), evavector(-params(i))); 54340 2039 861 ! ! ! ! ! END 54350 2040 862 ! ! ! ! END (* test the specified semaphores *) 54360 2041 863 ! ! ! END (* testsem *); 54370 2042 864 ! ! ! 54380 2043 865 ! ! ! \f tsaoslst 81.06.10. 12.29. page 71 55010 2044 866 ! ! ! "u": (* user parameters *) 55020 2045 867 ! ! ! (* inserts user param into header of current buffer 55030 2046 868 ! ! ! 1st param is u1 55040 2047 869 ! ! ! 2nd param is u2 55050 2048 870 ! ! ! 3rd param is u3 55060 2049 871 ! ! ! 4th param is u4 *) 55070 2050 872 ! ! ! BEGIN 55080 2051 873 ! ! ! ! IF nil(cur) 55090 2052 874 ! ! ! ! THEN outstring10("no buffer ") 55100 2053 875 ! ! ! ! ELSE 55110 2054 876 ! ! ! ! IF noofparams = 0 THEN 55120 2055 877 ! ! ! ! outstring10(noparam) 55130 2056 878 ! ! ! ! ELSE 55140 2057 879 ! ! ! ! WITH cur^ DO 55150 2058 880 ! ! ! ! BEGIN 55160 2059 881 ! ! ! ! ! IF testinterval (params(1),0,255) THEN u1:= params(1); 55170 2060 882 ! ! ! ! ! IF (noofparams>=2) THEN IF testinterval(params(2),0,255) THEN 55180 2061 883 ! ! ! ! ! u2:= params(2); 55190 2062 884 ! ! ! ! ! IF (noofparams>=3) THEN IF testinterval(params(3),0,255) THEN 55200 2063 885 ! ! ! ! ! u3:= params(3); 55210 2064 886 ! ! ! ! ! IF (noofparams>=4) THEN IF testinterval(params(4),0,255) THEN 55220 2065 887 ! ! ! ! ! u4:= params(4); 55230 2066 888 ! ! ! ! END 55240 2067 889 ! ! ! END; (* end user parameters *) 55250 2068 890 ! ! ! 55260 2069 891 ! ! ! \f tsaoslst 81.06.10. 12.29. page 72 56010 2070 892 ! ! ! "w": (* wait *) 56020 2071 893 ! ! ! (* waits for semaphore semno. 56030 2072 894 ! ! ! 1st param is semno *) 56040 2073 895 ! ! ! BEGIN 56050 2074 896 ! ! ! ! semno:= params(1); 56060 2075 897 ! ! ! ! 56070 2076 898 ! ! ! ! IF noofparams >= 1 THEN 56080 2077 899 ! ! ! ! IF nil(cur) THEN 56090 2078 900 ! ! ! ! IF ((semno>0) AND (semno <= noofsemaphores)) 56100 2079 901 ! ! ! ! OR ((semno<0) AND (semno >= -applsem_max)) THEN 56110 2080 902 ! ! ! ! BEGIN 56120 2081 903 ! ! ! ! ! IF semno > 0 THEN 56130 2082 904 ! ! ! ! ! sensesem( cur, ts_sem(semno)) 56140 2083 905 ! ! ! ! ! ELSE 56150 2084 906 ! ! ! ! ! sensesem( cur, evavector(-semno)); 56160 2085 907 ! ! ! ! ! IF nil(cur) THEN 56170 2086 908 ! ! ! ! ! outstring20("semaphore not open ") 56180 2087 909 ! ! ! ! ! ELSE 56190 2088 910 ! ! ! ! ! BEGIN 56200 2089 911 ! ! ! ! ! ! get_curbuftype; 56210 2090 912 ! ! ! ! ! ! outstring10(" bufsize "); 56220 2091 913 ! ! ! ! ! ! outinteger(curbufsize, 5); 56230 2092 914 ! ! ! ! ! ! outinteger(cur^.size, 5) 56240 2093 915 ! ! ! ! ! END; 56250 2094 916 ! ! ! ! END 56260 2095 917 ! ! ! ! ELSE outstring10(illegalno) 56270 2096 918 ! ! ! ! ELSE outstring20("you already have one") 56280 2097 919 ! ! ! ! ELSE outstring10(noparam) 56290 2098 920 ! ! ! END (* wait *); 56300 2099 921 ! ! ! \f tsaoslst 81.06.10. 12.29. page 73 57010 2100 922 ! ! ! "x": (* exchange pointer *) 57020 2101 923 ! ! ! BEGIN 57030 2102 924 ! ! ! ! IF noofparams >= 2 THEN 57040 2103 925 ! ! ! ! IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN 57050 2104 926 ! ! ! ! IF (params(2)>0) AND (params(2)<=noofsemaphores) THEN 57060 2105 927 ! ! ! ! BEGIN 57070 2106 928 ! ! ! ! ! worksem:= sem(params(1)).w; 57080 2107 929 ! ! ! ! ! sem(params(1)).w:= sem(params(2)).w; 57090 2108 930 ! ! ! ! ! sem(params(2)).w:= worksem; 57100 2109 931 ! ! ! ! END 57110 2110 932 ! ! ! ! ELSE outstring10(valparam) 57120 2111 933 ! ! ! ! ELSE outstring10(valparam) 57130 2112 934 ! ! ! ! ELSE outstring10(noparam) 57140 2113 935 ! ! ! END (* exchange pointer *); 57150 2114 936 ! ! ! 57160 2115 937 ! ! ! 57170 2116 938 ! ! ! OTHERWISE (* error *) 57180 2117 939 ! ! ! outstring20 ("illegal comm. type h"); 57190 2118 940 ! ! END (* case *); 57200 2119 941 ! ! 57210 2120 942 ! ! IF command<>";" THEN 57220 2121 943 ! ! writenl; 57230 2122 944 ! ! 57240 2123 945 ! UNTIL false; 57250 2124 946 ! 57260 2125 947 END. 57270 2126 57280 2127 57290 2128 57300 2129 \f tsaoslst 81.06.10. 12.29. page 74 0 39* 52* 81* 162* 162* 163* 169* 169* 169* 386 391 413 414 420 429 439: 439 451 477 479 528 613 623 657 661 666 722* 745 754 764 770 777 789 800 801 801 828 831 836 846 851 852 951 957 959 975 1022 1044 1051 1096 1111 1188 1189 1273 1296 1297 1299 1305 1306 1307 1308 1614 1616 1706 1754 1756 1776 1792 1817 1827 1894 1919 1933 1943: 1954 1971 2013 2026 2035 2054 2059 2060 2062 2064 2078 2079 2081 2103 2104 1 40* 51* 71* 72* 73* 74* 81* 84* 85* 108* 158* 159* 371 401 412 421 431 440: 492 495 504 565: 583 589 609 699 723* 736 739 753 754 759 764 772 784 786 789 793 794 808 823 827 849 853 855 861 865 880 888 897 913 915 1020 1029 1046 1061 1062 1120 1199 1221 1225 1242 1253 1260 1268 1292 1294 1324 1331 1337 1345 1348 1350 1352 1374 1378: 1413 1416 1420 1427 1431 1480 1560 1560 1567 1574: 1584 1615 1616 1616 1617 1617 1626 1627 1630 1659 1661: 1688 1721 1727 1801 1869 1869 1869 1870 1871 1885: 1916 1916 1919 1926 1948: 1955 1960 1965 1968 1974 1992 1994 1995 2000 2016 2019 2025 2059 2059 2074 2076 2103 2103 2106 2107 2 372 390 402 414 433 441: 525 569: 591 631 774 775 777 778 786 787 789 790 796 797 800 801 807: 833 1005: 1033: 1222 1225 1228 1331 1350 1385 1389: 1413 1474 1514 1532 1557 1569 1576: 1680 1698: 1718 1753 1777 1824 1873 1873 1874 1887: 1896 1913 1919 1927 2060 2060 2061 2102 2104 2104 2107 2108 3 94* 169* 373 388 435 442: 573: 631 633 813 826 1106 1124 1138 1191 1195 1396: 1404 1405 1432 1446 1448 1463 1490 1506 1522 1534 1578: 1739: 1757 1789 1825 1882 1889: 1938 2030 2062 2062 2063 4 164* 436 443: 577: 672 685 818 819 1017 1071 1084 1354 1412: 1580: 1637 1643 1768: 1818 1863 1864 1865 1866 1891: 2064 2064 2065 5 163* 164* 534 581: 608 1312 1313 1438: 1486 1682 1720 1755 1810: 1826 2091 2092 6 50* 412 587: 814 1012 1195 1455: 1489 1791 7 162* 163* 164* 416 585 593: 1371 1382 1667 1707 1745 1899 8 602: 812: 825 1010: 1034: 1331 1683 1722 9 389 606: 843 1196 1794 10 84* 419 485 610: 710 741 880 960 973 1186 1196 1267 1269 1331 1471: 1797 11 614: 1499: 12 96* 620: 888 1511: 13 624: 1528: 1684 1723 14 419 421 629: 1196 1686 1726 15 635: 722* 772 784 794 831 1687 1725 1798 16 36* 809 817: 956 980 1007 1015: 1026 1035: 1187 1331 1712 1800 17 639: 1897 18 647: 19 654: 20 85* 658: 719* 897 21 37* 663: \f tsaoslst 81.06.10. 12.29. page 75 40 579 50 158* 502 63 591 64 33* 633 80 31* 49* 87 969 992 1041 100 531 1195 120 34* 35* 128 1951 1953 1969 1972 255 1934 2059 2060 2062 2064 256 390 1777 1818 1934 1936 1945 1953 1959 1972 1977 257 585 512 613 623 657 661 666 1000 1195 1024 1266 2048 1035 3276 983 4096 1034 16384 1033 32767 1046 1955 1974 32768 985 1045 1956 1973 a 89* 398* 400 401 402 403 410* 413= 416= 420= 422 423 1098= 1099= 1672: 1678 1679 1680 1681 1682 abs 751 1945 abuf 1749: 1750 aic_buf_type 1418 aic_id 1420= aic_q 1421= al 1752 1753 1754 1755 1756 alarmlabel 1672 alarm_mess 1406 1449 1491 1523 alarm_opsys 4* alfa 66* 346* 514* 884* alfa10 84* 343* 874* alfa20 85* 349* 361* 892* 1079* alfalength 50* alloc 1227 1240 1255 1262 1300 1302 alreadyexists <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 44* 523 686 al_env_version <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1184 al_lam1 1216 al_mac_addr 1683= 1722= 1797= ap 167* 1098 1101= 1104 1136 \f tsaoslst 81.06.10. 12.29. page 76 applsem_max 1297 2000 2016 2027 2079 appl_vector 5* as 454: 460: 696: 909: 1060: 1159: 1229: 1244: 1384: 1401: 1418: 1429: 1443: 1460: 1476: 1504: 1516: 1533: 1574: 1576: 1578: 1580: 1671: 1710: 1749: 1780: 1821: 1885: 1887: 1889: 1891: 1931: atbuffer 81* atconnector 199* 583 atcsem 202* atc_pri 586 atc_sem_no 583 583 atc_size 586 athsem 205* ath_pri 572 ath_sem_no 584 ath_size 572 at_handler 177* 571 a_l 1715 1716 1717 1718 1719 1720 1721 1784 1826 1827 1828 base 132* 484 485= 498= 508= 709 710= 712= 741 751 752 806 825 956 960 973 980 991 992 1004 1026 1032 1039 1041 1267= 1326= 1334= 1337= 1896 bit 722* bits 722* 774= 777= 786= 789= 796 797= 797 800 801= 801 833 boolean 154* 326* 475* 678* 733* 935* 1065* 1093* bp 167* 1099 1101 1104 1136 break 1633 buf 1384: 1385 1401: 1402 1418: 1420 1421 1429: 1431 1432 1443: 1444 1460: 1461 1476: 1477 1504: 1505 1516: 1517 1533: 1534 1671: 1676 1710: 1712 1713 1780: 1781 1821: 1822 byte 78* 81* 168* 213* 230* 297* 329* 378* call_buf 1482 car_buf_type 1476 ch 693* 700 940* 946= 953 954= 955 956 967 968 969 977= 979 980 983 990 991 992 1006 1011 1016 1024= 1025 1026 1038 1039 1041 channelno 213* 230* char 67* 84* 85* 128* 352* 693* 723* 904* 940* chr 751 844 845 clear_buf_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1533 command 128* 466= 468 481 496 1281 1632 2120 com_pool 585 591 598 617 633 643 1255 1663 1741 com_pool_sem 304* com_sem 208* 225* 241* control 1447 1484 1521 1783 1824 1825 controlinfo 78* countref 112* 1114 1115 1119 1127 1128 \f tsaoslst 81.06.10. 12.29. page 77 countsem 102* 1119 1125 1127 create 527 createchtype 76* createerror 47* 532 cur 115* 428 430 432 434 1255 1256 1262 1263 1295 1300 1302 1303 1313 1563 1574: 1576: 1578: 1580: 1856 1863 1864 1865 1866 1878 1885: 1887: 1889: 1891: 1922 1929 1931: 1984 1986 1996 1997 2001 2051 2057 2077 2082 2084 2085 2092 curbufsize 145* 439= 440= 441= 442= 443= 1312 1571 1870 1873 1875 1876 1878 2091 curbuftype 146* 429= 431= 433= 435= 436= 438 1573 1884 curdigit 724* 823= 838 839 844 845 849 853= 853 937* 1020= 1029= 1029 1030 1042 curpos 725* 826= 827= 834 852= 855= 855 c_b 1713 c_i 1712= da 1406= 1449= 1491= 1523= 1758= data 67* 700= 912 1234= 1825= dcaddr 227* dcmodule 261* 616 dcsem 237* dc_addr 162* 180* 188* 210* 400= 571 575 585 591 633 dc_int1 618 dc_int2 618 dc_int3 618 dc_sem_no 596 618 dc_sim_pri 619 dc_sim_size 619 diag_code 1534= digit 935* 947= 955= 957 965 975 979= 981 1022 1025= 1027 digits 723* 739= 751= 758= 764= 839= 844= 845= 867 930* 955 967 979 990 1025 1038 doesntexist 45* done 277* driversem 206* dst 388= dtesimulator 283* 649 dte_addr 169* 292* 652 1188 1189 1190 1191 dte_adr 1486= dte_adr_l 1485= dte_aic 1415 1506 dte_car 1404 1473 1484 dte_clr 1463 1530 dte_pax_addr 367* 374= 387 388 dte_rdata 1775 1816 dte_rejic 1426 dte_ric 1391 1705 \f tsaoslst 81.06.10. 12.29. page 78 dte_sdata 1446 1513 dte_sdata_data <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1516 dte_sem 287* 306* dte_sem_no 600 644 649 1262 1545 d_a 1728= evavector 5* 1206 1208 1210 1212 1214 1216 1302 2001 2017 2038 2084 external 175* 183* 191* 197* 214* 231* 248* 254* 259* 265* 270* 281* 294* 308* 313* 318* 323* 327* 330* ext_addr 373= 1191= ext_no 1385= ext_pax_addr 407* 410* facility 389= 1489= facility_l 1488= false 489 499 687 848 944 947 962 986 1073 1116 1182 1421 1481 1519 1520 2123 first 63* 463 1065* 1068 1232= 1247= 1479= firstindex 50* 51* 67* 455 464 1160 1232 1234 1247 firstword 133* 1268= 1871= 1880 format 383= format_1_packet_header <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 379* free 276* from_link 1372 getinput 447* 1279 getparams 334* 470 473* get_curbuftype <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 426* 1310 2089 global_timeout <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 297* glob_timeout 641 h 726* 831= 833 h2f 1633 h30 1747 1828 hac 1669 1716 1787 hexdigits 931* 956 980 1026 i 134* 361* 367* 370 371 372 373 378* 387 388 409* 412= 413 414= 416 416 417 419= 420 421= 422 726* 739= 739 743= 751 753= 753 754 758 759= 759 762 772= 774 784= 786 794= 796 797 797 865= 867 878* 880= 881 886* 888= 889 895* 897= 898 1065* 1068 1068 1071 1079* 1084 1089* 1096 1098 1099 1106 1138 1199= 1201 1201 1202 1202 1225= 1253= 1260= 1405= 1406 1406 1448= 1449 1449 1490= 1491 1491 1522= 1523 1523 1567= 1571 1575 1577 1579 1581 1584= 1584 1615= 1615 1615 1627= 1629 1673: 1686= 1757= 1758 1758 1880= 1882 1886 1888 1890 1892 1926= 1933 1934 1936 1940 1945 1953 1954 1955 1955 1956 1959 1960= 1960 1968 1971 1972 1973 1974 1974 1977 2016= 2017 2017 2019= 2020 2020 2025= 2026 2026 2027 2030 2035 2036 2036 2038 2038 \f tsaoslst 81.06.10. 12.29. page 79 illegalno 46* 673 1070 1315 1355 1644 2002 2095 incharsleft 135* 463= 915= 915 951 957 975 1022 1051 1062= 1062 incname 1183 inc_name 514* 527 533 index 329* 512* 522 527 529 541* 564 566 570 574 578 582 588 594 603 607 611 615 621 625 630 636 640 648 655 659 664 672 indx 1725= 1794= init_modul 541* 1358 init_proc 511* 566 570 574 578 582 588 594 603 607 611 615 621 625 630 636 640 648 655 659 664 inputsem 243* 253* insem 321* insert_code 1679 1717 1788 int 337* 340* 704* 711 715* 745 751 752= 752 754 764 770 774 775= 775 777 778= 778 786 787= 787 789 790= 790 integer 65* 71* 72* 73* 74* 148* 158* 196* 212* 229* 252* 329* 337* 340* 355* 361* 367* 378* 396* 407* 409* 512* 517* 520* 541* 678* 704* 715* 731* 878* 886* 895* 921* 938* 1065* 1079* 1089* 1673 int_pax_addr 169* 169* 292* 367* 368* j 136* 1111= 1120= 1120 1124 1569= 1575 1577 1579 1581 1886= 1888= 1890= 1892= 1894= 1897 1899 1927= 1942 1965= 1965 1968 k 137* 1938= 1946 1950 label_size 1405 1448 1490 1522 1757 lam 250* 608 lamsem 223* 239* lam_sem_no 584 597 608 616 1216 1217 1217 lam_size 609 last 64* 699= 699 700 1065* 1068 1160= 1248= 1480= lastchar 940* 945= 953= 961 lastindex 51* 67* 1248 lastword 138* 1269= 1874= 1875 1876= 1880 leftbyte 139* 1934= 1936= 1946= 1951 1953 1959 1969 1972 1977 level 252* linelength 49* 51* link 526 local_sem_table <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 302* lock 454: 460: 696: 909: 1060: 1159: 1229: 1244: 1384: 1401: 1418: 1429: 1443: 1460: 1476: 1504: 1516: 1533: 1574: 1576: 1578: 1580: 1671: 1710: 1749: 1780: 1821: 1885: 1887: 1889: 1891: 1931: locked 1134 l_control 1480 l_dte_adr 1485 l_facilities 1488 \f tsaoslst 81.06.10. 12.29. page 80 l_listen 1405 1448 1480 1490 1522 1678 1715 1752 1757 1786 m 727* 793= 796 797 798= 800 801 802= macro 1680= 1682= 1718= 1720= 1753= 1755= 1789= 1791= 1826= macroaddr 162* 162* 163* 163* 164* 164* 181* 189* 211* 228* 396* 398* main 275* main_sem 301* make_phead 377* 1404 1446 1463 1506 max 196* maxbuf 1578: 1579= 1889: 1890 maxbufsize 35* 74* 432 442 maxbuftype 74* 1578 1889 maxpos 719* 723* 739 743 762 823 838 849 861 865 865 max_alarm_mess <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1749 max_retrans 1688= 1727= 1801= messbuf 1576: 1577= 1887: 1888 1931: 1933 1934 1936 1945 1953= 1954 1955= 1955 1956= 1959= 1971 1972= 1973= 1974= 1974 1977= messbufpool 97* 1255 messbufsize 33* 71* 430 441 1929 1940 1968 messbuftype 71* 97* 1576 1887 1931 messem 219* micaddr 229* micro 1681= 1719= 1721= 1754= 1756= 1790= 1792= 1827= minbuf 1574: 1575= 1885: 1886 minbufsize 36* 73* 428 440 minbuftype 73* 1574 1885 min_rut_mess 59* moduleno 140* 678* 682 685 1348= 1352 1352 1354 1358 1358 1629= 1630 1630 1631 1633 1634 1637 1643 moduleready 678* 682= 687= 1358 more 1093* 1108= 1112 1116= m_bit 1520= n1 543* 566 566 n10 552* 611 611 621 n11 553* 615 615 n13 554* 625 625 n14 555* 630 630 n15 556* 636 636 n16 557* n17 558* 640 640 n18 559* 648 648 n19 560* 655 655 n2 544* 570 570 n20 561* 659 659 \f tsaoslst 81.06.10. 12.29. page 81 n21 562* 664 664 n3 545* 574 574 n4 546* 578 578 n5 547* 582 582 n6 548* 588 588 n7 549* 594 594 n8 550* 603 603 n9 551* 607 607 name 66* 513* 526 1233= 1249= ncsem 238* ncsup 272* 626 ncsup_int1 626 ncsup_int2 626 nc_addr 163* 401= nc_sem_no 597 626 1222 nc_sup_size 628 negative 733* 745= 756 935* 961= 962= 983 986= 997 1006= 1011= 1016= 1030 1042 netconnector 296* 641 netc_locals 157* 642 1221= 1222= netc_loc_sems <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 157* 302* netc_mic_addr <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1681 1719 1790 netc_pri 645 653 netc_route1 1668 netc_sem 289* netc_sem_no 598 616 627 642 650 1845 netc_size 645 653 net_addr 370= 1188= net_sem 279* newbase 475* 486= 489= 499= 506 newm 727* 796= 798 800= 802 next 65* 455= 463 464= 912 913= 913 1061= 1061 nl 1155 node_addr 372= 1190= node_no 168* 1186 1187= 1187 1190 1195 1195 1196 1196 noofdig 728* 809= 814= 819= 823 noofdigit 937* 1007= 1012= 1017= 1030 1042 noofmodules 37* 159* 1352 1630 noofparams 141* 479= 492= 492 493 494 495 502 504= 504 525 1273= 1294 1324 1345 1350 1557 1569 1614 1626 1627 1869 1873 1913 1938 1994 2013 2025 2054 2060 2062 2064 2076 2102 noofpos 729* 808= 813= 818= 834 noofsemaphores <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 38* 1296 1615 1616 1995 2019 2026 2078 2103 2104 \f tsaoslst 81.06.10. 12.29. page 82 noparam 43* 1317 1327 1360 2003 2055 2097 2112 no_listen 97* 1253 no_of_by 1678= 1715= 1752= 1786= no_pax_bufs 59* 1260 nref 111* 1367 1369 1371 1372 1380 1381 1382 1384: 1391 1392 1398 1399 1400 1401: 1415 1416 1417 1418: 1426 1427 1428 1429: 1440 1441 1442 1443: 1457 1458 1459 1460: 1473 1474 1475 1476: 1501 1502 1503 1504: 1513 1514 1515 1516: 1530 1531 1532 1533: 1545 1663 1665 1667 1668 1669 1671: 1701 1703 1705 1706 1707 1708 1710: 1741 1743 1745 1746 1747 1749: 1771 1773 1775 1776 1777 1778 1780: 1812 1814 1816 1817 1818 1819 1821: 1844 1845 nul 945 946 oflow 326* ok 52* 458 520* 527= 528 531= 531 534 okl 519* 526= 531 536= oldbase 142* 484= 498 508 709= 712 1326 1334 op 173* 178* 186* opbuf 454: 455 460: 461 696: 697 909: 910 1060: 1061 1061 1159: 1160 1229: 1230 1244: 1245 opbufpool 94* 1227 1240 opbufsize 31* opbuftype 61* 94* 454 460 696 909 1060 1159 1229 1244 opc_command 1447 1521 1783 open 1102 1125 operatorsem 1180 opinref 113* 454: 456 457 458 460: 909: 1060: 1240 1242 1244: opoutref 114* 696: 1153 1156 1158 1159: 1227 1228 1229: 1236 opsem 120* 194* 200* 217* 234* 251* 257* 262* 268* 273* 322* 456 567 571 575 579 583 589 595 604 608 612 616 622 626 631 637 656 660 665 1156 1180= 1183 op_code 378* 390 1447= 1484= 1521= 1716= 1783= 1787= 1824= 1828= op_sem 311* 316* ord 468 751 844 845 968 968 969 991 991 992 1039 1039 1041 org 387= outchar 693* 859 867 881 889 898 1105 1105 1107 1137 1137 1139 1155 1860 1861 1883 outdecimal 337* 534 672 685 704* 1106 1124 1138 1354 1637 1643 1882 2030 outinteger 340* 711 715* 1071 1084 1312 1313 1863 1864 1865 1866 1897 1899 2091 2092 outstring10 343* 673 874* 1070 1140 1311 1315 1317 1327 1355 1360 1365 1543 1548 1558 1564 1618 1638 1644 1648 1656 1842 1847 1857 1914 1923 1985 1998 2002 2003 2052 2055 2090 2095 2097 2110 2111 2112 outstring12 346* 533 884* outstring20 349* 523 532 686 892* 1083 1316 1333 1561 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1879 1917 1920 1930 2029 2086 2096 2117 \f tsaoslst 81.06.10. 12.29. page 83 own 1183 ownaddr 212* p 379* 381 515* 526 527 536 1674: 1683 1684 1687 1688 packet_type 385= packextnode 406* 423= packmacro 395* 403= 1680 1682 1683 1718 1720 1722 1753 1755 1789 1791 1797 1826 par 396* 400 401 402 407* 416 417 params 158* 370 371 372 373 389 390 400 401 402 416 417 493= 494 1292 1331 1337 1348 1350 1374 1385 1413 1432 1474 1486 1489 1514 1532 1534 1560 1567 1575 1577 1579 1581 1616 1616 1617 1617 1629 1659 1684 1686 1687 1712 1723 1725 1726 1777 1794 1798 1800 1818 1824 1825 1869 1870 1871 1873 1874 1916 1919 1926 1927 1946 1950 1992 2026 2026 2027 2030 2035 2036 2036 2038 2038 2059 2059 2060 2061 2062 2063 2064 2065 2074 2103 2103 2104 2104 2106 2107 2107 2108 paxbufpool 98* 1262 paxnet_config <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1195 1195 1196 1196 1486 1684 1723 1798 paxnet_e 1674 paxpooltype 59* 98* pax_addr 1684= 1723= 1728 1798= pax_adr 368* 370 371 372 373 374 pax_ncp_sem 600 1214 1215 1215 pax_pool 642 649 1263 1367 1701 1771 1812 pax_pool_sem 286* 300* pax_sem_1 599 651 1208 1209 1209 pax_sem_2 599 651 1206 1207 1207 pax_sem_3 1210 1211 1211 pax_sem_4 1212 1213 1213 phead 1404 1446 1463 1506 point_rec 88* 167* pool 59* 94* 96* 97* positions 337* 340* 704* 711 715* 859 861 862 863= 865 pr 40* prio 517* 529 priority 384= process 4* 172* 177* 185* 193* 199* 216* 233* 250* 256* 261* 267* 272* 283* 296* 310* 315* 320* processrec 515* processref 526 536 pu 39* 252* 608 px_ncp 1214 px_urec1 1206 px_urec2 1210 px_utrm1 1208 \f tsaoslst 81.06.10. 12.29. page 84 px_utrm2 1212 p_e 1722 1723 1726 1727 1728 1795 quesem 203* 220* q_bit 1481= 1519= readchar 352* 466 904* 912= 954 977 1024 readinteger 355* 493 921* 1055= readok 151* 502 944= 970= readram 329* 1186 rec 1680 1681 1718 1719 1753 1754 1789 1790 1826 1827 ref 1181 1201 1206 1208 1210 1212 1214 1216 reference 116* reg_addr 371= 1189= rejic_buf_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1429 rejic_diag 1432= rejic_id 1431= remove 1634 repeatchar 358* 1053 1058* res 730* 828= 833= 833 836 843 844 845 846 851= result 329* 938* 959= 968= 969= 983 985= 991= 991 992= 992 997= 997 1033= 1033 1034= 1034 1035= 1035 1039= 1039 1041= 1041 1044 1045= 1046= 1046 1055 return 1236 1256 1986 ric_first_val <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1479 1480 rightbyte 143* 1945= 1950= 1953 1959 1972 1977 rut_con 1380 rut_default 1400 1442 1459 1503 rut_format_1 383 rut_ok 1381 1399 1441 1458 1502 rut_pack_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 385 rut_prefix_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1384 rut_prio_0 384 rut_rec 1398 1440 1457 1501 rut_rec_sem 291* rut_trm_sem 290* rut_trp_pdata <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1401 1443 1460 1504 s 584 584 584 590 590 590 595 596 597 597 597 616 616 617 627 627 632 632 632 644 644 650 651 651 1098 1201= 1202 1206= 1207 1208= 1209 1210= 1211 1212= 1213 1214= 1215 1216= 1217 1221 1222 1255 1262 1263 1545 1615 1617 1845 sem 122* 258* 312* 317* 567 571 575 579 583 583 584 584 584 585 589 589 590 590 590 591 595 596 597 597 597 598 598 599 599 600 600 604 608 612 616 616 617 617 618 618 618 618 622 626 626 \f tsaoslst 81.06.10. 12.29. page 85 626 627 627 631 631 632 632 632 633 637 642 642 643 644 644 649 649 650 651 651 656 660 1098 1099 1201 1202 1202 1206 1207 1207 1208 1209 1209 1210 1211 1211 1212 1213 1213 1214 1215 1215 1216 1217 1217 1221 1222 1255 1262 1263 1367 1545 1615 1615 1617 1617 1663 1701 1741 1771 1812 1845 2106 2107 2107 2108 sem1 263* sem2 263* sem3 263* sem4 263* sem5 264* sem6 264* sem7 264* sem8 264* semaphore 107* 108* 1089* semint1 244* semint2 245* semint3 246* semint4 247* semno 144* 1292= 1296 1296 1297 1297 1299 1300 1302 1992= 1995 1995 1997 2000 2000 2001 2074= 2078 2078 2079 2079 2081 2082 2084 sempointer 89* 119* 120* 121* 173* 178* 186* 194* 200* 208* 217* 225* 234* 241* 251* 257* 262* 263* 268* 273* 280* 284* 291* 298* 306* 311* 316* 322* semvector 4* 1180 send 1682 1720 1721 1755 1756 1791 1792 sensesem 1114 1367 1663 1701 1741 1771 1812 2082 2084 setoflowmask 326* 1271 sh 159* 522 527 529 682 1631 1633 1634 shadow 159* signal 456 1119 1128 1156 1263 1545 1845 1997 2001 signs 932* size 428 430 432 434 516* 525 1313 1878 1929 2092 sp 739 859 spool_sem 101* 1181 spool_test_sem <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 119* 641 649 665 1181= st 147* 525= 527 1266= 1350= start 529 state 386= stream_no 1687= 1726= 1800= system_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 4* tab_sem 269* tap 267* 612 622 tap1_sem_no 622 \f tsaoslst 81.06.10. 12.29. page 86 tapdte 310* 656 tapnet 315* 660 tap_dte_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 656 tap_net_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 660 tap_sem_no 612 testbuf 1580: 1581= 1891: 1892 testbufpool 96* 1300 1302 testbufsize 34* 72* 434 443 testbuftype 72* 96* 1580 1891 testinterval 1065* 1073= 1076= 2059 2060 2062 2064 testmode 153* 1081 1182= 1651= 1651 testmodeout 361* 451 468 477 494 1079* testopen 1183 testout 417 422 1184 1194 testoutput 320* 665 testsem 1089* 2017 2020 2036 2038 test_sem 284* 298* text 343* 346* 349* 361* 874* 881 884* 889 892* 898 1079* 1083 ticklength 196* timeout 78* timeoutsem 195* 224* 240* 280* timeout_sem 305* timeout_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 579 584 590 597 617 627 632 644 time_out_unit <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 579 timout 193* 579 timsem 207* tim_pri 580 tim_size 580 top_of_data 391= to_link 1392 1417 1428 1475 1515 1531 1708 1778 1819 true 486 682 829 970 1006 1011 1016 1076 1108 1271 tsaddr 228* tsconnector 233* 595 tsc_pri 601 tsc_size 601 tsssem 236* tssuper 172* 567 tssup_sem_no 595 1221 tss_pri 568 628 tss_route 1746 \f tsaoslst 81.06.10. 12.29. page 87 tss_size 568 tst_ric_type 1710 tst_sdata_data <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1780 1821 ts_addr 164* 181* 189* 211* 402= 571 575 585 591 633 ts_pointer 195* 203* 220* 247* 253* 264* 269* 277* 287* 301* 312* 317* ts_pointer_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 122* 174* 182* 190* 258* ts_sem 108* 174* 182* 190* 1201 1300 1997 2020 2036 2082 ts_sem_total 38* 108* 1199 t_sem 1089* 1102 1114 1128 1134 u1 1228= 1242= 1305= 1380= 1391= 1398= 1415= 1426= 1440= 1457= 1473= 1501= 1513= 1530= 1705= 1775= 1816= 1863 2059= u2 458 1306= 1371= 1381= 1399= 1441= 1458= 1502= 1667= 1706= 1745= 1776= 1817= 1864 2061= u3 1307= 1382= 1400= 1416= 1427= 1442= 1459= 1474= 1503= 1514= 1532= 1668= 1707= 1746= 1777= 1818= 1865 2063= u4 1308= 1372= 1392= 1417= 1428= 1475= 1515= 1531= 1669= 1708= 1747= 1778= 1819= 1866 2065= unlink 536 update 1679= 1717= 1788= used 731* 736= 762= 849= 859 862 863 user_field 390= vac_size 592 vagt 256* 604 637 valparam 42* 1618 2110 2111 vas_sem_no 590 vas_size 605 vcc 216* 589 631 vcc_pri 592 634 vcc_sem_no 589 589 631 631 vchsem 222* vch_pri 576 vch_sem_no 590 632 vch_size 576 vc_handler 185* 575 vc_sim_pri 605 638 version 26* 1184 vic_size 634 vis_sem_no 632 vis_size 638 w 585 591 598 617 633 643 1099 1202= 1207= 1209= 1211= 1213= 1215= 1217= 1367 1615= 1617= 1663 1701 1741 1771 1812 2106 2107= 2107 2108= wait 457 1127 1158 worksem 121* 2106= 2108 writenl 364* 535 1072 1085 1131 1141 1149* 1238 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1639 1645 1867 1900 2031 2121 \f tsaoslst 81.06.10. 12.29. page 88 wrsem 105* 457 1240 wsem 103* 1158 1227 z 125* 417 422 1183 1184 1194 zeroes 733* 829= 836 846 848= zone 125* \f tsaoslst 81.06.10. 12.29. page 89 AND 25 ARRAY 13 BEGIN 160 CASE 11 CONST 5 DIV 9 DO 88 DOWNTO 3 ELSE 77 END 175 FOR 30 FORWARD 11 FUNCTION 9 IF 123 IN 14 MOD 11 NIL 21 NOT 16 OF 28 OR 13 OTHERWISE 6 PROCEDURE 27 RECORD 4 REPEAT 5 THEN 123 TO 27 TYPE 1 UNTIL 5 VAR 44 WHILE 4 WITH 22 \f oer7 1981.06.10 12.31 tsaos program 81.06.10. 12.32. pascal80 version 1981.04.01 name headline beginline endline appetite(words) dte_pax_addr 368 370 375 : 8 make_phead 380 383 393 : 17 packmacro 398 400 404 : 6 packextnode 409 412 424 : 29 get_curbufty 427 429 445 : 2 getinput 449 451 471 : 21 getparams 475 477 509 : 25 init_proc 519 523 539 : 29 init_modul 543 565 676 : 58 moduleready 681 682 689 : 19 outchar 695 696 702 : 9 outdecimal 708 709 713 : 10 outinteger 719 736 870 : 47 outstring10 878 880 882 : 17 outstring12 886 888 890 : 17 outstring20 895 897 899 : 17 readchar 908 909 916 : 11 readinteger 930 944 1056 : 17 repeatchar 1059 1060 1063 : 8 testinterval 1067 1069 1077 : 13 testmodeout 1080 1082 1087 : 18 testsem 1093 1097 1143 : 15 writenl 1152 1154 1161 : 11 alarm_opsys 26 1180 2125 : 1302 code: 7 . 576 = 21576 bytes end of PASCAL80 compilation end blocksread = 53 «eof»