100 REM SAVE LOGIKTST 101 REM +++++++++++++++++++++++++++++++ 102 REM +++++++++++++++++++++++++++++++ 103 P%=0% : R1$='P A T S Y' : REM +++++ 104 L%=0% : R2$='Logiktest' : REM +++++ 105 M%=0% : R3$='=========' : REM +++++ 106 REM ++ (C) 1981 By Michael Smith ++ 107 REM ++ Published March 1982 ++ 108 REM ++ in Practical Computing, ++ 109 REM ++ IPC Electrical Electronic ++ 110 REM ++ Press Ltd, UK ++ 111 REM +++++++++++++++++++++++++++++++ 112 REM ++ \versatt till ABC80/32K ++ 113 REM ++ 820322 av Arne Sp}ngtorp ++ 114 REM ++ <1218> Sturegatan 9 ++ 115 REM ++ 632 30 E-tuna ++ 116 REM ++ 016/42 45 04 ++ 117 REM +++++++++++++++++++++++++++++++ 118 REM +++++++++++++++++++++++++++++++ 119 DATA '?!?!?!?!?!?!?!?!?!?!?' 120 DATA '!?!?!?!?!?!?!?!?!?!?!' 121 DATA '?! !?' 122 DATA '!? ?!' 123 DATA '?! T Y !?' 124 DATA '!? ?!' 125 DATA '?! R U !?' 126 DATA '!? ?!' 127 DATA '?! !?' 128 DATA '!? F X J ?!' 129 DATA '?! !?' 130 DATA '!? ?!' 131 DATA '?! V N !?' 132 DATA '!? * * ?!' 133 DATA '?! B !?' 134 DATA '!? * ?!' 135 DATA '?! !?' 136 DATA '!?!?!?!?!?!?!?!?!?!?!' 137 DATA '?!?!?!?!?!?!?!?!?!?!?' 138 DIM P$(18%)=21% : REM PROBLEMBILD 139 FOR I%=0% TO 18% : READ P$(I%) : NEXT I% 140 DIM H$(9%,4%)=80% : REM BESKRIVNING 141 DATA 'Bokstaven X skall "t{ndas" med hj{lp av' 142 DATA 'endast en eller flera av V, B och N. ' 143 DATA 'Vid best{mmandet av vilken kombination' 144 DATA 'som }stadkommer detta, kan alla bokst{-' 145 DATA 'ver t{ndas.' 146 DATA 'Vi har dock tv} "tider" : DAG och NATT ' 147 DATA 'Det skiftas mellan dessa med 2-3 sek ' 148 DATA 'intervall. 149 DATA 'Vissa bokst{ver kan bara t{ndas p} dag-' 150 DATA 'tid och andra allts} bara p} nattid. ' 151 DATA 'Varje t{nd bokstav p}verkar en eller ' 152 DATA 'flera av de andra bokst{verna enligt ' 153 DATA 'de samband som visas till h|ger. ' 154 DATA 'De p} dagtid t{nda bokst{verna sl{cks ' 155 DATA 'vid |verg}ng till nattid och vice versa' 156 DATA 'Tre typer av samband finns : ' 157 DATA ' 1. En p} dagtid t{nd bokstav t{nder ' 158 DATA ' en eller flera andra p} n{sta natt-' 159 DATA ' tid och vice versa. 160 DATA ' ' 161 DATA ' 2. Tv} p} dagtid t{nda bokst{ver ' 162 DATA ' t{nder tillsammans (men ej var f|r ' 163 DATA ' sig) en eller flera andra bokst{ver' 164 DATA ' p} n{sta nattid och vice versa. ' 165 DATA ' ' 166 DATA ' 3. En p} dagtid t{nd bokstav hindrar ' 167 DATA ' en eller flera andra bokst{ver ' 168 DATA ' fr}n att t{ndas p} n{sta nattid ' 169 DATA ' och vice versa. 170 DATA ' ' 171 DATA 'UPPGIFTEN {r allts} att t{nda ' 172 DATA 'V, B och N i r{tt tid och r{tt kombi- ' 173 DATA 'nation s} att X t{ndes!' 174 DATA 'Varje problem skall g|ras 3 g}nger ' 175 DATA 'i f|ljd utan fel - (slumpeliminering)! ' 176 FOR I1%=0% TO 6% : FOR I2%=0% TO 4% 177 READ H$(I1%,I2%) : NEXT I2% : NEXT I1% 178 R4$='SAMBAND' : R5$='Om D}' 179 R6$='=======' 180 DIM F$(9%,11%)=1%,T$(9%,11%)=1% 181 DATA V,F,B,T,B,J,N,R,J,X,U,J,U,T,Y,J,T,X,R,T,F,T,-,- 182 DATA V,U,B,U,B,J,N,R,N,T,J,X,U,X,Y,X,T,F,R,F,F,Y,-,- 183 DATA V,F,V,J,B,T,B,U,N,J,J,X,U,Y,Y,R,T,Y,R,X,F,X,-,- 184 DATA V,F,V,U,B,Y,N,R,N,Y,J,X,U,T,Y,X,T,J,R,X,F,T,-,- 185 DATA V,X,B,R,N,F,N,J,J,U,U,X,Y,U,T,X,R,Y,F,T,-,-,-,- 186 DATA V,R,V,T,B,X,N,U,J,Y,U,J,Y,X,T,F,R,Y,F,X,-,-,-,- 187 DATA V,T,V,X,B,Y,B,U,N,F,N,R,J,Y,U,X,Y,X,T,U,R,T,F,J 188 DATA V,T,V,U,B,F,B,X,N,Y,N,J,J,X,U,F,Y,X,T,R,R,J,F,Y 189 DATA V,R,B,N,B,J,N,Y,J,X,U,X,Y,X,Y,R,T,Y,T,U,R,U,F,T 190 DATA V,J,B,U,N,T,N,R,J,X,J,U,U,Y,Y,X,T,F,R,X,F,Y,F,J 191 FOR I1%=0% TO 9% : FOR I2%=0% TO 11% 192 READ F$(I1%,I2%) : READ T$(I1%,I2%) 193 NEXT I2% : NEXT I1% 194 DIM B%(9%),C%(9%) : REM LAMP 195 T1%=0% : R%=1% : K%=10% 196 A1=32080 : A2=32085 : REM DAG/NATT 197 DIM A3(10%) : REM PROBLEMNRADRESS 198 DATA 32264,32392,32520,32648,31792,31920,32048,32176,32304,32432,32560 199 FOR I%=0% TO 10% : READ A3(I%) : NEXT I% 200 DIM A(12%) : REM LAMPADRESSER 201 DATA 31932 ,32278 ,32537 ,31938 ,32320 ,32572 ,32312 ,31926 ,32527,32274 202 FOR I%=0% TO 9% : READ A(I%) : NEXT I% 203 DIM T%(9,9) : REM DAG/NATTLAMPA 204 DATA 1,1,2,2,1,2,1,1,2 205 DATA 2,2,2,1,1,1,1,2,2 206 DATA 1,2,2,1,1,1,2,2,2 207 DATA 2,2,2,1,1,1,2,2,1 208 DATA 1,2,1,2,1,2,1,2,2 209 DATA 2,2,1,1,2,2,2,1,1 210 DATA 2,2,1,1,1,2,2,2,1 211 DATA 2,2,2,1,2,1,1,1,2 212 DATA 2,2,2,1,1,2,2,1,1 213 DATA 2,1,2,1,2,1,1,2,2 214 FOR I1%=0% TO 9% : FOR I2%=1% TO 9% 215 READ T%(I1%,I2%) 216 NEXT I2% : NEXT I1% 217 REM +++++++++++++++++++++++++++++ 218 REM +++ HUVUDRUTIN ++++++++++++++ 219 REM +++++++++++++++++++++++++++++ 220 GOSUB 237 : REM MENY / PROBLEM 221 REM --- ARBETSLOOP --------------- 222 GOSUB 270 : REM FIXA F\R DAGTID 223 GOSUB 273 : REM SL[CKA LAMPOR 224 GOSUB 275 : REM VISA DAGRELATION 225 GOSUB 332 : REM S\KA RELATIONER 226 GOSUB 335 : REM AVS\K TANGENTBORD 227 IF M% 220 : REM TILL NYTT PROBLEM 228 GOSUB 364 : REM FIXA F\R NATTID 229 GOSUB 273 : REM SL[CKA LAMPOR 230 GOSUB 367 : REM VISA NATTRELATION 231 GOSUB 332 : REM S\KA RELATIONER 232 GOSUB 335 : REM AVS\K TANGENTBORD 233 IF M% 220 ELSE 221 : REM NYTT/FORTS 234 REM ++++++++++++++++++++++++++++++ 235 REM +++ SUBRUTINER +++++++++++++++ 236 REM ++++++++++++++++++++++++++++++ 237 REM +++ MENY OCH PROBLEM +++++++++ 238 ; CHR$(12%) 239 FOR I%=0% TO 18% : ; CUR(I%,10%)P$(I%) : NEXT I% 240 ; CUR(0%,0%)R3$ : ; CUR(1%,0%)R1$ 241 ; CUR(2%,0%)R2$ : ; CUR(3%,0%)R3$ 242 ; CUR(4%,0%)'Problem 0' 243 ; CUR(5%,0%)' " 1' 244 ; CUR(6%,0%)' " 2' 245 ; CUR(7%,0%)' " 3' 246 ; CUR(8%,0%)' " 4' 247 ; CUR(9%,0%)' " 5' 248 ; CUR(10%,0%)' " 6' 249 ; CUR(11%,0%)' " 7' 250 ; CUR(12%,0%)' " 8' 251 ; CUR(13%,0%)' " 9' 252 ; CUR(14%,0%)'Beskriv H' 253 ; CUR(16%,0%)'Ange nr ' 254 ; CUR(18%,0%)'Dag /Natt' 255 ; CUR(0%,32%)R6$ : ; CUR(1%,32%)R4$ 256 ; CUR(2%,32%)R5$ : ; CUR(3%,32%)R6$ : ; CUR(18%,32%)R6$ 257 ; CUR(16%,8%); : GET G$ 258 IF G$='H' OR G$='h' GOSUB 423 : GOTO 257 259 ONERRORGOTO 257 : P%=ASC(G$)-48% 260 ONERRORGOTO 0 : IF P%<0% OR P%>9% 257 261 POKE A3(P%),PEEK(A3(P%)) OR 128% 262 FOR I%=0% TO 11% : B$=F$(P%,I%) 263 IF B$='-' 268 ELSE ; CUR(I%+5%,32%)B$; 264 IF B$='V' OR B$='B' OR B$='N' ; ' *'; ELSE ; ' -'; 265 B$=T$(P%,I%) : ; '-> 'B$; 266 IF B$='X' ; '' ELSE ; ' ' 267 NEXT I% 268 ; CUR(20%,10%)'L Y C K A T I L L !' 269 RETURN 270 REM +++ FIXA F\R DAGTID +++++++++ 271 T1%=1% : FOR A=A2 TO A2+3 : POKE A,PEEK(A) AND 127% : NEXT A 272 FOR A=A1 TO A1+3 : POKE A,PEEK(A) OR 128% : NEXT A : RETURN 273 REM +++ SL[CKA LAMPOR ++++++++++++ 274 FOR I%=0% TO 9% : POKE A(I%),PEEK(A(I%)) AND 127% : NEXT I% : RETURN 275 REM +++ VISA DAGRELATIONER +++++++ 276 ON P%+1% GOTO 277,282,286,290,294,299,304,309,314,319 277 REM --- PROBLEM NR 0 DAG --------- 278 IF ((NOT B%(3%)) AND B%(9%)) L%=0% : GOSUB 324 279 IF B%(4%) L%=8% : GOSUB 324 : C%(L%)=1% 280 IF B%(6%) L%=7% : GOSUB 324 : C%(L%)=1% 281 RETURN 282 REM --- PROBLEM NR 1 DAG --------- 283 IF B%(1%) AND B%(2%) AND NOT B%(3%) L%=0% : GOSUB 324 284 IF B%(8%) AND B%(9%) L%=7% : GOSUB 324 : C%(L%)=1% 285 RETURN 286 REM --- PROBLEM NR 2 DAG --------- 287 IF B%(2%) AND B%(9%) L%=1% : GOSUB 324 : C%(L%)=1% 288 IF B%(3%) AND B%(8%) AND NOT B%(7%) L%=0% : GOSUB 324 289 RETURN 290 REM --- PROBLEM NR 3 DAG --------- 291 IF B%(1%) AND B%(3%) AND NOT B%(8%) L%=0% : GOSUB 324 292 IF B%(2%) AND B%(7%) L%=9% : GOSUB 324 : C%(L%)=1% 293 RETURN 294 REM --- PROBLEM NR 4 DAG --------- 295 IF B%(6%) AND B%(9%) AND NOT B%(2%) L%=0% : GOSUB 324 296 IF B%(4%) L%=3% : GOSUB 324 : C%(L%)=1% : L%=7% : GOSUB 324 : C%(L%)=1% 297 IF B%(8%) L%=1% : GOSUB 324 : C%(L%)=1% 298 RETURN 299 REM --- PROBLEM NR 5 DAG --------- 300 IF B%(5%) AND B%(7%) AND NOT B%(1%) L%=0% : GOSUB 324 301 IF B%(2%) L%=3% : GOSUB 324 : C%(L%)=1% 302 IF B%(6%) L%=8% : GOSUB 324 : C%(L%)=1% : L%=9% : GOSUB 324 : C%(L%)=1% 303 RETURN 304 REM --- PROBLEM NR 6 DAG --------- 305 IF B%(1%) AND B%(6%) AND NOT B%(2%) L%=0% : GOSUB 324 306 IF B%(6%) AND B%(8%) L%=9% : GOSUB 324 : C%(L%)=1% 307 IF B%(7%) L%=3% : GOSUB 324 : C%(L%)=1% 308 RETURN 309 REM --- PROBLEM NR 7 DAG --------- 310 IF B%(3%) AND B%(5%) AND NOT B%(1%) L%=0% : GOSUB 324 311 IF B%(2%) AND B%(5%) L%=7% : GOSUB 324 : C%(L%)=1% 312 IF B%(9%) L%=8% : GOSUB 324 : C%(L%)=1% 313 RETURN 314 REM --- PROBLEM NR 8 DAG --------- 315 IF B%(1%) AND B%(3%) AND NOT B%(2%) L%=0% : GOSUB 324 316 IF B%(1%) AND B%(6%) L%=8% : GOSUB 324 : C%(L%)=1% 317 IF B%(7%) L%=9% : GOSUB 324 : C%(L%)=1% 318 RETURN 319 REM --- PROBLEM NR 9 DAG --------- 320 IF B%(3%) AND B%(8%) AND NOT B%(1%) L%=0% : GOSUB 324 321 IF B%(3%) AND B%(5%) L%=2% : GOSUB 324 : C%(L%)=1% 322 IF B%(9%) L%=7% : GOSUB 324 : C%(L%)=1% 323 RETURN 324 REM +++ T[NDA EN LAMPA +++++++++++ 325 POKE A(L%),PEEK(A(L%)) OR 128% 326 IF L%<>0% 331 327 ; CUR(22%,0%); 328 ; '=Forts / =MENY'; 329 GET G$ 330 ; CUR(22%,0%)STRING$(39%,32%); 331 RETURN 332 REM +++ S\KA RELATIONER ++++++++++ 333 FOR I%=1% TO 9% : IF C%(I%)=0% B%(I%)=0% ELSE B%(I%)=1% 334 C%(I%)=0% : NEXT I% : RETURN 335 REM +++ AVS\KA TANGENTBORD +++++++ 336 M%=0% 337 FOR T%=1% TO 200% 338 POKE 65013,0 : L%=0% 339 A%=INP(56)-128% 340 IF A%=13% THEN M%=1% : RETURN 341 IF A%<>32% 343 342 FOR L%=1% TO 9% : B%(L%)=0% : NEXT L% : GOTO 363 343 IF A%=89% L%=1% : GOTO 362 344 IF A%=121% L%=1% : GOTO 362 345 IF A%=85% L%=2% : GOTO 362 346 IF A%=117% L%=2% : GOTO 362 347 IF A%=74% L%=3% : GOTO 362 348 IF A%=106% L%=3% : GOTO 362 349 IF A%=78% L%=4% : GOTO 362 350 IF A%=110% L%=4% : GOTO 362 351 IF A%=66% L%=5% : GOTO 362 352 IF A%=98% L%=5% : GOTO 362 353 IF A%=86% L%=6% : GOTO 362 354 IF A%=118% L%=6% : GOTO 362 355 IF A%=70% L%=7% : GOTO 362 356 IF A%=102% L%=7% : GOTO 362 357 IF A%=82% L%=8% : GOTO 362 358 IF A%=114% L%=8% : GOTO 362 359 IF A%=84% L%=9% : GOTO 362 360 IF A%=116% L%=9% : GOTO 362 361 GOTO 363 362 IF T%(P%,L%)=T1% B%(L%)=1% : GOSUB 324 363 NEXT T% : RETURN 364 REM +++ FIXA F\R NATTID ++++++++++ 365 T1%=2% : FOR A=A1 TO A1+3 : POKE A,PEEK(A) AND 127% : NEXT A 366 FOR A=A2 TO A2+3 : POKE A,PEEK(A) OR 128% : NEXT A : RETURN 367 REM +++ VISA NATTRELATIONER ++++++ 368 ON P%+1% GOTO 369,375,381,387,393,398,403,408,413,418 369 REM --- PROBLEM NR 0 NATT -------- 370 IF B%(1%) L%=3% : GOSUB 324 : C%(L%)=1% 371 IF B%(2%) L%=9% : GOSUB 324 : C%(L%)=1% : L%=3% : GOSUB 324 : C%(L%)=1% 372 IF B%(5%) L%=3% : GOSUB 324 : C%(L%)=1% : L%=9% : GOSUB 324 : C%(L%)=1% 373 IF B%(7%) AND B%(8%) L%=9% : GOSUB 324 : C%(L%)=1% 374 RETURN 375 REM --- PROBLEM NR 1 NATT -------- 376 IF B%(4%) L%=8% : GOSUB 324 : C%(L%)=1% : L%=9% : GOSUB 324 : C%(L%)=1% 377 IF B%(5%) L%=2% : GOSUB 324 : C%(L%)=1% : L%=3% : GOSUB 324 : C%(L%)=1% 378 IF B%(6%) L%=2% : GOSUB 324 : C%(L%)=1% 379 IF B%(7%) L%=1% : GOSUB 324 : C%(L%)=1% 380 RETURN 381 REM --- PROBLEM NR 2 NATT -------- 382 IF B%(1%) L%=8% : GOSUB 324 : C%(L%)=1% 383 IF B%(4%) L%=3% : GOSUB 324 : C%(L%)=1% 384 IF B%(5%) L%=2% : GOSUB 324 : C%(L%)=1% : L%=9% : GOSUB 324 : C%(L%)=1% 385 IF B%(6%) L%=3% : GOSUB 324 : C%(L%)=1% : L%=7% : GOSUB 324 : C%(L%)=1% 386 RETURN 387 REM --- PROBLEM NR 3 NATT -------- 388 IF B%(4%) L%=1% : GOSUB 324 : C%(L%)=1% : L%=8% : GOSUB 324 : C%(L%)=1% 389 IF B%(5%) L%=1% : GOSUB 324 : C%(L%)=1% 390 IF B%(6%) L%=2% : GOSUB 324 : C%(L%)=1% : L%=7% : GOSUB 324 : C%(L%)=1% 391 IF B%(9%) L%=3% : GOSUB 324 : C%(L%)=1% 392 RETURN 393 REM --- PROBLEM NR 4 NATT -------- 394 IF NOT B%(1%) AND B%(3%) L%=2% : GOSUB 324 : C%(L%)=1% 395 IF B%(5%) L%=8% : GOSUB 324 : C%(L%)=1% 396 IF B%(7%) L%=9% : GOSUB 324 : C%(L%)=1% 397 RETURN 398 REM --- PROBLEM NR 5 NATT -------- 399 IF B%(4%) L%=2% : GOSUB 324 : C%(L%)=1% 400 IF B%(9%) L%=7% : GOSUB 324 : C%(L%)=1% 401 IF NOT B%(3%) AND B%(8%) L%=1% : GOSUB 324 : C%(L%)=1% 402 RETURN 403 REM --- PROBLEM NR 6 NATT -------- 404 IF B%(3%) AND B%(5%) L%=1% : GOSUB 324 : C%(L%)=1% 405 IF B%(4%) L%=7% : GOSUB 324 : C%(L%)=1% : L%=8% : GOSUB 324 : C%(L%)=1% 406 IF NOT B%(9%) AND B%(2%) L%=2% : GOSUB 324 : C%(L%)=1% 407 RETURN 408 REM --- PROBLEM NR 7 NATT -------- 409 IF B%(4%) AND B%(8%) L%=3% : GOSUB 324 : C%(L%)=1% 410 IF NOT B%(7%) AND B%(4%) L%=1% : GOSUB 324 : C%(L%)=1% 411 IF B%(6%) L%=2% : GOSUB 324 : C%(L%)=1% : L%=9% : GOSUB 324 : C%(L%)=1% 412 RETURN 413 REM --- PROBLEM NR 8 NATT -------- 414 IF B%(4%) AND B%(9%) L%=1% : GOSUB 324 : C%(L%)=1% 415 IF B%(5%) L%=3% : GOSUB 324 : C%(L%)=1% : L%=7% : GOSUB 324 : C%(L%)=1% 416 IF NOT B%(8%) AND B%(9%) L%=2% : GOSUB 324 : C%(L%)=1% 417 RETURN 418 REM --- PROBLEM NR 9 NATT -------- 419 IF NOT B%(2%) AND B%(7%) L%=1% : GOSUB 324 : C%(L%)=1% 420 IF B%(4%) L%=8% : GOSUB 324 : C%(L%)=1% : L%=9% : GOSUB 324 : C%(L%)=1% 421 IF B%(6%) AND B%(7%) L%=3% : GOSUB 324 : C%(L%)=1% 422 RETURN 423 REM --- BESKRIVNING -------------- 424 FOR X1%=0 TO 6% : FOR X2%=0 TO 4% 425 ; CUR(19%+X2%,0%)H$(X1%,X2%); : NEXT X2% 426 ; CUR(16%,8%); : GET G$ 427 IF ASC(G$)=13% 429 428 GOSUB 429 : NEXT X1% 429 FOR X3%=19% TO 23% : ; CUR(X3%,0%)STRING$(39%,32%); : NEXT X3% : RETURN 430 REM ++++++++++++++++++++++++++++++ 431 REM +++ PROGRAMSLUT ++++++++++++++ 432 REM ++++++++++++++++++++++++++++++