|
|
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: 36096 (0x8d00)
Types: TextFileVerbose
Names: »oplibtxt«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »oplibtxt«
\f
oplibtxt 81.03.03. 16.36. page 1
10 1
\f
oplibtxt 81.03.03. 16.36. page 2
1010 2 (*-------------------------- op lib -----------------------------------*)
1020 3 PREFIX openzone;
1030 4 PROCEDURE openzone ( (* opens a zone for driver comm. *)
1040 5 VAR z: zone; (* the zone to be opened *)
1050 6 driv: ^semaphore; (* driver process sem *)
1060 7 answ: ^semaphore; (* answers arrives here *)
1070 8 bufs : integer; (* no of buffers *)
1080 9 VAR home: pool 1; (* ownerpool for buffers *)
1090 10 v1, v2, v3, v4: byte ); (* u values in message headers *)
1100 11
1110 12 CONST
1120 13 output = 2;
1130 14 firstbuf = 6; (* general driver buffer *)
1140 15 lastbuf = firstbuf+80-1;
1150 16
1160 17 TYPE
1170 18 buffer = RECORD (* for driver comm. *)
1180 19 ! first, (* pointer to 1st char *)
1190 20 ! last, (* pointer to last output char *)
1200 21 ! next: integer; (* pointer to last+1 input char *)
1210 22 ! chars: ARRAY (firstbuf..lastbuf) OF char
1220 23 END;
1230 24
1240 25 BEGIN
1250 26 1 ! WITH z DO
1260 27 2 ! BEGIN
1270 28 3 ! ! driver:= driv;
1280 29 4 ! ! answer:= answ;
1290 30 5 ! ! u2val := v2;
1300 31 6 ! ! state := 0;
1310 32 7 ! ! readstate:= -1;
1320 33 8 ! ! nextp:= firstbuf;
1330 34 9 ! ! lastpos:= lastbuf;
1340 35 10 ! !
1350 36 11 ! ! FOR bufs:= bufs DOWNTO 1 DO
1360 37 12 ! ! BEGIN
1370 38 13 ! ! ! alloc ( cur, home, answer^);
1380 39 14 ! ! ! cur^.u1:= v1;
1390 40 15 ! ! ! cur^.u2:= 0;
1400 41 16 ! ! ! cur^.u3:= v3;
1410 42 17 ! ! ! cur^.u4:= v4;
1420 43 18 ! ! ! LOCK cur AS buf: buffer DO WITH buf DO
1430 44 19 ! ! ! BEGIN
1440 45 20 ! ! ! ! first:= firstbuf;
1450 46 21 ! ! ! ! last:= lastbuf;
1460 47 22 ! ! ! ! next:= first
\f
oplibtxt 81.03.03. 16.36. page 3
1470 48 23 ! ! ! END;
1480 49 24 ! ! ! signal ( cur, free )
1490 50 25 ! ! END
1500 51 26 ! END
1510 52 27 END ; (* of openzone *)
1520 53
1530 54
\f
oplibtxt 81.03.03. 16.36. page 4
2010 55 PREFIX openopzone;
2020 56 PROCEDURE openopzone ( (* opens a zone for operator comm. *)
2030 57 VAR z: zone; (* the zone to be opened *)
2040 58 driv: ^semaphore; (* driver process sem *)
2050 59 answ: ^semaphore; (* answers arrives here *)
2060 60 bufs : integer; (* no of buffers *)
2070 61 VAR home: pool 1; (* ownerpool for buffers *)
2080 62 v1, v2, v3, v4: byte ); (* u values in message headers *)
2090 63
2100 64 CONST
2110 65 output = 2;
2120 66 firstbuf = 6+alfalength; (* operator buffer *)
2130 67 lastbuf = firstbuf+80-1;
2140 68
2150 69 TYPE
2160 70 opbuffer = RECORD (* for operator comm. *)
2170 71 ! first, (* pointer to 1st char *)
2180 72 ! last, (* pointer to last output char *)
2190 73 ! next: integer; (* pointer to last+1 input char *)
2200 74 ! name: alfa; (* process inc name *)
2210 75 ! chars: ARRAY (firstbuf..lastbuf) OF char
2220 76 END;
2230 77
2240 78 BEGIN
2250 79 1 ! WITH z DO
2260 80 2 ! BEGIN
2270 81 3 ! ! driver:= driv;
2280 82 4 ! ! answer:= answ;
2290 83 5 ! ! u2val := v2;
2300 84 6 ! ! state := 0;
2310 85 7 ! ! readstate:= -1;
2320 86 8 ! ! nextp:= firstbuf;
2330 87 9 ! ! lastpos:= lastbuf;
2340 88 10 ! !
2350 89 11 ! ! FOR bufs:= bufs DOWNTO 1 DO
2360 90 12 ! ! BEGIN
2370 91 13 ! ! ! alloc ( cur, home, answer^);
2380 92 14 ! ! ! cur^.u1:= v1;
2390 93 15 ! ! ! cur^.u2:= 0;
2400 94 16 ! ! ! cur^.u3:= v3;
2410 95 17 ! ! ! cur^.u4:= v4;
2420 96 18 ! ! ! LOCK cur AS buf: opbuffer DO WITH buf DO
2430 97 19 ! ! ! BEGIN
2440 98 20 ! ! ! ! name:= own.incname;
2450 99 21 ! ! ! ! first:= firstbuf;
2460 100 22 ! ! ! ! last:= lastbuf;
\f
oplibtxt 81.03.03. 16.36. page 5
2470 101 23 ! ! ! ! next:= first
2480 102 24 ! ! ! END;
2490 103 25 ! ! ! signal ( cur, free )
2500 104 26 ! ! END
2510 105 27 ! END
2520 106 28 END ; (* of openopzone *)
2530 107
2540 108
\f
oplibtxt 81.03.03. 16.36. page 6
3010 109 PREFIX outend;
3020 110 PROCEDURE outend ( (* sends outputbuffer to driver *)
3030 111 VAR z: zone ); (* specifies the document *)
3040 112
3050 113 TYPE
3060 114 zonebuffer = RECORD
3070 115 ! first, last, next: integer;
3080 116 ! (* the rest is silence here *)
3090 117 END;
3100 118
3110 119 BEGIN
3120 120 1 ! WITH z DO
3130 121 2 ! IF NOT nil ( cur) THEN
3140 122 3 ! BEGIN
3150 123 4 ! ! LOCK cur AS buf: zonebuffer DO buf.last:= nextp-1;
3160 124 5 ! ! cur^.u2:= u2val;
3170 125 6 ! ! signal ( cur, driver^)
3180 126 7 ! END
3190 127 8 END ; (* of outend *)
3200 128
3210 129
\f
oplibtxt 81.03.03. 16.36. page 7
4010 130 PREFIX outchar;
4020 131 PROCEDURE outchar ( (* writes 1 char in zone z *)
4030 132 VAR z: zone; (* specifies the document *)
4040 133 t: char ); (* character to be written *)
4050 134
4060 135 CONST
4070 136 opsize = 3+ (alfalength+80) DIV 2;
4080 137
4090 138 TYPE
4100 139 zonebuffer = RECORD
4110 140 ! first, last, next: integer;
4120 141 ! chars: ARRAY (6..6+80-1) OF char
4130 142 END;
4140 143 opbuffer = RECORD
4150 144 ! first, last, next: integer;
4160 145 ! name: alfa;
4170 146 ! chars: ARRAY (6+alfalength..6+alfalength+80-1) OF char
4180 147 END;
4190 148
4200 149 BEGIN
4210 150 1 ! WITH z DO
4220 151 2 ! BEGIN
4230 152 3 ! ! IF nil ( cur) THEN (* get a buffer *)
4240 153 4 ! ! BEGIN
4250 154 5 ! ! ! wait ( cur, free);
4260 155 6 ! ! ! state:= cur^.u2;
4270 156 7 ! ! ! LOCK cur AS buf: zonebuffer DO nextp:= buf.first;
4280 157 8 ! ! END;
4290 158 9 ! ! IF cur^.size >= opsize THEN
4300 159 10 ! ! LOCK cur AS buf: opbuffer DO buf.chars(nextp):= t
4310 160 11 ! ! ELSE
4320 161 12 ! ! LOCK cur AS buf: zonebuffer DO buf.chars(nextp):= t;
4330 162 13 ! ! nextp:= nextp+1;
4340 163 14 ! ! IF nextp > lastpos THEN outend ( z)
4350 164 15 ! END
4360 165 16 END ; (* of outchar *)
4370 166
4380 167
\f
oplibtxt 81.03.03. 16.36. page 8
5010 168 PREFIX outtext;
5020 169 PROCEDURE outtext ( (* writes text on z *)
5030 170 VAR z: zone; (* specifies the document *)
5040 171 text: alfa ); (* text to be written
5050 172 # works as textstop *)
5060 173
5070 174 VAR
5080 175 i: byte:= 1;
5090 176
5100 177 BEGIN
5110 178 1 ! WHILE text(i) <> "#" DO
5120 179 2 ! BEGIN
5130 180 3 ! ! outchar ( z, text(i));
5140 181 4 ! ! IF i = alfalength THEN text(i):= "#" ELSE i:= i+1
5150 182 5 ! END
5160 183 6 END ; (* of outtext *)
5170 184
5180 185
\f
oplibtxt 81.03.03. 16.36. page 9
6010 186 PREFIX outfill;
6020 187 PROCEDURE outfill ( (* repeated outchar *)
6030 188 VAR z: zone; (* specifies the document *)
6040 189 filler: char; (* character to be written *)
6050 190 rep: integer ); (* repeat counter *)
6060 191
6070 192 BEGIN
6080 193 1 !
6090 194 2 ! FOR rep:= rep DOWNTO 1 DO outchar ( z, filler)
6100 195 3 !
6110 196 4 END ; (* of outfill *)
6120 197
6130 198
\f
oplibtxt 81.03.03. 16.36. page 10
7010 199 PREFIX outnumber;
7020 200 PROCEDURE outnumber ( (* write an integer as decimal *)
7030 201 VAR z: zone; (* specifies the document *)
7040 202 num: integer; (* the integer *)
7050 203 pos: integer ); (* no of writepositions *)
7060 204
7070 205 (*
7080 206 pos may give some spaces before the number, but all
7090 207 digits are written.
7100 208 *)
7110 209
7120 210 VAR
7130 211 neg: boolean;
7140 212 i: byte:= 1;
7150 213 digits: ARRAY (1..5) OF char;
7160 214
7170 215 BEGIN
7180 216 1 ! IF num = -32768 THEN
7190 217 2 ! BEGIN
7200 218 3 ! ! outfill ( z, sp, pos-6);
7210 219 4 ! ! outtext ( z, "-32768# ")
7220 220 5 ! END
7230 221 6 ! ELSE
7240 222 7 ! BEGIN
7250 223 8 ! ! neg:= num < 0;
7260 224 9 ! ! IF neg THEN
7270 225 10 ! ! BEGIN
7280 226 11 ! ! ! pos:= pos-1;
7290 227 12 ! ! ! num:= -num
7300 228 13 ! ! END;
7310 229 14 ! !
7320 230 15 ! ! REPEAT
7330 231 16 ! ! ! digits(i):= chr ( num MOD 10 + ord("0"));
7340 232 17 ! ! ! num:= num DIV 10;
7350 233 18 ! ! ! i:= i+1
7360 234 19 ! ! UNTIL num = 0;
7370 235 20 ! !
7380 236 21 ! ! outfill ( z, sp, pos-i+1);
7390 237 22 ! ! IF neg THEN outchar ( z, "-");
7400 238 23 ! ! FOR i:= i-1 DOWNTO 1 DO outchar ( z, digits(i))
7410 239 24 ! END
7420 240 25 END ; (* of outnumber *)
7430 241
7440 242
\f
oplibtxt 81.03.03. 16.36. page 11
8010 243 PREFIX outhex;
8020 244 PROCEDURE outhex ( (* writes an integer as hexadecimal *)
8030 245 VAR z: zone; (* specifies the document *)
8040 246 num: integer; (* number to be written *)
8050 247 pos: integer ); (* write positions *)
8060 248
8070 249 TYPE
8080 250 table = ARRAY (0..15) OF char;
8090 251
8100 252 CONST
8110 253 hextab = table ("0","1","2","3","4","5","6","7",
8120 254 "8","9","a","b","c","d","e","f" );
8130 255
8140 256 VAR
8150 257 bit0: byte:= 0;
8160 258
8170 259 BEGIN
8180 260 1 ! IF num < 0 THEN
8190 261 2 ! BEGIN
8200 262 3 ! ! bit0:= 8;
8210 263 4 ! ! num:= num - (-32768);
8220 264 5 ! END;
8230 265 6 ! outfill ( z, sp, pos-4);
8240 266 7 ! outchar ( z, hextab(bit0+num DIV (16*16*16)));
8250 267 8 ! outchar ( z, hextab(num DIV (16*16) MOD 16));
8260 268 9 ! outchar ( z, hextab(num DIV 16 MOD 16));
8270 269 10 ! outchar ( z, hextab(num MOD 16));
8280 270 11 END ; (* of outhex *)
8290 271
8300 272
\f
oplibtxt 81.03.03. 16.36. page 12
9010 273 PREFIX opin;
9020 274 PROCEDURE opin ( VAR z: zone); (* request input *)
9030 275
9040 276 VAR
9050 277 msg: reference;
9060 278
9070 279 BEGIN
9080 280 1 ! WITH z DO
9090 281 2 ! IF open ( free) THEN
9100 282 3 ! BEGIN
9110 283 4 ! ! wait ( msg, free);
9120 284 5 ! ! msg^.u2:= u2val;
9130 285 6 ! ! signal ( msg, driver^)
9140 286 7 ! END
9150 287 8 END ; (* of opin *)
9160 288
9170 289
\f
oplibtxt 81.03.03. 16.36. page 13
10010 290 PREFIX opanswer;
10020 291 PROCEDURE opanswer ( (* transfers a message to zone z *)
10030 292 VAR msg: reference; (* a message with operator input *)
10040 293 VAR z: zone ); (* an input zone *)
10050 294
10060 295 BEGIN
10070 296 1 !
10080 297 2 ! signal ( msg, z.dataready)
10090 298 3 !
10100 299 4 END ; (* of opanswer *)
10110 300
10120 301
\f
oplibtxt 81.03.03. 16.36. page 14
11010 302 PREFIX optest;
11020 303 FUNCTION optest ( VAR z: zone ): boolean;
11030 304 (*
11040 305 optest is true if the zone has some data ready.
11050 306 i. e. opwait will not wait.
11060 307 *)
11070 308
11080 309 BEGIN
11090 310 1 !
11100 311 2 ! optest := open ( z.dataready)
11110 312 3 !
11120 313 4 END ; (* of optest *)
11130 314
11140 315
\f
oplibtxt 81.03.03. 16.36. page 15
12010 316 PREFIX opwait;
12020 317 PROCEDURE opwait ( (* waits for input to z *)
12030 318 VAR z: zone; (* specifies the document *)
12040 319 VAR inputpool: pool 1 ); (* input buffer pool *)
12050 320
12060 321 CONST
12070 322 read = 1;
12080 323
12090 324 TYPE
12100 325 zonebuffer = RECORD
12110 326 ! first, last, next: integer
12120 327 END;
12130 328
12140 329 VAR
12150 330 n: integer:= 0; (* msg counter *)
12160 331 operatorinput: boolean;
12170 332
12180 333 BEGIN
12190 334 1 ! WITH z DO
12200 335 2 ! IF nil ( cur) THEN
12210 336 3 ! BEGIN
12220 337 4 ! ! IF NOT open ( dataready) THEN (* wait for input answer *)
12230 338 5 ! ! BEGIN
12240 339 6 ! ! ! REPEAT
12250 340 7 ! ! ! ! wait ( cur, answer^);
12260 341 8 ! ! ! ! operatorinput:= ownertest ( inputpool, cur) AND ( cur^.u1 MOD 8 = read);
12270 342 9 ! ! ! ! signal ( cur, dataready);
12280 343 10 ! ! ! ! n:= n+1
12290 344 11 ! ! ! UNTIL operatorinput;
12300 345 12 ! ! !
12310 346 13 ! ! ! FOR n:= n DOWNTO 2 DO (* send other messages back into queue *)
12320 347 14 ! ! ! BEGIN
12330 348 15 ! ! ! ! wait ( cur, dataready);
12340 349 16 ! ! ! ! signal ( cur, answer^);
12350 350 17 ! ! ! END;
12360 351 18 ! ! END;
12370 352 19 ! ! wait ( cur, dataready);
12380 353 20 ! ! state:= cur^.u2;
12390 354 21 ! ! LOCK cur AS buf: zonebuffer DO nextp:= buf.first
12400 355 22 ! END
12410 356 23 END ; (* of opwait *)
12420 357
12430 358
\f
oplibtxt 81.03.03. 16.36. page 16
13010 359 PREFIX readchar;
13020 360 PROCEDURE readchar ( (* reads next character *)
13030 361 VAR z: zone; (* specifies the document *)
13040 362 VAR t: char ); (* delivered character or nl *)
13050 363
13060 364 CONST
13070 365 opsize = 3 + (alfalength+80) DIV 2;
13080 366
13090 367 TYPE
13100 368 zonebuffer = RECORD
13110 369 ! first, last, next: integer;
13120 370 ! chars: ARRAY (6..6+80-1) OF char
13130 371 END;
13140 372 opbuffer = RECORD
13150 373 ! first, last, next: integer;
13160 374 ! name: alfa;
13170 375 ! chars: ARRAY (6+alfalength..6+alfalength+80-1) OF char
13180 376 END;
13190 377
13200 378 BEGIN
13210 379 1 ! t:= nl;
13220 380 2 ! WITH z DO
13230 381 3 ! IF nil ( cur) THEN readstate:= -1
13240 382 4 ! ELSE
13250 383 5 ! BEGIN
13260 384 6 ! ! readstate:= 0;
13270 385 7 ! ! IF cur^.size >= opsize THEN (* operator buffer *)
13280 386 8 ! ! LOCK cur AS buf: opbuffer DO
13290 387 9 ! ! BEGIN
13300 388 10 ! ! ! IF nextp < buf.next THEN
13310 389 11 ! ! ! t:= buf.chars(nextp)
13320 390 12 ! ! ! ELSE readstate:= -1
13330 391 13 ! ! END
13340 392 14 ! ! ELSE
13350 393 15 ! ! LOCK cur AS buf: zonebuffer DO
13360 394 16 ! ! IF nextp < buf.next THEN
13370 395 17 ! ! t:= buf.chars(nextp)
13380 396 18 ! ! ELSE readstate:= -1;
13390 397 19 ! !
13400 398 20 ! ! IF readstate = -1 THEN signal ( cur, free)
13410 399 21 ! ! ELSE nextp:= nextp+1
13420 400 22 ! END
13430 401 23 END ; (* of readchar *)
13440 402
13450 403
\f
oplibtxt 81.03.03. 16.36. page 17
14010 404 PREFIX readinteger;
14020 405 PROCEDURE readinteger ( (* reads a decimal number *)
14030 406 VAR z: zone; (* specifies the document *)
14040 407 VAR num: integer ); (* value read or 0 *)
14050 408 (*
14060 409 syntax: (0..n)*(not digit), (0..1)*sign, (1..5)*digit
14070 410 z.readstate = 0 if value assigned.
14080 411 *)
14090 412 CONST
14100 413 max = 3276; (* max integer div 10 *)
14110 414 digits = (. "0".."9" .);
14120 415 wanted = (. "0".."9", nl .);
14130 416
14140 417 VAR
14150 418 prev, t: char:= sp;
14160 419 d: byte:= 0;
14170 420 sign: integer;
14180 421
14190 422 BEGIN
14200 423 1 ! num:= 0;
14210 424 2 !
14220 425 3 ! REPEAT
14230 426 4 ! ! prev:= t;
14240 427 5 ! ! readchar ( z, t)
14250 428 6 ! UNTIL t IN wanted;
14260 429 7 !
14270 430 8 ! IF t <> nl THEN (* a number is met *)
14280 431 9 ! BEGIN
14290 432 10 ! ! IF prev = "-" THEN sign:= -1 ELSE sign:= +1;
14300 433 11 ! !
14310 434 12 ! ! WHILE ( num < max ) AND ( t IN digits ) DO
14320 435 13 ! ! BEGIN
14330 436 14 ! ! ! num:= num*10 - ord("0") + ord( t);
14340 437 15 ! ! ! readchar ( z, t)
14350 438 16 ! ! END;
14360 439 17 ! !
14370 440 18 ! ! IF ( num <= max ) AND ( t IN digits ) THEN (* include last digit *)
14380 441 19 ! ! BEGIN
14390 442 20 ! ! ! d:= ord ( t) - ord("0");
14400 443 21 ! ! ! IF 2*d < 16-sign THEN (* accept *)
14410 444 22 ! ! ! BEGIN
14420 445 23 ! ! ! ! num:= num*10;
14430 446 24 ! ! ! ! z.nextp:= z.nextp+1
14440 447 25 ! ! ! END
14450 448 26 ! ! ! ELSE d:= 0
14460 449 27 ! ! END;
\f
oplibtxt 81.03.03. 16.36. page 18
14470 450 28 ! !
14480 451 29 ! ! num:= sign*num + sign*d;
14490 452 30 ! ! z.readstate:= 0;
14500 453 31 ! ! z.nextp:= z.nextp-1
14510 454 32 ! END
14520 455 33 END ; (* of readinteger *)
14530 456
14540 457
\f
oplibtxt 81.03.03. 16.36. page 19
15010 458 PREFIX readhex;
15020 459 PROCEDURE readhex ( (* reads a hexadecimal number *)
15030 460 VAR z: zone; (* specifies the document *)
15040 461 VAR num: integer ); (* value read or 0 *)
15050 462
15060 463 (*
15070 464 syntax: (0..n)*(not hexdigit), (1..4)*hexdigit
15080 465 z.readstate = 0 if value assigned.
15090 466 *)
15100 467
15110 468 CONST
15120 469 hexdigits = (. "0".."9", "a".."f" .);
15130 470 wanted = (. nl, "0".."9", "a".."f" .);
15140 471
15150 472 VAR
15160 473 t: char;
15170 474 a, b, c, d: byte:= 0; (* 4 digits *)
15180 475
15190 476 BEGIN
15200 477 1 ! num:= 0;
15210 478 2 !
15220 479 3 ! REPEAT readchar ( z, t) UNTIL t IN wanted;
15230 480 4 !
15240 481 5 ! IF t <> nl THEN (* a number is met *)
15250 482 6 ! BEGIN
15260 483 7 ! !
15270 484 8 ! ! WHILE ( a = 0 ) AND ( t IN hexdigits ) DO
15280 485 9 ! ! BEGIN
15290 486 10 ! ! ! a:= b; b:= c; c:= d;
15300 487 11 ! ! ! IF ord ( t) <= ord ("9") THEN
15310 488 12 ! ! ! d:= ord ( t) - ord ("0") ELSE
15320 489 13 ! ! ! d:= ord ( t) - ord ("a") + 10;
15330 490 14 ! ! ! readchar ( z, t)
15340 491 15 ! ! END;
15350 492 16 ! !
15360 493 17 ! ! num:= ((((a+8) MOD 16 -8)*16+b)*16+c)*16+d;
15370 494 18 ! ! z.readstate:= 0;
15380 495 19 ! ! z.nextp:= z.nextp-1
15390 496 20 ! END
15400 497 21 END ; (* of readhex *)
15410 498
15420 499
\f
oplibtxt 81.03.03. 16.36. page 20
16010 500 PREFIX readname;
16020 501 PROCEDURE readname ( (* reads a name from z *)
16030 502 VAR z: zone; (* specifies the document *)
16040 503 VAR name: alfa ); (* read name *)
16050 504
16060 505 (*
16070 506 syntax: (0..n)*sp, 1*letter, (0..11)*alfanum
16080 507 readstate = 0 if name assigned.
16090 508 you may initialize name before readname.
16100 509 *)
16110 510
16120 511 CONST
16130 512 letters = (. "A".."]", "a".."}" .);
16140 513 alfanum = (. "A".."]", "a".."}", "0".."9" .);
16150 514
16160 515 VAR
16170 516 t: char;
16180 517 i: byte:= 0;
16190 518
16200 519 BEGIN
16210 520 1 !
16220 521 2 ! REPEAT readchar ( z, t) UNTIL t <> sp;
16230 522 3 !
16240 523 4 ! IF t IN letters THEN (* read the name *)
16250 524 5 ! BEGIN
16260 525 6 ! !
16270 526 7 ! ! REPEAT
16280 527 8 ! ! ! i:= i+1;
16290 528 9 ! ! ! name(i):= t;
16300 529 10 ! ! ! readchar ( z, t);
16310 530 11 ! ! UNTIL ( i >= alfalength ) OR NOT ( t IN alfanum );
16320 531 12 ! !
16330 532 13 ! ! z.readstate:= 0;
16340 533 14 ! ! z.nextp:= z.nextp-1;
16350 534 15 ! END
16360 535 16 ! ELSE
16370 536 17 ! IF z.readstate = 0 THEN z.readstate:= 1
16380 537 18 !
16390 538 19 END . (* of readname *)
16400 539
16410 540 (*------------------------- end of oplib -----------------------------*)
16420 541
\f
oplibtxt 81.03.03. 16.36. page 21
0 31 40 84 93 223 234 250* 257* 260 330* 384 419* 423 448 452
474* 477 484 494 517* 532 536
1 9* 15* 32 36 61* 67* 85 89 123 141* 146* 162 175* 181 194
212* 213* 226 233 236 238 238 319* 322* 343 370* 375* 381 390 396
398 399 432 432 446 453 495 527 533 536
2 13* 65* 136* 346 365* 443
3 136* 365*
4 265
5 213*
6 14* 66* 141* 141* 146* 146* 218 370* 370* 375* 375*
8 262 341 493 493
10 231 232 436 445 489
15 250*
16 266 266 266 267 267 267 268 268 269 443 493 493 493 493
80 15* 67* 136* 141* 146* 365* 370* 375*
3276 413*
32768 216 263
a 474* 484 486= 493
alfa 74* 145* 171* 374* 503*
alfalength 66* 136* 146* 146* 181 365* 375* 375* 530
alfanum 513* 530
alloc 38 91
answ 7* 29 59* 82
answer 29= 38 82= 91 340 349
as 43: 96: 123: 156: 159: 161: 354: 386: 393:
b 474* 486 486= 493
bit0 257* 262= 266
boolean 211* 303* 331*
buf 43: 43 96: 96 123: 123 156: 156 159: 159 161: 161 354: 354 386:
388 389 393: 394 395
buffer 18* 43
bufs 8* 36= 36 60* 89= 89
byte 10* 62* 175* 212* 257* 419* 474* 517*
c 474* 486 486= 493
char 22* 75* 133* 141* 146* 189* 213* 250* 362* 370* 375* 418* 473* 516*
chars 22* 75* 141* 146* 159= 161= 370* 375* 389 395
chr 231
cur 38 39 40 41 42 43: 49 91 92 93 94 95 96: 103 121
123: 124 125 152 154 155 156: 158 159: 161: 335 340 341 341 342
348 349 352 353 354: 381 385 386: 393: 398
d 419* 442= 443 448= 451 474* 486 488= 489= 493
dataready 297 311 337 342 348 352
digits 213* 231= 238 414* 434 440
driv 6* 28 58* 81
\f
oplibtxt 81.03.03. 16.36. page 22
driver 28= 81= 125 285
filler 189* 194
first 19* 45= 47 71* 99= 101 115* 140* 144* 156 326* 354 369* 373*
firstbuf 14* 15* 22* 33 45 66* 67* 75* 86 99
free 49 103 154 281 283 398
hexdigits 469* 484
hextab 253* 266 267 268 269
home 9* 38 61* 91
i 175* 178 180 181 181 181= 181 212* 231 233= 233 236 238= 238 238
517* 527= 527 528 530
incname 98
inputpool 319* 341
integer 8* 21* 60* 73* 115* 140* 144* 190* 202* 203* 246* 247* 326* 330* 369*
373* 407* 420* 461*
last 20* 46= 72* 100= 115* 123= 140* 144* 326* 369* 373*
lastbuf 15* 22* 34 46 67* 75* 87 100
lastpos 34= 87= 163
letters 512* 523
lock 43: 96: 123: 156: 159: 161: 354: 386: 393:
max 413* 434 440
msg 277* 283 284 285 292* 297
n 330* 343= 343 346= 346
name 74* 98= 145* 374* 503* 528=
neg 211* 223= 224 237
next 21* 47= 73* 101= 115* 140* 144* 326* 369* 373* 388 394
nextp 33= 86= 123 156= 159 161 162= 162 163 354= 388 389 394 395 399=
399 446= 446 453= 453 495= 495 533= 533
nl 379 415* 430 470* 481
num 202* 216 223 227= 227 231 232= 232 234 246* 260 263= 263 266 267
268 269 407* 423= 434 436= 436 440 445= 445 451= 451 461* 477= 493=
opanswer 290* 291*
opbuffer 70* 96 143* 159 372* 386
open 281 311 337
openopzone 55* 56*
openzone 3* 4*
operatorinput <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
331* 341= 344
opin 273* 274*
opsize 136* 158 365* 385
optest 302* 303* 311=
opwait 316* 317*
ord 231 436 436 442 442 487 487 488 488 489 489
outchar 130* 131* 180 194 237 238 266 267 268 269
outend 109* 110* 163
\f
oplibtxt 81.03.03. 16.36. page 23
outfill 186* 187* 218 236 265
outhex 243* 244*
outnumber 199* 200*
output 13* 65*
outtext 168* 169* 219
own 98
ownertest 341
pool 9* 61* 319*
pos 203* 218 226= 226 236 247* 265
prefix 3* 55* 109* 130* 168* 186* 199* 243* 273* 290* 302* 316* 359* 404* 458*
500*
prev 418* 426= 432
read 322* 341
readchar 359* 360* 427 437 479 490 521 529
readhex 458* 459*
readinteger 404* 405*
readname 500* 501*
readstate 32= 85= 381= 384= 390= 396= 398 452= 494= 532= 536 536=
reference 277* 292*
rep 190* 194= 194
semaphore 6* 7* 58* 59*
sign 420* 432= 432= 443 451 451
signal 49 103 125 285 297 342 349 398
size 158 385
sp 218 236 265 418* 521
state 31= 84= 155= 353=
t 133* 159 161 362* 379= 389= 395= 418* 426 427 428 430 434 436 437
440 442 473* 479 479 481 484 487 488 489 490 516* 521 521 523
528 529 530
table 250* 253*
text 171* 178 180 181=
u1 39= 92= 341
u2 40= 93= 124= 155 284= 353
u2val 30= 83= 124 284
u3 41= 94=
u4 42= 95=
v1 10* 39 62* 92
v2 10* 30 62* 83
v3 10* 41 62* 94
v4 10* 42 62* 95
wait 154 283 340 348 352
wanted 415* 428 470* 479
z 5* 26 57* 79 111* 120 132* 150 163 170* 180 188* 194 201* 218
219 236 237 238 245* 265 266 267 268 269 274* 280 293* 297 303*
311 318* 334 361* 380 406* 427 437 446 446 452 453 453 460* 479
490 494 495 495 502* 521 529 532 533 533 536 536
\f
oplibtxt 81.03.03. 16.36. page 24
zone 5* 57* 111* 132* 170* 188* 201* 245* 274* 293* 303* 318* 361* 406* 460*
502*
zonebuffer 114* 123 139* 156 161 325* 354 368* 393
\f
oplibtxt 81.03.03. 16.36. page 25
AND 4
ARRAY 8
BEGIN 43
CONST 9
DIV 6
DO 26
DOWNTO 5
ELSE 12
END 51
FOR 5
FUNCTION 1
IF 25
IN 7
MOD 6
NIL 4
NOT 3
OF 8
OR 1
PROCEDURE 15
RECORD 8
REPEAT 6
THEN 25
TYPE 7
UNTIL 6
VAR 32
WHILE 3
WITH 9
op lib
81.03.03. 16.36. pascal80 version 1981.02.09
name headline beginline endline appetite(words)
openzone 11 29 53 : 19
openopzone 63 82 107 : 19
outend 112 123 128 : 8
outchar 134 154 166 : 12
outtext 172 179 184 : 16
outfill 191 195 195 : 14
outnumber 204 218 241 : 23
outhex 248 262 271 : 16
opin 275 283 288 : 10
opanswer 294 298 298 : 4
optest 304 314 312 : 7
opwait 320 337 357 : 19
readchar 363 380 402 : 11
readinteger 408 424 456 : 16
readhex 462 478 498 : 16
readname 504 522 539 : 13
code: 0 . 276 = 276 bytes
end of PASCAL80 compilation
end
blocksread = 52
«eof»