|
|
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: 11520 (0x2d00)
Types: TextFileVerbose
Names: »konsollst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »konsollst«
\f
konsollst 81.03.09. 10.03. page 1
10 1
\f
konsollst 81.03.09. 10.03. page 2
1010 2
1020 3 PROCESS konsol (
1030 4 VAR main : !ts_pointer; (* main semaphore *)
1040 5 VAR driv : !sempointer (* lam driver *)
1050 6 );
1060 7
1070 8 CONST
1080 9
1090 10 version = "vers 0.00 / ";
1100 11
1110 12 TYPE
1120 13
1130 14 ttybuffer = RECORD
1140 15 ! first, last, next : integer;
1150 16 ! text : ARRAY (1..80) OF byte;
1160 17 END;
1170 18
1180 19 atbuffer = RECORD
1190 20 ! b0, b1 : byte
1200 21 END;
1210 22
1220 23 ttyzone = RECORD
1230 24 ! free : semaphore;
1240 25 ! cur : reference;
1250 26 ! next, top : integer
1260 27 END;
1270 28
1280 29
1290 30 CONST
1300 31
1310 32 end_of_line = 10;
1320 33 ibufs = 1;
1330 34 obufs = 2;
1340 35 book = #hc3;
1350 36
1360 37
\f
konsollst 81.03.09. 10.03. page 3
2010 38
2020 39 VAR
2030 40 inchn, (* input kanal nr *)
2040 41 outchn: byte:=16; (* output kanal nr *)
2050 42 h: integer;
2060 43 data0,
2070 44 data1: byte; (* from debug cable *)
2080 45 msg : reference;
2090 46 ipool : pool ibufs OF atbuffer;
2100 47 opool : pool obufs OF ttybuffer;
2110 48 tty : ttyzone;
2120 49
2130 50
\f
konsollst 81.03.09. 10.03. page 4
3010 51
3020 52 PROCEDURE openfile (
3030 53 VAR f: ttyzone;
3040 54 bufs : integer;
3050 55 VAR reso: pool 1;
3060 56 v1: byte
3070 57 );
3080 58 BEGIN
3090 59 1 ! WITH f DO
3100 60 2 ! BEGIN
3110 61 3 ! ! WHILE bufs > 0 DO
3120 62 4 ! ! BEGIN
3130 63 5 ! ! ! alloc ( cur, reso, free);
3140 64 6 ! ! ! cur^.u1:= v1;
3150 65 7 ! ! ! cur^.u3:= lam_route;
3160 66 8 ! ! ! cur^.u4:= #h40 + v1;
3170 67 9 ! ! ! signal ( cur, free);
3180 68 10 ! ! ! bufs:= bufs-1
3190 69 11 ! ! END
3200 70 12 ! END
3210 71 13 END;
3220 72
3230 73
\f
konsollst 81.03.09. 10.03. page 5
4010 74
4020 75 PROCEDURE outblock ( VAR f: ttyzone);
4030 76 BEGIN
4040 77 1 ! WITH f DO
4050 78 2 ! BEGIN
4060 79 3 ! ! LOCK cur AS buf: ttybuffer DO
4070 80 4 ! ! BEGIN
4080 81 5 ! ! ! buf.first:= 1;
4090 82 6 ! ! ! buf.last:= next-1
4100 83 7 ! ! END;
4110 84 8 ! ! cur^.u2:= outchn; (* channel no *)
4120 85 9 ! ! signal ( cur, driv^)
4130 86 10 ! END;
4140 87 11 END;
4150 88
4160 89
4170 90
4180 91
4190 92
4200 93 PROCEDURE printchar ( VAR f: ttyzone; ch: byte );
4210 94 BEGIN
4220 95 1 ! WITH f DO
4230 96 2 ! BEGIN
4240 97 3 ! !
4250 98 4 ! ! IF nil ( cur) THEN (* get a new free buffer *)
4260 99 5 ! ! BEGIN
4270 100 6 ! ! ! wait ( cur, free);
4280 101 7 ! ! ! next:= 1;
4290 102 8 ! ! END;
4300 103 9 ! !
4310 104 10 ! ! LOCK cur AS buf: ttybuffer DO buf.text(next):= ch;
4320 105 11 ! ! next:= next+1;
4330 106 12 ! ! IF ( next > top ) OR
4340 107 13 ! ! ( ch = end_of_line ) THEN outblock ( f);
4350 108 14 ! END
4360 109 15 END;
4370 110
4380 111
4390 112
4400 113
\f
konsollst 81.03.09. 10.03. page 6
5010 114 (*------------------------- main program ---------------------------*)
5020 115
5030 116 BEGIN
5040 117 1 !
5050 118 2 ! openfile ( tty, obufs, opool, write_tty );
5060 119 3 !
5070 120 4 ! inchn:= 16;
5080 121 5 ! REPEAT
5090 122 6 ! ! wait ( msg, main.w^);
5100 123 7 ! ! IF msg^.u4 = book THEN
5110 124 8 ! ! LOCK msg AS at: atbuffer DO
5120 125 9 ! ! BEGIN
5130 126 10 ! ! ! inchn:= at.b0 MOD 16;
5140 127 11 ! ! ! outchn:= at.b1 MOD 16;
5150 128 12 ! ! END;
5160 129 13 ! ! return ( msg)
5170 130 14 ! UNTIL inchn < 16;
5180 131 15 !
5190 132 16 ! FOR h:= 1 TO ibufs DO
5200 133 17 ! BEGIN
5210 134 18 ! ! alloc ( msg, ipool, main.s^);
5220 135 19 ! ! msg^.u1:= read_at;
5230 136 20 ! ! msg^.u3:= lam_route;
5240 137 21 ! ! msg^.u4:= #h40 + read_at;
5250 138 22 ! ! signal ( msg, driv^);
5260 139 23 ! END;
5270 140 24 !
5280 141 25 !
\f
konsollst 81.03.09. 10.03. page 7
6010 142 26 !
6020 143 27 ! (*------ main loop ------------*)
6030 144 28 !
6040 145 29 ! REPEAT
6050 146 30 ! ! wait ( msg, main.w^);
6060 147 31 ! ! CASE msg^.u3 OF
6070 148 32 ! ! !
6080 149 33 ! ! ! lam_route:
6090 150 34 ! ! ! BEGIN
6100 151 35 ! ! ! ! LOCK msg AS at: atbuffer DO
6110 152 36 ! ! ! ! BEGIN
6120 153 37 ! ! ! ! ! data0:= at.b0;
6130 154 38 ! ! ! ! ! data1:= at.b1;
6140 155 39 ! ! ! ! END;
6150 156 40 ! ! ! ! msg^.u2:= inchn;
6160 157 41 ! ! ! ! signal ( msg, driv^);
6170 158 42 ! ! ! ! printchar ( tty, data0);
6180 159 43 ! ! ! ! printchar ( tty, data1);
6190 160 44 ! ! ! END
6200 161 45 ! ! ! OTHERWISE
6210 162 46 ! ! ! BEGIN
6220 163 47 ! ! ! ! IF msg^.u4 = book THEN
6230 164 48 ! ! ! ! LOCK msg AS at: atbuffer DO
6240 165 49 ! ! ! ! BEGIN
6250 166 50 ! ! ! ! ! inchn:= at.b0 MOD 16;
6260 167 51 ! ! ! ! ! outchn:= at.b1 MOD 16;
6270 168 52 ! ! ! ! END;
6280 169 53 ! ! ! ! return ( msg)
6290 170 54 ! ! ! END
6300 171 55 ! ! !
6310 172 56 ! ! END (* case *)
6320 173 57 ! !
6330 174 58 ! UNTIL false
6340 175 59 !
6350 176 60 END . (* of konsol converter *)
6360 177
6370 178
6380 179
\f
konsollst 81.03.09. 10.03. page 8
0 61
1 16* 33* 55* 68 81 82 101 105 132
2 34*
10 32*
16 41* 120 126 127 130 166 167
80 16*
alloc 63 134
as 79: 104: 124: 151: 164:
at 124: 126 127 151: 153 154 164: 166 167
atbuffer 19* 46* 124 151 164
b0 20* 126 153 166
b1 20* 127 154 167
book 35* 123 163
buf 79: 81 82 104: 104
bufs 54* 61 68= 68
byte 16* 20* 41* 44* 56* 93*
ch 93* 104 107
cur 25* 63 64 65 66 67 79: 84 85 98 100 104:
data0 43* 153= 158
data1 44* 154= 159
driv 5* 85 138 157
end_of_line 32* 107
f 53* 59 75* 77 93* 95 107
false 174
first 15* 81=
free 24* 63 67 100
h 42* 132=
h40 66 137
hc3 35*
ibufs 33* 46* 132
inchn 40* 120= 126= 130 156 166=
integer 15* 26* 42* 54*
ipool 46* 134
konsol 3*
lam_route 65 136 149:
last 15* 82=
lock 79: 104: 124: 151: 164:
main 4* 122 134 146
msg 45* 122 123 124: 129 134 135 136 137 138 146 147 151: 156 157
163 164: 169
next 15* 26* 82 101= 104 105= 105 106
obufs 34* 47* 118
openfile 52* 118
opool 47* 118
\f
konsollst 81.03.09. 10.03. page 9
outblock 75* 107
outchn 41* 84 127= 167=
pool 46* 47* 55*
printchar 93* 158 159
process 3*
read_at 135 137
reference 25* 45*
reso 55* 63
return 129 169
s 134
semaphore 24*
sempointer 5*
signal 67 85 138 157
text 16* 104=
top 26* 106
ts_pointer 4*
tty 48* 118 158 159
ttybuffer 14* 47* 79 104
ttyzone 23* 48* 53* 75* 93*
u1 64= 135=
u2 84= 156=
u3 65= 136= 147
u4 66= 123 137= 163
v1 56* 64 66
version 10*
w 122 146
wait 100 122 146
write_tty 118
\f
konsollst 81.03.09. 10.03. page 10
ARRAY 1
BEGIN 16
CASE 1
CONST 2
DO 10
END 20
FOR 1
IF 4
MOD 4
NIL 1
OF 4
OR 1
OTHERWISE 1
PROCEDURE 3
RECORD 3
REPEAT 2
THEN 4
TO 1
TYPE 1
UNTIL 2
VAR 7
WHILE 1
WITH 3
konsol
81.03.09. 10.03. pascal80 version 1981.02.09
name headline beginline endline appetite(words)
openfile 56 61 71 : 14
outblock 75 79 87 : 8
printchar 93 99 109 : 12
konsol 8 118 176 : 99
code: 1 . 234 = 1234 bytes
end of PASCAL80 compilation
end
blocksread = 53
«eof»