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