|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 148992 (0x24600) Types: TextFile Names: »fetsaoslst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »fetsaoslst«
\f fetsaoslst 81.05.13. 15.17. page 1 10 1 20 2 30 3 \f fetsaoslst 81.05.13. 15.17. 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 5.02 /"; 1240 27 1250 28 1260 29 \f fetsaoslst 81.05.13. 15.17. 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 = 27; 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 fetsaoslst 81.05.13. 15.17. 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 fetsaoslst 81.05.13. 15.17. 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 fetsaoslst 81.05.13. 15.17. page 6 3390 168 node_no : byte; 3400 169 dte_addr : int_pax_addr := int_pax_addr(0,0,0,3); 3410 170 \f fetsaoslst 81.05.13. 15.17. page 7 4010 171 (********** externals **********) 4020 172 PROCESS fesupervisor( 4030 173 op: sempointer; 4040 174 VAR input_sem, write_sem, que_up, que_down : ! ts_pointer; 4050 175 VAR stream_sem, netc_sem, com_pool : ! sempointer); 4060 176 EXTERNAL; 4070 177 PROCESS streamer( 4080 178 VAR inputsem, xmitter, receiver: ! ts_pointer; 4090 179 retrans_max: integer; 4100 180 op: sempointer); 4110 181 4120 182 EXTERNAL; 4130 183 4140 184 PROCESS fpadriver( 4150 185 VAR sem: ! ts_pointer; 4160 186 level, block: integer; 4170 187 rec: boolean; 4180 188 op: sempointer); 4190 189 EXTERNAL; 4200 190 4210 191 PROCESS osif( 4220 192 op_sem: sempointer; 4230 193 VAR inputsem: ! ts_pointer; 4240 194 VAR streamsem, lamsem: ! sempointer; 4250 195 streamno, 4260 196 streambufs, 4270 197 ttybufs, 4280 198 port: byte); 4290 199 EXTERNAL; 4300 200 PROCESS mirror( 4310 201 op_sem : sempointer; 4320 202 VAR in_sem : !ts_pointer; 4330 203 VAR str_sem : !sempointer; 4340 204 rec, 4350 205 xmit : byte); 4360 206 EXTERNAL; 4370 207 PROCESS tssuper( 4380 208 op: sempointer; 4390 209 VAR ts_sem : !ts_pointer_vector); 4400 210 EXTERNAL; 4410 211 4420 212 PROCESS at_handler( 4430 213 op: sempointer; 4440 214 VAR 4450 215 dc_addr, 4460 216 ts_addr: !macroaddr; \f fetsaoslst 81.05.13. 15.17. page 8 4470 217 VAR ts_sem : !ts_pointer_vector); 4480 218 EXTERNAL; 4490 219 4500 220 PROCESS vc_handler( 4510 221 op: sempointer; 4520 222 VAR 4530 223 dc_addr, 4540 224 ts_addr: !macroaddr; 4550 225 VAR ts_sem : !ts_pointer_vector); 4560 226 EXTERNAL; 4570 227 4580 228 PROCESS timout( 4590 229 opsem: sempointer; 4600 230 VAR timeoutsem: !ts_pointer; 4610 231 ticklength, max: integer); 4620 232 EXTERNAL; 4630 233 4640 234 PROCESS atconnector( 4650 235 opsem: sempointer; 4660 236 VAR 4670 237 atcsem, 4680 238 quesem : !ts_pointer; 4690 239 VAR 4700 240 athsem, 4710 241 driversem, 4720 242 timsem, 4730 243 com_sem: !sempointer; 4740 244 VAR 4750 245 dc_addr, 4760 246 ts_addr: !macroaddr; 4770 247 ownaddr: integer; 4780 248 channelno: byte); 4790 249 EXTERNAL; 4800 250 4810 251 PROCESS vcc( 4820 252 opsem: sempointer; 4830 253 VAR 4840 254 messem, 4850 255 quesem : !ts_pointer; 4860 256 VAR 4870 257 vchsem, 4880 258 lamsem, 4890 259 timeoutsem, 4900 260 com_sem: !sempointer; 4910 261 VAR 4920 262 dcaddr, \f fetsaoslst 81.05.13. 15.17. page 9 4930 263 tsaddr: !macroaddr; 4940 264 micaddr: integer; 4950 265 channelno: byte); 4960 266 EXTERNAL; 4970 267 4980 268 PROCESS tsconnector( 4990 269 opsem: sempointer; 5000 270 VAR 5010 271 tsssem, 5020 272 dcsem, 5030 273 ncsem, 5040 274 lamsem, 5050 275 timeoutsem, 5060 276 com_sem: !sempointer; 5070 277 VAR 5080 278 inputsem, 5090 279 semint1, 5100 280 semint2, 5110 281 semint3, 5120 282 semint4: !ts_pointer); 5130 283 EXTERNAL; 5140 284 5150 285 PROCESS lam( 5160 286 opsem: sempointer; 5170 287 pu, level: integer; 5180 288 VAR inputsem: !ts_pointer); 5190 289 EXTERNAL; 5200 290 5210 291 PROCESS vagt( 5220 292 opsem: sempointer; 5230 293 VAR sem: !ts_pointer_vector); 5240 294 EXTERNAL; 5250 295 5260 296 PROCESS dcmodule( 5270 297 opsem: sempointer; 5280 298 VAR sem1,sem2,sem3,sem4: !sempointer; 5290 299 VAR sem5,sem6,sem7,sem8: !ts_pointer); 5300 300 EXTERNAL; 5310 301 5320 302 PROCESS tap( 5330 303 opsem: sempointer; 5340 304 VAR tab_sem: !ts_pointer); 5350 305 EXTERNAL; 5360 306 5370 307 PROCESS ncsup( 5380 308 opsem: sempointer; \f fetsaoslst 81.05.13. 15.17. page 10 5390 309 VAR 5400 310 main, 5410 311 free, 5420 312 done: !ts_pointer; 5430 313 VAR 5440 314 net_sem, 5450 315 timeoutsem: !sempointer); 5460 316 EXTERNAL; 5470 317 5480 318 PROCESS dtesimulator ( 5490 319 test_sem : sempointer; 5500 320 VAR 5510 321 pax_pool_sem, 5520 322 dte_sem : !ts_pointer; 5530 323 VAR 5540 324 netc_sem, 5550 325 rut_trm_sem, 5560 326 rut_rec_sem : !sempointer; 5570 327 dte_addr : int_pax_addr 5580 328 ); 5590 329 EXTERNAL; 5600 330 5610 331 PROCESS netconnector ( 5620 332 global_timeout : byte; 5630 333 test_sem : sempointer; 5640 334 VAR 5650 335 pax_pool_sem, 5660 336 main_sem : !ts_pointer; 5670 337 local_sem_table : netc_loc_sems; 5680 338 VAR 5690 339 com_pool_sem, 5700 340 timeout_sem, 5710 341 dte_sem : !sempointer 5720 342 ); 5730 343 EXTERNAL; 5740 344 5750 345 PROCESS tapdte ( 5760 346 op_sem : sempointer; 5770 347 VAR sem : ! ts_pointer ); 5780 348 EXTERNAL; 5790 349 5800 350 PROCESS tapnet ( 5810 351 op_sem : sempointer; 5820 352 VAR sem : !ts_pointer ); 5830 353 EXTERNAL; 5840 354 \f fetsaoslst 81.05.13. 15.17. page 11 5850 355 PROCESS testoutput ( 5860 356 insem, 5870 357 opsem : sempointer ); 5880 358 EXTERNAL; 5890 359 5900 360 5910 361 PROCEDURE setoflowmask( oflow: boolean); 5920 362 EXTERNAL; 5930 363 5940 364 PROCEDURE readram( VAR result:byte; index : integer); 5950 365 EXTERNAL; 5960 366 5970 367 (********** forwards **********) 5980 368 5990 369 PROCEDURE getparams; 6000 370 FORWARD; 6010 371 6020 372 PROCEDURE outdecimal(int,positions: integer); 6030 373 FORWARD; 6040 374 6050 375 PROCEDURE outinteger(int,positions: integer); 6060 376 FORWARD; 6070 377 6080 378 PROCEDURE outstring10(text: alfa10); 6090 379 FORWARD; 6100 380 6110 381 PROCEDURE outstring12(text: alfa); 6120 382 FORWARD; 6130 383 6140 384 PROCEDURE outstring20(text: alfa20); 6150 385 FORWARD; 6160 386 6170 387 FUNCTION readchar: char; 6180 388 FORWARD; 6190 389 6200 390 FUNCTION readinteger: integer; 6210 391 FORWARD; 6220 392 6230 393 PROCEDURE repeatchar; 6240 394 FORWARD; 6250 395 6260 396 PROCEDURE testmodeout (text: alfa20; i: integer); 6270 397 FORWARD; 6280 398 6290 399 PROCEDURE writenl; 6300 400 FORWARD; \f fetsaoslst 81.05.13. 15.17. page 12 6310 401 \f fetsaoslst 81.05.13. 15.17. page 13 7010 402 FUNCTION dte_pax_addr (i:integer): int_pax_addr; 7020 403 VAR pax_adr : int_pax_addr; 7030 404 BEGIN 7040 405 1 ! pax_adr.net_addr := params(i); 7050 406 2 ! pax_adr.reg_addr := params(i+1); 7060 407 3 ! pax_adr.node_addr := params(i+2); 7070 408 4 ! pax_adr.ext_addr := params(i+3); 7080 409 5 ! dte_pax_addr := pax_adr; 7090 410 6 END; 7100 411 7110 412 PROCEDURE make_phead ( 7120 413 i : integer; op_code : byte; 7130 414 VAR p : format_1_packet_header ); 7140 415 BEGIN 7150 416 1 ! WITH p DO 7160 417 2 ! BEGIN 7170 418 3 ! ! format := rut_format_1; 7180 419 4 ! ! priority := rut_prio_0; 7190 420 5 ! ! packet_type := rut_pack_type; 7200 421 6 ! ! state := 0; 7210 422 7 ! ! org := dte_pax_addr(i); 7220 423 8 ! ! dst := dte_pax_addr(i+3); 7230 424 9 ! ! facility := params(9); 7240 425 10 ! ! user_field := op_code *256 + params(2); 7250 426 11 ! ! top_of_data := 0; 7260 427 12 ! END; 7270 428 13 END; 7280 429 \f fetsaoslst 81.05.13. 15.17. page 14 8010 430 FUNCTION packmacro ( 8020 431 par:integer):macroaddr; 8030 432 VAR 8040 433 a:macroaddr; 8050 434 BEGIN 8060 435 1 ! a.dc_addr := params( par); 8070 436 2 ! a.nc_addr := params( par+1); 8080 437 3 ! a.ts_addr := params( par+2); 8090 438 4 ! packmacro := a; 8100 439 5 END; 8110 440 8120 441 FUNCTION packextnode ( 8130 442 par:integer) : ext_pax_addr; 8140 443 VAR 8150 444 i:integer; 8160 445 a:ext_pax_addr; 8170 446 BEGIN 8180 447 1 ! FOR i:=1 TO 6 DO 8190 448 2 ! a(i):=0; 8200 449 3 ! FOR i:=0 TO 2 DO 8210 450 4 ! BEGIN 8220 451 5 ! ! a(7+i):=params(par+i); 8230 452 6 ! ! testout(z,"params ", params(par+i)); 8240 453 7 ! END; 8250 454 8 ! FOR i:= 10 TO 14 DO 8260 455 9 ! a(i) := 0; 8270 456 10 ! FOR i := 1 TO 14 DO 8280 457 11 ! testout(z,"a ", a(i)); 8290 458 12 ! packextnode := a; 8300 459 13 END; 8310 460 \f fetsaoslst 81.05.13. 15.17. page 15 9010 461 PROCEDURE get_curbuftype; 9020 462 BEGIN 9030 463 1 ! IF cur^.size < minbufsize THEN 9040 464 2 ! curbuftype:= 0 ELSE 9050 465 3 ! IF cur^.size < messbufsize THEN 9060 466 4 ! curbuftype:= 1 ELSE 9070 467 5 ! IF cur^.size < maxbufsize THEN 9080 468 6 ! curbuftype:= 2 ELSE 9090 469 7 ! IF cur^.size < testbufsize THEN 9100 470 8 ! curbuftype:= 3 ELSE 9110 471 9 ! curbuftype:= 4; 9120 472 10 ! 9130 473 11 ! CASE curbuftype OF 9140 474 12 ! ! 0: curbufsize:= 0; 9150 475 13 ! ! 1: curbufsize:= minbufsize; 9160 476 14 ! ! 2: curbufsize:= messbufsize; 9170 477 15 ! ! 3: curbufsize:= maxbufsize; 9180 478 16 ! ! 4: curbufsize:= testbufsize; 9190 479 17 ! END; 9200 480 18 END; 9210 481 \f fetsaoslst 81.05.13. 15.17. page 16 10010 482 PROCEDURE getinput; 10020 483 (* reads input from console into opinref^ *) 10030 484 BEGIN 10040 485 1 ! 10050 486 2 ! testmodeout ("getinput called ",0); 10060 487 3 ! 10070 488 4 ! REPEAT 10080 489 5 ! ! LOCK opinref AS opbuf: opbuftype DO 10090 490 6 ! ! opbuf.next:= firstindex; 10100 491 7 ! ! signal (opinref, opsem^); 10110 492 8 ! ! wait (opinref, wrsem); 10120 493 9 ! UNTIL opinref^.u2= ok (* 0*); 10130 494 10 ! 10140 495 11 ! LOCK opinref AS opbuf: opbuftype DO 10150 496 12 ! WITH opbuf DO 10160 497 13 ! BEGIN 10170 498 14 ! ! incharsleft:= next - first; 10180 499 15 ! ! next:= firstindex; 10190 500 16 ! END; 10200 501 17 ! command:= readchar; 10210 502 18 ! 10220 503 19 ! testmodeout ("command read: ",ord(command)); 10230 504 20 ! 10240 505 21 ! getparams; 10250 506 22 END (* getinput *); 10260 507 \f fetsaoslst 81.05.13. 15.17. page 17 11010 508 PROCEDURE getparams; 11020 509 (* reads integer parameters *) 11030 510 VAR newbase: boolean; 11040 511 BEGIN 11050 512 1 ! testmodeout ("getparams called ",0); 11060 513 2 ! 11070 514 3 ! noofparams:= 0; 11080 515 4 ! 11090 516 5 ! IF command IN (."a","b","c","d","e","f","k","n","o","p","s","t","w","x".) 11100 517 6 ! THEN 11110 518 7 ! BEGIN (* change to decimal *) 11120 519 8 ! ! oldbase:= base; 11130 520 9 ! ! base:= 10; 11140 521 10 ! ! newbase:= true; 11150 522 11 ! END 11160 523 12 ! ELSE 11170 524 13 ! newbase:= false; 11180 525 14 ! 11190 526 15 ! REPEAT 11200 527 16 ! ! noofparams:= noofparams + 1; 11210 528 17 ! ! params(noofparams):= readinteger; 11220 529 18 ! ! testmodeout ("parameter read: ",params(noofparams)); 11230 530 19 ! ! IF (noofparams=1) THEN 11240 531 20 ! ! IF command IN (."f","p".) THEN 11250 532 21 ! ! BEGIN (* change to old *) 11260 533 22 ! ! ! base:= oldbase; 11270 534 23 ! ! ! newbase:= false; 11280 535 24 ! ! END; 11290 536 25 ! ! 11300 537 26 ! UNTIL (NOT readok) OR (noofparams= 50); 11310 538 27 ! 11320 539 28 ! noofparams:= noofparams - 1; 11330 540 29 ! 11340 541 30 ! IF newbase THEN 11350 542 31 ! (* change back to old base *) 11360 543 32 ! base:= oldbase; 11370 544 33 END (* getparams *); 11380 545 \f fetsaoslst 81.05.13. 15.17. page 18 12010 546 PROCEDURE init_proc( 12020 547 index: integer; 12030 548 name, 12040 549 inc_name : alfa; 12050 550 p : processrec; 12060 551 size, 12070 552 prio : integer); 12080 553 VAR 12090 554 okl, 12100 555 ok : integer; 12110 556 BEGIN 12120 557 1 ! IF NOT nil(sh(index)) THEN 12130 558 2 ! outstring20(alreadyexists) ELSE 12140 559 3 ! BEGIN 12150 560 4 ! ! IF noofparams<2 THEN st:= size; 12160 561 5 ! ! okl:= link(name,p.processref^); 12170 562 6 ! ! ok:= create(inc_name,p,sh(index),st); 12180 563 7 ! ! IF ok=0 THEN 12190 564 8 ! ! start(sh(index),prio) ELSE 12200 565 9 ! ! BEGIN 12210 566 10 ! ! ! ok:= ok*100+okl; 12220 567 11 ! ! ! outstring20(createerror); 12230 568 12 ! ! ! outstring12(inc_name); 12240 569 13 ! ! ! outdecimal(ok,5); 12250 570 14 ! ! ! writenl; 12260 571 15 ! ! ! okl:= unlink(p.processref^); 12270 572 16 ! ! END; 12280 573 17 ! END; 12290 574 18 END; 12300 575 \f fetsaoslst 81.05.13. 15.17. page 19 13010 576 PROCEDURE init_modul(index: integer); 13020 577 CONST 13030 578 n1 = "tssupervisor"; 13040 579 n2 = "at_handler "; 13050 580 n3 = "vc_handler "; 13060 581 n4 = "timout "; 13070 582 n5 = "atconnector "; 13080 583 n6 = "vcatc "; 13090 584 n7 = "tsconnector "; 13100 585 n8 = "atvagtsim "; 13110 586 n9 = "lam "; 13120 587 n10= "tap "; 13130 588 n11= "dcmodule "; 13140 589 n13= "ncsupervisor"; 13150 590 n14= "vcitc "; 13160 591 n15= "itvagtsim "; 13170 592 n16= "alc "; 13180 593 n17= "netconnector"; 13190 594 n18= "dtesimulator"; 13200 595 n19= "tapdte "; 13210 596 n20= "tapnet "; 13220 597 n21= "testoutput "; 13230 598 n22= "fesupervisor"; 13240 599 n23= "streamer "; 13250 600 n24= "osif "; 13260 601 n25= "fpadriver "; 13270 602 n27= "str_mirror "; 13280 603 BEGIN 13290 604 1 ! CASE index OF 13300 605 2 ! ! 1: (* tssup *) 13310 606 3 ! ! init_proc(index, n1, n1, 13320 607 4 ! ! tssuper( opsem, sem), 13330 608 5 ! ! tss_size,tss_pri); 13340 609 6 ! ! 2: (* ath *) 13350 610 7 ! ! init_proc(index, n2, n2, 13360 611 8 ! ! at_handler( opsem, dc_addr, ts_addr, sem), 13370 612 9 ! ! ath_size,ath_pri); 13380 613 10 ! ! 3: (* vch *) 13390 614 11 ! ! init_proc(index, n3, n3, 13400 615 12 ! ! vc_handler( opsem, dc_addr, ts_addr, sem), 13410 616 13 ! ! vch_size,vch_pri); 13420 617 14 ! ! 4: (* timeout *) 13430 618 15 ! ! init_proc(index, n4, n4, 13440 619 16 ! ! timout( opsem, sem(timeout_sem_no), time_out_unit, 40), 13450 620 17 ! ! tim_size,tim_pri); 13460 621 18 ! ! 5: (* atc *) \f fetsaoslst 81.05.13. 15.17. page 20 13470 622 19 ! ! init_proc(index, n5, n5, 13480 623 20 ! ! atconnector( opsem, sem(atc_sem_no), sem(atc_sem_no+1), 13490 624 21 ! ! sem(ath_sem_no).s, sem(lam_sem_no).s, sem(timeout_sem_no).s, 13500 625 22 ! ! sem(com_pool).w, dc_addr, ts_addr, 257, 7), 13510 626 23 ! ! atc_size,atc_pri); 13520 627 24 ! ! 6: (* vcatc *) 13530 628 25 ! ! init_proc(index, n6, n6, 13540 629 26 ! ! vcc( opsem, sem(vcc_sem_no), sem(vcc_sem_no+1), 13550 630 27 ! ! sem(vch_sem_no).s, sem(vas_sem_no).s, sem(timeout_sem_no).s, 13560 631 28 ! ! sem(com_pool).w, dc_addr, ts_addr, 63, 2), 13570 632 29 ! ! vac_size, vcc_pri); 13580 633 30 ! ! 7: (* tsc *) 13590 634 31 ! ! init_proc(index, n7, n7, 13600 635 32 ! ! tsconnector( opsem, sem(tssup_sem_no).s, 13610 636 33 ! ! sem(dc_sem_no).s, 13620 637 34 ! ! sem(nc_sem_no).s, sem(lam_sem_no).s, sem(timeout_sem_no).s, 13630 638 35 ! ! sem(com_pool).w, sem(netc_sem_no), 13640 639 36 ! ! sem(pax_sem_2), sem(pax_sem_1), 13650 640 37 ! ! sem(pax_ncp_sem), sem(dte_sem_no)), 13660 641 38 ! ! tsc_size, tsc_pri); 13670 642 39 ! ! 8: (* atvagtsim *) 13680 643 40 ! ! init_proc(index, n8, n8, 13690 644 41 ! ! vagt( opsem, sem), 13700 645 42 ! ! vas_size, vc_sim_pri); 13710 646 43 ! ! 9: (* lam *) 13720 647 44 ! ! init_proc(index, n9, n9, 13730 648 45 ! ! lam( opsem, pu, 5, sem(lam_sem_no)), 13740 649 46 ! ! lam_size, 1); 13750 650 47 ! ! 10: (* tap *) 13760 651 48 ! ! init_proc(index, n10, n10, 13770 652 49 ! ! tap( opsem, sem(tap_sem_no)), 13780 653 50 ! ! 512, 0); 13790 654 51 ! ! 11: (* dc *) 13800 655 52 ! ! init_proc(index, n11, n11, 13810 656 53 ! ! dcmodule( opsem, sem(lam_sem_no).s, sem(netc_sem_no).s, 13820 657 54 ! ! sem(com_pool).w, sem(timeout_sem_no).s, 13830 658 55 ! ! sem(dc_sem_no), sem(dc_int1), sem(dc_int2), sem(dc_int3)), 13840 659 56 ! ! dc_sim_size, dc_sim_pri); 13850 660 57 ! ! 12: (* tap01 *) 13860 661 58 ! ! init_proc(index, n10, "tap01 ", 13870 662 59 ! ! tap ( opsem, sem(tap1_sem_no)), 13880 663 60 ! ! 512, 0); 13890 664 61 ! ! 13: (* ncsupervisor *) 13900 665 62 ! ! init_proc(index, n13, n13, 13910 666 63 ! ! ncsup( opsem, sem(nc_sem_no), sem(ncsup_int1), sem(ncsup_int2), 13920 667 64 ! ! sem(netc_sem_no).s, sem(timeout_sem_no).s), \f fetsaoslst 81.05.13. 15.17. page 21 13930 668 65 ! ! nc_sup_size, tss_pri); 13940 669 66 ! ! 14: (* vcitc *) 13950 670 67 ! ! init_proc(index, n14, n14, 13960 671 68 ! ! vcc( opsem, sem(vcc_sem_no+2), sem(vcc_sem_no+3), 13970 672 69 ! ! sem(vch_sem_no).s, sem(vis_sem_no).s, sem(timeout_sem_no).s, 13980 673 70 ! ! sem(com_pool).w, dc_addr, ts_addr, 64, 3), 13990 674 71 ! ! vic_size, vcc_pri); 14000 675 72 ! ! 15: (* itvagtsim *) 14010 676 73 ! ! init_proc(index, n15, n15, 14020 677 74 ! ! vagt( opsem, sem), 14030 678 75 ! ! vis_size, vc_sim_pri); 14040 679 76 ! ! 17: (* netconnector *) 14050 680 77 ! ! init_proc ( index, n17, n17, 14060 681 78 ! ! netconnector( glob_timeout, spool_test_sem, 14070 682 79 ! ! sem( pax_pool),sem( netc_sem_no), netc_locals, 14080 683 80 ! ! sem( com_pool).w, 14090 684 81 ! ! sem( timeout_sem_no).s, sem( dte_sem_no).s), 14100 685 82 ! ! netc_size, netc_pri); 14110 686 83 ! ! 14120 687 84 ! ! 18: (* dtesimulator *) 14130 688 85 ! ! init_proc ( index, n18, n18, 14140 689 86 ! ! dtesimulator ( spool_test_sem, sem( pax_pool), sem(dte_sem_no), 14150 690 87 ! ! sem( netc_sem_no).s, 14160 691 88 ! ! sem( pax_sem_1).s, sem( pax_sem_2).s, 14170 692 89 ! ! dte_addr), 14180 693 90 ! ! netc_size, netc_pri); 14190 694 91 ! ! 19: (* tapdte *) 14200 695 92 ! ! init_proc ( index, n19, n19, 14210 696 93 ! ! tapdte ( opsem, sem(tap_dte_sem_no)), 14220 697 94 ! ! 512,0); 14230 698 95 ! ! 20: (* tapnet *) 14240 699 96 ! ! init_proc ( index, n20, n20, 14250 700 97 ! ! tapnet ( opsem, sem(tap_net_sem_no)), 14260 701 98 ! ! 512,0); 14270 702 99 ! ! 14280 703 100 ! ! 21: (* testoutput *) 14290 704 101 ! ! init_proc ( index, n21, n21, 14300 705 102 ! ! testoutput ( spool_test_sem, opsem), 14310 706 103 ! ! 512,0); 14320 707 104 ! ! 22: (* fesup *) 14330 708 105 ! ! init_proc(index,n22,n22, 14340 709 106 ! ! fesupervisor(opsem, 14350 710 107 ! ! sem(fesup_sem_no),sem(fesup_write),sem(fesup_que_up),sem(fesup_que_down), 14360 711 108 ! ! sem(stream_sem_no).s,sem(netc_sem_no).s, sem(com_pool).w ), 14370 712 109 ! ! fesup_size, fesup_pri ); 14380 713 110 ! ! \f fetsaoslst 81.05.13. 15.17. page 22 14390 714 111 ! ! 23: (* streamer *) 14400 715 112 ! ! init_proc(index,n23,n23, 14410 716 113 ! ! streamer( sem(stream_sem_no), sem(stream_xmit), 14420 717 114 ! ! sem(stream_rec), 3, opsem), stream_size, stream_pri); 14430 718 115 ! ! 14440 719 116 ! ! 24: (* osif *) 14450 720 117 ! ! init_proc(index,n24,n24, 14460 721 118 ! ! osif(opsem, sem(osif_sem_no), sem(stream_sem_no).s, 14470 722 119 ! ! sem(lam_sem_no).s, 3, 2, 2, 7), 14480 723 120 ! ! osif_size, osif_pri); 14490 724 121 ! ! 14500 725 122 ! ! 25: (* fpareceiver *) 14510 726 123 ! ! init_proc(index,n25, "fparec ", 14520 727 124 ! ! fpadriver( sem(stream_rec), 6, 2, true, opsem), 14530 728 125 ! ! 512, -1); 14540 729 126 ! ! 14550 730 127 ! ! 26: (* fpaxmitter *) 14560 731 128 ! ! init_proc(index,n25,"fpaxmit ", 14570 732 129 ! ! fpadriver(sem(stream_xmit),7,2,false,opsem), 14580 733 130 ! ! 512, -1); 14590 734 131 ! ! 14600 735 132 ! ! 27: (* str mirror *) 14610 736 133 ! ! init_proc( index, n27, n27, 14620 737 134 ! ! mirror( opsem, sem(tap1_sem_no), 14630 738 135 ! ! sem(stream_sem_no).s, 10, 11), 14640 739 136 ! ! 512, 3); 14650 740 137 ! ! 14660 741 138 ! ! 14670 742 139 ! ! 14680 743 140 ! ! OTHERWISE 14690 744 141 ! ! BEGIN 14700 745 142 ! ! ! outdecimal(index,4); 14710 746 143 ! ! ! outstring10(illegalno); 14720 747 144 ! ! END; 14730 748 145 ! END (* case *) 14740 749 146 END; 14750 750 \f fetsaoslst 81.05.13. 15.17. page 23 15010 751 FUNCTION moduleready(moduleno: integer): boolean; 15020 752 (* tests if an incarnation of the module is existing 15030 753 and writes an errormessage if so *) 15040 754 BEGIN 15050 755 1 ! IF nil( sh( moduleno) ) THEN moduleready:=true 15060 756 2 ! ELSE 15070 757 3 ! BEGIN (* module is already existing *) 15080 758 4 ! ! outdecimal(moduleno,4); 15090 759 5 ! ! outstring20(alreadyexists); 15100 760 6 ! ! moduleready:=false; 15110 761 7 ! END; 15120 762 8 END (* module ready *); 15130 763 15140 764 15150 765 \f fetsaoslst 81.05.13. 15.17. page 24 16010 766 PROCEDURE outchar(ch:char); 16020 767 (* writes ch into the output buffer *) 16030 768 BEGIN 16040 769 1 ! LOCK opoutref AS opbuf: opbuftype DO 16050 770 2 ! WITH opbuf DO 16060 771 3 ! BEGIN 16070 772 4 ! ! last:= last + 1; 16080 773 5 ! ! data (last):= ch; 16090 774 6 ! END; 16100 775 7 END (* outchar *); 16110 776 \f fetsaoslst 81.05.13. 15.17. page 25 17010 777 PROCEDURE outdecimal (int, positions: integer); 17020 778 (* writes the integer "int" decimally into opbuf starting 17030 779 at "last", which is updated accordingly *) 17040 780 17050 781 BEGIN 17060 782 1 ! oldbase:= base; 17070 783 2 ! base:= 10; 17080 784 3 ! outinteger(int,positions); 17090 785 4 ! base:= oldbase; 17100 786 5 END (* outdecimal *); 17110 787 \f fetsaoslst 81.05.13. 15.17. page 26 18010 788 PROCEDURE outinteger(int,positions:integer); 18020 789 (* writes the integer "int" into opbuf starting at 18030 790 "last", which is updated accordingly *) 18040 791 CONST 18050 792 maxpos = 20; (* max number of positions in layout *) 18060 793 18070 794 VAR 18080 795 bits: ARRAY(0..15) OF bit; 18090 796 digits:ARRAY(1..maxpos) OF char; 18100 797 curdigit, (* current pos. in digits-array to be filled out *) 18110 798 curpos, (* cur. pos. in the nunber being computed *) 18120 799 h, i, 18130 800 m, newm, 18140 801 noofdig, (* no. of digits in the resulting number *) 18150 802 noofpos, (* no. of pos. from bits-array for one number *) 18160 803 res, (* resulting number *) 18170 804 used: integer; 18180 805 18190 806 negative, zeroes: boolean; 18200 807 18210 808 BEGIN 18220 809 1 ! used:= 1; 18230 810 2 ! 18240 811 3 ! (* first we initialise the digits array *) 18250 812 4 ! FOR i:=1 TO maxpos DO digits(i):=sp; 18260 813 5 ! 18270 814 6 ! IF base= 10 THEN 18280 815 7 ! BEGIN 18290 816 8 ! ! i:=maxpos; 18300 817 9 ! ! 18310 818 10 ! ! negative:= int<0; 18320 819 11 ! ! 18330 820 12 ! ! REPEAT 18340 821 13 ! ! ! (* now we unpack the digits backwards and put them 18350 822 14 ! ! ! into the digits array *) 18360 823 15 ! ! ! 18370 824 16 ! ! ! digits(i):= chr (abs(int MOD base) + ord("0")); 18380 825 17 ! ! ! int:=int DIV base; 18390 826 18 ! ! ! i:=i-1; 18400 827 19 ! ! UNTIL (i=1) OR (int=0); 18410 828 20 ! ! 18420 829 21 ! ! IF negative THEN 18430 830 22 ! ! BEGIN 18440 831 23 ! ! ! digits(i):="-"; 18450 832 24 ! ! ! i:=i-1; 18460 833 25 ! ! END; \f fetsaoslst 81.05.13. 15.17. page 27 18470 834 26 ! ! 18480 835 27 ! ! used:=maxpos-i; 18490 836 28 ! ! 18500 837 29 ! ! IF int <> 0 THEN digits(1):= "*"; 18510 838 30 ! END (* if base= 10 *) 18520 839 31 ! 18530 840 32 ! ELSE (* base= 2, 8, or 16 *) 18540 841 33 ! BEGIN 18550 842 34 ! ! (* initialise bits-array *) 18560 843 35 ! ! IF int>=0 THEN 18570 844 36 ! ! BEGIN 18580 845 37 ! ! ! FOR i:= 15 DOWNTO 1 DO 18590 846 38 ! ! ! BEGIN 18600 847 39 ! ! ! ! bits(i):= int MOD 2; 18610 848 40 ! ! ! ! int:= int DIV 2; 18620 849 41 ! ! ! END; 18630 850 42 ! ! ! bits(0):= int MOD 2; 18640 851 43 ! ! ! int:= int DIV 2; 18650 852 44 ! ! END 18660 853 45 ! ! ELSE 18670 854 46 ! ! (* int<0 *) 18680 855 47 ! ! BEGIN 18690 856 48 ! ! ! (* subtract abs(int) from 1111111...1 *) 18700 857 49 ! ! ! FOR i:= 15 DOWNTO 1 DO 18710 858 50 ! ! ! BEGIN 18720 859 51 ! ! ! ! bits(i):= 1+(int MOD 2); 18730 860 52 ! ! ! ! int:= int DIV 2; 18740 861 53 ! ! ! END; 18750 862 54 ! ! ! bits(0):= 1+(int MOD 2); 18760 863 55 ! ! ! int:= int DIV 2; 18770 864 56 ! ! ! 18780 865 57 ! ! ! (* add 1 *) 18790 866 58 ! ! ! m:= 1; 18800 867 59 ! ! ! FOR i:= 15 DOWNTO 1 DO 18810 868 60 ! ! ! BEGIN 18820 869 61 ! ! ! ! newm:= (bits(i)+m) DIV 2; 18830 870 62 ! ! ! ! bits(i):= (bits(i)+m) MOD 2; 18840 871 63 ! ! ! ! m:= newm; 18850 872 64 ! ! ! END; 18860 873 65 ! ! ! newm:= (bits(0)+m) DIV 2; 18870 874 66 ! ! ! bits(0):= (bits(0)+m) MOD 2; 18880 875 67 ! ! ! m:= newm; 18890 876 68 ! ! END (*int<0*); 18900 877 69 ! ! 18910 878 70 ! ! (* compute digits-array *) 18920 879 71 ! ! CASE base OF \f fetsaoslst 81.05.13. 15.17. page 28 18930 880 72 ! ! ! 2: BEGIN 18940 881 73 ! ! ! ! noofpos:= 1; 18950 882 74 ! ! ! ! noofdig:= 16; 18960 883 75 ! ! ! END; 18970 884 76 ! ! ! 18980 885 77 ! ! ! 8: BEGIN 18990 886 78 ! ! ! ! noofpos:= 3; 19000 887 79 ! ! ! ! noofdig:= 6; 19010 888 80 ! ! ! END; 19020 889 81 ! ! ! 19030 890 82 ! ! ! 16: BEGIN 19040 891 83 ! ! ! ! noofpos:= 4; 19050 892 84 ! ! ! ! noofdig:= 4; 19060 893 85 ! ! ! END; 19070 894 86 ! ! END (* case *); 19080 895 87 ! ! 19090 896 88 ! ! curdigit:= maxpos -noofdig +1; 19100 897 89 ! ! 19110 898 90 ! ! IF base= 8 19120 899 91 ! ! THEN curpos:= 3 19130 900 92 ! ! ELSE curpos:= 1; 19140 901 93 ! ! res:= 0; 19150 902 94 ! ! zeroes:= true; 19160 903 95 ! ! 19170 904 96 ! ! FOR h:= 0 TO 15 DO 19180 905 97 ! ! BEGIN 19190 906 98 ! ! ! res:= res*2 + bits(h); 19200 907 99 ! ! ! IF curpos= noofpos THEN 19210 908 100 ! ! ! BEGIN (* time to fill out a pos. in digits-array *) 19220 909 101 ! ! ! ! IF zeroes AND (res=0) THEN 19230 910 102 ! ! ! ! BEGIN 19240 911 103 ! ! ! ! ! IF curdigit=maxpos 19250 912 104 ! ! ! ! ! THEN digits(curdigit):= "0" 19260 913 105 ! ! ! ! ! (*else digits (curdigit):= " "*); 19270 914 106 ! ! ! ! END 19280 915 107 ! ! ! ! ELSE 19290 916 108 ! ! ! ! IF res<=9 19300 917 109 ! ! ! ! THEN digits(curdigit):= chr (res + ord ("0")) 19310 918 110 ! ! ! ! ELSE digits(curdigit):= chr (res + ord ("7")); 19320 919 111 ! ! ! ! IF (res<>0) AND zeroes THEN 19330 920 112 ! ! ! ! BEGIN 19340 921 113 ! ! ! ! ! zeroes:= false; 19350 922 114 ! ! ! ! ! used:= maxpos - curdigit + 1; 19360 923 115 ! ! ! ! END; 19370 924 116 ! ! ! ! res:= 0; 19380 925 117 ! ! ! ! curpos:= 0; \f fetsaoslst 81.05.13. 15.17. page 29 19390 926 118 ! ! ! ! curdigit:= curdigit + 1; 19400 927 119 ! ! ! END; 19410 928 120 ! ! ! curpos:= curpos + 1; 19420 929 121 ! ! END; 19430 930 122 ! END (* base= 2, 8, of 16 *); 19440 931 123 ! 19450 932 124 ! IF positions<used THEN outchar(sp); 19460 933 125 ! 19470 934 126 ! IF (NOT (positions IN (. 1 .. maxpos .)) ) 19480 935 127 ! OR (positions < used) THEN 19490 936 128 ! positions:=used; 19500 937 129 ! 19510 938 130 ! FOR i:=maxpos+1-positions TO maxpos DO 19520 939 131 ! BEGIN 19530 940 132 ! ! outchar( digits(i) ); 19540 941 133 ! END 19550 942 134 ! 19560 943 135 END (* out integer *); 19570 944 19580 945 19590 946 \f fetsaoslst 81.05.13. 15.17. page 30 20010 947 PROCEDURE outstring10(text: alfa10); 20020 948 (* writes the text into opbuf starting at outputpointer 20030 949 which is updated accordingly *) 20040 950 VAR 20050 951 i: integer; 20060 952 BEGIN 20070 953 1 ! FOR i:=1 TO 10 DO 20080 954 2 ! outchar( text(i) ); 20090 955 3 END (* out string 10 *); 20100 956 20110 957 PROCEDURE outstring12(text: alfa); 20120 958 VAR 20130 959 i: integer; 20140 960 BEGIN 20150 961 1 ! FOR i:=1 TO 12 DO 20160 962 2 ! outchar(text(i)); 20170 963 3 END; 20180 964 \f fetsaoslst 81.05.13. 15.17. page 31 21010 965 PROCEDURE outstring20(text: alfa20); 21020 966 (* analogue to outstring10 *) 21030 967 VAR 21040 968 i: integer; 21050 969 BEGIN 21060 970 1 ! FOR i:=1 TO 20 DO 21070 971 2 ! outchar( text(i) ); 21080 972 3 END (* out string 20 *); 21090 973 21100 974 21110 975 21120 976 \f fetsaoslst 81.05.13. 15.17. page 32 22010 977 FUNCTION readchar: char; 22020 978 (* reads the next char from opinref^. 22030 979 next is incremented and charsleft is 22040 980 decremented *) 22050 981 BEGIN 22060 982 1 ! LOCK opinref AS opbuf: opbuftype DO 22070 983 2 ! WITH opbuf DO 22080 984 3 ! BEGIN 22090 985 4 ! ! readchar:= data(next); 22100 986 5 ! ! next:= next + 1; 22110 987 6 ! END; 22120 988 7 ! incharsleft:=incharsleft-1; 22130 989 8 END (* readchar *); 22140 990 22150 991 22160 992 22170 993 \f fetsaoslst 81.05.13. 15.17. page 33 23010 994 FUNCTION readinteger : integer; 23020 995 (* reads the next integer from opinref^ starting 23030 996 at "inputpoint". upon return "inputpoint" will be 23040 997 the position just after the last char read. 23050 998 23060 999 the global boolean "readok" will be true if an 23070 1000 integer was read and false otherwise *) 23080 1001 23090 1002 CONST 23100 1003 digits = (. "0" .. "9" .); 23110 1004 hexdigits = (. "a" .. "f" .); 23120 1005 signs = (. "+" , "-" .); 23130 1006 23140 1007 VAR 23150 1008 negative, digit: boolean; 23160 1009 23170 1010 curdigit, noofdigit, 23180 1011 result: integer; 23190 1012 23200 1013 ch,lastchar: char; 23210 1014 23220 1015 23230 1016 BEGIN 23240 1017 1 ! readok:=false; 23250 1018 2 ! lastchar:=nul; 23260 1019 3 ! ch:=nul; 23270 1020 4 ! digit:=false; 23280 1021 5 ! 23290 1022 6 ! (* now skip until a digit is encountered *) 23300 1023 7 ! 23310 1024 8 ! IF incharsleft > 0 THEN 23320 1025 9 ! REPEAT 23330 1026 10 ! ! lastchar:=ch; 23340 1027 11 ! ! ch:=readchar; 23350 1028 12 ! ! digit:= (ch IN digits) OR 23360 1029 13 ! ! ((base= 16) AND (ch IN hexdigits)) 23370 1030 14 ! UNTIL digit OR (incharsleft<=0); 23380 1031 15 ! 23390 1032 16 ! result:=0; 23400 1033 17 ! IF base= 10 THEN 23410 1034 18 ! negative:= lastchar= "-" 23420 1035 19 ! ELSE negative:= false; 23430 1036 20 ! 23440 1037 21 ! 23450 1038 22 ! IF digit THEN 23460 1039 23 ! BEGIN \f fetsaoslst 81.05.13. 15.17. page 34 23470 1040 24 ! ! IF ch IN digits 23480 1041 25 ! ! THEN result:= ord (ch) - ord ("0") 23490 1042 26 ! ! ELSE result:= ord (ch) - 87 (*ord ("W")*); 23500 1043 27 ! ! readok:=true; 23510 1044 28 ! END; 23520 1045 29 ! 23530 1046 30 ! IF base=10 THEN 23540 1047 31 ! BEGIN 23550 1048 32 ! ! WHILE digit AND (incharsleft>0) DO 23560 1049 33 ! ! BEGIN (* read the digits *) 23570 1050 34 ! ! ! ch:= readchar; 23580 1051 35 ! ! ! 23590 1052 36 ! ! ! digit:= (ch IN digits) OR 23600 1053 37 ! ! ! ((base= 16) AND (ch IN hexdigits)); 23610 1054 38 ! ! ! IF digit THEN 23620 1055 39 ! ! ! BEGIN 23630 1056 40 ! ! ! ! IF negative AND (result=3276) AND (ch="8") 23640 1057 41 ! ! ! ! THEN BEGIN 23650 1058 42 ! ! ! ! ! result:= -32768; 23660 1059 43 ! ! ! ! ! negative:= false; 23670 1060 44 ! ! ! ! END 23680 1061 45 ! ! ! ! ELSE 23690 1062 46 ! ! ! ! BEGIN 23700 1063 47 ! ! ! ! ! IF ch IN digits 23710 1064 48 ! ! ! ! ! THEN result:= result*base+(ord(ch)-ord("0")) 23720 1065 49 ! ! ! ! ! ELSE result:= result*base+(ord(ch)-87(*ord("W")*)); 23730 1066 50 ! ! ! ! END; 23740 1067 51 ! ! ! END; 23750 1068 52 ! ! END (* while *); 23760 1069 53 ! ! 23770 1070 54 ! ! IF negative THEN result:= - result; 23780 1071 55 ! ! 23790 1072 56 ! END (* base= 10 *) 23800 1073 57 ! 23810 1074 58 ! ELSE 23820 1075 59 ! BEGIN (* base= 2, 8, or 16 *) 23830 1076 60 ! ! 23840 1077 61 ! ! CASE base OF 23850 1078 62 ! ! ! 2:BEGIN 23860 1079 63 ! ! ! ! IF ch="1" THEN negative:= true; 23870 1080 64 ! ! ! ! noofdigit:= 16; 23880 1081 65 ! ! ! END; 23890 1082 66 ! ! ! 23900 1083 67 ! ! ! 8: BEGIN 23910 1084 68 ! ! ! ! IF ch="1" THEN negative:= true; 23920 1085 69 ! ! ! ! noofdigit:= 6; \f fetsaoslst 81.05.13. 15.17. page 35 23930 1086 70 ! ! ! END; 23940 1087 71 ! ! ! 23950 1088 72 ! ! ! 16: BEGIN 23960 1089 73 ! ! ! ! IF ch>="8" THEN negative:= true; 23970 1090 74 ! ! ! ! noofdigit:= 4; 23980 1091 75 ! ! ! END; 23990 1092 76 ! ! END (*case*); 24000 1093 77 ! ! curdigit:= 1; 24010 1094 78 ! ! 24020 1095 79 ! ! WHILE digit AND (incharsleft>0) DO 24030 1096 80 ! ! BEGIN 24040 1097 81 ! ! ! ch:= readchar; 24050 1098 82 ! ! ! digit:= (ch IN digits) OR 24060 1099 83 ! ! ! ((base=16) AND (ch IN hexdigits)); 24070 1100 84 ! ! ! IF digit 24080 1101 85 ! ! ! THEN BEGIN 24090 1102 86 ! ! ! ! curdigit:= curdigit+1; 24100 1103 87 ! ! ! ! IF (curdigit=noofdigit) AND negative THEN 24110 1104 88 ! ! ! ! BEGIN 24120 1105 89 ! ! ! ! ! CASE base OF 24130 1106 90 ! ! ! ! ! ! 2: result:= result - 16384 (*2^14*); 24140 1107 91 ! ! ! ! ! ! 8: result:= result - 4096 (*2^12*); 24150 1108 92 ! ! ! ! ! ! 16:result:= result - 2048 (*2^11*); 24160 1109 93 ! ! ! ! ! END (*case*) 24170 1110 94 ! ! ! ! END; 24180 1111 95 ! ! ! ! IF ch IN digits THEN 24190 1112 96 ! ! ! ! result:= result*base + (ord(ch)-ord("0")) 24200 1113 97 ! ! ! ! ELSE 24210 1114 98 ! ! ! ! result:= result*base + (ord(ch)-87 (*ord("W")*)); 24220 1115 99 ! ! ! ! IF (curdigit=noofdigit) AND negative 24230 1116 100 ! ! ! ! THEN BEGIN 24240 1117 101 ! ! ! ! ! IF result=0 24250 1118 102 ! ! ! ! ! THEN result:= -32768 24260 1119 103 ! ! ! ! ! ELSE result:= -((32767-result)+1); 24270 1120 104 ! ! ! ! END; 24280 1121 105 ! ! ! END (*if digit*); 24290 1122 106 ! ! END (*while digit*); 24300 1123 107 ! END (* base= 2, 8, or 16 *); 24310 1124 108 ! IF incharsleft > 0 THEN 24320 1125 109 ! (* we read one char too many - spit it out *) 24330 1126 110 ! repeatchar; 24340 1127 111 ! 24350 1128 112 ! readinteger:=result; 24360 1129 113 END (* read integer *); 24370 1130 \f fetsaoslst 81.05.13. 15.17. page 36 25010 1131 PROCEDURE repeatchar; 25020 1132 BEGIN 25030 1133 1 ! LOCK opinref AS opbuf: opbuftype DO 25040 1134 2 ! opbuf.next:= opbuf.next - 1; 25050 1135 3 ! incharsleft:= incharsleft + 1; 25060 1136 4 END; 25070 1137 \f fetsaoslst 81.05.13. 15.17. page 37 26010 1138 FUNCTION testinterval (i,first,last: integer): boolean; 26020 1139 (* true if first<=i<=last *) 26030 1140 BEGIN 26040 1141 1 ! IF (i<first) OR (i>last) THEN 26050 1142 2 ! BEGIN 26060 1143 3 ! ! outstring10(illegalno); 26070 1144 4 ! ! outinteger(i,4); 26080 1145 5 ! ! writenl; 26090 1146 6 ! ! testinterval:= false 26100 1147 7 ! END 26110 1148 8 ! ELSE 26120 1149 9 ! testinterval:= true; 26130 1150 10 END; 26140 1151 \f fetsaoslst 81.05.13. 15.17. page 38 27010 1152 PROCEDURE testmodeout (text: alfa20; i: integer); 27020 1153 BEGIN 27030 1154 1 ! IF testmode THEN 27040 1155 2 ! BEGIN 27050 1156 3 ! ! outstring20 (text); 27060 1157 4 ! ! outinteger (i, 4); 27070 1158 5 ! ! writenl; 27080 1159 6 ! END; 27090 1160 7 END (* testout *); 27100 1161 \f fetsaoslst 81.05.13. 15.17. page 39 28010 1162 PROCEDURE testsem(i: integer; VAR t_sem : semaphore); 28020 1163 (* test the semaphore t_sem, and 28030 1164 writes its status on the console if it is 28040 1165 non-passive *) 28050 1166 VAR more: boolean; 28060 1167 BEGIN 28070 1168 1 ! 28080 1169 2 ! IF i>0 THEN 28090 1170 3 ! BEGIN 28100 1171 4 ! ! ap.a := sem(i).s; 28110 1172 5 ! ! bp.a := sem(i).w; 28120 1173 6 ! END 28130 1174 7 ! ELSE ap:=bp; 28140 1175 8 ! IF open(t_sem) THEN 28150 1176 9 ! BEGIN (* user semaphore no. i is open *) 28160 1177 10 ! ! IF ap=bp THEN 28170 1178 11 ! ! outchar(" ") ELSE outchar("^"); 28180 1179 12 ! ! outdecimal(i,3); 28190 1180 13 ! ! outchar(":"); 28200 1181 14 ! ! more:= true; 28210 1182 15 ! ! 28220 1183 16 ! ! (* now count the no. of buffers on this semaphore *) 28230 1184 17 ! ! j:=0; (* j is the counter *) 28240 1185 18 ! ! WHILE more DO 28250 1186 19 ! ! BEGIN 28260 1187 20 ! ! ! sensesem(countref, t_sem); 28270 1188 21 ! ! ! IF nil(countref) THEN 28280 1189 22 ! ! ! more:= false 28290 1190 23 ! ! ! ELSE 28300 1191 24 ! ! ! BEGIN 28310 1192 25 ! ! ! ! signal(countref,countsem); 28320 1193 26 ! ! ! ! j:=j+1; 28330 1194 27 ! ! ! END 28340 1195 28 ! ! END; 28350 1196 29 ! ! 28360 1197 30 ! ! outdecimal(j,3); 28370 1198 31 ! ! WHILE open(countsem) DO 28380 1199 32 ! ! BEGIN (* return the buffers to sem(i) *) 28390 1200 33 ! ! ! wait(countref,countsem); 28400 1201 34 ! ! ! signal(countref,t_sem); 28410 1202 35 ! ! END; 28420 1203 36 ! ! 28430 1204 37 ! ! writenl; 28440 1205 38 ! END (* open *) 28450 1206 39 ! ELSE 28460 1207 40 ! IF locked( t_sem) THEN \f fetsaoslst 81.05.13. 15.17. page 40 28470 1208 41 ! BEGIN (* user semaphore no. i is locked *) 28480 1209 42 ! ! IF ap=bp THEN 28490 1210 43 ! ! outchar(" ") ELSE outchar("^"); 28500 1211 44 ! ! outdecimal(i,3); 28510 1212 45 ! ! outchar(":"); 28520 1213 46 ! ! outstring10(" locked "); 28530 1214 47 ! ! writenl; 28540 1215 48 ! END; 28550 1216 49 END (* testsem *); 28560 1217 28570 1218 28580 1219 28590 1220 28600 1221 \f fetsaoslst 81.05.13. 15.17. page 41 29010 1222 PROCEDURE writenl; 29020 1223 (* prepares opbuf for output to the operator and signals 29030 1224 it to operator module *) 29040 1225 BEGIN 29050 1226 1 ! IF NOT nil(opoutref) THEN 29060 1227 2 ! BEGIN 29070 1228 3 ! ! outchar(nl); 29080 1229 4 ! ! signal(opoutref, opsem^) 29090 1230 5 ! END; 29100 1231 6 ! wait(opoutref, wsem); 29110 1232 7 ! LOCK opoutref AS opbuf: opbuftype DO 29120 1233 8 ! opbuf.last:= firstindex; 29130 1234 9 END (* writenl *); 29140 1235 29150 1236 \f fetsaoslst 81.05.13. 15.17. page 42 30010 1237 30020 1238 30030 1239 30040 1240 (**************************************** 30050 1241 * * 30060 1242 * m a i n p r o g r a m * 30070 1243 * * 30080 1244 ****************************************) 30090 1245 30100 1246 30110 1247 30120 1248 30130 1249 30140 1250 30150 1251 BEGIN 30160 1252 1 ! 30170 1253 2 ! opsem:= semvector(operatorsem); 30180 1254 3 ! spool_test_sem := ref( spool_sem); 30190 1255 4 ! testmode:= false; 30200 1256 5 ! testopen (z,own.incname,opsem); 30210 1257 6 ! testout(z,version,al_env_version); 30220 1258 7 ! 30230 1259 8 ! readram(node_no,10); 30240 1260 9 ! node_no := node_no MOD 16; 30250 1261 10 ! dte_addr.net_addr := 0; 30260 1262 11 ! dte_addr.reg_addr := 0; 30270 1263 12 ! dte_addr.node_addr := node_no; 30280 1264 13 ! dte_addr.ext_addr := 3; 30290 1265 14 ! 30300 1266 15 ! 30310 1267 16 ! testout(z,"ext-pax-addr", 30320 1268 17 ! paxnet_config( node_no,3)*1000 + paxnet_config( node_no,6)*100 + 30330 1269 18 ! paxnet_config( node_no,9)*10 + paxnet_config( node_no,14) ); 30340 1270 19 ! 30350 1271 20 ! (* initialise pointers *) 30360 1272 21 ! FOR i:=1 TO ts_sem_total DO 30370 1273 22 ! BEGIN 30380 1274 23 ! ! sem(i).s:= ref(ts_sem(i)); 30390 1275 24 ! ! sem(i).w:= sem(i).s; 30400 1276 25 ! END; 30410 1277 26 ! 30420 1278 27 ! (* initialize pointers to eva semaphores *) 30430 1279 28 ! sem(pax_sem_2).s:=ref(evavector(px_urec1)); 30440 1280 29 ! sem(pax_sem_2).w:=sem(pax_sem_2).s; 30450 1281 30 ! sem(pax_sem_1).s:=ref(evavector(px_utrm1)); 30460 1282 31 ! sem(pax_sem_1).w:=sem(pax_sem_1).s; \f fetsaoslst 81.05.13. 15.17. page 43 30470 1283 32 ! sem(pax_sem_3).s := ref(evavector(px_urec2)); 30480 1284 33 ! sem(pax_sem_3).w := sem(pax_sem_3).s; 30490 1285 34 ! sem(pax_sem_4).s := ref(evavector(px_utrm2)); 30500 1286 35 ! sem(pax_sem_4).w := sem(pax_sem_4).s; 30510 1287 36 ! sem(pax_ncp_sem).s:=ref(evavector(px_ncp)); 30520 1288 37 ! sem(pax_ncp_sem).w:=sem(pax_ncp_sem).s; 30530 1289 38 ! sem(lam_sem_no).s := ref( evavector(al_lam1)); 30540 1290 39 ! sem(lam_sem_no).w := sem( lam_sem_no).s; 30550 1291 40 ! 30560 1292 41 ! (* initialize local semaphores for netconnector *) 30570 1293 42 ! 30580 1294 43 ! netc_locals(1):=sem(fesup_sem_no).s; 30590 1295 44 ! netc_locals(2):=sem(tssup_sem_no).s; 30600 1296 45 ! 30610 1297 46 ! (* initialise buffers *) 30620 1298 47 ! FOR i:= 1 TO 2 DO 30630 1299 48 ! BEGIN 30640 1300 49 ! ! alloc (opoutref, opbufpool, wsem); 30650 1301 50 ! ! opoutref^.u1:=2; (* write *) 30660 1302 51 ! ! LOCK opoutref AS opbuf: opbuftype DO 30670 1303 52 ! ! WITH opbuf DO 30680 1304 53 ! ! BEGIN 30690 1305 54 ! ! ! first:= firstindex; 30700 1306 55 ! ! ! name:= "fets "; 30710 1307 56 ! ! ! data(firstindex):= "!"; 30720 1308 57 ! ! END; 30730 1309 58 ! ! return (opoutref); 30740 1310 59 ! END; 30750 1311 60 ! writenl; 30760 1312 61 ! 30770 1313 62 ! alloc(opinref, opbufpool, wrsem); 30780 1314 63 ! 30790 1315 64 ! opinref^.u1:=1; (* read *) 30800 1316 65 ! 30810 1317 66 ! LOCK opinref AS opbuf: opbuftype DO 30820 1318 67 ! WITH opbuf DO 30830 1319 68 ! BEGIN 30840 1320 69 ! ! first:= firstindex; 30850 1321 70 ! ! last:= lastindex; 30860 1322 71 ! ! name:= "fets "; 30870 1323 72 ! END; 30880 1324 73 ! 30890 1325 74 ! (*------- allocate all listenbuffers ---*) 30900 1326 75 ! FOR i:= 1 TO no_listen DO 30910 1327 76 ! BEGIN 30920 1328 77 ! ! alloc(cur,messbufpool,sem(com_pool).s^); \f fetsaoslst 81.05.13. 15.17. page 44 30930 1329 78 ! ! return(cur); 30940 1330 79 ! END; 30950 1331 80 ! 30960 1332 81 ! (*------- allocate all paxnetbuffers ---*) 30970 1333 82 ! FOR i:=1 TO no_pax_bufs DO 30980 1334 83 ! BEGIN 30990 1335 84 ! ! alloc( cur, paxbufpool, sem(dte_sem_no).s^); 31000 1336 85 ! ! signal( cur, sem( pax_pool).s^); 31010 1337 86 ! END; 31020 1338 87 ! 31030 1339 88 ! st:= 1024; 31040 1340 89 ! base:= 10; 31050 1341 90 ! firstword:= 1; 31060 1342 91 ! lastword:= 10; 31070 1343 92 ! 31080 1344 93 ! setoflowmask(true); 31090 1345 94 ! 31100 1346 95 ! noofparams:= 0; 31110 1347 96 ! (* insert auto create with edit here *) 31120 1348 97 ! 31130 1349 98 ! REPEAT 31140 1350 99 ! ! (* read a line of input from the operator and execute it *) 31150 1351 100 ! ! 31160 1352 101 ! ! getinput; 31170 1353 102 ! ! 31180 1354 103 ! ! CASE command OF 31190 1355 104 ! ! ! 31200 1356 105 ! ! ! ";": (* comment command *) 31210 1357 106 ! ! ! BEGIN 31220 1358 107 ! ! ! END; 31230 1359 108 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 45 32010 1360 109 ! ! ! "a": (* alloc *) 32020 1361 110 ! ! ! (* a buffer is allocated from the messbufpool to the current 32030 1362 111 ! ! ! reference "cur". 32040 1363 112 ! ! ! 1st param is the answersem *) 32050 1364 113 ! ! ! BEGIN 32060 1365 114 ! ! ! ! semno:= params(1); 32070 1366 115 ! ! ! ! 32080 1367 116 ! ! ! ! IF noofparams >= 1 THEN 32090 1368 117 ! ! ! ! IF nil(cur) THEN 32100 1369 118 ! ! ! ! IF ((semno>0) AND (semno <= noofsemaphores)) 32110 1370 119 ! ! ! ! OR ((semno<0) AND (semno >= -applsem_max)) THEN 32120 1371 120 ! ! ! ! BEGIN 32130 1372 121 ! ! ! ! ! IF semno > 0 THEN 32140 1373 122 ! ! ! ! ! alloc (cur, testbufpool, ts_sem(semno)) 32150 1374 123 ! ! ! ! ! ELSE 32160 1375 124 ! ! ! ! ! alloc (cur, testbufpool, evavector(-semno)); 32170 1376 125 ! ! ! ! ! WITH cur^ DO 32180 1377 126 ! ! ! ! ! BEGIN 32190 1378 127 ! ! ! ! ! ! u1:= 0; 32200 1379 128 ! ! ! ! ! ! u2:= 0; 32210 1380 129 ! ! ! ! ! ! u3:= 0; 32220 1381 130 ! ! ! ! ! ! u4:= 0; 32230 1382 131 ! ! ! ! ! END; 32240 1383 132 ! ! ! ! ! get_curbuftype; 32250 1384 133 ! ! ! ! ! outstring10(" bufsize "); 32260 1385 134 ! ! ! ! ! outinteger(curbufsize, 5); 32270 1386 135 ! ! ! ! ! outinteger(cur^.size, 5) 32280 1387 136 ! ! ! ! END 32290 1388 137 ! ! ! ! ELSE outstring10(illegalno) 32300 1389 138 ! ! ! ! ELSE outstring20("you already have one") 32310 1390 139 ! ! ! ! ELSE outstring10(noparam) 32320 1391 140 ! ! ! END (* alloc*); 32330 1392 141 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 46 33010 1393 142 ! ! ! "b": (* base *) 33020 1394 143 ! ! ! (* defines the number base for input as well as output *) 33030 1395 144 ! ! ! (* the base is always read decimally *) 33040 1396 145 ! ! ! BEGIN 33050 1397 146 ! ! ! ! IF noofparams < 1 THEN 33060 1398 147 ! ! ! ! BEGIN 33070 1399 148 ! ! ! ! ! base:= oldbase; 33080 1400 149 ! ! ! ! ! outstring10(noparam) 33090 1401 150 ! ! ! ! END 33100 1402 151 ! ! ! ! ELSE 33110 1403 152 ! ! ! ! 33120 1404 153 ! ! ! ! IF NOT (params(1) IN (. 2, 8, 10, 16 .) ) THEN 33130 1405 154 ! ! ! ! BEGIN (* illegal base *) 33140 1406 155 ! ! ! ! ! outstring20("illegal base "); 33150 1407 156 ! ! ! ! ! base:= oldbase; 33160 1408 157 ! ! ! ! END 33170 1409 158 ! ! ! ! ELSE 33180 1410 159 ! ! ! ! base:= params(1); 33190 1411 160 ! ! ! END; 33200 1412 161 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 47 34010 1413 162 ! ! ! "c": (* create *) 34020 1414 163 ! ! ! (* an incarnation of each of the predefined modules to be tested 34030 1415 164 ! ! ! is created and started. 34040 1416 165 ! ! ! params are nos. of the modules to be created and started *) 34050 1417 166 ! ! ! 34060 1418 167 ! ! ! IF noofparams >= 1 THEN 34070 1419 168 ! ! ! 34080 1420 169 ! ! ! BEGIN 34090 1421 170 ! ! ! ! moduleno:= params(1); 34100 1422 171 ! ! ! ! 34110 1423 172 ! ! ! ! IF noofparams>1 THEN st:= params(2); 34120 1424 173 ! ! ! ! IF moduleno=0 THEN 34130 1425 174 ! ! ! ! BEGIN 34140 1426 175 ! ! ! ! ! init_modul(8); 34150 1427 176 ! ! ! ! ! init_modul(1); 34160 1428 177 ! ! ! ! ! init_modul(17); 34170 1429 178 ! ! ! ! ! init_modul(22); 34180 1430 179 ! ! ! ! ! init_modul(23); 34190 1431 180 ! ! ! ! ! init_modul(24); 34200 1432 181 ! ! ! ! ! init_modul(25); 34210 1433 182 ! ! ! ! ! init_modul(26); 34220 1434 183 ! ! ! ! END 34230 1435 184 ! ! ! ! ELSE 34240 1436 185 ! ! ! ! 34250 1437 186 ! ! ! ! IF (moduleno<1) OR (moduleno > noofmodules) THEN 34260 1438 187 ! ! ! ! BEGIN (* illegal no *) 34270 1439 188 ! ! ! ! ! outdecimal(moduleno,4); 34280 1440 189 ! ! ! ! ! outstring10(illegalno); 34290 1441 190 ! ! ! ! END 34300 1442 191 ! ! ! ! ELSE 34310 1443 192 ! ! ! ! IF moduleready(moduleno) THEN init_modul(moduleno); 34320 1444 193 ! ! ! END (* if noofparams >= 1 *) 34330 1445 194 ! ! ! ELSE outstring10 (noparam); 34340 1446 195 ! ! ! (* end create *) 34350 1447 196 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 48 35010 1448 197 ! ! ! "d": (* test dtesimulator *) 35020 1449 198 ! ! ! BEGIN 35030 1450 199 ! ! ! ! outstring10("test dte "); 35040 1451 200 ! ! ! ! 35050 1452 201 ! ! ! ! sensesem( nref, sem( pax_pool).w^); 35060 1453 202 ! ! ! ! 35070 1454 203 ! ! ! ! IF NOT nil( nref) THEN 35080 1455 204 ! ! ! ! BEGIN 35090 1456 205 ! ! ! ! ! nref^.u2 := 7; 35100 1457 206 ! ! ! ! ! nref^.u4 := from_link; 35110 1458 207 ! ! ! ! ! 35120 1459 208 ! ! ! ! ! CASE params(1) OF 35130 1460 209 ! ! ! ! ! ! 35140 1461 210 ! ! ! ! ! ! 35150 1462 211 ! ! ! ! ! ! 35160 1463 212 ! ! ! ! ! ! 1: (* answer to connect ext *) 35170 1464 213 ! ! ! ! ! ! BEGIN 35180 1465 214 ! ! ! ! ! ! ! nref^.u1 := rut_con; 35190 1466 215 ! ! ! ! ! ! ! nref^.u2 := rut_ok; 35200 1467 216 ! ! ! ! ! ! ! nref^.u3 := 7; 35210 1468 217 ! ! ! ! ! ! ! 35220 1469 218 ! ! ! ! ! ! ! LOCK nref AS buf: rut_prefix_type DO 35230 1470 219 ! ! ! ! ! ! ! buf.ext_no := params(2); 35240 1471 220 ! ! ! ! ! ! ! (* ie d 1 20 answers on connect ext 20 *) 35250 1472 221 ! ! ! ! ! ! END; 35260 1473 222 ! ! ! ! ! ! 35270 1474 223 ! ! ! ! ! ! 2 : (* send ric buffer *) 35280 1475 224 ! ! ! ! ! ! BEGIN 35290 1476 225 ! ! ! ! ! ! ! nref^.u1 := dte_ric; 35300 1477 226 ! ! ! ! ! ! ! nref^.u4 := to_link; 35310 1478 227 ! ! ! ! ! ! END; 35320 1479 228 ! ! ! ! ! ! (* ie d 2 sends a ric-buffer to dte *) 35330 1480 229 ! ! ! ! ! ! 35340 1481 230 ! ! ! ! ! ! 3: (* receive call from remote user *) 35350 1482 231 ! ! ! ! ! ! BEGIN 35360 1483 232 ! ! ! ! ! ! ! nref^.u1 := rut_rec; 35370 1484 233 ! ! ! ! ! ! ! nref^.u2 := rut_ok; 35380 1485 234 ! ! ! ! ! ! ! nref^.u3 := rut_default; 35390 1486 235 ! ! ! ! ! ! ! LOCK nref AS buf : rut_trp_pdata DO 35400 1487 236 ! ! ! ! ! ! ! WITH buf DO 35410 1488 237 ! ! ! ! ! ! ! BEGIN 35420 1489 238 ! ! ! ! ! ! ! ! make_phead( 3, dte_car, phead); 35430 1490 239 ! ! ! ! ! ! ! ! FOR i := label_size+3 TO l_listen DO 35440 1491 240 ! ! ! ! ! ! ! ! alarm_mess.da(i) := i; 35450 1492 241 ! ! ! ! ! ! ! END 35460 1493 242 ! ! ! ! ! ! END; \f fetsaoslst 81.05.13. 15.17. page 49 35470 1494 243 ! ! ! ! ! ! (* stream sender receiver facility *) 35480 1495 244 ! ! ! ! ! ! (* ie d 3 1 0 0 4 0 0 2 0 is 4 sending call to 2 *) 35490 1496 245 ! ! ! ! ! ! \f fetsaoslst 81.05.13. 15.17. page 50 36010 1497 246 ! ! ! ! ! ! 4 : (* send receipt for call *) 36020 1498 247 ! ! ! ! ! ! IF params(2) = 1 THEN 36030 1499 248 ! ! ! ! ! ! BEGIN (* aic *) 36040 1500 249 ! ! ! ! ! ! ! nref^.u1 := dte_aic; 36050 1501 250 ! ! ! ! ! ! ! nref^.u3 := 1; 36060 1502 251 ! ! ! ! ! ! ! nref^.u4 := to_link; 36070 1503 252 ! ! ! ! ! ! ! LOCK nref AS buf : aic_buf_type DO 36080 1504 253 ! ! ! ! ! ! ! BEGIN 36090 1505 254 ! ! ! ! ! ! ! ! buf.aic_id := 1; 36100 1506 255 ! ! ! ! ! ! ! ! buf.aic_q := false; 36110 1507 256 ! ! ! ! ! ! ! END 36120 1508 257 ! ! ! ! ! ! END 36130 1509 258 ! ! ! ! ! ! ELSE 36140 1510 259 ! ! ! ! ! ! BEGIN (* rejic *) 36150 1511 260 ! ! ! ! ! ! ! nref^.u1 := dte_rejic; 36160 1512 261 ! ! ! ! ! ! ! nref^.u3 := 1; 36170 1513 262 ! ! ! ! ! ! ! nref^.u4 := to_link; 36180 1514 263 ! ! ! ! ! ! ! LOCK nref AS buf : rejic_buf_type DO 36190 1515 264 ! ! ! ! ! ! ! BEGIN 36200 1516 265 ! ! ! ! ! ! ! ! buf.rejic_id := 1; 36210 1517 266 ! ! ! ! ! ! ! ! buf.rejic_diag := params(3); 36220 1518 267 ! ! ! ! ! ! ! END 36230 1519 268 ! ! ! ! ! ! END; 36240 1520 269 ! ! ! ! ! ! (* ie d 4 1 sends aic-buffer *) 36250 1521 270 ! ! ! ! ! ! (* ie d 4 0 sends rejic-buffer *) 36260 1522 271 ! ! ! ! ! ! 36270 1523 272 ! ! ! ! ! ! 5: (* receive data from remote user *) 36280 1524 273 ! ! ! ! ! ! BEGIN 36290 1525 274 ! ! ! ! ! ! ! nref^.u1 := rut_rec; 36300 1526 275 ! ! ! ! ! ! ! nref^.u2 := rut_ok; 36310 1527 276 ! ! ! ! ! ! ! nref^.u3 := rut_default; 36320 1528 277 ! ! ! ! ! ! ! LOCK nref AS buf : rut_trp_pdata DO 36330 1529 278 ! ! ! ! ! ! ! WITH buf DO 36340 1530 279 ! ! ! ! ! ! ! BEGIN 36350 1531 280 ! ! ! ! ! ! ! ! make_phead( 3, dte_sdata, phead); 36360 1532 281 ! ! ! ! ! ! ! ! control.op_code := opc_command; 36370 1533 282 ! ! ! ! ! ! ! ! FOR i := label_size+3 TO l_listen DO 36380 1534 283 ! ! ! ! ! ! ! ! alarm_mess.da(i) := i; 36390 1535 284 ! ! ! ! ! ! ! END; 36400 1536 285 ! ! ! ! ! ! END; 36410 1537 286 ! ! ! ! ! ! (* strm sender rec fac *) 36420 1538 287 ! ! ! ! ! ! (* ie d 5 1 0 0 4 0 0 2 0 sends data from 4 to 2 *) 36430 1539 288 ! ! ! ! ! ! \f fetsaoslst 81.05.13. 15.17. page 51 37010 1540 289 ! ! ! ! ! ! 6: (* clear from remote user *) 37020 1541 290 ! ! ! ! ! ! BEGIN 37030 1542 291 ! ! ! ! ! ! ! nref^.u1 := rut_rec; 37040 1543 292 ! ! ! ! ! ! ! nref^.u2 := rut_ok; 37050 1544 293 ! ! ! ! ! ! ! nref^.u3 := rut_default; 37060 1545 294 ! ! ! ! ! ! ! LOCK nref AS buf : rut_trp_pdata DO 37070 1546 295 ! ! ! ! ! ! ! WITH buf DO 37080 1547 296 ! ! ! ! ! ! ! BEGIN 37090 1548 297 ! ! ! ! ! ! ! ! make_phead( 3, dte_clr, phead); 37100 1549 298 ! ! ! ! ! ! ! END; 37110 1550 299 ! ! ! ! ! ! END; 37120 1551 300 ! ! ! ! ! ! (* strm sender rec fac *) 37130 1552 301 ! ! ! ! ! ! (* ie d 6 1 0 0 4 0 0 2 0 clears stream 1 from 4 to 2 *) 37140 1553 302 ! ! ! ! ! ! 37150 1554 303 ! ! ! ! ! ! 37160 1555 304 ! ! ! ! ! ! \f fetsaoslst 81.05.13. 15.17. page 52 38010 1556 305 ! ! ! ! ! ! 10: (* call request *) 38020 1557 306 ! ! ! ! ! ! BEGIN 38030 1558 307 ! ! ! ! ! ! ! nref^.u1 := dte_car; 38040 1559 308 ! ! ! ! ! ! ! nref^.u3 := params(2); 38050 1560 309 ! ! ! ! ! ! ! nref^.u4 := to_link; 38060 1561 310 ! ! ! ! ! ! ! LOCK nref AS buf:car_buf_type DO 38070 1562 311 ! ! ! ! ! ! ! WITH buf DO 38080 1563 312 ! ! ! ! ! ! ! BEGIN 38090 1564 313 ! ! ! ! ! ! ! ! first := ric_first_val; 38100 1565 314 ! ! ! ! ! ! ! ! last := ric_first_val+l_control+l_listen-1; 38110 1566 315 ! ! ! ! ! ! ! ! q_bit := false; 38120 1567 316 ! ! ! ! ! ! ! ! WITH call_buf DO 38130 1568 317 ! ! ! ! ! ! ! ! BEGIN 38140 1569 318 ! ! ! ! ! ! ! ! ! control.op_code := dte_car; 38150 1570 319 ! ! ! ! ! ! ! ! ! dte_adr_l := l_dte_adr; 38160 1571 320 ! ! ! ! ! ! ! ! ! dte_adr := paxnet_config( params(5)); 38170 1572 321 ! ! ! ! ! ! ! ! ! 38180 1573 322 ! ! ! ! ! ! ! ! ! facility_l := l_facilities; 38190 1574 323 ! ! ! ! ! ! ! ! ! facility := params(6); 38200 1575 324 ! ! ! ! ! ! ! ! ! FOR i := label_size+3 TO l_listen DO 38210 1576 325 ! ! ! ! ! ! ! ! ! alarm_mess.da(i):=i; 38220 1577 326 ! ! ! ! ! ! ! ! END; 38230 1578 327 ! ! ! ! ! ! ! END; 38240 1579 328 ! ! ! ! ! ! END; 38250 1580 329 ! ! ! ! ! ! (* strm rec fac *) 38260 1581 330 ! ! ! ! ! ! (* ie d 10 1 0 0 3 0 sends a call to 3 on stream 1 *) 38270 1582 331 ! ! ! ! ! ! (* ie d 10 2 0 0 4 0 sends a call to 4 on stream 2 *) 38280 1583 332 ! ! ! ! ! ! \f fetsaoslst 81.05.13. 15.17. page 53 39010 1584 333 ! ! ! ! ! ! 11: (* call accepted from remote user *) 39020 1585 334 ! ! ! ! ! ! BEGIN 39030 1586 335 ! ! ! ! ! ! ! nref^.u1 := rut_rec; 39040 1587 336 ! ! ! ! ! ! ! nref^.u2 := rut_ok; 39050 1588 337 ! ! ! ! ! ! ! nref^.u3 := rut_default; 39060 1589 338 ! ! ! ! ! ! ! LOCK nref AS buf: rut_trp_pdata DO 39070 1590 339 ! ! ! ! ! ! ! WITH buf DO 39080 1591 340 ! ! ! ! ! ! ! make_phead( 3, dte_aic, phead); 39090 1592 341 ! ! ! ! ! ! END; 39100 1593 342 ! ! ! ! ! ! (* strm sender rec fac *) 39110 1594 343 ! ! ! ! ! ! (* ie d 11 1 0 0 3 0 0 2 0 is 3 accepting call from 2 *) 39120 1595 344 ! ! ! ! ! ! 39130 1596 345 ! ! ! ! ! ! 12: (* send data to remote user *) 39140 1597 346 ! ! ! ! ! ! BEGIN 39150 1598 347 ! ! ! ! ! ! ! nref^.u1 := dte_sdata; 39160 1599 348 ! ! ! ! ! ! ! nref^.u3 := params(2); 39170 1600 349 ! ! ! ! ! ! ! nref^.u4 := to_link; 39180 1601 350 ! ! ! ! ! ! ! LOCK nref AS buf : dte_sdata_data DO 39190 1602 351 ! ! ! ! ! ! ! WITH buf DO 39200 1603 352 ! ! ! ! ! ! ! BEGIN 39210 1604 353 ! ! ! ! ! ! ! ! q_bit := false; 39220 1605 354 ! ! ! ! ! ! ! ! m_bit := false; 39230 1606 355 ! ! ! ! ! ! ! ! control.op_code := opc_command; 39240 1607 356 ! ! ! ! ! ! ! ! FOR i := label_size+3 TO l_listen DO 39250 1608 357 ! ! ! ! ! ! ! ! alarm_mess.da(i) := i; 39260 1609 358 ! ! ! ! ! ! ! END 39270 1610 359 ! ! ! ! ! ! END; 39280 1611 360 ! ! ! ! ! ! (* ie d 12 1 sends data on stream 1 *) 39290 1612 361 ! ! ! ! ! ! 39300 1613 362 ! ! ! ! ! ! 13: (* clear stream to remote user *) 39310 1614 363 ! ! ! ! ! ! BEGIN 39320 1615 364 ! ! ! ! ! ! ! nref^.u1 := dte_clr; 39330 1616 365 ! ! ! ! ! ! ! nref^.u4 := to_link; 39340 1617 366 ! ! ! ! ! ! ! nref^.u3 := params(2); 39350 1618 367 ! ! ! ! ! ! ! LOCK nref AS buf : clear_buf_type DO 39360 1619 368 ! ! ! ! ! ! ! buf.diag_code := params(3); 39370 1620 369 ! ! ! ! ! ! END; 39380 1621 370 ! ! ! ! ! ! 39390 1622 371 ! ! ! ! ! ! (* strm diag-code *) 39400 1623 372 ! ! ! ! ! ! (* ie d 13 1 16 sends clear stream to dte *) 39410 1624 373 ! ! ! ! ! ! 39420 1625 374 ! ! ! ! ! ! 39430 1626 375 ! ! ! ! ! ! OTHERWISE 39440 1627 376 ! ! ! ! ! ! 39450 1628 377 ! ! ! ! ! ! outstring10("undef test"); 39460 1629 378 ! ! ! ! ! END; \f fetsaoslst 81.05.13. 15.17. page 54 39470 1630 379 ! ! ! ! ! signal( nref, sem( dte_sem_no).s^); 39480 1631 380 ! ! ! ! END 39490 1632 381 ! ! ! ! ELSE 39500 1633 382 ! ! ! ! outstring10("no paxbufs"); 39510 1634 383 ! ! ! ! 39520 1635 384 ! ! ! END; 39530 1636 385 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 55 40010 1637 386 ! ! ! "f": (* fill *) 40020 1638 387 ! ! ! (* fills integers into current buffer. 40030 1639 388 ! ! ! 1st param: first word no. to be filled, 40040 1640 389 ! ! ! following: values to be assigned *) 40050 1641 390 ! ! ! BEGIN 40060 1642 391 ! ! ! ! IF noofparams < 2 THEN 40070 1643 392 ! ! ! ! outstring10("param ") 40080 1644 393 ! ! ! ! ELSE 40090 1645 394 ! ! ! ! IF (params(1) < 1) THEN 40100 1646 395 ! ! ! ! outstring20("illegal start ") 40110 1647 396 ! ! ! ! ELSE 40120 1648 397 ! ! ! ! IF nil(cur) THEN 40130 1649 398 ! ! ! ! outstring10("no buffer ") 40140 1650 399 ! ! ! ! ELSE 40150 1651 400 ! ! ! ! BEGIN (* params are ok *) 40160 1652 401 ! ! ! ! ! i:= params(1); (* i points into the messbuf *) 40170 1653 402 ! ! ! ! ! 40180 1654 403 ! ! ! ! ! FOR j:= 2 TO noofparams DO 40190 1655 404 ! ! ! ! ! (* j points into the param list *) 40200 1656 405 ! ! ! ! ! IF i <= curbufsize THEN 40210 1657 406 ! ! ! ! ! BEGIN 40220 1658 407 ! ! ! ! ! ! CASE curbuftype OF 40230 1659 408 ! ! ! ! ! ! ! 1: LOCK cur AS minbuf: minbuftype DO 40240 1660 409 ! ! ! ! ! ! ! minbuf(i):= params(j); 40250 1661 410 ! ! ! ! ! ! ! 2: LOCK cur AS messbuf: messbuftype DO 40260 1662 411 ! ! ! ! ! ! ! messbuf(i):= params(j); 40270 1663 412 ! ! ! ! ! ! ! 3: LOCK cur AS maxbuf: maxbuftype DO 40280 1664 413 ! ! ! ! ! ! ! maxbuf(i):= params(j); 40290 1665 414 ! ! ! ! ! ! ! 4: LOCK cur AS testbuf: testbuftype DO 40300 1666 415 ! ! ! ! ! ! ! testbuf(i):= params(j); 40310 1667 416 ! ! ! ! ! ! ! OTHERWISE 40320 1668 417 ! ! ! ! ! ! END; 40330 1669 418 ! ! ! ! ! ! i:= i + 1; 40340 1670 419 ! ! ! ! ! END; 40350 1671 420 ! ! ! ! ! 40360 1672 421 ! ! ! ! END (* params ok *) 40370 1673 422 ! ! ! END (* fill *); 40380 1674 423 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 56 41010 1675 424 ! ! ! "h": (* help *) 41020 1676 425 ! ! ! (* lists possible commands and no. of parameters *) 41030 1677 426 ! ! ! BEGIN 41040 1678 427 ! ! ! ! outstring20("comm and no of param"); writenl; 41050 1679 428 ! ! ! ! outstring20("a: allocate 1 "); writenl; 41060 1680 429 ! ! ! ! outstring20("b: base 1 "); writenl; 41070 1681 430 ! ! ! ! outstring20("c: create >=1 "); writenl; 41080 1682 431 ! ! ! ! outstring20("e: execute 1 "); writenl; 41090 1683 432 ! ! ! ! outstring20("f: fill 2 "); writenl; 41100 1684 433 ! ! ! ! outstring20("h: help 0 "); writenl; 41110 1685 434 ! ! ! ! outstring20("i: init point 0 "); writenl; 41120 1686 435 ! ! ! ! outstring20("k: kill >=1 "); writenl; 41130 1687 436 ! ! ! ! outstring20("o: output 0 to 2"); writenl; 41140 1688 437 ! ! ! ! outstring20("p: partial >=3 "); writenl; 41150 1689 438 ! ! ! ! outstring20("r: return 0 "); writenl; 41160 1690 439 ! ! ! ! outstring20("s: signal 1 "); writenl; 41170 1691 440 ! ! ! ! outstring20("t: test 0 or 1"); writenl; 41180 1692 441 ! ! ! ! outstring20("u: user param 1 to 4"); writenl; 41190 1693 442 ! ! ! ! outstring20("w: wait 1 "); writenl; 41200 1694 443 ! ! ! ! outstring20("x: exch point 2 "); writenl; 41210 1695 444 ! ! ! ! outstring20(";: comment "); 41220 1696 445 ! ! ! END; 41230 1697 446 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 57 42010 1698 447 ! ! ! "i": (* initialise pointers *) 42020 1699 448 ! ! ! IF noofparams=0 THEN 42030 1700 449 ! ! ! FOR i:=1 TO noofsemaphores DO sem(i).w:= sem(i).s ELSE 42040 1701 450 ! ! ! IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN 42050 1702 451 ! ! ! sem(params(1)).w:= sem(params(1)).s ELSE 42060 1703 452 ! ! ! outstring10(valparam); 42070 1704 453 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 58 43010 1705 454 ! ! ! "e", (* exception *) 43020 1706 455 ! ! ! (* call of exception routine in one or more incarnations *) 43030 1707 456 ! ! ! "k": (* kill *) 43040 1708 457 ! ! ! (* removes incarnation of tested module(s) 43050 1709 458 ! ! ! params are nos. of modules to be removed *) 43060 1710 459 ! ! ! 43070 1711 460 ! ! ! IF noofparams >= 1 THEN 43080 1712 461 ! ! ! FOR i:= 1 TO noofparams DO 43090 1713 462 ! ! ! BEGIN 43100 1714 463 ! ! ! ! moduleno:= params(i); 43110 1715 464 ! ! ! ! IF (1<=moduleno) AND (moduleno<=noofmodules) THEN 43120 1716 465 ! ! ! ! IF NOT nil(sh(moduleno)) THEN 43130 1717 466 ! ! ! ! IF command="e" THEN 43140 1718 467 ! ! ! ! break(sh(moduleno),#h2f) ELSE 43150 1719 468 ! ! ! ! remove (sh(moduleno)) 43160 1720 469 ! ! ! ! ELSE 43170 1721 470 ! ! ! ! BEGIN 43180 1722 471 ! ! ! ! ! outdecimal (moduleno, 4); 43190 1723 472 ! ! ! ! ! outstring10(" not alive"); 43200 1724 473 ! ! ! ! ! writenl; 43210 1725 474 ! ! ! ! END 43220 1726 475 ! ! ! ! ELSE 43230 1727 476 ! ! ! ! BEGIN 43240 1728 477 ! ! ! ! ! outdecimal (moduleno, 4); 43250 1729 478 ! ! ! ! ! outstring10(illegalno); 43260 1730 479 ! ! ! ! ! writenl; 43270 1731 480 ! ! ! ! END 43280 1732 481 ! ! ! END 43290 1733 482 ! ! ! ELSE outstring10("no params "); 43300 1734 483 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 59 44010 1735 484 ! ! ! "m": (* testmode *) 44020 1736 485 ! ! ! testmode:= NOT testmode; 44030 1737 486 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 60 45010 1738 487 ! ! ! "n": (* test netconnector *) 45020 1739 488 ! ! ! BEGIN 45030 1740 489 ! ! ! ! (* 1. c19 tapdte *) 45040 1741 490 ! ! ! ! (* 2. c20 tapnet *) 45050 1742 491 ! ! ! ! (* 3. x18 31 *) 45060 1743 492 ! ! ! ! (* 4. x4 34 *) 45070 1744 493 ! ! ! ! (* 5. c17 netcon *) 45080 1745 494 ! ! ! ! (* 6. dummybuf til 4 *) 45090 1746 495 ! ! ! ! (* 7. dummybuf til 34 *) 45100 1747 496 ! ! ! ! (* 8. dummybuf til 31 *) 45110 1748 497 ! ! ! ! 45120 1749 498 ! ! ! ! outstring10("test netc "); 45130 1750 499 ! ! ! ! 45140 1751 500 ! ! ! ! 45150 1752 501 ! ! ! ! CASE params(1) OF 45160 1753 502 ! ! ! ! ! \f fetsaoslst 81.05.13. 15.17. page 61 46010 1754 503 ! ! ! ! ! 1: (* update pax-table from local sup *) 46020 1755 504 ! ! ! ! ! BEGIN 46030 1756 505 ! ! ! ! ! ! sensesem( nref, sem( com_pool).w^); 46040 1757 506 ! ! ! ! ! ! 46050 1758 507 ! ! ! ! ! ! IF NOT nil( nref) THEN 46060 1759 508 ! ! ! ! ! ! BEGIN 46070 1760 509 ! ! ! ! ! ! ! nref^.u2 := 7; 46080 1761 510 ! ! ! ! ! ! ! nref^.u3 := tss_route; 46090 1762 511 ! ! ! ! ! ! ! nref^.u4 := #hac; 46100 1763 512 ! ! ! ! ! ! ! 46110 1764 513 ! ! ! ! ! ! ! LOCK nref AS buf : RECORD 46120 1765 514 ! ! ! ! ! ! ! ! a:alarmlabel; 46130 1766 515 ! ! ! ! ! ! ! ! i : integer; 46140 1767 516 ! ! ! ! ! ! ! ! p:paxnet_e; 46150 1768 517 ! ! ! ! ! ! ! END DO 46160 1769 518 ! ! ! ! ! ! ! WITH buf DO 46170 1770 519 ! ! ! ! ! ! ! BEGIN 46180 1771 520 ! ! ! ! ! ! ! ! a.no_of_by := l_listen; 46190 1772 521 ! ! ! ! ! ! ! ! a.update := insert_code; 46200 1773 522 ! ! ! ! ! ! ! ! a.rec.macro := packmacro(2); 46210 1774 523 ! ! ! ! ! ! ! ! a.rec.micro := netc_mic_addr; 46220 1775 524 ! ! ! ! ! ! ! ! a.send.macro := packmacro(5); 46230 1776 525 ! ! ! ! ! ! ! ! p.al_mac_addr := packmacro(8); 46240 1777 526 ! ! ! ! ! ! ! ! p.pax_addr := paxnet_config( params(13)); 46250 1778 527 ! ! ! ! ! ! ! ! 46260 1779 528 ! ! ! ! ! ! ! ! i := params(14); 46270 1780 529 ! ! ! ! ! ! ! ! p.stream_no := params(15); 46280 1781 530 ! ! ! ! ! ! ! ! p.max_retrans := 1; 46290 1782 531 ! ! ! ! ! ! ! END; 46300 1783 532 ! ! ! ! ! ! END; 46310 1784 533 ! ! ! ! ! ! (* receiver sender al-mac pax indx stream *) 46320 1785 534 ! ! ! ! ! ! (* ie n 1 0 0 0 1 0 0 1 2 2 0 0 2 1 1 sets netc address *) 46330 1786 535 ! ! ! ! ! ! (* ie n 1 1 2 2 1 0 0 1 2 0 0 0 2 2 2 sets ncsup addr *) 46340 1787 536 ! ! ! ! ! ! (* ie n 1 1 2 2 1 0 0 1 3 2 0 0 3 7 0 sets global ts-adr*) 46350 1788 537 ! ! ! ! ! ! (* ie n 1 1 2 2 1 0 0 1 3 0 0 0 3 8 0 sets global nc-adr*) 46360 1789 538 ! ! ! ! ! END; 46370 1790 539 ! ! ! ! ! \f fetsaoslst 81.05.13. 15.17. page 62 47010 1791 540 ! ! ! ! ! 2 : (* update pax-table from net *) 47020 1792 541 ! ! ! ! ! (*---- comming in a ric-buffer --*) 47030 1793 542 ! ! ! ! ! BEGIN 47040 1794 543 ! ! ! ! ! ! sensesem( nref, sem(pax_pool).w^); 47050 1795 544 ! ! ! ! ! ! 47060 1796 545 ! ! ! ! ! ! IF NOT nil( nref) THEN 47070 1797 546 ! ! ! ! ! ! BEGIN 47080 1798 547 ! ! ! ! ! ! ! nref^.u1 := dte_ric; 47090 1799 548 ! ! ! ! ! ! ! nref^.u2 := 0; 47100 1800 549 ! ! ! ! ! ! ! nref^.u3 := 7; 47110 1801 550 ! ! ! ! ! ! ! nref^.u4 := to_link; 47120 1802 551 ! ! ! ! ! ! ! 47130 1803 552 ! ! ! ! ! ! ! LOCK nref AS buf : tst_ric_type DO 47140 1804 553 ! ! ! ! ! ! ! BEGIN 47150 1805 554 ! ! ! ! ! ! ! ! buf.c_i := params(16); 47160 1806 555 ! ! ! ! ! ! ! ! WITH buf.c_b DO 47170 1807 556 ! ! ! ! ! ! ! ! BEGIN 47180 1808 557 ! ! ! ! ! ! ! ! ! a_l.no_of_by := l_listen; 47190 1809 558 ! ! ! ! ! ! ! ! ! a_l.op_code := #hac; 47200 1810 559 ! ! ! ! ! ! ! ! ! a_l.update := insert_code; 47210 1811 560 ! ! ! ! ! ! ! ! ! a_l.rec.macro := packmacro(2); 47220 1812 561 ! ! ! ! ! ! ! ! ! a_l.rec.micro:=netc_mic_addr; 47230 1813 562 ! ! ! ! ! ! ! ! ! a_l.send.macro:=packmacro(5); 47240 1814 563 ! ! ! ! ! ! ! ! ! a_l.send.micro := 1; 47250 1815 564 ! ! ! ! ! ! ! ! ! p_e.al_mac_addr := packmacro(8); 47260 1816 565 ! ! ! ! ! ! ! ! ! p_e.pax_addr := paxnet_config( params(13)); 47270 1817 566 ! ! ! ! ! ! ! ! ! 47280 1818 567 ! ! ! ! ! ! ! ! ! indx:=params(15); 47290 1819 568 ! ! ! ! ! ! ! ! ! p_e.stream_no := params(14); 47300 1820 569 ! ! ! ! ! ! ! ! ! p_e.max_retrans := 1; 47310 1821 570 ! ! ! ! ! ! ! ! ! d_a := p_e.pax_addr; 47320 1822 571 ! ! ! ! ! ! ! ! END; 47330 1823 572 ! ! ! ! ! ! ! END 47340 1824 573 ! ! ! ! ! ! END; 47350 1825 574 ! ! ! ! ! END; 47360 1826 575 ! ! ! ! ! (* receiver sender al-mac pax strm indx call-id *) 47370 1827 576 ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 4 2 0 0 4 1 9 1 sets global ts-addr *) 47380 1828 577 ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 4 0 0 0 4 2 10 2 sets global nc-addr *) 47390 1829 578 ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 5 2 0 0 5 3 11 3 sets global ts-addr *) 47400 1830 579 ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 5 0 0 0 5 4 12 4 sets global nc-addr *) 47410 1831 580 ! ! ! ! ! \f fetsaoslst 81.05.13. 15.17. page 63 48010 1832 581 ! ! ! ! ! 3: (* send alarmmessage from local *) 48020 1833 582 ! ! ! ! ! BEGIN 48030 1834 583 ! ! ! ! ! ! sensesem( nref, sem(com_pool).w^); 48040 1835 584 ! ! ! ! ! ! 48050 1836 585 ! ! ! ! ! ! IF NOT nil( nref) THEN 48060 1837 586 ! ! ! ! ! ! BEGIN 48070 1838 587 ! ! ! ! ! ! ! nref^.u2 := 7; 48080 1839 588 ! ! ! ! ! ! ! nref^.u3 := tss_route; 48090 1840 589 ! ! ! ! ! ! ! nref^.u4 := #h30; 48100 1841 590 ! ! ! ! ! ! ! 48110 1842 591 ! ! ! ! ! ! ! LOCK nref AS abuf : max_alarm_mess DO 48120 1843 592 ! ! ! ! ! ! ! WITH abuf DO 48130 1844 593 ! ! ! ! ! ! ! BEGIN 48140 1845 594 ! ! ! ! ! ! ! ! al.no_of_by := l_listen; 48150 1846 595 ! ! ! ! ! ! ! ! al.rec.macro := packmacro(2); 48160 1847 596 ! ! ! ! ! ! ! ! al.rec.micro := 0; 48170 1848 597 ! ! ! ! ! ! ! ! al.send.macro := packmacro(5); 48180 1849 598 ! ! ! ! ! ! ! ! al.send.micro := 0; 48190 1850 599 ! ! ! ! ! ! ! ! FOR i := label_size+3 TO l_listen DO 48200 1851 600 ! ! ! ! ! ! ! ! da(i) := i; 48210 1852 601 ! ! ! ! ! ! ! END; 48220 1853 602 ! ! ! ! ! ! ! 48230 1854 603 ! ! ! ! ! ! ! (* receiver sender *) 48240 1855 604 ! ! ! ! ! ! ! (* ie n 3 1 2 0 1 0 0 gives an alarm to ncsup local *) 48250 1856 605 ! ! ! ! ! ! ! (* ie n 3 1 3 2 1 0 0 gives an alarm to tssup global *) 48260 1857 606 ! ! ! ! ! ! ! (* ie n 3 1 3 0 1 0 0 gives an alarm to ncsup global *) 48270 1858 607 ! ! ! ! ! ! END; 48280 1859 608 ! ! ! ! ! END; 48290 1860 609 ! ! ! ! ! \f fetsaoslst 81.05.13. 15.17. page 64 49010 1861 610 ! ! ! ! ! 4: (* update pax-table from net *) 49020 1862 611 ! ! ! ! ! (*--- comming in a databuffer ---*) 49030 1863 612 ! ! ! ! ! BEGIN 49040 1864 613 ! ! ! ! ! ! sensesem( nref, sem( pax_pool).w^); 49050 1865 614 ! ! ! ! ! ! 49060 1866 615 ! ! ! ! ! ! IF NOT nil(nref) THEN 49070 1867 616 ! ! ! ! ! ! BEGIN 49080 1868 617 ! ! ! ! ! ! ! nref^.u1 := dte_rdata; 49090 1869 618 ! ! ! ! ! ! ! nref^.u2 := 0; 49100 1870 619 ! ! ! ! ! ! ! nref^.u3 := params(2) MOD 256; 49110 1871 620 ! ! ! ! ! ! ! nref^.u4 := to_link; 49120 1872 621 ! ! ! ! ! ! ! 49130 1873 622 ! ! ! ! ! ! ! LOCK nref AS buf : tst_sdata_data DO 49140 1874 623 ! ! ! ! ! ! ! WITH buf DO 49150 1875 624 ! ! ! ! ! ! ! BEGIN 49160 1876 625 ! ! ! ! ! ! ! ! control.op_code := opc_command; 49170 1877 626 ! ! ! ! ! ! ! ! WITH a_l DO 49180 1878 627 ! ! ! ! ! ! ! ! BEGIN 49190 1879 628 ! ! ! ! ! ! ! ! ! no_of_by := l_listen; 49200 1880 629 ! ! ! ! ! ! ! ! ! op_code := #hac; 49210 1881 630 ! ! ! ! ! ! ! ! ! update := insert_code; 49220 1882 631 ! ! ! ! ! ! ! ! ! rec.macro := packmacro(3); 49230 1883 632 ! ! ! ! ! ! ! ! ! rec.micro := netc_mic_addr; 49240 1884 633 ! ! ! ! ! ! ! ! ! send.macro := packmacro(6); 49250 1885 634 ! ! ! ! ! ! ! ! ! send.micro := 0; 49260 1886 635 ! ! ! ! ! ! ! ! END; 49270 1887 636 ! ! ! ! ! ! ! ! indx := params(9); 49280 1888 637 ! ! ! ! ! ! ! ! WITH p_e DO 49290 1889 638 ! ! ! ! ! ! ! ! BEGIN 49300 1890 639 ! ! ! ! ! ! ! ! ! al_mac_addr := packmacro(10); 49310 1891 640 ! ! ! ! ! ! ! ! ! pax_addr := paxnet_config( params(15)); 49320 1892 641 ! ! ! ! ! ! ! ! ! 49330 1893 642 ! ! ! ! ! ! ! ! ! stream_no := params(16); 49340 1894 643 ! ! ! ! ! ! ! ! ! max_retrans := 1; 49350 1895 644 ! ! ! ! ! ! ! ! END; 49360 1896 645 ! ! ! ! ! ! ! END; 49370 1897 646 ! ! ! ! ! ! END; 49380 1898 647 ! ! ! ! ! END; 49390 1899 648 ! ! ! ! ! 49400 1900 649 ! ! ! ! ! (* strm receiver sender indx al-mac pax strm *) 49410 1901 650 ! ! ! ! ! (* n 4 1 1 2 2 1 0 0 1 1 4 2 0 0 4 1 *) 49420 1902 651 ! ! ! ! ! \f fetsaoslst 81.05.13. 15.17. page 65 50010 1903 652 ! ! ! ! ! 5: (* send data or receipt from net *) 50020 1904 653 ! ! ! ! ! BEGIN 50030 1905 654 ! ! ! ! ! ! sensesem( nref, sem(pax_pool).w^); 50040 1906 655 ! ! ! ! ! ! 50050 1907 656 ! ! ! ! ! ! IF NOT nil( nref) THEN 50060 1908 657 ! ! ! ! ! ! BEGIN 50070 1909 658 ! ! ! ! ! ! ! nref^.u1 := dte_rdata; 50080 1910 659 ! ! ! ! ! ! ! nref^.u2 := 0; 50090 1911 660 ! ! ! ! ! ! ! nref^.u3 := params(4) MOD 256; 50100 1912 661 ! ! ! ! ! ! ! nref^.u4 := to_link; 50110 1913 662 ! ! ! ! ! ! ! 50120 1914 663 ! ! ! ! ! ! ! LOCK nref AS buf : tst_sdata_data DO 50130 1915 664 ! ! ! ! ! ! ! WITH buf DO 50140 1916 665 ! ! ! ! ! ! ! BEGIN 50150 1917 666 ! ! ! ! ! ! ! ! control.op_code := params(2); 50160 1918 667 ! ! ! ! ! ! ! ! control.data := params(3); 50170 1919 668 ! ! ! ! ! ! ! ! a_l.rec.macro := packmacro(5); 50180 1920 669 ! ! ! ! ! ! ! ! a_l.rec.micro := 0; 50190 1921 670 ! ! ! ! ! ! ! ! a_l.op_code := #h30; 50200 1922 671 ! ! ! ! ! ! ! END; 50210 1923 672 ! ! ! ! ! ! END; 50220 1924 673 ! ! ! ! ! END; 50230 1925 674 ! ! ! ! ! 50240 1926 675 ! ! ! ! ! (* opcode data stream receiver *) 50250 1927 676 ! ! ! ! ! (* n 5 x x 1 1 2 2 *) 50260 1928 677 ! ! ! ! ! (* dte-aic 16 128 data-received *) 50270 1929 678 ! ! ! ! ! (* dte-rej 20 64 data-not-received *) 50280 1930 679 ! ! ! ! ! (* opc-rec 96 *) 50290 1931 680 ! ! ! ! ! (* opc-com 48 *) 50300 1932 681 ! ! ! ! ! 50310 1933 682 ! ! ! ! ! 50320 1934 683 ! ! ! ! ! OTHERWISE 50330 1935 684 ! ! ! ! ! outstring10("undef test"); 50340 1936 685 ! ! ! ! END; 50350 1937 686 ! ! ! ! IF NOT nil( nref) THEN 50360 1938 687 ! ! ! ! signal( nref, sem( netc_sem_no).s^) 50370 1939 688 ! ! ! ! ELSE 50380 1940 689 ! ! ! ! outstring10("no buffers"); 50390 1941 690 ! ! ! END; 50400 1942 691 ! ! ! 50410 1943 692 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 66 51010 1944 693 ! ! ! "o": (* output *) 51020 1945 694 ! ! ! (* outputs current buffer incl. user parameters 51030 1946 695 ! ! ! 1st param is firstword, 51040 1947 696 ! ! ! 2nd param is lastword *) 51050 1948 697 ! ! ! BEGIN 51060 1949 698 ! ! ! ! IF nil(cur) THEN 51070 1950 699 ! ! ! ! outstring10 ("no buffer ") 51080 1951 700 ! ! ! ! ELSE 51090 1952 701 ! ! ! ! BEGIN 51100 1953 702 ! ! ! ! ! outchar("u"); 51110 1954 703 ! ! ! ! ! outchar(":"); 51120 1955 704 ! ! ! ! ! 51130 1956 705 ! ! ! ! ! outinteger(cur^.u1,4); 51140 1957 706 ! ! ! ! ! outinteger(cur^.u2,4); 51150 1958 707 ! ! ! ! ! outinteger(cur^.u3,4); 51160 1959 708 ! ! ! ! ! outinteger(cur^.u4,4); 51170 1960 709 ! ! ! ! ! writenl; 51180 1961 710 ! ! ! ! ! 51190 1962 711 ! ! ! ! ! IF (noofparams>=1) AND (params(1)>=1) 51200 1963 712 ! ! ! ! ! AND (params(1)<= curbufsize) THEN 51210 1964 713 ! ! ! ! ! firstword:= params(1); 51220 1965 714 ! ! ! ! ! 51230 1966 715 ! ! ! ! ! IF (noofparams>=2) AND (params(2)<=curbufsize) THEN 51240 1967 716 ! ! ! ! ! lastword:= params(2); 51250 1968 717 ! ! ! ! ! IF lastword>curbufsize THEN 51260 1969 718 ! ! ! ! ! lastword:= curbufsize; 51270 1970 719 ! ! ! ! ! 51280 1971 720 ! ! ! ! ! IF cur^.size<curbufsize THEN 51290 1972 721 ! ! ! ! ! outstring20("too small buffer ") ELSE 51300 1973 722 ! ! ! ! ! FOR i:= firstword TO lastword DO 51310 1974 723 ! ! ! ! ! BEGIN 51320 1975 724 ! ! ! ! ! ! outdecimal(i,3); 51330 1976 725 ! ! ! ! ! ! outchar(":"); 51340 1977 726 ! ! ! ! ! ! CASE curbuftype OF 51350 1978 727 ! ! ! ! ! ! ! 1: LOCK cur AS minbuf: minbuftype DO 51360 1979 728 ! ! ! ! ! ! ! j:= minbuf(i); 51370 1980 729 ! ! ! ! ! ! ! 2: LOCK cur AS messbuf: messbuftype DO 51380 1981 730 ! ! ! ! ! ! ! j:= messbuf(i); 51390 1982 731 ! ! ! ! ! ! ! 3: LOCK cur AS maxbuf: maxbuftype DO 51400 1983 732 ! ! ! ! ! ! ! j:= maxbuf(i); 51410 1984 733 ! ! ! ! ! ! ! 4: LOCK cur AS testbuf: testbuftype DO 51420 1985 734 ! ! ! ! ! ! ! j:= testbuf(i); 51430 1986 735 ! ! ! ! ! ! ! OTHERWISE 51440 1987 736 ! ! ! ! ! ! ! j:= 0; 51450 1988 737 ! ! ! ! ! ! END; 51460 1989 738 ! ! ! ! ! ! IF base= 2 THEN \f fetsaoslst 81.05.13. 15.17. page 67 51470 1990 739 ! ! ! ! ! ! outinteger(j,17) 51480 1991 740 ! ! ! ! ! ! ELSE 51490 1992 741 ! ! ! ! ! ! outinteger(j,7); 51500 1993 742 ! ! ! ! ! ! writenl; 51510 1994 743 ! ! ! ! ! END; 51520 1995 744 ! ! ! ! END (* ok *); 51530 1996 745 ! ! ! END (* output *); 51540 1997 746 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 68 52010 1998 747 ! ! ! "p": (* partial words *) 52020 1999 748 ! ! ! (* fills partial words i.e. bytes into current buffer. 52030 2000 749 ! ! ! 1st param: word no. in which to start 52040 2001 750 ! ! ! 2nd param: byte no. (of 1st word) in which to start: 52050 2002 751 ! ! ! - 0: left byte 52060 2003 752 ! ! ! - 1: right byte 52070 2004 753 ! ! ! following: byte values to be assigned *) 52080 2005 754 ! ! ! BEGIN 52090 2006 755 ! ! ! ! IF noofparams<2 THEN 52100 2007 756 ! ! ! ! outstring10("param ") 52110 2008 757 ! ! ! ! ELSE 52120 2009 758 ! ! ! ! IF (params(1)<1) THEN 52130 2010 759 ! ! ! ! outstring20("illegal start-word ") 52140 2011 760 ! ! ! ! ELSE 52150 2012 761 ! ! ! ! IF NOT (params(2) IN (.0,1.)) THEN 52160 2013 762 ! ! ! ! outstring20 ("2nd must be 0 or 1 ") 52170 2014 763 ! ! ! ! ELSE 52180 2015 764 ! ! ! ! IF nil (cur) THEN 52190 2016 765 ! ! ! ! outstring10 ("no buffer ") 52200 2017 766 ! ! ! ! ELSE 52210 2018 767 ! ! ! ! BEGIN (* params are ok *) 52220 2019 768 ! ! ! ! ! i:= params(1); (* i points into current buffer *) 52230 2020 769 ! ! ! ! ! j:= params(2); 52240 2021 770 ! ! ! ! ! 52250 2022 771 ! ! ! ! ! IF cur^.size<messbufsize THEN 52260 2023 772 ! ! ! ! ! outstring20("too small buffer ") ELSE 52270 2024 773 ! ! ! ! ! LOCK cur AS messbuf: messbuftype DO 52280 2025 774 ! ! ! ! ! BEGIN 52290 2026 775 ! ! ! ! ! ! IF messbuf(i)<0 THEN 52300 2027 776 ! ! ! ! ! ! leftbyte:= (messbuf(i)+255) DIV 256 52310 2028 777 ! ! ! ! ! ! ELSE 52320 2029 778 ! ! ! ! ! ! leftbyte:= messbuf(i) DIV 256; 52330 2030 779 ! ! ! ! ! ! 52340 2031 780 ! ! ! ! ! ! FOR k:= 3 TO noofparams DO 52350 2032 781 ! ! ! ! ! ! (* k points into the parameter list *) 52360 2033 782 ! ! ! ! ! ! IF i<= messbufsize THEN 52370 2034 783 ! ! ! ! ! ! BEGIN 52380 2035 784 ! ! ! ! ! ! ! CASE j OF 52390 2036 785 ! ! ! ! ! ! ! ! 0: 52400 2037 786 ! ! ! ! ! ! ! ! BEGIN (* left *) 52410 2038 787 ! ! ! ! ! ! ! ! ! rightbyte:= abs(messbuf(i) MOD 256); 52420 2039 788 ! ! ! ! ! ! ! ! ! leftbyte := params (k); 52430 2040 789 ! ! ! ! ! ! ! ! END; 52440 2041 790 ! ! ! ! ! ! ! ! 1: 52450 2042 791 ! ! ! ! ! ! ! ! BEGIN (* right *) 52460 2043 792 ! ! ! ! ! ! ! ! ! rightbyte:= params (k); \f fetsaoslst 81.05.13. 15.17. page 69 52470 2044 793 ! ! ! ! ! ! ! ! ! IF leftbyte>=128 THEN 52480 2045 794 ! ! ! ! ! ! ! ! ! BEGIN 52490 2046 795 ! ! ! ! ! ! ! ! ! ! messbuf(i):= (leftbyte-128)*256 + rightbyte; 52500 2047 796 ! ! ! ! ! ! ! ! ! ! IF messbuf(i)>0 THEN 52510 2048 797 ! ! ! ! ! ! ! ! ! ! messbuf(i):= -((32767-messbuf(i))+1) 52520 2049 798 ! ! ! ! ! ! ! ! ! ! ELSE messbuf(i):= -32768; 52530 2050 799 ! ! ! ! ! ! ! ! ! END 52540 2051 800 ! ! ! ! ! ! ! ! ! ELSE 52550 2052 801 ! ! ! ! ! ! ! ! ! messbuf(i):= leftbyte*256 + rightbyte; 52560 2053 802 ! ! ! ! ! ! ! ! ! i:= i+1; 52570 2054 803 ! ! ! ! ! ! ! ! END; 52580 2055 804 ! ! ! ! ! ! ! ! 52590 2056 805 ! ! ! ! ! ! ! END (* case *); 52600 2057 806 ! ! ! ! ! ! ! 52610 2058 807 ! ! ! ! ! ! ! j:= 1-j; 52620 2059 808 ! ! ! ! ! ! END; 52630 2060 809 ! ! ! ! ! ! 52640 2061 810 ! ! ! ! ! ! IF (j=1) AND (i<=messbufsize) THEN 52650 2062 811 ! ! ! ! ! ! IF leftbyte>=128 THEN 52660 2063 812 ! ! ! ! ! ! BEGIN 52670 2064 813 ! ! ! ! ! ! ! IF messbuf(i)>0 THEN 52680 2065 814 ! ! ! ! ! ! ! messbuf(i):= (leftbyte-128)*256 + rightbyte 52690 2066 815 ! ! ! ! ! ! ! ELSE messbuf(i):= - 32768; 52700 2067 816 ! ! ! ! ! ! ! messbuf(i):= -((32767-messbuf(i))+1); 52710 2068 817 ! ! ! ! ! ! END 52720 2069 818 ! ! ! ! ! ! ELSE 52730 2070 819 ! ! ! ! ! ! messbuf(i):= leftbyte*256 + rightbyte; 52740 2071 820 ! ! ! ! ! END (* lock *); 52750 2072 821 ! ! ! ! END (* params ok *); 52760 2073 822 ! ! ! END (* partial *); 52770 2074 823 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 70 53010 2075 824 ! ! ! "r": (* return *) 53020 2076 825 ! ! ! (* returns current buffer *) 53030 2077 826 ! ! ! IF nil(cur) 53040 2078 827 ! ! ! THEN outstring10("no buffer ") 53050 2079 828 ! ! ! ELSE return(cur); 53060 2080 829 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 71 54010 2081 830 ! ! ! "s": (* signal *) 54020 2082 831 ! ! ! (* signals current buffer to one of the predefined semaphores. 54030 2083 832 ! ! ! 1st param is semno *) 54040 2084 833 ! ! ! BEGIN 54050 2085 834 ! ! ! ! semno:= params(1); 54060 2086 835 ! ! ! ! 54070 2087 836 ! ! ! ! IF noofparams >= 1 THEN 54080 2088 837 ! ! ! ! IF (1<=semno) AND (semno<=noofsemaphores) THEN 54090 2089 838 ! ! ! ! IF NOT nil(cur) THEN 54100 2090 839 ! ! ! ! signal (cur,ts_sem(semno)) 54110 2091 840 ! ! ! ! ELSE outstring10("no buffer ") 54120 2092 841 ! ! ! ! ELSE 54130 2093 842 ! ! ! ! IF (semno <= -1) AND (semno >= -applsem_max) THEN 54140 2094 843 ! ! ! ! signal( cur, evavector( -semno)) 54150 2095 844 ! ! ! ! ELSE outstring10(illegalno) 54160 2096 845 ! ! ! ! ELSE outstring10(noparam) 54170 2097 846 ! ! ! END (* signal *); 54180 2098 847 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 72 55010 2099 848 ! ! ! "t": (* testsem *) 55020 2100 849 ! ! ! (* tests the status of the specified semaphores. 55030 2101 850 ! ! ! if none is specified, the status of all the 55040 2102 851 ! ! ! user semaphores is given. 55050 2103 852 ! ! ! in both cases nothing will be written for a semaphore 55060 2104 853 ! ! ! if it is passive. *) 55070 2105 854 ! ! ! BEGIN 55080 2106 855 ! ! ! ! IF noofparams=0 THEN 55090 2107 856 ! ! ! ! BEGIN (* test all semaphores *) 55100 2108 857 ! ! ! ! ! 55110 2109 858 ! ! ! ! ! FOR i:= -applsem_max TO -1 DO 55120 2110 859 ! ! ! ! ! testsem( i,evavector(-i)); 55130 2111 860 ! ! ! ! ! 55140 2112 861 ! ! ! ! ! FOR i:=1 TO noofsemaphores DO 55150 2113 862 ! ! ! ! ! testsem(i,ts_sem(i)) 55160 2114 863 ! ! ! ! END (* test all *) 55170 2115 864 ! ! ! ! ELSE 55180 2116 865 ! ! ! ! BEGIN (* test the specified semaphores *) 55190 2117 866 ! ! ! ! ! 55200 2118 867 ! ! ! ! ! FOR i:=1 TO noofparams DO 55210 2119 868 ! ! ! ! ! IF (params(i)=0) OR (params(i)>noofsemaphores) 55220 2120 869 ! ! ! ! ! OR (params(i) < -applsem_max) THEN 55230 2121 870 ! ! ! ! ! BEGIN (* illegal no. *) 55240 2122 871 ! ! ! ! ! ! outstring20("illegal no.: "); 55250 2123 872 ! ! ! ! ! ! outdecimal(params(i),3); 55260 2124 873 ! ! ! ! ! ! writenl; 55270 2125 874 ! ! ! ! ! END (* illegal no *) 55280 2126 875 ! ! ! ! ! ELSE 55290 2127 876 ! ! ! ! ! BEGIN 55300 2128 877 ! ! ! ! ! ! IF params(i)>0 THEN 55310 2129 878 ! ! ! ! ! ! testsem( params(i), ts_sem(params(i))) 55320 2130 879 ! ! ! ! ! ! ELSE 55330 2131 880 ! ! ! ! ! ! testsem( params(i), evavector(-params(i))); 55340 2132 881 ! ! ! ! ! END 55350 2133 882 ! ! ! ! END (* test the specified semaphores *) 55360 2134 883 ! ! ! END (* testsem *); 55370 2135 884 ! ! ! 55380 2136 885 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 73 56010 2137 886 ! ! ! "u": (* user parameters *) 56020 2138 887 ! ! ! (* inserts user param into header of current buffer 56030 2139 888 ! ! ! 1st param is u1 56040 2140 889 ! ! ! 2nd param is u2 56050 2141 890 ! ! ! 3rd param is u3 56060 2142 891 ! ! ! 4th param is u4 *) 56070 2143 892 ! ! ! BEGIN 56080 2144 893 ! ! ! ! IF nil(cur) 56090 2145 894 ! ! ! ! THEN outstring10("no buffer ") 56100 2146 895 ! ! ! ! ELSE 56110 2147 896 ! ! ! ! IF noofparams = 0 THEN 56120 2148 897 ! ! ! ! outstring10(noparam) 56130 2149 898 ! ! ! ! ELSE 56140 2150 899 ! ! ! ! WITH cur^ DO 56150 2151 900 ! ! ! ! BEGIN 56160 2152 901 ! ! ! ! ! IF testinterval (params(1),0,255) THEN u1:= params(1); 56170 2153 902 ! ! ! ! ! IF (noofparams>=2) THEN IF testinterval(params(2),0,255) THEN 56180 2154 903 ! ! ! ! ! u2:= params(2); 56190 2155 904 ! ! ! ! ! IF (noofparams>=3) THEN IF testinterval(params(3),0,255) THEN 56200 2156 905 ! ! ! ! ! u3:= params(3); 56210 2157 906 ! ! ! ! ! IF (noofparams>=4) THEN IF testinterval(params(4),0,255) THEN 56220 2158 907 ! ! ! ! ! u4:= params(4); 56230 2159 908 ! ! ! ! END 56240 2160 909 ! ! ! END; (* end user parameters *) 56250 2161 910 ! ! ! 56260 2162 911 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 74 57010 2163 912 ! ! ! "w": (* wait *) 57020 2164 913 ! ! ! (* waits for semaphore semno. 57030 2165 914 ! ! ! 1st param is semno *) 57040 2166 915 ! ! ! BEGIN 57050 2167 916 ! ! ! ! semno:= params(1); 57060 2168 917 ! ! ! ! 57070 2169 918 ! ! ! ! IF noofparams >= 1 THEN 57080 2170 919 ! ! ! ! IF nil(cur) THEN 57090 2171 920 ! ! ! ! IF ((semno>0) AND (semno <= noofsemaphores)) 57100 2172 921 ! ! ! ! OR ((semno<0) AND (semno >= -applsem_max)) THEN 57110 2173 922 ! ! ! ! BEGIN 57120 2174 923 ! ! ! ! ! IF semno > 0 THEN 57130 2175 924 ! ! ! ! ! sensesem( cur, ts_sem(semno)) 57140 2176 925 ! ! ! ! ! ELSE 57150 2177 926 ! ! ! ! ! sensesem( cur, evavector(-semno)); 57160 2178 927 ! ! ! ! ! IF nil(cur) THEN 57170 2179 928 ! ! ! ! ! outstring20("semaphore not open ") 57180 2180 929 ! ! ! ! ! ELSE 57190 2181 930 ! ! ! ! ! BEGIN 57200 2182 931 ! ! ! ! ! ! get_curbuftype; 57210 2183 932 ! ! ! ! ! ! outstring10(" bufsize "); 57220 2184 933 ! ! ! ! ! ! outinteger(curbufsize, 5); 57230 2185 934 ! ! ! ! ! ! outinteger(cur^.size, 5) 57240 2186 935 ! ! ! ! ! END; 57250 2187 936 ! ! ! ! END 57260 2188 937 ! ! ! ! ELSE outstring10(illegalno) 57270 2189 938 ! ! ! ! ELSE outstring20("you already have one") 57280 2190 939 ! ! ! ! ELSE outstring10(noparam) 57290 2191 940 ! ! ! END (* wait *); 57300 2192 941 ! ! ! \f fetsaoslst 81.05.13. 15.17. page 75 58010 2193 942 ! ! ! "x": (* exchange pointer *) 58020 2194 943 ! ! ! BEGIN 58030 2195 944 ! ! ! ! IF noofparams >= 2 THEN 58040 2196 945 ! ! ! ! IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN 58050 2197 946 ! ! ! ! IF (params(2)>0) AND (params(2)<=noofsemaphores) THEN 58060 2198 947 ! ! ! ! BEGIN 58070 2199 948 ! ! ! ! ! worksem:= sem(params(1)).w; 58080 2200 949 ! ! ! ! ! sem(params(1)).w:= sem(params(2)).w; 58090 2201 950 ! ! ! ! ! sem(params(2)).w:= worksem; 58100 2202 951 ! ! ! ! END 58110 2203 952 ! ! ! ! ELSE outstring10(valparam) 58120 2204 953 ! ! ! ! ELSE outstring10(valparam) 58130 2205 954 ! ! ! ! ELSE outstring10(noparam) 58140 2206 955 ! ! ! END (* exchange pointer *); 58150 2207 956 ! ! ! 58160 2208 957 ! ! ! 58170 2209 958 ! ! ! OTHERWISE (* error *) 58180 2210 959 ! ! ! outstring20 ("illegal comm. type h"); 58190 2211 960 ! ! END (* case *); 58200 2212 961 ! ! 58210 2213 962 ! ! IF command<>";" THEN 58220 2214 963 ! ! writenl; 58230 2215 964 ! ! 58240 2216 965 ! UNTIL false; 58250 2217 966 ! 58260 2218 967 END. 58270 2219 58280 2220 58290 2221 \f fetsaoslst 81.05.13. 15.17. page 76 0 39* 52* 81* 162* 162* 163* 169* 169* 169* 421 426 448 449 455 464 474: 474 486 512 514 563 653 663 697 701 706 795* 818 827 837 843 850 862 873 874 874 901 904 909 919 924 925 1024 1030 1032 1048 1095 1117 1124 1169 1184 1261 1262 1346 1369 1370 1372 1378 1379 1380 1381 1424 1699 1701 1799 1847 1849 1869 1885 1910 1920 1987 2012 2026 2036: 2047 2064 2106 2119 2128 2147 2152 2153 2155 2157 2171 2172 2174 2196 2197 1 40* 51* 71* 72* 73* 74* 81* 84* 85* 108* 158* 159* 406 436 447 456 466 475: 527 530 539 605: 623 629 649 728 733 772 796* 809 812 826 827 832 837 845 857 859 862 866 867 881 896 900 922 926 928 934 938 953 961 970 986 988 1093 1102 1119 1134 1135 1193 1272 1294 1298 1315 1326 1333 1341 1365 1367 1397 1404 1410 1418 1421 1423 1427 1437 1459 1463: 1498 1501 1505 1512 1516 1565 1645 1645 1652 1659: 1669 1700 1701 1701 1702 1702 1711 1712 1715 1752 1754: 1781 1814 1820 1894 1962 1962 1962 1963 1964 1978: 2009 2009 2012 2019 2041: 2048 2053 2058 2061 2067 2085 2087 2088 2093 2109 2112 2118 2152 2152 2167 2169 2196 2196 2199 2200 2 407 425 437 449 468 476: 560 609: 631 671 722 722 727 732 847 848 850 851 859 860 862 863 869 870 873 874 880: 906 1078: 1106: 1295 1298 1301 1404 1423 1470 1474: 1498 1559 1599 1617 1642 1654 1661: 1773 1791: 1811 1846 1870 1917 1966 1966 1967 1980: 1989 2006 2012 2020 2153 2153 2154 2195 2197 2197 2200 2201 3 94* 169* 408 423 470 477: 613: 671 673 717 722 739 886 899 1179 1197 1211 1264 1268 1481: 1489 1490 1517 1531 1533 1548 1575 1591 1607 1619 1663: 1832: 1850 1882 1918 1975 1982: 2031 2123 2155 2155 2156 4 164* 471 478: 617: 745 758 891 892 1090 1144 1157 1439 1497: 1665: 1722 1728 1861: 1911 1956 1957 1958 1959 1984: 2157 2157 2158 5 163* 164* 569 621: 648 1385 1386 1523: 1571 1775 1813 1848 1903: 1919 2184 2185 6 50* 447 627: 727 887 1085 1268 1540: 1574 1884 7 162* 163* 164* 451 625 633: 722 732 1456 1467 1760 1800 1838 1992 8 642: 885: 898 1083: 1107: 1404 1426 1776 1815 9 424 646: 916 1269 1887 10 84* 454 520 650: 738 783 814 953 1033 1046 1259 1269 1340 1342 1404 1556: 1890 11 654: 738 1584: 12 96* 660: 961 1596: 13 664: 1613: 1777 1816 14 454 456 669: 1269 1779 1819 15 675: 795* 845 857 867 904 1780 1818 1891 16 36* 882 890: 1029 1053 1080 1088: 1099 1108: 1260 1404 1805 1893 17 679: 1428 1990 18 687: 19 694: 20 85* 698: 792* 970 21 703: \f fetsaoslst 81.05.13. 15.17. page 77 22 707: 1429 23 714: 1430 24 719: 1431 25 725: 1432 26 730: 1433 27 37* 735: 40 619 50 158* 537 63 631 64 33* 673 80 31* 49* 87 1042 1065 1114 100 566 1268 120 34* 35* 128 2044 2046 2062 2065 255 2027 2152 2153 2155 2157 256 425 1870 1911 2027 2029 2038 2046 2052 2065 2070 257 625 512 653 663 697 701 706 728 733 739 1000 1268 1024 1339 2048 1108 3276 1056 4096 1107 16384 1106 32767 1119 2048 2067 32768 1058 1118 2049 2066 a 89* 433* 435 436 437 438 445* 448= 451= 455= 457 458 1171= 1172= 1765: 1771 1772 1773 1774 1775 abs 824 2038 abuf 1842: 1843 aic_buf_type 1503 aic_id 1505= aic_q 1506= al 1845 1846 1847 1848 1849 alarmlabel 1765 alarm_mess 1491 1534 1576 1608 alarm_opsys 4* alfa 66* 381* 549* 957* alfa10 84* 378* 947* alfa20 85* 384* 396* 965* 1152* alfalength 50* alloc 1300 1313 1328 1335 1373 1375 alreadyexists <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 44* 558 759 \f fetsaoslst 81.05.13. 15.17. page 78 al_env_version <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1257 al_lam1 1289 al_mac_addr 1776= 1815= 1890= ap 167* 1171 1174= 1177 1209 applsem_max 1370 2093 2109 2120 2172 appl_vector 5* as 489: 495: 769: 982: 1133: 1232: 1302: 1317: 1469: 1486: 1503: 1514: 1528: 1545: 1561: 1589: 1601: 1618: 1659: 1661: 1663: 1665: 1764: 1803: 1842: 1873: 1914: 1978: 1980: 1982: 1984: 2024: atbuffer 81* atconnector 234* 623 atcsem 237* atc_pri 626 atc_sem_no 623 623 atc_size 626 athsem 240* ath_pri 612 ath_sem_no 624 ath_size 612 at_handler 212* 611 a_l 1808 1809 1810 1811 1812 1813 1814 1877 1919 1920 1921 base 132* 519 520= 533= 543= 782 783= 785= 814 824 825 879 898 1029 1033 1046 1053 1064 1065 1077 1099 1105 1112 1114 1340= 1399= 1407= 1410= 1989 bit 795* bits 795* 847= 850= 859= 862= 869 870= 870 873 874= 874 906 block 186* boolean 154* 187* 361* 510* 751* 806* 1008* 1138* 1166* bp 167* 1172 1174 1177 1209 break 1718 buf 1469: 1470 1486: 1487 1503: 1505 1506 1514: 1516 1517 1528: 1529 1545: 1546 1561: 1562 1589: 1590 1601: 1602 1618: 1619 1764: 1769 1803: 1805 1806 1873: 1874 1914: 1915 byte 78* 81* 168* 198* 205* 248* 265* 332* 364* 413* call_buf 1567 car_buf_type 1561 ch 766* 773 1013* 1019= 1026 1027= 1028 1029 1040 1041 1042 1050= 1052 1053 1056 1063 1064 1065 1079 1084 1089 1097= 1098 1099 1111 1112 1114 channelno 248* 265* char 67* 84* 85* 128* 387* 766* 796* 977* 1013* chr 824 917 918 clear_buf_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1618 command 128* 501= 503 516 531 1354 1717 2213 \f fetsaoslst 81.05.13. 15.17. page 79 com_pool 175* 625 631 638 657 673 683 711 1328 1756 1834 com_pool_sem 339* com_sem 243* 260* 276* control 1532 1569 1606 1876 1917 1918 controlinfo 78* countref 112* 1187 1188 1192 1200 1201 countsem 102* 1192 1198 1200 create 562 createchtype 76* createerror 47* 567 cur 115* 463 465 467 469 1328 1329 1335 1336 1368 1373 1375 1376 1386 1648 1659: 1661: 1663: 1665: 1949 1956 1957 1958 1959 1971 1978: 1980: 1982: 1984: 2015 2022 2024: 2077 2079 2089 2090 2094 2144 2150 2170 2175 2177 2178 2185 curbufsize 145* 474= 475= 476= 477= 478= 1385 1656 1963 1966 1968 1969 1971 2184 curbuftype 146* 464= 466= 468= 470= 471= 473 1658 1977 curdigit 797* 896= 911 912 917 918 922 926= 926 1010* 1093= 1102= 1102 1103 1115 curpos 798* 899= 900= 907 925= 928= 928 c_b 1806 c_i 1805= da 1491= 1534= 1576= 1608= 1851= data 67* 773= 985 1307= 1918= dcaddr 262* dcmodule 296* 656 dcsem 272* dc_addr 162* 215* 223* 245* 435= 611 615 625 631 673 dc_int1 658 dc_int2 658 dc_int3 658 dc_sem_no 636 658 dc_sim_pri 659 dc_sim_size 659 diag_code 1619= digit 1008* 1020= 1028= 1030 1038 1048 1052= 1054 1095 1098= 1100 digits 796* 812= 824= 831= 837= 912= 917= 918= 940 1003* 1028 1040 1052 1063 1098 1111 doesntexist 45* done 312* driversem 241* dst 423= dtesimulator 318* 689 dte_addr 169* 327* 692 1261 1262 1263 1264 dte_adr 1571= dte_adr_l 1570= dte_aic 1500 1591 \f fetsaoslst 81.05.13. 15.17. page 80 dte_car 1489 1558 1569 dte_clr 1548 1615 dte_pax_addr 402* 409= 422 423 dte_rdata 1868 1909 dte_rejic 1511 dte_ric 1476 1798 dte_sdata 1531 1598 dte_sdata_data <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1601 dte_sem 322* 341* dte_sem_no 640 684 689 1335 1630 d_a 1821= evavector 5* 1279 1281 1283 1285 1287 1289 1375 2094 2110 2131 2177 external 176* 182* 189* 199* 206* 210* 218* 226* 232* 249* 266* 283* 289* 294* 300* 305* 316* 329* 343* 348* 353* 358* 362* 365* ext_addr 408= 1264= ext_no 1470= ext_pax_addr 442* 445* facility 424= 1574= facility_l 1573= false 524 534 732 760 921 1017 1020 1035 1059 1146 1189 1255 1506 1566 1604 1605 2216 fesupervisor 172* 709 fesup_pri 712 fesup_que_down <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 710 fesup_que_up 710 fesup_sem_no 710 1294 fesup_size 712 fesup_write 710 first 63* 498 1138* 1141 1305= 1320= 1564= firstindex 50* 51* 67* 490 499 1233 1305 1307 1320 firstword 133* 1341= 1964= 1973 format 418= format_1_packet_header <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 414* fpadriver 184* 727 732 free 311* from_link 1457 getinput 482* 1352 getparams 369* 505 508* get_curbuftype <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 461* 1383 2182 global_timeout <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 332* \f fetsaoslst 81.05.13. 15.17. page 81 glob_timeout 681 h 799* 904= 906 h2f 1718 h30 1840 1921 hac 1762 1809 1880 hexdigits 1004* 1029 1053 1099 i 134* 396* 402* 405 406 407 408 413* 422 423 444* 447= 448 449= 451 451 452 454= 455 456= 457 799* 812= 812 816= 824 826= 826 827 831 832= 832 835 845= 847 857= 859 867= 869 870 870 938= 940 951* 953= 954 959* 961= 962 968* 970= 971 1138* 1141 1141 1144 1152* 1157 1162* 1169 1171 1172 1179 1211 1272= 1274 1274 1275 1275 1298= 1326= 1333= 1490= 1491 1491 1533= 1534 1534 1575= 1576 1576 1607= 1608 1608 1652= 1656 1660 1662 1664 1666 1669= 1669 1700= 1700 1700 1712= 1714 1766: 1779= 1850= 1851 1851 1973= 1975 1979 1981 1983 1985 2019= 2026 2027 2029 2033 2038 2046 2047 2048 2048 2049 2052 2053= 2053 2061 2064 2065 2066 2067 2067 2070 2109= 2110 2110 2112= 2113 2113 2118= 2119 2119 2120 2123 2128 2129 2129 2131 2131 illegalno 46* 746 1143 1388 1440 1729 2095 2188 incharsleft 135* 498= 988= 988 1024 1030 1048 1095 1124 1135= 1135 incname 1256 inc_name 549* 562 568 index 364* 547* 557 562 564 576* 604 606 610 614 618 622 628 634 643 647 651 655 661 665 670 676 680 688 695 699 704 708 715 720 726 731 736 745 indx 1818= 1887= init_modul 576* 1426 1427 1428 1429 1430 1431 1432 1433 1443 init_proc 546* 606 610 614 618 622 628 634 643 647 651 655 661 665 670 676 680 688 695 699 704 708 715 720 726 731 736 inputsem 178* 193* 278* 288* input_sem 174* insem 356* insert_code 1772 1810 1881 int 372* 375* 777* 784 788* 818 824 825= 825 827 837 843 847 848= 848 850 851= 851 859 860= 860 862 863= 863 integer 65* 71* 72* 73* 74* 148* 158* 179* 186* 231* 247* 264* 287* 364* 372* 375* 390* 396* 402* 413* 431* 442* 444* 547* 552* 555* 576* 751* 777* 788* 804* 951* 959* 968* 994* 1011* 1138* 1152* 1162* 1766 int_pax_addr 169* 169* 327* 402* 403* in_sem 202* j 136* 1184= 1193= 1193 1197 1654= 1660 1662 1664 1666 1979= 1981= 1983= 1985= 1987= 1990 1992 2020= 2035 2058= 2058 2061 k 137* 2031= 2039 2043 label_size 1490 1533 1575 1607 1850 lam 285* 648 lamsem 194* 258* 274* \f fetsaoslst 81.05.13. 15.17. page 82 lam_sem_no 624 637 648 656 722 1289 1290 1290 lam_size 649 last 64* 772= 772 773 1138* 1141 1233= 1321= 1565= lastchar 1013* 1018= 1026= 1034 lastindex 51* 67* 1321 lastword 138* 1342= 1967= 1968 1969= 1973 leftbyte 139* 2027= 2029= 2039= 2044 2046 2052 2062 2065 2070 level 186* 287* linelength 49* 51* link 561 local_sem_table <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 337* lock 489: 495: 769: 982: 1133: 1232: 1302: 1317: 1469: 1486: 1503: 1514: 1528: 1545: 1561: 1589: 1601: 1618: 1659: 1661: 1663: 1665: 1764: 1803: 1842: 1873: 1914: 1978: 1980: 1982: 1984: 2024: locked 1207 l_control 1565 l_dte_adr 1570 l_facilities 1573 l_listen 1490 1533 1565 1575 1607 1771 1808 1845 1850 1879 m 800* 866= 869 870 871= 873 874 875= macro 1773= 1775= 1811= 1813= 1846= 1848= 1882= 1884= 1919= macroaddr 162* 162* 163* 163* 164* 164* 216* 224* 246* 263* 431* 433* main 310* main_sem 336* make_phead 412* 1489 1531 1548 1591 max 231* maxbuf 1663: 1664= 1982: 1983 maxbufsize 35* 74* 467 477 maxbuftype 74* 1663 1982 maxpos 792* 796* 812 816 835 896 911 922 934 938 938 max_alarm_mess <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1842 max_retrans 1781= 1820= 1894= messbuf 1661: 1662= 1980: 1981 2024: 2026 2027 2029 2038 2046= 2047 2048= 2048 2049= 2052= 2064 2065= 2066= 2067= 2067 2070= messbufpool 97* 1328 messbufsize 33* 71* 465 476 2022 2033 2061 messbuftype 71* 97* 1661 1980 2024 messem 254* micaddr 264* micro 1774= 1812= 1814= 1847= 1849= 1883= 1885= 1920= minbuf 1659: 1660= 1978: 1979 minbufsize 36* 73* 463 475 \f fetsaoslst 81.05.13. 15.17. page 83 minbuftype 73* 1659 1978 min_rut_mess 59* mirror 200* 737 moduleno 140* 751* 755 758 1421= 1424 1437 1437 1439 1443 1443 1714= 1715 1715 1716 1718 1719 1722 1728 moduleready 751* 755= 760= 1443 more 1166* 1181= 1185 1189= m_bit 1605= n1 578* 606 606 n10 587* 651 651 661 n11 588* 655 655 n13 589* 665 665 n14 590* 670 670 n15 591* 676 676 n16 592* n17 593* 680 680 n18 594* 688 688 n19 595* 695 695 n2 579* 610 610 n20 596* 699 699 n21 597* 704 704 n22 598* 708 708 n23 599* 715 715 n24 600* 720 720 n25 601* 726 731 n27 602* 736 736 n3 580* 614 614 n4 581* 618 618 n5 582* 622 622 n6 583* 628 628 n7 584* 634 634 n8 585* 643 643 n9 586* 647 647 name 66* 548* 561 1306= 1322= ncsem 273* ncsup 307* 666 ncsup_int1 666 ncsup_int2 666 nc_addr 163* 436= nc_sem_no 637 666 nc_sup_size 668 negative 806* 818= 829 1008* 1034= 1035= 1056 1059= 1070 1079= 1084= 1089= 1103 1115 netconnector 331* 681 netc_locals 157* 682 1294= 1295= \f fetsaoslst 81.05.13. 15.17. page 84 netc_loc_sems <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 157* 337* netc_mic_addr <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1774 1812 1883 netc_pri 685 693 netc_sem 175* 324* netc_sem_no 638 656 667 682 690 711 1938 netc_size 685 693 net_addr 405= 1261= net_sem 314* newbase 510* 521= 524= 534= 541 newm 800* 869= 871 873= 875 next 65* 490= 498 499= 985 986= 986 1134= 1134 nl 1228 node_addr 407= 1263= node_no 168* 1259 1260= 1260 1263 1268 1268 1269 1269 noofdig 801* 882= 887= 892= 896 noofdigit 1010* 1080= 1085= 1090= 1103 1115 noofmodules 37* 159* 1437 1715 noofparams 141* 514= 527= 527 528 529 530 537 539= 539 560 1346= 1367 1397 1418 1423 1642 1654 1699 1711 1712 1962 1966 2006 2031 2087 2106 2118 2147 2153 2155 2157 2169 2195 noofpos 802* 881= 886= 891= 907 noofsemaphores <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 38* 1369 1700 1701 2088 2112 2119 2171 2196 2197 noparam 43* 1390 1400 1445 2096 2148 2190 2205 no_listen 97* 1326 no_of_by 1771= 1808= 1845= 1879= no_pax_bufs 59* 1333 nref 111* 1452 1454 1456 1457 1465 1466 1467 1469: 1476 1477 1483 1484 1485 1486: 1500 1501 1502 1503: 1511 1512 1513 1514: 1525 1526 1527 1528: 1542 1543 1544 1545: 1558 1559 1560 1561: 1586 1587 1588 1589: 1598 1599 1600 1601: 1615 1616 1617 1618: 1630 1756 1758 1760 1761 1762 1764: 1794 1796 1798 1799 1800 1801 1803: 1834 1836 1838 1839 1840 1842: 1864 1866 1868 1869 1870 1871 1873: 1905 1907 1909 1910 1911 1912 1914: 1937 1938 nul 1018 1019 oflow 361* ok 52* 493 555* 562= 563 566= 566 569 okl 554* 561= 566 571= oldbase 142* 519= 533 543 782= 785 1399 1407 op 173* 180* 188* 208* 213* 221* opbuf 489: 490 495: 496 769: 770 982: 983 1133: 1134 1134 1232: 1233 1302: 1303 1317: 1318 opbufpool 94* 1300 1313 \f fetsaoslst 81.05.13. 15.17. page 85 opbufsize 31* opbuftype 61* 94* 489 495 769 982 1133 1232 1302 1317 opc_command 1532 1606 1876 open 1175 1198 operatorsem 1253 opinref 113* 489: 491 492 493 495: 982: 1133: 1313 1315 1317: opoutref 114* 769: 1226 1229 1231 1232: 1300 1301 1302: 1309 opsem 120* 229* 235* 252* 269* 286* 292* 297* 303* 308* 357* 491 607 611 615 619 623 629 635 644 648 652 656 662 666 671 677 696 700 705 709 717 721 727 732 737 1229 1253= 1256 op_code 413* 425 1532= 1569= 1606= 1809= 1876= 1880= 1917= 1921= op_sem 192* 201* 346* 351* ord 503 824 917 918 1041 1041 1042 1064 1064 1065 1112 1112 1114 org 422= osif 191* 721 osif_pri 723 osif_sem_no 721 osif_size 723 outchar 766* 932 940 954 962 971 1178 1178 1180 1210 1210 1212 1228 1953 1954 1976 outdecimal 372* 569 745 758 777* 1179 1197 1211 1439 1722 1728 1975 2123 outinteger 375* 784 788* 1144 1157 1385 1386 1956 1957 1958 1959 1990 1992 2184 2185 outstring10 378* 746 947* 1143 1213 1384 1388 1390 1400 1440 1445 1450 1628 1633 1643 1649 1703 1723 1729 1733 1749 1935 1940 1950 2007 2016 2078 2091 2095 2096 2145 2148 2183 2188 2190 2203 2204 2205 outstring12 381* 568 957* outstring20 384* 558 567 759 965* 1156 1389 1406 1646 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1972 2010 2013 2023 2122 2179 2189 2210 own 1256 ownaddr 247* p 414* 416 550* 561 562 571 1767: 1776 1777 1780 1781 packet_type 420= packextnode 441* 458= packmacro 430* 438= 1773 1775 1776 1811 1813 1815 1846 1848 1882 1884 1890 1919 par 431* 435 436 437 442* 451 452 params 158* 405 406 407 408 424 425 435 436 437 451 452 528= 529 1365 1404 1410 1421 1423 1459 1470 1498 1517 1559 1571 1574 1599 1617 1619 1645 1652 1660 1662 1664 1666 1701 1701 1702 1702 1714 1752 1777 1779 1780 1805 1816 1818 1819 1870 1887 1891 1893 1911 1917 1918 1962 1963 1964 1966 1967 2009 2012 2019 2020 2039 2043 2085 2119 2119 2120 2123 2128 2129 2129 2131 2131 2152 2152 2153 2154 2155 2156 2157 2158 2167 2196 2196 2197 2197 2199 2200 2200 2201 paxbufpool 98* 1335 \f fetsaoslst 81.05.13. 15.17. page 86 paxnet_config <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1268 1268 1269 1269 1571 1777 1816 1891 paxnet_e 1767 paxpooltype 59* 98* pax_addr 1777= 1816= 1821 1891= pax_adr 403* 405 406 407 408 409 pax_ncp_sem 640 1287 1288 1288 pax_pool 682 689 1336 1452 1794 1864 1905 pax_pool_sem 321* 335* pax_sem_1 639 691 1281 1282 1282 pax_sem_2 639 691 1279 1280 1280 pax_sem_3 1283 1284 1284 pax_sem_4 1285 1286 1286 phead 1489 1531 1548 1591 point_rec 88* 167* pool 59* 94* 96* 97* port 198* positions 372* 375* 777* 784 788* 932 934 935 936= 938 pr 40* prio 552* 564 priority 419= process 4* 172* 177* 184* 191* 200* 207* 212* 220* 228* 234* 251* 268* 285* 291* 296* 302* 307* 318* 331* 345* 350* 355* processrec 550* processref 561 571 pu 39* 287* 648 px_ncp 1287 px_urec1 1279 px_urec2 1283 px_utrm1 1281 px_utrm2 1285 p_e 1815 1816 1819 1820 1821 1888 quesem 238* 255* que_down 174* que_up 174* q_bit 1566= 1604= readchar 387* 501 977* 985= 1027 1050 1097 readinteger 390* 528 994* 1128= readok 151* 537 1017= 1043= readram 364* 1259 rec 187* 204* 1773 1774 1811 1812 1846 1847 1882 1883 1919 1920 receiver 178* ref 1254 1274 1279 1281 1283 1285 1287 1289 reference 116* \f fetsaoslst 81.05.13. 15.17. page 87 reg_addr 406= 1262= rejic_buf_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1514 rejic_diag 1517= rejic_id 1516= remove 1719 repeatchar 393* 1126 1131* res 803* 901= 906= 906 909 916 917 918 919 924= result 364* 1011* 1032= 1041= 1042= 1056 1058= 1064= 1064 1065= 1065 1070= 1070 1106= 1106 1107= 1107 1108= 1108 1112= 1112 1114= 1114 1117 1118= 1119= 1119 1128 retrans_max 179* return 1309 1329 2079 ric_first_val <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1564 1565 rightbyte 143* 2038= 2043= 2046 2052 2065 2070 rut_con 1465 rut_default 1485 1527 1544 1588 rut_format_1 418 rut_ok 1466 1484 1526 1543 1587 rut_pack_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 420 rut_prefix_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1469 rut_prio_0 419 rut_rec 1483 1525 1542 1586 rut_rec_sem 326* rut_trm_sem 325* rut_trp_pdata <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1486 1528 1545 1589 s 624 624 624 630 630 630 635 636 637 637 637 656 656 657 667 667 672 672 672 684 684 690 691 691 711 711 721 722 738 1171 1274= 1275 1279= 1280 1281= 1282 1283= 1284 1285= 1286 1287= 1288 1289= 1290 1294 1295 1328 1335 1336 1630 1700 1702 1938 sem 122* 185* 293* 347* 352* 607 611 615 619 623 623 624 624 624 625 629 629 630 630 630 631 635 636 637 637 637 638 638 639 639 640 640 644 648 652 656 656 657 657 658 658 658 658 662 666 666 666 667 667 671 671 672 672 672 673 677 682 682 683 684 684 689 689 690 691 691 696 700 710 710 710 710 711 711 711 716 716 717 721 721 722 727 732 737 738 1171 1172 1274 1275 1275 1279 1280 1280 1281 1282 1282 1283 1284 1284 1285 1286 1286 1287 1288 1288 1289 1290 1290 1294 1295 1328 1335 1336 1452 1630 1700 1700 1702 1702 1756 1794 1834 1864 1905 1938 2199 2200 2200 2201 sem1 298* sem2 298* \f fetsaoslst 81.05.13. 15.17. page 88 sem3 298* sem4 298* sem5 299* sem6 299* sem7 299* sem8 299* semaphore 107* 108* 1162* semint1 279* semint2 280* semint3 281* semint4 282* semno 144* 1365= 1369 1369 1370 1370 1372 1373 1375 2085= 2088 2088 2090 2093 2093 2094 2167= 2171 2171 2172 2172 2174 2175 2177 sempointer 89* 119* 120* 121* 173* 175* 180* 188* 192* 194* 201* 203* 208* 213* 221* 229* 235* 243* 252* 260* 269* 276* 286* 292* 297* 298* 303* 308* 315* 319* 326* 333* 341* 346* 351* 357* semvector 4* 1253 send 1775 1813 1814 1848 1849 1884 1885 sensesem 1187 1452 1756 1794 1834 1864 1905 2175 2177 setoflowmask 361* 1344 sh 159* 557 562 564 755 1716 1718 1719 shadow 159* signal 491 1192 1201 1229 1336 1630 1938 2090 2094 signs 1005* size 463 465 467 469 551* 560 1386 1971 2022 2185 sp 812 932 spool_sem 101* 1254 spool_test_sem <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 119* 681 689 705 1254= st 147* 560= 562 1339= 1423= start 564 state 421= streambufs 196* streamer 177* 716 streamno 195* streamsem 194* stream_no 1780= 1819= 1893= stream_pri 717 stream_rec 717 727 stream_sem 175* stream_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 711 716 721 738 stream_size 717 stream_xmit 716 732 \f fetsaoslst 81.05.13. 15.17. page 89 str_sem 203* system_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 4* tab_sem 304* tap 302* 652 662 tap1_sem_no 662 737 tapdte 345* 696 tapnet 350* 700 tap_dte_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 696 tap_net_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 700 tap_sem_no 652 testbuf 1665: 1666= 1984: 1985 testbufpool 96* 1373 1375 testbufsize 34* 72* 469 478 testbuftype 72* 96* 1665 1984 testinterval 1138* 1146= 1149= 2152 2153 2155 2157 testmode 153* 1154 1255= 1736= 1736 testmodeout 396* 486 503 512 529 1152* testopen 1256 testout 452 457 1257 1267 testoutput 355* 705 testsem 1162* 2110 2113 2129 2131 test_sem 319* 333* text 378* 381* 384* 396* 947* 954 957* 962 965* 971 1152* 1156 ticklength 231* timeout 78* timeoutsem 230* 259* 275* 315* timeout_sem 340* timeout_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 619 624 630 637 657 667 672 684 time_out_unit <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 619 timout 228* 619 timsem 242* tim_pri 620 tim_size 620 top_of_data 426= to_link 1477 1502 1513 1560 1600 1616 1801 1871 1912 true 521 727 755 902 1043 1079 1084 1089 1149 1181 1344 tsaddr 263* tsconnector 268* 635 tsc_pri 641 \f fetsaoslst 81.05.13. 15.17. page 90 tsc_size 641 tsssem 271* tssuper 207* 607 tssup_sem_no 635 1295 tss_pri 608 668 tss_route 1761 1839 tss_size 608 tst_ric_type 1803 tst_sdata_data <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1873 1914 ts_addr 164* 216* 224* 246* 437= 611 615 625 631 673 ts_pointer 174* 178* 185* 193* 202* 230* 238* 255* 282* 288* 299* 304* 312* 322* 336* 347* 352* ts_pointer_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 122* 209* 217* 225* 293* ts_sem 108* 209* 217* 225* 1274 1373 2090 2113 2129 2175 ts_sem_total 38* 108* 1272 ttybufs 197* t_sem 1162* 1175 1187 1201 1207 u1 1301= 1315= 1378= 1465= 1476= 1483= 1500= 1511= 1525= 1542= 1558= 1586= 1598= 1615= 1798= 1868= 1909= 1956 2152= u2 493 1379= 1456= 1466= 1484= 1526= 1543= 1587= 1760= 1799= 1838= 1869= 1910= 1957 2154= u3 1380= 1467= 1485= 1501= 1512= 1527= 1544= 1559= 1588= 1599= 1617= 1761= 1800= 1839= 1870= 1911= 1958 2156= u4 1381= 1457= 1477= 1502= 1513= 1560= 1600= 1616= 1762= 1801= 1840= 1871= 1912= 1959 2158= unlink 571 update 1772= 1810= 1881= used 804* 809= 835= 922= 932 935 936 user_field 425= vac_size 632 vagt 291* 644 677 valparam 42* 1703 2203 2204 vas_sem_no 630 vas_size 645 vcc 251* 629 671 vcc_pri 632 674 vcc_sem_no 629 629 671 671 vchsem 257* vch_pri 616 vch_sem_no 630 672 vch_size 616 vc_handler 220* 615 vc_sim_pri 645 678 version 26* 1257 \f fetsaoslst 81.05.13. 15.17. page 91 vic_size 674 vis_sem_no 672 vis_size 678 w 625 631 638 657 673 683 711 1172 1275= 1280= 1282= 1284= 1286= 1288= 1290= 1452 1700= 1702= 1756 1794 1834 1864 1905 2199 2200= 2200 2201= wait 492 1200 1231 worksem 121* 2199= 2201 writenl 399* 570 1145 1158 1204 1214 1222* 1311 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1724 1730 1960 1993 2124 2214 write_sem 174* wrsem 105* 492 1313 wsem 103* 1231 1300 xmit 205* xmitter 178* z 125* 452 457 1256 1257 1267 zeroes 806* 902= 909 919 921= zone 125* \f fetsaoslst 81.05.13. 15.17. page 92 AND 25 ARRAY 13 BEGIN 161 CASE 11 CONST 5 DIV 9 DO 88 DOWNTO 3 ELSE 78 END 176 FOR 30 FORWARD 11 FUNCTION 9 IF 124 IN 14 MOD 11 NIL 21 NOT 16 OF 28 OR 13 OTHERWISE 6 PROCEDURE 27 RECORD 4 REPEAT 5 THEN 124 TO 27 TYPE 1 UNTIL 5 VAR 52 WHILE 4 WITH 22 \f jg8 1981.05.13 15.19 fetsaos program 81.05.13. 15.19. pascal80 version 1981.04.01 name headline beginline endline appetite(words) dte_pax_addr 403 405 410 : 8 make_phead 415 418 428 : 17 packmacro 433 435 439 : 6 packextnode 444 447 459 : 29 get_curbufty 462 464 480 : 2 getinput 484 486 506 : 21 getparams 510 512 544 : 25 init_proc 554 558 574 : 29 init_modul 578 605 749 : 58 moduleready 754 755 762 : 19 outchar 768 769 775 : 9 outdecimal 781 782 786 : 10 outinteger 792 809 943 : 47 outstring10 951 953 955 : 17 outstring12 959 961 963 : 17 outstring20 968 970 972 : 17 readchar 981 982 989 : 11 readinteger 1003 1017 1129 : 17 repeatchar 1132 1133 1136 : 8 testinterval 1140 1142 1150 : 13 testmodeout 1153 1155 1160 : 18 testsem 1166 1170 1216 : 15 writenl 1225 1227 1234 : 11 alarm_opsys 26 1253 2218 : 1398 code: 7 . 1688 = 22688 bytes end of PASCAL80 compilation end blocksread = 53 ▶EOF◀