|
|
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: 65280 (0xff00)
Types: TextFileVerbose
Names: »tsvaslst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »tsvaslst«
\f
tsvaslst 81.06.15. 15.00. page 1
10 1 vagt_env;
20 2
30 3 (*----------------------------------------------------*)
40 4 (* *)
50 5 (* vagt for demo system *)
60 6 (* *)
70 7 (*----------------------------------------------------*)
80 8 (*
90 9
100 10 function.
110 11 ---------
120 12 this program acts as the lam_driver for the vc_connector.
130 13 ( u1 = 8 or u1 = 11 )
140 14
150 15
160 16 requests from other programs.
170 17 ------------------------------
180 18
190 19 these must obey the at-protocol. correct telegrams are printed
200 20 on tty in alarm format, and answers are send.
210 21
220 22
230 23 output
240 24 ------
250 25 alarm <clock> <text> <oper> <adr> <info> alarm received.
260 26 ready <clock> klar connected to ts.
270 27 timeout *<bel> disconnected.
280 28 empty <clock> command is send.
290 29 error <clock> <text> ?? command rejected.
300 30
310 31 <clock> ::= hh.mm.ss
320 32 <text> ::= name of alarm
330 33 <oper> ::= ff.nn opkode of alarm
340 34 <adr> ::= sending at. 0..255
350 35 <info> ::= information 0..255
360 36
370 37
380 38 input
390 39 -----
400 40 <inputline> ::= <command>: <adr> <info> <cr>
410 41 <command> ::= styr / test / tid: / star / stop / -sta / -sto /
420 42 vagt / flyt / -fly / modt / -mod /
430 43 nlat / -nla / nlvc / -nlv /
440 44 <adr> ::= 0..255 receiving at
450 45 <info> ::= 0..255 information
460 46 in tid command: adr = hh and info = mm
\f
tsvaslst 81.06.15. 15.00. page 2
470 47 *)
480 48
\f
tsvaslst 81.06.15. 15.00. page 3
1010 49 (*------------------------ constants -------------------------------*)
1020 50
1030 51 CONST
1040 52 version = "vers 3.10 /";
1050 53 inc_size = 355;
1060 54
1070 55 ok = 0;
1080 56 ille = 4;
1090 57 p_ack = 0; (* in answers *)
1100 58 vc_data= 1;
1110 59 vc_opr = 2;
1120 60 status = 3;
1130 61 d_ack = 4;
1140 62 t_ack = 5;
1150 63 vc_nak = 6;
1160 64 test_ok = 6;
1170 65 test_error= 21;
1180 66 maxtime = 2; (* maxtime*delay1 seconds between poll *)
1190 67 pagesize = 44;
1200 68 ttylength = 80; (* line length in tty buffer *)
1210 69 last_text_no = 27; (* last tekst number *)
1220 70 last_com_no = 18; (* last command no +1 *)
1230 71 headn = 4;
1240 72 no_reads = 1;
1250 73 no_writes = 3;
1260 74 delay1 = 10;
1270 75 delay2 = 10; (* 1024 m seconds *)
1280 76 forever = false;
1290 77
\f
tsvaslst 81.06.15. 15.00. page 4
2010 78 (*---------------------------- types -------------------------------*)
2020 79
2030 80 TYPE
2040 81 command = ARRAY (1..4) OF char;
2050 82 commands = ARRAY (1..last_com_no) OF command;
2060 83 opcodes = ARRAY (1..last_com_no) OF byte;
2070 84 funktion = ( poll, data, test_i, opr );
2080 85 replycode = 0..7;
2090 86 replycodes = ARRAY (0..4) OF replycode;
2100 87 errortext = ARRAY (1..3) OF alfa;
2110 88 alarmtext = RECORD no: byte; tx: alfa END;
2120 89 textarray = ARRAY (1..last_text_no) OF alarmtext;
2130 90 headarray = ARRAY (1..headn) OF alfa;
2140 91 statusarray = ARRAY (0..7) OF alfa;
2150 92
2160 93 createshape = PACKED RECORD
2170 94 ! contr, timer : byte
2180 95 END;
2190 96
2200 97 telegram = PACKED RECORD (* from vccon *)
2210 98 ! inf: byte;
2220 99 ! fnc: funktion;
2230 100 ! lnr: 0..1;
2240 101 ! cbits: 0..31
2250 102 END;
2260 103
2270 104 respons = PACKED RECORD (* to vccon *)
2280 105 ! info: byte;
2290 106 ! opko: replycode;
2300 107 ! cbits: 0..31
2310 108 END;
2320 109
2330 110 filebuffer = RECORD
2340 111 ! first, last, nextfree : integer;
2350 112 ! text : ARRAY ( 1..ttylength) OF char
2360 113 END;
2370 114
2380 115 filezone = RECORD
2390 116 ! driver, answer_sem,
2400 117 ! free: integer;
2410 118 ! cur : reference;
2420 119 ! u1val, u2val : byte;
2430 120 ! next, top : integer
2440 121 END;
2450 122
\f
tsvaslst 81.06.15. 15.00. page 5
3010 123 CONST
3020 124 reply = replycodes ( p_ack, vc_data, vc_data, vc_opr, vc_nak);
3030 125
3040 126 whatx = errortext ("kommandofejl","atnr fejl ","info fejl ");
3050 127
3060 128 empty = " > ";
3070 129 klar = "klar ";
3080 130 head = headarray (
3090 131 " klokken ","tekst "," opkode atn","r info ");
3100 132
3110 133 tekst = textarray(
3120 134 alarmtext ( #h01, "log fra aVC "),
3130 135 alarmtext ( #h10, "returneret "),
3140 136 alarmtext ( #h12, "afvisning!!!"),
3150 137 alarmtext ( #h20, "knudeudfald "),
3160 138 alarmtext ( #h21, "knuderetabl."),
3170 139 alarmtext ( #h28, "AT udfald "),
3180 140 alarmtext ( #h29, "AT retabl. "),
3190 141 alarmtext ( #h30, "au-alarm "),
3200 142 alarmtext ( #h31, "liniealarm "),
3210 143 alarmtext ( #h32, "statusalarm "),
3220 144 alarmtext ( #h41, "styr udf|rt "),
3230 145 alarmtext ( #h42, "styr afvist "),
3240 146 alarmtext ( #h50, "flytning? "),
3250 147 alarmtext ( #h53, "flytning ok "),
3260 148 alarmtext ( #h54, "returnering?"),
3270 149 alarmtext ( #h57, "vagt retur "),
3280 150 alarmtext ( #h62, "AT er ok "),
3290 151 alarmtext ( #h64, "start AT? "),
3300 152 alarmtext ( #h65, "stop AT? "),
3310 153 alarmtext ( #h66, "nedl{g AT? "),
3320 154 alarmtext ( #h72, "nedl{g VC? "),
3330 155 alarmtext ( #h85, "test udf|rt "),
3340 156 alarmtext ( #h86, "test afvist "),
3350 157 alarmtext ( #h98, "meddelelse "),
3360 158 alarmtext ( #hf0, "AT ukendt "),
3370 159 alarmtext ( #hf1, "VC ukendt "),
3380 160 alarmtext ( #hff, "ukendt alarm") );
3390 161
\f
tsvaslst 81.06.15. 15.00. page 6
4010 162 statustxt = statusarray(
4020 163 ": afmelding ",
4030 164 ": timeout ",
4040 165 ": hs fejl ",
4050 166 ": au fejl ",
4060 167 ": serif fejl",
4070 168 ": genstart ",
4080 169 ": batteri ud",
4090 170 ": batteri ");
4100 171
4110 172 menu = commands
4120 173 ("styr","test","tid:","star",
4130 174 "stop","-sta","-sto",
4140 175 "vagt","flyt","-fly","modt","-mod",
4150 176 "nlat","-nla","nlvc","-nlv","medd",
4160 177 " ");
4170 178
4180 179 opkode = opcodes
4190 180 ( #h40, #h84, #hc4, #h01,
4200 181 #h02, #h03, #h04,
4210 182 #h15, #h16, #h17, #h18, #h19,
4220 183 #h05, #h06, #h07, #h08, #h20,
4230 184 0 );
4240 185 .
4250 186
\f
tsvaslst 81.06.15. 15.00. page 7
5010 187 PROCESS atvagtsim(
5020 188 op_sem : sempointer;
5030 189 VAR
5040 190 sem : !ts_pointer_vector (* ts semaphores *)
5050 191 );
5060 192
5070 193
5080 194 TYPE
5090 195 descriptor_ix = 1..vc_l;
5100 196
5110 197 VAR
5120 198 inc_name : alfa;
5130 199 desc_ix : descriptor_ix := 1;
5140 200 no_of_inc : 0..vc_l := 0;
5150 201 result : result_range := accepted;
5160 202
5170 203 ch_desc : ARRAY( descriptor_ix ) OF
5180 204 RECORD
5190 205 ! chann : byte;
5200 206 ! main : integer;
5210 207 ! shad : shadow
5220 208 END;
5230 209
5240 210 msg : reference;
5250 211 opzone : zone;
5260 212
\f
tsvaslst 81.06.15. 15.00. page 8
6010 213 PROCESS vagt_sim( op_sem: sempointer;
6020 214 VAR
6030 215 sem: !ts_pointer_vector;
6040 216 main, vagt_int1, vagt_int2, vagt_int3, vagt_int4, lam_sem_no: !integer );
6050 217
6060 218
6070 219 VAR
6080 220 l, vl : 0..1; (* l|benumre *)
6090 221 lamstate,
6100 222 oldstate,
6110 223 austate,
6120 224 databits : byte:= 0;
6130 225 func: funktion;
6140 226 lastanswer,
6150 227 answer: respons := respons ( 0, 0, 10 );
6160 228 sample,
6170 229 newdata,
6180 230 timeout,
6190 231 h : integer := 0;
6200 232 dummy,
6210 233 line_ready : boolean := false;
6220 234 letter, (* message from keyboard *)
6230 235 note : ARRAY (0..4) OF byte; (* message from vccon *)
6240 236 msg: reference;
6250 237
6260 238 writepool: pool no_writes OF filebuffer;
6270 239 readpool : pool no_reads OF filebuffer;
6280 240 timerpool : pool 1;
6290 241
6300 242 opzone : zone;
6310 243
6320 244 portno: byte; (* lam channel *)
6330 245 linecount : integer:= 0;
6340 246
6350 247 tty : filezone := filezone ( ?, ?, ?, ?, 18, 1, 1, ttylength );
6360 248 kb : filezone := filezone ( ?, ?, ?, ?, 17, 1, 1, ttylength );
6370 249
6380 250 clockpool : pool 1 OF ts_time; (* to get time *)
6390 251 clock_msg : reference;
6400 252
\f
tsvaslst 81.06.15. 15.00. page 9
7010 253 PROCEDURE open_file ( VAR f: filezone; driv, answ, vacant: integer;
7020 254 bufs : integer; VAR reso : pool 1; v1, v2: byte );
7030 255 BEGIN
7040 256 1 ! WITH f DO
7050 257 2 ! BEGIN
7060 258 3 ! ! driver:= driv;
7070 259 4 ! ! answer_sem:= answ;
7080 260 5 ! ! free:= vacant;
7090 261 6 ! ! u1val:= v1;
7100 262 7 ! ! u2val:= v2;
7110 263 8 ! ! WHILE bufs > 0 DO
7120 264 9 ! ! BEGIN
7130 265 10 ! ! ! alloc ( cur, reso, sem(answer_sem).s^);
7140 266 11 ! ! ! cur^.u1:= u1val;
7150 267 12 ! ! ! cur^.u2:= 0;
7160 268 13 ! ! ! signal ( cur, sem(free).s^ );
7170 269 14 ! ! ! bufs:= bufs-1
7180 270 15 ! ! END;
7190 271 16 ! END
7200 272 17 END;
7210 273
7220 274
7230 275
7240 276 PROCEDURE outblock ( VAR f: filezone);
7250 277 BEGIN
7260 278 1 ! WITH f DO
7270 279 2 ! BEGIN
7280 280 3 ! ! (*q testout ( opzone, "outblock ", next-1 ); q*)
7290 281 4 ! ! LOCK cur AS buf: filebuffer DO
7300 282 5 ! ! BEGIN
7310 283 6 ! ! ! buf.first:= 1;
7320 284 7 ! ! ! buf.last:= next-1;
7330 285 8 ! ! END;
7340 286 9 ! ! cur^.u1:= u1val;
7350 287 10 ! ! cur^.u2:= u2val;
7360 288 11 ! ! signal ( cur, sem(driver).s^)
7370 289 12 ! END
7380 290 13 END;
7390 291
\f
tsvaslst 81.06.15. 15.00. page 10
8010 292 PROCEDURE file_error ( VAR f: filezone);
8020 293 BEGIN
8030 294 1 ! lamstate:= f.cur^.u2;
8040 295 2 ! IF (lamstate<>0) AND (lamstate<>5) THEN
8050 296 3 ! austate:= lamstate;
8060 297 4 END;
8070 298
8080 299
8090 300
8100 301 PROCEDURE outchar ( VAR f: filezone; character: char );
8110 302 BEGIN
8120 303 1 ! WITH f DO
8130 304 2 ! BEGIN
8140 305 3 ! ! IF nil ( cur ) THEN
8150 306 4 ! ! BEGIN
8160 307 5 ! ! ! wait ( cur, sem(answer_sem).w^);
8170 308 6 ! ! ! lamstate:= 0;
8180 309 7 ! ! ! IF cur^.u2 <> ok THEN file_error ( f) ELSE austate:= 0;
8190 310 8 ! ! ! next:= 1
8200 311 9 ! ! END;
8210 312 10 ! ! LOCK cur AS buf: filebuffer DO buf.text(next):= character;
8220 313 11 ! ! next:= next+1;
8230 314 12 ! ! IF next > top THEN outblock ( f);
8240 315 13 ! END;
8250 316 14 END;
8260 317
8270 318
8280 319
8290 320 PROCEDURE print_head ( j: integer);
8300 321 FORWARD;
8310 322
8320 323 PROCEDURE outnewline ( VAR f: filezone );
8330 324 BEGIN
8340 325 1 ! IF linecount > pagesize THEN print_head ( 14);
8350 326 2 ! outchar ( f, nl);
8360 327 3 ! outchar ( f, cr);
8370 328 4 ! linecount := linecount + 1;
8380 329 5 END;
8390 330
\f
tsvaslst 81.06.15. 15.00. page 11
9010 331
9020 332 PROCEDURE outinteger ( VAR f: filezone; bin: integer );
9030 333 BEGIN
9040 334 1 END;
9050 335
9060 336
9070 337
9080 338 PROCEDURE outalfa ( VAR f: filezone; text: alfa);
9090 339 VAR i: integer;
9100 340 BEGIN
9110 341 1 ! FOR i:= 1 TO alfalength DO outchar ( f, text(i));
9120 342 2 END;
9130 343
9140 344
9150 345 PROCEDURE outfill ( VAR f: filezone; filler: char; rep: integer );
9160 346 BEGIN
9170 347 1 ! WHILE rep > 0 DO
9180 348 2 ! BEGIN
9190 349 3 ! ! outchar ( f, filler);
9200 350 4 ! ! rep:= rep-1
9210 351 5 ! END;
9220 352 6 END;
9230 353
9240 354 PROCEDURE inblock ( VAR f: filezone; VAR res: reference );
9250 355 (* called when res is an read_answer *)
9260 356 BEGIN
9270 357 1 ! WITH f DO
9280 358 2 ! BEGIN
9290 359 3 ! ! IF NOT nil ( cur) THEN signal ( cur, sem(free).s^);
9300 360 4 ! ! cur :=: res;
9310 361 5 ! ! lamstate:= 0;
9320 362 6 ! ! IF cur^.u2 <> ok THEN file_error ( f) ELSE austate:= 0;
9330 363 7 ! ! next:= 1
9340 364 8 ! END;
9350 365 9 END;
9360 366
9370 367 FUNCTION readchar ( VAR f: filezone): char;
9380 368 BEGIN
9390 369 1 ! WITH f DO
9400 370 2 ! LOCK cur AS buf: filebuffer DO WITH buf DO
9410 371 3 ! IF next < nextfree THEN
9420 372 4 ! BEGIN
9430 373 5 ! ! readchar:= text(next); next:= next+1
9440 374 6 ! END ELSE readchar:= cr
9450 375 7 END;
9460 376
\f
tsvaslst 81.06.15. 15.00. page 12
10010 377 FUNCTION readinteger ( VAR f: filezone): integer;
10020 378 CONST
10030 379 digits = (. "0".."9" .);
10040 380 VAR
10050 381 t: char;
10060 382 i, v: integer:= 0;
10070 383 BEGIN
10080 384 1 ! WITH f DO
10090 385 2 ! BEGIN
10100 386 3 ! ! REPEAT
10110 387 4 ! ! ! t:= readchar ( f)
10120 388 5 ! ! UNTIL ( t IN digits ) OR (t = cr );
10130 389 6 ! ! IF t = cr THEN readinteger := -1 ELSE
10140 390 7 ! ! BEGIN
10150 391 8 ! ! ! WHILE t IN digits DO
10160 392 9 ! ! ! IF i = 4 THEN (* only 4 digits allowed *)
10170 393 10 ! ! ! t:= cr
10180 394 11 ! ! ! ELSE
10190 395 12 ! ! ! BEGIN
10200 396 13 ! ! ! ! i:= i + 1;
10210 397 14 ! ! ! ! v:= 10*v+ord(t)-ord("0");
10220 398 15 ! ! ! ! t:= readchar ( f)
10230 399 16 ! ! ! END;
10240 400 17 ! ! ! readinteger:= v
10250 401 18 ! ! END
10260 402 19 ! END
10270 403 20 END;
10280 404
\f
tsvaslst 81.06.15. 15.00. page 13
11010 405 FUNCTION gettime : ts_time;
11020 406 BEGIN
11030 407 1 ! signal ( clock_msg, sem(timeout_sem_no).s^ );
11040 408 2 ! wait ( clock_msg, sem(vagt_int2).w^ );
11050 409 3 ! LOCK clock_msg AS buf: ts_time DO
11060 410 4 ! gettime:= buf;
11070 411 5 END;
11080 412
11090 413
11100 414
11110 415 PROCEDURE puttime ( hh, mm : integer );
11120 416 (* set time in timeout module *)
11130 417 BEGIN
11140 418 1 ! clock_msg^.u1:= 5; (* writecontrol *)
11150 419 2 ! LOCK clock_msg AS buf: RECORD h,m: integer END DO
11160 420 3 ! BEGIN
11170 421 4 ! ! buf.h:= hh;
11180 422 5 ! ! buf.m:= 100*mm
11190 423 6 ! END;
11200 424 7 ! signal ( clock_msg, sem(timeout_sem_no).s^ );
11210 425 8 ! wait ( clock_msg, sem(vagt_int2).w^ );
11220 426 9 ! clock_msg^.u1:= 2
11230 427 10 END;
11240 428
11250 429
11260 430 PROCEDURE bindec ( bin: integer; VAR digits: alfa);
11270 431 (* binary to decimal conversion, at least 2 digits *)
11280 432 CONST
11290 433 blank = " ";
11300 434 VAR
11310 435 sign : char := " ";
11320 436 pos: integer:= alfalength; (* index in digits *)
11330 437 negative : boolean;
11340 438
11350 439 BEGIN
11360 440 1 ! digits:= blank;
11370 441 2 ! negative:= bin<0;
11380 442 3 ! bin:= abs( bin);
11390 443 4 ! REPEAT
11400 444 5 ! ! digits(pos):= chr(bin MOD 10 + ord("0"));
11410 445 6 ! ! bin:= bin DIV 10;
11420 446 7 ! ! pos:= pos-1
11430 447 8 ! UNTIL (bin=0) AND (pos<=12-2);
11440 448 9 ! IF negative THEN digits(pos):= "-";
11450 449 10 END;
11460 450
\f
tsvaslst 81.06.15. 15.00. page 14
12010 451 PROCEDURE print_num ( bin: integer; leng: integer);
12020 452 VAR i: integer;
12030 453 number: alfa;
12040 454 BEGIN
12050 455 1 ! bindec ( bin, number);
12060 456 2 ! FOR i:= alfalength+1-leng TO alfalength DO outchar ( tty, number(i));
12070 457 3 END;
12080 458
12090 459
12100 460 PROCEDURE print_time;
12110 461 FORWARD;
12120 462
12130 463 PROCEDURE printbell; (* called at poll timeout *)
12140 464 BEGIN
12150 465 1 ! IF line_ready THEN
12160 466 2 ! BEGIN
12170 467 3 ! ! outnewline ( tty);
12180 468 4 ! ! print_time;
12190 469 5 ! ! outalfa ( tty, "vagt stoppet");
12200 470 6 ! ! outchar ( tty, sp)
12210 471 7 ! END;
12220 472 8 ! outchar ( tty, "*");
12230 473 9 ! outchar ( tty, bel);
12240 474 10 ! outblock ( tty);
12250 475 11 ! timeout:= maxtime;
12260 476 12 ! line_ready:= false
12270 477 13 END;
12280 478
12290 479 PROCEDURE print_head ( j: integer);
12300 480 VAR i : integer;
12310 481 BEGIN
12320 482 1 ! outfill ( tty, nl, j);
12330 483 2 ! outchar ( tty, cr);
12340 484 3 ! FOR i:= 1 TO headn DO outalfa ( tty, head(i));
12350 485 4 ! outchar ( tty, nl);
12360 486 5 ! outchar ( tty, cr);
12370 487 6 ! outblock ( tty);
12380 488 7 ! linecount:= 9
12390 489 8 END;
12400 490
\f
tsvaslst 81.06.15. 15.00. page 15
13010 491 PROCEDURE print_time;
13020 492 VAR time: ts_time;
13030 493 BEGIN
13040 494 1 ! time:= gettime;
13050 495 2 ! outfill ( tty, sp, 2);
13060 496 3 ! print_num ( time(0), 2);
13070 497 4 ! outchar ( tty, ".");
13080 498 5 ! print_num ( time(1) DIV 100, 2);
13090 499 6 ! outchar ( tty, ".");
13100 500 7 ! print_num ( time(1) MOD 100, 2);
13110 501 8 ! outfill ( tty, sp, 2);
13120 502 9 END;
13130 503
13140 504 PROCEDURE print_alfa ( text: alfa ); (* print clock and alfa *)
13150 505 BEGIN
13160 506 1 ! print_time;
13170 507 2 ! outalfa ( tty, text);
13180 508 3 ! outnewline ( tty);
13190 509 4 ! outalfa ( tty, empty);
13200 510 5 ! outblock ( tty);
13210 511 6 END;
13220 512
\f
tsvaslst 81.06.15. 15.00. page 16
14010 513 PROCEDURE print_alarm;
14020 514 VAR i, n: integer;
14030 515 BEGIN
14040 516 1 ! outnewline ( tty);
14050 517 2 ! print_time;
14060 518 3 ! IF ( note(1)=#h64 ) AND ( note(3)=stop_code ) THEN note(1):= #h65;
14070 519 4 ! (* search text *)
14080 520 5 ! i:= 0;
14090 521 6 ! REPEAT
14100 522 7 ! ! i:= i+1;
14110 523 8 ! UNTIL (tekst(i).no=note(1)) OR (i=last_text_no);
14120 524 9 !
14130 525 10 ! (* the next cannot be done by a real vagt *)
14140 526 11 !
14150 527 12 ! outalfa ( tty, tekst(i).tx);
14160 528 13 ! outfill ( tty, sp, 2);
14170 529 14 ! print_num ( note(1) DIV 16, 2);
14180 530 15 ! outchar ( tty, ".");
14190 531 16 ! print_num ( note(1) MOD 16, 2);
14200 532 17 ! CASE note(1) OF
14210 533 18 ! ! #h72 : (* nothing *)
14220 534 19 ! ! OTHERWISE
14230 535 20 ! ! BEGIN
14240 536 21 ! ! ! outfill ( tty, sp, 2);
14250 537 22 ! ! ! print_num ( note(2), 3);
14260 538 23 ! ! END;
14270 539 24 ! END;
14280 540 25 ! CASE note(1) OF
14290 541 26 ! ! #h62,#h64,#h65,#h66,#h72 : (* nothing *)
14300 542 27 ! ! OTHERWISE
14310 543 28 ! ! BEGIN
14320 544 29 ! ! ! outfill ( tty, sp, 3);
14330 545 30 ! ! ! print_num ( note(3), 3);
14340 546 31 ! ! END;
14350 547 32 ! END;
14360 548 33 ! outblock ( tty);
14370 549 34 !
14380 550 35 ! IF note(1) = #h32 THEN (* statusalarm *)
14390 551 36 ! BEGIN
14400 552 37 ! ! n := note(3);
14410 553 38 ! ! IF n = 0 THEN
14420 554 39 ! ! BEGIN
14430 555 40 ! ! ! outnewline ( tty);
14440 556 41 ! ! ! outfill ( tty, sp, 12);
14450 557 42 ! ! ! outalfa ( tty, statustxt(0));
14460 558 43 ! ! ! outblock ( tty)
\f
tsvaslst 81.06.15. 15.00. page 17
14470 559 44 ! ! END
14480 560 45 ! ! ELSE
14490 561 46 ! ! FOR i := 7 DOWNTO 1 DO
14500 562 47 ! ! BEGIN
14510 563 48 ! ! ! IF (n MOD 2) = 1 THEN
14520 564 49 ! ! ! BEGIN
14530 565 50 ! ! ! ! outnewline ( tty);
14540 566 51 ! ! ! ! outfill ( tty, sp, 12);
14550 567 52 ! ! ! ! outalfa ( tty, statustxt(i));
14560 568 53 ! ! ! ! outblock ( tty)
14570 569 54 ! ! ! END;
14580 570 55 ! ! ! n := n DIV 2
14590 571 56 ! ! END;
14600 572 57 ! END;
14610 573 58 ! outnewline ( tty);
14620 574 59 ! outalfa ( tty, empty);
14630 575 60 ! outblock ( tty);
14640 576 61 ! sample:= 0;
14650 577 62 END;
14660 578
14670 579
\f
tsvaslst 81.06.15. 15.00. page 18
15010 580 PROCEDURE print_text_val ( text: alfa; val: integer );
15020 581 BEGIN
15030 582 1 ! print_num ( val, 3);
15040 583 2 ! outalfa ( tty, text );
15050 584 3 ! outnewline ( tty);
15060 585 4 END;
15070 586
15080 587 PROCEDURE send_read ( VAR f: filezone);
15090 588 BEGIN
15100 589 1 ! WITH f DO
15110 590 2 ! BEGIN
15120 591 3 ! ! IF open ( sem(free).w^) THEN wait ( cur, sem(free).w^);
15130 592 4 ! ! IF NOT nil(cur) THEN
15140 593 5 ! ! BEGIN
15150 594 6 ! ! ! LOCK cur AS buf: filebuffer DO
15160 595 7 ! ! ! BEGIN
15170 596 8 ! ! ! ! buf.first:= 1;
15180 597 9 ! ! ! ! buf.last:= top-1;
15190 598 10 ! ! ! ! buf.nextfree:= 1
15200 599 11 ! ! ! END;
15210 600 12 ! ! ! cur^.u1:= u1val;
15220 601 13 ! ! ! cur^.u2:= u2val;
15230 602 14 ! ! ! signal ( cur, sem(driver).s^);
15240 603 15 ! ! END
15250 604 16 ! END
15260 605 17 END;
15270 606
\f
tsvaslst 81.06.15. 15.00. page 19
16010 607 PROCEDURE read_command ( VAR newdata: integer);
16020 608 VAR
16030 609 error, i : integer;
16040 610 com: command;
16050 611
16060 612 BEGIN
16070 613 1 ! newdata:= 0;
16080 614 2 ! FOR i:= 1 TO 4 DO com(i):= readchar( kb);
16090 615 3 ! error:= 0;
16100 616 4 ! linecount := linecount + 1;
16110 617 5 ! IF com(1) <> cr THEN
16120 618 6 ! BEGIN
16130 619 7 ! ! i:= 0;
16140 620 8 ! ! REPEAT
16150 621 9 ! ! ! i:=i+1
16160 622 10 ! ! UNTIL (menu(i)=com) OR (i=last_com_no);
16170 623 11 ! ! IF i < last_com_no THEN letter(3):= opkode(i)
16180 624 12 ! ! ELSE error:= 1;
16190 625 13 ! !
16200 626 14 ! ! IF error=0 THEN
16210 627 15 ! ! BEGIN
16220 628 16 ! ! ! IF (letter(3)=7) OR (letter(3)=8) THEN
16230 629 17 ! ! ! i:= 0
16240 630 18 ! ! ! ELSE
16250 631 19 ! ! ! i:= readinteger ( kb);
16260 632 20 ! ! ! IF (i<0) OR (255<i) THEN error:= 2 ELSE
16270 633 21 ! ! ! BEGIN
16280 634 22 ! ! ! ! letter(2):= i;
16290 635 23 ! ! ! ! (* make default letter(1) *)
16300 636 24 ! ! ! ! CASE letter(3) OF
16310 637 25 ! ! ! ! ! 1,2,
16320 638 26 ! ! ! ! ! 5,7,
16330 639 27 ! ! ! ! ! 21,22,
16340 640 28 ! ! ! ! ! 24: letter(1):= 0;
16350 641 29 ! ! ! ! ! 3,4,
16360 642 30 ! ! ! ! ! 6,8,
16370 643 31 ! ! ! ! ! 23,25 : letter(1):= 1
16380 644 32 ! ! ! ! ! OTHERWISE
16390 645 33 ! ! ! ! ! BEGIN
16400 646 34 ! ! ! ! ! ! i:= readinteger ( kb);
16410 647 35 ! ! ! ! ! ! IF (i<0) OR (255<i) THEN error:= 3 ELSE
16420 648 36 ! ! ! ! ! ! letter(1):= i;
16430 649 37 ! ! ! ! ! END
16440 650 38 ! ! ! ! END
16450 651 39 ! ! ! END;
16460 652 40 ! ! END;
\f
tsvaslst 81.06.15. 15.00. page 20
16470 653 41 ! ! signal ( kb.cur, sem(kb.free).s^);
16480 654 42 ! !
16490 655 43 ! ! IF error > 0 THEN
16500 656 44 ! ! BEGIN
16510 657 45 ! ! ! print_alfa ( whatx(error));
16520 658 46 ! ! ! send_read ( kb)
16530 659 47 ! ! END
16540 660 48 ! ! ELSE
16550 661 49 ! ! IF letter(3) = #hc4 THEN (* set time *)
16560 662 50 ! ! BEGIN
16570 663 51 ! ! ! puttime ( letter(2), letter(1));
16580 664 52 ! ! END ELSE
16590 665 53 ! ! newdata:= 3;
16600 666 54 ! END;
16610 667 55 !
16620 668 56 ! IF (newdata = 0) AND (error = 0) THEN
16630 669 57 ! BEGIN
16640 670 58 ! ! outnewline ( tty);
16650 671 59 ! ! outalfa ( tty, empty);
16660 672 60 ! ! outblock( tty);
16670 673 61 ! ! send_read ( kb)
16680 674 62 ! END;
16690 675 63 END;
16700 676
16710 677
\f
tsvaslst 81.06.15. 15.00. page 21
17010 678
17020 679 (*----------------------- main program ----------------------------*)
17030 680
17040 681 BEGIN
17050 682 1 !
17060 683 2 ! testopen ( opzone, own.incname, op_sem);
17070 684 3 ! testout ( opzone, own.incname, al_env_version);
17080 685 4 !
17090 686 5 !
17100 687 6 ! (* wait for lam reservation *)
17110 688 7 !
17120 689 8 ! vl := 1;
17130 690 9 ! timeout:= 40;
17140 691 10 ! h:= ille;
17150 692 11 ! REPEAT
17160 693 12 ! ! wait ( msg, sem( main).w^ );
17170 694 13 ! ! IF msg^.u1 = create_at_ch THEN (* start at lam channel *)
17180 695 14 ! ! BEGIN
17190 696 15 ! ! ! portno:= msg^.u2;
17200 697 16 ! ! ! alloc ( clock_msg, clockpool, sem(vagt_int2).s^ );
17210 698 17 ! ! ! clock_msg^.u1:= create_tty_ch;
17220 699 18 ! ! ! clock_msg^.u2:= portno;
17230 700 19 ! ! ! clock_msg^.u3:= 33; (* <> 0 *)
17240 701 20 ! ! ! LOCK clock_msg AS buf: createshape DO
17250 702 21 ! ! ! BEGIN
17260 703 22 ! ! ! ! buf.contr:= 2+4+16+32; (* even 7bit 2stop 300 bps *)
17270 704 23 ! ! ! ! buf.timer:= 60;
17280 705 24 ! ! ! END;
17290 706 25 ! ! ! signal ( clock_msg, sem(lam_sem_no).s^ );
17300 707 26 ! ! ! wait ( clock_msg, sem(vagt_int2).w^ );
17310 708 27 ! ! ! msg^.u2:= clock_msg^.u2;
17320 709 28 ! ! ! return ( msg);
17330 710 29 ! ! ! h:= ok;
17340 711 30 ! ! END ELSE
17350 712 31 ! ! BEGIN
17360 713 32 ! ! ! msg^.u2:= ille; return( msg)
17370 714 33 ! ! END
17380 715 34 ! UNTIL h = ok;
17390 716 35 !
\f
tsvaslst 81.06.15. 15.00. page 22
18010 717 36 ! open_file ( kb, lam_sem_no, main, vagt_int4, no_reads, readpool, 17, portno);
18020 718 37 ! open_file ( tty, lam_sem_no, vagt_int1, vagt_int3, no_writes, writepool, 18, portno);
18030 719 38 !
18040 720 39 ! WITH tty DO
18050 721 40 ! WHILE open ( sem(free).w^) DO
18060 722 41 ! BEGIN
18070 723 42 ! ! wait ( msg, sem(free).w^ );
18080 724 43 ! ! signal ( msg, sem(answer_sem).s^ )
18090 725 44 ! END;
18100 726 45 !
18110 727 46 ! clock_msg^.u1:= 2; (* read *)
18120 728 47 !
18130 729 48 ! alloc ( msg, timerpool, sem( main ).s^ );
18140 730 49 ! msg^.u1:= read_write; msg^.u2:= 0;
18150 731 50 ! msg^.u3:= delay1; msg^.u4:= delay2;
18160 732 51 ! sendtimer ( msg);
18170 733 52 ! outchar( tty, cr);
18180 734 53 ! outalfa( tty, "/ vagt ");
18190 735 54 ! outalfa( tty, version);
18200 736 55 ! print_head ( 2);
18210 737 56 !
\f
tsvaslst 81.06.15. 15.00. page 23
19010 738 57 !
19020 739 58 ! (*----------------------- main loop ---------------------------*)
19030 740 59 !
19040 741 60 ! REPEAT
19050 742 61 ! !
19060 743 62 ! ! wait ( msg, sem( main ).w^ );
19070 744 63 ! !
19080 745 64 ! ! IF ownertest ( readpool, msg) THEN (* read terminated *)
19090 746 65 ! ! BEGIN
19100 747 66 ! ! ! (*q testout ( opzone, "keyboard ", msg^.u2 ); q*)
19110 748 67 ! ! ! inblock ( kb, msg);
19120 749 68 ! ! ! IF lamstate <> 0 THEN
19130 750 69 ! ! ! send_read ( kb )
19140 751 70 ! ! ! ELSE
19150 752 71 ! ! ! read_command ( newdata);
19160 753 72 ! ! END ELSE
19170 754 73 ! !
19180 755 74 ! ! IF ownertest ( timerpool, msg) THEN (* from timer *)
19190 756 75 ! ! BEGIN
19200 757 76 ! ! ! msg^.u1:= 6; msg^.u2:= 0;
19210 758 77 ! ! ! msg^.u3:= delay1; msg^.u4:= delay2;
19220 759 78 ! ! ! sendtimer ( msg);
19230 760 79 ! ! ! IF timeout > 0 THEN
19240 761 80 ! ! ! BEGIN
19250 762 81 ! ! ! ! timeout:= timeout-1;
19260 763 82 ! ! ! ! IF timeout = 0 THEN printbell (* no poll in maxtime*delay1 sec *)
19270 764 83 ! ! ! END
19280 765 84 ! ! END ELSE
19290 766 85 ! !
19300 767 86 ! ! IF msg^.u3 = dummy_route THEN return ( msg)
19310 768 87 ! ! ELSE
19320 769 88 ! !
19330 770 89 ! ! IF msg^.u1 = 11 THEN (* from vccon *)
19340 771 90 ! ! BEGIN
19350 772 91 ! ! ! LOCK msg AS buf: telegram DO WITH buf DO
19360 773 92 ! ! ! BEGIN
19370 774 93 ! ! ! ! databits:= inf;
19380 775 94 ! ! ! ! func := fnc;
19390 776 95 ! ! ! ! l := lnr
19400 777 96 ! ! ! END;
19410 778 97 ! ! !
\f
tsvaslst 81.06.15. 15.00. page 24
20010 779 98 ! ! !
20020 780 99 ! ! ! (*------------------- at protocol answer ----------------------------*)
20030 781 100 ! ! !
20040 782 101 ! ! ! IF NOT line_ready THEN vl:= l; (* all l accepted *)
20050 783 102 ! ! ! IF l <> vl THEN
20060 784 103 ! ! ! BEGIN
20070 785 104 ! ! ! ! testout ( opzone, "l <> vl ", vl);
20080 786 105 ! ! ! ! answer:= lastanswer
20090 787 106 ! ! ! END
20100 788 107 ! ! ! ELSE
20110 789 108 ! ! ! BEGIN
20120 790 109 ! ! ! ! vl:= 1-vl;
20130 791 110 ! ! ! ! WITH answer DO
20140 792 111 ! ! ! ! IF austate <> oldstate THEN (* status *)
20150 793 112 ! ! ! ! BEGIN
20160 794 113 ! ! ! ! ! info:= austate;
20170 795 114 ! ! ! ! ! opko:= status;
20180 796 115 ! ! ! ! ! oldstate:= austate
20190 797 116 ! ! ! ! END ELSE
20200 798 117 ! ! ! ! CASE func OF
20210 799 118 ! ! ! ! !
20220 800 119 ! ! ! ! ! poll: BEGIN
20230 801 120 ! ! ! ! ! ! timeout:= maxtime;
20240 802 121 ! ! ! ! ! ! IF NOT line_ready THEN
20250 803 122 ! ! ! ! ! ! BEGIN
20260 804 123 ! ! ! ! ! ! ! outnewline ( tty);
20270 805 124 ! ! ! ! ! ! ! print_alfa ( klar );
20280 806 125 ! ! ! ! ! ! END;
20290 807 126 ! ! ! ! ! ! line_ready:= true;
20300 808 127 ! ! ! ! ! ! IF newdata = 0 THEN info:= 0 ELSE
20310 809 128 ! ! ! ! ! ! info:= letter(newdata);
20320 810 129 ! ! ! ! ! ! opko:= reply(newdata);
20330 811 130 ! ! ! ! ! ! IF newdata > 0 THEN
20340 812 131 ! ! ! ! ! ! BEGIN
20350 813 132 ! ! ! ! ! ! ! newdata:= newdata-1;
20360 814 133 ! ! ! ! ! ! ! IF newdata = 0 THEN (* message send *)
20370 815 134 ! ! ! ! ! ! ! BEGIN
20380 816 135 ! ! ! ! ! ! ! ! outalfa ( tty, empty);
20390 817 136 ! ! ! ! ! ! ! ! outblock ( tty)
20400 818 137 ! ! ! ! ! ! ! END;
20410 819 138 ! ! ! ! ! ! END;
20420 820 139 ! ! ! ! ! ! IF newdata = 0 THEN send_read ( kb);
20430 821 140 ! ! ! ! ! END; (* poll *)
20440 822 141 ! ! ! ! !
20450 823 142 ! ! ! ! ! data: BEGIN
20460 824 143 ! ! ! ! ! ! timeout:= maxtime;
\f
tsvaslst 81.06.15. 15.00. page 25
20470 825 144 ! ! ! ! ! ! IF sample > 0 THEN
20480 826 145 ! ! ! ! ! ! BEGIN
20490 827 146 ! ! ! ! ! ! ! sample:= sample+1;
20500 828 147 ! ! ! ! ! ! ! note(sample):= databits
20510 829 148 ! ! ! ! ! ! END;
20520 830 149 ! ! ! ! ! ! IF sample = 3 THEN print_alarm;
20530 831 150 ! ! ! ! ! ! info:= databits;
20540 832 151 ! ! ! ! ! ! opko:= d_ack
20550 833 152 ! ! ! ! ! END;
20560 834 153 ! ! ! ! !
20570 835 154 ! ! ! ! ! opr: BEGIN
20580 836 155 ! ! ! ! ! ! timeout:= maxtime;
20590 837 156 ! ! ! ! ! ! sample:= 1;
20600 838 157 ! ! ! ! ! ! note(1):= databits;
20610 839 158 ! ! ! ! ! ! info:= databits;
20620 840 159 ! ! ! ! ! ! opko:= t_ack
20630 841 160 ! ! ! ! ! END;
20640 842 161 ! ! ! ! !
20650 843 162 ! ! ! ! ! test_i: BEGIN
20660 844 163 ! ! ! ! ! ! timeout:= maxtime;
20670 845 164 ! ! ! ! ! ! IF austate = 0 THEN info:= test_ok ELSE info:= test_error;
20680 846 165 ! ! ! ! ! ! opko:= t_ack
20690 847 166 ! ! ! ! ! END
20700 848 167 ! ! ! ! END (* of case on func *)
20710 849 168 ! ! ! END; (* l=vl *)
20720 850 169 ! ! !
20730 851 170 ! ! ! lastanswer:= answer;
20740 852 171 ! ! ! letter(0):= answer.info;
20750 853 172 ! ! ! msg^.u2 := ok;
20760 854 173 ! ! !
20770 855 174 ! ! ! LOCK msg AS buf : respons DO
20780 856 175 ! ! ! buf:= answer;
20790 857 176 ! ! ! dummy:= check5 ( msg, generate);
20800 858 177 ! ! !
20810 859 178 ! ! ! return ( msg)
20820 860 179 ! ! END (* from vccon *) ELSE
20830 861 180 ! !
20840 862 181 ! ! BEGIN
20850 863 182 ! ! ! testout ( opzone, "illegal msg ", msg^.u1 );
20860 864 183 ! ! ! msg^.u2:= ille; return ( msg)
20870 865 184 ! ! END
20880 866 185 ! !
20890 867 186 ! UNTIL forever
20900 868 187 !
20910 869 188 END; (* process vagt_sim *)
20920 870
\f
tsvaslst 81.06.15. 15.00. page 26
21010 871 FUNCTION find_ch( ch: byte; VAR desc_ix: descriptor_ix ): boolean;
21020 872
21030 873 BEGIN
21040 874 1 ! desc_ix:= 1;
21050 875 2 !
21060 876 3 ! WHILE ( desc_ix < vc_l ) AND ( ch <> ch_desc( desc_ix ).chann ) DO
21070 877 4 ! desc_ix:= desc_ix + 1;
21080 878 5 !
21090 879 6 ! find_ch:= ( ch = ch_desc( desc_ix ).chann )
21100 880 7 END; (* function find_ch *)
21110 881
\f
tsvaslst 81.06.15. 15.00. page 27
22010 882
22020 883 BEGIN (* process vagt *)
22030 884 1 ! testopen( opzone, own.incname, op_sem );
22040 885 2 ! testout( opzone, version, al_env_version );
22050 886 3 !
22060 887 4 ! FOR desc_ix:= 1 TO vc_l DO
22070 888 5 ! WITH ch_desc( desc_ix ) DO
22080 889 6 ! chann:= 255;
22090 890 7 !
22100 891 8 ! REPEAT (* forever *)
22110 892 9 ! !
22120 893 10 ! ! wait( msg, sem( vas_sem_no ).w^ );
22130 894 11 ! !
22140 895 12 ! ! WITH msg^ DO
22150 896 13 ! ! BEGIN
22160 897 14 ! ! ! IF ( u1 = create_at_ch ) THEN
22170 898 15 ! ! ! BEGIN
22180 899 16 ! ! ! ! IF find_ch( u2, desc_ix ) THEN
22190 900 17 ! ! ! ! BEGIN
22200 901 18 ! ! ! ! !
22210 902 19 ! ! ! ! ! testout( opzone, "reuse chann ", u2 );
22220 903 20 ! ! ! ! ! u2:= 0;
22230 904 21 ! ! ! ! ! return( msg )
22240 905 22 ! ! ! ! !
22250 906 23 ! ! ! ! END
22260 907 24 ! ! ! ! ELSE
22270 908 25 ! ! ! ! BEGIN
22280 909 26 ! ! ! ! ! IF ( no_of_inc = vc_l ) THEN
22290 910 27 ! ! ! ! ! BEGIN
22300 911 28 ! ! ! ! ! ! testout( opzone, "vagt_sim > ", vc_l );
22310 912 29 ! ! ! ! ! ! release( msg ) (* <<<<<<<<<<<<<<<<<<<<<<<< OBS! *)
22320 913 30 ! ! ! ! ! END
22330 914 31 ! ! ! ! ! ELSE
22340 915 32 ! ! ! ! ! BEGIN
22350 916 33 ! ! ! ! ! ! no_of_inc:= no_of_inc + 1;
22360 917 34 ! ! ! ! ! ! WITH ch_desc( no_of_inc ) DO
22370 918 35 ! ! ! ! ! ! BEGIN
22380 919 36 ! ! ! ! ! ! ! chann:= u2;
22390 920 37 ! ! ! ! ! ! ! main:= vagt_int + ( no_of_inc - 1 ) * 5;
22400 921 38 ! ! ! ! ! ! ! inc_name:= "vagt ch ";
22410 922 39 ! ! ! ! ! ! ! inc_name( 9 ):= chr( u2 DIV 10 + ord( "0" ) );
22420 923 40 ! ! ! ! ! ! ! inc_name( 10 ):= chr( u2 MOD 10 + ord( "0" ) );
22430 924 41 ! ! ! ! ! ! !
22440 925 42 ! ! ! ! ! ! ! result:= create( inc_name, vagt_sim( op_sem, sem, main,
22450 926 43 ! ! ! ! ! ! ! main + 1, main + 2, main + 3, main + 4, lam_sem_no ),
22460 927 44 ! ! ! ! ! ! ! shad, inc_size );
\f
tsvaslst 81.06.15. 15.00. page 28
22470 928 45 ! ! ! ! ! ! !
22480 929 46 ! ! ! ! ! ! ! IF result = 0 THEN
22490 930 47 ! ! ! ! ! ! ! BEGIN
22500 931 48 ! ! ! ! ! ! ! ! start( shad, vc_sim_pri );
22510 932 49 ! ! ! ! ! ! ! ! signal( msg, sem( main ).s^ )
22520 933 50 ! ! ! ! ! ! ! END
22530 934 51 ! ! ! ! ! ! ! ELSE
22540 935 52 ! ! ! ! ! ! ! testout( opzone, "create error", result )
22550 936 53 ! ! ! ! ! ! ! ;
22560 937 54 ! ! ! ! ! ! END
22570 938 55 ! ! ! ! ! END
22580 939 56 ! ! ! ! END
22590 940 57 ! ! ! END
22600 941 58 ! ! ! ELSE
22610 942 59 ! ! ! BEGIN
22620 943 60 ! ! ! ! IF find_ch( u2, desc_ix ) THEN
22630 944 61 ! ! ! ! signal( msg, sem( ch_desc( desc_ix ).main ).s^ )
22640 945 62 ! ! ! ! ELSE
22650 946 63 ! ! ! ! testout( opzone, "channel ", u2 )
22660 947 64 ! ! ! END
22670 948 65 ! ! END (* with msg^ *)
22680 949 66 ! !
22690 950 67 ! UNTIL forever
22700 951 68 !
22710 952 69 END. (* process vagt *)
22720 953
\f
tsvaslst 81.06.15. 15.00. page 29
0 55* 57* 85* 86* 91* 100* 101* 107* 184* 200* 200* 220* 224* 227* 227*
231* 235* 245* 263 267 295 308 309 347 361 362 382* 441 447 496
520 553 557 576 613 615 619 626 629 632 640 647 655 668 668
730 749 757 760 763 808 808 811 814 820 825 845 852 903 929
1 58* 72* 81* 82* 83* 87* 89* 90* 100* 112* 195* 199* 220* 240* 247*
247* 248* 248* 250* 254* 269 283 284 310 313 328 341 350 363 373
389 396 446 456 484 498 500 518 518 522 523 529 531 532 540
550 561 563 596 597 598 614 616 617 621 624 637: 640 643 643
648 663 689 762 790 813 827 837 838 874 877 887 916 920 926
2 59* 66* 426 447 495 496 498 500 501 528 529 531 536 537 563
570 632 634 637: 663 703 727 736 926
3 60* 73* 87* 518 537 544 545 545 552 582 623 628 628 636 641:
647 661 665 830 926
4 56* 61* 71* 81* 86* 235* 392 614 641: 703 926
5 62* 295 418 638: 920
6 63* 64* 642: 757
7 85* 91* 561 628 638:
8 628 642:
9 488 922
10 74* 75* 227* 397 444 445 922 923 923
11 770
12 447 556 566
14 325
16 529 531 703
17 248* 717
18 70* 247* 718
21 65* 639:
22 639:
23 643:
24 640:
25 643:
27 69*
31 101* 107*
32 703
33 700
40 690
44 67*
60 704
80 68*
100 422 498 500
255 632 647 889
355 53*
abs 442
accepted 201*
\f
tsvaslst 81.06.15. 15.00. page 30
alarmtext 88* 89* 134* 135* 136* 137* 138* 139* 140* 141* 142* 143* 144* 145* 146*
147* 148* 149* 150* 151* 152* 153* 154* 155* 156* 157* 158* 159* 160*
alfa 87* 88* 90* 91* 198* 338* 430* 453* 504* 580*
alfalength 341 436* 456 456
alloc 265 697 729
al_env_version <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
684 885
answ 253* 259
answer 227* 786= 791 851 852 856
answer_sem 116* 259= 265 307 724
as 281: 312: 370: 409: 419: 594: 701: 772: 855:
atvagtsim 187*
austate 223* 296= 309= 362= 792 794 796 845
bel 473
bin 332* 430* 441 442= 442 444 445= 445 447 451* 455
bindec 430* 455
blank 433* 440
boolean 233* 437* 871*
buf 281: 283 284 312: 312 370: 370 409: 410 419: 421 422 594: 596 597
598 701: 703 704 772: 772 855: 856=
bufs 254* 263 269= 269
byte 83* 88* 94* 98* 105* 119* 205* 224* 235* 244* 254* 871*
cbits 101* 107*
ch 871* 876 879
chann 205* 876 879 889= 919=
char 81* 112* 301* 345* 367* 381* 435*
character 301* 312
check5 857
chr 444 922 923
ch_desc 203* 876 879 888 917 944
clockpool 250* 697
clock_msg 251* 407 408 409: 418 419: 424 425 426 697 698 699 700 701: 706
707 708 727
com 610* 614= 617 622
command 81* 82* 610*
commands 82* 172*
contr 94* 703=
cr 327 374 388 389 393 483 486 617 733
create 925
createshape 93* 701
create_at_ch 694 897
create_tty_ch <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
698
cur 118* 265 266 267 268 281: 286 287 288 294 305 307 309 312: 359
359 360= 362 370: 591 592 594: 600 601 602 653
\f
tsvaslst 81.06.15. 15.00. page 31
data 84* 823:
databits 224* 774= 828 831 838 839
delay1 74* 731 758
delay2 75* 731 758
descriptor_ix <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
195* 199* 203* 871*
desc_ix 199* 871* 874= 876 876 877= 877 879 887= 888 899 943 944
digits 379* 388 391 430* 440= 444= 448=
driv 253* 258
driver 116* 258= 288 602
dummy 232* 857=
dummy_route 767
d_ack 61* 832
empty 128* 509 574 671 816
error 609* 615= 624= 626 632= 647= 655 657 668
errortext 87* 126*
f 253* 256 276* 278 292* 294 301* 303 309 314 323* 326 327 332* 338*
341 345* 349 354* 357 362 367* 369 377* 384 387 398 587* 589
false 76* 233* 476
filebuffer 110* 238* 239* 281 312 370 594
filezone 115* 247* 247* 248* 248* 253* 276* 292* 301* 323* 332* 338* 345* 354* 367*
377* 587*
file_error 292* 309 362
filler 345* 349
find_ch 871* 879= 899 943
first 111* 283= 596=
fnc 99* 775
forever 76* 867 950
free 117* 260= 268 359 591 591 653 721 723
func 225* 775= 798
funktion 84* 99* 225*
generate 857
gettime 405* 410= 494
h 231* 419: 421= 691= 710= 715
h01 134* 180*
h02 181*
h03 181*
h04 181*
h05 183*
h06 183*
h07 183*
h08 183*
h10 135*
h12 136*
\f
tsvaslst 81.06.15. 15.00. page 32
h15 182*
h16 182*
h17 182*
h18 182*
h19 182*
h20 137* 183*
h21 138*
h28 139*
h29 140*
h30 141*
h31 142*
h32 143* 550
h40 180*
h41 144*
h42 145*
h50 146*
h53 147*
h54 148*
h57 149*
h62 150* 541
h64 151* 518 541
h65 152* 518 541
h66 153* 541
h72 154* 533: 541:
h84 180*
h85 155*
h86 156*
h98 157*
hc4 180* 661
head 130* 484
headarray 90* 130*
headn 71* 90* 484
hf0 158*
hf1 159*
hff 160*
hh 415* 421
i 339* 341= 341 382* 392 396= 396 452* 456= 456 480* 484= 484 514* 520=
522= 522 523 523 527 561= 567 609* 614= 614 619= 621= 621 622 622
623 623 629= 631= 632 632 634 646= 647 647 648
ille 56* 691 713 864
inblock 354* 748
incname 683 684 884
inc_name 198* 921= 922= 923= 925
inc_size 53* 927
\f
tsvaslst 81.06.15. 15.00. page 33
inf 98* 774
info 105* 794= 808= 809= 831= 839= 845= 845= 852
integer 111* 117* 120* 206* 216* 231* 245* 253* 254* 320* 332* 339* 345* 377* 382*
415* 419 430* 436* 451* 451* 452* 479* 480* 514* 580* 607* 609*
j 320* 479* 482
kb 248* 614 631 646 653 653 658 673 717 748 750 820
klar 129* 805
l 220* 776= 782 783
lamstate 221* 294= 295 295 296 308= 361= 749
lam_sem_no 216* 706 717 718 926
last 111* 284= 597=
lastanswer 226* 786 851=
last_com_no 70* 82* 83* 622 623
last_text_no 69* 89* 523
leng 451* 456
letter 234* 623= 628 628 634= 636 640= 643= 648= 661 663 663 809 852=
linecount 245* 325 328= 328 488= 616= 616
line_ready 233* 465 476= 782 802 807=
lnr 100* 776
lock 281: 312: 370: 409: 419: 594: 701: 772: 855:
m 419: 422=
main 206* 216* 693 717 729 743 920= 925 926 926 926 926 932 944
maxtime 66* 475 801 824 836 844
menu 172* 622
mm 415* 422
msg 210* 236* 693 694 696 708 709 713 713 723 724 729 730 730 731
731 732 743 745 748 755 757 757 758 758 759 767 767 770 772:
853 855: 857 859 863 864 864 893 895 904 912 932 944
n 514* 552= 553 563 570= 570
negative 437* 441= 448
newdata 229* 607* 613= 665= 668 752 808 809 810 811 813= 813 814 820
next 120* 284 310= 312 313= 313 314 363= 371 373 373= 373
nextfree 111* 371 598=
nl 326 482 485
no 88* 523
note 235* 518 518 518= 523 529 531 532 537 540 545 550 552 828= 838=
no_of_inc 200* 909 916= 916 917 920
no_reads 72* 239* 717
no_writes 73* 238* 718
number 453* 455 456
ok 55* 309 362 710 715 853
oldstate 222* 792 796=
opcodes 83* 179*
open 591 721
\f
tsvaslst 81.06.15. 15.00. page 34
open_file 253* 717 718
opko 106* 795= 810= 832= 840= 846=
opkode 179* 623
opr 84* 835:
opzone 211* 242* 683 684 785 863 884 885 902 911 935 946
op_sem 188* 213* 683 884 925
ord 397 397 444 922 923
outalfa 338* 469 484 507 509 527 557 567 574 583 671 734 735 816
outblock 276* 314 474 487 510 548 558 568 575 672 817
outchar 301* 326 327 341 349 456 470 472 473 483 485 486 497 499 530
733
outfill 345* 482 495 501 528 536 544 556 566
outinteger 332*
outnewline 323* 467 508 516 555 565 573 584 670 804
own 683 684 884
ownertest 745 755
pagesize 67* 325
poll 84* 800:
pool 238* 239* 240* 250* 254*
portno 244* 696= 699 717 718
pos 436* 444 446= 446 447 448
printbell 463* 763
print_alarm 513* 830
print_alfa 504* 657 805
print_head 320* 325 479* 736
print_num 451* 496 498 500 529 531 537 545 582
print_text_val <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
580*
print_time 460* 468 491* 506 517
process 187* 213*
puttime 415* 663
p_ack 57* 124*
readchar 367* 373= 374= 387 398 614
readinteger 377* 389= 400= 631 646
readpool 239* 717 745
read_command 607* 752
read_write 730
reference 118* 210* 236* 251* 354*
release 912
rep 345* 347 350= 350
reply 124* 810
replycode 85* 86* 106*
replycodes 86* 124*
res 354* 360
\f
tsvaslst 81.06.15. 15.00. page 35
reso 254* 265
respons 104* 227* 227* 855
result 201* 925= 929 935
result_range 201*
return 709 713 767 859 864 904
s 265 268 288 359 407 424 602 653 697 706 724 729 932 944
sample 228* 576= 825 827= 827 828 830 837=
sem 190* 215* 265 268 288 307 359 407 408 424 425 591 591 602 653
693 697 706 707 721 723 724 729 743 893 925 932 944
sempointer 188* 213*
sendtimer 732 759
send_read 587* 658 673 750 820
shad 207* 927 931
shadow 207*
sign 435*
signal 268 288 359 407 424 602 653 706 724 932 944
sp 470 495 501 528 536 544 556 566
start 931
status 60* 795
statusarray 91* 162*
statustxt 162* 557 567
stop_code 518
t 381* 387= 388 388 389 391 393= 397 398=
tekst 133* 523 527
telegram 97* 772
testopen 683 884
testout 684 785 863 885 902 911 935 946
test_error 65* 845
test_i 84* 843:
test_ok 64* 845
text 112* 312= 338* 341 373 504* 507 580* 583
textarray 89* 133*
time 492* 494= 496 498 500
timeout 230* 475= 690= 760 762= 762 763 801= 824= 836= 844=
timeout_sem_no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
407 424
timer 94* 704=
timerpool 240* 729 755
top 120* 314 597
true 807
ts_pointer_vector <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
190* 215*
ts_time 250* 405* 409 492*
tty 247* 456 467 469 470 472 473 474 482 483 484 485 486 487 495
497 499 501 507 508 509 510 516 527 528 530 536 544 548 555
556 557 558 565 566 567 568 573 574 575 583 584 670 671 672
\f
tsvaslst 81.06.15. 15.00. page 36
718 720 733 734 735 804 816 817
ttylength 68* 112* 247* 248*
tx 88* 527
t_ack 62* 840 846
u1 266= 286= 418= 426= 600= 694 698= 727= 730= 757= 770 863 897
u1val 119* 261= 266 286 600
u2 267= 287= 294 309 362 601= 696 699= 708= 708 713= 730= 757= 853= 864=
899 902 903= 919 922 923 943 946
u2val 119* 262= 287 601
u3 700= 731= 758= 767
u4 731= 758=
v 382* 397= 397 400
v1 254* 261
v2 254* 262
vacant 253* 260
vagt_env 1*
vagt_int 920
vagt_int1 216* 718
vagt_int2 216* 408 425 697 707
vagt_int3 216* 718
vagt_int4 216* 717
vagt_sim 213* 925
val 580* 582
vas_sem_no 893
vc_data 58* 124* 124*
vc_l 195* 200* 876 887 909 911
vc_nak 63* 124*
vc_opr 59* 124*
vc_sim_pri 931
version 52* 735 885
vl 220* 689= 782= 783 785 790= 790
w 307 408 425 591 591 693 707 721 723 743 893
wait 307 408 425 591 693 707 723 743 893
whatx 126* 657
writepool 238* 718
zone 211* 242*
\f
tsvaslst 81.06.15. 15.00. page 37
AND 5
ARRAY 11
BEGIN 86
CASE 4
CONST 4
DIV 5
DO 34
DOWNTO 1
ELSE 27
END 98
FOR 6
FORWARD 2
FUNCTION 4
IF 51
IN 2
MOD 5
NIL 3
NOT 4
OF 18
OR 6
OTHERWISE 3
PACKED 3
PROCEDURE 22
RECORD 8
REPEAT 7
THEN 51
TO 5
TYPE 2
UNTIL 7
VAR 29
WHILE 5
WITH 14
\f
jg9 1981.06.15 15.00
tsvas program
81.06.15. 15.00. pascal80 version 1981.04.01
name headline beginline endline appetite(words)
open_file 70 73 87 : 17
outblock 92 96 105 : 9
file_error 108 109 112 : 3
outchar 117 121 131 : 12
outnewline 139 140 144 : 11
outinteger 148 149 149 : 2
outalfa 154 156 157 : 19
outfill 161 162 167 : 11
inblock 171 174 180 : 11
readchar 183 185 190 : 11
readinteger 194 202 218 : 16
gettime 221 222 226 : 9
puttime 232 233 242 : 9
bindec 248 255 264 : 9
print_num 267 270 272 : 25
printbell 279 281 292 : 16
print_head 295 297 304 : 20
print_time 307 309 317 : 17
print_alfa 320 321 326 : 16
print_alarm 329 331 392 : 21
print_text_v 396 397 400 : 16
send_read 403 406 420 : 9
read_command 424 428 490 : 24
vagt_sim 35 498 684 : 157
find_ch 688 689 694 : 8
atvagtsim 10 699 767 : 159
code: 1 . 1072 = 9264 bytes
end of PASCAL80 compilation
end
blocksread = 53
«eof»