|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 59136 (0xe700) Types: TextFile 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◀