|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 115968 (0x1c500) Types: TextFile Names: »alaoslst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »alaoslst«
\f alaoslst 81.06.18. 14.12. page 1 10 1 20 2 30 3 \f alaoslst 81.06.18. 14.12. 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 6.05 /"; 1240 27 1250 28 1260 29 \f alaoslst 81.06.18. 14.12. page 3 2010 30 CONST 2020 31 opbufsize = 80; (* no. of bytes in buffers to the operator module *) 2030 32 (*** bufs ***) 2040 33 messbufsize= 64; (*words*) 2050 34 testbufsize= 120; 2060 35 maxbufsize= 120; 2070 36 minbufsize= 16; 2080 37 noofmodules = 27; 2090 38 noofsemaphores= ts_sem_total; 2100 39 pu= 0; (* processing unit number *) 2110 40 pr= -1; (* timeslicing priority *) 2120 41 2130 42 valparam= "param val "; 2140 43 noparam= " no param "; 2150 44 alreadyexists= " already exists "; 2160 45 doesntexist= " doesn't exist "; 2170 46 illegalno= "illegal no"; 2180 47 createerror= "error in createcall "; 2190 48 2200 49 linelength= 80; 2210 50 firstindex= 6 + alfalength; 2220 51 lastindex= firstindex + (linelength - 1); 2230 52 ok= 0; (* result from operator *) 2240 53 2250 54 2260 55 TYPE 2270 56 2280 57 (*---- for alarmenv later ------*) 2290 58 2300 59 paxpooltype = pool no_pax_bufs OF min_rut_mess; 2310 60 2320 61 opbuftype= 2330 62 RECORD 2340 63 ! first, 2350 64 ! last, 2360 65 ! next: integer; 2370 66 ! name: alfa; 2380 67 ! data: ARRAY (firstindex..lastindex) OF char 2390 68 END; 2400 69 2410 70 (*** bufs ***) 2420 71 messbuftype= ARRAY (1..messbufsize) OF integer; 2430 72 testbuftype= ARRAY (1..testbufsize) OF integer; 2440 73 minbuftype = ARRAY (1.. minbufsize) OF integer; 2450 74 maxbuftype = ARRAY (1.. maxbufsize) OF integer; 2460 75 \f alaoslst 81.06.18. 14.12. 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 alaoslst 81.06.18. 14.12. 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 first_loop : boolean:= true; 3250 154 testmode 3260 155 : boolean; 3270 156 3280 157 (********** arrays **********) 3290 158 netc_locals : netc_loc_sems; 3300 159 params: ARRAY(1..50) OF integer; (* holds parameters from operator *) 3310 160 sh: ARRAY(1..noofmodules) OF shadow; (* ref. to process incarn. *) 3320 161 3330 162 (********** param to use in create **********) 3340 163 dc_addr: macroaddr := macroaddr(1,0,0); 3350 164 nc_addr: macroaddr := macroaddr(1,1,0); 3360 165 ts_addr: macroaddr := macroaddr(1,1,1); 3370 166 conn_state: connector_state:= stop_code; 3380 167 \f alaoslst 81.06.18. 14.12. page 6 3390 168 (*** auxiliary to compare sempointers ***) 3400 169 ap,bp : point_rec; 3410 170 node_no : byte; 3420 171 dte_addr : int_pax_addr := int_pax_addr(0,0,0,3); 3430 172 \f alaoslst 81.06.18. 14.12. page 7 4010 173 (********** externals **********) 4020 174 PROCESS fesupervisor( 4030 175 op: sempointer; 4040 176 VAR input_sem, write_sem, que_up, que_down : ! ts_pointer; 4050 177 VAR stream_sem, netc_sem, com_pool : ! sempointer); 4060 178 EXTERNAL; 4070 179 PROCESS streamer( 4080 180 VAR inputsem, xmitter, receiver: ! ts_pointer; 4090 181 retrans_max: integer; 4100 182 op: sempointer); 4110 183 4120 184 EXTERNAL; 4130 185 4140 186 PROCESS fpadriver( 4150 187 VAR sem: ! ts_pointer; 4160 188 level, block: integer; 4170 189 rec: boolean; 4180 190 op: sempointer); 4190 191 EXTERNAL; 4200 192 4210 193 PROCESS osif( 4220 194 op_sem: sempointer; 4230 195 VAR inputsem: ! ts_pointer; 4240 196 VAR streamsem, lamsem: ! sempointer; 4250 197 streamno, 4260 198 streambufs, 4270 199 ttybufs, 4280 200 port: byte); 4290 201 EXTERNAL; 4300 202 PROCESS mirror( 4310 203 op_sem : sempointer; 4320 204 VAR in_sem : !ts_pointer; 4330 205 VAR str_sem : !sempointer; 4340 206 rec, 4350 207 xmit : byte); 4360 208 EXTERNAL; 4370 209 PROCESS tssuper( 4380 210 op: sempointer; 4390 211 VAR ts_sem : !ts_pointer_vector); 4400 212 EXTERNAL; 4410 213 4420 214 PROCESS at_handler( 4430 215 op: sempointer; 4440 216 VAR 4450 217 dc_addr, 4460 218 ts_addr: !macroaddr; \f alaoslst 81.06.18. 14.12. page 8 4470 219 VAR ts_sem : !ts_pointer_vector); 4480 220 EXTERNAL; 4490 221 4500 222 PROCESS vc_handler( 4510 223 op: sempointer; 4520 224 VAR 4530 225 dc_addr, 4540 226 ts_addr: !macroaddr; 4550 227 VAR ts_sem : !ts_pointer_vector); 4560 228 EXTERNAL; 4570 229 4580 230 PROCESS timout( 4590 231 opsem: sempointer; 4600 232 VAR timeoutsem: !ts_pointer; 4610 233 ticklength, max: integer); 4620 234 EXTERNAL; 4630 235 4640 236 PROCESS atconnector( 4650 237 opsem: sempointer; 4660 238 VAR 4670 239 atcsem, 4680 240 quesem : !ts_pointer; 4690 241 VAR 4700 242 athsem, 4710 243 driversem, 4720 244 com_sem: !sempointer; 4730 245 VAR 4740 246 activ: connector_state; 4750 247 VAR 4760 248 delay: integer; 4770 249 VAR 4780 250 dc_addr, 4790 251 ts_addr: !macroaddr; 4800 252 ownaddr: integer; 4810 253 channelno: byte); 4820 254 EXTERNAL; 4830 255 4840 256 PROCESS vcc( 4850 257 opsem: sempointer; 4860 258 VAR 4870 259 messem, 4880 260 quesem : !ts_pointer; 4890 261 VAR 4900 262 vchsem, 4910 263 lamsem, 4920 264 timeoutsem, \f alaoslst 81.06.18. 14.12. page 9 4930 265 com_sem: !sempointer; 4940 266 VAR 4950 267 dcaddr, 4960 268 tsaddr: !macroaddr; 4970 269 micaddr: integer; 4980 270 channelno: byte); 4990 271 EXTERNAL; 5000 272 5010 273 PROCESS tsconnector( 5020 274 opsem: sempointer; 5030 275 VAR 5040 276 tsssem, 5050 277 dcsem, 5060 278 ncsem, 5070 279 lamsem, 5080 280 timeoutsem, 5090 281 com_sem: !sempointer; 5100 282 VAR 5110 283 inputsem, 5120 284 semint1, 5130 285 semint2, 5140 286 semint3, 5150 287 semint4: !ts_pointer); 5160 288 EXTERNAL; 5170 289 5180 290 PROCESS lam( 5190 291 opsem: sempointer; 5200 292 pu, level: integer; 5210 293 VAR inputsem: !ts_pointer); 5220 294 EXTERNAL; 5230 295 5240 296 PROCESS vagt( 5250 297 opsem: sempointer; 5260 298 VAR sem: !ts_pointer_vector); 5270 299 EXTERNAL; 5280 300 5290 301 PROCESS dcmodule( 5300 302 opsem: sempointer; 5310 303 VAR sem1,sem2,sem3,sem4: !sempointer; 5320 304 VAR sem5,sem6,sem7,sem8: !ts_pointer); 5330 305 EXTERNAL; 5340 306 5350 307 PROCESS tap( 5360 308 opsem: sempointer; 5370 309 VAR tab_sem: !ts_pointer); 5380 310 EXTERNAL; \f alaoslst 81.06.18. 14.12. page 10 5390 311 5400 312 PROCESS ncsup( 5410 313 opsem: sempointer; 5420 314 VAR 5430 315 main, 5440 316 free, 5450 317 done: !ts_pointer; 5460 318 VAR 5470 319 net_sem, 5480 320 timeoutsem: !sempointer); 5490 321 EXTERNAL; 5500 322 5510 323 PROCESS dtesimulator ( 5520 324 test_sem : sempointer; 5530 325 VAR 5540 326 pax_pool_sem, 5550 327 dte_sem : !ts_pointer; 5560 328 VAR 5570 329 netc_sem, 5580 330 rut_trm_sem, 5590 331 rut_rec_sem : !sempointer; 5600 332 dte_addr : int_pax_addr 5610 333 ); 5620 334 EXTERNAL; 5630 335 5640 336 PROCESS netconnector ( 5650 337 global_timeout : byte; 5660 338 test_sem : sempointer; 5670 339 VAR 5680 340 pax_pool_sem, 5690 341 main_sem : !ts_pointer; 5700 342 local_sem_table : netc_loc_sems; 5710 343 VAR 5720 344 com_pool_sem, 5730 345 timeout_sem, 5740 346 dte_sem : !sempointer 5750 347 ); 5760 348 EXTERNAL; 5770 349 5780 350 PROCESS tapdte ( 5790 351 op_sem : sempointer; 5800 352 VAR sem : ! ts_pointer ); 5810 353 EXTERNAL; 5820 354 5830 355 PROCESS tapnet ( 5840 356 op_sem : sempointer; \f alaoslst 81.06.18. 14.12. page 11 5850 357 VAR sem : !ts_pointer ); 5860 358 EXTERNAL; 5870 359 5880 360 PROCESS testoutput ( 5890 361 insem, 5900 362 opsem : sempointer ); 5910 363 EXTERNAL; 5920 364 5930 365 5940 366 PROCEDURE setoflowmask( oflow: boolean); 5950 367 EXTERNAL; 5960 368 5970 369 PROCEDURE readram( VAR result:byte; index : integer); 5980 370 EXTERNAL; 5990 371 6000 372 (********** forwards **********) 6010 373 6020 374 PROCEDURE getparams; 6030 375 FORWARD; 6040 376 6050 377 PROCEDURE outdecimal(int,positions: integer); 6060 378 FORWARD; 6070 379 6080 380 PROCEDURE outinteger(int,positions: integer); 6090 381 FORWARD; 6100 382 6110 383 PROCEDURE outstring10(text: alfa10); 6120 384 FORWARD; 6130 385 6140 386 PROCEDURE outstring12(text: alfa); 6150 387 FORWARD; 6160 388 6170 389 PROCEDURE outstring20(text: alfa20); 6180 390 FORWARD; 6190 391 6200 392 FUNCTION readchar: char; 6210 393 FORWARD; 6220 394 6230 395 FUNCTION readinteger: integer; 6240 396 FORWARD; 6250 397 6260 398 PROCEDURE repeatchar; 6270 399 FORWARD; 6280 400 6290 401 PROCEDURE testmodeout (text: alfa20; i: integer); 6300 402 FORWARD; \f alaoslst 81.06.18. 14.12. page 12 6310 403 6320 404 PROCEDURE writenl; 6330 405 FORWARD; 6340 406 \f alaoslst 81.06.18. 14.12. page 13 7010 407 FUNCTION dte_pax_addr (i:integer): int_pax_addr; 7020 408 VAR pax_adr : int_pax_addr; 7030 409 BEGIN 7040 410 1 ! pax_adr.net_addr := params(i); 7050 411 2 ! pax_adr.reg_addr := params(i+1); 7060 412 3 ! pax_adr.node_addr := params(i+2); 7070 413 4 ! pax_adr.ext_addr := params(i+3); 7080 414 5 ! dte_pax_addr := pax_adr; 7090 415 6 END; 7100 416 7110 417 PROCEDURE make_phead ( 7120 418 i : integer; op_code : byte; 7130 419 VAR p : format_1_packet_header ); 7140 420 BEGIN 7150 421 1 ! WITH p DO 7160 422 2 ! BEGIN 7170 423 3 ! ! format := rut_format_1; 7180 424 4 ! ! priority := rut_prio_0; 7190 425 5 ! ! packet_type := rut_pack_type; 7200 426 6 ! ! state := 0; 7210 427 7 ! ! org := dte_pax_addr(i); 7220 428 8 ! ! dst := dte_pax_addr(i+3); 7230 429 9 ! ! facility := params(9); 7240 430 10 ! ! user_field := op_code *256 + params(2); 7250 431 11 ! ! top_of_data := 0; 7260 432 12 ! END; 7270 433 13 END; 7280 434 \f alaoslst 81.06.18. 14.12. page 14 8010 435 FUNCTION packmacro ( 8020 436 par:integer):macroaddr; 8030 437 VAR 8040 438 a:macroaddr; 8050 439 BEGIN 8060 440 1 ! a.dc_addr := params( par); 8070 441 2 ! a.nc_addr := params( par+1); 8080 442 3 ! a.ts_addr := params( par+2); 8090 443 4 ! packmacro := a; 8100 444 5 END; 8110 445 8120 446 FUNCTION packextnode ( 8130 447 par:integer) : ext_pax_addr; 8140 448 VAR 8150 449 i:integer; 8160 450 a:ext_pax_addr; 8170 451 BEGIN 8180 452 1 ! FOR i:=1 TO 6 DO 8190 453 2 ! a(i):=0; 8200 454 3 ! FOR i:=0 TO 2 DO 8210 455 4 ! BEGIN 8220 456 5 ! ! a(7+i):=params(par+i); 8230 457 6 ! ! testout(z,"params ", params(par+i)); 8240 458 7 ! END; 8250 459 8 ! FOR i:= 10 TO 14 DO 8260 460 9 ! a(i) := 0; 8270 461 10 ! FOR i := 1 TO 14 DO 8280 462 11 ! testout(z,"a ", a(i)); 8290 463 12 ! packextnode := a; 8300 464 13 END; 8310 465 \f alaoslst 81.06.18. 14.12. page 15 9010 466 PROCEDURE get_curbuftype; 9020 467 BEGIN 9030 468 1 ! IF cur^.size < minbufsize THEN 9040 469 2 ! curbuftype:= 0 ELSE 9050 470 3 ! IF cur^.size < messbufsize THEN 9060 471 4 ! curbuftype:= 1 ELSE 9070 472 5 ! IF cur^.size < maxbufsize THEN 9080 473 6 ! curbuftype:= 2 ELSE 9090 474 7 ! IF cur^.size < testbufsize THEN 9100 475 8 ! curbuftype:= 3 ELSE 9110 476 9 ! curbuftype:= 4; 9120 477 10 ! 9130 478 11 ! CASE curbuftype OF 9140 479 12 ! ! 0: curbufsize:= 0; 9150 480 13 ! ! 1: curbufsize:= minbufsize; 9160 481 14 ! ! 2: curbufsize:= messbufsize; 9170 482 15 ! ! 3: curbufsize:= maxbufsize; 9180 483 16 ! ! 4: curbufsize:= testbufsize; 9190 484 17 ! END; 9200 485 18 END; 9210 486 \f alaoslst 81.06.18. 14.12. page 16 10010 487 PROCEDURE getinput; 10020 488 (* reads input from console into opinref^ *) 10030 489 BEGIN 10040 490 1 ! 10050 491 2 ! testmodeout ("getinput called ",0); 10060 492 3 ! 10070 493 4 ! REPEAT 10080 494 5 ! ! LOCK opinref AS opbuf: opbuftype DO 10090 495 6 ! ! opbuf.next:= firstindex; 10100 496 7 ! ! signal (opinref, opsem^); 10110 497 8 ! ! wait (opinref, wrsem); 10120 498 9 ! UNTIL opinref^.u2= ok (* 0*); 10130 499 10 ! 10140 500 11 ! LOCK opinref AS opbuf: opbuftype DO 10150 501 12 ! WITH opbuf DO 10160 502 13 ! BEGIN 10170 503 14 ! ! incharsleft:= next - first; 10180 504 15 ! ! next:= firstindex; 10190 505 16 ! END; 10200 506 17 ! command:= readchar; 10210 507 18 ! 10220 508 19 ! testmodeout ("command read: ",ord(command)); 10230 509 20 ! 10240 510 21 ! getparams; 10250 511 22 END (* getinput *); 10260 512 \f alaoslst 81.06.18. 14.12. page 17 11010 513 PROCEDURE getparams; 11020 514 (* reads integer parameters *) 11030 515 VAR newbase: boolean; 11040 516 BEGIN 11050 517 1 ! testmodeout ("getparams called ",0); 11060 518 2 ! 11070 519 3 ! noofparams:= 0; 11080 520 4 ! 11090 521 5 ! IF command IN (."a","b","c","d","e","f","k","n","o","p","s","t","w","x".) 11100 522 6 ! THEN 11110 523 7 ! BEGIN (* change to decimal *) 11120 524 8 ! ! oldbase:= base; 11130 525 9 ! ! base:= 10; 11140 526 10 ! ! newbase:= true; 11150 527 11 ! END 11160 528 12 ! ELSE 11170 529 13 ! newbase:= false; 11180 530 14 ! 11190 531 15 ! REPEAT 11200 532 16 ! ! noofparams:= noofparams + 1; 11210 533 17 ! ! params(noofparams):= readinteger; 11220 534 18 ! ! testmodeout ("parameter read: ",params(noofparams)); 11230 535 19 ! ! IF (noofparams=1) THEN 11240 536 20 ! ! IF command IN (."f","p".) THEN 11250 537 21 ! ! BEGIN (* change to old *) 11260 538 22 ! ! ! base:= oldbase; 11270 539 23 ! ! ! newbase:= false; 11280 540 24 ! ! END; 11290 541 25 ! ! 11300 542 26 ! UNTIL (NOT readok) OR (noofparams= 50); 11310 543 27 ! 11320 544 28 ! noofparams:= noofparams - 1; 11330 545 29 ! 11340 546 30 ! IF newbase THEN 11350 547 31 ! (* change back to old base *) 11360 548 32 ! base:= oldbase; 11370 549 33 END (* getparams *); 11380 550 \f alaoslst 81.06.18. 14.12. page 18 12010 551 PROCEDURE init_proc( 12020 552 index: integer; 12030 553 name, 12040 554 inc_name : alfa; 12050 555 p : processrec; 12060 556 size, 12070 557 prio : integer); 12080 558 VAR 12090 559 okl, 12100 560 ok : integer; 12110 561 BEGIN 12120 562 1 ! IF NOT nil(sh(index)) THEN 12130 563 2 ! outstring20(alreadyexists) ELSE 12140 564 3 ! BEGIN 12150 565 4 ! ! IF noofparams<2 THEN st:= size; 12160 566 5 ! ! okl:= link(name,p.processref^); 12170 567 6 ! ! ok:= create(inc_name,p,sh(index),st); 12180 568 7 ! ! IF ok=0 THEN 12190 569 8 ! ! start(sh(index),prio) ELSE 12200 570 9 ! ! BEGIN 12210 571 10 ! ! ! ok:= ok*100+okl; 12220 572 11 ! ! ! outstring20(createerror); 12230 573 12 ! ! ! outstring12(inc_name); 12240 574 13 ! ! ! outdecimal(ok,5); 12250 575 14 ! ! ! writenl; 12260 576 15 ! ! ! okl:= unlink(p.processref^); 12270 577 16 ! ! END; 12280 578 17 ! END; 12290 579 18 END; 12300 580 \f alaoslst 81.06.18. 14.12. page 19 13010 581 PROCEDURE init_modul(index: integer); 13020 582 CONST 13030 583 n1 = "tssupervisor"; 13040 584 n2 = "at_handler "; 13050 585 n3 = "vc_handler "; 13060 586 n4 = "timout "; 13070 587 n5 = "atconnector "; 13080 588 n6 = "vcatc "; 13090 589 n7 = "tsconnector "; 13100 590 n8 = "atvagtsim "; 13110 591 n9 = "lam "; 13120 592 n10= "tap "; 13130 593 n11= "dcmodule "; 13140 594 n13= "ncsupervisor"; 13150 595 n14= "vcitc "; 13160 596 n15= "itvagtsim "; 13170 597 n16= "alc "; 13180 598 n17= "netconnector"; 13190 599 n18= "dtesimulator"; 13200 600 n19= "tapdte "; 13210 601 n20= "tapnet "; 13220 602 n21= "testoutput "; 13230 603 n22= "fesupervisor"; 13240 604 n23= "streamer "; 13250 605 n24= "osif "; 13260 606 n25= "fpadriver "; 13270 607 n27= "str_mirror "; 13280 608 BEGIN 13290 609 1 ! CASE index OF 13300 610 2 ! ! 1: (* tssup *) 13310 611 3 ! ! init_proc(index, n1, n1, 13320 612 4 ! ! tssuper( opsem, sem), 13330 613 5 ! ! tss_size,tss_pri); 13340 614 6 ! ! 2: (* ath *) 13350 615 7 ! ! init_proc(index, n2, n2, 13360 616 8 ! ! at_handler( opsem, dc_addr, ts_addr, sem), 13370 617 9 ! ! ath_size,ath_pri); 13380 618 10 ! ! 3: (* vch *) 13390 619 11 ! ! init_proc(index, n3, n3, 13400 620 12 ! ! vc_handler( opsem, dc_addr, ts_addr, sem), 13410 621 13 ! ! vch_size,vch_pri); 13420 622 14 ! ! 4: (* timeout *) 13430 623 15 ! ! init_proc(index, n4, n4, 13440 624 16 ! ! timout( opsem, sem(timeout_sem_no), time_out_unit, 40), 13450 625 17 ! ! tim_size,tim_pri); 13460 626 18 ! ! 5: (* atc *) \f alaoslst 81.06.18. 14.12. page 20 13470 627 19 ! ! init_proc(index, n5, n5, 13480 628 20 ! ! atconnector( opsem, sem(atc_sem_no), sem(atc_sem_no+1), 13490 629 21 ! ! sem(ath_sem_no).s, sem(lam_sem_no).s, sem(com_pool).w, 13500 630 22 ! ! conn_state, index, dc_addr, ts_addr, 257, 7), 13510 631 23 ! ! atc_size,atc_pri); 13520 632 24 ! ! 6: (* vcatc *) 13530 633 25 ! ! init_proc(index, n6, n6, 13540 634 26 ! ! vcc( opsem, sem(vcc_sem_no), sem(vcc_sem_no+1), 13550 635 27 ! ! sem(vch_sem_no).s, sem(vas_sem_no).s, sem(timeout_sem_no).s, 13560 636 28 ! ! sem(com_pool).w, dc_addr, ts_addr, 63, 2), 13570 637 29 ! ! vac_size, vcc_pri); 13580 638 30 ! ! 7: (* tsc *) 13590 639 31 ! ! init_proc(index, n7, n7, 13600 640 32 ! ! tsconnector( opsem, sem(tssup_sem_no).s, 13610 641 33 ! ! sem(dc_sem_no).s, 13620 642 34 ! ! sem(nc_sem_no).s, sem(lam_sem_no).s, sem(timeout_sem_no).s, 13630 643 35 ! ! sem(com_pool).w, sem(netc_sem_no), 13640 644 36 ! ! sem(pax_sem_2), sem(pax_sem_1), 13650 645 37 ! ! sem(pax_ncp_sem), sem(dte_sem_no)), 13660 646 38 ! ! tsc_size, tsc_pri); 13670 647 39 ! ! 8: (* atvagtsim *) 13680 648 40 ! ! init_proc(index, n8, n8, 13690 649 41 ! ! vagt( opsem, sem), 13700 650 42 ! ! vas_size, vc_sim_pri); 13710 651 43 ! ! 9: (* lam *) 13720 652 44 ! ! init_proc(index, n9, n9, 13730 653 45 ! ! lam( opsem, pu, 5, sem(lam_sem_no)), 13740 654 46 ! ! lam_size, 1); 13750 655 47 ! ! 10: (* tap *) 13760 656 48 ! ! init_proc(index, n10, n10, 13770 657 49 ! ! tap( opsem, sem(tap_sem_no)), 13780 658 50 ! ! 512, 0); 13790 659 51 ! ! 11: (* dc *) 13800 660 52 ! ! init_proc(index, n11, n11, 13810 661 53 ! ! dcmodule( opsem, sem(lam_sem_no).s, sem(netc_sem_no).s, 13820 662 54 ! ! sem(com_pool).w, sem(timeout_sem_no).s, 13830 663 55 ! ! sem(dc_sem_no), sem(dc_int1), sem(dc_int2), sem(dc_int3)), 13840 664 56 ! ! dc_sim_size, dc_sim_pri); 13850 665 57 ! ! 12: (* tap01 *) 13860 666 58 ! ! init_proc(index, n10, "tap01 ", 13870 667 59 ! ! tap ( opsem, sem(tap1_sem_no)), 13880 668 60 ! ! 512, 0); 13890 669 61 ! ! 13: (* ncsupervisor *) 13900 670 62 ! ! init_proc(index, n13, n13, 13910 671 63 ! ! ncsup( opsem, sem(nc_sem_no), sem(ncsup_int1), sem(ncsup_int2), 13920 672 64 ! ! sem(netc_sem_no).s, sem(timeout_sem_no).s), \f alaoslst 81.06.18. 14.12. page 21 13930 673 65 ! ! nc_sup_size, tss_pri); 13940 674 66 ! ! 14: (* vcitc *) 13950 675 67 ! ! init_proc(index, n14, n14, 13960 676 68 ! ! vcc( opsem, sem(vcc_sem_no+2), sem(vcc_sem_no+3), 13970 677 69 ! ! sem(vch_sem_no).s, sem(vis_sem_no).s, sem(timeout_sem_no).s, 13980 678 70 ! ! sem(com_pool).w, dc_addr, ts_addr, 64, 3), 13990 679 71 ! ! vic_size, vcc_pri); 14000 680 72 ! ! 15: (* itvagtsim *) 14010 681 73 ! ! init_proc(index, n15, n15, 14020 682 74 ! ! vagt( opsem, sem), 14030 683 75 ! ! vis_size, vc_sim_pri); 14040 684 76 ! ! 17: (* netconnector *) 14050 685 77 ! ! init_proc ( index, n17, n17, 14060 686 78 ! ! netconnector( glob_timeout, spool_test_sem, 14070 687 79 ! ! sem( pax_pool),sem( netc_sem_no), netc_locals, 14080 688 80 ! ! sem( com_pool).w, 14090 689 81 ! ! sem( timeout_sem_no).s, sem( dte_sem_no).s), 14100 690 82 ! ! netc_size, netc_pri); 14110 691 83 ! ! 14120 692 84 ! ! 18: (* dtesimulator *) 14130 693 85 ! ! init_proc ( index, n18, n18, 14140 694 86 ! ! dtesimulator ( spool_test_sem, sem( pax_pool), sem(dte_sem_no), 14150 695 87 ! ! sem( netc_sem_no).s, 14160 696 88 ! ! sem( pax_sem_1).s, sem( pax_sem_2).s, 14170 697 89 ! ! dte_addr), 14180 698 90 ! ! netc_size, netc_pri); 14190 699 91 ! ! 19: (* tapdte *) 14200 700 92 ! ! init_proc ( index, n19, n19, 14210 701 93 ! ! tapdte ( opsem, sem(tap_dte_sem_no)), 14220 702 94 ! ! 512,0); 14230 703 95 ! ! 20: (* tapnet *) 14240 704 96 ! ! init_proc ( index, n20, n20, 14250 705 97 ! ! tapnet ( opsem, sem(tap_net_sem_no)), 14260 706 98 ! ! 512,0); 14270 707 99 ! ! 14280 708 100 ! ! 21: (* testoutput *) 14290 709 101 ! ! init_proc ( index, n21, n21, 14300 710 102 ! ! testoutput ( spool_test_sem, opsem), 14310 711 103 ! ! 512,0); 14320 712 104 ! ! 22: (* fesup *) 14330 713 105 ! ! init_proc(index,n22,n22, 14340 714 106 ! ! fesupervisor(opsem, 14350 715 107 ! ! sem(fesup_sem_no),sem(fesup_write),sem(fesup_que_up),sem(fesup_que_down), 14360 716 108 ! ! sem(stream_sem_no).s,sem(netc_sem_no).s, sem(com_pool).w ), 14370 717 109 ! ! fesup_size, fesup_pri ); 14380 718 110 ! ! \f alaoslst 81.06.18. 14.12. page 22 14390 719 111 ! ! 23: (* streamer *) 14400 720 112 ! ! init_proc(index,n23,n23, 14410 721 113 ! ! streamer( sem(stream_sem_no), sem(stream_xmit), 14420 722 114 ! ! sem(stream_rec), 3, opsem), stream_size, stream_pri); 14430 723 115 ! ! 14440 724 116 ! ! 24: (* osif *) 14450 725 117 ! ! init_proc(index,n24,n24, 14460 726 118 ! ! osif(opsem, sem(osif_sem_no), sem(stream_sem_no).s, 14470 727 119 ! ! sem(lam_sem_no).s, 3, 2, 3, 7), 14480 728 120 ! ! osif_size, osif_pri); 14490 729 121 ! ! 14500 730 122 ! ! 25: (* fpareceiver *) 14510 731 123 ! ! init_proc(index,n25, "fparec ", 14520 732 124 ! ! fpadriver( sem(stream_rec), 6, 2, true, opsem), 14530 733 125 ! ! 512, -1); 14540 734 126 ! ! 14550 735 127 ! ! 26: (* fpaxmitter *) 14560 736 128 ! ! init_proc(index,n25,"fpaxmit ", 14570 737 129 ! ! fpadriver(sem(stream_xmit),7,2,false,opsem), 14580 738 130 ! ! 512, -1); 14590 739 131 ! ! 14600 740 132 ! ! 27: (* str mirror *) 14610 741 133 ! ! init_proc( index, n27, n27, 14620 742 134 ! ! mirror( opsem, sem(mirror_sem_no), 14630 743 135 ! ! sem(stream_sem_no).s, 10, 11), 14640 744 136 ! ! 512, 3); 14650 745 137 ! ! 14660 746 138 ! ! 14670 747 139 ! ! 14680 748 140 ! ! OTHERWISE 14690 749 141 ! ! BEGIN 14700 750 142 ! ! ! outdecimal(index,4); 14710 751 143 ! ! ! outstring10(illegalno); 14720 752 144 ! ! END; 14730 753 145 ! END (* case *) 14740 754 146 END; 14750 755 \f alaoslst 81.06.18. 14.12. page 23 15010 756 FUNCTION moduleready(moduleno: integer): boolean; 15020 757 (* tests if an incarnation of the module is existing 15030 758 and writes an errormessage if so *) 15040 759 BEGIN 15050 760 1 ! IF nil( sh( moduleno) ) THEN moduleready:=true 15060 761 2 ! ELSE 15070 762 3 ! BEGIN (* module is already existing *) 15080 763 4 ! ! outdecimal(moduleno,4); 15090 764 5 ! ! outstring20(alreadyexists); 15100 765 6 ! ! moduleready:=false; 15110 766 7 ! END; 15120 767 8 END (* module ready *); 15130 768 15140 769 15150 770 \f alaoslst 81.06.18. 14.12. page 24 16010 771 PROCEDURE outchar(ch:char); 16020 772 (* writes ch into the output buffer *) 16030 773 BEGIN 16040 774 1 ! LOCK opoutref AS opbuf: opbuftype DO 16050 775 2 ! WITH opbuf DO 16060 776 3 ! BEGIN 16070 777 4 ! ! last:= last + 1; 16080 778 5 ! ! data (last):= ch; 16090 779 6 ! END; 16100 780 7 END (* outchar *); 16110 781 \f alaoslst 81.06.18. 14.12. page 25 17010 782 PROCEDURE outdecimal (int, positions: integer); 17020 783 (* writes the integer "int" decimally into opbuf starting 17030 784 at "last", which is updated accordingly *) 17040 785 17050 786 BEGIN 17060 787 1 ! oldbase:= base; 17070 788 2 ! base:= 10; 17080 789 3 ! outinteger(int,positions); 17090 790 4 ! base:= oldbase; 17100 791 5 END (* outdecimal *); 17110 792 \f alaoslst 81.06.18. 14.12. page 26 18010 793 PROCEDURE outinteger(int,positions:integer); 18020 794 (* writes the integer "int" into opbuf starting at 18030 795 "last", which is updated accordingly *) 18040 796 CONST 18050 797 maxpos = 20; (* max number of positions in layout *) 18060 798 18070 799 VAR 18080 800 bits: ARRAY(0..15) OF bit; 18090 801 digits:ARRAY(1..maxpos) OF char; 18100 802 curdigit, (* current pos. in digits-array to be filled out *) 18110 803 curpos, (* cur. pos. in the nunber being computed *) 18120 804 h, i, 18130 805 m, newm, 18140 806 noofdig, (* no. of digits in the resulting number *) 18150 807 noofpos, (* no. of pos. from bits-array for one number *) 18160 808 res, (* resulting number *) 18170 809 used: integer; 18180 810 18190 811 negative, zeroes: boolean; 18200 812 18210 813 BEGIN 18220 814 1 ! used:= 1; 18230 815 2 ! 18240 816 3 ! (* first we initialise the digits array *) 18250 817 4 ! FOR i:=1 TO maxpos DO digits(i):=sp; 18260 818 5 ! 18270 819 6 ! IF base= 10 THEN 18280 820 7 ! BEGIN 18290 821 8 ! ! i:=maxpos; 18300 822 9 ! ! 18310 823 10 ! ! negative:= int<0; 18320 824 11 ! ! 18330 825 12 ! ! REPEAT 18340 826 13 ! ! ! (* now we unpack the digits backwards and put them 18350 827 14 ! ! ! into the digits array *) 18360 828 15 ! ! ! 18370 829 16 ! ! ! digits(i):= chr (abs(int MOD base) + ord("0")); 18380 830 17 ! ! ! int:=int DIV base; 18390 831 18 ! ! ! i:=i-1; 18400 832 19 ! ! UNTIL (i=1) OR (int=0); 18410 833 20 ! ! 18420 834 21 ! ! IF negative THEN 18430 835 22 ! ! BEGIN 18440 836 23 ! ! ! digits(i):="-"; 18450 837 24 ! ! ! i:=i-1; 18460 838 25 ! ! END; \f alaoslst 81.06.18. 14.12. page 27 18470 839 26 ! ! 18480 840 27 ! ! used:=maxpos-i; 18490 841 28 ! ! 18500 842 29 ! ! IF int <> 0 THEN digits(1):= "*"; 18510 843 30 ! END (* if base= 10 *) 18520 844 31 ! 18530 845 32 ! ELSE (* base= 2, 8, or 16 *) 18540 846 33 ! BEGIN 18550 847 34 ! ! (* initialise bits-array *) 18560 848 35 ! ! IF int>=0 THEN 18570 849 36 ! ! BEGIN 18580 850 37 ! ! ! FOR i:= 15 DOWNTO 1 DO 18590 851 38 ! ! ! BEGIN 18600 852 39 ! ! ! ! bits(i):= int MOD 2; 18610 853 40 ! ! ! ! int:= int DIV 2; 18620 854 41 ! ! ! END; 18630 855 42 ! ! ! bits(0):= int MOD 2; 18640 856 43 ! ! ! int:= int DIV 2; 18650 857 44 ! ! END 18660 858 45 ! ! ELSE 18670 859 46 ! ! (* int<0 *) 18680 860 47 ! ! BEGIN 18690 861 48 ! ! ! (* subtract abs(int) from 1111111...1 *) 18700 862 49 ! ! ! FOR i:= 15 DOWNTO 1 DO 18710 863 50 ! ! ! BEGIN 18720 864 51 ! ! ! ! bits(i):= 1+(int MOD 2); 18730 865 52 ! ! ! ! int:= int DIV 2; 18740 866 53 ! ! ! END; 18750 867 54 ! ! ! bits(0):= 1+(int MOD 2); 18760 868 55 ! ! ! int:= int DIV 2; 18770 869 56 ! ! ! 18780 870 57 ! ! ! (* add 1 *) 18790 871 58 ! ! ! m:= 1; 18800 872 59 ! ! ! FOR i:= 15 DOWNTO 1 DO 18810 873 60 ! ! ! BEGIN 18820 874 61 ! ! ! ! newm:= (bits(i)+m) DIV 2; 18830 875 62 ! ! ! ! bits(i):= (bits(i)+m) MOD 2; 18840 876 63 ! ! ! ! m:= newm; 18850 877 64 ! ! ! END; 18860 878 65 ! ! ! newm:= (bits(0)+m) DIV 2; 18870 879 66 ! ! ! bits(0):= (bits(0)+m) MOD 2; 18880 880 67 ! ! ! m:= newm; 18890 881 68 ! ! END (*int<0*); 18900 882 69 ! ! 18910 883 70 ! ! (* compute digits-array *) 18920 884 71 ! ! CASE base OF \f alaoslst 81.06.18. 14.12. page 28 18930 885 72 ! ! ! 2: BEGIN 18940 886 73 ! ! ! ! noofpos:= 1; 18950 887 74 ! ! ! ! noofdig:= 16; 18960 888 75 ! ! ! END; 18970 889 76 ! ! ! 18980 890 77 ! ! ! 8: BEGIN 18990 891 78 ! ! ! ! noofpos:= 3; 19000 892 79 ! ! ! ! noofdig:= 6; 19010 893 80 ! ! ! END; 19020 894 81 ! ! ! 19030 895 82 ! ! ! 16: BEGIN 19040 896 83 ! ! ! ! noofpos:= 4; 19050 897 84 ! ! ! ! noofdig:= 4; 19060 898 85 ! ! ! END; 19070 899 86 ! ! END (* case *); 19080 900 87 ! ! 19090 901 88 ! ! curdigit:= maxpos -noofdig +1; 19100 902 89 ! ! 19110 903 90 ! ! IF base= 8 19120 904 91 ! ! THEN curpos:= 3 19130 905 92 ! ! ELSE curpos:= 1; 19140 906 93 ! ! res:= 0; 19150 907 94 ! ! zeroes:= true; 19160 908 95 ! ! 19170 909 96 ! ! FOR h:= 0 TO 15 DO 19180 910 97 ! ! BEGIN 19190 911 98 ! ! ! res:= res*2 + bits(h); 19200 912 99 ! ! ! IF curpos= noofpos THEN 19210 913 100 ! ! ! BEGIN (* time to fill out a pos. in digits-array *) 19220 914 101 ! ! ! ! IF zeroes AND (res=0) THEN 19230 915 102 ! ! ! ! BEGIN 19240 916 103 ! ! ! ! ! IF curdigit=maxpos 19250 917 104 ! ! ! ! ! THEN digits(curdigit):= "0" 19260 918 105 ! ! ! ! ! (*else digits (curdigit):= " "*); 19270 919 106 ! ! ! ! END 19280 920 107 ! ! ! ! ELSE 19290 921 108 ! ! ! ! IF res<=9 19300 922 109 ! ! ! ! THEN digits(curdigit):= chr (res + ord ("0")) 19310 923 110 ! ! ! ! ELSE digits(curdigit):= chr (res + ord ("7")); 19320 924 111 ! ! ! ! IF (res<>0) AND zeroes THEN 19330 925 112 ! ! ! ! BEGIN 19340 926 113 ! ! ! ! ! zeroes:= false; 19350 927 114 ! ! ! ! ! used:= maxpos - curdigit + 1; 19360 928 115 ! ! ! ! END; 19370 929 116 ! ! ! ! res:= 0; 19380 930 117 ! ! ! ! curpos:= 0; \f alaoslst 81.06.18. 14.12. page 29 19390 931 118 ! ! ! ! curdigit:= curdigit + 1; 19400 932 119 ! ! ! END; 19410 933 120 ! ! ! curpos:= curpos + 1; 19420 934 121 ! ! END; 19430 935 122 ! END (* base= 2, 8, of 16 *); 19440 936 123 ! 19450 937 124 ! IF positions<used THEN outchar(sp); 19460 938 125 ! 19470 939 126 ! IF (NOT (positions IN (. 1 .. maxpos .)) ) 19480 940 127 ! OR (positions < used) THEN 19490 941 128 ! positions:=used; 19500 942 129 ! 19510 943 130 ! FOR i:=maxpos+1-positions TO maxpos DO 19520 944 131 ! BEGIN 19530 945 132 ! ! outchar( digits(i) ); 19540 946 133 ! END 19550 947 134 ! 19560 948 135 END (* out integer *); 19570 949 19580 950 19590 951 \f alaoslst 81.06.18. 14.12. page 30 20010 952 PROCEDURE outstring10(text: alfa10); 20020 953 (* writes the text into opbuf starting at outputpointer 20030 954 which is updated accordingly *) 20040 955 VAR 20050 956 i: integer; 20060 957 BEGIN 20070 958 1 ! FOR i:=1 TO 10 DO 20080 959 2 ! outchar( text(i) ); 20090 960 3 END (* out string 10 *); 20100 961 20110 962 PROCEDURE outstring12(text: alfa); 20120 963 VAR 20130 964 i: integer; 20140 965 BEGIN 20150 966 1 ! FOR i:=1 TO 12 DO 20160 967 2 ! outchar(text(i)); 20170 968 3 END; 20180 969 \f alaoslst 81.06.18. 14.12. page 31 21010 970 PROCEDURE outstring20(text: alfa20); 21020 971 (* analogue to outstring10 *) 21030 972 VAR 21040 973 i: integer; 21050 974 BEGIN 21060 975 1 ! FOR i:=1 TO 20 DO 21070 976 2 ! outchar( text(i) ); 21080 977 3 END (* out string 20 *); 21090 978 21100 979 21110 980 21120 981 \f alaoslst 81.06.18. 14.12. page 32 22010 982 FUNCTION readchar: char; 22020 983 (* reads the next char from opinref^. 22030 984 next is incremented and charsleft is 22040 985 decremented *) 22050 986 BEGIN 22060 987 1 ! LOCK opinref AS opbuf: opbuftype DO 22070 988 2 ! WITH opbuf DO 22080 989 3 ! BEGIN 22090 990 4 ! ! readchar:= data(next); 22100 991 5 ! ! next:= next + 1; 22110 992 6 ! END; 22120 993 7 ! incharsleft:=incharsleft-1; 22130 994 8 END (* readchar *); 22140 995 22150 996 22160 997 22170 998 \f alaoslst 81.06.18. 14.12. page 33 23010 999 FUNCTION readinteger : integer; 23020 1000 (* reads the next integer from opinref^ starting 23030 1001 at "inputpoint". upon return "inputpoint" will be 23040 1002 the position just after the last char read. 23050 1003 23060 1004 the global boolean "readok" will be true if an 23070 1005 integer was read and false otherwise *) 23080 1006 23090 1007 CONST 23100 1008 digits = (. "0" .. "9" .); 23110 1009 hexdigits = (. "a" .. "f" .); 23120 1010 signs = (. "+" , "-" .); 23130 1011 23140 1012 VAR 23150 1013 negative, digit: boolean; 23160 1014 23170 1015 curdigit, noofdigit, 23180 1016 result: integer; 23190 1017 23200 1018 ch,lastchar: char; 23210 1019 23220 1020 23230 1021 BEGIN 23240 1022 1 ! readok:=false; 23250 1023 2 ! lastchar:=nul; 23260 1024 3 ! ch:=nul; 23270 1025 4 ! digit:=false; 23280 1026 5 ! 23290 1027 6 ! (* now skip until a digit is encountered *) 23300 1028 7 ! 23310 1029 8 ! IF incharsleft > 0 THEN 23320 1030 9 ! REPEAT 23330 1031 10 ! ! lastchar:=ch; 23340 1032 11 ! ! ch:=readchar; 23350 1033 12 ! ! digit:= (ch IN digits) OR 23360 1034 13 ! ! ((base= 16) AND (ch IN hexdigits)) 23370 1035 14 ! UNTIL digit OR (incharsleft<=0); 23380 1036 15 ! 23390 1037 16 ! result:=0; 23400 1038 17 ! IF base= 10 THEN 23410 1039 18 ! negative:= lastchar= "-" 23420 1040 19 ! ELSE negative:= false; 23430 1041 20 ! 23440 1042 21 ! 23450 1043 22 ! IF digit THEN 23460 1044 23 ! BEGIN \f alaoslst 81.06.18. 14.12. page 34 23470 1045 24 ! ! IF ch IN digits 23480 1046 25 ! ! THEN result:= ord (ch) - ord ("0") 23490 1047 26 ! ! ELSE result:= ord (ch) - 87 (*ord ("W")*); 23500 1048 27 ! ! readok:=true; 23510 1049 28 ! END; 23520 1050 29 ! 23530 1051 30 ! IF base=10 THEN 23540 1052 31 ! BEGIN 23550 1053 32 ! ! WHILE digit AND (incharsleft>0) DO 23560 1054 33 ! ! BEGIN (* read the digits *) 23570 1055 34 ! ! ! ch:= readchar; 23580 1056 35 ! ! ! 23590 1057 36 ! ! ! digit:= (ch IN digits) OR 23600 1058 37 ! ! ! ((base= 16) AND (ch IN hexdigits)); 23610 1059 38 ! ! ! IF digit THEN 23620 1060 39 ! ! ! BEGIN 23630 1061 40 ! ! ! ! IF negative AND (result=3276) AND (ch="8") 23640 1062 41 ! ! ! ! THEN BEGIN 23650 1063 42 ! ! ! ! ! result:= -32768; 23660 1064 43 ! ! ! ! ! negative:= false; 23670 1065 44 ! ! ! ! END 23680 1066 45 ! ! ! ! ELSE 23690 1067 46 ! ! ! ! BEGIN 23700 1068 47 ! ! ! ! ! IF ch IN digits 23710 1069 48 ! ! ! ! ! THEN result:= result*base+(ord(ch)-ord("0")) 23720 1070 49 ! ! ! ! ! ELSE result:= result*base+(ord(ch)-87(*ord("W")*)); 23730 1071 50 ! ! ! ! END; 23740 1072 51 ! ! ! END; 23750 1073 52 ! ! END (* while *); 23760 1074 53 ! ! 23770 1075 54 ! ! IF negative THEN result:= - result; 23780 1076 55 ! ! 23790 1077 56 ! END (* base= 10 *) 23800 1078 57 ! 23810 1079 58 ! ELSE 23820 1080 59 ! BEGIN (* base= 2, 8, or 16 *) 23830 1081 60 ! ! 23840 1082 61 ! ! CASE base OF 23850 1083 62 ! ! ! 2:BEGIN 23860 1084 63 ! ! ! ! IF ch="1" THEN negative:= true; 23870 1085 64 ! ! ! ! noofdigit:= 16; 23880 1086 65 ! ! ! END; 23890 1087 66 ! ! ! 23900 1088 67 ! ! ! 8: BEGIN 23910 1089 68 ! ! ! ! IF ch="1" THEN negative:= true; 23920 1090 69 ! ! ! ! noofdigit:= 6; \f alaoslst 81.06.18. 14.12. page 35 23930 1091 70 ! ! ! END; 23940 1092 71 ! ! ! 23950 1093 72 ! ! ! 16: BEGIN 23960 1094 73 ! ! ! ! IF ch>="8" THEN negative:= true; 23970 1095 74 ! ! ! ! noofdigit:= 4; 23980 1096 75 ! ! ! END; 23990 1097 76 ! ! END (*case*); 24000 1098 77 ! ! curdigit:= 1; 24010 1099 78 ! ! 24020 1100 79 ! ! WHILE digit AND (incharsleft>0) DO 24030 1101 80 ! ! BEGIN 24040 1102 81 ! ! ! ch:= readchar; 24050 1103 82 ! ! ! digit:= (ch IN digits) OR 24060 1104 83 ! ! ! ((base=16) AND (ch IN hexdigits)); 24070 1105 84 ! ! ! IF digit 24080 1106 85 ! ! ! THEN BEGIN 24090 1107 86 ! ! ! ! curdigit:= curdigit+1; 24100 1108 87 ! ! ! ! IF (curdigit=noofdigit) AND negative THEN 24110 1109 88 ! ! ! ! BEGIN 24120 1110 89 ! ! ! ! ! CASE base OF 24130 1111 90 ! ! ! ! ! ! 2: result:= result - 16384 (*2^14*); 24140 1112 91 ! ! ! ! ! ! 8: result:= result - 4096 (*2^12*); 24150 1113 92 ! ! ! ! ! ! 16:result:= result - 2048 (*2^11*); 24160 1114 93 ! ! ! ! ! END (*case*) 24170 1115 94 ! ! ! ! END; 24180 1116 95 ! ! ! ! IF ch IN digits THEN 24190 1117 96 ! ! ! ! result:= result*base + (ord(ch)-ord("0")) 24200 1118 97 ! ! ! ! ELSE 24210 1119 98 ! ! ! ! result:= result*base + (ord(ch)-87 (*ord("W")*)); 24220 1120 99 ! ! ! ! IF (curdigit=noofdigit) AND negative 24230 1121 100 ! ! ! ! THEN BEGIN 24240 1122 101 ! ! ! ! ! IF result=0 24250 1123 102 ! ! ! ! ! THEN result:= -32768 24260 1124 103 ! ! ! ! ! ELSE result:= -((32767-result)+1); 24270 1125 104 ! ! ! ! END; 24280 1126 105 ! ! ! END (*if digit*); 24290 1127 106 ! ! END (*while digit*); 24300 1128 107 ! END (* base= 2, 8, or 16 *); 24310 1129 108 ! IF incharsleft > 0 THEN 24320 1130 109 ! (* we read one char too many - spit it out *) 24330 1131 110 ! repeatchar; 24340 1132 111 ! 24350 1133 112 ! readinteger:=result; 24360 1134 113 END (* read integer *); 24370 1135 \f alaoslst 81.06.18. 14.12. page 36 25010 1136 PROCEDURE repeatchar; 25020 1137 BEGIN 25030 1138 1 ! LOCK opinref AS opbuf: opbuftype DO 25040 1139 2 ! opbuf.next:= opbuf.next - 1; 25050 1140 3 ! incharsleft:= incharsleft + 1; 25060 1141 4 END; 25070 1142 \f alaoslst 81.06.18. 14.12. page 37 26010 1143 FUNCTION testinterval (i,first,last: integer): boolean; 26020 1144 (* true if first<=i<=last *) 26030 1145 BEGIN 26040 1146 1 ! IF (i<first) OR (i>last) THEN 26050 1147 2 ! BEGIN 26060 1148 3 ! ! outstring10(illegalno); 26070 1149 4 ! ! outinteger(i,4); 26080 1150 5 ! ! writenl; 26090 1151 6 ! ! testinterval:= false 26100 1152 7 ! END 26110 1153 8 ! ELSE 26120 1154 9 ! testinterval:= true; 26130 1155 10 END; 26140 1156 \f alaoslst 81.06.18. 14.12. page 38 27010 1157 PROCEDURE testmodeout (text: alfa20; i: integer); 27020 1158 BEGIN 27030 1159 1 ! IF testmode THEN 27040 1160 2 ! BEGIN 27050 1161 3 ! ! outstring20 (text); 27060 1162 4 ! ! outinteger (i, 4); 27070 1163 5 ! ! writenl; 27080 1164 6 ! END; 27090 1165 7 END (* testout *); 27100 1166 \f alaoslst 81.06.18. 14.12. page 39 28010 1167 PROCEDURE testsem(i: integer; VAR t_sem : semaphore); 28020 1168 (* test the semaphore t_sem, and 28030 1169 writes its status on the console if it is 28040 1170 non-passive *) 28050 1171 VAR more: boolean; 28060 1172 BEGIN 28070 1173 1 ! 28080 1174 2 ! IF i>0 THEN 28090 1175 3 ! BEGIN 28100 1176 4 ! ! ap.a := sem(i).s; 28110 1177 5 ! ! bp.a := sem(i).w; 28120 1178 6 ! END 28130 1179 7 ! ELSE ap:=bp; 28140 1180 8 ! IF open(t_sem) THEN 28150 1181 9 ! BEGIN (* user semaphore no. i is open *) 28160 1182 10 ! ! IF ap=bp THEN 28170 1183 11 ! ! outchar(" ") ELSE outchar("^"); 28180 1184 12 ! ! outdecimal(i,3); 28190 1185 13 ! ! outchar(":"); 28200 1186 14 ! ! more:= true; 28210 1187 15 ! ! 28220 1188 16 ! ! (* now count the no. of buffers on this semaphore *) 28230 1189 17 ! ! j:=0; (* j is the counter *) 28240 1190 18 ! ! WHILE more DO 28250 1191 19 ! ! BEGIN 28260 1192 20 ! ! ! sensesem(countref, t_sem); 28270 1193 21 ! ! ! IF nil(countref) THEN 28280 1194 22 ! ! ! more:= false 28290 1195 23 ! ! ! ELSE 28300 1196 24 ! ! ! BEGIN 28310 1197 25 ! ! ! ! signal(countref,countsem); 28320 1198 26 ! ! ! ! j:=j+1; 28330 1199 27 ! ! ! END 28340 1200 28 ! ! END; 28350 1201 29 ! ! 28360 1202 30 ! ! outdecimal(j,3); 28370 1203 31 ! ! WHILE open(countsem) DO 28380 1204 32 ! ! BEGIN (* return the buffers to sem(i) *) 28390 1205 33 ! ! ! wait(countref,countsem); 28400 1206 34 ! ! ! signal(countref,t_sem); 28410 1207 35 ! ! END; 28420 1208 36 ! ! 28430 1209 37 ! ! writenl; 28440 1210 38 ! END (* open *) 28450 1211 39 ! ELSE 28460 1212 40 ! IF locked( t_sem) THEN \f alaoslst 81.06.18. 14.12. page 40 28470 1213 41 ! BEGIN (* user semaphore no. i is locked *) 28480 1214 42 ! ! IF ap=bp THEN 28490 1215 43 ! ! outchar(" ") ELSE outchar("^"); 28500 1216 44 ! ! outdecimal(i,3); 28510 1217 45 ! ! outchar(":"); 28520 1218 46 ! ! outstring10(" locked "); 28530 1219 47 ! ! writenl; 28540 1220 48 ! END; 28550 1221 49 END (* testsem *); 28560 1222 28570 1223 28580 1224 28590 1225 28600 1226 \f alaoslst 81.06.18. 14.12. page 41 29010 1227 PROCEDURE writenl; 29020 1228 (* prepares opbuf for output to the operator and signals 29030 1229 it to operator module *) 29040 1230 BEGIN 29050 1231 1 ! IF NOT nil(opoutref) THEN 29060 1232 2 ! BEGIN 29070 1233 3 ! ! outchar(nl); 29080 1234 4 ! ! signal(opoutref, opsem^) 29090 1235 5 ! END; 29100 1236 6 ! wait(opoutref, wsem); 29110 1237 7 ! LOCK opoutref AS opbuf: opbuftype DO 29120 1238 8 ! opbuf.last:= firstindex; 29130 1239 9 END (* writenl *); 29140 1240 29150 1241 \f alaoslst 81.06.18. 14.12. page 42 30010 1242 30020 1243 30030 1244 30040 1245 (**************************************** 30050 1246 * * 30060 1247 * m a i n p r o g r a m * 30070 1248 * * 30080 1249 ****************************************) 30090 1250 30100 1251 30110 1252 30120 1253 30130 1254 30140 1255 30150 1256 BEGIN 30160 1257 1 ! 30170 1258 2 ! opsem:= semvector(operatorsem); 30180 1259 3 ! spool_test_sem := ref( spool_sem); 30190 1260 4 ! testmode:= false; 30200 1261 5 ! testopen (z,own.incname,opsem); 30210 1262 6 ! testout(z,version,al_env_version); 30220 1263 7 ! 30230 1264 8 ! readram(node_no,10); 30240 1265 9 ! node_no := node_no MOD 16; 30250 1266 10 ! dte_addr.net_addr := 0; 30260 1267 11 ! dte_addr.reg_addr := 0; 30270 1268 12 ! dte_addr.node_addr := node_no; 30280 1269 13 ! dte_addr.ext_addr := 3; 30290 1270 14 ! 30300 1271 15 ! 30310 1272 16 ! testout(z,"ext-pax-addr", 30320 1273 17 ! paxnet_config( node_no,3)*1000 + paxnet_config( node_no,6)*100 + 30330 1274 18 ! paxnet_config( node_no,9)*10 + paxnet_config( node_no,14) ); 30340 1275 19 ! 30350 1276 20 ! (* initialise pointers *) 30360 1277 21 ! FOR i:=1 TO ts_sem_total DO 30370 1278 22 ! BEGIN 30380 1279 23 ! ! sem(i).s:= ref(ts_sem(i)); 30390 1280 24 ! ! sem(i).w:= sem(i).s; 30400 1281 25 ! END; 30410 1282 26 ! 30420 1283 27 ! (* initialize pointers to eva semaphores *) 30430 1284 28 ! sem(pax_sem_2).s:=ref(evavector(px_urec1)); 30440 1285 29 ! sem(pax_sem_2).w:=sem(pax_sem_2).s; 30450 1286 30 ! sem(pax_sem_1).s:=ref(evavector(px_utrm1)); 30460 1287 31 ! sem(pax_sem_1).w:=sem(pax_sem_1).s; \f alaoslst 81.06.18. 14.12. page 43 30470 1288 32 ! sem(pax_sem_3).s := ref(evavector(px_urec2)); 30480 1289 33 ! sem(pax_sem_3).w := sem(pax_sem_3).s; 30490 1290 34 ! sem(pax_sem_4).s := ref(evavector(px_utrm2)); 30500 1291 35 ! sem(pax_sem_4).w := sem(pax_sem_4).s; 30510 1292 36 ! sem(pax_ncp_sem).s:=ref(evavector(px_ncp)); 30520 1293 37 ! sem(pax_ncp_sem).w:=sem(pax_ncp_sem).s; 30530 1294 38 ! sem(lam_sem_no).s := ref( evavector(al_lam1)); 30540 1295 39 ! sem(lam_sem_no).w := sem( lam_sem_no).s; 30550 1296 40 ! 30560 1297 41 ! (* initialize local semaphores for netconnector *) 30570 1298 42 ! 30580 1299 43 ! netc_locals(1):=sem(tssup_sem_no).s; 30590 1300 44 ! netc_locals(2):=sem(nc_sem_no).s; 30600 1301 45 ! 30610 1302 46 ! (* initialise buffers *) 30620 1303 47 ! FOR i:= 1 TO 2 DO 30630 1304 48 ! BEGIN 30640 1305 49 ! ! alloc (opoutref, opbufpool, wsem); 30650 1306 50 ! ! opoutref^.u1:=2; (* write *) 30660 1307 51 ! ! LOCK opoutref AS opbuf: opbuftype DO 30670 1308 52 ! ! WITH opbuf DO 30680 1309 53 ! ! BEGIN 30690 1310 54 ! ! ! first:= firstindex; 30700 1311 55 ! ! ! name:= "alarm "; 30710 1312 56 ! ! ! data(firstindex):= "!"; 30720 1313 57 ! ! END; 30730 1314 58 ! ! return (opoutref); 30740 1315 59 ! END; 30750 1316 60 ! writenl; 30760 1317 61 ! 30770 1318 62 ! alloc(opinref, opbufpool, wrsem); 30780 1319 63 ! 30790 1320 64 ! opinref^.u1:=1; (* read *) 30800 1321 65 ! 30810 1322 66 ! LOCK opinref AS opbuf: opbuftype DO 30820 1323 67 ! WITH opbuf DO 30830 1324 68 ! BEGIN 30840 1325 69 ! ! first:= firstindex; 30850 1326 70 ! ! last:= lastindex; 30860 1327 71 ! ! name:= "alarm "; 30870 1328 72 ! END; 30880 1329 73 ! 30890 1330 74 ! (*------- allocate all listenbuffers ---*) 30900 1331 75 ! FOR i:= 1 TO no_listen DO 30910 1332 76 ! BEGIN 30920 1333 77 ! ! alloc(cur,messbufpool,sem(com_pool).s^); \f alaoslst 81.06.18. 14.12. page 44 30930 1334 78 ! ! return(cur); 30940 1335 79 ! END; 30950 1336 80 ! 30960 1337 81 ! (*------- allocate all paxnetbuffers ---*) 30970 1338 82 ! FOR i:=1 TO no_pax_bufs DO 30980 1339 83 ! BEGIN 30990 1340 84 ! ! alloc( cur, paxbufpool, sem(dte_sem_no).s^); 31000 1341 85 ! ! signal( cur, sem( pax_pool).s^); 31010 1342 86 ! END; 31020 1343 87 ! 31030 1344 88 ! st:= 1024; 31040 1345 89 ! base:= 10; 31050 1346 90 ! firstword:= 1; 31060 1347 91 ! lastword:= 10; 31070 1348 92 ! 31080 1349 93 ! setoflowmask(true); 31090 1350 94 ! command:= "c"; 31100 1351 95 ! noofparams:= 1; 31110 1352 96 ! CASE node_no OF 31120 1353 97 ! ! 1: params(1):= -3; 31130 1354 98 ! ! 2,3: params(1):= -2; 31140 1355 99 ! ! OTHERWISE 31150 1356 100 ! ! params(1):= -1; 31160 1357 101 ! END; 31170 1358 102 ! 31180 1359 103 ! REPEAT 31190 1360 104 ! ! (* read a line of input from the operator and execute it *) 31200 1361 105 ! ! IF first_loop THEN 31210 1362 106 ! ! first_loop:= false ELSE 31220 1363 107 ! ! 31230 1364 108 ! ! getinput; 31240 1365 109 ! ! 31250 1366 110 ! ! CASE command OF 31260 1367 111 ! ! ! 31270 1368 112 ! ! ! ";": (* comment command *) 31280 1369 113 ! ! ! BEGIN 31290 1370 114 ! ! ! END; 31300 1371 115 ! ! ! \f alaoslst 81.06.18. 14.12. page 45 32010 1372 116 ! ! ! "a": (* alloc *) 32020 1373 117 ! ! ! (* a buffer is allocated from the messbufpool to the current 32030 1374 118 ! ! ! reference "cur". 32040 1375 119 ! ! ! 1st param is the answersem *) 32050 1376 120 ! ! ! BEGIN 32060 1377 121 ! ! ! ! semno:= params(1); 32070 1378 122 ! ! ! ! 32080 1379 123 ! ! ! ! IF noofparams >= 1 THEN 32090 1380 124 ! ! ! ! IF nil(cur) THEN 32100 1381 125 ! ! ! ! IF ((semno>0) AND (semno <= noofsemaphores)) 32110 1382 126 ! ! ! ! OR ((semno<0) AND (semno >= -applsem_max)) THEN 32120 1383 127 ! ! ! ! BEGIN 32130 1384 128 ! ! ! ! ! IF semno > 0 THEN 32140 1385 129 ! ! ! ! ! alloc (cur, testbufpool, ts_sem(semno)) 32150 1386 130 ! ! ! ! ! ELSE 32160 1387 131 ! ! ! ! ! alloc (cur, testbufpool, evavector(-semno)); 32170 1388 132 ! ! ! ! ! WITH cur^ DO 32180 1389 133 ! ! ! ! ! BEGIN 32190 1390 134 ! ! ! ! ! ! u1:= 0; 32200 1391 135 ! ! ! ! ! ! u2:= 0; 32210 1392 136 ! ! ! ! ! ! u3:= 0; 32220 1393 137 ! ! ! ! ! ! u4:= 0; 32230 1394 138 ! ! ! ! ! END; 32240 1395 139 ! ! ! ! ! get_curbuftype; 32250 1396 140 ! ! ! ! ! outstring10(" bufsize "); 32260 1397 141 ! ! ! ! ! outinteger(curbufsize, 5); 32270 1398 142 ! ! ! ! ! outinteger(cur^.size, 5) 32280 1399 143 ! ! ! ! END 32290 1400 144 ! ! ! ! ELSE outstring10(illegalno) 32300 1401 145 ! ! ! ! ELSE outstring20("you already have one") 32310 1402 146 ! ! ! ! ELSE outstring10(noparam) 32320 1403 147 ! ! ! END (* alloc*); 32330 1404 148 ! ! ! \f alaoslst 81.06.18. 14.12. page 46 33010 1405 149 ! ! ! "b": (* base *) 33020 1406 150 ! ! ! (* defines the number base for input as well as output *) 33030 1407 151 ! ! ! (* the base is always read decimally *) 33040 1408 152 ! ! ! BEGIN 33050 1409 153 ! ! ! ! IF noofparams < 1 THEN 33060 1410 154 ! ! ! ! BEGIN 33070 1411 155 ! ! ! ! ! base:= oldbase; 33080 1412 156 ! ! ! ! ! outstring10(noparam) 33090 1413 157 ! ! ! ! END 33100 1414 158 ! ! ! ! ELSE 33110 1415 159 ! ! ! ! 33120 1416 160 ! ! ! ! IF NOT (params(1) IN (. 2, 8, 10, 16 .) ) THEN 33130 1417 161 ! ! ! ! BEGIN (* illegal base *) 33140 1418 162 ! ! ! ! ! outstring20("illegal base "); 33150 1419 163 ! ! ! ! ! base:= oldbase; 33160 1420 164 ! ! ! ! END 33170 1421 165 ! ! ! ! ELSE 33180 1422 166 ! ! ! ! base:= params(1); 33190 1423 167 ! ! ! END; 33200 1424 168 ! ! ! \f alaoslst 81.06.18. 14.12. page 47 34010 1425 169 ! ! ! "c": (* create *) 34020 1426 170 ! ! ! (* an incarnation of each of the predefined modules to be tested 34030 1427 171 ! ! ! is created and started. 34040 1428 172 ! ! ! params are nos. of the modules to be created and started *) 34050 1429 173 ! ! ! 34060 1430 174 ! ! ! IF noofparams >= 1 THEN 34070 1431 175 ! ! ! 34080 1432 176 ! ! ! BEGIN 34090 1433 177 ! ! ! ! moduleno:= params(1); 34100 1434 178 ! ! ! ! 34110 1435 179 ! ! ! ! IF noofparams>1 THEN st:= params(2); 34120 1436 180 ! ! ! ! CASE moduleno OF 34130 1437 181 ! ! ! ! ! -3 : (* FE config. *) 34140 1438 182 ! ! ! ! ! BEGIN 34150 1439 183 ! ! ! ! ! ! netc_locals(1):= sem(fesup_sem_no).s; 34160 1440 184 ! ! ! ! ! ! 34170 1441 185 ! ! ! ! ! ! init_modul ( 9); 34180 1442 186 ! ! ! ! ! ! init_modul (17); 34190 1443 187 ! ! ! ! ! ! init_modul (18); 34200 1444 188 ! ! ! ! ! ! init_modul (21); 34210 1445 189 ! ! ! ! ! ! init_modul (22); 34220 1446 190 ! ! ! ! ! ! init_modul (23); 34230 1447 191 ! ! ! ! ! ! init_modul (24); 34240 1448 192 ! ! ! ! ! ! init_modul (25); 34250 1449 193 ! ! ! ! ! ! init_modul (26); 34260 1450 194 ! ! ! ! ! END; 34270 1451 195 ! ! ! ! ! -2 : (* NC config. *) 34280 1452 196 ! ! ! ! ! BEGIN 34290 1453 197 ! ! ! ! ! ! netc_locals(1):= sem(nc_sem_no).s; 34300 1454 198 ! ! ! ! ! ! 34310 1455 199 ! ! ! ! ! ! init_modul( 4); 34320 1456 200 ! ! ! ! ! ! init_modul( 9); 34330 1457 201 ! ! ! ! ! ! init_modul(13); 34340 1458 202 ! ! ! ! ! ! init_modul(17); 34350 1459 203 ! ! ! ! ! ! init_modul(18); 34360 1460 204 ! ! ! ! ! ! init_modul(21); 34370 1461 205 ! ! ! ! ! END; 34380 1462 206 ! ! ! ! ! -1 : (* TS config. *) 34390 1463 207 ! ! ! ! ! BEGIN 34400 1464 208 ! ! ! ! ! ! netc_locals(1):= sem(tssup_sem_no).s; 34410 1465 209 ! ! ! ! ! ! 34420 1466 210 ! ! ! ! ! ! init_modul( 1); 34430 1467 211 ! ! ! ! ! ! init_modul( 8); 34440 1468 212 ! ! ! ! ! ! init_modul(17); 34450 1469 213 ! ! ! ! ! ! init_modul(18); 34460 1470 214 ! ! ! ! ! ! init_modul(21); \f alaoslst 81.06.18. 14.12. page 48 34470 1471 215 ! ! ! ! ! END; 34480 1472 216 ! ! ! ! ! 0 : (* FE=TS config. *) 34490 1473 217 ! ! ! ! ! BEGIN 34500 1474 218 ! ! ! ! ! ! netc_locals(1):= sem(fesup_sem_no).s; 34510 1475 219 ! ! ! ! ! ! netc_locals(2):= sem(tssup_sem_no).s; 34520 1476 220 ! ! ! ! ! ! 34530 1477 221 ! ! ! ! ! ! init_modul( 8); 34540 1478 222 ! ! ! ! ! ! init_modul( 1); 34550 1479 223 ! ! ! ! ! ! init_modul(17); 34560 1480 224 ! ! ! ! ! ! init_modul(18); 34570 1481 225 ! ! ! ! ! ! init_modul(21); 34580 1482 226 ! ! ! ! ! ! init_modul(22); 34590 1483 227 ! ! ! ! ! ! init_modul(23); 34600 1484 228 ! ! ! ! ! ! init_modul(24); 34610 1485 229 ! ! ! ! ! ! init_modul(25); 34620 1486 230 ! ! ! ! ! ! init_modul(26); 34630 1487 231 ! ! ! ! ! END; 34640 1488 232 ! ! ! ! ! OTHERWISE 34650 1489 233 ! ! ! ! ! 34660 1490 234 ! ! ! ! ! IF (moduleno<1) OR (moduleno > noofmodules) THEN 34670 1491 235 ! ! ! ! ! BEGIN (* illegal no *) 34680 1492 236 ! ! ! ! ! ! outdecimal(moduleno,4); 34690 1493 237 ! ! ! ! ! ! outstring10(illegalno); 34700 1494 238 ! ! ! ! ! END 34710 1495 239 ! ! ! ! ! ELSE 34720 1496 240 ! ! ! ! ! IF moduleready(moduleno) THEN init_modul(moduleno); 34730 1497 241 ! ! ! ! END (* case *) 34740 1498 242 ! ! ! END (* if noofparams >= 1 *) 34750 1499 243 ! ! ! ELSE outstring10 (noparam); 34760 1500 244 ! ! ! (* end create *) 34770 1501 245 ! ! ! "f": (* fill *) 34780 1502 246 ! ! ! (* fills integers into current buffer. 34790 1503 247 ! ! ! 1st param: first word no. to be filled, 34800 1504 248 ! ! ! following: values to be assigned *) 34810 1505 249 ! ! ! BEGIN 34820 1506 250 ! ! ! ! IF noofparams < 2 THEN 34830 1507 251 ! ! ! ! outstring10("param ") 34840 1508 252 ! ! ! ! ELSE 34850 1509 253 ! ! ! ! IF (params(1) < 1) THEN 34860 1510 254 ! ! ! ! outstring20("illegal start ") 34870 1511 255 ! ! ! ! ELSE 34880 1512 256 ! ! ! ! IF nil(cur) THEN 34890 1513 257 ! ! ! ! outstring10("no buffer ") 34900 1514 258 ! ! ! ! ELSE 34910 1515 259 ! ! ! ! BEGIN (* params are ok *) 34920 1516 260 ! ! ! ! ! i:= params(1); (* i points into the messbuf *) \f alaoslst 81.06.18. 14.12. page 49 34930 1517 261 ! ! ! ! ! 34940 1518 262 ! ! ! ! ! FOR j:= 2 TO noofparams DO 34950 1519 263 ! ! ! ! ! (* j points into the param list *) 34960 1520 264 ! ! ! ! ! IF i <= curbufsize THEN 34970 1521 265 ! ! ! ! ! BEGIN 34980 1522 266 ! ! ! ! ! ! CASE curbuftype OF 34990 1523 267 ! ! ! ! ! ! ! 1: LOCK cur AS minbuf: minbuftype DO 35000 1524 268 ! ! ! ! ! ! ! minbuf(i):= params(j); 35010 1525 269 ! ! ! ! ! ! ! 2: LOCK cur AS messbuf: messbuftype DO 35020 1526 270 ! ! ! ! ! ! ! messbuf(i):= params(j); 35030 1527 271 ! ! ! ! ! ! ! 3: LOCK cur AS maxbuf: maxbuftype DO 35040 1528 272 ! ! ! ! ! ! ! maxbuf(i):= params(j); 35050 1529 273 ! ! ! ! ! ! ! 4: LOCK cur AS testbuf: testbuftype DO 35060 1530 274 ! ! ! ! ! ! ! testbuf(i):= params(j); 35070 1531 275 ! ! ! ! ! ! ! OTHERWISE 35080 1532 276 ! ! ! ! ! ! END; 35090 1533 277 ! ! ! ! ! ! i:= i + 1; 35100 1534 278 ! ! ! ! ! END; 35110 1535 279 ! ! ! ! ! 35120 1536 280 ! ! ! ! END (* params ok *) 35130 1537 281 ! ! ! END (* fill *); 35140 1538 282 ! ! ! \f alaoslst 81.06.18. 14.12. page 50 36010 1539 283 ! ! ! "h": (* help *) 36020 1540 284 ! ! ! (* lists possible commands and no. of parameters *) 36030 1541 285 ! ! ! BEGIN 36040 1542 286 ! ! ! ! outstring20("comm and no of param"); writenl; 36050 1543 287 ! ! ! ! outstring20("a: allocate 1 "); writenl; 36060 1544 288 ! ! ! ! outstring20("b: base 1 "); writenl; 36070 1545 289 ! ! ! ! outstring20("c: create >=1 "); writenl; 36080 1546 290 ! ! ! ! outstring20("e: execute 1 "); writenl; 36090 1547 291 ! ! ! ! outstring20("f: fill 2 "); writenl; 36100 1548 292 ! ! ! ! outstring20("h: help 0 "); writenl; 36110 1549 293 ! ! ! ! outstring20("i: init point 0 "); writenl; 36120 1550 294 ! ! ! ! outstring20("k: kill >=1 "); writenl; 36130 1551 295 ! ! ! ! outstring20("o: output 0 to 2"); writenl; 36140 1552 296 ! ! ! ! outstring20("p: partial >=3 "); writenl; 36150 1553 297 ! ! ! ! outstring20("r: return 0 "); writenl; 36160 1554 298 ! ! ! ! outstring20("s: signal 1 "); writenl; 36170 1555 299 ! ! ! ! outstring20("t: test 0 or 1"); writenl; 36180 1556 300 ! ! ! ! outstring20("u: user param 1 to 4"); writenl; 36190 1557 301 ! ! ! ! outstring20("w: wait 1 "); writenl; 36200 1558 302 ! ! ! ! outstring20("x: exch point 2 "); writenl; 36210 1559 303 ! ! ! ! outstring20(";: comment "); 36220 1560 304 ! ! ! END; 36230 1561 305 ! ! ! \f alaoslst 81.06.18. 14.12. page 51 37010 1562 306 ! ! ! "i": (* initialise pointers *) 37020 1563 307 ! ! ! IF noofparams=0 THEN 37030 1564 308 ! ! ! FOR i:=1 TO noofsemaphores DO sem(i).w:= sem(i).s ELSE 37040 1565 309 ! ! ! IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN 37050 1566 310 ! ! ! sem(params(1)).w:= sem(params(1)).s ELSE 37060 1567 311 ! ! ! outstring10(valparam); 37070 1568 312 ! ! ! \f alaoslst 81.06.18. 14.12. page 52 38010 1569 313 ! ! ! "e", (* exception *) 38020 1570 314 ! ! ! (* call of exception routine in one or more incarnations *) 38030 1571 315 ! ! ! "k": (* kill *) 38040 1572 316 ! ! ! (* removes incarnation of tested module(s) 38050 1573 317 ! ! ! params are nos. of modules to be removed *) 38060 1574 318 ! ! ! 38070 1575 319 ! ! ! IF noofparams >= 1 THEN 38080 1576 320 ! ! ! FOR i:= 1 TO noofparams DO 38090 1577 321 ! ! ! BEGIN 38100 1578 322 ! ! ! ! moduleno:= params(i); 38110 1579 323 ! ! ! ! IF (1<=moduleno) AND (moduleno<=noofmodules) THEN 38120 1580 324 ! ! ! ! IF NOT nil(sh(moduleno)) THEN 38130 1581 325 ! ! ! ! IF command="e" THEN 38140 1582 326 ! ! ! ! break(sh(moduleno),#h2f) ELSE 38150 1583 327 ! ! ! ! remove (sh(moduleno)) 38160 1584 328 ! ! ! ! ELSE 38170 1585 329 ! ! ! ! BEGIN 38180 1586 330 ! ! ! ! ! outdecimal (moduleno, 4); 38190 1587 331 ! ! ! ! ! outstring10(" not alive"); 38200 1588 332 ! ! ! ! ! writenl; 38210 1589 333 ! ! ! ! END 38220 1590 334 ! ! ! ! ELSE 38230 1591 335 ! ! ! ! BEGIN 38240 1592 336 ! ! ! ! ! outdecimal (moduleno, 4); 38250 1593 337 ! ! ! ! ! outstring10(illegalno); 38260 1594 338 ! ! ! ! ! writenl; 38270 1595 339 ! ! ! ! END 38280 1596 340 ! ! ! END 38290 1597 341 ! ! ! ELSE outstring10("no params "); 38300 1598 342 ! ! ! \f alaoslst 81.06.18. 14.12. page 53 39010 1599 343 ! ! ! "m": (* testmode *) 39020 1600 344 ! ! ! testmode:= NOT testmode; 39030 1601 345 ! ! ! "o": (* output *) 39040 1602 346 ! ! ! (* outputs current buffer incl. user parameters 39050 1603 347 ! ! ! 1st param is firstword, 39060 1604 348 ! ! ! 2nd param is lastword *) 39070 1605 349 ! ! ! BEGIN 39080 1606 350 ! ! ! ! IF nil(cur) THEN 39090 1607 351 ! ! ! ! outstring10 ("no buffer ") 39100 1608 352 ! ! ! ! ELSE 39110 1609 353 ! ! ! ! BEGIN 39120 1610 354 ! ! ! ! ! outchar("u"); 39130 1611 355 ! ! ! ! ! outchar(":"); 39140 1612 356 ! ! ! ! ! 39150 1613 357 ! ! ! ! ! outinteger(cur^.u1,4); 39160 1614 358 ! ! ! ! ! outinteger(cur^.u2,4); 39170 1615 359 ! ! ! ! ! outinteger(cur^.u3,4); 39180 1616 360 ! ! ! ! ! outinteger(cur^.u4,4); 39190 1617 361 ! ! ! ! ! writenl; 39200 1618 362 ! ! ! ! ! 39210 1619 363 ! ! ! ! ! IF (noofparams>=1) AND (params(1)>=1) 39220 1620 364 ! ! ! ! ! AND (params(1)<= curbufsize) THEN 39230 1621 365 ! ! ! ! ! firstword:= params(1); 39240 1622 366 ! ! ! ! ! 39250 1623 367 ! ! ! ! ! IF (noofparams>=2) AND (params(2)<=curbufsize) THEN 39260 1624 368 ! ! ! ! ! lastword:= params(2); 39270 1625 369 ! ! ! ! ! IF lastword>curbufsize THEN 39280 1626 370 ! ! ! ! ! lastword:= curbufsize; 39290 1627 371 ! ! ! ! ! 39300 1628 372 ! ! ! ! ! IF cur^.size<curbufsize THEN 39310 1629 373 ! ! ! ! ! outstring20("too small buffer ") ELSE 39320 1630 374 ! ! ! ! ! FOR i:= firstword TO lastword DO 39330 1631 375 ! ! ! ! ! BEGIN 39340 1632 376 ! ! ! ! ! ! outdecimal(i,3); 39350 1633 377 ! ! ! ! ! ! outchar(":"); 39360 1634 378 ! ! ! ! ! ! CASE curbuftype OF 39370 1635 379 ! ! ! ! ! ! ! 1: LOCK cur AS minbuf: minbuftype DO 39380 1636 380 ! ! ! ! ! ! ! j:= minbuf(i); 39390 1637 381 ! ! ! ! ! ! ! 2: LOCK cur AS messbuf: messbuftype DO 39400 1638 382 ! ! ! ! ! ! ! j:= messbuf(i); 39410 1639 383 ! ! ! ! ! ! ! 3: LOCK cur AS maxbuf: maxbuftype DO 39420 1640 384 ! ! ! ! ! ! ! j:= maxbuf(i); 39430 1641 385 ! ! ! ! ! ! ! 4: LOCK cur AS testbuf: testbuftype DO 39440 1642 386 ! ! ! ! ! ! ! j:= testbuf(i); 39450 1643 387 ! ! ! ! ! ! ! OTHERWISE 39460 1644 388 ! ! ! ! ! ! ! j:= 0; \f alaoslst 81.06.18. 14.12. page 54 39470 1645 389 ! ! ! ! ! ! END; 39480 1646 390 ! ! ! ! ! ! IF base= 2 THEN 39490 1647 391 ! ! ! ! ! ! outinteger(j,17) 39500 1648 392 ! ! ! ! ! ! ELSE 39510 1649 393 ! ! ! ! ! ! outinteger(j,7); 39520 1650 394 ! ! ! ! ! ! writenl; 39530 1651 395 ! ! ! ! ! END; 39540 1652 396 ! ! ! ! END (* ok *); 39550 1653 397 ! ! ! END (* output *); 39560 1654 398 ! ! ! \f alaoslst 81.06.18. 14.12. page 55 40010 1655 399 ! ! ! "r": (* return *) 40020 1656 400 ! ! ! (* returns current buffer *) 40030 1657 401 ! ! ! IF nil(cur) 40040 1658 402 ! ! ! THEN outstring10("no buffer ") 40050 1659 403 ! ! ! ELSE return(cur); 40060 1660 404 ! ! ! \f alaoslst 81.06.18. 14.12. page 56 41010 1661 405 ! ! ! "s": (* signal *) 41020 1662 406 ! ! ! (* signals current buffer to one of the predefined semaphores. 41030 1663 407 ! ! ! 1st param is semno *) 41040 1664 408 ! ! ! BEGIN 41050 1665 409 ! ! ! ! semno:= params(1); 41060 1666 410 ! ! ! ! 41070 1667 411 ! ! ! ! IF noofparams >= 1 THEN 41080 1668 412 ! ! ! ! IF (1<=semno) AND (semno<=noofsemaphores) THEN 41090 1669 413 ! ! ! ! IF NOT nil(cur) THEN 41100 1670 414 ! ! ! ! signal (cur,ts_sem(semno)) 41110 1671 415 ! ! ! ! ELSE outstring10("no buffer ") 41120 1672 416 ! ! ! ! ELSE 41130 1673 417 ! ! ! ! IF (semno <= -1) AND (semno >= -applsem_max) THEN 41140 1674 418 ! ! ! ! signal( cur, evavector( -semno)) 41150 1675 419 ! ! ! ! ELSE outstring10(illegalno) 41160 1676 420 ! ! ! ! ELSE outstring10(noparam) 41170 1677 421 ! ! ! END (* signal *); 41180 1678 422 ! ! ! \f alaoslst 81.06.18. 14.12. page 57 42010 1679 423 ! ! ! "t": (* testsem *) 42020 1680 424 ! ! ! (* tests the status of the specified semaphores. 42030 1681 425 ! ! ! if none is specified, the status of all the 42040 1682 426 ! ! ! user semaphores is given. 42050 1683 427 ! ! ! in both cases nothing will be written for a semaphore 42060 1684 428 ! ! ! if it is passive. *) 42070 1685 429 ! ! ! BEGIN 42080 1686 430 ! ! ! ! IF noofparams=0 THEN 42090 1687 431 ! ! ! ! BEGIN (* test all semaphores *) 42100 1688 432 ! ! ! ! ! 42110 1689 433 ! ! ! ! ! FOR i:= -applsem_max TO -1 DO 42120 1690 434 ! ! ! ! ! testsem( i,evavector(-i)); 42130 1691 435 ! ! ! ! ! 42140 1692 436 ! ! ! ! ! FOR i:=1 TO noofsemaphores DO 42150 1693 437 ! ! ! ! ! testsem(i,ts_sem(i)) 42160 1694 438 ! ! ! ! END (* test all *) 42170 1695 439 ! ! ! ! ELSE 42180 1696 440 ! ! ! ! BEGIN (* test the specified semaphores *) 42190 1697 441 ! ! ! ! ! 42200 1698 442 ! ! ! ! ! FOR i:=1 TO noofparams DO 42210 1699 443 ! ! ! ! ! IF (params(i)=0) OR (params(i)>noofsemaphores) 42220 1700 444 ! ! ! ! ! OR (params(i) < -applsem_max) THEN 42230 1701 445 ! ! ! ! ! BEGIN (* illegal no. *) 42240 1702 446 ! ! ! ! ! ! outstring20("illegal no.: "); 42250 1703 447 ! ! ! ! ! ! outdecimal(params(i),3); 42260 1704 448 ! ! ! ! ! ! writenl; 42270 1705 449 ! ! ! ! ! END (* illegal no *) 42280 1706 450 ! ! ! ! ! ELSE 42290 1707 451 ! ! ! ! ! BEGIN 42300 1708 452 ! ! ! ! ! ! IF params(i)>0 THEN 42310 1709 453 ! ! ! ! ! ! testsem( params(i), ts_sem(params(i))) 42320 1710 454 ! ! ! ! ! ! ELSE 42330 1711 455 ! ! ! ! ! ! testsem( params(i), evavector(-params(i))); 42340 1712 456 ! ! ! ! ! END 42350 1713 457 ! ! ! ! END (* test the specified semaphores *) 42360 1714 458 ! ! ! END (* testsem *); 42370 1715 459 ! ! ! 42380 1716 460 ! ! ! \f alaoslst 81.06.18. 14.12. page 58 43010 1717 461 ! ! ! "u": (* user parameters *) 43020 1718 462 ! ! ! (* inserts user param into header of current buffer 43030 1719 463 ! ! ! 1st param is u1 43040 1720 464 ! ! ! 2nd param is u2 43050 1721 465 ! ! ! 3rd param is u3 43060 1722 466 ! ! ! 4th param is u4 *) 43070 1723 467 ! ! ! BEGIN 43080 1724 468 ! ! ! ! IF nil(cur) 43090 1725 469 ! ! ! ! THEN outstring10("no buffer ") 43100 1726 470 ! ! ! ! ELSE 43110 1727 471 ! ! ! ! IF noofparams = 0 THEN 43120 1728 472 ! ! ! ! outstring10(noparam) 43130 1729 473 ! ! ! ! ELSE 43140 1730 474 ! ! ! ! WITH cur^ DO 43150 1731 475 ! ! ! ! BEGIN 43160 1732 476 ! ! ! ! ! IF testinterval (params(1),0,255) THEN u1:= params(1); 43170 1733 477 ! ! ! ! ! IF (noofparams>=2) THEN IF testinterval(params(2),0,255) THEN 43180 1734 478 ! ! ! ! ! u2:= params(2); 43190 1735 479 ! ! ! ! ! IF (noofparams>=3) THEN IF testinterval(params(3),0,255) THEN 43200 1736 480 ! ! ! ! ! u3:= params(3); 43210 1737 481 ! ! ! ! ! IF (noofparams>=4) THEN IF testinterval(params(4),0,255) THEN 43220 1738 482 ! ! ! ! ! u4:= params(4); 43230 1739 483 ! ! ! ! END 43240 1740 484 ! ! ! END; (* end user parameters *) 43250 1741 485 ! ! ! 43260 1742 486 ! ! ! \f alaoslst 81.06.18. 14.12. page 59 44010 1743 487 ! ! ! "w": (* wait *) 44020 1744 488 ! ! ! (* waits for semaphore semno. 44030 1745 489 ! ! ! 1st param is semno *) 44040 1746 490 ! ! ! BEGIN 44050 1747 491 ! ! ! ! semno:= params(1); 44060 1748 492 ! ! ! ! 44070 1749 493 ! ! ! ! IF noofparams >= 1 THEN 44080 1750 494 ! ! ! ! IF nil(cur) THEN 44090 1751 495 ! ! ! ! IF ((semno>0) AND (semno <= noofsemaphores)) 44100 1752 496 ! ! ! ! OR ((semno<0) AND (semno >= -applsem_max)) THEN 44110 1753 497 ! ! ! ! BEGIN 44120 1754 498 ! ! ! ! ! IF semno > 0 THEN 44130 1755 499 ! ! ! ! ! sensesem( cur, ts_sem(semno)) 44140 1756 500 ! ! ! ! ! ELSE 44150 1757 501 ! ! ! ! ! sensesem( cur, evavector(-semno)); 44160 1758 502 ! ! ! ! ! IF nil(cur) THEN 44170 1759 503 ! ! ! ! ! outstring20("semaphore not open ") 44180 1760 504 ! ! ! ! ! ELSE 44190 1761 505 ! ! ! ! ! BEGIN 44200 1762 506 ! ! ! ! ! ! get_curbuftype; 44210 1763 507 ! ! ! ! ! ! outstring10(" bufsize "); 44220 1764 508 ! ! ! ! ! ! outinteger(curbufsize, 5); 44230 1765 509 ! ! ! ! ! ! outinteger(cur^.size, 5) 44240 1766 510 ! ! ! ! ! END; 44250 1767 511 ! ! ! ! END 44260 1768 512 ! ! ! ! ELSE outstring10(illegalno) 44270 1769 513 ! ! ! ! ELSE outstring20("you already have one") 44280 1770 514 ! ! ! ! ELSE outstring10(noparam) 44290 1771 515 ! ! ! END (* wait *); 44300 1772 516 ! ! ! \f alaoslst 81.06.18. 14.12. page 60 45010 1773 517 ! ! ! "x": (* exchange pointer *) 45020 1774 518 ! ! ! BEGIN 45030 1775 519 ! ! ! ! IF noofparams >= 2 THEN 45040 1776 520 ! ! ! ! IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN 45050 1777 521 ! ! ! ! IF (params(2)>0) AND (params(2)<=noofsemaphores) THEN 45060 1778 522 ! ! ! ! BEGIN 45070 1779 523 ! ! ! ! ! worksem:= sem(params(1)).w; 45080 1780 524 ! ! ! ! ! sem(params(1)).w:= sem(params(2)).w; 45090 1781 525 ! ! ! ! ! sem(params(2)).w:= worksem; 45100 1782 526 ! ! ! ! END 45110 1783 527 ! ! ! ! ELSE outstring10(valparam) 45120 1784 528 ! ! ! ! ELSE outstring10(valparam) 45130 1785 529 ! ! ! ! ELSE outstring10(noparam) 45140 1786 530 ! ! ! END (* exchange pointer *); 45150 1787 531 ! ! ! 45160 1788 532 ! ! ! 45170 1789 533 ! ! ! OTHERWISE (* error *) 45180 1790 534 ! ! ! outstring20 ("illegal comm. type h"); 45190 1791 535 ! ! END (* case *); 45200 1792 536 ! ! 45210 1793 537 ! ! IF command<>";" THEN 45220 1794 538 ! ! writenl; 45230 1795 539 ! ! 45240 1796 540 ! UNTIL false; 45250 1797 541 ! 45260 1798 542 END. 45270 1799 45280 1800 45290 1801 \f alaoslst 81.06.18. 14.12. page 61 0 39* 52* 81* 163* 163* 164* 171* 171* 171* 426 431 453 454 460 469 479: 479 491 517 519 568 658 668 702 706 711 800* 823 832 842 848 855 867 878 879 879 906 909 914 924 929 930 1029 1035 1037 1053 1100 1122 1129 1174 1189 1266 1267 1381 1382 1384 1390 1391 1392 1393 1472: 1563 1565 1644 1686 1699 1708 1727 1732 1733 1735 1737 1751 1752 1754 1776 1777 1 40* 51* 71* 72* 73* 74* 81* 84* 85* 108* 159* 160* 163* 164* 164* 165* 165* 165* 411 441 452 461 471 480: 532 535 544 610: 628 634 654 733 738 777 801* 814 817 831 832 837 842 850 862 864 867 871 872 886 901 905 927 931 933 939 943 958 966 975 991 993 1098 1107 1124 1139 1140 1198 1277 1299 1303 1320 1331 1338 1346 1351 1353: 1353 1354 1356 1356 1377 1379 1409 1416 1422 1430 1433 1435 1439 1453 1462: 1464 1466 1474 1478 1490 1509 1509 1516 1523: 1533 1564 1565 1565 1566 1566 1575 1576 1579 1619 1619 1619 1620 1621 1635: 1665 1667 1668 1673 1689 1692 1698 1732 1732 1747 1749 1776 1776 1779 1780 2 412 430 442 454 473 481: 565 614: 636 676 727 732 737 852 853 855 856 864 865 867 868 874 875 878 879 885: 911 1083: 1111: 1300 1303 1306 1354: 1354 1416 1435 1451: 1475 1506 1518 1525: 1623 1623 1624 1637: 1646 1733 1733 1734 1775 1777 1777 1780 1781 3 94* 171* 413 428 475 482: 618: 676 678 722 727 727 744 891 904 1184 1202 1216 1269 1273 1353 1354: 1437: 1527: 1632 1639: 1703 1735 1735 1736 4 476 483: 622: 750 763 896 897 1095 1149 1162 1455 1492 1529: 1586 1592 1613 1614 1615 1616 1641: 1737 1737 1738 5 574 626: 653 1397 1398 1764 1765 6 50* 452 632: 732 892 1090 1273 7 456 630 638: 727 737 1649 8 647: 890: 903 1088: 1112: 1416 1467 1477 9 429 651: 921 1274 1441 1456 10 84* 459 525 655: 743 788 819 958 1038 1051 1264 1274 1345 1347 1416 11 659: 743 12 96* 665: 966 13 669: 1457 14 459 461 674: 1274 15 680: 800* 850 862 872 909 16 36* 887 895: 1034 1058 1085 1093: 1104 1113: 1265 1416 17 684: 1442 1458 1468 1479 1647 18 692: 1443 1459 1469 1480 19 699: 20 85* 703: 797* 975 21 708: 1444 1460 1470 1481 22 712: 1445 1482 23 719: 1446 1483 24 724: 1447 1484 25 730: 1448 1485 \f alaoslst 81.06.18. 14.12. page 62 26 735: 1449 1486 27 37* 740: 40 624 50 159* 542 63 636 64 33* 678 80 31* 49* 87 1047 1070 1119 100 571 1273 120 34* 35* 255 1732 1733 1735 1737 256 430 257 630 512 658 668 702 706 711 733 738 744 1000 1273 1024 1344 2048 1113 3276 1061 4096 1112 16384 1111 32767 1124 32768 1063 1123 a 89* 438* 440 441 442 443 450* 453= 456= 460= 462 463 1176= 1177= abs 829 activ 246* alarm_opsys 4* alfa 66* 386* 554* 962* alfa10 84* 383* 952* alfa20 85* 389* 401* 970* 1157* alfalength 50* alloc 1305 1318 1333 1340 1385 1387 alreadyexists <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 44* 563 764 al_env_version <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1262 al_lam1 1294 ap 169* 1176 1179= 1182 1214 applsem_max 1382 1673 1689 1700 1752 appl_vector 5* as 494: 500: 774: 987: 1138: 1237: 1307: 1322: 1523: 1525: 1527: 1529: 1635: 1637: 1639: 1641: atbuffer 81* atconnector 236* 628 atcsem 239* \f alaoslst 81.06.18. 14.12. page 63 atc_pri 631 atc_sem_no 628 628 atc_size 631 athsem 242* ath_pri 617 ath_sem_no 629 ath_size 617 at_handler 214* 616 base 132* 524 525= 538= 548= 787 788= 790= 819 829 830 884 903 1034 1038 1051 1058 1069 1070 1082 1104 1110 1117 1119 1345= 1411= 1419= 1422= 1646 bit 800* bits 800* 852= 855= 864= 867= 874 875= 875 878 879= 879 911 block 188* boolean 153* 155* 189* 366* 515* 756* 811* 1013* 1143* 1171* bp 169* 1177 1179 1182 1214 break 1582 byte 78* 81* 170* 200* 207* 253* 270* 337* 369* 418* ch 771* 778 1018* 1024= 1031 1032= 1033 1034 1045 1046 1047 1055= 1057 1058 1061 1068 1069 1070 1084 1089 1094 1102= 1103 1104 1116 1117 1119 channelno 253* 270* char 67* 84* 85* 128* 392* 771* 801* 982* 1018* chr 829 922 923 command 128* 506= 508 521 536 1350= 1366 1581 1793 com_pool 177* 629 636 643 662 678 688 716 1333 com_pool_sem 344* com_sem 244* 265* 281* connector_state <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 166* 246* conn_state 166* 630 controlinfo 78* countref 112* 1192 1193 1197 1205 1206 countsem 102* 1197 1203 1205 create 567 createchtype 76* createerror 47* 572 cur 115* 468 470 472 474 1333 1334 1340 1341 1380 1385 1387 1388 1398 1512 1523: 1525: 1527: 1529: 1606 1613 1614 1615 1616 1628 1635: 1637: 1639: 1641: 1657 1659 1669 1670 1674 1724 1730 1750 1755 1757 1758 1765 curbufsize 145* 479= 480= 481= 482= 483= 1397 1520 1620 1623 1625 1626 1628 1764 curbuftype 146* 469= 471= 473= 475= 476= 478 1522 1634 curdigit 802* 901= 916 917 922 923 927 931= 931 1015* 1098= 1107= 1107 1108 1120 curpos 803* 904= 905= 912 930= 933= 933 data 67* 778= 990 1312= dcaddr 267* \f alaoslst 81.06.18. 14.12. page 64 dcmodule 301* 661 dcsem 277* dc_addr 163* 217* 225* 250* 440= 616 620 630 636 678 dc_int1 663 dc_int2 663 dc_int3 663 dc_sem_no 641 663 dc_sim_pri 664 dc_sim_size 664 delay 248* digit 1013* 1025= 1033= 1035 1043 1053 1057= 1059 1100 1103= 1105 digits 801* 817= 829= 836= 842= 917= 922= 923= 945 1008* 1033 1045 1057 1068 1103 1116 doesntexist 45* done 317* driversem 243* dst 428= dtesimulator 323* 694 dte_addr 171* 332* 697 1266 1267 1268 1269 dte_pax_addr 407* 414= 427 428 dte_sem 327* 346* dte_sem_no 645 689 694 1340 evavector 5* 1284 1286 1288 1290 1292 1294 1387 1674 1690 1711 1757 external 178* 184* 191* 201* 208* 212* 220* 228* 234* 254* 271* 288* 294* 299* 305* 310* 321* 334* 348* 353* 358* 363* 367* 370* ext_addr 413= 1269= ext_pax_addr 447* 450* facility 429= false 529 539 737 765 926 1022 1025 1040 1064 1151 1194 1260 1362 1796 fesupervisor 174* 714 fesup_pri 717 fesup_que_down <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 715 fesup_que_up 715 fesup_sem_no 715 1439 1474 fesup_size 717 fesup_write 715 first 63* 503 1143* 1146 1310= 1325= firstindex 50* 51* 67* 495 504 1238 1310 1312 1325 firstword 133* 1346= 1621= 1630 first_loop 153* 1361 1362= format 423= format_1_packet_header <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 419* \f alaoslst 81.06.18. 14.12. page 65 fpadriver 186* 732 737 free 316* getinput 487* 1364 getparams 374* 510 513* get_curbuftype <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 466* 1395 1762 global_timeout <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 337* glob_timeout 686 h 804* 909= 911 h2f 1582 hexdigits 1009* 1034 1058 1104 i 134* 401* 407* 410 411 412 413 418* 427 428 449* 452= 453 454= 456 456 457 459= 460 461= 462 804* 817= 817 821= 829 831= 831 832 836 837= 837 840 850= 852 862= 864 872= 874 875 875 943= 945 956* 958= 959 964* 966= 967 973* 975= 976 1143* 1146 1146 1149 1157* 1162 1167* 1174 1176 1177 1184 1216 1277= 1279 1279 1280 1280 1303= 1331= 1338= 1516= 1520 1524 1526 1528 1530 1533= 1533 1564= 1564 1564 1576= 1578 1630= 1632 1636 1638 1640 1642 1689= 1690 1690 1692= 1693 1693 1698= 1699 1699 1700 1703 1708 1709 1709 1711 1711 illegalno 46* 751 1148 1400 1493 1593 1675 1768 incharsleft 135* 503= 993= 993 1029 1035 1053 1100 1129 1140= 1140 incname 1261 inc_name 554* 567 573 index 369* 552* 562 567 569 581* 609 611 615 619 623 627 630 633 639 648 652 656 660 666 670 675 681 685 693 700 704 709 713 720 725 731 736 741 750 init_modul 581* 1441 1442 1443 1444 1445 1446 1447 1448 1449 1455 1456 1457 1458 1459 1460 1466 1467 1468 1469 1470 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1496 init_proc 551* 611 615 619 623 627 633 639 648 652 656 660 666 670 675 681 685 693 700 704 709 713 720 725 731 736 741 inputsem 180* 195* 283* 293* input_sem 176* insem 361* int 377* 380* 782* 789 793* 823 829 830= 830 832 842 848 852 853= 853 855 856= 856 864 865= 865 867 868= 868 integer 65* 71* 72* 73* 74* 148* 159* 181* 188* 233* 248* 252* 269* 292* 369* 377* 380* 395* 401* 407* 418* 436* 447* 449* 552* 557* 560* 581* 756* 782* 793* 809* 956* 964* 973* 999* 1016* 1143* 1157* 1167* int_pax_addr 171* 171* 332* 407* 408* in_sem 204* j 136* 1189= 1198= 1198 1202 1518= 1524 1526 1528 1530 1636= 1638= 1640= 1642= 1644= 1647 1649 \f alaoslst 81.06.18. 14.12. page 66 k 137* lam 290* 653 lamsem 196* 263* 279* lam_sem_no 629 642 653 661 727 1294 1295 1295 lam_size 654 last 64* 777= 777 778 1143* 1146 1238= 1326= lastchar 1018* 1023= 1031= 1039 lastindex 51* 67* 1326 lastword 138* 1347= 1624= 1625 1626= 1630 leftbyte 139* level 188* 292* linelength 49* 51* link 566 local_sem_table <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 342* lock 494: 500: 774: 987: 1138: 1237: 1307: 1322: 1523: 1525: 1527: 1529: 1635: 1637: 1639: 1641: locked 1212 m 805* 871= 874 875 876= 878 879 880= macroaddr 163* 163* 164* 164* 165* 165* 218* 226* 251* 268* 436* 438* main 315* main_sem 341* make_phead 417* max 233* maxbuf 1527: 1528= 1639: 1640 maxbufsize 35* 74* 472 482 maxbuftype 74* 1527 1639 maxpos 797* 801* 817 821 840 901 916 927 939 943 943 messbuf 1525: 1526= 1637: 1638 messbufpool 97* 1333 messbufsize 33* 71* 470 481 messbuftype 71* 97* 1525 1637 messem 259* micaddr 269* minbuf 1523: 1524= 1635: 1636 minbufsize 36* 73* 468 480 minbuftype 73* 1523 1635 min_rut_mess 59* mirror 202* 742 mirror_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 742 moduleno 140* 756* 760 763 1433= 1436 1490 1490 1492 1496 1496 1578= 1579 1579 1580 1582 1583 1586 1592 moduleready 756* 760= 765= 1496 \f alaoslst 81.06.18. 14.12. page 67 more 1171* 1186= 1190 1194= n1 583* 611 611 n10 592* 656 656 666 n11 593* 660 660 n13 594* 670 670 n14 595* 675 675 n15 596* 681 681 n16 597* n17 598* 685 685 n18 599* 693 693 n19 600* 700 700 n2 584* 615 615 n20 601* 704 704 n21 602* 709 709 n22 603* 713 713 n23 604* 720 720 n24 605* 725 725 n25 606* 731 736 n27 607* 741 741 n3 585* 619 619 n4 586* 623 623 n5 587* 627 627 n6 588* 633 633 n7 589* 639 639 n8 590* 648 648 n9 591* 652 652 name 66* 553* 566 1311= 1327= ncsem 278* ncsup 312* 671 ncsup_int1 671 ncsup_int2 671 nc_addr 164* 441= nc_sem_no 642 671 1300 1453 nc_sup_size 673 negative 811* 823= 834 1013* 1039= 1040= 1061 1064= 1075 1084= 1089= 1094= 1108 1120 netconnector 336* 686 netc_locals 158* 687 1299= 1300= 1439= 1453= 1464= 1474= 1475= netc_loc_sems <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 158* 342* netc_pri 690 698 netc_sem 177* 329* netc_sem_no 643 661 672 687 695 716 netc_size 690 698 net_addr 410= 1266= \f alaoslst 81.06.18. 14.12. page 68 net_sem 319* newbase 515* 526= 529= 539= 546 newm 805* 874= 876 878= 880 next 65* 495= 503 504= 990 991= 991 1139= 1139 nl 1233 node_addr 412= 1268= node_no 170* 1264 1265= 1265 1268 1273 1273 1274 1274 1352 noofdig 806* 887= 892= 897= 901 noofdigit 1015* 1085= 1090= 1095= 1108 1120 noofmodules 37* 160* 1490 1579 noofparams 141* 519= 532= 532 533 534 535 542 544= 544 565 1351= 1379 1409 1430 1435 1506 1518 1563 1575 1576 1619 1623 1667 1686 1698 1727 1733 1735 1737 1749 1775 noofpos 807* 886= 891= 896= 912 noofsemaphores <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 38* 1381 1564 1565 1668 1692 1699 1751 1776 1777 noparam 43* 1402 1412 1499 1676 1728 1770 1785 no_listen 97* 1331 no_pax_bufs 59* 1338 nref 111* nul 1023 1024 oflow 366* ok 52* 498 560* 567= 568 571= 571 574 okl 559* 566= 571 576= oldbase 142* 524= 538 548 787= 790 1411 1419 op 175* 182* 190* 210* 215* 223* opbuf 494: 495 500: 501 774: 775 987: 988 1138: 1139 1139 1237: 1238 1307: 1308 1322: 1323 opbufpool 94* 1305 1318 opbufsize 31* opbuftype 61* 94* 494 500 774 987 1138 1237 1307 1322 open 1180 1203 operatorsem 1258 opinref 113* 494: 496 497 498 500: 987: 1138: 1318 1320 1322: opoutref 114* 774: 1231 1234 1236 1237: 1305 1306 1307: 1314 opsem 120* 231* 237* 257* 274* 291* 297* 302* 308* 313* 362* 496 612 616 620 624 628 634 640 649 653 657 661 667 671 676 682 701 705 710 714 722 726 732 737 742 1234 1258= 1261 op_code 418* 430 op_sem 194* 203* 351* 356* ord 508 829 922 923 1046 1046 1047 1069 1069 1070 1117 1117 1119 org 427= osif 193* 726 osif_pri 728 \f alaoslst 81.06.18. 14.12. page 69 osif_sem_no 726 osif_size 728 outchar 771* 937 945 959 967 976 1183 1183 1185 1215 1215 1217 1233 1610 1611 1633 outdecimal 377* 574 750 763 782* 1184 1202 1216 1492 1586 1592 1632 1703 outinteger 380* 789 793* 1149 1162 1397 1398 1613 1614 1615 1616 1647 1649 1764 1765 outstring10 383* 751 952* 1148 1218 1396 1400 1402 1412 1493 1499 1507 1513 1567 1587 1593 1597 1607 1658 1671 1675 1676 1725 1728 1763 1768 1770 1783 1784 1785 outstring12 386* 573 962* outstring20 389* 563 572 764 970* 1161 1401 1418 1510 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1629 1702 1759 1769 1790 own 1261 ownaddr 252* p 419* 421 555* 566 567 576 packet_type 425= packextnode 446* 463= packmacro 435* 443= par 436* 440 441 442 447* 456 457 params 159* 410 411 412 413 429 430 440 441 442 456 457 533= 534 1353= 1354= 1356= 1377 1416 1422 1433 1435 1509 1516 1524 1526 1528 1530 1565 1565 1566 1566 1578 1619 1620 1621 1623 1624 1665 1699 1699 1700 1703 1708 1709 1709 1711 1711 1732 1732 1733 1734 1735 1736 1737 1738 1747 1776 1776 1777 1777 1779 1780 1780 1781 paxbufpool 98* 1340 paxnet_config <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1273 1273 1274 1274 paxpooltype 59* 98* pax_adr 408* 410 411 412 413 414 pax_ncp_sem 645 1292 1293 1293 pax_pool 687 694 1341 pax_pool_sem 326* 340* pax_sem_1 644 696 1286 1287 1287 pax_sem_2 644 696 1284 1285 1285 pax_sem_3 1288 1289 1289 pax_sem_4 1290 1291 1291 point_rec 88* 169* pool 59* 94* 96* 97* port 200* positions 377* 380* 782* 789 793* 937 939 940 941= 943 pr 40* prio 557* 569 priority 424= process 4* 174* 179* 186* 193* 202* 209* 214* 222* 230* 236* 256* 273* 290* 296* 301* 307* 312* 323* 336* 350* 355* 360* \f alaoslst 81.06.18. 14.12. page 70 processrec 555* processref 566 576 pu 39* 292* 653 px_ncp 1292 px_urec1 1284 px_urec2 1288 px_utrm1 1286 px_utrm2 1290 quesem 240* 260* que_down 176* que_up 176* readchar 392* 506 982* 990= 1032 1055 1102 readinteger 395* 533 999* 1133= readok 151* 542 1022= 1048= readram 369* 1264 rec 189* 206* receiver 180* ref 1259 1279 1284 1286 1288 1290 1292 1294 reference 116* reg_addr 411= 1267= remove 1583 repeatchar 398* 1131 1136* res 808* 906= 911= 911 914 921 922 923 924 929= result 369* 1016* 1037= 1046= 1047= 1061 1063= 1069= 1069 1070= 1070 1075= 1075 1111= 1111 1112= 1112 1113= 1113 1117= 1117 1119= 1119 1122 1123= 1124= 1124 1133 retrans_max 181* return 1314 1334 1659 rightbyte 143* rut_format_1 423 rut_pack_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 425 rut_prio_0 424 rut_rec_sem 331* rut_trm_sem 330* s 629 629 635 635 635 640 641 642 642 642 661 661 662 672 672 677 677 677 689 689 695 696 696 716 716 726 727 743 1176 1279= 1280 1284= 1285 1286= 1287 1288= 1289 1290= 1291 1292= 1293 1294= 1295 1299 1300 1333 1340 1341 1439 1453 1464 1474 1475 1564 1566 sem 122* 187* 298* 352* 357* 612 616 620 624 628 628 629 629 629 634 634 635 635 635 636 640 641 642 642 642 643 643 644 644 645 645 649 653 657 661 661 662 662 663 663 663 663 667 671 671 671 672 672 676 676 677 677 677 678 682 687 687 688 689 689 694 694 695 696 696 701 705 715 715 715 715 716 716 716 721 721 722 726 726 727 732 737 742 743 1176 1177 1279 1280 1280 1284 1285 1285 1286 1287 1287 1288 1289 1289 1290 1291 1291 1292 1293 1293 1294 1295 1295 1299 1300 1333 1340 1341 1439 1453 1464 1474 1475 1564 1564 1566 \f alaoslst 81.06.18. 14.12. page 71 1566 1779 1780 1780 1781 sem1 303* sem2 303* sem3 303* sem4 303* sem5 304* sem6 304* sem7 304* sem8 304* semaphore 107* 108* 1167* semint1 284* semint2 285* semint3 286* semint4 287* semno 144* 1377= 1381 1381 1382 1382 1384 1385 1387 1665= 1668 1668 1670 1673 1673 1674 1747= 1751 1751 1752 1752 1754 1755 1757 sempointer 89* 119* 120* 121* 175* 177* 182* 190* 194* 196* 203* 205* 210* 215* 223* 231* 237* 244* 257* 265* 274* 281* 291* 297* 302* 303* 308* 313* 320* 324* 331* 338* 346* 351* 356* 362* semvector 4* 1258 sensesem 1192 1755 1757 setoflowmask 366* 1349 sh 160* 562 567 569 760 1580 1582 1583 shadow 160* signal 496 1197 1206 1234 1341 1670 1674 signs 1010* size 468 470 472 474 556* 565 1398 1628 1765 sp 817 937 spool_sem 101* 1259 spool_test_sem <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 119* 686 694 710 1259= st 147* 565= 567 1344= 1435= start 569 state 426= stop_code 166* streambufs 198* streamer 179* 721 streamno 197* streamsem 196* stream_pri 722 stream_rec 722 732 stream_sem 177* stream_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 716 721 726 743 \f alaoslst 81.06.18. 14.12. page 72 stream_size 722 stream_xmit 721 737 str_sem 205* system_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 4* tab_sem 309* tap 307* 657 667 tap1_sem_no 667 tapdte 350* 701 tapnet 355* 705 tap_dte_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 701 tap_net_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 705 tap_sem_no 657 testbuf 1529: 1530= 1641: 1642 testbufpool 96* 1385 1387 testbufsize 34* 72* 474 483 testbuftype 72* 96* 1529 1641 testinterval 1143* 1151= 1154= 1732 1733 1735 1737 testmode 154* 1159 1260= 1600= 1600 testmodeout 401* 491 508 517 534 1157* testopen 1261 testout 457 462 1262 1272 testoutput 360* 710 testsem 1167* 1690 1693 1709 1711 test_sem 324* 338* text 383* 386* 389* 401* 952* 959 962* 967 970* 976 1157* 1161 ticklength 233* timeout 78* timeoutsem 232* 264* 280* 320* timeout_sem 345* timeout_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 624 635 642 662 672 677 689 time_out_unit <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 624 timout 230* 624 tim_pri 625 tim_size 625 top_of_data 431= true 153* 526 732 760 907 1048 1084 1089 1094 1154 1186 1349 tsaddr 268* tsconnector 273* 640 tsc_pri 646 \f alaoslst 81.06.18. 14.12. page 73 tsc_size 646 tsssem 276* tssuper 209* 612 tssup_sem_no 640 1299 1464 1475 tss_pri 613 673 tss_size 613 ts_addr 165* 218* 226* 251* 442= 616 620 630 636 678 ts_pointer 176* 180* 187* 195* 204* 232* 240* 260* 287* 293* 304* 309* 317* 327* 341* 352* 357* ts_pointer_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 122* 211* 219* 227* 298* ts_sem 108* 211* 219* 227* 1279 1385 1670 1693 1709 1755 ts_sem_total 38* 108* 1277 ttybufs 199* t_sem 1167* 1180 1192 1206 1212 u1 1306= 1320= 1390= 1613 1732= u2 498 1391= 1614 1734= u3 1392= 1615 1736= u4 1393= 1616 1738= unlink 576 used 809* 814= 840= 927= 937 940 941 user_field 430= vac_size 637 vagt 296* 649 682 valparam 42* 1567 1783 1784 vas_sem_no 635 vas_size 650 vcc 256* 634 676 vcc_pri 637 679 vcc_sem_no 634 634 676 676 vchsem 262* vch_pri 621 vch_sem_no 635 677 vch_size 621 vc_handler 222* 620 vc_sim_pri 650 683 version 26* 1262 vic_size 679 vis_sem_no 677 vis_size 683 w 629 636 643 662 678 688 716 1177 1280= 1285= 1287= 1289= 1291= 1293= 1295= 1564= 1566= 1779 1780= 1780 1781= wait 497 1205 1236 worksem 121* 1779= 1781 \f alaoslst 81.06.18. 14.12. page 74 writenl 404* 575 1150 1163 1209 1219 1227* 1316 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1588 1594 1617 1650 1704 1794 write_sem 176* wrsem 105* 497 1318 wsem 103* 1236 1305 xmit 207* xmitter 180* z 125* 457 462 1261 1262 1272 zeroes 811* 907= 914 924 926= zone 125* \f alaoslst 81.06.18. 14.12. page 75 AND 24 ARRAY 13 BEGIN 116 CASE 10 CONST 5 DIV 7 DO 52 DOWNTO 3 ELSE 65 END 129 FOR 24 FORWARD 11 FUNCTION 9 IF 104 IN 13 MOD 8 NIL 13 NOT 8 OF 27 OR 13 OTHERWISE 6 PROCEDURE 27 RECORD 3 REPEAT 5 THEN 104 TO 21 TYPE 1 UNTIL 5 VAR 54 WHILE 4 WITH 8 \f jg2 1981.06.18 14.14 alaos program 81.06.18. 14.14. pascal80 version 1981.04.01 name headline beginline endline appetite(words) dte_pax_addr 408 410 415 : 8 make_phead 420 423 433 : 17 packmacro 438 440 444 : 6 packextnode 449 452 464 : 29 get_curbufty 467 469 485 : 2 getinput 489 491 511 : 21 getparams 515 517 549 : 25 init_proc 559 563 579 : 29 init_modul 583 610 754 : 58 moduleready 759 760 767 : 19 outchar 773 774 780 : 9 outdecimal 786 787 791 : 10 outinteger 797 814 948 : 47 outstring10 956 958 960 : 17 outstring12 964 966 968 : 17 outstring20 973 975 977 : 17 readchar 986 987 994 : 11 readinteger 1008 1022 1134 : 17 repeatchar 1137 1138 1141 : 8 testinterval 1145 1147 1155 : 13 testmodeout 1158 1160 1165 : 18 testsem 1171 1175 1221 : 15 writenl 1230 1232 1239 : 11 alarm_opsys 26 1258 1798 : 1397 code: 6 . 1338 = 19338 bytes end of PASCAL80 compilation end blocksread = 53 ▶EOF◀