
The C&VG Solution (Basic) Listing
The code produced for C&VG magazine from the puzzles author, the output was on a black and white monitor and simple text formatting control codes were used to place text and simple images on the screen. The listing was expanded as it was compressed in the magazine - probably to reduce the page requirements for the article.
The Commodore PET was an early computer launched in 1977 - an 8 bit machine based on a MOS Technology 6502 chip. The machine was fitted with Basic in ROM so that users only had to load and save data by cassette tape. Memory options included 8Kb, 16Kb and 32Kb.
You will find in the code many characters that were built into the ROM set to control the position and movement of the cursor around the screen. Many computer, at the time had similar systems built in as pixel addressing was very limited and not used graphically.
100 REM THEPUZZLE6 23SEPT1980
110 A$="M":B$="X":C$="X":D$="X":N=1:RD=0:RC=0:RB=0:RA=0:N4=0:N3=0:N2=0:N1=0
120 DIM A$(3), B$(3), D$(3)
130 I=0:SF=0:AR$="X"F=0:T=TI:S=0:FW$="
"
140 GOSUB 710
150 SF=SF+1: ON SF GOSUB 410,420,430,440,450,340: REM** SIX CARD LOCATIONS
160 FOR N1 = 0 TO 3: FOR N2 = 0 TO 3: FOR N3 = 0 TO 3: FOR N4 = 0 TO 3: REM*** 256 DATA PERMUTATIONS
170 A$ = A$(N1): B$ = B$(N2): C$ = C$(N3): D$ = D$(N4)
180 FOR A = 0 TO 3: FOR B = 0 TO 3: FOR C = 0 TO 3: FOR D = 0 TO 3: REM*** 256 ROTATIONS OF DATA
190 GET X$: IF X$ = "G" THEN GOSUB 490
200 IF MID$(A$,3,1) <> MID$(B$,8,1) THEN 290
210 IF MID$(A$,4,1) <> MID$(B$,7,1) THEN 290
220 IF MID$(B$,5,1) <> MID$(C$,2,1) THEN 290
230 IF MID$(B$,6,1) <> MID$(C$,1,1) THEN 290
240 IF MID$(C$,7,1) <> MID$(D$,4,1) THEN 290
250 IF MID$(C$,8,1) <> MID$(D$,3,1) THEN 290
260 IF MID$(D$,1,1) <> MID$(A$,6,1) THEN 290
270 IF MID$(D$,2,1) <> MID$(A$,5,1) THEN 290
280 GOSUB 460
290 N = N + 1
300 A$ = MID$(A$,3,6)+LEFT$(A$,2): NEXT RD: B$ = MID$(B$,3,6)+LEFT$(D$,2): NEXT RC
310 C$ = MID$(C$,3,6)+LEFT$(C$,2): NEXT RB: D$ = MID$(D$,3,6)+LEFT$(D$,2): NEXT RA
320 NEXT N4, N3, N2, N1
330 GOTO 150
340 GOSUB 470: PRINT "FINISHED IN "(TI-T)/360" MINUTES"
350 END
360 DATA 12315164, 54435262, 46743412, 14255463
370 DATA 23456545, 35414213, 35152452, 17214732
380 DATA 41172624, 23153665, 26365653, 62424647
390 DATA 56317164, 21134314, 25517471, 34325363
400 RESTORE: FOR I = 0 TO 3: READ A$(I),B$(I), C$(I), D$(I): NEXT I: AR$ = "ABCD" RETURN
410 RESTORE: FOR I = 0 TO 3: READ A$(I),B$(I), C$(I), D$(I): NEXT I: AR$ = "ABDC" RETURN
420 RESTORE: FOR I = 0 TO 3: READ A$(I),B$(I), C$(I), D$(I): NEXT I: AR$ = "ACBD" RETURN
430 RESTORE: FOR I = 0 TO 3: READ A$(I),B$(I), C$(I), D$(I): NEXT I: AR$ = "ADBC" RETURN
440 RESTORE: FOR I = 0 TO 3: READ A$(I),B$(I), C$(I), D$(I): NEXT I: AR$ = "ACDB" RETURN
450 RESTORE: FOR I = 0 TO 3: READ A$(I),B$(I), C$(I), D$(I): NEXT I: AR$ = "ADCB" RETURN
460 S = S + 1: PRINT ",
SOLUTION!! PRESS 'C' TO CONT"
470 IF P$ = "P" THEN OPEN 4,4: CMD 4: F = 1: GOTO 490
480 GET X$: IF X£ <> "C" THEN 480
490 PRINT ""
500 PRINT ""N1""LEFT$(A$,2)""LEFT$(B$,2)"";
N2:PRINT "";
510 PRINT ""RIGHT$(A$,1)""MID$(A$,3,1)"";
520 PRINT RIGHT$(B$,1)""MID$(B$,3,1): PRINT "";
530 PRINT ""MID$(A$,7,1)""MID$(A$,4,1)"";
540 PRINT MID$(B$,7,1)""MID$(B$,4,1):PRINT">";
550 PRINT ""MID$(A$,6,1)MID$(A$,5,1)""LEFT$(AR$,1)""MID$(AR$,2,1);
560 PRINT ""MID$(6,1)MID$(B$,5,1):PRINT "";
570 PRINT ""+LEFT$(D$,2)""RIGHT$(AR$,1)""MID$(AR$,3,1)"";
580 PRINT LEFT$(C$2):PRINT "HOM>";
590 PRINT ""+RIGHT$(D$,1)""MID$(D$,3,1)""RIGHT$(C$,1)"";
600 PRIINT MID$(C$,3,1):PRINT "";
610 PRINT ""MID$(D$,7,1)""MID$(D$,4,1)""MID$C$,7,1)"";
620 PRINT MID$C$,4,1):PRINT "