|
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»