|
|
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: 121344 (0x1da00)
Types: TextFileVerbose
Names: »feaoslst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »feaoslst«
\f
feaoslst 81.05.08. 14.51. page 1
10 1
\f
feaoslst 81.05.08. 14.51. page 2
1010 2
1020 3
1030 4
1040 5
\f
feaoslst 81.05.08. 14.51. page 3
2010 6 PROCESS alarm_opsys( VAR semvector: system_vector;
2020 7 VAR evavector: appl_vector );
2030 8
2040 9 (***************************************************
2050 10 *
2060 11 * function: the test module is used to initialise buffers,
2070 12 * signal them to semaphores, and to write their
2080 13 * contents, when they have been handled by another
2090 14 *
2100 15 * externals: none
2110 16 *
2120 17 * var params: none
2130 18 *
2140 19 * semaphores: the module sends to the system semaphore
2150 20 * "operatorsem".
2160 21 *
2170 22 *
2180 23 * programmed may 1980 by wib and stb
2190 24 *
2200 25 ***************************************************)
2210 26
2220 27 CONST
2230 28 version = "vers 4.20 /";
2240 29
2250 30
2260 31
2270 32
\f
feaoslst 81.05.08. 14.51. page 4
3010 33 CONST
3020 34 opbufsize = 80; (* no. of bytes in buffers to the operator module *)
3030 35 (*** bufs ***)
3040 36 messbufsize= 64; (*words*)
3050 37 testbufsize= 120;
3060 38 maxbufsize= 120;
3070 39 minbufsize= 16;
3080 40 noofmodules= 14;
3090 41 noofsemaphores= ts_sem_total;
3100 42 pu= 0; (* processing unit number *)
3110 43 pr= -1; (* timeslicing priority *)
3120 44
3130 45 valparam= "param val ";
3140 46 noparam= " no param ";
3150 47 alreadyexists= " already exists ";
3160 48 doesntexist= " doesn't exist ";
3170 49 illegalno= "illegal no";
3180 50 createerror= "error in createcall ";
3190 51
3200 52 linelength= 80;
3210 53 firstindex= 6 + alfalength;
3220 54 lastindex= firstindex + (linelength - 1);
3230 55 ok= 0; (* result from operator *)
3240 56
3250 57
3260 58 TYPE
3270 59
3280 60 (*---- for alarmenv later ------*)
3290 61
3300 62 paxpooltype = pool no_pax_bufs OF min_rut_mess;
3310 63
3320 64 opbuftype=
3330 65 RECORD
3340 66 ! first,
3350 67 ! last,
3360 68 ! next: integer;
3370 69 ! name: alfa;
3380 70 ! data: ARRAY (firstindex..lastindex) OF char
3390 71 END;
3400 72
3410 73 (*** bufs ***)
3420 74 messbuftype= ARRAY (1..messbufsize) OF integer;
3430 75 testbuftype= ARRAY (1..testbufsize) OF integer;
3440 76 minbuftype = ARRAY (1.. minbufsize) OF integer;
3450 77 maxbuftype = ARRAY (1.. maxbufsize) OF integer;
3460 78
\f
feaoslst 81.05.08. 14.51. page 5
3470 79
\f
feaoslst 81.05.08. 14.51. page 6
4010 80 createchtype=
4020 81 RECORD
4030 82 ! controlinfo, timeout: byte
4040 83 END;
4050 84
4060 85 atbuffer= ARRAY (0..1) OF byte;
4070 86
4080 87
4090 88 alfa10= ARRAY (1..10) OF char;
4100 89 alfa20= ARRAY (1..20) OF char;
4110 90
4120 91 (* type necessary to compare sempointers *)
4130 92 point_rec = RECORD
4140 93 ! a: sempointer;
4150 94 END;
4160 95
4170 96 VAR
4180 97 (********* pools *********)
4190 98 opbufpool: pool 3 OF opbuftype;
4200 99 (*** bufs ***)
4210 100 testbufpool: pool 12 OF testbuftype;
4220 101 messbufpool: pool no_listen OF messbuftype;
4230 102 paxbufpool : paxpooltype;
4240 103
4250 104 (********** semaphores **********)
4260 105 countsem, (* used by "t"-command *)
4270 106 wsem, (* buffers written by the operatormodule is
4280 107 returned here *)
4290 108 wrsem (* buffers with content read by the operator
4300 109 module is returned here *)
4310 110 : semaphore;
4320 111 ts_sem : ARRAY (1..ts_sem_total) OF semaphore;
4330 112
4340 113 (********** references **********)
4350 114 nref,
4360 115 countref, (* used by "t"-command *)
4370 116 opinref, (* ref. to buffer from operator *)
4380 117 opoutref, (* ref. to buffer to operator *)
4390 118 cur (* ref. to current buffer *)
4400 119 : reference;
4410 120
4420 121 (********** pointers **********)
4430 122 opsem: sempointer;
4440 123 worksem: sempointer;
4450 124 sem : ts_pointer_vector;
4460 125
\f
feaoslst 81.05.08. 14.51. page 7
4470 126
\f
feaoslst 81.05.08. 14.51. page 8
5010 127 (********** zones **********)
5020 128 z: zone;
5030 129
5040 130 (********** char **********)
5050 131 command: char; (* the first char the operator typed *)
5060 132
5070 133
5080 134 (********** integers **********)
5090 135 base, (* number base for input and output *)
5100 136 firstword, (* used by "o"-command *)
5110 137 i,
5120 138 incharsleft, (* no. of not yet read chars in opinbuffer *)
5130 139 j,
5140 140 k,
5150 141 lastword, (* used by "o"-command *)
5160 142 leftbyte, (* used by "p"-command *)
5170 143 moduleno, (* tested module *)
5180 144 noofparams, (* no. of params in operator line *)
5190 145 oldbase, (* used by the "b" command *)
5200 146 rightbyte, (* used by "p"-command *)
5210 147 semno, (* typed semaphore number *)
5220 148 curbufsize, (* in words *)
5230 149 curbuftype, (* 0 - 4 *)
5240 150 st (* storage requirements *)
5250 151 : integer;
5260 152
5270 153 (********** booleans **********)
5280 154 readok, (* indicates if the last call of readinteger
5290 155 yielded a result *)
5300 156 testmode
5310 157 : boolean;
5320 158
5330 159 (********** arrays **********)
5340 160 netc_locals : netc_loc_sems;
5350 161 params: ARRAY(1..50) OF integer; (* holds parameters from operator *)
5360 162 sh: ARRAY(1..noofmodules) OF shadow; (* ref. to process incarn. *)
5370 163
5380 164 (********** param to use in create **********)
5390 165 dc_addr: macroaddr := macroaddr(7,0,0);
5400 166 nc_addr: macroaddr := macroaddr(7,5,0);
5410 167 ts_addr: macroaddr := macroaddr(7,5,4);
5420 168
5430 169 (*** auxiliary to compare sempointers ***)
5440 170 ap,bp : point_rec;
5450 171
5460 172
\f
feaoslst 81.05.08. 14.51. page 9
6010 173 (********** externals **********)
6020 174 PROCESS fesupervisor(
6030 175 op: sempointer;
6040 176 VAR input_sem, write_sem, que_sem : ! ts_pointer;
6050 177 VAR stream_sem, netc_sem, com_pool : ! sempointer);
6060 178 EXTERNAL;
6070 179
6080 180 PROCESS streamer(
6090 181 VAR input_sem, xmitter, receiver : ! ts_pointer;
6100 182 retrans_max : integer;
6110 183 op : sempointer);
6120 184 EXTERNAL;
6130 185
6140 186 PROCESS fpadriver(
6150 187 VAR sem : ! ts_pointer;
6160 188 level, block : integer;
6170 189 rec : boolean;
6180 190 op: sempointer);
6190 191 EXTERNAL;
6200 192
6210 193 PROCESS timeout(
6220 194 opsem: sempointer;
6230 195 VAR timeoutsem: !ts_pointer;
6240 196 ticklength, max: integer);
6250 197 EXTERNAL;
6260 198
6270 199 PROCESS lam(
6280 200 opsem: sempointer;
6290 201 pu, level: integer;
6300 202 VAR inputsem: !ts_pointer);
6310 203 EXTERNAL;
6320 204
6330 205 PROCESS tap(
6340 206 opsem: sempointer;
6350 207 VAR tab_sem: !ts_pointer);
6360 208 EXTERNAL;
6370 209
6380 210 PROCESS dtesimulator (
6390 211 op_sem : sempointer;
6400 212 VAR
6410 213 pax_pool_sem,
6420 214 dte_sem : !ts_pointer;
6430 215 VAR
6440 216 netc_sem,
6450 217 rut_trm_sem,
6460 218 rut_rec_sem : !sempointer;
\f
feaoslst 81.05.08. 14.51. page 10
6470 219 dte_addr : int_pax_addr
6480 220 );
6490 221 EXTERNAL;
6500 222
6510 223 PROCESS netconnector (
6520 224 global_timeout : byte;
6530 225 op_sem : sempointer;
6540 226
\f
feaoslst 81.05.08. 14.51. page 11
7010 227 VAR
7020 228 pax_pool_sem,
7030 229 main_sem : !ts_pointer;
7040 230 local_sem_table : netc_loc_sems;
7050 231 VAR
7060 232 com_pool_sem,
7070 233 timeout_sem,
7080 234 dte_sem : !sempointer
7090 235 );
7100 236 EXTERNAL;
7110 237
7120 238 PROCESS tapdte (
7130 239 op_sem : sempointer;
7140 240 VAR sem : ! ts_pointer );
7150 241 EXTERNAL;
7160 242
7170 243 PROCESS tapnet (
7180 244 op_sem : sempointer;
7190 245 VAR sem : !ts_pointer );
7200 246 EXTERNAL;
7210 247
7220 248 PROCESS osif (
7230 249 op_sem : sempointer;
7240 250 VAR inputsem : !ts_pointer;
7250 251 VAR streemsem, lamsem : !sempointer;
7260 252 port : byte);
7270 253 EXTERNAL;
7280 254
7290 255 PROCESS dcmodule(
7300 256 opsem : sempointer;
7310 257 VAR sem1, sem2, sem3, sem4 : !sempointer;
7320 258 VAR sem5, sem6, sem7, sem8 : !ts_pointer );
7330 259 EXTERNAL;
7340 260
7350 261 PROCEDURE setoflowmask( oflow: boolean);
7360 262 EXTERNAL;
7370 263
7380 264
7390 265 (********** forwards **********)
7400 266
7410 267 PROCEDURE getparams;
7420 268 FORWARD;
7430 269
7440 270 PROCEDURE outdecimal(int,positions: integer);
7450 271 FORWARD;
7460 272
\f
feaoslst 81.05.08. 14.51. page 12
7470 273 PROCEDURE outinteger(int,positions: integer);
7480 274 FORWARD;
7490 275
7500 276 PROCEDURE outstring10(text: alfa10);
7510 277 FORWARD;
7520 278
7530 279
\f
feaoslst 81.05.08. 14.51. page 13
8010 280 PROCEDURE outstring12(text: alfa);
8020 281 FORWARD;
8030 282
8040 283 PROCEDURE outstring20(text: alfa20);
8050 284 FORWARD;
8060 285
8070 286 FUNCTION readchar: char;
8080 287 FORWARD;
8090 288
8100 289 FUNCTION readinteger: integer;
8110 290 FORWARD;
8120 291
8130 292 PROCEDURE repeatchar;
8140 293 FORWARD;
8150 294
8160 295 PROCEDURE testmodeout (text: alfa20; i: integer);
8170 296 FORWARD;
8180 297
8190 298 PROCEDURE writenl;
8200 299 FORWARD;
8210 300
8220 301
\f
feaoslst 81.05.08. 14.51. page 14
9010 302 FUNCTION dte_pax_addr (i:integer): int_pax_addr;
9020 303 VAR pax_adr : int_pax_addr;
9030 304 BEGIN
9040 305 1 ! pax_adr.net_addr := params(i);
9050 306 2 ! pax_adr.reg_addr := params(i+1);
9060 307 3 ! pax_adr.node_addr := params(i+2);
9070 308 4 ! pax_adr.ext_addr := params(i+3);
9080 309 5 ! dte_pax_addr := pax_adr;
9090 310 6 END;
9100 311
9110 312 PROCEDURE make_phead (
9120 313 i : integer; op_code : byte;
9130 314 VAR p : format_1_packet_header );
9140 315 BEGIN
9150 316 1 ! WITH p DO
9160 317 2 ! BEGIN
9170 318 3 ! ! format := rut_format_1;
9180 319 4 ! ! priority := rut_prio_0;
9190 320 5 ! ! packet_type := rut_pack_type;
9200 321 6 ! ! state := 0;
9210 322 7 ! ! org := dte_pax_addr(i);
9220 323 8 ! ! dst := dte_pax_addr(i+3);
9230 324 9 ! ! facility := params(9);
9240 325 10 ! ! user_field := op_code *256 + params(2);
9250 326 11 ! ! top_of_data := 0;
9260 327 12 ! END;
9270 328 13 END;
9280 329
9290 330
\f
feaoslst 81.05.08. 14.51. page 15
10010 331 FUNCTION packmacro (
10020 332 par:integer):macroaddr;
10030 333 VAR
10040 334 a:macroaddr;
10050 335 BEGIN
10060 336 1 ! a.dc_addr := params( par);
10070 337 2 ! a.nc_addr := params( par+1);
10080 338 3 ! a.ts_addr := params( par+2);
10090 339 4 ! packmacro := a;
10100 340 5 END;
10110 341
10120 342 FUNCTION packextnode (
10130 343 par:integer) : ext_pax_addr;
10140 344 VAR
10150 345 i:integer;
10160 346 a:ext_pax_addr;
10170 347 BEGIN
10180 348 1 ! FOR i:=1 TO 6 DO
10190 349 2 ! a(i):=0;
10200 350 3 ! FOR i:=0 TO 2 DO
10210 351 4 ! a(7+i):=params(par+i);
10220 352 5 ! FOR i:= 10 TO 14 DO
10230 353 6 ! a(i) := 0;
10240 354 7 ! packextnode := a;
10250 355 8 END;
10260 356
10270 357
\f
feaoslst 81.05.08. 14.51. page 16
11010 358 PROCEDURE get_curbuftype;
11020 359 BEGIN
11030 360 1 ! IF cur^.size < minbufsize THEN
11040 361 2 ! curbuftype:= 0 ELSE
11050 362 3 ! IF cur^.size < messbufsize THEN
11060 363 4 ! curbuftype:= 1 ELSE
11070 364 5 ! IF cur^.size < maxbufsize THEN
11080 365 6 ! curbuftype:= 2 ELSE
11090 366 7 ! IF cur^.size < testbufsize THEN
11100 367 8 ! curbuftype:= 3 ELSE
11110 368 9 ! curbuftype:= 4;
11120 369 10 !
11130 370 11 ! CASE curbuftype OF
11140 371 12 ! ! 0: curbufsize:= 0;
11150 372 13 ! ! 1: curbufsize:= minbufsize;
11160 373 14 ! ! 2: curbufsize:= messbufsize;
11170 374 15 ! ! 3: curbufsize:= maxbufsize;
11180 375 16 ! ! 4: curbufsize:= testbufsize;
11190 376 17 ! END;
11200 377 18 END;
11210 378
11220 379
\f
feaoslst 81.05.08. 14.51. page 17
12010 380 PROCEDURE getinput;
12020 381 (* reads input from console into opinref^ *)
12030 382 BEGIN
12040 383 1 !
12050 384 2 ! testmodeout ("getinput called ",0);
12060 385 3 !
12070 386 4 ! REPEAT
12080 387 5 ! ! LOCK opinref AS opbuf: opbuftype DO
12090 388 6 ! ! opbuf.next:= firstindex;
12100 389 7 ! ! signal (opinref, opsem^);
12110 390 8 ! ! wait (opinref, wrsem);
12120 391 9 ! UNTIL opinref^.u2= ok (* 0*);
12130 392 10 !
12140 393 11 ! LOCK opinref AS opbuf: opbuftype DO
12150 394 12 ! WITH opbuf DO
12160 395 13 ! BEGIN
12170 396 14 ! ! incharsleft:= next - first;
12180 397 15 ! ! next:= firstindex;
12190 398 16 ! END;
12200 399 17 ! command:= readchar;
12210 400 18 !
12220 401 19 ! testmodeout ("command read: ",ord(command));
12230 402 20 !
12240 403 21 ! getparams;
12250 404 22 END (* getinput *);
12260 405
12270 406
\f
feaoslst 81.05.08. 14.51. page 18
13010 407 PROCEDURE getparams;
13020 408 (* reads integer parameters *)
13030 409 VAR newbase: boolean;
13040 410 BEGIN
13050 411 1 ! testmodeout ("getparams called ",0);
13060 412 2 !
13070 413 3 ! noofparams:= 0;
13080 414 4 !
13090 415 5 ! IF command IN (."a","b","c","d","e","f","k","n","o","p","s","t","w","x".)
13100 416 6 ! THEN
13110 417 7 ! BEGIN (* change to decimal *)
13120 418 8 ! ! oldbase:= base;
13130 419 9 ! ! base:= 10;
13140 420 10 ! ! newbase:= true;
13150 421 11 ! END
13160 422 12 ! ELSE
13170 423 13 ! newbase:= false;
13180 424 14 !
13190 425 15 ! REPEAT
13200 426 16 ! ! noofparams:= noofparams + 1;
13210 427 17 ! ! params(noofparams):= readinteger;
13220 428 18 ! ! testmodeout ("parameter read: ",params(noofparams));
13230 429 19 ! ! IF (noofparams=1) THEN
13240 430 20 ! ! IF command IN (."f","p".) THEN
13250 431 21 ! ! BEGIN (* change to old *)
13260 432 22 ! ! ! base:= oldbase;
13270 433 23 ! ! ! newbase:= false;
13280 434 24 ! ! END;
13290 435 25 ! !
13300 436 26 ! UNTIL (NOT readok) OR (noofparams= 50);
13310 437 27 !
13320 438 28 ! noofparams:= noofparams - 1;
13330 439 29 !
13340 440 30 ! IF newbase THEN
13350 441 31 ! (* change back to old base *)
13360 442 32 ! base:= oldbase;
13370 443 33 END (* getparams *);
13380 444
13390 445
\f
feaoslst 81.05.08. 14.51. page 19
14010 446 PROCEDURE init_proc(
14020 447 index: integer;
14030 448 name,
14040 449 inc_name : alfa;
14050 450 p : processrec;
14060 451 size,
14070 452 prio : integer);
14080 453 VAR
14090 454 okl,
14100 455 ok : integer;
14110 456 BEGIN
14120 457 1 ! IF NOT nil(sh(index)) THEN
14130 458 2 ! outstring20(alreadyexists) ELSE
14140 459 3 ! BEGIN
14150 460 4 ! ! IF noofparams<2 THEN st:= size;
14160 461 5 ! ! okl:= link(name,p.processref^);
14170 462 6 ! ! ok:= create(inc_name,p,sh(index),st);
14180 463 7 ! ! IF ok=0 THEN
14190 464 8 ! ! start(sh(index),prio) ELSE
14200 465 9 ! ! BEGIN
14210 466 10 ! ! ! ok:= ok*100+okl;
14220 467 11 ! ! ! outstring20(createerror);
14230 468 12 ! ! ! outstring12(inc_name);
14240 469 13 ! ! ! outdecimal(ok,5);
14250 470 14 ! ! ! writenl;
14260 471 15 ! ! ! okl:= unlink(p.processref^);
14270 472 16 ! ! END;
14280 473 17 ! END;
14290 474 18 END;
14300 475
14310 476
\f
feaoslst 81.05.08. 14.51. page 20
15010 477 PROCEDURE init_modul(index: integer);
15020 478 CONST
15030 479 n1 = "fesupervisor";
15040 480 n2 = "streamer ";
15050 481 n3 = "osif ";
15060 482 n4 = "timout ";
15070 483 n5 = "lam ";
15080 484 n6 = "tap ";
15090 485 n7 = "netconnector";
15100 486 n8 = "dtesimulator";
15110 487 n9 = "tapdte ";
15120 488 n10= "tapnet ";
15130 489 n11= "dcmodule ";
15140 490 n12= "fpadriver ";
15150 491 BEGIN
15160 492 1 ! CASE index OF
15170 493 2 ! ! 1: (* fesup *)
15180 494 3 ! ! init_proc(index, n1, n1,
15190 495 4 ! ! fesupervisor( opsem,
15200 496 5 ! ! sem(fesup_sem_no), sem(fesup_write), sem(fesup_que),
15210 497 6 ! ! sem(stream_sem_no).s, sem(netc_sem_no).s, sem(com_pool).w ),
15220 498 7 ! ! fesup_size, fesup_pri );
15230 499 8 ! ! 2: (* streamer *)
15240 500 9 ! ! init_proc(index, n2, n2,
15250 501 10 ! ! streamer( sem(stream_sem_no), sem(stream_xmit),
15260 502 11 ! ! sem(stream_rec), 3, opsem), stream_size, stream_pri);
15270 503 12 ! ! 3: (* osif *)
15280 504 13 ! ! init_proc(index, n3, n3,
15290 505 14 ! ! osif( opsem, sem(osif_sem_no), sem(stream_sem_no).s,
15300 506 15 ! ! sem(lam_sem_no).s, 7),
15310 507 16 ! ! osif_size, osif_pri);
15320 508 17 ! ! 4: (* timeout *)
15330 509 18 ! ! init_proc(index, n4, n4,
15340 510 19 ! ! timeout( opsem, sem(timeout_sem_no), time_out_unit, 40),
15350 511 20 ! ! tim_size,tim_pri);
15360 512 21 ! ! 5: (* lam *)
15370 513 22 ! ! init_proc(index, n5, n5,
15380 514 23 ! ! lam( opsem, pu, 5, sem(lam_sem_no)),
15390 515 24 ! ! lam_size, lam_pri);
15400 516 25 ! ! 6: (* tap *)
15410 517 26 ! ! init_proc(index, n6, n6,
15420 518 27 ! ! tap( opsem, sem(tap_sem_no)),
15430 519 28 ! ! 512, 0);
15440 520 29 ! ! 11: (* tap01 *)
15450 521 30 ! ! init_proc(index, n6, "tap01 ",
15460 522 31 ! ! tap ( opsem, sem(tap1_sem_no)),
\f
feaoslst 81.05.08. 14.51. page 21
15470 523 32 ! ! 512, 0);
15480 524 33 ! ! 7: (* netconnector *)
15490 525 34 ! ! init_proc ( index, n7, n7,
15500 526 35 ! !
\f
feaoslst 81.05.08. 14.51. page 22
16010 527 36 ! ! netconnector( glob_timeout, opsem,
16020 528 37 ! ! sem( pax_pool),sem( netc_sem_no), netc_locals,
16030 529 38 ! ! sem( com_pool).w,
16040 530 39 ! ! sem( timeout_sem_no).s, sem( dte_sem_no).s),
16050 531 40 ! ! netc_size, netc_pri);
16060 532 41 ! !
16070 533 42 ! ! 8: (* dtesimulator *)
16080 534 43 ! ! init_proc ( index, n8, n8,
16090 535 44 ! ! dtesimulator ( opsem, sem( pax_pool), sem(dte_sem_no),
16100 536 45 ! ! sem( netc_sem_no).s,
16110 537 46 ! ! sem( pax_sem_1).s, sem( pax_sem_2).s,
16120 538 47 ! ! dte_pax_addr(3)),
16130 539 48 ! ! netc_size, netc_pri);
16140 540 49 ! ! 9: (* tapdte *)
16150 541 50 ! ! init_proc ( index, n9, n9,
16160 542 51 ! ! tapdte ( opsem, sem(tap_dte_sem_no)),
16170 543 52 ! ! 512,0);
16180 544 53 ! ! 10: (* tapnet *)
16190 545 54 ! ! init_proc ( index, n10, n10,
16200 546 55 ! ! tapnet ( opsem, sem(tap_net_sem_no)),
16210 547 56 ! ! 512,0);
16220 548 57 ! !
16230 549 58 ! ! 12: (* dc simulator *)
16240 550 59 ! ! init_proc( index, n11, n11,
16250 551 60 ! ! dcmodule( opsem, sem( lam_sem_no ).s, sem( netc_sem_no ).s,
16260 552 61 ! ! sem( com_pool ).w, sem( timeout_sem_no ).s,
16270 553 62 ! ! sem( dc_sem_no ), sem( dc_int1 ), sem( dc_int2 ), sem( dc_int3 ) ),
16280 554 63 ! ! dc_sim_size, dc_sim_pri );
16290 555 64 ! !
16300 556 65 ! ! 13: (* fpa rec *)
16310 557 66 ! ! init_proc( index, n12, "fparec ",
16320 558 67 ! ! fpadriver( sem(stream_rec), 6, 2, true, opsem),
16330 559 68 ! ! 512, 0);
16340 560 69 ! !
16350 561 70 ! ! 14: (* fpa xmit *)
16360 562 71 ! ! init_proc( index, n12, "fpaxmit ",
16370 563 72 ! ! fpadriver( sem(stream_xmit), 7, 2, false, opsem),
16380 564 73 ! !
16390 565 74 ! ! 512, 0);
16400 566 75 ! !
16410 567 76 ! ! OTHERWISE
16420 568 77 ! ! BEGIN
16430 569 78 ! ! ! outdecimal(index,4);
16440 570 79 ! ! ! outstring10(illegalno);
16450 571 80 ! ! END;
16460 572 81 ! END (* case *)
\f
feaoslst 81.05.08. 14.51. page 23
16470 573 82 END;
16480 574
16490 575
\f
feaoslst 81.05.08. 14.51. page 24
17010 576 FUNCTION moduleready(moduleno: integer): boolean;
17020 577 (* tests if an incarnation of the module is existing
17030 578 and writes an errormessage if so *)
17040 579 BEGIN
17050 580 1 ! IF nil( sh( moduleno) ) THEN moduleready:=true
17060 581 2 ! ELSE
17070 582 3 ! BEGIN (* module is already existing *)
17080 583 4 ! ! outdecimal(moduleno,4);
17090 584 5 ! ! outstring20(alreadyexists);
17100 585 6 ! ! moduleready:=false;
17110 586 7 ! END;
17120 587 8 END (* module ready *);
17130 588
17140 589
17150 590
17160 591
\f
feaoslst 81.05.08. 14.51. page 25
18010 592 PROCEDURE outchar(ch:char);
18020 593 (* writes ch into the output buffer *)
18030 594 BEGIN
18040 595 1 ! LOCK opoutref AS opbuf: opbuftype DO
18050 596 2 ! WITH opbuf DO
18060 597 3 ! BEGIN
18070 598 4 ! ! last:= last + 1;
18080 599 5 ! ! data (last):= ch;
18090 600 6 ! END;
18100 601 7 END (* outchar *);
18110 602
18120 603
\f
feaoslst 81.05.08. 14.51. page 26
19010 604 PROCEDURE outdecimal (int, positions: integer);
19020 605 (* writes the integer "int" decimally into opbuf starting
19030 606 at "last", which is updated accordingly *)
19040 607
19050 608 BEGIN
19060 609 1 ! oldbase:= base;
19070 610 2 ! base:= 10;
19080 611 3 ! outinteger(int,positions);
19090 612 4 ! base:= oldbase;
19100 613 5 END (* outdecimal *);
19110 614
19120 615
\f
feaoslst 81.05.08. 14.51. page 27
20010 616 PROCEDURE outinteger(int,positions:integer);
20020 617 (* writes the integer "int" into opbuf starting at
20030 618 "last", which is updated accordingly *)
20040 619 CONST
20050 620 maxpos = 20; (* max number of positions in layout *)
20060 621
20070 622 VAR
20080 623 bits: ARRAY(0..15) OF bit;
20090 624 digits:ARRAY(1..maxpos) OF char;
20100 625 curdigit, (* current pos. in digits-array to be filled out *)
20110 626 curpos, (* cur. pos. in the nunber being computed *)
20120 627 h, i,
20130 628 m, newm,
20140 629 noofdig, (* no. of digits in the resulting number *)
20150 630 noofpos, (* no. of pos. from bits-array for one number *)
20160 631 res, (* resulting number *)
20170 632 used: integer;
20180 633
20190 634 negative, zeroes: boolean;
20200 635
20210 636 BEGIN
20220 637 1 ! used:= 1;
20230 638 2 !
20240 639 3 ! (* first we initialise the digits array *)
20250 640 4 ! FOR i:=1 TO maxpos DO digits(i):=sp;
20260 641 5 !
20270 642 6 ! IF base= 10 THEN
20280 643 7 ! BEGIN
20290 644 8 ! ! i:=maxpos;
20300 645 9 ! !
20310 646 10 ! ! negative:= int<0;
20320 647 11 ! !
20330 648 12 ! ! REPEAT
20340 649 13 ! ! ! (* now we unpack the digits backwards and put them
20350 650 14 ! ! ! into the digits array *)
20360 651 15 ! ! !
20370 652 16 ! ! ! digits(i):= chr (abs(int MOD base) + ord("0"));
20380 653 17 ! ! ! int:=int DIV base;
20390 654 18 ! ! ! i:=i-1;
20400 655 19 ! ! UNTIL (i=1) OR (int=0);
20410 656 20 ! !
20420 657 21 ! ! IF negative THEN
20430 658 22 ! ! BEGIN
20440 659 23 ! ! ! digits(i):="-";
20450 660 24 ! ! ! i:=i-1;
20460 661 25 ! ! END;
\f
feaoslst 81.05.08. 14.51. page 28
20470 662 26 ! !
\f
feaoslst 81.05.08. 14.51. page 29
21010 663 27 ! !
21020 664 28 ! ! used:=maxpos-i;
21030 665 29 ! !
21040 666 30 ! ! IF int <> 0 THEN digits(1):= "*";
21050 667 31 ! END (* if base= 10 *)
21060 668 32 !
21070 669 33 ! ELSE (* base= 2, 8, or 16 *)
21080 670 34 ! BEGIN
21090 671 35 ! ! (* initialise bits-array *)
21100 672 36 ! ! IF int>=0 THEN
21110 673 37 ! ! BEGIN
21120 674 38 ! ! ! FOR i:= 15 DOWNTO 1 DO
21130 675 39 ! ! ! BEGIN
21140 676 40 ! ! ! ! bits(i):= int MOD 2;
21150 677 41 ! ! ! ! int:= int DIV 2;
21160 678 42 ! ! ! END;
21170 679 43 ! ! ! bits(0):= int MOD 2;
21180 680 44 ! ! ! int:= int DIV 2;
21190 681 45 ! ! END
21200 682 46 ! ! ELSE
21210 683 47 ! ! (* int<0 *)
21220 684 48 ! ! BEGIN
21230 685 49 ! ! ! (* subtract abs(int) from 1111111...1 *)
21240 686 50 ! ! ! FOR i:= 15 DOWNTO 1 DO
21250 687 51 ! ! ! BEGIN
21260 688 52 ! ! ! ! bits(i):= 1+(int MOD 2);
21270 689 53 ! ! ! ! int:= int DIV 2;
21280 690 54 ! ! ! END;
21290 691 55 ! ! ! bits(0):= 1+(int MOD 2);
21300 692 56 ! ! ! int:= int DIV 2;
21310 693 57 ! ! !
21320 694 58 ! ! ! (* add 1 *)
21330 695 59 ! ! ! m:= 1;
21340 696 60 ! ! ! FOR i:= 15 DOWNTO 1 DO
21350 697 61 ! ! ! BEGIN
21360 698 62 ! ! ! ! newm:= (bits(i)+m) DIV 2;
21370 699 63 ! ! ! ! bits(i):= (bits(i)+m) MOD 2;
21380 700 64 ! ! ! ! m:= newm;
21390 701 65 ! ! ! END;
21400 702 66 ! ! ! newm:= (bits(0)+m) DIV 2;
21410 703 67 ! ! ! bits(0):= (bits(0)+m) MOD 2;
21420 704 68 ! ! ! m:= newm;
21430 705 69 ! ! END (*int<0*);
21440 706 70 ! !
21450 707 71 ! ! (* compute digits-array *)
21460 708 72 ! ! CASE base OF
\f
feaoslst 81.05.08. 14.51. page 30
21470 709 73 ! ! !
\f
feaoslst 81.05.08. 14.51. page 31
22010 710 74 ! ! ! 2: BEGIN
22020 711 75 ! ! ! ! noofpos:= 1;
22030 712 76 ! ! ! ! noofdig:= 16;
22040 713 77 ! ! ! END;
22050 714 78 ! ! !
22060 715 79 ! ! ! 8: BEGIN
22070 716 80 ! ! ! ! noofpos:= 3;
22080 717 81 ! ! ! ! noofdig:= 6;
22090 718 82 ! ! ! END;
22100 719 83 ! ! !
22110 720 84 ! ! ! 16: BEGIN
22120 721 85 ! ! ! ! noofpos:= 4;
22130 722 86 ! ! ! ! noofdig:= 4;
22140 723 87 ! ! ! END;
22150 724 88 ! ! END (* case *);
22160 725 89 ! !
22170 726 90 ! ! curdigit:= maxpos -noofdig +1;
22180 727 91 ! !
22190 728 92 ! ! IF base= 8
22200 729 93 ! ! THEN curpos:= 3
22210 730 94 ! ! ELSE curpos:= 1;
22220 731 95 ! ! res:= 0;
22230 732 96 ! ! zeroes:= true;
22240 733 97 ! !
22250 734 98 ! ! FOR h:= 0 TO 15 DO
22260 735 99 ! ! BEGIN
22270 736 100 ! ! ! res:= res*2 + bits(h);
22280 737 101 ! ! ! IF curpos= noofpos THEN
22290 738 102 ! ! ! BEGIN (* time to fill out a pos. in digits-array *)
22300 739 103 ! ! ! ! IF zeroes AND (res=0) THEN
22310 740 104 ! ! ! ! BEGIN
22320 741 105 ! ! ! ! ! IF curdigit=maxpos
22330 742 106 ! ! ! ! ! THEN digits(curdigit):= "0"
22340 743 107 ! ! ! ! ! (*else digits (curdigit):= " "*);
22350 744 108 ! ! ! ! END
22360 745 109 ! ! ! ! ELSE
22370 746 110 ! ! ! ! IF res<=9
22380 747 111 ! ! ! ! THEN digits(curdigit):= chr (res + ord ("0"))
22390 748 112 ! ! ! ! ELSE digits(curdigit):= chr (res + ord ("7"));
22400 749 113 ! ! ! ! IF (res<>0) AND zeroes THEN
22410 750 114 ! ! ! ! BEGIN
22420 751 115 ! ! ! ! ! zeroes:= false;
22430 752 116 ! ! ! ! ! used:= maxpos - curdigit + 1;
22440 753 117 ! ! ! ! END;
22450 754 118 ! ! ! ! res:= 0;
22460 755 119 ! ! ! ! curpos:= 0;
\f
feaoslst 81.05.08. 14.51. page 32
22470 756 120 ! ! ! !
\f
feaoslst 81.05.08. 14.51. page 33
23010 757 121 ! ! ! ! curdigit:= curdigit + 1;
23020 758 122 ! ! ! END;
23030 759 123 ! ! ! curpos:= curpos + 1;
23040 760 124 ! ! END;
23050 761 125 ! END (* base= 2, 8, of 16 *);
23060 762 126 !
23070 763 127 ! IF positions<used THEN outchar(sp);
23080 764 128 !
23090 765 129 ! IF (NOT (positions IN (. 1 .. maxpos .)) )
23100 766 130 ! OR (positions < used) THEN
23110 767 131 ! positions:=used;
23120 768 132 !
23130 769 133 ! FOR i:=maxpos+1-positions TO maxpos DO
23140 770 134 ! BEGIN
23150 771 135 ! ! outchar( digits(i) );
23160 772 136 ! END
23170 773 137 !
23180 774 138 END (* out integer *);
23190 775
23200 776
23210 777
23220 778
\f
feaoslst 81.05.08. 14.51. page 34
24010 779 PROCEDURE outstring10(text: alfa10);
24020 780 (* writes the text into opbuf starting at outputpointer
24030 781 which is updated accordingly *)
24040 782 VAR
24050 783 i: integer;
24060 784 BEGIN
24070 785 1 ! FOR i:=1 TO 10 DO
24080 786 2 ! outchar( text(i) );
24090 787 3 END (* out string 10 *);
24100 788
24110 789 PROCEDURE outstring12(text: alfa);
24120 790 VAR
24130 791 i: integer;
24140 792 BEGIN
24150 793 1 ! FOR i:=1 TO 12 DO
24160 794 2 ! outchar(text(i));
24170 795 3 END;
24180 796
24190 797
\f
feaoslst 81.05.08. 14.51. page 35
25010 798 PROCEDURE outstring20(text: alfa20);
25020 799 (* analogue to outstring10 *)
25030 800 VAR
25040 801 i: integer;
25050 802 BEGIN
25060 803 1 ! FOR i:=1 TO 20 DO
25070 804 2 ! outchar( text(i) );
25080 805 3 END (* out string 20 *);
25090 806
25100 807
25110 808
25120 809
25130 810
\f
feaoslst 81.05.08. 14.51. page 36
26010 811 FUNCTION readchar: char;
26020 812 (* reads the next char from opinref^.
26030 813 next is incremented and charsleft is
26040 814 decremented *)
26050 815 BEGIN
26060 816 1 ! LOCK opinref AS opbuf: opbuftype DO
26070 817 2 ! WITH opbuf DO
26080 818 3 ! BEGIN
26090 819 4 ! ! readchar:= data(next);
26100 820 5 ! ! next:= next + 1;
26110 821 6 ! END;
26120 822 7 ! incharsleft:=incharsleft-1;
26130 823 8 END (* readchar *);
26140 824
26150 825
26160 826
26170 827
26180 828
\f
feaoslst 81.05.08. 14.51. page 37
27010 829 FUNCTION readinteger : integer;
27020 830 (* reads the next integer from opinref^ starting
27030 831 at "inputpoint". upon return "inputpoint" will be
27040 832 the position just after the last char read.
27050 833
27060 834 the global boolean "readok" will be true if an
27070 835 integer was read and false otherwise *)
27080 836
27090 837 CONST
27100 838 digits = (. "0" .. "9" .);
27110 839 hexdigits = (. "a" .. "f" .);
27120 840 signs = (. "+" , "-" .);
27130 841
27140 842 VAR
27150 843 negative, digit: boolean;
27160 844
27170 845 curdigit, noofdigit,
27180 846 result: integer;
27190 847
27200 848 ch,lastchar: char;
27210 849
27220 850
27230 851 BEGIN
27240 852 1 ! readok:=false;
27250 853 2 ! lastchar:=nul;
27260 854 3 ! ch:=nul;
27270 855 4 ! digit:=false;
27280 856 5 !
27290 857 6 ! (* now skip until a digit is encountered *)
27300 858 7 !
27310 859 8 ! IF incharsleft > 0 THEN
27320 860 9 ! REPEAT
27330 861 10 ! ! lastchar:=ch;
27340 862 11 ! ! ch:=readchar;
27350 863 12 ! ! digit:= (ch IN digits) OR
27360 864 13 ! ! ((base= 16) AND (ch IN hexdigits))
27370 865 14 ! UNTIL digit OR (incharsleft<=0);
27380 866 15 !
27390 867 16 ! result:=0;
27400 868 17 ! IF base= 10 THEN
27410 869 18 ! negative:= lastchar= "-"
27420 870 19 ! ELSE negative:= false;
27430 871 20 !
27440 872 21 !
27450 873 22 ! IF digit THEN
27460 874 23 ! BEGIN
\f
feaoslst 81.05.08. 14.51. page 38
27470 875 24 ! !
\f
feaoslst 81.05.08. 14.51. page 39
28010 876 25 ! ! IF ch IN digits
28020 877 26 ! ! THEN result:= ord (ch) - ord ("0")
28030 878 27 ! ! ELSE result:= ord (ch) - 87 (*ord ("W")*);
28040 879 28 ! ! readok:=true;
28050 880 29 ! END;
28060 881 30 !
28070 882 31 ! IF base=10 THEN
28080 883 32 ! BEGIN
28090 884 33 ! ! WHILE digit AND (incharsleft>0) DO
28100 885 34 ! ! BEGIN (* read the digits *)
28110 886 35 ! ! ! ch:= readchar;
28120 887 36 ! ! !
28130 888 37 ! ! ! digit:= (ch IN digits) OR
28140 889 38 ! ! ! ((base= 16) AND (ch IN hexdigits));
28150 890 39 ! ! ! IF digit THEN
28160 891 40 ! ! ! BEGIN
28170 892 41 ! ! ! ! IF negative AND (result=3276) AND (ch="8")
28180 893 42 ! ! ! ! THEN BEGIN
28190 894 43 ! ! ! ! ! result:= -32768;
28200 895 44 ! ! ! ! ! negative:= false;
28210 896 45 ! ! ! ! END
28220 897 46 ! ! ! ! ELSE
28230 898 47 ! ! ! ! BEGIN
28240 899 48 ! ! ! ! ! IF ch IN digits
28250 900 49 ! ! ! ! ! THEN result:= result*base+(ord(ch)-ord("0"))
28260 901 50 ! ! ! ! ! ELSE result:= result*base+(ord(ch)-87(*ord("W")*));
28270 902 51 ! ! ! ! END;
28280 903 52 ! ! ! END;
28290 904 53 ! ! END (* while *);
28300 905 54 ! !
28310 906 55 ! ! IF negative THEN result:= - result;
28320 907 56 ! !
28330 908 57 ! END (* base= 10 *)
28340 909 58 !
28350 910 59 ! ELSE
28360 911 60 ! BEGIN (* base= 2, 8, or 16 *)
28370 912 61 ! !
28380 913 62 ! ! CASE base OF
28390 914 63 ! ! ! 2:BEGIN
28400 915 64 ! ! ! ! IF ch="1" THEN negative:= true;
28410 916 65 ! ! ! ! noofdigit:= 16;
28420 917 66 ! ! ! END;
28430 918 67 ! ! !
28440 919 68 ! ! ! 8: BEGIN
28450 920 69 ! ! ! ! IF ch="1" THEN negative:= true;
28460 921 70 ! ! ! ! noofdigit:= 6;
\f
feaoslst 81.05.08. 14.51. page 40
28470 922 71 ! ! ! !
\f
feaoslst 81.05.08. 14.51. page 41
29010 923 72 ! ! ! END;
29020 924 73 ! ! !
29030 925 74 ! ! ! 16: BEGIN
29040 926 75 ! ! ! ! IF ch>="8" THEN negative:= true;
29050 927 76 ! ! ! ! noofdigit:= 4;
29060 928 77 ! ! ! END;
29070 929 78 ! ! END (*case*);
29080 930 79 ! ! curdigit:= 1;
29090 931 80 ! !
29100 932 81 ! ! WHILE digit AND (incharsleft>0) DO
29110 933 82 ! ! BEGIN
29120 934 83 ! ! ! ch:= readchar;
29130 935 84 ! ! ! digit:= (ch IN digits) OR
29140 936 85 ! ! ! ((base=16) AND (ch IN hexdigits));
29150 937 86 ! ! ! IF digit
29160 938 87 ! ! ! THEN BEGIN
29170 939 88 ! ! ! ! curdigit:= curdigit+1;
29180 940 89 ! ! ! ! IF (curdigit=noofdigit) AND negative THEN
29190 941 90 ! ! ! ! BEGIN
29200 942 91 ! ! ! ! ! CASE base OF
29210 943 92 ! ! ! ! ! ! 2: result:= result - 16384 (*2^14*);
29220 944 93 ! ! ! ! ! ! 8: result:= result - 4096 (*2^12*);
29230 945 94 ! ! ! ! ! ! 16:result:= result - 2048 (*2^11*);
29240 946 95 ! ! ! ! ! END (*case*)
29250 947 96 ! ! ! ! END;
29260 948 97 ! ! ! ! IF ch IN digits THEN
29270 949 98 ! ! ! ! result:= result*base + (ord(ch)-ord("0"))
29280 950 99 ! ! ! ! ELSE
29290 951 100 ! ! ! ! result:= result*base + (ord(ch)-87 (*ord("W")*));
29300 952 101 ! ! ! ! IF (curdigit=noofdigit) AND negative
29310 953 102 ! ! ! ! THEN BEGIN
29320 954 103 ! ! ! ! ! IF result=0
29330 955 104 ! ! ! ! ! THEN result:= -32768
29340 956 105 ! ! ! ! ! ELSE result:= -((32767-result)+1);
29350 957 106 ! ! ! ! END;
29360 958 107 ! ! ! END (*if digit*);
29370 959 108 ! ! END (*while digit*);
29380 960 109 ! END (* base= 2, 8, or 16 *);
29390 961 110 ! IF incharsleft > 0 THEN
29400 962 111 ! (* we read one char too many - spit it out *)
29410 963 112 ! repeatchar;
29420 964 113 !
29430 965 114 ! readinteger:=result;
29440 966 115 END (* read integer *);
29450 967
29460 968
\f
feaoslst 81.05.08. 14.51. page 42
30010 969 PROCEDURE repeatchar;
30020 970 BEGIN
30030 971 1 ! LOCK opinref AS opbuf: opbuftype DO
30040 972 2 ! opbuf.next:= opbuf.next - 1;
30050 973 3 ! incharsleft:= incharsleft + 1;
30060 974 4 END;
30070 975
30080 976
\f
feaoslst 81.05.08. 14.51. page 43
31010 977 FUNCTION testinterval (i,first,last: integer): boolean;
31020 978 (* true if first<=i<=last *)
31030 979 BEGIN
31040 980 1 ! IF (i<first) OR (i>last) THEN
31050 981 2 ! BEGIN
31060 982 3 ! ! outstring10(illegalno);
31070 983 4 ! ! outinteger(i,4);
31080 984 5 ! ! writenl;
31090 985 6 ! ! testinterval:= false
31100 986 7 ! END
31110 987 8 ! ELSE
31120 988 9 ! testinterval:= true;
31130 989 10 END;
31140 990
31150 991
\f
feaoslst 81.05.08. 14.51. page 44
32010 992 PROCEDURE testmodeout (text: alfa20; i: integer);
32020 993 BEGIN
32030 994 1 ! IF testmode THEN
32040 995 2 ! BEGIN
32050 996 3 ! ! outstring20 (text);
32060 997 4 ! ! outinteger (i, 4);
32070 998 5 ! ! writenl;
32080 999 6 ! END;
32090 1000 7 END (* testout *);
32100 1001
32110 1002
\f
feaoslst 81.05.08. 14.51. page 45
33010 1003 PROCEDURE testsem(i: integer; VAR t_sem : semaphore);
33020 1004 (* test the semaphore t_sem, and
33030 1005 writes its status on the console if it is
33040 1006 non-passive *)
33050 1007 VAR more: boolean;
33060 1008 BEGIN
33070 1009 1 !
33080 1010 2 ! IF i>0 THEN
33090 1011 3 ! BEGIN
33100 1012 4 ! ! ap.a := sem(i).s;
33110 1013 5 ! ! bp.a := sem(i).w;
33120 1014 6 ! END
33130 1015 7 ! ELSE ap:=bp;
33140 1016 8 ! IF open(t_sem) THEN
33150 1017 9 ! BEGIN (* user semaphore no. i is open *)
33160 1018 10 ! ! IF ap=bp THEN
33170 1019 11 ! ! outchar(" ") ELSE outchar("^");
33180 1020 12 ! ! outdecimal(i,3);
33190 1021 13 ! ! outchar(":");
33200 1022 14 ! ! more:= true;
33210 1023 15 ! !
33220 1024 16 ! ! (* now count the no. of buffers on this semaphore *)
33230 1025 17 ! ! j:=0; (* j is the counter *)
33240 1026 18 ! ! WHILE more DO
33250 1027 19 ! ! BEGIN
33260 1028 20 ! ! ! sensesem(countref, t_sem);
33270 1029 21 ! ! ! IF nil(countref) THEN
33280 1030 22 ! ! ! more:= false
33290 1031 23 ! ! ! ELSE
33300 1032 24 ! ! ! BEGIN
33310 1033 25 ! ! ! ! signal(countref,countsem);
33320 1034 26 ! ! ! ! j:=j+1;
33330 1035 27 ! ! ! END
33340 1036 28 ! ! END;
33350 1037 29 ! !
33360 1038 30 ! ! outdecimal(j,3);
33370 1039 31 ! ! WHILE open(countsem) DO
33380 1040 32 ! ! BEGIN (* return the buffers to sem(i) *)
33390 1041 33 ! ! ! wait(countref,countsem);
33400 1042 34 ! ! ! signal(countref,t_sem);
33410 1043 35 ! ! END;
33420 1044 36 ! !
33430 1045 37 ! ! writenl;
33440 1046 38 ! END (* open *)
33450 1047 39 ! ELSE
33460 1048 40 ! IF locked( t_sem) THEN
\f
feaoslst 81.05.08. 14.51. page 46
33470 1049 41 !
\f
feaoslst 81.05.08. 14.51. page 47
34010 1050 42 ! BEGIN (* user semaphore no. i is locked *)
34020 1051 43 ! ! IF ap=bp THEN
34030 1052 44 ! ! outchar(" ") ELSE outchar("^");
34040 1053 45 ! ! outdecimal(i,3);
34050 1054 46 ! ! outchar(":");
34060 1055 47 ! ! outstring10(" locked ");
34070 1056 48 ! ! writenl;
34080 1057 49 ! END;
34090 1058 50 END (* testsem *);
34100 1059
34110 1060
34120 1061
34130 1062
34140 1063
34150 1064
\f
feaoslst 81.05.08. 14.51. page 48
35010 1065 PROCEDURE writenl;
35020 1066 (* prepares opbuf for output to the operator and signals
35030 1067 it to operator module *)
35040 1068 BEGIN
35050 1069 1 ! IF NOT nil(opoutref) THEN
35060 1070 2 ! BEGIN
35070 1071 3 ! ! outchar(nl);
35080 1072 4 ! ! signal(opoutref, opsem^)
35090 1073 5 ! END;
35100 1074 6 ! wait(opoutref, wsem);
35110 1075 7 ! LOCK opoutref AS opbuf: opbuftype DO
35120 1076 8 ! opbuf.last:= firstindex;
35130 1077 9 END (* writenl *);
35140 1078
35150 1079
35160 1080
\f
feaoslst 81.05.08. 14.51. page 49
36010 1081
36020 1082
36030 1083
36040 1084 (****************************************
36050 1085 * *
36060 1086 * m a i n p r o g r a m *
36070 1087 * *
36080 1088 ****************************************)
36090 1089
36100 1090
36110 1091
36120 1092
36130 1093
36140 1094
36150 1095 BEGIN
36160 1096 1 !
36170 1097 2 ! opsem:= semvector(operatorsem);
36180 1098 3 ! testmode:= false;
36190 1099 4 ! testopen (z,own.incname,opsem);
36200 1100 5 ! testout(z,version,fe_env_version);
36210 1101 6 !
36220 1102 7 ! (* initialise pointers *)
36230 1103 8 ! FOR i:=1 TO ts_sem_total DO
36240 1104 9 ! BEGIN
36250 1105 10 ! ! sem(i).s:= ref(ts_sem(i));
36260 1106 11 ! ! sem(i).w:= sem(i).s;
36270 1107 12 ! END;
36280 1108 13 !
36290 1109 14 ! (* initialize pointers to eva semaphores *)
36300 1110 15 ! sem(pax_sem_2).s:=ref(evavector(px_urec1));
36310 1111 16 ! sem(pax_sem_2).w:=sem(pax_sem_2).s;
36320 1112 17 ! sem(pax_sem_1).s:=ref(evavector(px_utrm1));
36330 1113 18 ! sem(pax_sem_1).w:=sem(pax_sem_1).s;
36340 1114 19 ! sem(pax_ncp_sem).s:=ref(evavector(px_ncp));
36350 1115 20 ! sem(pax_ncp_sem).w:=sem(pax_ncp_sem).s;
36360 1116 21 ! sem(lam_sem_no).s:= ref(evavector(al_lam1));
36370 1117 22 ! sem(lam_sem_no).w:= sem(lam_sem_no).s;
36380 1118 23 !
36390 1119 24 ! (* initialize local semaphores for netconnector *)
36400 1120 25 !
36410 1121 26 ! netc_locals(1):=sem(tssup_sem_no).s;
36420 1122 27 ! netc_locals(2):=sem(nc_sem_no).s;
36430 1123 28 !
36440 1124 29 ! (* initialise buffers *)
36450 1125 30 ! FOR i:= 1 TO 2 DO
36460 1126 31 ! BEGIN
\f
feaoslst 81.05.08. 14.51. page 50
36470 1127 32 ! !
\f
feaoslst 81.05.08. 14.51. page 51
37010 1128 33 ! ! alloc (opoutref, opbufpool, wsem);
37020 1129 34 ! ! opoutref^.u1:=2; (* write *)
37030 1130 35 ! ! LOCK opoutref AS opbuf: opbuftype DO
37040 1131 36 ! ! WITH opbuf DO
37050 1132 37 ! ! BEGIN
37060 1133 38 ! ! ! first:= firstindex;
37070 1134 39 ! ! ! name:= opsysname;
37080 1135 40 ! ! ! data(firstindex):= "!";
37090 1136 41 ! ! END;
37100 1137 42 ! ! return (opoutref);
37110 1138 43 ! END;
37120 1139 44 ! writenl;
37130 1140 45 !
37140 1141 46 ! alloc(opinref, opbufpool, wrsem);
37150 1142 47 !
37160 1143 48 ! opinref^.u1:=1; (* read *)
37170 1144 49 !
37180 1145 50 ! LOCK opinref AS opbuf: opbuftype DO
37190 1146 51 ! WITH opbuf DO
37200 1147 52 ! BEGIN
37210 1148 53 ! ! first:= firstindex;
37220 1149 54 ! ! last:= lastindex;
37230 1150 55 ! ! name:= opsysname;
37240 1151 56 ! END;
37250 1152 57 !
37260 1153 58 ! (*------- allocate all listenbuffers ---*)
37270 1154 59 ! FOR i:= 1 TO no_listen DO
37280 1155 60 ! BEGIN
37290 1156 61 ! ! alloc(cur,messbufpool,sem(com_pool).s^);
37300 1157 62 ! ! return(cur);
37310 1158 63 ! END;
37320 1159 64 !
37330 1160 65 ! (*------- allocate all paxnetbuffers ---*)
37340 1161 66 ! FOR i:=1 TO no_pax_bufs DO
37350 1162 67 ! BEGIN
37360 1163 68 ! ! alloc( cur, paxbufpool, sem(dte_sem_no).s^);
37370 1164 69 ! ! signal( cur, sem( pax_pool).s^);
37380 1165 70 ! END;
37390 1166 71 !
37400 1167 72 ! st:= 1024;
37410 1168 73 ! base:= 10;
37420 1169 74 ! firstword:= 1;
37430 1170 75 ! lastword:= 10;
37440 1171 76 !
37450 1172 77 ! setoflowmask(true);
37460 1173 78 !
\f
feaoslst 81.05.08. 14.51. page 52
37470 1174 79 !
\f
feaoslst 81.05.08. 14.51. page 53
38010 1175 80 ! noofparams:= 0;
38020 1176 81 ! (* insert auto create with edit here *)
38030 1177 82 !
38040 1178 83 ! REPEAT
38050 1179 84 ! ! (* read a line of input from the operator and execute it *)
38060 1180 85 ! !
38070 1181 86 ! ! getinput;
38080 1182 87 ! !
38090 1183 88 ! ! CASE command OF
38100 1184 89 ! ! !
38110 1185 90 ! ! ! ";": (* comment command *)
38120 1186 91 ! ! ! BEGIN
38130 1187 92 ! ! ! END;
38140 1188 93 ! ! !
38150 1189 94 ! ! !
\f
feaoslst 81.05.08. 14.51. page 54
39010 1190 95 ! ! ! "a": (* alloc *)
39020 1191 96 ! ! ! (* a buffer is allocated from the messbufpool to the current
39030 1192 97 ! ! ! reference "cur".
39040 1193 98 ! ! ! 1st param is the answersem *)
39050 1194 99 ! ! ! BEGIN
39060 1195 100 ! ! ! ! semno:= params(1);
39070 1196 101 ! ! ! !
39080 1197 102 ! ! ! ! IF noofparams >= 1 THEN
39090 1198 103 ! ! ! ! IF nil(cur) THEN
39100 1199 104 ! ! ! ! IF ((semno>0) AND (semno <= noofsemaphores))
39110 1200 105 ! ! ! ! OR ((semno<0) AND (semno >= -applsem_max)) THEN
39120 1201 106 ! ! ! ! BEGIN
39130 1202 107 ! ! ! ! ! IF semno > 0 THEN
39140 1203 108 ! ! ! ! ! alloc (cur, testbufpool, ts_sem(semno))
39150 1204 109 ! ! ! ! ! ELSE
39160 1205 110 ! ! ! ! ! alloc (cur, testbufpool, evavector(-semno));
39170 1206 111 ! ! ! ! ! WITH cur^ DO
39180 1207 112 ! ! ! ! ! BEGIN
39190 1208 113 ! ! ! ! ! ! u1:= 0;
39200 1209 114 ! ! ! ! ! ! u2:= 0;
39210 1210 115 ! ! ! ! ! ! u3:= 0;
39220 1211 116 ! ! ! ! ! ! u4:= 0;
39230 1212 117 ! ! ! ! ! END;
39240 1213 118 ! ! ! ! ! get_curbuftype;
39250 1214 119 ! ! ! ! ! outstring10(" bufsize ");
39260 1215 120 ! ! ! ! ! outinteger(curbufsize, 5);
39270 1216 121 ! ! ! ! ! outinteger(cur^.size, 5)
39280 1217 122 ! ! ! ! END
39290 1218 123 ! ! ! ! ELSE outstring10(illegalno)
39300 1219 124 ! ! ! ! ELSE outstring20("you already have one")
39310 1220 125 ! ! ! ! ELSE outstring10(noparam)
39320 1221 126 ! ! ! END (* alloc*);
39330 1222 127 ! ! !
39340 1223 128 ! ! !
\f
feaoslst 81.05.08. 14.51. page 55
40010 1224 129 ! ! ! "b": (* base *)
40020 1225 130 ! ! ! (* defines the number base for input as well as output *)
40030 1226 131 ! ! ! (* the base is always read decimally *)
40040 1227 132 ! ! ! BEGIN
40050 1228 133 ! ! ! ! IF noofparams < 1 THEN
40060 1229 134 ! ! ! ! BEGIN
40070 1230 135 ! ! ! ! ! base:= oldbase;
40080 1231 136 ! ! ! ! ! outstring10(noparam)
40090 1232 137 ! ! ! ! END
40100 1233 138 ! ! ! ! ELSE
40110 1234 139 ! ! ! !
40120 1235 140 ! ! ! ! IF NOT (params(1) IN (. 2, 8, 10, 16 .) ) THEN
40130 1236 141 ! ! ! ! BEGIN (* illegal base *)
40140 1237 142 ! ! ! ! ! outstring20("illegal base ");
40150 1238 143 ! ! ! ! ! base:= oldbase;
40160 1239 144 ! ! ! ! END
40170 1240 145 ! ! ! ! ELSE
40180 1241 146 ! ! ! ! base:= params(1);
40190 1242 147 ! ! ! END;
40200 1243 148 ! ! !
40210 1244 149 ! ! !
\f
feaoslst 81.05.08. 14.51. page 56
41010 1245 150 ! ! ! "c": (* create *)
41020 1246 151 ! ! ! (* an incarnation of each of the predefined modules to be tested
41030 1247 152 ! ! ! is created and started.
41040 1248 153 ! ! ! params are nos. of the modules to be created and started *)
41050 1249 154 ! ! !
41060 1250 155 ! ! ! IF noofparams >= 1 THEN
41070 1251 156 ! ! !
41080 1252 157 ! ! ! BEGIN
41090 1253 158 ! ! ! ! moduleno:= params(1);
41100 1254 159 ! ! ! !
41110 1255 160 ! ! ! ! IF noofparams>1 THEN st:= params(2);
41120 1256 161 ! ! ! !
41130 1257 162 ! ! ! ! IF (moduleno<1) OR (moduleno > noofmodules) THEN
41140 1258 163 ! ! ! ! BEGIN (* illegal no *)
41150 1259 164 ! ! ! ! ! outdecimal(moduleno,4);
41160 1260 165 ! ! ! ! ! outstring10(illegalno);
41170 1261 166 ! ! ! ! END
41180 1262 167 ! ! ! ! ELSE
41190 1263 168 ! ! ! ! IF moduleready(moduleno) THEN init_modul(moduleno);
41200 1264 169 ! ! ! END (* if noofparams >= 1 *)
41210 1265 170 ! ! ! ELSE outstring10 (noparam);
41220 1266 171 ! ! ! (* end create *)
41230 1267 172 ! ! !
41240 1268 173 ! ! !
\f
feaoslst 81.05.08. 14.51. page 57
42010 1269 174 ! ! ! "d": (* test dtesimulator *)
42020 1270 175 ! ! ! BEGIN
42030 1271 176 ! ! ! ! outstring10("test dte ");
42040 1272 177 ! ! ! !
42050 1273 178 ! ! ! ! sensesem( nref, sem( pax_pool).w^);
42060 1274 179 ! ! ! !
42070 1275 180 ! ! ! ! IF NOT nil( nref) THEN
42080 1276 181 ! ! ! ! BEGIN
42090 1277 182 ! ! ! ! ! nref^.u2 := 7;
42100 1278 183 ! ! ! ! ! nref^.u4 := from_link;
42110 1279 184 ! ! ! ! !
42120 1280 185 ! ! ! ! ! CASE params(1) OF
42130 1281 186 ! ! ! ! ! !
42140 1282 187 ! ! ! ! ! ! 1: (* answer to connect ext *)
42150 1283 188 ! ! ! ! ! ! BEGIN
42160 1284 189 ! ! ! ! ! ! ! nref^.u1 := rut_con;
42170 1285 190 ! ! ! ! ! ! ! nref^.u2 := rut_ok;
42180 1286 191 ! ! ! ! ! ! ! nref^.u3 := 7;
42190 1287 192 ! ! ! ! ! ! !
42200 1288 193 ! ! ! ! ! ! ! LOCK nref AS buf: rut_prefix_type DO
42210 1289 194 ! ! ! ! ! ! ! buf.ext_no := params(2);
42220 1290 195 ! ! ! ! ! ! ! (* ie d 1 20 answers on connect ext 20 *)
42230 1291 196 ! ! ! ! ! ! END;
42240 1292 197 ! ! ! ! ! !
42250 1293 198 ! ! ! ! ! ! 2: (* call request *)
42260 1294 199 ! ! ! ! ! ! BEGIN
42270 1295 200 ! ! ! ! ! ! ! nref^.u1 := dte_car;
42280 1296 201 ! ! ! ! ! ! ! nref^.u3 := params(2);
42290 1297 202 ! ! ! ! ! ! ! nref^.u4 := to_link;
42300 1298 203 ! ! ! ! ! ! ! LOCK nref AS buf:car_buf_type DO
42310 1299 204 ! ! ! ! ! ! ! WITH buf DO
42320 1300 205 ! ! ! ! ! ! ! BEGIN
42330 1301 206 ! ! ! ! ! ! ! ! first := ric_first_val;
42340 1302 207 ! ! ! ! ! ! ! ! last := ric_first_val+l_control+l_listen-1;
42350 1303 208 ! ! ! ! ! ! ! ! q_bit := false;
42360 1304 209 ! ! ! ! ! ! ! ! WITH call_buf DO
42370 1305 210 ! ! ! ! ! ! ! ! BEGIN
42380 1306 211 ! ! ! ! ! ! ! ! ! control.op_code := dte_car;
42390 1307 212 ! ! ! ! ! ! ! ! ! dte_adr_l := l_dte_adr;
42400 1308 213 ! ! ! ! ! ! ! ! ! dte_adr := packextnode(3);
42410 1309 214 ! ! ! ! ! ! ! ! ! facility_l := l_facilities;
42420 1310 215 ! ! ! ! ! ! ! ! ! facility := params(6);
42430 1311 216 ! ! ! ! ! ! ! ! END;
42440 1312 217 ! ! ! ! ! ! ! END;
42450 1313 218 ! ! ! ! ! ! !
\f
feaoslst 81.05.08. 14.51. page 58
43010 1314 219 ! ! ! ! ! ! END;
43020 1315 220 ! ! ! ! ! ! (* ie d 2 1 0 0 3 0 sends a call to 3 on stream 1 *)
43030 1316 221 ! ! ! ! ! ! (* ie d 2 2 0 0 4 0 sends a call to 4 on stream 2 *)
43040 1317 222 ! ! ! ! ! !
43050 1318 223 ! ! ! ! ! ! 3: (* call accepted from remote user *)
43060 1319 224 ! ! ! ! ! ! BEGIN
43070 1320 225 ! ! ! ! ! ! ! nref^.u1 := rut_rec;
43080 1321 226 ! ! ! ! ! ! ! nref^.u2 := rut_ok;
43090 1322 227 ! ! ! ! ! ! ! nref^.u3 := rut_default;
43100 1323 228 ! ! ! ! ! ! ! LOCK nref AS buf: rut_trp_pdata DO
43110 1324 229 ! ! ! ! ! ! ! WITH buf DO
43120 1325 230 ! ! ! ! ! ! ! make_phead( 3, dte_aic, phead);
43130 1326 231 ! ! ! ! ! ! END;
43140 1327 232 ! ! ! ! ! ! (* ie d 3 1 0 0 3 0 0 2 0 is 3 accepting call from 2 *)
43150 1328 233 ! ! ! ! ! !
43160 1329 234 ! ! ! ! ! ! 4: (* send data to remote user *)
43170 1330 235 ! ! ! ! ! ! BEGIN
43180 1331 236 ! ! ! ! ! ! ! nref^.u1 := dte_sdata;
43190 1332 237 ! ! ! ! ! ! ! nref^.u3 := params(2);
43200 1333 238 ! ! ! ! ! ! ! LOCK nref AS buf : dte_sdata_data DO
43210 1334 239 ! ! ! ! ! ! ! WITH buf DO
43220 1335 240 ! ! ! ! ! ! ! BEGIN
43230 1336 241 ! ! ! ! ! ! ! ! q_bit := false;
43240 1337 242 ! ! ! ! ! ! ! ! m_bit := false;
43250 1338 243 ! ! ! ! ! ! ! ! control.op_code := dte_sdata;
43260 1339 244 ! ! ! ! ! ! ! END
43270 1340 245 ! ! ! ! ! ! END;
43280 1341 246 ! ! ! ! ! ! (* ie d 4 1 sends data on stream 1 *)
43290 1342 247 ! ! ! ! ! !
43300 1343 248 ! ! ! ! ! !
43310 1344 249 ! ! ! ! ! !
43320 1345 250 ! ! ! ! ! ! OTHERWISE
43330 1346 251 ! ! ! ! ! ! outstring10("undef test");
43340 1347 252 ! ! ! ! ! END;
43350 1348 253 ! ! ! ! ! signal( nref, sem( dte_sem_no).s^);
43360 1349 254 ! ! ! ! END
43370 1350 255 ! ! ! ! ELSE
43380 1351 256 ! ! ! ! outstring10("no paxbufs");
43390 1352 257 ! ! ! !
43400 1353 258 ! ! ! END;
43410 1354 259 ! ! !
43420 1355 260 ! ! !
\f
feaoslst 81.05.08. 14.51. page 59
44010 1356 261 ! ! ! "f": (* fill *)
44020 1357 262 ! ! ! (* fills integers into current buffer.
44030 1358 263 ! ! ! 1st param: first word no. to be filled,
44040 1359 264 ! ! ! following: values to be assigned *)
44050 1360 265 ! ! ! BEGIN
44060 1361 266 ! ! ! ! IF noofparams < 2 THEN
44070 1362 267 ! ! ! ! outstring10("param ")
44080 1363 268 ! ! ! ! ELSE
44090 1364 269 ! ! ! ! IF (params(1) < 1) THEN
44100 1365 270 ! ! ! ! outstring20("illegal start ")
44110 1366 271 ! ! ! ! ELSE
44120 1367 272 ! ! ! ! IF nil(cur) THEN
44130 1368 273 ! ! ! ! outstring10("no buffer ")
44140 1369 274 ! ! ! ! ELSE
44150 1370 275 ! ! ! ! BEGIN (* params are ok *)
44160 1371 276 ! ! ! ! ! i:= params(1); (* i points into the messbuf *)
44170 1372 277 ! ! ! ! !
44180 1373 278 ! ! ! ! ! FOR j:= 2 TO noofparams DO
44190 1374 279 ! ! ! ! ! (* j points into the param list *)
44200 1375 280 ! ! ! ! ! IF i <= curbufsize THEN
44210 1376 281 ! ! ! ! ! BEGIN
44220 1377 282 ! ! ! ! ! ! CASE curbuftype OF
44230 1378 283 ! ! ! ! ! ! ! 1: LOCK cur AS minbuf: minbuftype DO
44240 1379 284 ! ! ! ! ! ! ! minbuf(i):= params(j);
44250 1380 285 ! ! ! ! ! ! ! 2: LOCK cur AS messbuf: messbuftype DO
44260 1381 286 ! ! ! ! ! ! ! messbuf(i):= params(j);
44270 1382 287 ! ! ! ! ! ! ! 3: LOCK cur AS maxbuf: maxbuftype DO
44280 1383 288 ! ! ! ! ! ! ! maxbuf(i):= params(j);
44290 1384 289 ! ! ! ! ! ! ! 4: LOCK cur AS testbuf: testbuftype DO
44300 1385 290 ! ! ! ! ! ! ! testbuf(i):= params(j);
44310 1386 291 ! ! ! ! ! ! ! OTHERWISE
44320 1387 292 ! ! ! ! ! ! END;
44330 1388 293 ! ! ! ! ! ! i:= i + 1;
44340 1389 294 ! ! ! ! ! END;
44350 1390 295 ! ! ! ! !
44360 1391 296 ! ! ! ! END (* params ok *)
44370 1392 297 ! ! ! END (* fill *);
44380 1393 298 ! ! !
44390 1394 299 ! ! !
\f
feaoslst 81.05.08. 14.51. page 60
45010 1395 300 ! ! ! "h": (* help *)
45020 1396 301 ! ! ! (* lists possible commands and no. of parameters *)
45030 1397 302 ! ! ! BEGIN
45040 1398 303 ! ! ! ! outstring20("comm and no of param"); writenl;
45050 1399 304 ! ! ! ! outstring20("a: allocate 1 "); writenl;
45060 1400 305 ! ! ! ! outstring20("b: base 1 "); writenl;
45070 1401 306 ! ! ! ! outstring20("c: create >=1 "); writenl;
45080 1402 307 ! ! ! ! outstring20("e: execute 1 "); writenl;
45090 1403 308 ! ! ! ! outstring20("f: fill 2 "); writenl;
45100 1404 309 ! ! ! ! outstring20("h: help 0 "); writenl;
45110 1405 310 ! ! ! ! outstring20("i: init point 0 "); writenl;
45120 1406 311 ! ! ! ! outstring20("k: kill >=1 "); writenl;
45130 1407 312 ! ! ! ! outstring20("o: output 0 to 2"); writenl;
45140 1408 313 ! ! ! ! outstring20("p: partial >=3 "); writenl;
45150 1409 314 ! ! ! ! outstring20("r: return 0 "); writenl;
45160 1410 315 ! ! ! ! outstring20("s: signal 1 "); writenl;
45170 1411 316 ! ! ! ! outstring20("t: test 0 or 1"); writenl;
45180 1412 317 ! ! ! ! outstring20("u: user param 1 to 4"); writenl;
45190 1413 318 ! ! ! ! outstring20("w: wait 1 "); writenl;
45200 1414 319 ! ! ! ! outstring20("x: exch point 2 "); writenl;
45210 1415 320 ! ! ! ! outstring20(";: comment ");
45220 1416 321 ! ! ! END;
45230 1417 322 ! ! !
45240 1418 323 ! ! !
\f
feaoslst 81.05.08. 14.51. page 61
46010 1419 324 ! ! ! "i": (* initialise pointers *)
46020 1420 325 ! ! ! IF noofparams=0 THEN
46030 1421 326 ! ! ! FOR i:=1 TO noofsemaphores DO sem(i).w:= sem(i).s ELSE
46040 1422 327 ! ! ! IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN
46050 1423 328 ! ! ! sem(params(1)).w:= sem(params(1)).s ELSE
46060 1424 329 ! ! ! outstring10(valparam);
46070 1425 330 ! ! !
46080 1426 331 ! ! !
\f
feaoslst 81.05.08. 14.51. page 62
47010 1427 332 ! ! ! "e", (* exception *)
47020 1428 333 ! ! ! (* call of exception routine in one or more incarnations *)
47030 1429 334 ! ! ! "k": (* kill *)
47040 1430 335 ! ! ! (* removes incarnation of tested module(s)
47050 1431 336 ! ! ! params are nos. of modules to be removed *)
47060 1432 337 ! ! !
47070 1433 338 ! ! ! IF noofparams >= 1 THEN
47080 1434 339 ! ! ! FOR i:= 1 TO noofparams DO
47090 1435 340 ! ! ! BEGIN
47100 1436 341 ! ! ! ! moduleno:= params(i);
47110 1437 342 ! ! ! ! IF (1<=moduleno) AND (moduleno<=noofmodules) THEN
47120 1438 343 ! ! ! ! IF NOT nil(sh(moduleno)) THEN
47130 1439 344 ! ! ! ! IF command="e" THEN
47140 1440 345 ! ! ! ! break(sh(moduleno),#h2f) ELSE
47150 1441 346 ! ! ! ! remove (sh(moduleno))
47160 1442 347 ! ! ! ! ELSE
47170 1443 348 ! ! ! ! BEGIN
47180 1444 349 ! ! ! ! ! outdecimal (moduleno, 4);
47190 1445 350 ! ! ! ! ! outstring10(" not alive");
47200 1446 351 ! ! ! ! ! writenl;
47210 1447 352 ! ! ! ! END
47220 1448 353 ! ! ! ! ELSE
47230 1449 354 ! ! ! ! BEGIN
47240 1450 355 ! ! ! ! ! outdecimal (moduleno, 4);
47250 1451 356 ! ! ! ! ! outstring10(illegalno);
47260 1452 357 ! ! ! ! ! writenl;
47270 1453 358 ! ! ! ! END
47280 1454 359 ! ! ! END
47290 1455 360 ! ! ! ELSE outstring10("no params ");
47300 1456 361 ! ! !
47310 1457 362 ! ! !
\f
feaoslst 81.05.08. 14.51. page 63
48010 1458 363 ! ! ! "m": (* testmode *)
48020 1459 364 ! ! ! testmode:= NOT testmode;
48030 1460 365 ! ! !
48040 1461 366 ! ! !
\f
feaoslst 81.05.08. 14.51. page 64
49010 1462 367 ! ! ! "n": (* test netconnector *)
49020 1463 368 ! ! ! BEGIN
49030 1464 369 ! ! ! ! outstring10("test netc ");
49040 1465 370 ! ! ! !
49050 1466 371 ! ! ! ! sensesem( nref, sem( pax_pool).w^);
49060 1467 372 ! ! ! !
49070 1468 373 ! ! ! ! IF NOT nil( nref) THEN
49080 1469 374 ! ! ! ! BEGIN
49090 1470 375 ! ! ! ! !
49100 1471 376 ! ! ! ! ! nref^.u2 := 7;
49110 1472 377 ! ! ! ! !
49120 1473 378 ! ! ! ! ! CASE params(1) OF
49130 1474 379 ! ! ! ! ! !
49140 1475 380 ! ! ! ! ! ! 1: (* update pax-table from local sup *)
49150 1476 381 ! ! ! ! ! ! BEGIN
49160 1477 382 ! ! ! ! ! ! ! nref^.u3 := tss_route;
49170 1478 383 ! ! ! ! ! ! ! nref^.u4 := #hac;
49180 1479 384 ! ! ! ! ! ! !
49190 1480 385 ! ! ! ! ! ! ! LOCK nref AS buf : RECORD
49200 1481 386 ! ! ! ! ! ! ! ! a:alarmlabel;
49210 1482 387 ! ! ! ! ! ! ! ! i : integer;
49220 1483 388 ! ! ! ! ! ! ! ! p:paxnet_e;
49230 1484 389 ! ! ! ! ! ! ! END DO
49240 1485 390 ! ! ! ! ! ! ! WITH buf DO
49250 1486 391 ! ! ! ! ! ! ! BEGIN
49260 1487 392 ! ! ! ! ! ! ! ! a.update := insert_code;
49270 1488 393 ! ! ! ! ! ! ! ! a.rec.macro := packmacro(2);
49280 1489 394 ! ! ! ! ! ! ! ! a.rec.micro := netc_mic_addr;
49290 1490 395 ! ! ! ! ! ! ! ! a.send.macro := packmacro(5);
49300 1491 396 ! ! ! ! ! ! ! ! p.al_mac_addr := packmacro(8);
49310 1492 397 ! ! ! ! ! ! ! ! p.pax_addr := packextnode(11);
49320 1493 398 ! ! ! ! ! ! ! ! i := params(14);
49330 1494 399 ! ! ! ! ! ! ! ! p.stream_no := params(15);
49340 1495 400 ! ! ! ! ! ! ! END;
49350 1496 401 ! ! ! ! ! ! ! (* receiver sender al-mac pax indx stream *)
49360 1497 402 ! ! ! ! ! ! ! (* ie n 1 0 0 0 1 0 0 1 2 2 0 0 2 1 0 sets netc address *)
49370 1498 403 ! ! ! ! ! ! ! (* ie n 1 1 2 2 1 0 0 1 2 2 0 0 2 2 1 sets tssup addr *)
49380 1499 404 ! ! ! ! ! ! ! (* ie n 1 1 2 2 1 0 0 1 2 0 0 0 2 3 2 sets ncsup addr *)
49390 1500 405 ! ! ! ! ! ! ! (* ie n 1 1 2 2 1 0 0 1 3 2 0 0 3 4 0 sets global ts-adr*)
49400 1501 406 ! ! ! ! ! ! ! (* ie n 1 1 2 2 1 0 0 1 3 0 0 0 3 5 0 sets global nc-adr*)
49410 1502 407 ! ! ! ! ! ! END;
49420 1503 408 ! ! ! ! ! !
49430 1504 409 ! ! ! ! ! !
\f
feaoslst 81.05.08. 14.51. page 65
50010 1505 410 ! ! ! ! ! ! 2 : (* update pax-table from net *)
50020 1506 411 ! ! ! ! ! ! BEGIN
50030 1507 412 ! ! ! ! ! ! ! nref^.u3 := params(15);
50040 1508 413 ! ! ! ! ! ! ! nref^.u4 := to_link;
50050 1509 414 ! ! ! ! ! ! !
50060 1510 415 ! ! ! ! ! ! ! LOCK nref AS buf : RECORD
50070 1511 416 ! ! ! ! ! ! ! ! x,y,z:integer;
50080 1512 417 ! ! ! ! ! ! ! ! b1,b2:boolean;
50090 1513 418 ! ! ! ! ! ! ! ! d:byte;
50100 1514 419 ! ! ! ! ! ! ! ! control: control_field_type;
50110 1515 420 ! ! ! ! ! ! ! ! a:alarmlabel;
50120 1516 421 ! ! ! ! ! ! ! ! i:integer;
50130 1517 422 ! ! ! ! ! ! ! ! p:paxnet_e;
50140 1518 423 ! ! ! ! ! ! ! END DO
50150 1519 424 ! ! ! ! ! ! ! WITH buf DO
50160 1520 425 ! ! ! ! ! ! ! BEGIN
50170 1521 426 ! ! ! ! ! ! ! ! a.update := insert_code;
50180 1522 427 ! ! ! ! ! ! ! ! a.rec.macro := packmacro(2);
50190 1523 428 ! ! ! ! ! ! ! ! a.rec.micro:=netc_mic_addr;
50200 1524 429 ! ! ! ! ! ! ! ! a.send.macro:=packmacro(5);
50210 1525 430 ! ! ! ! ! ! ! ! p.al_mac_addr := packmacro(8);
50220 1526 431 ! ! ! ! ! ! ! ! p.pax_addr := packextnode(11);
50230 1527 432 ! ! ! ! ! ! ! ! i:=params(14);
50240 1528 433 ! ! ! ! ! ! ! ! p.stream_no := 0;
50250 1529 434 ! ! ! ! ! ! ! END;
50260 1530 435 ! ! ! ! ! ! END;
50270 1531 436 ! ! ! ! ! ! (* receiver sender al-mac pax indx stream *)
50280 1532 437 ! ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 4 2 0 0 4 6 1 sets global ts-addr *)
50290 1533 438 ! ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 4 0 0 0 4 7 1 sets global nc-addr *)
50300 1534 439 ! ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 5 2 0 0 5 8 1 sets global ts-addr *)
50310 1535 440 ! ! ! ! ! ! (* ie n 2 1 2 2 1 0 0 1 5 0 0 0 5 9 1 sets global nc-addr *)
50320 1536 441 ! ! ! ! ! !
50330 1537 442 ! ! ! ! ! !
\f
feaoslst 81.05.08. 14.51. page 66
51010 1538 443 ! ! ! ! ! ! 3: (* send alarmmessage *)
51020 1539 444 ! ! ! ! ! ! BEGIN
51030 1540 445 ! ! ! ! ! ! ! nref^.u3 := tss_route;
51040 1541 446 ! ! ! ! ! ! ! nref^.u4 := #h30;
51050 1542 447 ! ! ! ! ! ! !
51060 1543 448 ! ! ! ! ! ! ! LOCK nref AS abuf : alarmlabel DO
51070 1544 449 ! ! ! ! ! ! ! abuf.rec.macro := packmacro(2);
51080 1545 450 ! ! ! ! ! ! !
51090 1546 451 ! ! ! ! ! ! ! (* receiver *)
51100 1547 452 ! ! ! ! ! ! ! (* ie n 3 1 2 2 gives an alarm to tssup itself *)
51110 1548 453 ! ! ! ! ! ! ! (* ie n 3 1 2 0 gives an alarm to ncsup local *)
51120 1549 454 ! ! ! ! ! ! ! (* ie n 3 1 3 2 gives an alarm to tssup global *)
51130 1550 455 ! ! ! ! ! ! ! (* ie n 3 1 3 0 gives an alarm to ncsup global *)
51140 1551 456 ! ! ! ! ! ! END;
51150 1552 457 ! ! ! ! ! !
51160 1553 458 ! ! ! ! ! !
51170 1554 459 ! ! ! ! ! ! OTHERWISE
51180 1555 460 ! ! ! ! ! ! outstring10("undef test");
51190 1556 461 ! ! ! ! ! END;
51200 1557 462 ! ! ! ! ! signal( nref, sem( netc_sem_no).s^);
51210 1558 463 ! ! ! ! END
51220 1559 464 ! ! ! ! ELSE
51230 1560 465 ! ! ! ! outstring10("no paxbufs");
51240 1561 466 ! ! ! END;
51250 1562 467 ! ! !
51260 1563 468 ! ! !
51270 1564 469 ! ! !
\f
feaoslst 81.05.08. 14.51. page 67
52010 1565 470 ! ! ! "o": (* output *)
52020 1566 471 ! ! ! (* outputs current buffer incl. user parameters
52030 1567 472 ! ! ! 1st param is firstword,
52040 1568 473 ! ! ! 2nd param is lastword *)
52050 1569 474 ! ! ! BEGIN
52060 1570 475 ! ! ! ! IF nil(cur) THEN
52070 1571 476 ! ! ! ! outstring10 ("no buffer ")
52080 1572 477 ! ! ! ! ELSE
52090 1573 478 ! ! ! ! BEGIN
52100 1574 479 ! ! ! ! ! outchar("u");
52110 1575 480 ! ! ! ! ! outchar(":");
52120 1576 481 ! ! ! ! !
52130 1577 482 ! ! ! ! ! outinteger(cur^.u1,4);
52140 1578 483 ! ! ! ! ! outinteger(cur^.u2,4);
52150 1579 484 ! ! ! ! ! outinteger(cur^.u3,4);
52160 1580 485 ! ! ! ! ! outinteger(cur^.u4,4);
52170 1581 486 ! ! ! ! ! writenl;
52180 1582 487 ! ! ! ! !
52190 1583 488 ! ! ! ! ! IF (noofparams>=1) AND (params(1)>=1)
52200 1584 489 ! ! ! ! ! AND (params(1)<= curbufsize) THEN
52210 1585 490 ! ! ! ! ! firstword:= params(1);
52220 1586 491 ! ! ! ! !
52230 1587 492 ! ! ! ! ! IF (noofparams>=2) AND (params(2)<=curbufsize) THEN
52240 1588 493 ! ! ! ! ! lastword:= params(2);
52250 1589 494 ! ! ! ! ! IF lastword>curbufsize THEN
52260 1590 495 ! ! ! ! ! lastword:= curbufsize;
52270 1591 496 ! ! ! ! !
52280 1592 497 ! ! ! ! ! IF cur^.size<curbufsize THEN
52290 1593 498 ! ! ! ! ! outstring20("too small buffer ") ELSE
52300 1594 499 ! ! ! ! ! FOR i:= firstword TO lastword DO
52310 1595 500 ! ! ! ! ! BEGIN
52320 1596 501 ! ! ! ! ! ! outdecimal(i,3);
52330 1597 502 ! ! ! ! ! ! outchar(":");
52340 1598 503 ! ! ! ! ! ! CASE curbuftype OF
52350 1599 504 ! ! ! ! ! ! ! 1: LOCK cur AS minbuf: minbuftype DO
52360 1600 505 ! ! ! ! ! ! ! j:= minbuf(i);
52370 1601 506 ! ! ! ! ! ! ! 2: LOCK cur AS messbuf: messbuftype DO
52380 1602 507 ! ! ! ! ! ! ! j:= messbuf(i);
52390 1603 508 ! ! ! ! ! ! ! 3: LOCK cur AS maxbuf: maxbuftype DO
52400 1604 509 ! ! ! ! ! ! ! j:= maxbuf(i);
52410 1605 510 ! ! ! ! ! ! ! 4: LOCK cur AS testbuf: testbuftype DO
52420 1606 511 ! ! ! ! ! ! ! j:= testbuf(i);
52430 1607 512 ! ! ! ! ! ! ! OTHERWISE
52440 1608 513 ! ! ! ! ! ! ! j:= 0;
52450 1609 514 ! ! ! ! ! ! END;
52460 1610 515 ! ! ! ! ! ! IF base= 2 THEN
\f
feaoslst 81.05.08. 14.51. page 68
52470 1611 516 ! ! ! ! ! !
\f
feaoslst 81.05.08. 14.51. page 69
53010 1612 517 ! ! ! ! ! ! outinteger(j,17)
53020 1613 518 ! ! ! ! ! ! ELSE
53030 1614 519 ! ! ! ! ! ! outinteger(j,7);
53040 1615 520 ! ! ! ! ! ! writenl;
53050 1616 521 ! ! ! ! ! END;
53060 1617 522 ! ! ! ! END (* ok *);
53070 1618 523 ! ! ! END (* output *);
53080 1619 524 ! ! !
53090 1620 525 ! ! !
\f
feaoslst 81.05.08. 14.51. page 70
54010 1621 526 ! ! ! "p": (* partial words *)
54020 1622 527 ! ! ! (* fills partial words i.e. bytes into current buffer.
54030 1623 528 ! ! ! 1st param: word no. in which to start
54040 1624 529 ! ! ! 2nd param: byte no. (of 1st word) in which to start:
54050 1625 530 ! ! ! - 0: left byte
54060 1626 531 ! ! ! - 1: right byte
54070 1627 532 ! ! ! following: byte values to be assigned *)
54080 1628 533 ! ! ! BEGIN
54090 1629 534 ! ! ! ! IF noofparams<2 THEN
54100 1630 535 ! ! ! ! outstring10("param ")
54110 1631 536 ! ! ! ! ELSE
54120 1632 537 ! ! ! ! IF (params(1)<1) THEN
54130 1633 538 ! ! ! ! outstring20("illegal start-word ")
54140 1634 539 ! ! ! ! ELSE
54150 1635 540 ! ! ! ! IF NOT (params(2) IN (.0,1.)) THEN
54160 1636 541 ! ! ! ! outstring20 ("2nd must be 0 or 1 ")
54170 1637 542 ! ! ! ! ELSE
54180 1638 543 ! ! ! ! IF nil (cur) THEN
54190 1639 544 ! ! ! ! outstring10 ("no buffer ")
54200 1640 545 ! ! ! ! ELSE
54210 1641 546 ! ! ! ! BEGIN (* params are ok *)
54220 1642 547 ! ! ! ! ! i:= params(1); (* i points into current buffer *)
54230 1643 548 ! ! ! ! ! j:= params(2);
54240 1644 549 ! ! ! ! !
54250 1645 550 ! ! ! ! ! IF cur^.size<messbufsize THEN
54260 1646 551 ! ! ! ! ! outstring20("too small buffer ") ELSE
54270 1647 552 ! ! ! ! ! LOCK cur AS messbuf: messbuftype DO
54280 1648 553 ! ! ! ! ! BEGIN
54290 1649 554 ! ! ! ! ! ! IF messbuf(i)<0 THEN
54300 1650 555 ! ! ! ! ! ! leftbyte:= (messbuf(i)+255) DIV 256
54310 1651 556 ! ! ! ! ! ! ELSE
54320 1652 557 ! ! ! ! ! ! leftbyte:= messbuf(i) DIV 256;
54330 1653 558 ! ! ! ! ! !
54340 1654 559 ! ! ! ! ! ! FOR k:= 3 TO noofparams DO
54350 1655 560 ! ! ! ! ! ! (* k points into the parameter list *)
54360 1656 561 ! ! ! ! ! ! IF i<= messbufsize THEN
54370 1657 562 ! ! ! ! ! ! BEGIN
54380 1658 563 ! ! ! ! ! ! ! CASE j OF
54390 1659 564 ! ! ! ! ! ! ! ! 0:
54400 1660 565 ! ! ! ! ! ! ! ! BEGIN (* left *)
54410 1661 566 ! ! ! ! ! ! ! ! ! rightbyte:= abs(messbuf(i) MOD 256);
54420 1662 567 ! ! ! ! ! ! ! ! ! leftbyte := params (k);
54430 1663 568 ! ! ! ! ! ! ! ! END;
54440 1664 569 ! ! ! ! ! ! ! ! 1:
54450 1665 570 ! ! ! ! ! ! ! ! BEGIN (* right *)
54460 1666 571 ! ! ! ! ! ! ! ! ! rightbyte:= params (k);
\f
feaoslst 81.05.08. 14.51. page 71
54470 1667 572 ! ! ! ! ! ! ! ! !
\f
feaoslst 81.05.08. 14.51. page 72
55010 1668 573 ! ! ! ! ! ! ! ! ! IF leftbyte>=128 THEN
55020 1669 574 ! ! ! ! ! ! ! ! ! BEGIN
55030 1670 575 ! ! ! ! ! ! ! ! ! ! messbuf(i):= (leftbyte-128)*256 + rightbyte;
55040 1671 576 ! ! ! ! ! ! ! ! ! ! IF messbuf(i)>0 THEN
55050 1672 577 ! ! ! ! ! ! ! ! ! ! messbuf(i):= -((32767-messbuf(i))+1)
55060 1673 578 ! ! ! ! ! ! ! ! ! ! ELSE messbuf(i):= -32768;
55070 1674 579 ! ! ! ! ! ! ! ! ! END
55080 1675 580 ! ! ! ! ! ! ! ! ! ELSE
55090 1676 581 ! ! ! ! ! ! ! ! ! messbuf(i):= leftbyte*256 + rightbyte;
55100 1677 582 ! ! ! ! ! ! ! ! ! i:= i+1;
55110 1678 583 ! ! ! ! ! ! ! ! END;
55120 1679 584 ! ! ! ! ! ! ! !
55130 1680 585 ! ! ! ! ! ! ! END (* case *);
55140 1681 586 ! ! ! ! ! ! !
55150 1682 587 ! ! ! ! ! ! ! j:= 1-j;
55160 1683 588 ! ! ! ! ! ! END;
55170 1684 589 ! ! ! ! ! !
55180 1685 590 ! ! ! ! ! ! IF (j=1) AND (i<=messbufsize) THEN
55190 1686 591 ! ! ! ! ! ! IF leftbyte>=128 THEN
55200 1687 592 ! ! ! ! ! ! BEGIN
55210 1688 593 ! ! ! ! ! ! ! IF messbuf(i)>0 THEN
55220 1689 594 ! ! ! ! ! ! ! messbuf(i):= (leftbyte-128)*256 + rightbyte
55230 1690 595 ! ! ! ! ! ! ! ELSE messbuf(i):= - 32768;
55240 1691 596 ! ! ! ! ! ! ! messbuf(i):= -((32767-messbuf(i))+1);
55250 1692 597 ! ! ! ! ! ! END
55260 1693 598 ! ! ! ! ! ! ELSE
55270 1694 599 ! ! ! ! ! ! messbuf(i):= leftbyte*256 + rightbyte;
55280 1695 600 ! ! ! ! ! END (* lock *);
55290 1696 601 ! ! ! ! END (* params ok *);
55300 1697 602 ! ! ! END (* partial *);
55310 1698 603 ! ! !
55320 1699 604 ! ! !
\f
feaoslst 81.05.08. 14.51. page 73
56010 1700 605 ! ! ! "r": (* return *)
56020 1701 606 ! ! ! (* returns current buffer *)
56030 1702 607 ! ! ! IF nil(cur)
56040 1703 608 ! ! ! THEN outstring10("no buffer ")
56050 1704 609 ! ! ! ELSE return(cur);
56060 1705 610 ! ! !
56070 1706 611 ! ! !
\f
feaoslst 81.05.08. 14.51. page 74
57010 1707 612 ! ! ! "s": (* signal *)
57020 1708 613 ! ! ! (* signals current buffer to one of the predefined semaphores.
57030 1709 614 ! ! ! 1st param is semno *)
57040 1710 615 ! ! ! BEGIN
57050 1711 616 ! ! ! ! semno:= params(1);
57060 1712 617 ! ! ! !
57070 1713 618 ! ! ! ! IF noofparams >= 1 THEN
57080 1714 619 ! ! ! ! IF (1<=semno) AND (semno<=noofsemaphores) THEN
57090 1715 620 ! ! ! ! IF NOT nil(cur) THEN
57100 1716 621 ! ! ! ! signal (cur,ts_sem(semno))
57110 1717 622 ! ! ! ! ELSE outstring10("no buffer ")
57120 1718 623 ! ! ! ! ELSE
57130 1719 624 ! ! ! ! IF (semno <= -1) AND (semno >= -applsem_max) THEN
57140 1720 625 ! ! ! ! signal( cur, evavector( -semno))
57150 1721 626 ! ! ! ! ELSE outstring10(illegalno)
57160 1722 627 ! ! ! ! ELSE outstring10(noparam)
57170 1723 628 ! ! ! END (* signal *);
57180 1724 629 ! ! !
57190 1725 630 ! ! !
\f
feaoslst 81.05.08. 14.51. page 75
58010 1726 631 ! ! ! "t": (* testsem *)
58020 1727 632 ! ! ! (* tests the status of the specified semaphores.
58030 1728 633 ! ! ! if none is specified, the status of all the
58040 1729 634 ! ! ! user semaphores is given.
58050 1730 635 ! ! ! in both cases nothing will be written for a semaphore
58060 1731 636 ! ! ! if it is passive. *)
58070 1732 637 ! ! ! BEGIN
58080 1733 638 ! ! ! ! IF noofparams=0 THEN
58090 1734 639 ! ! ! ! BEGIN (* test all semaphores *)
58100 1735 640 ! ! ! ! !
58110 1736 641 ! ! ! ! ! FOR i:= -applsem_max TO -1 DO
58120 1737 642 ! ! ! ! ! testsem( i,evavector(-i));
58130 1738 643 ! ! ! ! !
58140 1739 644 ! ! ! ! ! FOR i:=1 TO noofsemaphores DO
58150 1740 645 ! ! ! ! ! testsem(i,ts_sem(i))
58160 1741 646 ! ! ! ! END (* test all *)
58170 1742 647 ! ! ! ! ELSE
58180 1743 648 ! ! ! ! BEGIN (* test the specified semaphores *)
58190 1744 649 ! ! ! ! !
58200 1745 650 ! ! ! ! ! FOR i:=1 TO noofparams DO
58210 1746 651 ! ! ! ! ! IF (params(i)=0) OR (params(i)>noofsemaphores)
58220 1747 652 ! ! ! ! ! OR (params(i) < -applsem_max) THEN
58230 1748 653 ! ! ! ! ! BEGIN (* illegal no. *)
58240 1749 654 ! ! ! ! ! ! outstring20("illegal no.: ");
58250 1750 655 ! ! ! ! ! ! outdecimal(params(i),3);
58260 1751 656 ! ! ! ! ! ! writenl;
58270 1752 657 ! ! ! ! ! END (* illegal no *)
58280 1753 658 ! ! ! ! ! ELSE
58290 1754 659 ! ! ! ! ! BEGIN
58300 1755 660 ! ! ! ! ! ! IF params(i)>0 THEN
58310 1756 661 ! ! ! ! ! ! testsem( params(i), ts_sem(params(i)))
58320 1757 662 ! ! ! ! ! ! ELSE
58330 1758 663 ! ! ! ! ! ! testsem( params(i), evavector(-params(i)));
58340 1759 664 ! ! ! ! ! END
58350 1760 665 ! ! ! ! END (* test the specified semaphores *)
58360 1761 666 ! ! ! END (* testsem *);
58370 1762 667 ! ! !
58380 1763 668 ! ! !
58390 1764 669 ! ! !
\f
feaoslst 81.05.08. 14.51. page 76
59010 1765 670 ! ! ! "u": (* user parameters *)
59020 1766 671 ! ! ! (* inserts user param into header of current buffer
59030 1767 672 ! ! ! 1st param is u1
59040 1768 673 ! ! ! 2nd param is u2
59050 1769 674 ! ! ! 3rd param is u3
59060 1770 675 ! ! ! 4th param is u4 *)
59070 1771 676 ! ! ! BEGIN
59080 1772 677 ! ! ! ! IF nil(cur)
59090 1773 678 ! ! ! ! THEN outstring10("no buffer ")
59100 1774 679 ! ! ! ! ELSE
59110 1775 680 ! ! ! ! IF noofparams = 0 THEN
59120 1776 681 ! ! ! ! outstring10(noparam)
59130 1777 682 ! ! ! ! ELSE
59140 1778 683 ! ! ! ! WITH cur^ DO
59150 1779 684 ! ! ! ! BEGIN
59160 1780 685 ! ! ! ! ! IF testinterval (params(1),0,255) THEN u1:= params(1);
59170 1781 686 ! ! ! ! ! IF (noofparams>=2) THEN IF testinterval(params(2),0,255) THEN
59180 1782 687 ! ! ! ! ! u2:= params(2);
59190 1783 688 ! ! ! ! ! IF (noofparams>=3) THEN IF testinterval(params(3),0,255) THEN
59200 1784 689 ! ! ! ! ! u3:= params(3);
59210 1785 690 ! ! ! ! ! IF (noofparams>=4) THEN IF testinterval(params(4),0,255) THEN
59220 1786 691 ! ! ! ! ! u4:= params(4);
59230 1787 692 ! ! ! ! END
59240 1788 693 ! ! ! END; (* end user parameters *)
59250 1789 694 ! ! !
59260 1790 695 ! ! !
59270 1791 696 ! ! !
\f
feaoslst 81.05.08. 14.51. page 77
60010 1792 697 ! ! ! "w": (* wait *)
60020 1793 698 ! ! ! (* waits for semaphore semno.
60030 1794 699 ! ! ! 1st param is semno *)
60040 1795 700 ! ! ! BEGIN
60050 1796 701 ! ! ! ! semno:= params(1);
60060 1797 702 ! ! ! !
60070 1798 703 ! ! ! ! IF noofparams >= 1 THEN
60080 1799 704 ! ! ! ! IF nil(cur) THEN
60090 1800 705 ! ! ! ! IF ((semno>0) AND (semno <= noofsemaphores))
60100 1801 706 ! ! ! ! OR ((semno<0) AND (semno >= -applsem_max)) THEN
60110 1802 707 ! ! ! ! BEGIN
60120 1803 708 ! ! ! ! ! IF semno > 0 THEN
60130 1804 709 ! ! ! ! ! sensesem( cur, ts_sem(semno))
60140 1805 710 ! ! ! ! ! ELSE
60150 1806 711 ! ! ! ! ! sensesem( cur, evavector(-semno));
60160 1807 712 ! ! ! ! ! IF nil(cur) THEN
60170 1808 713 ! ! ! ! ! outstring20("semaphore not open ")
60180 1809 714 ! ! ! ! ! ELSE
60190 1810 715 ! ! ! ! ! BEGIN
60200 1811 716 ! ! ! ! ! ! get_curbuftype;
60210 1812 717 ! ! ! ! ! ! outstring10(" bufsize ");
60220 1813 718 ! ! ! ! ! ! outinteger(curbufsize, 5);
60230 1814 719 ! ! ! ! ! ! outinteger(cur^.size, 5)
60240 1815 720 ! ! ! ! ! END;
60250 1816 721 ! ! ! ! END
60260 1817 722 ! ! ! ! ELSE outstring10(illegalno)
60270 1818 723 ! ! ! ! ELSE outstring20("you already have one")
60280 1819 724 ! ! ! ! ELSE outstring10(noparam)
60290 1820 725 ! ! ! END (* wait *);
60300 1821 726 ! ! !
60310 1822 727 ! ! !
\f
feaoslst 81.05.08. 14.51. page 78
61010 1823 728 ! ! ! "x": (* exchange pointer *)
61020 1824 729 ! ! ! BEGIN
61030 1825 730 ! ! ! ! IF noofparams >= 2 THEN
61040 1826 731 ! ! ! ! IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN
61050 1827 732 ! ! ! ! IF (params(2)>0) AND (params(2)<=noofsemaphores) THEN
61060 1828 733 ! ! ! ! BEGIN
61070 1829 734 ! ! ! ! ! worksem:= sem(params(1)).w;
61080 1830 735 ! ! ! ! ! sem(params(1)).w:= sem(params(2)).w;
61090 1831 736 ! ! ! ! ! sem(params(2)).w:= worksem;
61100 1832 737 ! ! ! ! END
61110 1833 738 ! ! ! ! ELSE outstring10(valparam)
61120 1834 739 ! ! ! ! ELSE outstring10(valparam)
61130 1835 740 ! ! ! ! ELSE outstring10(noparam)
61140 1836 741 ! ! ! END (* exchange pointer *);
61150 1837 742 ! ! !
61160 1838 743 ! ! !
61170 1839 744 ! ! ! OTHERWISE (* error *)
61180 1840 745 ! ! ! outstring20 ("illegal comm. type h");
61190 1841 746 ! ! END (* case *);
61200 1842 747 ! !
61210 1843 748 ! ! IF command<>";" THEN
61220 1844 749 ! ! writenl;
61230 1845 750 ! !
61240 1846 751 ! UNTIL false;
61250 1847 752 !
61260 1848 753 END.
61270 1849
\f
feaoslst 81.05.08. 14.51. page 79
0 42* 55* 85* 165* 165* 166* 321 326 349 350 353 361 371: 371 384
411 413 463 519 523 543 547 559 565 623* 646 655 666 672 679
691 702 703 703 731 734 739 749 754 755 859 865 867 884 932
954 961 1010 1025 1175 1199 1200 1202 1208 1209 1210 1211 1420 1422 1528
1608 1635 1649 1659: 1671 1688 1733 1746 1755 1775 1780 1781 1783 1785 1800
1801 1803 1826 1827
1 43* 54* 74* 75* 76* 77* 85* 88* 89* 111* 161* 162* 306 337 348
363 372: 426 429 438 493: 598 624* 637 640 654 655 660 666 674
686 688 691 695 696 711 726 730 752 757 759 765 769 785 793
803 820 822 930 939 956 972 973 1034 1103 1121 1125 1143 1154 1161
1169 1195 1197 1228 1235 1241 1250 1253 1255 1257 1280 1282: 1302 1364 1364
1371 1378: 1388 1421 1422 1422 1423 1423 1433 1434 1437 1473 1475: 1583 1583
1583 1584 1585 1599: 1632 1632 1635 1642 1664: 1672 1677 1682 1685 1691 1711
1713 1714 1719 1736 1739 1745 1780 1780 1796 1798 1826 1826 1829 1830
2 307 325 338 350 365 373: 460 499: 558 563 676 677 679 680 688
689 691 692 698 699 702 703 710: 736 914: 943: 1122 1125 1129 1235
1255 1289 1293: 1296 1332 1361 1373 1380: 1488 1505: 1522 1544 1587 1587 1588
1601: 1610 1629 1635 1643 1781 1781 1782 1825 1827 1827 1830 1831
3 98* 308 323 367 374: 502 503: 538 716 729 1020 1038 1053 1308 1318:
1325 1382: 1538: 1596 1603: 1654 1750 1783 1783 1784
4 167* 368 375: 508: 569 583 721 722 927 983 997 1259 1329: 1384: 1444
1450 1577 1578 1579 1580 1605: 1785 1785 1786
5 166* 167* 469 512: 514 1215 1216 1490 1524 1813 1814
6 53* 348 516: 558 717 921 1310
7 165* 166* 167* 351 506 524: 563 1277 1286 1471 1614
8 533: 715: 728 919: 944: 1235 1491 1525
9 324 540: 746
10 88* 352 419 544: 610 642 785 868 882 1168 1170 1235
11 520: 1492 1526
12 100* 549: 793
13 556:
14 40* 352 561: 1493 1527
15 623* 674 686 696 734 1494 1507
16 39* 712 720: 864 889 916 925: 936 945: 1235
17 1612
20 89* 620* 803
40 510
50 161* 436
64 36*
80 34* 52*
87 878 901 951
100 466
120 37* 38*
128 1668 1670 1686 1689
\f
feaoslst 81.05.08. 14.51. page 80
255 1650 1780 1781 1783 1785
256 325 1650 1652 1661 1670 1676 1689 1694
512 519 523 543 547 559 565
1024 1167
2048 945
3276 892
4096 944
16384 943
32767 956 1672 1691
32768 894 955 1673 1690
a 93* 334* 336 337 338 339 346* 349= 351= 353= 354 1012= 1013= 1481: 1487
1488 1489 1490 1515: 1521 1522 1523 1524
abs 652 1661
abuf 1543: 1544
alarmlabel 1481 1515 1543
alarm_opsys 6*
alfa 69* 280* 449* 789*
alfa10 88* 276* 779*
alfa20 89* 283* 295* 798* 992*
alfalength 53*
alloc 1128 1141 1156 1163 1203 1205
alreadyexists <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
47* 458 584
al_lam1 1116
al_mac_addr 1491= 1525=
ap 170* 1012 1015= 1018 1051
applsem_max 1200 1719 1736 1747 1801
appl_vector 7*
as 387: 393: 595: 816: 971: 1075: 1130: 1145: 1288: 1298: 1323: 1333: 1378: 1380: 1382:
1384: 1480: 1510: 1543: 1599: 1601: 1603: 1605: 1647:
atbuffer 85*
b1 1512:
b2 1512:
base 135* 418 419= 432= 442= 609 610= 612= 642 652 653 708 728 864 868
882 889 900 901 913 936 942 949 951 1168= 1230= 1238= 1241= 1610
bit 623*
bits 623* 676= 679= 688= 691= 698 699= 699 702 703= 703 736
block 188*
boolean 157* 189* 261* 409* 576* 634* 843* 977* 1007* 1512
bp 170* 1013 1015 1018 1051
break 1440
buf 1288: 1289 1298: 1299 1323: 1324 1333: 1334 1480: 1485 1510: 1519
byte 82* 85* 224* 252* 313* 1513
call_buf 1304
\f
feaoslst 81.05.08. 14.51. page 81
car_buf_type 1298
ch 592* 599 848* 854= 861 862= 863 864 876 877 878 886= 888 889 892
899 900 901 915 920 926 934= 935 936 948 949 951
char 70* 88* 89* 131* 286* 592* 624* 811* 848*
chr 652 747 748
command 131* 399= 401 415 430 1183 1439 1843
com_pool 177* 497 529 552 1156
com_pool_sem 232*
control 1306 1338 1514:
controlinfo 82*
control_field_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
1514
countref 115* 1028 1029 1033 1041 1042
countsem 105* 1033 1039 1041
create 462
createchtype 80*
createerror 50* 467
cur 118* 360 362 364 366 1156 1157 1163 1164 1198 1203 1205 1206 1216 1367
1378: 1380: 1382: 1384: 1570 1577 1578 1579 1580 1592 1599: 1601: 1603: 1605: 1638
1645 1647: 1702 1704 1715 1716 1720 1772 1778 1799 1804 1806 1807 1814
curbufsize 148* 371= 372= 373= 374= 375= 1215 1375 1584 1587 1589 1590 1592 1813
curbuftype 149* 361= 363= 365= 367= 368= 370 1377 1598
curdigit 625* 726= 741 742 747 748 752 757= 757 845* 930= 939= 939 940 952
curpos 626* 729= 730= 737 755= 759= 759
d 1513:
data 70* 599= 819 1135=
dcmodule 255* 551
dc_addr 165* 336=
dc_int1 553
dc_int2 553
dc_int3 553
dc_sem_no 553
dc_sim_pri 554
dc_sim_size 554
digit 843* 855= 863= 865 873 884 888= 890 932 935= 937
digits 624* 640= 652= 659= 666= 742= 747= 748= 771 838* 863 876 888 899 935
948
doesntexist 48*
dst 323=
dtesimulator 210* 535
dte_addr 219*
dte_adr 1308=
dte_adr_l 1307=
dte_aic 1325
\f
feaoslst 81.05.08. 14.51. page 82
dte_car 1295 1306
dte_pax_addr 302* 309= 322 323 538
dte_sdata 1331 1338
dte_sdata_data <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
1333
dte_sem 214* 234*
dte_sem_no 530 535 1163 1348
evavector 7* 1110 1112 1114 1116 1205 1720 1737 1758 1806
external 178* 184* 191* 197* 203* 208* 221* 236* 241* 246* 253* 259* 262*
ext_addr 308=
ext_no 1289=
ext_pax_addr 343* 346*
facility 324= 1310=
facility_l 1309=
false 423 433 563 585 751 852 855 870 895 985 1030 1098 1303 1336 1337
1846
fesupervisor 174* 495
fesup_pri 498
fesup_que 496
fesup_sem_no 496
fesup_size 498
fesup_write 496
fe_env_version <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
1100
first 66* 396 977* 980 1133= 1148= 1301=
firstindex 53* 54* 70* 388 397 1076 1133 1135 1148
firstword 136* 1169= 1585= 1594
format 318=
format_1_packet_header <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
314*
fpadriver 186* 558 563
from_link 1278
getinput 380* 1181
getparams 267* 403 407*
get_curbuftype <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
358* 1213 1811
global_timeout <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
224*
glob_timeout 527
h 627* 734= 736
h2f 1440
h30 1541
hac 1478
hexdigits 839* 864 889 936
\f
feaoslst 81.05.08. 14.51. page 83
i 137* 295* 302* 305 306 307 308 313* 322 323 345* 348= 349 350= 351
351 352= 353 627* 640= 640 644= 652 654= 654 655 659 660= 660 664
674= 676 686= 688 696= 698 699 699 769= 771 783* 785= 786 791* 793=
794 801* 803= 804 977* 980 980 983 992* 997 1003* 1010 1012 1013 1020
1053 1103= 1105 1105 1106 1106 1125= 1154= 1161= 1371= 1375 1379 1381 1383 1385
1388= 1388 1421= 1421 1421 1434= 1436 1482: 1493= 1516: 1527= 1594= 1596 1600 1602
1604 1606 1642= 1649 1650 1652 1656 1661 1670 1671 1672 1672 1673 1676 1677=
1677 1685 1688 1689 1690 1691 1691 1694 1736= 1737 1737 1739= 1740 1740 1745=
1746 1746 1747 1750 1755 1756 1756 1758 1758
illegalno 49* 570 982 1218 1260 1451 1721 1817
incharsleft 138* 396= 822= 822 859 865 884 932 961 973= 973
incname 1099
inc_name 449* 462 468
index 447* 457 462 464 477* 492 494 500 504 509 513 517 521 525 534
541 545 550 557 562 569
init_modul 477* 1263
init_proc 446* 494 500 504 509 513 517 521 525 534 541 545 550 557 562
inputsem 202* 250*
input_sem 176* 181*
insert_code 1487 1521
int 270* 273* 604* 611 616* 646 652 653= 653 655 666 672 676 677= 677
679 680= 680 688 689= 689 691 692= 692
integer 68* 74* 75* 76* 77* 151* 161* 182* 188* 196* 201* 270* 273* 289* 295*
302* 313* 332* 343* 345* 447* 452* 455* 477* 576* 604* 616* 632* 783* 791*
801* 829* 846* 977* 992* 1003* 1482 1511 1516
int_pax_addr 219* 302* 303*
j 139* 1025= 1034= 1034 1038 1373= 1379 1381 1383 1385 1600= 1602= 1604= 1606= 1608=
1612 1614 1643= 1658 1682= 1682 1685
k 140* 1654= 1662 1666
lam 199* 514
lamsem 251*
lam_pri 515
lam_sem_no 506 514 551 1116 1117 1117
lam_size 515
last 67* 598= 598 599 977* 980 1076= 1149= 1302=
lastchar 848* 853= 861= 869
lastindex 54* 70* 1149
lastword 141* 1170= 1588= 1589 1590= 1594
leftbyte 142* 1650= 1652= 1662= 1668 1670 1676 1686 1689 1694
level 188* 201*
linelength 52* 54*
link 461
local_sem_table <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
230*
\f
feaoslst 81.05.08. 14.51. page 84
lock 387: 393: 595: 816: 971: 1075: 1130: 1145: 1288: 1298: 1323: 1333: 1378: 1380: 1382:
1384: 1480: 1510: 1543: 1599: 1601: 1603: 1605: 1647:
locked 1048
l_control 1302
l_dte_adr 1307
l_facilities 1309
l_listen 1302
m 628* 695= 698 699 700= 702 703 704=
macro 1488= 1490= 1522= 1524= 1544=
macroaddr 165* 165* 166* 166* 167* 167* 332* 334*
main_sem 229*
make_phead 312* 1325
max 196*
maxbuf 1382: 1383= 1603: 1604
maxbufsize 38* 77* 364 374
maxbuftype 77* 1382 1603
maxpos 620* 624* 640 644 664 726 741 752 765 769 769
messbuf 1380: 1381= 1601: 1602 1647: 1649 1650 1652 1661 1670= 1671 1672= 1672 1673= 1676=
1688 1689= 1690= 1691= 1691 1694=
messbufpool 101* 1156
messbufsize 36* 74* 362 373 1645 1656 1685
messbuftype 74* 101* 1380 1601 1647
micro 1489= 1523=
minbuf 1378: 1379= 1599: 1600
minbufsize 39* 76* 360 372
minbuftype 76* 1378 1599
min_rut_mess 62*
moduleno 143* 576* 580 583 1253= 1257 1257 1259 1263 1263 1436= 1437 1437 1438 1440
1441 1444 1450
moduleready 576* 580= 585= 1263
more 1007* 1022= 1026 1030=
m_bit 1337=
n1 479* 494 494
n10 488* 545 545
n11 489* 550 550
n12 490* 557 562
n2 480* 500 500
n3 481* 504 504
n4 482* 509 509
n5 483* 513 513
n6 484* 517 517 521
n7 485* 525 525
n8 486* 534 534
n9 487* 541 541
\f
feaoslst 81.05.08. 14.51. page 85
name 69* 448* 461 1134= 1150=
nc_addr 166* 337=
nc_sem_no 1122
negative 634* 646= 657 843* 869= 870= 892 895= 906 915= 920= 926= 940 952
netconnector 223* 527
netc_locals 160* 528 1121= 1122=
netc_loc_sems <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
160* 230*
netc_mic_addr <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
1489 1523
netc_pri 531 539
netc_sem 177* 216*
netc_sem_no 497 528 536 551 1557
netc_size 531 539
net_addr 305=
newbase 409* 420= 423= 433= 440
newm 628* 698= 700 702= 704
next 68* 388= 396 397= 819 820= 820 972= 972
nl 1071
node_addr 307=
noofdig 629* 712= 717= 722= 726
noofdigit 845* 916= 921= 927= 940 952
noofmodules 40* 162* 1257 1437
noofparams 144* 413= 426= 426 427 428 429 436 438= 438 460 1175= 1197 1228 1250
1255 1361 1373 1420 1433 1434 1583 1587 1629 1654 1713 1733 1745 1775 1781
1783 1785 1798 1825
noofpos 630* 711= 716= 721= 737
noofsemaphores <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
41* 1199 1421 1422 1714 1739 1746 1800 1826 1827
noparam 46* 1220 1231 1265 1722 1776 1819 1835
no_listen 101* 1154
no_pax_bufs 62* 1161
nref 114* 1273 1275 1277 1278 1284 1285 1286 1288: 1295 1296 1297 1298: 1320 1321
1322 1323: 1331 1332 1333: 1348 1466 1468 1471 1477 1478 1480: 1507 1508 1510:
1540 1541 1543: 1557
nul 853 854
oflow 261*
ok 55* 391 455* 462= 463 466= 466 469
okl 454* 461= 466 471=
oldbase 145* 418= 432 442 609= 612 1230 1238
op 175* 183* 190*
opbuf 387: 388 393: 394 595: 596 816: 817 971: 972 972 1075: 1076 1130: 1131
1145: 1146
opbufpool 98* 1128 1141
\f
feaoslst 81.05.08. 14.51. page 86
opbufsize 34*
opbuftype 64* 98* 387 393 595 816 971 1075 1130 1145
open 1016 1039
operatorsem 1097
opinref 116* 387: 389 390 391 393: 816: 971: 1141 1143 1145:
opoutref 117* 595: 1069 1072 1074 1075: 1128 1129 1130: 1137
opsem 122* 194* 200* 206* 256* 389 495 502 505 510 514 518 522 527 535
542 546 551 558 563 1072 1097= 1099
opsysname 1134 1150
op_code 313* 325 1306= 1338=
op_sem 211* 225* 239* 244* 249*
ord 401 652 747 748 877 877 878 900 900 901 949 949 951
org 322=
osif 248* 505
osif_pri 507
osif_sem_no 505
osif_size 507
outchar 592* 763 771 786 794 804 1019 1019 1021 1052 1052 1054 1071 1574 1575
1597
outdecimal 270* 469 569 583 604* 1020 1038 1053 1259 1444 1450 1596 1750
outinteger 273* 611 616* 983 997 1215 1216 1577 1578 1579 1580 1612 1614 1813 1814
outstring10 276* 570 779* 982 1055 1214 1218 1220 1231 1260 1265 1271 1346 1351 1362
1368 1424 1445 1451 1455 1464 1555 1560 1571 1630 1639 1703 1717 1721 1722
1773 1776 1812 1817 1819 1833 1834 1835
outstring12 280* 468 789*
outstring20 283* 458 467 584 798* 996 1219 1237 1365 1398 1399 1400 1401 1402 1403
1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1593 1633 1636
1646 1749 1808 1818 1840
own 1099
p 314* 316 450* 461 462 471 1483: 1491 1492 1494 1517: 1525 1526 1528
packet_type 320=
packextnode 342* 354= 1308 1492 1526
packmacro 331* 339= 1488 1490 1491 1522 1524 1525 1544
par 332* 336 337 338 343* 351
params 161* 305 306 307 308 324 325 336 337 338 351 427= 428 1195 1235
1241 1253 1255 1280 1289 1296 1310 1332 1364 1371 1379 1381 1383 1385 1422
1422 1423 1423 1436 1473 1493 1494 1507 1527 1583 1584 1585 1587 1588 1632
1635 1642 1643 1662 1666 1711 1746 1746 1747 1750 1755 1756 1756 1758 1758
1780 1780 1781 1782 1783 1784 1785 1786 1796 1826 1826 1827 1827 1829 1830
1830 1831
paxbufpool 102* 1163
paxnet_e 1483 1517
paxpooltype 62* 102*
pax_addr 1492= 1526=
\f
feaoslst 81.05.08. 14.51. page 87
pax_adr 303* 305 306 307 308 309
pax_ncp_sem 1114 1115 1115
pax_pool 528 535 1164 1273 1466
pax_pool_sem 213* 228*
pax_sem_1 537 1112 1113 1113
pax_sem_2 537 1110 1111 1111
phead 1325
point_rec 92* 170*
pool 62* 98* 100* 101*
port 252*
positions 270* 273* 604* 611 616* 763 765 766 767= 769
pr 43*
prio 452* 464
priority 319=
process 6* 174* 180* 186* 193* 199* 205* 210* 223* 238* 243* 248* 255*
processrec 450*
processref 461 471
pu 42* 201* 514
px_ncp 1114
px_urec1 1110
px_utrm1 1112
que_sem 176*
q_bit 1303= 1336=
readchar 286* 399 811* 819= 862 886 934
readinteger 289* 427 829* 965=
readok 154* 436 852= 879=
rec 189* 1488 1489 1522 1523 1544
receiver 181*
ref 1105 1110 1112 1114 1116
reference 119*
reg_addr 306=
remove 1441
repeatchar 292* 963 969*
res 631* 731= 736= 736 739 746 747 748 749 754=
result 846* 867= 877= 878= 892 894= 900= 900 901= 901 906= 906 943= 943 944=
944 945= 945 949= 949 951= 951 954 955= 956= 956 965
retrans_max 182*
return 1137 1157 1704
ric_first_val <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
1301 1302
rightbyte 146* 1661= 1666= 1670 1676 1689 1694
rut_con 1284
rut_default 1322
rut_format_1 318
\f
feaoslst 81.05.08. 14.51. page 88
rut_ok 1285 1321
rut_pack_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
320
rut_prefix_type <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
1288
rut_prio_0 319
rut_rec 1320
rut_rec_sem 218*
rut_trm_sem 217*
rut_trp_pdata <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
1323
s 497 497 505 506 530 530 536 537 537 551 551 552 1012 1105= 1106
1110= 1111 1112= 1113 1114= 1115 1116= 1117 1121 1122 1156 1163 1164 1348 1421
1423 1557
sem 124* 187* 240* 245* 496 496 496 497 497 497 501 501 502 505 505
506 510 514 518 522 528 528 529 530 530 535 535 536 537 537
542 546 551 551 552 552 553 553 553 553 558 563 1012 1013 1105
1106 1106 1110 1111 1111 1112 1113 1113 1114 1115 1115 1116 1117 1117 1121
1122 1156 1163 1164 1273 1348 1421 1421 1423 1423 1466 1557 1829 1830 1830
1831
sem1 257*
sem2 257*
sem3 257*
sem4 257*
sem5 258*
sem6 258*
sem7 258*
sem8 258*
semaphore 110* 111* 1003*
semno 147* 1195= 1199 1199 1200 1200 1202 1203 1205 1711= 1714 1714 1716 1719 1719
1720 1796= 1800 1800 1801 1801 1803 1804 1806
sempointer 93* 122* 123* 175* 177* 183* 190* 194* 200* 206* 211* 218* 225* 234* 239*
244* 249* 251* 256* 257*
semvector 6* 1097
send 1490 1524
sensesem 1028 1273 1466 1804 1806
setoflowmask 261* 1172
sh 162* 457 462 464 580 1438 1440 1441
shadow 162*
signal 389 1033 1042 1072 1164 1348 1557 1716 1720
signs 840*
size 360 362 364 366 451* 460 1216 1592 1645 1814
sp 640 763
st 150* 460= 462 1167= 1255=
\f
feaoslst 81.05.08. 14.51. page 89
start 464
state 321=
streamer 180* 501
stream_no 1494= 1528=
stream_pri 502
stream_rec 502 558
stream_sem 177*
stream_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
497 501 505
stream_size 502
stream_xmit 501 563
streemsem 251*
system_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
6*
tab_sem 207*
tap 205* 518 522
tap1_sem_no 522
tapdte 238* 542
tapnet 243* 546
tap_dte_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
542
tap_net_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
546
tap_sem_no 518
testbuf 1384: 1385= 1605: 1606
testbufpool 100* 1203 1205
testbufsize 37* 75* 366 375
testbuftype 75* 100* 1384 1605
testinterval 977* 985= 988= 1780 1781 1783 1785
testmode 156* 994 1098= 1459= 1459
testmodeout 295* 384 401 411 428 992*
testopen 1099
testout 1100
testsem 1003* 1737 1740 1756 1758
text 276* 280* 283* 295* 779* 786 789* 794 798* 804 992* 996
ticklength 196*
timeout 82* 193* 510
timeoutsem 195*
timeout_sem 233*
timeout_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
510 530 552
time_out_unit <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
510
tim_pri 511
\f
feaoslst 81.05.08. 14.51. page 90
tim_size 511
top_of_data 326=
to_link 1297 1508
true 420 558 580 732 879 915 920 926 988 1022 1172
tssup_sem_no 1121
tss_route 1477 1540
ts_addr 167* 338=
ts_pointer 176* 181* 187* 195* 202* 207* 214* 229* 240* 245* 250* 258*
ts_pointer_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
124*
ts_sem 111* 1105 1203 1716 1740 1756 1804
ts_sem_total 41* 111* 1103
t_sem 1003* 1016 1028 1042 1048
u1 1129= 1143= 1208= 1284= 1295= 1320= 1331= 1577 1780=
u2 391 1209= 1277= 1285= 1321= 1471= 1578 1782=
u3 1210= 1286= 1296= 1322= 1332= 1477= 1507= 1540= 1579 1784=
u4 1211= 1278= 1297= 1478= 1508= 1541= 1580 1786=
unlink 471
update 1487= 1521=
used 632* 637= 664= 752= 763 766 767
user_field 325=
valparam 45* 1424 1833 1834
version 28* 1100
w 497 529 552 1013 1106= 1111= 1113= 1115= 1117= 1273 1421= 1423= 1466 1829 1830=
1830 1831=
wait 390 1041 1074
worksem 123* 1829= 1831
writenl 298* 470 984 998 1045 1056 1065* 1139 1398 1399 1400 1401 1402 1403 1404
1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1446 1452 1581 1615 1751
1844
write_sem 176*
wrsem 108* 390 1141
wsem 106* 1074 1128
x 1511:
xmitter 181*
y 1511:
z 128* 1099 1100 1511:
zeroes 634* 732= 739 749 751=
zone 128*
\f
feaoslst 81.05.08. 14.51. page 91
AND 25
ARRAY 13
BEGIN 135
CASE 11
CONST 5
DIV 9
DO 66
DOWNTO 3
ELSE 76
END 151
FOR 24
FORWARD 11
FUNCTION 9
IF 117
IN 14
MOD 8
NIL 16
NOT 11
OF 28
OR 13
OTHERWISE 6
PROCEDURE 26
RECORD 5
REPEAT 5
THEN 117
TO 21
TYPE 1
UNTIL 5
VAR 33
WHILE 4
WITH 14
\f
jg7 1981.05.08 14.52
feaos program
81.05.08. 14.53. pascal80 version 1981.04.01
name headline beginline endline appetite(words)
dte_pax_addr 303 305 310 : 8
make_phead 315 318 328 : 17
packmacro 334 336 340 : 6
packextnode 345 348 355 : 18
get_curbufty 359 361 377 : 2
getinput 382 384 404 : 21
getparams 409 411 443 : 25
init_proc 454 458 474 : 29
init_modul 479 493 573 : 60
moduleready 579 580 587 : 19
outchar 594 595 601 : 9
outdecimal 608 609 613 : 10
outinteger 620 637 774 : 47
outstring10 783 785 787 : 17
outstring12 791 793 795 : 17
outstring20 801 803 805 : 17
readchar 815 816 823 : 11
readinteger 838 852 966 : 17
repeatchar 970 971 974 : 8
testinterval 979 981 989 : 13
testmodeout 993 995 1000 : 18
testsem 1007 1011 1058 : 15
writenl 1068 1070 1077 : 11
alarm_opsys 28 1097 1848 : 924
code: 1 . 7698 = 17698 bytes
end of PASCAL80 compilation
end
blocksread = 53
«eof»