|
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»