|
|
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: 53760 (0xd200)
Types: TextFileVerbose
Names: »festrlst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »festrlst«
\f
festrlst 81.05.13. 11.35. page 1
10 1 PROCESS streamer(
20 2 VAR input_sem, xmitter, receiver : ! ts_pointer;
30 3 retrans_max : integer;
40 4 op : sempointer);
50 5
60 6
70 7 CONST
80 8 version = "vers 1.01 /";
90 9 output_buffers = 1;
100 10 input_buffers = 1;
110 11 own_data_size = 8; (* bytes *)
120 12
130 13 sense_com = 0;
140 14 write_data = 2;
150 15 write_read_data= 3;
160 16 regret_input = 4;
170 17 input = 5;
180 18 output = 6; <* output = input + 1 is demanded *>
190 19 tell_next_notice=8;
200 20 read_stream = 9;
210 21 write_stream =10;
220 22 regret_output =12;
230 23
240 24 CONST
250 25 chain_in = 8;
260 26 chain_out = 8;
270 27 restart_notices= 1;
280 28 noticed_output = 2;
290 29 received_input = 3;
300 30 ready_request = 4;
310 31 free_in = 5;
320 32 free_out = 6;
330 33 chain_max = 6 + chain_in + chain_out;
340 34
350 35 TYPE
360 36 chain_rec = RECORD
370 37 ! next, prev, c_stream, c_func : byte;
380 38 ! ref : reference;
390 39 END;
400 40 chain_mem = ARRAY(1..chain_max) OF chain_rec;
410 41
420 42 VAR
430 43 chain : chain_mem;
440 44
450 45 z : zone;
460 46
\f
festrlst 81.05.13. 11.35. page 2
470 47 CONST
480 48 request = 0;
490 49 notice = 0;
500 50 master_out = 1;
510 51 no_stream = 0;
520 52 max_stream =63;
530 53
540 54 stream_size =max_stream + 1;
550 55 master_block = 256 DIV stream_size - 1;
560 56 master_size = 2;
570 57 buffer_size = stream_size DIV master_size;
580 58
590 59 ok_result = 0;
600 60 rejected = 1;
610 61 soft_error = 2;
620 62 (* *) blocklength_error = 64;
630 63 hard_error = 3;
640 64 un_intelligible= 4;
650 65 master = 5;
660 66 overload = 6;
670 67
680 68 max_integer = 32767;
690 69
700 70 TYPE
710 71 data_buffer = RECORD
720 72 ! first, last, next : integer;
730 73 END;
740 74 own_data = RECORD
750 75 ! first, last, next : integer;
760 76 ! d : ARRAY(1..own_data_size DIV 2) OF integer;
770 77 END;
780 78
790 79 VAR
800 80 header, sense_device, desc_header, message : reference;
810 81
820 82 waiting_output,
830 83 out_desc_sem,
840 84 pending_input, in_desc_sem : semaphore;
850 85
860 86 output_stopped, input_stopped: boolean;
870 87 notices_received: PACKED ARRAY(0..max_stream) OF byte ;
880 88
890 89 xmit_pool : pool output_buffers + output_buffers;
900 90 sense_pool : pool input_buffers + output_buffers;
910 91 receive_pool : pool input_buffers + buffer_size;
920 92 message_pool : pool input_buffers OF own_data;
\f
festrlst 81.05.13. 11.35. page 3
930 93
940 94 operation, result, status, stream , result_modif,
950 95 output_block_no, input_block_no : integer;
960 96
970 97
980 98 PROCEDURE move_element(from, into : integer);
990 99 VAR fn, fp, tn : integer;
1000 100 BEGIN
1010 101 1 ! WITH chain(into) DO
1020 102 2 ! BEGIN
1030 103 3 ! ! tn := next; next := from;
1040 104 4 ! END;
1050 105 5 ! WITH chain(from) DO
1060 106 6 ! BEGIN
1070 107 7 ! ! fn := next; fp := prev;
1080 108 8 ! ! next := tn ; prev := into;
1090 109 9 ! END;
1100 110 10 ! chain(fp).next := fn ;
1110 111 11 ! chain(fn).prev := fp ;
1120 112 12 ! chain(tn).prev := from;
1130 113 13 END (* procedure move chain-element *) ;
1140 114
1150 115
1160 116 FUNCTION search_sem(VAR s: semaphore): integer;
1170 117 VAR stream, stop : byte;
1180 118 BEGIN
1190 119 1 ! WITH message^ DO
1200 120 2 ! BEGIN
1210 121 3 ! ! stop := u1; stream := u3;
1220 122 4 ! END;
1230 123 5 ! search_sem := 0;
1240 124 6 ! REPEAT
1250 125 7 ! ! signal(message, s);
1260 126 8 ! ! wait(message, s);
1270 127 9 ! ! WITH message^ DO
1280 128 10 ! ! IF u1 <> stop THEN
1290 129 11 ! ! IF u3 DIV stream_size <> master_block THEN
1300 130 12 ! ! IF u3 MOD stream_size = stream THEN search_sem := 1;
1310 131 13 ! UNTIL stop = message^.u1;
1320 132 14 END (* procedure to find a specific stream request on a semaphore *) ;
1330 133
1340 134
1350 135 FUNCTION search_chain(start, stream, func_code : integer; no_regret:boolean) : integer;
1360 136 VAR last, s, f : byte;
1370 137 BEGIN
1380 138 1 ! search_chain := 0;
\f
festrlst 81.05.13. 11.35. page 4
1390 139 2 ! last := start;
1400 140 3 ! start := chain(start).next;
1410 141 4 ! WHILE start <> last DO
1420 142 5 ! WITH chain(start) DO
1430 143 6 ! BEGIN
1440 144 7 ! ! IF nil(ref) THEN
1450 145 8 ! ! BEGIN
1460 146 9 ! ! ! s := c_stream; f := c_func;
1470 147 10 ! ! ! IF no_regret THEN f := sense_com;
1480 148 11 ! ! END ELSE
1490 149 12 ! ! WITH ref^ DO
1500 150 13 ! ! BEGIN
1510 151 14 ! ! ! s := u3; f := u1;
1520 152 15 ! ! END;
1530 153 16 ! ! IF (s = stream) AND (f = func_code) THEN
1540 154 17 ! ! BEGIN
1550 155 18 ! ! ! search_chain := start;
1560 156 19 ! ! ! start := last ;
1570 157 20 ! ! END ELSE
1580 158 21 ! ! BEGIN
1590 159 22 ! ! ! start := next ;
1600 160 23 ! ! END;
1610 161 24 ! END;
1620 162 25 END (* procedure search chain for stream-number *) ;
1630 163
1640 164
1650 165 PROCEDURE decode_message(VAR operation, result : integer);
1660 166 VAR user_result, block_no : integer;
1670 167 LABEL comp_result;
1680 168 BEGIN
1690 169 1 ! pop(header, message);
1700 170 2 ! WITH header^ DO
1710 171 3 ! BEGIN
1720 172 4 ! ! result := u2 MOD 8;
1730 173 5 ! ! result_modif := u2 - result;
1740 174 6 ! ! IF u1 = write_read_data THEN
1750 175 7 ! ! BEGIN
1760 176 8 ! ! ! user_result := ok_result;
1770 177 9 ! ! ! operation := u4 MOD master_size + input;
1780 178 10 ! ! ! comp_result:
1790 179 11 ! ! ! CASE result OF
1800 180 12 ! ! ! ! ok_result, soft_error:
1810 181 13 ! ! ! ! BEGIN
1820 182 14 ! ! ! ! ! block_no := u3 DIV stream_size;
1830 183 15 ! ! ! ! ! IF block_no = master_block THEN
1840 184 16 ! ! ! ! ! BEGIN
\f
festrlst 81.05.13. 11.35. page 5
1850 185 17 ! ! ! ! ! ! result := master;
1860 186 18 ! ! ! ! ! END ELSE
1870 187 19 ! ! ! ! ! IF block_no <> u4 DIV stream_size THEN
1880 188 20 ! ! ! ! ! BEGIN
1890 189 21 ! ! ! ! ! ! result := master;
1900 190 22 ! ! ! ! ! END;
1910 191 23 ! ! ! ! END;
1920 192 24 ! ! ! ! hard_error: ;
1930 193 25 ! ! ! ! rejected : ;
1940 194 26 ! ! ! ! OTHERWISE BEGIN
1950 195 27 ! ! ! ! ! user_result := un_intelligible;
1960 196 28 ! ! ! ! ! result := result - un_intelligible;
1970 197 29 ! ! ! ! ! GOTO comp_result;
1980 198 30 ! ! ! ! END;
1990 199 31 ! ! ! END;
2000 200 32 ! ! END ELSE
2010 201 33 ! ! BEGIN
2020 202 34 ! ! ! operation := u1;
2030 203 35 ! ! ! user_result:= u2;
2040 204 36 ! ! ! push(header, message);
2050 205 37 ! ! END;
2060 206 38 ! END;
2070 207 39 ! IF NOT nil(message) THEN
2080 208 40 ! BEGIN
2090 209 41 ! ! message^.u2 := user_result;
2100 210 42 ! END;
2110 211 43 END (* decode the received message *) ;
2120 212
2130 213
2140 214 PROCEDURE next_notice(VAR stream : integer);
2150 215 VAR r : reference;
2160 216 ptr : integer;
2170 217 BEGIN
2180 218 1 ! WITH chain(restart_notices) DO
2190 219 2 ! IF prev <> restart_notices THEN
2200 220 3 ! BEGIN
2210 221 4 ! ! stream := chain(next).ref^.u3;
2220 222 5 ! ! move_element(next, chain(noticed_output).prev);
2230 223 6 ! END ELSE
2240 224 7 ! WITH chain(free_out) DO
2250 225 8 ! IF prev = free_out THEN
2260 226 9 ! BEGIN
2270 227 10 ! ! stream := no_stream;
2280 228 11 ! END ELSE
2290 229 12 ! BEGIN
2300 230 13 ! ! sensesem(r, waiting_output);
\f
festrlst 81.05.13. 11.35. page 6
2310 231 14 ! ! IF nil(r) THEN
2320 232 15 ! ! BEGIN
2330 233 16 ! ! ! stream := no_stream;
2340 234 17 ! ! END ELSE
2350 235 18 ! ! BEGIN
2360 236 19 ! ! ! stream := r^.u3;
2370 237 20 ! ! ! ptr := search_chain(noticed_output, stream, write_stream, false);
2380 238 21 ! ! ! IF ptr = 0 THEN ptr := next ELSE
2390 239 22 ! ! ! IF NOT nil(chain(ptr).ref) THEN ptr := next;
2400 240 23 ! ! ! chain(ptr).ref :=: r;
2410 241 24 ! ! ! IF ptr = next THEN
2420 242 25 ! ! ! move_element(next, chain(noticed_output).prev) ELSE
2430 243 26 ! ! ! stream := no_stream;
2440 244 27 ! ! END;
2450 245 28 ! END;
2460 246 29 END (* procedure to find the next notice *) ;
2470 247
2480 248
2490 249 PROCEDURE return_output(result : integer);
2500 250 BEGIN
2510 251 1 ! IF NOT nil(message) THEN
2520 252 2 ! BEGIN
2530 253 3 ! ! WITH message^ DO u2 := u2 + result;
2540 254 4 ! ! return(message);
2550 255 5 ! END;
2560 256 6 END (* procedure to return output-data to the user *) ;
2570 257
2580 258
2590 259 PROCEDURE xqt_request;
2600 260 VAR stream, ptr : integer;
2610 261 BEGIN
2620 262 1 ! stream := header^.u3 MOD stream_size;
2630 263 2 ! IF stream <> no_stream THEN
2640 264 3 ! BEGIN
2650 265 4 ! ! ptr := search_chain(noticed_output, stream, write_stream, false);
2660 266 5 ! ! message :=: chain(ptr).ref ;
2670 267 6 ! ! move_element(ptr, free_out);
2680 268 7 ! END;
2690 269 8 END (* procedure to find the requested data *) ;
2700 270
2710 271
2720 272 PROCEDURE xmit(operation, status : integer);
2730 273 VAR block_no, stream, buffers : integer;
2740 274 BEGIN
2750 275 1 ! IF operation = notice THEN
2760 276 2 ! BEGIN
\f
festrlst 81.05.13. 11.35. page 7
2770 277 3 ! ! block_no := output_block_no MOD 3;
2780 278 4 ! ! buffers := 0;
2790 279 5 ! ! next_notice(stream);
2800 280 6 ! END ELSE
2810 281 7 ! BEGIN
2820 282 8 ! ! stream := output_buffers*master_size + status;
2830 283 9 ! ! block_no:= master_block;
2840 284 10 ! ! buffers := output_buffers;
2850 285 11 ! ! alloc(sense_device, sense_pool, input_sem.s^);
2860 286 12 ! ! sense_device^.u1 := sense_com;
2870 287 13 ! ! signal(sense_device, xmitter.s^);
2880 288 14 ! END;
2890 289 15 ! desc_header^.u3 := block_no*stream_size + stream;
2900 290 16 ! WITH header^ DO
2910 291 17 ! BEGIN
2920 292 18 ! ! u1 := write_read_data;
2930 293 19 ! ! u3 := desc_header^.u3;
2940 294 20 ! ! u4 := block_no*stream_size + buffers*master_size + 1;
2950 295 21 ! END;
2960 296 22 ! signal(desc_header, out_desc_sem);
2970 297 23 ! push(header, message);
2980 298 24 ! signal(message, xmitter.s^);
2990 299 25 ! IF output_block_no = max_integer THEN output_block_no := -1;
3000 300 26 ! output_block_no := output_block_no + 1;
3010 301 27 END (* procedure to send a new data-buffer to the transmitter *) ;
3020 302
3030 303
3040 304 PROCEDURE restart_xmitter(receiver_buffers : integer);
3050 305 VAR ptr : integer;
3060 306 BEGIN
3070 307 1 ! ptr := restart_notices;
3080 308 2 ! WITH chain(noticed_output) DO
3090 309 3 ! WHILE noticed_output <> prev DO
3100 310 4 ! BEGIN
3110 311 5 ! ! move_element(next, ptr);
3120 312 6 ! ! ptr := chain(ptr).next ;
3130 313 7 ! END;
3140 314 8 ! output_stopped := false;
3150 315 9 ! output_block_no := 0;
3160 316 10 ! FOR ptr := 1 TO output_buffers DO
3170 317 11 ! BEGIN
3180 318 12 ! ! alloc(desc_header, xmit_pool, out_desc_sem);
3190 319 13 ! ! alloc(header, xmit_pool , input_sem.s^);
3200 320 14 ! ! xmit(notice, 0);
3210 321 15 ! END;
3220 322 16 END (* restart of the transmitter *) ;
\f
festrlst 81.05.13. 11.35. page 8
3230 323
3240 324
3250 325 FUNCTION master_match(VAR received, xmitted : integer): boolean;
3260 326 BEGIN
3270 327 1 ! master_match := false;
3280 328 2 ! WITH desc_header^ DO
3290 329 3 ! IF u3 DIV stream_size = master_block THEN
3300 330 4 ! BEGIN
3310 331 5 ! ! master_match := true;
3320 332 6 ! ! xmitted := u3 MOD master_size;
3330 333 7 ! ! IF received = master THEN
3340 334 8 ! ! received := header^.u3 MOD master_size ELSE
3350 335 9 ! ! received := -1;
3360 336 10 ! END;
3370 337 11 END (* procedure to test if a master-out is answered with master-in *) ;
3380 338
3390 339
3400 340 PROCEDURE return_input(result : integer);
3410 341 BEGIN
3420 342 1 ! IF NOT nil(message) THEN
3430 343 2 ! BEGIN
3440 344 3 ! ! LOCK message AS d:data_buffer DO WITH d DO
3450 345 4 ! ! IF next - first <= 1 THEN
3460 346 5 ! ! BEGIN
3470 347 6 ! ! ! next := first;
3480 348 7 ! ! ! IF result = ok_result THEN result := rejected;
3490 349 8 ! ! END;
3500 350 9 ! ! WITH message^ DO u2 := u2 + result;
3510 351 10 ! ! return(message);
3520 352 11 ! END;
3530 353 12 END (* procedure to return input buffers to the user *) ;
3540 354
3550 355
3560 356 PROCEDURE xqt_notice;
3570 357 VAR stream, ptr, notice_no : integer;
3580 358 BEGIN
3590 359 1 ! stream := header^.u3 MOD stream_size;
3600 360 2 ! IF stream <> no_stream THEN
3610 361 3 ! BEGIN
3620 362 4 ! ! notice_no := notices_received(stream);
3630 363 5 ! ! IF notice_no = 0 THEN
3640 364 6 ! ! BEGIN
3650 365 7 ! ! ! ptr := search_chain(received_input, stream, read_stream, false);
3660 366 8 ! ! ! IF ptr = 0 THEN
3670 367 9 ! ! ! BEGIN
3680 368 10 ! ! ! ! notice_no := 1;
\f
festrlst 81.05.13. 11.35. page 9
3690 369 11 ! ! ! ! ptr := search_chain(received_input, stream, tell_next_notice, false);
3700 370 12 ! ! ! ! IF ptr <> 0 THEN
3710 371 13 ! ! ! ! BEGIN
3720 372 14 ! ! ! ! ! message :=: chain(ptr).ref;
3730 373 15 ! ! ! ! ! message^.u2 := ok_result;
3740 374 16 ! ! ! ! ! return(message);
3750 375 17 ! ! ! ! ! move_element(ptr, free_in);
3760 376 18 ! ! ! ! END;
3770 377 19 ! ! ! END ELSE
3780 378 20 ! ! ! BEGIN
3790 379 21 ! ! ! ! move_element(ptr, chain(ready_request).prev);
3800 380 22 ! ! ! END;
3810 381 23 ! ! END ELSE
3820 382 24 ! ! BEGIN
3830 383 25 ! ! ! notice_no := notice_no + 1;
3840 384 26 ! ! END;
3850 385 27 ! ! notices_received(stream) := notice_no;
3860 386 28 ! END;
3870 387 29 END (* procedure to execute a notice *) ;
3880 388
3890 389
3900 390 PROCEDURE place_input(el:integer; VAR in_ref: reference);
3910 391 VAR stream, n : integer;
3920 392 BEGIN
3930 393 1 ! stream := in_ref^.u3;
3940 394 2 ! n := notices_received(stream);
3950 395 3 ! IF n > 0 THEN
3960 396 4 ! BEGIN
3970 397 5 ! ! IF in_ref^.u1 = tell_next_notice THEN
3980 398 6 ! ! BEGIN
3990 399 7 ! ! ! n := 0;
4000 400 8 ! ! END ELSE
4010 401 9 ! ! BEGIN
4020 402 10 ! ! ! notices_received(stream) := n -1;
4030 403 11 ! ! ! n := ready_request;
4040 404 12 ! ! END;
4050 405 13 ! END ELSE
4060 406 14 ! BEGIN
4070 407 15 ! ! n := received_input;
4080 408 16 ! END;
4090 409 17 ! IF n > 0 THEN
4100 410 18 ! BEGIN
4110 411 19 ! ! chain(el).ref :=: in_ref;
4120 412 20 ! ! move_element(el, chain(n).prev);
4130 413 21 ! END ELSE
4140 414 22 ! BEGIN
\f
festrlst 81.05.13. 11.35. page 10
4150 415 23 ! ! in_ref^.u2 := ok_result;
4160 416 24 ! ! return(in_ref);
4170 417 25 ! END;
4180 418 26 END (* procedure to place incoming input-request *) ;
4190 419
4200 420
4210 421 PROCEDURE next_request(VAR stream : integer);
4220 422 BEGIN
4230 423 1 ! WITH chain(ready_request) DO
4240 424 2 ! IF prev = ready_request THEN
4250 425 3 ! BEGIN
4260 426 4 ! ! stream := no_stream;
4270 427 5 ! END ELSE
4280 428 6 ! BEGIN
4290 429 7 ! ! message :=: chain(next).ref;
4300 430 8 ! ! stream := message^.u3;
4310 431 9 ! ! move_element(next, free_in);
4320 432 10 ! END;
4330 433 11 END (* procedure to find the next request *) ;
4340 434
4350 435
4360 436 PROCEDURE send_input;
4370 437 BEGIN
4380 438 1 ! wait(message, pending_input);
4390 439 2 ! pop(desc_header, message);
4400 440 3 ! signal(desc_header, in_desc_sem);
4410 441 4 ! LOCK header AS buf:own_data DO
4420 442 5 ! WITH buf DO
4430 443 6 ! BEGIN
4440 444 7 ! ! first := 6;
4450 445 8 ! ! IF nil(message) THEN last := own_data_size ELSE last := 0;
4460 446 9 ! ! last := first + last - 1;
4470 447 10 ! ! next := first;
4480 448 11 ! END;
4490 449 12 ! push(header, message);
4500 450 13 ! signal(message, receiver.s^);
4510 451 14 ! input_block_no := (input_block_no + 1) MOD 3;
4520 452 15 END (* procedure to send the next input message *) ;
4530 453
4540 454
4550 455 PROCEDURE receive(operation, status : integer);
4560 456 VAR block_no, stream, buffers, expected_block : integer;
4570 457 BEGIN
4580 458 1 ! IF operation = request THEN
4590 459 2 ! BEGIN
4600 460 3 ! ! buffers := 0;
\f
festrlst 81.05.13. 11.35. page 11
4610 461 4 ! ! block_no := input_block_no;
4620 462 5 ! ! expected_block := (block_no+1)MOD 3;
4630 463 6 ! ! next_request(stream);
4640 464 7 ! END ELSE
4650 465 8 ! BEGIN
4660 466 9 ! ! alloc(sense_device, sense_pool, input_sem.s^);
4670 467 10 ! ! sense_device^.u1 := sense_com;
4680 468 11 ! ! signal(sense_device, receiver.s^);
4690 469 12 ! ! buffers := input_buffers;
4700 470 13 ! ! stream := input_buffers*master_size + status;
4710 471 14 ! ! block_no:= master_block;
4720 472 15 ! ! expected_block := master_block;
4730 473 16 ! END;
4740 474 17 ! desc_header^.u3 := block_no*stream_size + stream;
4750 475 18 ! WITH header^ DO
4760 476 19 ! BEGIN
4770 477 20 ! ! u1 := write_read_data;
4780 478 21 ! ! u3 := desc_header^.u3;
4790 479 22 ! ! u4 := expected_block*stream_size + buffers*master_size;
4800 480 23 ! END;
4810 481 24 ! push(desc_header, message);
4820 482 25 ! signal(message, pending_input);
4830 483 26 ! send_input;
4840 484 27 END (* procedure to send the next receive-operation *) ;
4850 485
4860 486
4870 487
4880 488 PROCEDURE restart_receiver(buffering : integer);
4890 489 VAR ptr : integer;
4900 490 BEGIN
4910 491 1 ! ptr := received_input;
4920 492 2 ! WITH chain(ready_request) DO
4930 493 3 ! WHILE ready_request <> prev DO
4940 494 4 ! BEGIN
4950 495 5 ! ! move_element(next, ptr);
4960 496 6 ! ! ptr := chain(ptr).next;
4970 497 7 ! END;
4980 498 8 ! FOR ptr := 0 TO max_stream DO
4990 499 9 ! notices_received(ptr) := 0;
5000 500 10 !
5010 501 11 ! FOR ptr := 1 TO buffering-1 DO
5020 502 12 ! BEGIN
5030 503 13 ! ! alloc(message, receive_pool, pending_input);
5040 504 14 ! ! WITH message^ DO
5050 505 15 ! ! BEGIN
5060 506 16 ! ! ! u1 := 0; u2 := 0;
\f
festrlst 81.05.13. 11.35. page 12
5070 507 17 ! ! ! u3 := no_stream ;
5080 508 18 ! ! END;
5090 509 19 ! ! return(message);
5100 510 20 ! END;
5110 511 21 ! ptr := 1;
5120 512 22 ! IF NOT nil(desc_header) THEN
5130 513 23 ! BEGIN
5140 514 24 ! ! WITH desc_header^ DO
5150 515 25 ! ! BEGIN
5160 516 26 ! ! ! u1 := 0; u2 := 0; u3 := no_stream;
5170 517 27 ! ! END;
5180 518 28 ! ! signal(desc_header, pending_input);
5190 519 29 ! ! WITH header^ DO
5200 520 30 ! ! BEGIN
5210 521 31 ! ! ! u3 := (master_block*stream_size + input_buffers*master_size);
5220 522 32 ! ! ! u4 := 0;
5230 523 33 ! ! END;
5240 524 34 ! ! send_input;
5250 525 35 ! ! ptr := 2;
5260 526 36 ! END;
5270 527 37 !
5280 528 38 ! input_block_no := 0; input_stopped := false;
5290 529 39 ! FOR ptr := ptr TO input_buffers DO
5300 530 40 ! BEGIN
5310 531 41 ! ! alloc(desc_header, receive_pool, in_desc_sem);
5320 532 42 ! ! alloc(header, message_pool, input_sem.s^);
5330 533 43 ! ! receive(request, 0);
5340 534 44 ! END;
5350 535 45 END (* procedure to restart the receiver *) ;
5360 536
5370 537
5380 538 PROCEDURE test_master(trans_mitter : boolean; answer : integer);
5390 539 VAR sent, count : integer;
5400 540 BEGIN
5410 541 1 ! IF master_match(answer, sent) THEN
5420 542 2 ! BEGIN
5430 543 3 ! ! IF answer = 0 THEN
5440 544 4 ! ! BEGIN
5450 545 5 ! ! ! sent := (header^.u3 MOD stream_size) DIV master_size;
5460 546 6 ! ! ! IF trans_mitter THEN
5470 547 7 ! ! ! BEGIN
5480 548 8 ! ! ! ! release(header); release(desc_header);
5490 549 9 ! ! ! ! restart_xmitter(sent);
5500 550 10 ! ! ! END ELSE
5510 551 11 ! ! ! BEGIN
5520 552 12 ! ! ! ! restart_receiver(sent);
\f
festrlst 81.05.13. 11.35. page 13
5530 553 13 ! ! ! END;
5540 554 14 ! ! END ELSE
5550 555 15 ! ! BEGIN
5560 556 16 ! ! ! IF trans_mitter THEN count := -1 ELSE count := 0;
5570 557 17 ! ! ! IF answer <> sent THEN
5580 558 18 ! ! ! BEGIN
5590 559 19 ! ! ! ! sent := master_size;
5600 560 20 ! ! ! ! count:= -1;
5610 561 21 ! ! ! END;
5620 562 22 ! ! ! sent := sent + count;
5630 563 23 ! ! ! IF trans_mitter THEN xmit(master_out, sent) ELSE receive(master_out, sent);
5640 564 24 ! ! END;
5650 565 25 ! END ELSE
5660 566 26 ! BEGIN
5670 567 27 ! ! release(desc_header);
5680 568 28 ! ! sent := (header^.u4 MOD stream_size) DIV master_size;
5690 569 29 ! ! IF sent = 0 THEN
5700 570 30 ! ! BEGIN
5710 571 31 ! ! ! release(header);
5720 572 32 ! ! END ELSE
5730 573 33 ! ! BEGIN
5740 574 34 ! ! ! sent := sent*master_size + master_size - 1;
5750 575 35 ! ! ! header^.u3 := master_block*stream_size + sent;
5760 576 36 ! ! ! IF trans_mitter THEN signal(header, xmitter.s^) ELSE
5770 577 37 ! ! ! IF open(pending_input) THEN send_input ELSE
5780 578 38 ! ! ! signal(header, receiver.s^);
5790 579 39 ! ! END;
5800 580 40 ! END;
5810 581 41 END (* procedure to master-clear the transmitter *) ;
5820 582
5830 583
5840 584 PROCEDURE link_chain(head, start, stop : integer);
5850 585 VAR i : integer;
5860 586 BEGIN
5870 587 1 ! WITH chain(head) DO
5880 588 2 ! BEGIN
5890 589 3 ! ! next := start; prev := stop;
5900 590 4 ! END;
5910 591 5 ! FOR i := start TO stop DO
5920 592 6 ! WITH chain(i) DO
5930 593 7 ! BEGIN
5940 594 8 ! ! next := i + 1;
5950 595 9 ! ! prev := i - 1;
5960 596 10 ! ! IF i = start THEN prev := head;
5970 597 11 ! ! IF i = stop THEN next := head;
5980 598 12 ! END;
\f
festrlst 81.05.13. 11.35. page 14
5990 599 13 END (* procedure to initialize a chain *);
6000 600
6010 601
6020 602 BEGIN
6030 603 1 !
6040 604 2 ! FOR input_block_no := 1 TO chain_max DO
6050 605 3 ! WITH chain(input_block_no) DO
6060 606 4 ! BEGIN
6070 607 5 ! ! next := input_block_no; prev := next;
6080 608 6 ! END;
6090 609 7 ! link_chain(free_in, 7, 6 + chain_in);
6100 610 8 ! link_chain(free_out, 7 + chain_in, chain_max);
6110 611 9 !
6120 612 10 ! testopen( z, own.incname, op);
6130 613 11 ! testout( z, version, fe_env_version);
6140 614 12 !
6150 615 13 ! restart_xmitter(1);
6160 616 14 ! restart_receiver(1);
6170 617 15 !
6180 618 16 ! WHILE true DO
6190 619 17 ! BEGIN
6200 620 18 ! ! wait(message, input_sem.w^);
6210 621 19 ! ! decode_message(operation, result);
6220 622 20 ! ! CASE operation OF
6230 623 21 ! ! ! sense_com,
6240 624 22 ! ! ! write_data:
6250 625 23 ! ! ! release(message);
6260 626 24 ! ! ! regret_output:
6270 627 25 ! ! ! BEGIN
6280 628 26 ! ! ! ! status := search_sem(out_desc_sem);
6290 629 27 ! ! ! ! IF status = 0 THEN
6300 630 28 ! ! ! ! BEGIN
6310 631 29 ! ! ! ! ! status := search_chain(restart_notices, message^.u3, write_stream, true);
6320 632 30 ! ! ! ! ! IF status <> 0 THEN move_element(status, free_in) ELSE
6330 633 31 ! ! ! ! ! BEGIN
6340 634 32 ! ! ! ! ! ! status := search_chain(noticed_output, message^.u3, write_stream, true);
6350 635 33 ! ! ! ! ! ! IF status <> 0 THEN
6360 636 34 ! ! ! ! ! ! WITH chain(status), ref^ DO
6370 637 35 ! ! ! ! ! ! BEGIN
6380 638 36 ! ! ! ! ! ! ! c_func := u1; c_stream := u3;
6390 639 37 ! ! ! ! ! ! END;
6400 640 38 ! ! ! ! ! END;
6410 641 39 ! ! ! ! ! IF status <> 0 THEN sense_device :=: chain(status).ref ELSE
6420 642 40 ! ! ! ! ! BEGIN
6430 643 41 ! ! ! ! ! ! status := search_sem(waiting_output);
6440 644 42 ! ! ! ! ! ! IF status <> 0 THEN
\f
festrlst 81.05.13. 11.35. page 15
6450 645 43 ! ! ! ! ! ! BEGIN
6460 646 44 ! ! ! ! ! ! ! stream := message^.u3;
6470 647 45 ! ! ! ! ! ! ! REPEAT
6480 648 46 ! ! ! ! ! ! ! ! IF NOT nil(message) THEN signal(message, waiting_output);
6490 649 47 ! ! ! ! ! ! ! ! wait(message, waiting_output);
6500 650 48 ! ! ! ! ! ! ! ! operation := message^.u1;
6510 651 49 ! ! ! ! ! ! ! ! IF (message^.u3=stream) AND (nil(sense_device)) THEN
6520 652 50 ! ! ! ! ! ! ! ! sense_device :=: message;
6530 653 51 ! ! ! ! ! ! ! UNTIL operation = regret_output;
6540 654 52 ! ! ! ! ! ! END;
6550 655 53 ! ! ! ! ! END;
6560 656 54 ! ! ! ! ! IF status <> 0 THEN status := ok_result ELSE status := un_intelligible;
6570 657 55 ! ! ! ! END ELSE status := rejected;
6580 658 56 ! ! ! ! message^.u2 := status;
6590 659 57 ! ! ! ! push(message, sense_device);
6600 660 58 ! ! ! ! return(sense_device);
6610 661 59 ! ! ! END;
6620 662 60 ! ! ! regret_input:
6630 663 61 ! ! ! BEGIN
6640 664 62 ! ! ! ! status := search_sem(in_desc_sem);
6650 665 63 ! ! ! ! IF status = 0 THEN status := search_sem(pending_input);
6660 666 64 ! ! ! ! IF status = 0 THEN
6670 667 65 ! ! ! ! BEGIN
6680 668 66 ! ! ! ! ! status := search_chain(ready_request, message^.u3, read_stream, false);
6690 669 67 ! ! ! ! ! IF status = 0 THEN
6700 670 68 ! ! ! ! ! status := search_chain(received_input, message^.u3, read_stream, false);
6710 671 69 ! ! ! ! ! IF status = 0 THEN
6720 672 70 ! ! ! ! ! BEGIN
6730 673 71 ! ! ! ! ! ! status := un_intelligible;
6740 674 72 ! ! ! ! ! END ELSE
6750 675 73 ! ! ! ! ! BEGIN
6760 676 74 ! ! ! ! ! ! sense_device :=: chain(status).ref;
6770 677 75 ! ! ! ! ! ! move_element(status, free_in);
6780 678 76 ! ! ! ! ! ! status := ok_result;
6790 679 77 ! ! ! ! ! END;
6800 680 78 ! ! ! ! END ELSE
6810 681 79 ! ! ! ! BEGIN
6820 682 80 ! ! ! ! ! status := rejected;
6830 683 81 ! ! ! ! END;
6840 684 82 ! ! ! ! message^.u2 := status;
6850 685 83 ! ! ! ! push(message, sense_device);
6860 686 84 ! ! ! ! return(sense_device);
6870 687 85 ! ! ! END;
6880 688 86 ! ! ! write_stream:
6890 689 87 ! ! ! signal(message, waiting_output);
6900 690 88 ! ! ! read_stream, tell_next_notice:
\f
festrlst 81.05.13. 11.35. page 16
6910 691 89 ! ! ! WITH chain(free_in) DO
6920 692 90 ! ! ! IF free_in = prev THEN
6930 693 91 ! ! ! BEGIN
6940 694 92 ! ! ! ! WITH chain(received_input) DO
6950 695 93 ! ! ! ! IF prev <> received_input THEN place_input(next, message);
6960 696 94 ! ! ! ! message^.u2 := ok_result;
6970 697 95 ! ! ! ! return_input(overload);
6980 698 96 ! ! ! END ELSE
6990 699 97 ! ! ! BEGIN
7000 700 98 ! ! ! ! place_input(next, message);
7010 701 99 ! ! ! END;
7020 702 100 ! ! ! output:
7030 703 101 ! ! ! BEGIN
7040 704 102 ! ! ! ! wait(desc_header, out_desc_sem);
7050 705 103 ! ! ! ! IF output_stopped THEN
7060 706 104 ! ! ! ! BEGIN
7070 707 105 ! ! ! ! ! return_output(master);
7080 708 106 ! ! ! ! ! test_master(true, result);
7090 709 107 ! ! ! ! END ELSE
7100 710 108 ! ! ! ! BEGIN
7110 711 109 ! ! ! ! ! return_output(result + result_modif);
7120 712 110 ! ! ! ! ! CASE result OF
7130 713 111 ! ! ! ! ! ! ok_result, soft_error:
7140 714 112 ! ! ! ! ! ! BEGIN
7150 715 113 ! ! ! ! ! ! ! xqt_request;
7160 716 114 ! ! ! ! ! ! ! operation := notice;
7170 717 115 ! ! ! ! ! ! END;
7180 718 116 ! ! ! ! ! ! OTHERWISE
7190 719 117 ! ! ! ! ! ! BEGIN
7200 720 118 ! ! ! ! ! ! ! output_stopped := true;
7210 721 119 ! ! ! ! ! ! ! operation := master_out;
7220 722 120 ! ! ! ! ! ! ! status := master_size - 1;
7230 723 121 ! ! ! ! ! ! END;
7240 724 122 ! ! ! ! ! END;
7250 725 123 ! ! ! ! ! xmit(operation, status);
7260 726 124 ! ! ! ! END;
7270 727 125 ! ! ! END;
7280 728 126 ! ! ! input:
7290 729 127 ! ! ! BEGIN
7300 730 128 ! ! ! ! wait(desc_header, in_desc_sem);
7310 731 129 ! ! ! ! IF input_stopped THEN
7320 732 130 ! ! ! ! BEGIN
7330 733 131 ! ! ! ! ! return_input(master);
7340 734 132 ! ! ! ! ! test_master(false, result);
7350 735 133 ! ! ! ! END ELSE
7360 736 134 ! ! ! ! BEGIN
\f
festrlst 81.05.13. 11.35. page 17
7370 737 135 ! ! ! ! ! return_input(result+result_modif);
7380 738 136 ! ! ! ! ! CASE result OF
7390 739 137 ! ! ! ! ! ! ok_result, soft_error:
7400 740 138 ! ! ! ! ! ! BEGIN
7410 741 139 ! ! ! ! ! ! ! xqt_notice;
7420 742 140 ! ! ! ! ! ! ! operation := request;
7430 743 141 ! ! ! ! ! ! END;
7440 744 142 ! ! ! ! ! ! OTHERWISE
7450 745 143 ! ! ! ! ! ! BEGIN
7460 746 144 ! ! ! ! ! ! ! input_stopped := true;
7470 747 145 ! ! ! ! ! ! ! operation := master_out;
7480 748 146 ! ! ! ! ! ! ! status := master_size - 1;
7490 749 147 ! ! ! ! ! ! END;
7500 750 148 ! ! ! ! ! END;
7510 751 149 ! ! ! ! ! receive(operation, status);
7520 752 150 ! ! ! ! END;
7530 753 151 ! ! ! END;
7540 754 152 ! ! ! OTHERWISE
7550 755 153 ! ! ! BEGIN
7560 756 154 ! ! ! ! message^.u2 := un_intelligible;
7570 757 155 ! ! ! ! return(message);
7580 758 156 ! ! ! END;
7590 759 157 ! ! END;
7600 760 158 ! END;
7610 761 159 END.
7620 762
\f
festrlst 81.05.13. 11.35. page 18
0 13* 48* 49* 51* 59* 87* 123 138 238 278 315 320 363 366 370
395 399 409 445 460 498 499 506 506 516 516 522 528 533 543
556 569 629 632 635 641 644 656 665 666 669 671
1 9* 10* 27* 40* 50* 54* 55* 60* 76* 130 294 299 300 316 335
345 368 383 402 446 451 462 501 501 511 556 560 574 594 595
604 615 616 722 748
2 14* 28* 56* 61* 76* 525
3 15* 29* 63* 277 451 462
4 16* 30* 64*
5 17* 31* 65*
6 18* 32* 33* 66* 444 609
7 609 610
8 11* 19* 25* 26* 172
9 20*
10 21*
12 22*
63 52*
64 62*
256 55*
32767 68*
alloc 285 318 319 466 503 531 532
answer 538* 541 543 557
as 344: 441:
blocklength_error <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
62*
block_no 166* 182= 183 187 273* 277= 283= 289 294 456* 461= 462 471= 474
boolean 86* 135* 325* 538*
buf 441: 442
buffering 488* 501
buffers 273* 278= 284= 294 456* 460= 469= 479
buffer_size 57* 91*
byte 37* 87* 117* 136*
chain 43* 101 105 110 111 112 140 142 218 221 222 224 239 240 242
266 308 312 372 379 411 412 423 429 492 496 587 592 605 636
641 676 691 694
chain_in 25* 33* 609 610
chain_max 33* 40* 604 610
chain_mem 40* 43*
chain_out 26* 33*
chain_rec 36* 40*
comp_result 167* 178: 197
count 539* 556= 556= 560= 562
c_func 37* 146 638=
c_stream 37* 146 638=
\f
festrlst 81.05.13. 11.35. page 19
d 76* 344: 344
data_buffer 71* 344
decode_message <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
165* 621
desc_header 80* 289 293 296 318 328 439 440 474 478 481 512 514 518 531
548 567 704 730
el 390* 411 412
expected_block <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
456* 462= 472= 479
f 136* 146= 147= 151= 153
false 237 265 314 327 365 369 528 668 670 734
fe_env_version <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
613
first 72* 75* 345 347 444= 446 447
fn 99* 107= 110 111
fp 99* 107= 110 111
free_in 31* 375 431 609 632 677 691 692
free_out 32* 224 225 267 610
from 98* 103 105 112
func_code 135* 153
hard_error 63* 192:
head 584* 587 596 597
header 80* 169 170 204 262 290 297 319 334 359 441: 449 475 519 532
545 548 568 571 575 576 578
i 585* 591= 592 594 595 596 597
incname 612
input 17* 177 728:
input_block_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
95* 451= 451 461 528= 604= 605 607
input_buffers <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
10* 90* 91* 92* 469 470 521 529
input_sem 2* 285 319 466 532 620
input_stopped <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
86* 528= 731 746=
integer 3* 72* 75* 76* 95* 98* 99* 116* 135* 135* 165* 166* 214* 216* 249*
260* 272* 273* 304* 305* 325* 340* 357* 390* 391* 421* 455* 456* 488* 489*
538* 539* 584* 585*
into 98* 101 108
in_desc_sem 84* 440 531 664 730
in_ref 390* 393 397 411 415 416
last 72* 75* 136* 139= 141 156 445= 445= 446= 446
link_chain 584* 609 610
lock 344: 441:
master 65* 185 189 333 707 733
\f
festrlst 81.05.13. 11.35. page 20
master_block 55* 129 183 283 329 471 472 521 575
master_match 325* 327= 331= 541
master_out 50* 563 563 721 747
master_size 56* 57* 177 282 294 332 334 470 479 521 545 559 568 574 574
722 748
max_integer 68* 299
max_stream 52* 54* 87* 498
message 80* 119 125 126 127 131 169 204 207 209 251 253 254 266= 297
298 342 344: 350 351 372= 373 374 429= 430 438 439 445 449 450
481 482 503 504 509 620 625 631 634 646 648 648 649 650 651
652 658 659 668 670 684 685 689 695 696 700 756 757
message_pool 92* 532
move_element 98* 222 242 267 311 375 379 412 431 495 632 677
n 391* 394= 395 399= 402 403= 407= 409 412
next 37* 72* 75* 103 103= 107 108= 110= 140 159 221 222 238 239 241
242 311 312 345 347= 429 431 447= 495 496 589= 594= 597= 607= 607
695 700
next_notice 214* 279
next_request 421* 463
notice 49* 275 320 716
noticed_output <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
28* 222 237 242 265 308 309 634
notices_received <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
87* 362 385= 394 402= 499=
notice_no 357* 362= 363 368= 383= 383 385
no_regret 135* 147
no_stream 51* 227 233 243 263 360 426 507 516
ok_result 59* 176 180: 348 373 415 656 678 696 713: 739:
op 4* 612
open 577
operation 94* 165* 177= 202= 272* 275 455* 458 621 622 650= 653 716= 721= 725
742= 747= 751
output 18* 702:
output_block_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
95* 277 299 299= 300= 300 315=
output_buffers <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
9* 89* 89* 90* 282 284 316
output_stopped <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
86* 314= 705 720=
out_desc_sem 83* 296 318 628 704
overload 66* 697
own 612
own_data 74* 92* 441
own_data_size <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
11* 76* 445
\f
festrlst 81.05.13. 11.35. page 21
pending_input <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
84* 438 482 503 518 577 665
place_input 390* 695 700
pool 89* 90* 91* 92*
pop 169 439
prev 37* 107 108= 111= 112= 219 222 225 242 309 379 412 424 493 589=
595= 596= 607= 692 695
process 1*
ptr 216* 237= 238 238= 239 239= 240 241 260* 265= 266 267 305* 307= 311
312= 312 316= 357* 365= 366 369= 370 372 375 379 489* 491= 495 496=
496 498= 499 501= 511= 525= 529= 529
push 204 297 449 481 659 685
r 215* 230 231 236 240
ready_request <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
30* 379 403 423 424 492 493 668
read_stream 20* 365 668 670 690:
receive 455* 533 563 751
received 325* 333 334= 335=
received_input <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
29* 365 369 407 491 670 694 695
receiver 2* 450 468 578
receiver_buffers <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
304*
receive_pool 91* 503 531
ref 38* 144 149 221 239 240= 266 372 411= 429 636 641 676
reference 38* 80* 215* 390*
regret_input 16* 662:
regret_output <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
22* 626: 653
rejected 60* 193: 348 657 682
release 548 548 567 571 625
request 48* 458 533 742
restart_notices <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
27* 218 219 307 631
restart_receiver <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
488* 552 616
restart_xmitter <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
304* 549 615
result 94* 165* 172= 173 179 185= 189= 196= 196 249* 253 340* 348 348= 350
621 708 711 712 734 737 738
result_modif 94* 173= 711 737
retrans_max 3*
return 254 351 374 416 509 660 686 757
return_input 340* 697 733 737
\f
festrlst 81.05.13. 11.35. page 22
return_output <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
249* 707 711
s 116* 125 126 136* 146= 151= 153 285 287 298 319 450 466 468 532
576 578
search_chain 135* 138= 155= 237 265 365 369 631 634 668 670
search_sem 116* 123= 130= 628 643 664 665
semaphore 84* 116*
sempointer 4*
send_input 436* 483 524 577
sensesem 230
sense_com 13* 147 286 467 623:
sense_device 80* 285 286 287 466 467 468 641= 651 652= 659 660 676= 685 686
sense_pool 90* 285 466
sent 539* 541 545= 549 552 557 559= 562= 562 563 563 568= 569 574= 574
575
signal 125 287 296 298 440 450 468 482 518 576 578 648 689
soft_error 61* 180: 713: 739:
start 135* 139 140= 140 141 142 155 156= 159= 584* 589 591 596
status 94* 272* 282 455* 470 628= 629 631= 632 632 634= 635 636 641 641
643= 644 656 656= 656= 657= 658 664= 665 665= 666 668= 669 670= 671
673= 676 677 678= 682= 684 722= 725 748= 751
stop 117* 121= 128 131 584* 589 591 597
stream 94* 117* 121= 130 135* 153 214* 221= 227= 233= 236= 237 243= 260* 262=
263 265 273* 279 282= 289 357* 359= 360 362 365 369 385 391* 393=
394 402 421* 426= 430= 456* 463 470= 474 646= 651
streamer 1*
stream_size 54* 55* 57* 129 130 182 187 262 289 294 329 359 474 479 521
545 568 575
tell_next_notice <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
19* 369 397 690:
testopen 612
testout 613
test_master 538* 708 734
tn 99* 103= 108 112
trans_mitter 538* 546 556 563 576
true 331 618 631 634 708 720 746
ts_pointer 2*
u1 121 128 131 151 174 202 286= 292= 397 467= 477= 506= 516= 638 650
u2 172 173 203 209= 253= 253 350= 350 373= 415= 506= 516= 658= 684= 696=
756=
u3 121 129 130 151 182 221 236 262 289= 293= 293 329 332 334 359
393 430 474= 478= 478 507= 516= 521= 545 575= 631 634 638 646 651
668 670
u4 177 187 294= 479= 522= 568
\f
festrlst 81.05.13. 11.35. page 23
un_intelligible <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
64* 195 196 656 673 756
user_result 166* 176= 195= 203= 209
version 8* 613
w 620
wait 126 438 620 649 704 730
waiting_output <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
82* 230 643 648 649 689
write_data 14* 624:
write_read_data <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
15* 174 292 477
write_stream 21* 237 265 631 634 688:
xmit 272* 320 563 725
xmitted 325* 332=
xmitter 2* 287 298 576
xmit_pool 89* 318 319
xqt_notice 356* 741
xqt_request 259* 715
z 45* 612 613
zone 45*
\f
festrlst 81.05.13. 11.35. page 24
AND 2
ARRAY 3
BEGIN 113
CASE 4
CONST 3
DIV 9
DO 40
ELSE 36
END 120
FOR 6
FUNCTION 3
GOTO 1
IF 63
LABEL 1
MOD 12
NIL 10
NOT 6
OF 8
OTHERWISE 4
PACKED 1
PROCEDURE 16
RECORD 3
REPEAT 2
THEN 63
TO 6
TYPE 2
UNTIL 2
VAR 23
WHILE 4
WITH 28
\f
jg8 1981.05.13 11.37
festr program
81.05.13. 11.36. pascal80 version 1981.04.01
name headline beginline endline appetite(words)
move_element 99 101 113 : 10
search_sem 117 119 132 : 7
search_chain 136 138 162 : 11
decode_messa 166 169 211 : 9
next_notice 215 218 246 : 24
return_outpu 250 252 256 : 7
xqt_request 260 262 269 : 17
xmit 273 276 301 : 19
restart_xmit 305 307 322 : 18
master_match 326 327 337 : 6
return_input 341 343 353 : 8
xqt_notice 357 359 387 : 18
place_input 391 393 418 : 16
next_request 422 423 433 : 12
send_input 437 438 452 : 10
receive 456 459 484 : 20
restart_rece 489 491 535 : 20
test_master 539 542 581 : 17
link_chain 585 587 599 : 11
streamer 8 604 761 : 315
code: 2 . 624 = 6624 bytes
end of PASCAL80 compilation
end
blocksread = 53
«eof»