|
|
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: 59136 (0xe700)
Types: TextFileVerbose
Names: »pxalclst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »pxalclst«
\f
lst 81.05.05. 10.26. page 1
10 1 PROCESS alc ( (* asynchr link control *)
20 2 VAR sem : !ts_pointer; (* main semaphore *)
30 3 VAR lamsem: !sempointer; (* lam driver sem *)
40 4 port : byte ); (* lam port used *)
50 5 CONST
60 6 recsize=300;
70 7 xmtsize=300;
80 8 testmax=3;
90 9
100 10 TYPE
110 11 commandfield = byte;
120 12 framehead =PACKED RECORD a: 0..255; c: commandfield END;
130 13 headbuf =RECORD first,last,next: integer; fh: framehead END;
140 14 headbuf1 =RECORD first,last,next: integer; op: framehead END;
150 15 cmdrinf =PACKED RECORD cmd,cnt: commandfield; cause: 0..255 END;
160 16 pntbuf =RECORD first,last,next: integer END;
170 17 minbuf =RECORD first,last,next: integer; inf: cmdrinf END;
180 18 errortype = 0..63;
190 19 pnttype =PACKED RECORD notused:0..8191; p: 0..7 END;
200 20 hxtype =PACKED RECORD h0,h1,h2,h3: 0..15 END;
210 21 modemtype =PACKED RECORD f:byte; notused:0..3;
220 22 ! rts,dtr,ci,rate,txe,rxe: 0..1
230 23 END;
240 24
250 25 status = RECORD
260 26 ! lambits, res : byte;
270 27 END;
280 28
290 29 testtype=RECORD
300 30 ! first,last,next: integer;
310 31 ! d:ARRAY (0..testmax) OF PACKED RECORD
320 32 ! ! nt,tt:integer;
330 33 ! ! at:0..255;
340 34 ! ! ct:byte;
350 35 ! ! stt:status;
360 36 ! ! (* extended testoutput ****************
370 37 ! ! *
380 38 ! ! b: 0..4;
390 39 ! ! r,x: 0..15;
400 40 ! ! y: 0..2;
410 41 ! ! m: boolean;
420 42 ! ! jt: 0..3;
430 43 ! ! vt,tnt: 0..7;
440 44 ! ! t0t: 0..127;
450 45 ! ! snd,sif,ab: boolean;
460 46 ! ! p0,p1,p2,p3,p4,p5,p6,p7: 0..15;
\f
lst 81.05.05. 10.26. page 2
470 47 ! ! (**************************************)
480 48 ! END;
490 49 END;
500 50
510 51 bytes6 = ARRAY (0..5) OF byte;
520 52 array6 = ARRAY (1..6) OF integer;
530 53 array8 = ARRAY (0..7) OF integer;
540 54
550 55 statistics = RECORD (* for statistics *)
560 56 ! na1, na2, na3 : integer; (* not used *)
570 57 ! recnu, recs, (* - , received blocks *)
580 58 ! tranu, trans, (* - , transmitted blocks *)
590 59 ! skipnu, skips, (* - , give ups *)
600 60 ! retrnu, retrans : integer; (* - , retransmissions *)
610 61 ! rec_rnr, (* last received rec error *)
620 62 ! xmt_rnr, (* last received xmt error status *)
630 63 ! rec_rej, (* timeouts after enq *)
640 64 ! xmt_rej, (* waits for xmt *)
650 65 ! ack_times, (* timeouts after data *)
660 66 ! dsr, dcd, sqd, (* lambit 12 11 10 off *)
670 67 ! ci : integer; (* lam u4 lam u2 *)
680 68 ! last_rec, (* last opcode received *)
690 69 ! last_xmt : byte; (* last opcode transmitted *)
700 70 ! xmterr, recerr : integer; (* times when u2 <> 0 and 5 *)
710 71 ! fut : array6; (* counter(lam u2 div 8) *)
720 72 END;
730 73
740 74 statetype = ( discon, connec, idle, wack, wrep ); (* xstate *)
750 75 inputtype = ( data, ackn, enqu, rese, nons );
760 76 arow = ARRAY (inputtype) OF byte;
770 77 actiontabletype = ARRAY ( connec..wrep) OF arow;
780 78
790 79 flag =PACKED ARRAY (0..15) OF boolean;
800 80
810 81 CONST
820 82 maxinputs = 2;
830 83
840 84 v24 = bytes6 ( 0, 32, 0, 32, 64, 96);
850 85 zeroes = statistics (
860 86 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
870 87 0,0,0,0,0, 0,0,0,0, array6(6***0) );
880 88
890 89 timeru3 = 250; (* 250,2 = 1000 = 1 sec *)
900 90 timeru4 = 2;
910 91
920 92 send_ok = 0;
\f
lst 81.05.05. 10.26. page 3
930 93 down = 1;
940 94 trouble = 1+8;
950 95 waiting = 10;
960 96 nonsens = 26;
970 97 discp = 99;
980 98
990 99 enq = 5; (* operation codes *)
1000 100 reset = 21;
1010 101 ack_0 = 19;
1020 102 ack_1 = ack_0+1;
1030 103 data_0 = 28;
1040 104 data_1 = data_0+1;
1050 105 codediff = data_0 - ack_0;
1060 106
1070 107 actiontable =
1080 108 actiontabletype (
1090 109 (* data ack enq reset nons *)
1100 110 (*connec*) arow( 3, 2, 7, 1, 0 ),
1110 111 (* idle *) arow( 3, 0, 7, 0, 0 ),
1120 112 (* wack *) arow( 3, 4, 7, 0, 0 ),
1130 113 (* wrep *) arow( 3, 5, 7, 6, 0 ));
1140 114
1150 115 message =7;
1160 116 timeransw =6;
1170 117 recansw =read_it;
1180 118 xmtansw =write_it;
1190 119 conansw =create_it_ch;
1200 120
1210 121 inputmess =1;
1220 122 outputmess =2;
1230 123 sensemess =0;
1240 124 connectmess =4;
1250 125 disconnectmess =8;
1260 126 returnallmess =12;
1270 127 returnunusedmess=16;
1280 128 modemmess =24;
1290 129 statmess =28;
1300 130 statclrmess =32;
1310 131 linespeedmess =36;
1320 132 eventmess =40;
1330 133 testmess =44;
1340 134 setspeedmess = 48;
1350 135
1360 136
\f
lst 81.05.05. 10.26. page 4
2010 137
2020 138 VAR
2030 139 retrans, auto : boolean:= false;
2040 140 test,test1,mstate: boolean:=true;
2050 141 bstate,ystate,t,tn,time,vi,vs:integer:=0;
2060 142 recerr,xmterr: integer:=0;
2070 143 eventlost: integer:=-1;
2080 144 k,n2,t1,t2,i,j,l:integer:= 0;
2090 145 st: status;
2100 146 testbit: flag:=flag(16***false);
2110 147 m,mx,mw,mc, pending : reference;
2120 148 testbuf: testtype;
2130 149 eventqueue,ique,testsem,small: semaphore;
2140 150 headpool: pool 3+maxinputs;
2150 151 framepool: pool 1+maxinputs OF headbuf;
2160 152 priq1: ARRAY (-1..7) OF semaphore;
2170 153
2180 154 xstate : statetype; (* process state *)
2190 155 input : inputtype; (* received from lam *)
2200 156
2210 157 alc_control: byte:= 4+24+96; (* 1200 pbs is standard *)
2220 158 alc_time : byte:= 5;
2230 159
2240 160 lastack, (* save for enq *)
2250 161 func, (* returned u1 *)
2260 162 opk, (* u3 to/from lam *)
2270 163 action, (* selected action *)
2280 164 modem_state, (* lambits div 8 *)
2290 165 result, (* for answer to router *)
2300 166 block_no : byte:=0; (* last send data code *)
2310 167
2320 168 mr : ARRAY (0..maxinputs-1) OF reference;
2330 169 vcodes : ARRAY (1..6) OF byte; (* saved opcodes *)
2340 170
2350 171 stc : statistics := zeroes; (* stat counters *)
2360 172
2370 173
\f
lst 81.05.05. 10.26. page 5
3010 174
3020 175 PROCEDURE asgnbit=asgnintset(VAR bit:flag; w:integer); EXTERNAL;
3030 176
3040 177
3050 178 PROCEDURE exception ( cause: integer);
3060 179 FORWARD;
3070 180
3080 181
3090 182 PROCEDURE event ( cause: integer);
3100 183 FORWARD;
3110 184
3120 185
3130 186 PROCEDURE asgnintset ( VAR d: integer; s: status );
3140 187 EXTERNAL;
3150 188
3160 189
3170 190
3180 191
3190 192
3200 193 PROCEDURE answ; (* return m with ok result *)
3210 194 BEGIN
3220 195 1 ! m^.u2:= 0;
3230 196 2 ! m^.u3:= port;
3240 197 3 ! return ( m)
3250 198 4 END;
3260 199
3270 200
3280 201
3290 202
3300 203
3310 204 PROCEDURE answer ( res: byte); (* return m with res *)
3320 205 BEGIN
3330 206 1 ! m^.u2:= res;
3340 207 2 ! m^.u3:= port;
3350 208 3 ! return ( m)
3360 209 4 END;
3370 210
3380 211
3390 212
\f
lst 81.05.05. 10.26. page 6
4010 213
4020 214 PROCEDURE readlam;
4030 215 (* send input request to lam driver *)
4040 216 VAR um: reference;
4050 217
4060 218 BEGIN
4070 219 1 ! IF (bstate < maxinputs) AND (xstate > discon) THEN
4080 220 2 ! BEGIN
4090 221 3 ! ! sensesem ( um, ique); (* get receive buffer if possible *)
4100 222 4 ! ! IF nil ( um) THEN
4110 223 5 ! ! IF mstate THEN sensesem ( um, small); (* get small if legal *)
4120 224 6 ! ! IF NOT nil ( um) THEN
4130 225 7 ! ! BEGIN
4140 226 8 ! ! ! push ( mr(bstate), um);
4150 227 9 ! ! ! bstate:= bstate+1;
4160 228 10 ! ! ! um^.u2:= port;
4170 229 11 ! ! ! um^.u3:= data_0; (* gives check of first, last in lam *)
4180 230 12 ! ! ! signal ( um, lamsem^);
4190 231 13 ! ! ! (*q trace ( bstate); q*)
4200 232 14 ! ! END;
4210 233 15 ! END
4220 234 16 END;
4230 235
4240 236
4250 237
4260 238
4270 239
4280 240 PROCEDURE create_channel;
4290 241 BEGIN
4300 242 1 ! IF NOT nil ( mc) THEN
4310 243 2 ! BEGIN
4320 244 3 ! ! LOCK mc AS h: headbuf DO
4330 245 4 ! ! h.first:= alc_control*256+alc_time;
4340 246 5 ! ! mc^.u2:= port;
4350 247 6 ! ! (*q trace ( port*256+alc_control); q*)
4360 248 7 ! ! signal ( mc, lamsem^)
4370 249 8 ! END
4380 250 9 END;
4390 251
4400 252
4410 253
\f
lst 81.05.05. 10.26. page 7
5010 254
5020 255 PROCEDURE getresult;
5030 256 BEGIN
5040 257 1 ! st.res:= m^.u2;
5050 258 2 ! st.lambits:= m^.u4;
5060 259 3 ! modem_state:= v24((m^.u4 DIV 8) AND 5);
5070 260 4 ! asgnintset ( stc.ci, st);
5080 261 5 ! i:= m^.u2 DIV 8;
5090 262 6 ! IF i> 0 THEN count ( stc.fut(i));
5100 263 7 ! IF modem_state < 96 THEN
5110 264 8 ! BEGIN
5120 265 9 ! ! IF modem_state MOD 64 = 0 THEN count ( stc.dsr);
5130 266 10 ! ! IF modem_state < 64 THEN count ( stc.dcd);
5140 267 11 ! ! IF xstate >= idle THEN event ( 9);
5150 268 12 ! END
5160 269 13 END;
5170 270
5180 271
5190 272
5200 273
\f
lst 81.05.05. 10.26. page 8
6010 274 PROCEDURE release_buf;
6020 275 BEGIN
6030 276 1 ! pending^.u2:= result;
6040 277 2 ! pending^.u3:= port;
6050 278 3 ! return ( pending);
6060 279 4 ! result:= waiting;
6070 280 5 ! tn:= 0;
6080 281 6 ! time:= -1;
6090 282 7 END;
6100 283
6110 284
6120 285
6130 286
6140 287 PROCEDURE trans ( transcode : byte);
6150 288 BEGIN
6160 289 1 ! IF nil ( mx) THEN
6170 290 2 ! BEGIN
6180 291 3 ! ! count ( stc.xmt_rej);
6190 292 4 ! ! vi:= vi+1;
6200 293 5 ! ! IF vi > 6 THEN (* lam in exception or stopped *)
6210 294 6 ! ! BEGIN
6220 295 7 ! ! ! event ( 10);
6230 296 8 ! ! ! vi:= 2;
6240 297 9 ! ! END;
6250 298 10 ! ! vcodes(vi):= transcode;
6260 299 11 ! END ELSE
6270 300 12 ! BEGIN
6280 301 13 ! ! mx^.u2:= port;
6290 302 14 ! ! mx^.u3:= transcode;
6300 303 15 ! ! signal ( mx, lamsem^);
6310 304 16 ! ! (*q trace ( transcode); q*)
6320 305 17 ! ! stc.last_xmt:= transcode;
6330 306 18 ! ! time:= t2;
6340 307 19 ! END
6350 308 20 END; (* of trans *)
6360 309
\f
lst 81.05.05. 10.26. page 9
7010 310
7020 311
7030 312
7040 313 PROCEDURE transdata;
7050 314 BEGIN
7060 315 1 ! (* pending and mx is not nil *)
7070 316 2 ! mx^.u2:= port;
7080 317 3 ! mx^.u3:= block_no;
7090 318 4 ! push ( mx, pending);
7100 319 5 ! signal ( pending, lamsem^);
7110 320 6 ! (*q trace ( block_no); q*)
7120 321 7 ! stc.last_xmt:= block_no;
7130 322 8 ! time:= t2;
7140 323 9 ! result:= waiting;
7150 324 10 ! xstate:= wack;
7160 325 11 END;
7170 326
7180 327
7190 328
7200 329
7210 330
7220 331 PROCEDURE block_ok;
7230 332 BEGIN
7240 333 1 ! result:= send_ok;
7250 334 2 ! IF nil ( pending) THEN
7260 335 3 ! BEGIN
7270 336 4 ! ! (* ack received before lam xmt finished *)
7280 337 5 ! ! event ( 4);
7290 338 6 ! END ELSE
7300 339 7 ! BEGIN
7310 340 8 ! ! (* count ( xmt_cnt ); *)
7320 341 9 ! ! xstate:= idle;
7330 342 10 ! ! release_buf; (* pending *)
7340 343 11 ! END
7350 344 12 END;
7360 345
7370 346
\f
lst 81.05.05. 10.26. page 10
8010 347
8020 348 PROCEDURE give_up ( cause : byte);
8030 349 BEGIN
8040 350 1 ! result:= cause;
8050 351 2 ! (*q trace ( cause); q*)
8060 352 3 ! count ( stc.skips);
8070 353 4 ! IF nil ( pending) THEN
8080 354 5 ! BEGIN
8090 355 6 ! ! (* lam xmt is dead, when i give up *)
8100 356 7 ! ! event ( 3);
8110 357 8 ! END ELSE
8120 358 9 ! release_buf;
8130 359 10 ! time:= t2;
8140 360 11 !
8150 361 12 ! IF xstate > connec THEN
8160 362 13 ! IF auto THEN (* try to connect again *)
8170 363 14 ! BEGIN
8180 364 15 ! ! event ( 11);
8190 365 16 ! ! mstate:= true;
8200 366 17 ! ! xstate:= connec;
8210 367 18 ! END ELSE
8220 368 19 ! BEGIN
8230 369 20 ! ! event ( 12);
8240 370 21 ! ! xstate:= discon;
8250 371 22 ! END
8260 372 23 END;
8270 373
8280 374
8290 375
8300 376
8310 377 PROCEDURE answer_stat;
8320 378 BEGIN
8330 379 1 ! LOCK m AS buf: statistics DO buf:= stc;
8340 380 2 ! answ;
8350 381 3 END;
8360 382
8370 383
8380 384
\f
lst 81.05.05. 10.26. page 11
9010 385
9020 386 PROCEDURE copytest(VAR m:reference);
9030 387 BEGIN
9040 388 1 ! LOCK m AS b:testtype DO BEGIN
9050 389 2 ! ! b:=testbuf;
9060 390 3 ! ! WITH testbuf DO BEGIN next:=first; last:=first END;
9070 391 4 ! ! WITH b DO IF last<testmax THEN last:=next-1;
9080 392 5 ! END;
9090 393 6 END;
9100 394
9110 395 PROCEDURE otest(n:integer; a:0..255; c:byte);
9120 396 BEGIN
9130 397 1 ! WITH testbuf DO IF next>testmax THEN
9140 398 2 ! IF open(testsem) THEN BEGIN
9150 399 3 ! ! wait(mw,testsem); copytest(mw); return(mw);
9160 400 4 ! END ELSE BEGIN last:=testmax; next:=first END;
9170 401 5 ! WITH testbuf.d(testbuf.next) DO BEGIN
9180 402 6 ! ! nt:=n; at:=a; ct:=c; stt:=st; tt:=time;
9190 403 7 ! ! (* extended testoutput ************************************************
9200 404 8 ! ! *
9210 405 9 ! ! b:=bstate; r:=rstate; x:=ord(xstate); y:=ystate; m:=mstate; jt:=j;
9220 406 10 ! ! vt:=vi; tnt:=tn; t0t:=t; snd:=nil(mx); sif:=nil(pending); ab:=retrans;
9230 407 11 ! ! (***********************************************************************)
9240 408 12 ! END;
9250 409 13 ! WITH testbuf DO next:=next+1;
9260 410 14 END;
9270 411
9280 412 PROCEDURE event(cause: integer);
9290 413 BEGIN
9300 414 1 ! (*q trace ( cause); q*)
9310 415 2 ! IF open(eventqueue) THEN BEGIN
9320 416 3 ! ! wait(mw,eventqueue);
9330 417 4 ! ! mw^.u2:=8*cause; mw^.u3:=port;
9340 418 5 ! ! return(mw);
9350 419 6 ! END ELSE IF eventlost=-1 THEN eventlost:=cause ELSE eventlost:=cause+16;
9360 420 7 END;
9370 421
9380 422 PROCEDURE exception(cause: integer);
9390 423 VAR r: reference;
9400 424 BEGIN
9410 425 1 ! trace(cause);
9420 426 2 ! otest(8,cause,discp);
9430 427 3 ! event(15);
9440 428 4 ! REPEAT
9450 429 5 ! ! wait(r,sem.w^);
9460 430 6 ! ! WITH r^ DO
\f
lst 81.05.05. 10.26. page 12
9470 431 7 ! ! IF u2=message THEN BEGIN
9480 432 8 ! ! ! IF (u1=testmess) AND (u3 MOD 2 = 1) THEN BEGIN
9490 433 9 ! ! ! ! copytest(r); u3:=port; u2:=0; return(r);
9500 434 10 ! ! ! END ELSE
9510 435 11 ! ! ! IF (u1=eventmess) AND (eventlost<>-1) THEN BEGIN
9520 436 12 ! ! ! ! signal(r,eventqueue); event(eventlost); eventlost:=-1;
9530 437 13 ! ! ! END ELSE BEGIN u2:=15*8+3; u3:= port; return(r) END;
9540 438 14 ! ! END ELSE release(r);
9550 439 15 ! UNTIL false;
9560 440 16 END;
9570 441
9580 442
\f
lst 81.05.05. 10.26. page 13
10010 443
10020 444 (*--------------------------- main program ----------------------------*)
10030 445
10040 446
10050 447 BEGIN
10060 448 1 ! (* trace(29); (*--------- version ---------*)
10070 449 2 ! lastack:= reset;
10080 450 3 ! block_no:= data_1;
10090 451 4 ! xstate:= discon;
10100 452 5 ! result:= waiting;
10110 453 6 !
10120 454 7 ! WITH testbuf DO BEGIN first:=0; last:=0; next:=0 END;
10130 455 8 !
10140 456 9 ! alloc(mc,framepool,sem.s^);
10150 457 10 ! mc^.u1:= conansw;
10160 458 11 ! alloc(m,headpool, priq1(-1)); (* see 'xmt next block' line 766 *)
10170 459 12 ! signal(m,priq1(-1));
10180 460 13 !
10190 461 14 ! alloc(mx,headpool,sem.s^);
10200 462 15 ! mx^.u1:= xmtansw;
10210 463 16 ! FOR l:= 0 TO maxinputs-1 DO
10220 464 17 ! BEGIN
10230 465 18 ! ! alloc ( mr(l), headpool, sem.s^);
10240 466 19 ! ! mr(l)^.u1:= recansw;
10250 467 20 ! ! alloc ( m, framepool, small);
10260 468 21 ! ! LOCK m AS buf: headbuf DO
10270 469 22 ! ! BEGIN
10280 470 23 ! ! ! buf.first:= 6;
10290 471 24 ! ! ! buf.last:= 7;
10300 472 25 ! ! END;
10310 473 26 ! ! return ( m)
10320 474 27 ! END;
10330 475 28 !
10340 476 29 ! alloc(m,headpool,sem.s^);
10350 477 30 ! m^.u1:=timeransw; m^.u2:= m^.u1; m^.u3:=timeru3; m^.u4:= timeru4;
10360 478 31 ! sendtimer(m);
10370 479 32 !
10380 480 33 !
\f
lst 81.05.05. 10.26. page 14
11010 481 34 !
11020 482 35 ! (*----------------------- main loop -----------------------------------*)
11030 483 36 !
11040 484 37 ! REPEAT
11050 485 38 ! ! wait(m,sem.w^);
11060 486 39 ! ! func:= m^.u1;
11070 487 40 ! ! IF m^.u2 = message THEN
11080 488 41 ! ! BEGIN
11090 489 42 ! ! ! IF test THEN IF testbit(11) THEN
11100 490 43 ! ! ! otest(((m^.u3+128) MOD 256 - 128)* 256+2,m^.u1,opk);
11110 491 44 ! ! ! CASE m^.u1 OF
11120 492 45 ! ! ! !
11130 493 46 ! ! ! ! sensemess:
11140 494 47 ! ! ! ! BEGIN
11150 495 48 ! ! ! ! ! i:= ord(xstate);
11160 496 49 ! ! ! ! ! IF i>2 THEN i:= 2;
11170 497 50 ! ! ! ! ! answer ( modem_state +i*8);
11180 498 51 ! ! ! ! END;
11190 499 52 ! ! ! !
11200 500 53 ! ! ! ! inputmess:
11210 501 54 ! ! ! ! BEGIN
11220 502 55 ! ! ! ! ! signal ( m, ique);
11230 503 56 ! ! ! ! ! mstate:= false; (* dont use small buffers *)
11240 504 57 ! ! ! ! ! (* until next connect or auto-connect *)
11250 505 58 ! ! ! ! ! (*q trace ( 1); q*)
11260 506 59 ! ! ! ! ! readlam;
11270 507 60 ! ! ! ! END;
11280 508 61 ! ! ! !
11290 509 62 ! ! ! ! outputmess: signal(m,priq1(m^.u3));
11300 510 63 ! ! ! !
11310 511 64 ! ! ! ! connectmess:
11320 512 65 ! ! ! ! BEGIN
11330 513 66 ! ! ! ! ! LOCK m AS h:RECORD
11340 514 67 ! ! ! ! ! ! first,last,next:integer;
11350 515 68 ! ! ! ! ! ! auto:boolean;
11360 516 69 ! ! ! ! ! ! id,t1,n2,k:integer
11370 517 70 ! ! ! ! ! END DO BEGIN
11380 518 71 ! ! ! ! ! ! l:=h.id; k:=h.k; n2:=h.n2; auto:=h.auto;
11390 519 72 ! ! ! ! ! ! t2:= (h.t1+9) DIV 10;
11400 520 73 ! ! ! ! ! END;
11410 521 74 ! ! ! ! ! answ;
11420 522 75 ! ! ! ! ! mstate:= true;
11430 523 76 ! ! ! ! ! IF xstate < idle THEN
11440 524 77 ! ! ! ! ! BEGIN
11450 525 78 ! ! ! ! ! ! xstate:= connec;
11460 526 79 ! ! ! ! ! ! create_channel;
\f
lst 81.05.05. 10.26. page 15
11470 527 80 ! ! ! ! ! ! time:= t2;
11480 528 81 ! ! ! ! ! END;
11490 529 82 ! ! ! ! END; <* connectmess *>
11500 530 83 ! ! ! !
11510 531 84 ! ! ! ! disconnectmess:
11520 532 85 ! ! ! ! BEGIN
11530 533 86 ! ! ! ! ! xstate:= discon;
11540 534 87 ! ! ! ! ! event ( 1);
11550 535 88 ! ! ! ! ! answ;
11560 536 89 ! ! ! ! ! tn:= 0;
11570 537 90 ! ! ! ! END;
11580 538 91 ! ! ! !
11590 539 92 ! ! ! !
\f
lst 81.05.05. 10.26. page 16
12010 540 93 ! ! ! ! statmess: answer_stat;
12020 541 94 ! ! ! !
12030 542 95 ! ! ! ! statclrmess:
12040 543 96 ! ! ! ! BEGIN answer_stat; stc:= zeroes; END;
12050 544 97 ! ! ! !
12060 545 98 ! ! ! ! setspeedmess:
12070 546 99 ! ! ! ! BEGIN
12080 547 100 ! ! ! ! ! LOCK m AS buf: RECORD ctr, tim:byte END DO
12090 548 101 ! ! ! ! ! BEGIN
12100 549 102 ! ! ! ! ! ! alc_control:= buf.ctr;
12110 550 103 ! ! ! ! ! ! alc_time:= buf.tim;
12120 551 104 ! ! ! ! ! END;
12130 552 105 ! ! ! ! ! answ;
12140 553 106 ! ! ! ! END;
12150 554 107 ! ! ! !
12160 555 108 ! ! ! !
12170 556 109 ! ! ! ! linespeedmess:
12180 557 110 ! ! ! ! BEGIN
12190 558 111 ! ! ! ! ! IF xstate < idle THEN answer ( 0)
12200 559 112 ! ! ! ! ! ELSE answer ( 56); (* 1200 bps *)
12210 560 113 ! ! ! ! END;
12220 561 114 ! ! ! !
12230 562 115 ! ! ! ! modemmess: answ;
12240 563 116 ! ! ! !
12250 564 117 ! ! ! !
\f
lst 81.05.05. 10.26. page 17
13010 565 118 ! ! ! !
13020 566 119 ! ! ! ! returnallmess,
13030 567 120 ! ! ! ! returnunusedmess:
13040 568 121 ! ! ! ! BEGIN
13050 569 122 ! ! ! ! ! WHILE open ( ique) DO
13060 570 123 ! ! ! ! ! BEGIN
13070 571 124 ! ! ! ! ! ! wait ( mw, ique);
13080 572 125 ! ! ! ! ! ! mw^.u2:= down;
13090 573 126 ! ! ! ! ! ! mw^.u3:= port;
13100 574 127 ! ! ! ! ! ! return ( mw)
13110 575 128 ! ! ! ! ! END;
13120 576 129 ! ! ! ! ! FOR i:= 7 DOWNTO 0 DO
13130 577 130 ! ! ! ! ! WHILE open ( priq1(i)) DO
13140 578 131 ! ! ! ! ! BEGIN
13150 579 132 ! ! ! ! ! ! wait ( mw, priq1(i));
13160 580 133 ! ! ! ! ! ! mw^.u2:= down;
13170 581 134 ! ! ! ! ! ! mw^.u3:= port;
13180 582 135 ! ! ! ! ! ! return ( mw);
13190 583 136 ! ! ! ! ! END;
13200 584 137 ! ! ! ! ! IF m^.u1 = returnallmess THEN
13210 585 138 ! ! ! ! ! BEGIN
13220 586 139 ! ! ! ! ! ! xstate:= discon;
13230 587 140 ! ! ! ! ! ! mstate:= true;
13240 588 141 ! ! ! ! ! ! event ( 1);
13250 589 142 ! ! ! ! ! ! tn:= t2;
13260 590 143 ! ! ! ! ! END;
13270 591 144 ! ! ! ! ! answ;
13280 592 145 ! ! ! ! END;
13290 593 146 ! ! ! !
13300 594 147 ! ! ! !
13310 595 148 ! ! ! ! testmess:
13320 596 149 ! ! ! ! BEGIN
13330 597 150 ! ! ! ! ! asgnbit(testbit,m^.u3);
13340 598 151 ! ! ! ! ! m^.u3:=port; m^.u2:=0;
13350 599 152 ! ! ! ! ! test:=testbit(13);
13360 600 153 ! ! ! ! ! IF testbit(15) THEN copytest(m);
13370 601 154 ! ! ! ! ! IF testbit(14) THEN
13380 602 155 ! ! ! ! ! IF testbit(15) THEN WHILE open(testsem) DO BEGIN
13390 603 156 ! ! ! ! ! ! return(m); wait(m,testsem); m^.u2:=1;
13400 604 157 ! ! ! ! ! END ELSE WITH testbuf DO
13410 605 158 ! ! ! ! ! IF last>first THEN BEGIN
13420 606 159 ! ! ! ! ! ! copytest(m); return(m);
13430 607 160 ! ! ! ! ! END ELSE signal(m,testsem)
13440 608 161 ! ! ! ! ! ELSE return(m);
13450 609 162 ! ! ! ! END;
13460 610 163 ! ! ! !
\f
lst 81.05.05. 10.26. page 18
13470 611 164 ! ! ! ! eventmess:
13480 612 165 ! ! ! ! BEGIN
13490 613 166 ! ! ! ! ! signal(m,eventqueue);
13500 614 167 ! ! ! ! ! IF eventlost<>-1 THEN BEGIN event(eventlost); eventlost:=-1; END;
13510 615 168 ! ! ! ! END;
13520 616 169 ! ! ! !
\f
lst 81.05.05. 10.26. page 19
14010 617 170 ! ! ! ! OTHERWISE m^.u2:=4; m^.u3:= port; return(m);
14020 618 171 ! ! ! END;
14030 619 172 ! ! END <* message *>
14040 620 173 ! ! ELSE
14050 621 174 ! !
14060 622 175 ! ! CASE func OF
14070 623 176 ! ! !
14080 624 177 ! ! ! recansw:
14090 625 178 ! ! ! BEGIN
14100 626 179 ! ! ! ! getresult;
14110 627 180 ! ! ! ! opk:= nonsens;
14120 628 181 ! ! ! ! IF m^.u2 = 0 THEN BEGIN opk:= m^.u3; recerr:= 0 END ELSE
14130 629 182 ! ! ! ! IF m^.u2 = 5 THEN recerr:= 0 ELSE
14140 630 183 ! ! ! ! BEGIN
14150 631 184 ! ! ! ! ! count ( stc.recerr);
14160 632 185 ! ! ! ! ! stc.rec_rnr:= stc.ci;
14170 633 186 ! ! ! ! ! (*q trace ( m^.u2); q*)
14180 634 187 ! ! ! ! ! recerr:= recerr+1;
14190 635 188 ! ! ! ! ! IF recerr >= n2 THEN
14200 636 189 ! ! ! ! ! BEGIN
14210 637 190 ! ! ! ! ! ! recerr:= 0;
14220 638 191 ! ! ! ! ! ! event ( 13);
14230 639 192 ! ! ! ! ! END
14240 640 193 ! ! ! ! END;
14250 641 194 ! ! ! ! bstate:= bstate-1;
14260 642 195 ! ! ! ! pop ( mr(bstate), m);
14270 643 196 ! ! ! ! readlam;
14280 644 197 ! ! ! ! stc.last_rec:= opk;
14290 645 198 ! ! ! !
14300 646 199 ! ! ! ! CASE opk OF
14310 647 200 ! ! ! ! ! enq: input:= enqu;
14320 648 201 ! ! ! ! ! ack_0,
14330 649 202 ! ! ! ! ! ack_1: input:= ackn;
14340 650 203 ! ! ! ! ! reset: input:= rese;
14350 651 204 ! ! ! ! ! data_0,
14360 652 205 ! ! ! ! ! data_1: input:= data;
14370 653 206 ! ! ! ! ! nonsens: input:= nons;
14380 654 207 ! ! ! ! ! OTHERWISE
14390 655 208 ! ! ! ! ! BEGIN
14400 656 209 ! ! ! ! ! ! event ( 7);
14410 657 210 ! ! ! ! ! ! input:= nons;
14420 658 211 ! ! ! ! ! END
14430 659 212 ! ! ! ! END;
14440 660 213 ! ! ! !
14450 661 214 ! ! ! ! IF xstate < connec THEN action:= 0 ELSE
14460 662 215 ! ! ! ! action:= actiontable(xstate,input);
\f
lst 81.05.05. 10.26. page 20
14470 663 216 ! ! ! ! IF test THEN
14480 664 217 ! ! ! ! IF testbit(12) THEN otest ( bstate, action, opk);
14490 665 218 ! ! ! ! (*q trace ( opk); q*)
14500 666 219 ! ! ! !
14510 667 220 ! ! ! !
\f
lst 81.05.05. 10.26. page 21
15010 668 221 ! ! ! !
15020 669 222 ! ! ! ! CASE action OF
15030 670 223 ! ! ! ! !
15040 671 224 ! ! ! ! ! 0: ; (* do nothing *)
15050 672 225 ! ! ! ! !
15060 673 226 ! ! ! ! ! 1: (* reset received *)
15070 674 227 ! ! ! ! ! BEGIN
15080 675 228 ! ! ! ! ! ! xstate:= idle;
15090 676 229 ! ! ! ! ! ! event ( 0);
15100 677 230 ! ! ! ! ! END;
15110 678 231 ! ! ! ! !
15120 679 232 ! ! ! ! !
15130 680 233 ! ! ! ! ! 2: (* ack received when connecting *)
15140 681 234 ! ! ! ! ! BEGIN
15150 682 235 ! ! ! ! ! ! block_no:= opk+codediff;
15160 683 236 ! ! ! ! ! ! xstate:= idle;
15170 684 237 ! ! ! ! ! ! event ( 0);
15180 685 238 ! ! ! ! ! END;
15190 686 239 ! ! ! ! !
15200 687 240 ! ! ! ! !
15210 688 241 ! ! ! ! ! 3: (* data received *)
15220 689 242 ! ! ! ! ! BEGIN
15230 690 243 ! ! ! ! ! ! m^.u2:= 0;
15240 691 244 ! ! ! ! ! ! m^.u3:= port;
15250 692 245 ! ! ! ! ! ! return ( m);
15260 693 246 ! ! ! ! ! ! lastack:= opk-codediff;
15270 694 247 ! ! ! ! ! ! trans ( lastack);
15280 695 248 ! ! ! ! ! ! count ( stc.recs);
15290 696 249 ! ! ! ! ! END;
15300 697 250 ! ! ! ! !
15310 698 251 ! ! ! ! !
15320 699 252 ! ! ! ! ! 4: (* ack received *)
15330 700 253 ! ! ! ! ! IF opk+codediff = block_no THEN block_ok;
15340 701 254 ! ! ! ! !
15350 702 255 ! ! ! ! !
15360 703 256 ! ! ! ! ! 5: (* ack received after enq *)
15370 704 257 ! ! ! ! ! IF opk+codediff = block_no THEN block_ok
15380 705 258 ! ! ! ! ! ELSE retrans:= true;
15390 706 259 ! ! ! ! !
15400 707 260 ! ! ! ! !
15410 708 261 ! ! ! ! ! 6: (* reset received after data *)
15420 709 262 ! ! ! ! ! BEGIN
15430 710 263 ! ! ! ! ! ! retrans:= true;
15440 711 264 ! ! ! ! ! ! event ( 0);
15450 712 265 ! ! ! ! ! END;
15460 713 266 ! ! ! ! !
\f
lst 81.05.05. 10.26. page 22
15470 714 267 ! ! ! ! ! 7: (* enq received *)
15480 715 268 ! ! ! ! ! BEGIN
15490 716 269 ! ! ! ! ! ! trans ( lastack);
15500 717 270 ! ! ! ! ! ! count ( stc.rec_rej);
15510 718 271 ! ! ! ! ! ! IF xstate < idle THEN
15520 719 272 ! ! ! ! ! ! BEGIN
15530 720 273 ! ! ! ! ! ! ! xstate:= idle;
15540 721 274 ! ! ! ! ! ! ! event ( 0);
15550 722 275 ! ! ! ! ! ! END;
15560 723 276 ! ! ! ! ! END
15570 724 277 ! ! ! ! END; (* case *)
15580 725 278 ! ! ! !
15590 726 279 ! ! ! ! IF input <> data THEN
15600 727 280 ! ! ! ! IF ownertest ( framepool, m ) THEN return ( m) ELSE
15610 728 281 ! ! ! ! IF (xstate=discon) AND (mstate) THEN (* release input *)
15620 729 282 ! ! ! ! answer ( down) ELSE
15630 730 283 ! ! ! ! signal ( m, ique);
15640 731 284 ! ! ! ! readlam;
15650 732 285 ! ! ! END; (* receiver answer *)
15660 733 286 ! ! !
15670 734 287 ! ! !
\f
lst 81.05.05. 10.26. page 23
16010 735 288 ! ! !
16020 736 289 ! ! ! xmtansw:
16030 737 290 ! ! ! BEGIN
16040 738 291 ! ! ! ! getresult;
16050 739 292 ! ! ! ! IF test THEN
16060 740 293 ! ! ! ! IF testbit(12) THEN otest ( 16, action, m^.u3 );
16070 741 294 ! ! ! ! IF m^.u2 = 0 THEN
16080 742 295 ! ! ! ! BEGIN
16090 743 296 ! ! ! ! ! xmterr:= 0;
16100 744 297 ! ! ! ! ! (*q trace ( m^.u3); q*)
16110 745 298 ! ! ! ! END ELSE
16120 746 299 ! ! ! ! BEGIN
16130 747 300 ! ! ! ! ! count ( stc.xmterr);
16140 748 301 ! ! ! ! ! stc.xmt_rnr:= stc.ci;
16150 749 302 ! ! ! ! ! xmterr:= xmterr+1;
16160 750 303 ! ! ! ! ! IF xmterr >= n2 THEN
16170 751 304 ! ! ! ! ! BEGIN
16180 752 305 ! ! ! ! ! ! xmterr:= 0;
16190 753 306 ! ! ! ! ! ! event ( 14);
16200 754 307 ! ! ! ! ! END
16210 755 308 ! ! ! ! END;
16220 756 309 ! ! ! ! pop ( mx, m);
16230 757 310 ! ! ! ! IF mx^.u3 >= data_0 THEN
16240 758 311 ! ! ! ! BEGIN
16250 759 312 ! ! ! ! ! pending :=: m;
16260 760 313 ! ! ! ! ! IF result <> waiting THEN release_buf;
16270 761 314 ! ! ! ! END;
16280 762 315 ! ! ! ! readlam;
16290 763 316 ! ! ! END;
16300 764 317 ! ! !
16310 765 318 ! ! !
16320 766 319 ! ! !
16330 767 320 ! ! ! conansw:
16340 768 321 ! ! ! BEGIN
16350 769 322 ! ! ! ! mc:=: m;
16360 770 323 ! ! ! ! IF mc^.u2 <> 0 THEN event ( 14);
16370 771 324 ! ! ! END;
16380 772 325 ! ! !
16390 773 326 ! ! !
16400 774 327 ! ! !
\f
lst 81.05.05. 10.26. page 24
17010 775 328 ! ! ! timeransw:
17020 776 329 ! ! ! BEGIN
17030 777 330 ! ! ! ! IF time > 0 THEN time:= time-1;
17040 778 331 ! ! ! ! IF time = 0 THEN
17050 779 332 ! ! ! ! (* timeout *)
17060 780 333 ! ! ! ! CASE xstate OF
17070 781 334 ! ! ! ! !
17080 782 335 ! ! ! ! ! connec:
17090 783 336 ! ! ! ! ! BEGIN
17100 784 337 ! ! ! ! ! ! tn:= tn+1;
17110 785 338 ! ! ! ! ! ! IF tn >= n2 THEN
17120 786 339 ! ! ! ! ! ! BEGIN
17130 787 340 ! ! ! ! ! ! ! event ( 11);
17140 788 341 ! ! ! ! ! ! ! tn:= 1;
17150 789 342 ! ! ! ! ! ! END;
17160 790 343 ! ! ! ! ! ! trans ( enq);
17170 791 344 ! ! ! ! ! END;
17180 792 345 ! ! ! ! !
17190 793 346 ! ! ! ! ! wack:
17200 794 347 ! ! ! ! ! BEGIN
17210 795 348 ! ! ! ! ! ! tn:= 1;
17220 796 349 ! ! ! ! ! ! trans ( enq);
17230 797 350 ! ! ! ! ! ! count ( stc.ack_times);
17240 798 351 ! ! ! ! ! ! xstate:= wrep;
17250 799 352 ! ! ! ! ! END;
17260 800 353 ! ! ! ! !
17270 801 354 ! ! ! ! ! wrep:
17280 802 355 ! ! ! ! ! BEGIN
17290 803 356 ! ! ! ! ! ! tn:= tn+1;
17300 804 357 ! ! ! ! ! ! count ( stc.rec_rej);
17310 805 358 ! ! ! ! ! ! IF tn >= n2 THEN give_up ( trouble)
17320 806 359 ! ! ! ! ! ! ELSE trans ( enq);
17330 807 360 ! ! ! ! ! END
17340 808 361 ! ! ! ! !
17350 809 362 ! ! ! ! ! OTHERWISE
17360 810 363 ! ! ! ! ! time:= -1;
17370 811 364 ! ! ! ! !
17380 812 365 ! ! ! ! END; (* timeout *)
17390 813 366 ! ! ! !
17400 814 367 ! ! ! ! m^.u3:= timeru3; m^.u4:= timeru4;
17410 815 368 ! ! ! ! sendtimer ( m);
17420 816 369 ! ! ! END; (* timer *)
17430 817 370 ! ! !
17440 818 371 ! ! ! OTHERWISE (* unknown answer *)
17450 819 372 ! ! ! IF st.lambits = func THEN release ( m)
17460 820 373 ! ! ! ELSE return ( m);
\f
lst 81.05.05. 10.26. page 25
17470 821 374 ! ! ! st.lambits:= func;
17480 822 375 ! ! ! event ( 5);
17490 823 376 ! ! END; (* handling of arriving message *)
17500 824 377 ! !
\f
lst 81.05.05. 10.26. page 26
18010 825 378 ! !
18020 826 379 ! !
18030 827 380 ! ! (* xmt if requested *)
18040 828 381 ! !
18050 829 382 ! ! IF NOT nil ( mx) THEN
18060 830 383 ! ! BEGIN
18070 831 384 ! ! ! IF vi > 0 THEN
18080 832 385 ! ! ! BEGIN
18090 833 386 ! ! ! ! mx^.u2:= port;
18100 834 387 ! ! ! ! mx^.u3:= vcodes(1);
18110 835 388 ! ! ! ! signal ( mx, lamsem^);
18120 836 389 ! ! ! ! FOR i:= 2 TO vi DO vcodes(i-1):= vcodes(i);
18130 837 390 ! ! ! ! vi:= vi-1;
18140 838 391 ! ! ! END ELSE
18150 839 392 ! ! !
18160 840 393 ! ! ! IF (retrans) AND (NOT nil ( pending)) THEN
18170 841 394 ! ! ! BEGIN
18180 842 395 ! ! ! ! transdata;
18190 843 396 ! ! ! ! count ( stc.retrans);
18200 844 397 ! ! ! ! retrans:= false;
18210 845 398 ! ! ! END ELSE
18220 846 399 ! ! !
18230 847 400 ! ! ! IF (nil ( pending)) AND ( xstate < wack ) THEN (* xmt next block *)
18240 848 401 ! ! ! BEGIN
18250 849 402 ! ! ! ! i:= 7;
18260 850 403 ! ! ! ! WHILE passive ( priq1(i)) DO i:= i-1;
18270 851 404 ! ! ! ! IF i> -1 THEN
18280 852 405 ! ! ! ! BEGIN
18290 853 406 ! ! ! ! ! wait ( pending, priq1(i));
18300 854 407 ! ! ! ! ! IF xstate = idle THEN (* xmit *)
18310 855 408 ! ! ! ! ! BEGIN
18320 856 409 ! ! ! ! ! ! block_no:= data_0 + data_1 - block_no;
18330 857 410 ! ! ! ! ! ! transdata;
18340 858 411 ! ! ! ! ! ! count ( stc.trans);
18350 859 412 ! ! ! ! ! END ELSE
18360 860 413 ! ! ! ! ! give_up ( down); (* if line down *)
18370 861 414 ! ! ! ! END
18380 862 415 ! ! ! END
18390 863 416 ! ! END (* mx unused *)
18400 864 417 ! !
18410 865 418 ! UNTIL false
18420 866 419 !
18430 867 420 END . (* of alc program *)
\f
lst 81.05.05. 10.26. page 27
0 12* 15* 18* 19* 19* 20* 21* 22* 31* 33* 51* 53* 79* 84* 84*
86* 86* 86* 86* 86* 86* 86* 86* 86* 86* 86* 86* 86* 86* 86*
87* 87* 87* 87* 87* 87* 87* 87* 87* 87* 92* 110* 111* 111* 111*
112* 112* 113* 123* 141* 142* 144* 166* 168* 195 262 265 280 395* 433
454 454 454 463 536 558 576 598 628 628 629 637 661 671: 676
684 690 711 721 741 743 752 770 777 778 831
1 22* 52* 93* 94* 102* 104* 110* 121* 143* 151* 152* 168* 169* 227 281
292 391 409 419 432 435 436 458 459 463 534 588 603 614 614
634 641 673: 749 777 784 788 795 803 810 834 836 837 850 851
2 82* 90* 110* 122* 296 432 490 496 496 680: 836
3 8* 21* 110* 111* 112* 113* 150* 356 437 688:
4 112* 124* 157* 337 617 699:
5 51* 99* 113* 158* 259 629 703: 822
6 52* 87* 113* 116* 169* 293 470 708:
7 19* 53* 110* 111* 112* 113* 115* 152* 471 576 656 714: 849
8 94* 125* 259 261 417 426 437 497
9 267 519
10 95* 295 519
11 364 489 787
12 126* 369 664 740
13 599 638
14 601 753 770
15 20* 79* 427 437 600 602
16 127* 146* 419 740
19 101*
21 100*
24 128* 157*
26 96*
28 103* 129*
32 84* 84* 130*
36 131*
40 132*
44 133*
48 134*
56 559
63 18*
64 84* 265 266
96 84* 157* 263
99 97*
128 490 490
250 89*
255 12* 15* 33* 395*
256 245 490 490
300 6* 7*
\f
lst 81.05.05. 10.26. page 28
8191 19*
a 12* 395* 402
ackn 75* 649
ack_0 101* 102* 105* 648:
ack_1 102* 649:
ack_times 65* 797
action 163* 661= 662= 664 669 740
actiontable 107* 662
actiontabletype <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
77* 108*
alc 1*
alc_control 157* 245 549=
alc_time 158* 245 550=
alloc 456 458 461 465 467 476
answ 193* 380 521 535 552 562 591
answer 204* 497 558 559 729
answer_stat 377* 540 543
arow 76* 77* 110* 111* 112* 113*
array6 52* 71* 87*
array8 53*
as 244: 379: 388: 468: 513: 547:
asgnbit 175* 597
asgnintset 175* 186* 260
at 33* 402=
auto 139* 362 515: 518= 518
b 388: 389= 391
bit 175*
block_no 166* 317 321 450= 682= 700 704 856= 856
block_ok 331* 700 704
boolean 79* 139* 140* 515
bstate 141* 219 226 227= 227 641= 641 642 664
buf 379: 379= 468: 470 471 547: 549 550
byte 4* 11* 21* 26* 34* 51* 69* 76* 157* 158* 166* 169* 204* 287* 348*
395* 547
bytes6 51* 84*
c 12* 395* 402
cause 15* 178* 182* 348* 350 412* 417 419 419 422* 425 426
ci 22* 67* 260 632 748
cmd 15*
cmdrinf 15* 17*
cnt 15*
codediff 105* 682 693 700 704
commandfield 11* 12* 15*
conansw 119* 457 767:
\f
lst 81.05.05. 10.26. page 29
connec 74* 77* 361 366 525 661 782:
connectmess 124* 511:
copytest 386* 399 433 600 606
count 262 265 266 291 352 631 695 717 747 797 804 843 858
create_channel <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
240* 526
create_it_ch 119*
ct 34* 402=
ctr 547: 549
d 31* 186* 401
data 75* 652 726
data_0 103* 104* 105* 229 651: 757 856
data_1 104* 450 652: 856
dcd 66* 266
discon 74* 219 370 451 533 586 728
disconnectmess <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
125* 531:
discp 97* 426
down 93* 572 580 729 860
dsr 66* 265
dtr 22*
enq 99* 647: 790 796 806
enqu 75* 647
errortype 18*
event 182* 267 295 337 356 364 369 412* 427 436 534 588 614 638 656
676 684 711 721 753 770 787 822
eventlost 143* 419 419= 419= 435 436 436= 614 614 614=
eventmess 132* 435 611:
eventqueue 149* 415 416 436 613
exception 178* 422*
external 175* 187*
f 21*
false 139* 146* 439 503 844 865
fh 13*
first 13* 14* 16* 17* 30* 245= 390 390 400 454= 470= 514: 605
flag 79* 146* 146* 175*
framehead 12* 13* 14*
framepool 151* 456 467 727
func 161* 486= 622 819 821
fut 71* 262
getresult 255* 626 738
give_up 348* 805 860
h 244: 245 513: 518 518 518 518 519
h0 20*
\f
lst 81.05.05. 10.26. page 30
h1 20*
h2 20*
h3 20*
headbuf 13* 151* 244 468
headbuf1 14*
headpool 150* 458 461 465 476
hxtype 20*
i 144* 261= 262 262 495= 496 496= 497 576= 577 579 836= 836 836 849=
850 850= 850 851 853
id 516: 518
idle 74* 267 341 523 558 675 683 718 720 854
inf 17*
input 155* 647= 649= 650= 652= 653= 657= 662 726
inputmess 121* 500:
inputtype 75* 76* 155*
integer 13* 14* 16* 17* 30* 32* 52* 53* 56* 60* 67* 70* 141* 142* 143*
144* 175* 178* 182* 186* 395* 412* 422* 514 516
ique 149* 221 502 569 571 730
j 144*
k 144* 516: 518= 518
l 144* 463= 465 466 518=
lambits 26* 258= 819 821=
lamsem 3* 230 248 303 319 835
last 13* 14* 16* 17* 30* 390= 391 391= 400= 454= 471= 514: 605
lastack 160* 449= 693= 694 716
last_rec 68* 644=
last_xmt 69* 305= 321=
linespeedmess <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
131* 556:
lock 244: 379: 388: 468: 513: 547:
m 147* 195 196 197 206 207 208 257 258 259 261 379: 386* 388: 458
459 467 468: 473 476 477 477 477 477 477 478 485 486 487 490
490 491 502 509 509 513: 547: 584 597 598 598 600 603 603 603
606 606 607 608 613 617 617 617 628 628 629 642 690 691 692
727 727 730 740 741 756 759 769 814 814 815 819 820
maxinputs 82* 150* 151* 168* 219 463
mc 147* 242 244: 246 248 456 457 769= 770
message 115* 431 487
minbuf 17*
modemmess 128* 562:
modemtype 21*
modem_state 164* 259= 263 265 266 497
mr 168* 226 465 466 642
mstate 140* 223 365= 503= 522= 587= 728
\f
lst 81.05.05. 10.26. page 31
mw 147* 399 399 399 416 417 417 418 571 572 573 574 579 580 581
582
mx 147* 289 301 302 303 316 317 318 461 462 756 757 829 833 834
835
n 395* 402
n2 144* 516: 518= 518 635 750 785 805
na1 56*
na2 56*
na3 56*
next 13* 14* 16* 17* 30* 390= 391 397 400= 401 409= 409 454= 514:
nons 75* 653 657
nonsens 96* 627 653:
notused 19* 21*
nt 32* 402=
op 14*
open 398 415 569 577 602
opk 162* 490 627= 628= 644 646 664 682 693 700 704
ord 495
otest 395* 426 490 664 740
outputmess 122* 509:
ownertest 727
p 19*
passive 850
pending 147* 276 277 278 318 319 334 353 759= 840 847 853
pntbuf 16*
pnttype 19*
pool 150* 151*
pop 642 756
port 4* 196 207 228 246 277 301 316 417 433 437 573 581 598 617
691 833
priq1 152* 458 459 509 577 579 850 853
process 1*
push 226 318
r 423* 429 430 433 433 436 437 438
rate 22*
readlam 214* 506 643 731 762
read_it 117*
recansw 117* 466 624:
recerr 70* 142* 628= 629= 631 634= 634 635 637=
recnu 57*
recs 57* 695
recsize 6*
rec_rej 63* 717 804
rec_rnr 61* 632=
\f
lst 81.05.05. 10.26. page 32
reference 147* 168* 216* 386* 423*
release 438 819
release_buf 274* 342 358 760
res 26* 204* 206 257=
rese 75* 650
reset 100* 449 650:
result 165* 276 279= 323= 333= 350= 452= 760
retrans 60* 139* 705= 710= 840 843 844=
retrnu 60*
return 197 208 278 399 418 433 437 473 574 582 603 606 608 617 692
727 820
returnallmess <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
126* 566: 584
returnunusedmess <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
127* 567:
rts 22*
rxe 22*
s 186* 456 461 465 476
sem 2* 429 456 461 465 476 485
semaphore 149* 152*
sempointer 3*
sendtimer 478 815
send_ok 92* 333
sensemess 123* 493:
sensesem 221 223
setspeedmess 134* 545:
signal 230 248 303 319 436 459 502 509 607 613 730 835
skipnu 59*
skips 59* 352
small 149* 223 467
sqd 66*
st 145* 257 258 260 402 819 821
statclrmess 130* 542:
statetype 74* 154*
statistics 55* 85* 171* 379
statmess 129* 540:
status 25* 35* 145* 186*
stc 171* 260 262 265 266 291 305 321 352 379 543= 631 632 632 644
695 717 747 748 748 797 804 843 858
stt 35* 402=
t 141*
t1 144* 516: 519
t2 144* 306 322 359 519= 527 589
test 140* 489 599= 663 739
\f
lst 81.05.05. 10.26. page 33
test1 140*
testbit 146* 489 597 599 600 601 602 664 740
testbuf 148* 389 390 397 401 401 409 454 604
testmax 8* 31* 391 397 400
testmess 133* 432 595:
testsem 149* 398 399 602 603 607
testtype 29* 148* 388
tim 547: 550
time 141* 281= 306= 322= 359= 402 527= 777 777= 777 778 810=
timeransw 116* 477 775:
timeru3 89* 477 814
timeru4 90* 477 814
tn 141* 280= 536= 589= 784= 784 785 788= 795= 803= 803 805
trace 425
trans 58* 287* 694 716 790 796 806 858
transcode 287* 298 302 305
transdata 313* 842 857
tranu 58*
trouble 94* 805
true 140* 365 522 587 705 710
ts_pointer 2*
tt 32* 402=
txe 22*
u1 432 435 457= 462= 466= 477= 477 486 490 491 584
u2 195= 206= 228= 246= 257 261 276= 301= 316= 417= 431 433= 437= 477= 487
572= 580= 598= 603= 617= 628 629 690= 741 770 833=
u3 196= 207= 229= 277= 302= 317= 417= 432 433= 437= 477= 490 509 573= 581=
597 598= 617= 628 691= 740 757 814= 834=
u4 258 259 477= 814=
um 216* 221 222 223 224 226 228 229 230
v24 84* 259
vcodes 169* 298= 834 836= 836
vi 141* 292= 292 293 296= 298 831 836 837= 837
vs 141*
w 175* 429 485
wack 74* 324 793: 847
wait 399 416 429 485 571 579 603 853
waiting 95* 279 323 452 760
wrep 74* 77* 798 801:
write_it 118*
xmtansw 118* 462 736:
xmterr 70* 142* 743= 747 749= 749 750 752=
xmtsize 7*
xmt_rej 64* 291
\f
lst 81.05.05. 10.26. page 34
xmt_rnr 62* 748=
xstate 154* 219 267 324= 341= 361 366= 370= 451= 495 523 525= 533= 558 586=
661 662 675= 683= 718 720= 728 780 798= 847 854
ystate 141*
zeroes 85* 171* 543
\f
lst 81.05.05. 10.26. page 35
AND 7
ARRAY 10
BEGIN 89
CASE 5
CONST 2
DIV 3
DO 21
DOWNTO 1
ELSE 27
END 109
FOR 3
FORWARD 2
IF 66
MOD 3
NIL 9
NOT 4
OF 16
OTHERWISE 4
PACKED 7
PROCEDURE 19
RECORD 15
REPEAT 2
THEN 66
TO 2
TYPE 1
UNTIL 2
VAR 8
WHILE 4
WITH 8
pascal
81.05.05. 10.26. pascal80 version 1981.04.01
name headline beginline endline appetite(words)
answ 194 195 197 : 5
answer 205 206 208 : 5
readlam 216 220 234 : 10
create_chann 241 243 250 : 8
getresult 256 257 269 : 13
release_buf 275 276 282 : 5
trans 288 290 308 : 11
transdata 314 316 325 : 5
block_ok 332 333 344 : 10
give_up 349 350 372 : 11
answer_stat 378 379 381 : 10
copytest 387 388 393 : 9
otest 396 398 410 : 12
event 413 415 420 : 6
exception 423 425 440 : 18
alc 6 449 867 : 247
code: 0 . 6560 = 6560 bytes
end of PASCAL80 compilation
end
blocksread = 52
«eof»