Classic Computer Magazine Archive COMPUTE! ISSUE 59 / APRIL 1985 / PAGE 44

Mindbusters

Ned W. Schultz

Here's a graphics puzzle game that is both challenging and unusually fascinating. The program was originally written for the Commodore 64, and we've added versions for the unexpanded VIC-20, Atari, Apple II-series computers, IBM PC (color or monochrome), PCjr, and TI-99/4A.


Are you ready to pit your brain against the computer's? "Mindbusters" presents you with three graphics puzzles that are guaranteed to keep your mind's microprocessors and memory chips whirring for hours.
    After you type, save, and run your copy of Mindbusters, you can choose to solve one of three puzzles: a mind bender, a mind bruiser, or a mind blower. Warm up with the mind bender-it's the easiest. When you're prepared to press your brain to its limits, you're ready for the mind blower.
    Following your selection, the program constructs a puzzle and displays it at the up per-left corner of the screen. Your job is to match that puzzle in the workspace at the lower-right corner of the screen. What's more, you try to solve the puzzle in as little time as possible. A timer ticks away as you work. There's no limit to how much time you can take, but the timer lets you compare your progress to a previous performance, or against another player if you wish. Your fastest time during the current session will be displayed on the screen.
    Each puzzle is composed of several horizontal rows of odd shapes. A tiny arrow to the right of the workspace points to the row you're currently working on. To work on different rows, you can move the arrow up and down with the I and M keys (use the up/down cursor keys on the IBM and TI, and be sure to press ALPHA LOCK on the TI). To move the row of shapes next to the arrow left or right, press the J or K key (left/right cursor keys on the IBM and TI). When you think you've matched a row to the puzzle pattern, start working on another row.
    When you succeed in correctly matching all the rows, the program automatically sig nals that you've solved the puzzle. Then you can play again if you like.

Helpful Hints
Because Mindbusters can generate a tremendous number of different puzzles, there are very few tricks to mastering it. I suggest you work from top to bottom or vice versa. The best tip I can offer after hours of my own mindbusting is to concentrate, concentrate, concentrate.
    Important: When typing in the program, be extra careful with the long strings of charac ters at the beginning of the listing. These strings become the puzzle shapes. If you mistype or transpose a couple of characters when typing these strings, the program may still run, but it won't know when you've solved the puzzle. If you're using COMPUTO's "Automatic Proofreader" to enter the listing, remember that the Proofreader (except the IBM version) does not catch character-transposition errors.

Program 1: Mindbusters For Commodore 64
Please refer to "COMPUTE!'s Guide To Typing In Programs" before entering this listing.

10 S=54272:R$="000000":FORI=1TO4:READKE(I
   ):NEXT                        :rem 238
20 PRINTCHR$(14)CHR$(8)           :rem 48
30 A$="XVAWVBWWAXNAWVBWWAXAWVBWANANAVVWAN
   NNXAWVWAXWAXCVNVNFIAIAVBNWCCXVNVAWNW"
                                  :rem 57
40 TM$="":FORT=1TO68:TM=ASC(MID$(A$,I,1))
   +97:TM$=TM$+CHR$(TM):NEXT:A$=TM$
                                  :rem 45
50 B$="12*OZ*Z*,0<2Z/*/OO,Z/02ZZ2Z*1,<Z-2
   1,-2*Z<OZ-210*,Z*Z*1<122Z<Zl*<Z,*Z"
                                 :rem 167
60 TM$="":FORI=1TO68:TM=ASC(MID$(B$,I,1))
   +129:TM$=TM$+CHR$(TM):NEXT:B$=TM$
                                  :rem 93
70 C$="ZZ$$$ZZ$$Z$Z$Z$Z$ZZZZZ$Z$$$Z$$$Z$Z
   $$$$Z$Z$ZZZZ$Z$Z$$$Z$ZZZZZZ$$Z$$Z$"
                                  :rem 11
80 TM$="":FORI=1TO68:TM=ASC(MID$(C$,I,1))
   +133:TM$=TM$+CHR$(TM):NEXT:C$=TM$
                                  :rem 92
90 POKE53281,1:PRINT"{CLR}{PUR}**********
   ******************************";
                                 :rem 109
100 PRINT"E4~{RVS}{14 SPACES}MINDBUSTERS
    {15 SPACES}{OFF}";           :rem 168
110 PRINT"{PUR}**************************
    **************":GOSUB460:POKE53280,7
                                  :rem 33
120 PRINT"{HOME}(3 D04JN}{4 RIGHT}[<45>]
    [<12>]":PRINT"{3 RIGHT}[<N>]"SPC(12)"
    [<H>]{2 RIGHT}USE I, J, K AND M"
                                 :rem 132
130 PRINT"{3 RIGHT}[<N>]"SPC(12)"[<H>]":PRINT
    "{3 RIGHT}[<N>]"SPC(12)"[<H>]{2 RIGHT}KEY
    S TO MATCH THIS"              :rem 84
140 PRINT"{3 RIGHT}[<N>]"SPC(12)"[<H>]":PRINT
    "{3 RIGHT}FN2"SPC(12)"@H2{2 RIGHT}PAT
    TERN AS FAST"                :rem 177
150 PRINT"{3 RIGHT}[<N>]"SPC(12)"[<H>]":PRINT
    "{3 RIGHT}[<N>]"SPC(12)"[<H>](2 RIGHT}AS
    {SPACE}YOU CAN!!!!"          :rem 185
160 PRINT"{3 RIGHT}[<N>]"SPC(12)"[<H>]":PRINT
    "{4 RIGHT}[<12 Y>]"           :rem 14
170 POKE214,3:PRINT              :rem 132
180 FORN=1TO8:PP(N)=INT(RND(1)*56)+1:PRIN
    T"{4 RIGHT}"CHR$(Z)MID$(D$,PP(N),12)
                                  :rem 60
190 NEXT:PRINT:PRINTTAB(19)"{BLK}[<12 P>]"
                                   :rem 1
200 FORN=1TO8:PRINTTAB(18)"[<N>]"SPC(12)"
    [<H>]":NEXT:PRINTTAB(19)"[<12 Y>]"
                                 :rem 146
210 POKE214,13:PRINT             :rem 176
220 FORN=1TO8:P(N)=INT(RND(1)*56)+l:PRINT
    TAB(19)CHR$(Z)MID$(D$,P(N),12):NEXT
                                 :rem 234
230 AL=1616:POKEAL,31:POKEAL+S,0:AC=1:TI$
    ="000000"                     :rem 75
240 POKE198,0:KE=PEEK(197):J=0:FORI=1TO4:
    IFKE=KE(I)THENJ=I:I=4         :rem 52
250 NEXT:ONJGOTO280,320,300,340   :rem 13
260 POKE214,13:PRINT:PRINT"{4 RIGHT}{RED}
    {RVS)RECORD(OFF}{RIGHT}{BLK}"MID$(R$,
    3,2)+":"+MID$(R$,5,2)        :rem 186
270 PRINT"{DOWN}{4 RIGHT}{RVS}TIME{OFF}
    {3 RIGHT}"MID$(TI$,3,2)":"MID$(TI$,5,
    2):GOTO240                   :rem 188
280 POKEAL,32:AL=AL-40:AC=AC-1:IFAL<1616T
    HENAL=1616:AC=1               :rem 57
290 POKEAL,31:POKEAL+S,0:GOTO240 :rem 192
300 POKEAL,32:AL=AL+40:AC=AC+1:IFAL>1896T
    HENAL=1896:AC=8               :rem 75
310 GOTO290                      :rem 104
320 POKE214,12+AC:PRINT:P(AC)=P(AC)-1:IFP
    (AC)<1THENP(AC)=1            :rem 156
330 GOTO350                      :rem 103
340 POKE214,12+AC:PRINT:P(AC)=P(AC)+1:IFP
    (AC)>56THENP(AC)=56           :rem 18
350 PRINTTAB(19)CHR$(Z)MID$(D$,P(AC),12)
                                 :rem 250
360 FORX=1TO8:IFPP(X)<>P(X)THEN240
                                 :rem 107
370 NEXT:SC$=TI$                 :rem 203
380 POKE214,15:PRINT:PRINT"{4 RIGHT}{BLK}
    {RVS}TIME{OFF}{3 RIGHT}"MID$(SC$,3,2)
    +":"+MID$(SC$,5,2)           :rem 213
390 PRINT"(DOWN}{3 RIGHT}{PUR}PUZZLE SOLV
    ED!":GOSUB570:PRINT"{DOWN}{BLK}
    {4 RIGHT}PLAY AGAIN?"        :rem 148
400 PRINTSPC(7)"{DOWN}{RVS}Y{OFF}/{RVS}N
    {OFF)"                         :rem 2
410 POKE53280,4:GETK$:IFK$=""THENPOKE5328
    0,3:GOTO410                   :rem 47
420 IFK$="N"THENSYS2048           :rem 95
430 IFR$="000000"ORSC$<R$THENR$=SC$
                                 :rem 230
440 IFK$="Y"THEN90                 :rem 8
450 GOTO410                      :rem 103
460 PRINTSPC(10)"{3 DOWN}{BLK}DO YOU WANT
     TO:":PRINTSPC(11)"{DOWN}{RVS}1{OFF)
    {SPACE}BEND YOUR MIND?"      :rem 198
470 PRINTSPC(11)"{DOWN}{RVS)2{OFF} BRUISE
     YOUR MIND?"                 :rem 236
480 PRINTSPC(11)"{DOWN}{RVS}3{OFF} BLOW Y
    OUR MIND?"                    :rem 88
490 POKE53280,3:GETK$:IFK$=""THENPOKE5328
    0,4:GOTO490                   :rem 63
500 K=VAL(K$):IFK<1ORK>3THEN490  :rem 106
510 IFK=ITHEND$=A$:Z=31:GOTO540   :rem 88
520 IFK=2THEND$=B$:Z=28:GOTO540   :rem 97
530 D$=C$:Z=144                   :rem 14
540 PRINT"{HOME}{3 DOWN)":FORN=1TO10:PRIN
    T"{39 SPACES}":NEXT           :rem 21
550 RETURN                       :rem 122
560 DATA 33,37,36,34             :rem 217
570 FORI=STOS+24:POKEI,O:NEXT:POKES+24,15
    :POKES+5,48:POKES+6,48       :rem 178
580 POKES+4,33:FORI=20TO80STEP3:POKES+1,I
    :FORJ=1TO50:NEXT:NEXT:POKES+4,32
                                 :rem 159
590 POKES+24,0:RETURN             :rem 39

Commodore 64 version
"Mindbusters" on the Commodore 64.


Program 2: Mindbusters For VIC-20
Please refer to "COMPUTE!'s Guide To Typing In  Programs" before entering this listing.

10 S=30720:R$="000000":FORJ=1TO4:READKE(J
   ):NEXT:PRINTCHR$(14)CHR$(8)   :rem 240
20 A$="XVAWVBWWAXNAWVBWWAXAWVBWANANAVVWAN
   NNXAWVWAXWAXCVNVNWAWVBNWCCXVNVAWNW"
                                  :rem 56
30 TM$="":FORI=1T068:TM=ASC(MID$(A$,I,1))
   +97:TM$=TM$+CHR$(TM):NEXT:A$=TM$
                                  :rem 44
40 B$="12*0Z*Z*,0<2Z/*/00,Z/02ZZ2Z*1,<Z-2
   1,-2*Z<0Z-210*,Z*Z*1<122Z<Zl*<Z,*Z"
                                 :rem 166
50 TM$="":FORI=1TO68:TM=ASC(MID$(B$,I,1))
   +129:TM$=TM$+CHR$(TM):NEXT:B$=TM$
                                  :rem 92
60 C$="ZZ$$$ZZ$$Z$Z$Z$Z$ZZZZZ$Z$$$Z$$$Z$Z
   $$$$Z$Z$ZZZZ$Z$Z$$$Z$ZZZZZZ$$Z$$Z$"
                                  :rem 10
70 TM$="":FORI=1TO68:TM=ASC(MID$(C$,I,1))
   +133:TM$=TM$+CHR$(TM):NEXT:C$=TM$
                                  :rem 91
80 POKE36879,31:PRINT"{CLR}{PUR)*********
   *************";                :rem 45
90 PRINT BLK RVS}{5 SPACES}MINDBUSTERS
   {6 SPACES}{OFF}";             :rem 121
100 PRINT"{PUR}**********************":GO
    SUB530                       :rem 208
110 PRINT"{HOME}{3 DOWN}{RIGHT}94:]912 P2
    {3 SPACES}USE":PRINT"[<N>]"SPC(12)"[<H>]"
                                  :rem 69
120 PRINT"[<N>]"SPC(12)"[<H>]I,J,K,M":PRINT"
    [<N>]"SPC(12)"[<H>]"         :rem 150
130 PRINT"[<N>]"SPC(12)"[<H>]KEYS TO":PRINT"
    [<N>]"SPC(12)"[<H>]"         :rem 199
140 PRINT"[<N>]"SPC(12)"[<H>] MATCH":PRINT"
    [<N>]"SPC(12)"[<H>]"          :rem 86
150 PRINT"[<N>]"SPC(12)"[<H>]GRID #1":PRINT"
    {RIGHT}[<12 Y>]"             :rem 217
160 POKE214,3:PRINT              :rem 131
170 FORN=1TO8:PP(N)=INT(RND(1)*56)+1:PRIN
    T"{RIGHT}"CHR$(Z)MID$(D$,PP(N),12)
                                 :rem 228
180 NEXT:PRINT:PRINT" {BLK}[<12 P>]
    {2 SPACES}WITH"              :rem 170
190 PRINT"[<N>]"SPC(12)"[<H>]":PRINT"[<N>]"SPC(
    12)"[<H>] #2 AS"             :rem 215
200 PRINT"[<N>]"SPC(12)"[<H>]":PRINT"[<N>]"SPC(
    12)"[<H>]FAST AS"            :rem 168
210 PRINT"[<N>]"SPC(12)"[<H>]":PRINT"[<N>]"SPC(
    12)"[<H>]YOU CAN"            :rem 182
220 PRINT"[<N>]"SPC(12)"[<H>]"   :rem 161
230 PRINT"[<N>]"SPC(12)"[<H>]{2 SPACES}!!!":P
    RINT"{RIGHT}[<12 Y>]";       :rem 252
240 POKE214,13:PRINT             :rem 179
250 FORN=1TO8:P(N)=INT(RND(1)*56)+1:PRINT
    "{RIGHT}"CHR$(Z)MID$(D$,P(N),12):NEXT
                                 :rem 188
260 FORI=1TO4000:NEXT:PRINT"{HOME}
    {3 DOWN}";:FORI=1TO18:PRINTSPC(14)"
    {7 SPACES}":NEXT             :rem 166
270 PRINTSPC(14)"{7 SPACES}";:AL=8002:POK
    EAL,Sl:POKEAL+S,0:AC=1:TI$="000000"
                                  :rem 45
280 POKE198,0:KE=PEEK(197):J=0:FORI=1TO4:
    IFKE=KE(I)THENJ=I:I=4         :rem 56
290 NEXT:ONJGOTO340,360,380,400   :rem 23
300 POKE214,3:PRINT:PRINTSPC(16)"{RED}
    {RVS}BEST{OFF}:"             :rem 208
310 PRINT"{BLK}":PRINTSPC(16)MID$(R$,3,2)
    +":"+MID$(R$,5,2)             :rem 52
320 POKE214,8:PRINT:PRINTSPC(16)"{RVS}TIM
    E{OFF}:"                     :rem 188
330 PRINT"{DOWN}"SPC(16)MID$(TI$,3,2)":"M
    ID$(TI$,5,2):GOTO280          :rem 61
340 POKEAL,32:AL=AL-22:AC=AC-1:IFAL<8002T
    HENAL=8002:AC=1               :rem 46
350 POKEAL,31:POKEAL+S,0:GOTO280 :rem 193
360 POKEAL,32:AL=AL+22:AC=AC+1:IFAL>8156T
    HENAL=8156:AC=8               :rem 73
370 GOTO350                      :rem 107
380 POKE214,12+AC:PRINT:P(AC)=P(AC)-1:IFP
    (AC)<1THENP(AC)=1            :rem 162
390 GOTO410                      :rem 106
400 POKE214,12+AC:PRINT:P(AC)=P(AC)+1:IFP
    (AC)>56THENP(AC)=56           :rem 15
410 PRINT"{RIGHT}"CHR$(Z)MID$(D$,P(AC),12
    )                            :rem 198
420 FORX=1TO8:IFPP(X)<>P(X)THEN280
                                 :rem 108
430 NEXT:SC$=TI$                 :rem 200
440 POKE36878,15:FORI=1TO3:POKE36875,220:
    FORD=1TO400:NEXT:POKE36875,0:POKE3687
    6,220                        :rem 223
450 FORD=1TO400:NEXT:POKE36876,0:NEXT:POK
    E36878,0                       :rem 9
460 POKE214,13:PRINT:PRINTTAB(16)"{RED}YO
    U":PRINTTAB(15)"{DOWN}GOT IT" :rem 27
470 PRINTTAB(17)"{DOWN}11":PRINTTAB(15)"
    {DOWN}AGAIN":PRINTTAB(15)"{DOWN}(Y/N)
    ?";                           :rem 36
480 POKE36879,28:GETK$:IFK$=""THENPOKE368
    79,27:GOTO480                :rem 199
490 IFK$="N"THENSYS1024           :rem 95
500 IFR$="000000"ORSC$<R$THENR$=SC$
                                 :rem 228
510 IFK$="Y"THEN80                 :rem 5
520 GOTO480                      :rem 108
530 PRINT"{2 DOWN}{BLK}{3 RIGHT}DO YOU WA
    NT TO:":PRINT"{2 DOWN}{RVS}{2 RIGHT}1
    {OFF) BEND YOUR MIND?"        :rem 36
540 PRINT"T2 RIGHT)(2 DOWN)(RVS)2{OFF) BR
    UISE YOUR MIND?"             :rem 156
550 PRINT"{2 RIGHT){2 DOWN)(RVS)3{OFF) BL
    OW YOUR MIND?"                 :rem 8
560 POKE36879,27:GETK$:IFK$=""THENPOKE368
    79,28:GOTO560                :rem 197
570 K=VAL(K$):IFK<1ORK>3THEN560  :rem 111
580 IFK=ITHEND$=A$:Z=31:GOTO610   :rem 93
590 IFK=2THEND$=B$:Z=28:GOTO610  :rem 102
600 D$=C$:Z=144                   :rem 12
610 PRINT"{HOME){3 DOWN)":FORN=1TO12:PRIN
    T"{21 SPACES)":NEXT:RETURN    :rem 47
620 DATA 12,36,44,20             :rem 204

VIC version
Here's how a mind-bending puzzle apperars in the VIC
version of "Mindbusters."


Program 3: Mindbusters For Atari
Please refer to "COMPUTEI's Guide To Typing In  Programs" before entering this listing.

JP 1 GOTO 5
CJ 2 TIME=INT(PEEK(18)*65536+PEEK(19)
     *256+PEEK(20))/60:MIN=INT(TIME/6
     0):SEC=INT(TIME-MIN*60):RETURN
KB 5 DIM A$(68):DIM B$(68):DIM C$(68)
     :DIM D$(68):DIM P(8):DIM PP(8):D
     IM K(255):K(13)=1:K(1)=2:K(5)=3:
     K(37)=4
MO 6 DIM R$(5):DIM TI$(6):RECORD=O
JB 10 A$="IDKLNMNMOKILLNIOKNIOKLNMOMI
      LKNOIMKOINNNOILKOKNILKNOIMKNIML
      KMONLMOIKO"
HI 20 8$="DXASEQWASEQDXASWWESAXQEAWSQ
      DAXSQDXASEWEWEQDSAEEAEEQDDAXXAS
      QEAXDQEXDX"
AF 30 C$="FFGGGFFGGFGFGFGFGFFFFFGFGGG
      FGGGFGFGGGGFGFGFFFFGFGFGGGFGFFF
      FFFGGFGGFG"
LL 40 FOR A=1 TO 68:A$(A,A)=CHR$(ASC(
      A$(A,A))-64):B$(A,A)=CHR$(ASC(B
      $(A,A))-64):C$(A,A)=CHR$(ASC(C$
      (A,A))-64):NEXT A
IP 50 POKE 752,1:GRAPHICS 17:PRINT #6
      ,"{CLEAR}"
PC 55 SETCOLOR 4,10,0
NN 60 POSITION 14,1:PRINT #6,"mindbus
      ters"
JF 70 POSITION 2,5:PRINT #6;"{RVS}DO YOU W
      ANT TO:{OFF}"
DP 80 POSITION 0,9:PRINT #6;"1. BEND
      YOUR MIND?"
BL 90 POSITION 0,11:PRINT #6;"2. BRUI
      SE YOUR MIND?"
IC 100 POSITION 0,13:PRINT #6;"3. PLO
       W YOUR MIND?":POKE 764,255
GE 110 KEY=PEEK(764):IF KEY=31 THEN D
       $=A$:GOTO 150
OO 120 IF KEY=30 THEN D$=B$:GOTO 150
PF 130 IF KEY=26 THEN D$=C$-GOTO 150
GA 140 GOTO 110
HL 150 GRAPHICS 0:POKE 752,1
LN 151 POKE 709,0:POKE 710,8:POKE,712
       ,52
EC 155 POSITION 0,0:PRINT "{40 R}":PO
       SITION 13,1:PRINT "MINDBUSTERS
       "
HF 160 POSITION 0,2:PRINT "(40 R)"
HC 180 FOR A=5 TO 12:POSITION 3,A:PRI
       NT "LB)(12 SPACES)(V)":POSITION
        19,A+9:PRINT "(B'r(12 SPACES)
       {V}":NEXT A
ME 190 POSITION 4,4:PRINT "{12 N}":PO
       SITION 4,13:PRINT "{12 M}":POS
       ITION 20,13:PRINT "{12 N}"
NL 200 POSITION 20,22:PRINT "{12 M}";
NI 210 POSITION 19,5:PRINT "Use I,J,K
       , and M":POSITION 19,7:PRINT "
       keys to match this"
GD 220 POSITION 19,9:PRINT "pattern a
       s fast"
DG 230 POSITION 19,11:PRINT "as you c
       an !!!!":POSITION 2,5
JI 240 FOR N=1 TO B:PP(N)=INT(RND(I)*
       56)+1:PRINT "(2 RIGHT)";D$(PP(
       N),PP(N)+11):NEXT N
AG 250 FOR N=1 TO B:P(N)=INT(RND(I)*5
       6)+1:POSITION 20,13+N:PRINT D$
       (P(N),P(N)+11):NEXT N
JI 260 AX=33:AY=14:AC=I:POSITION AX,A
       Y:PRINT "<":FOR A=18 TO 20:POK
       E A,0:NEXT A
HI 261 RM=INT(RECORD/60):RS=INT(RECOR
       D-RM*60)
NG 262 POSITION 13,16:PRINT RM;":";:I
       F RS<10 THEN PRINT "0":
MN 263 PRINT RS
BJ 270 KEY=K(PEEK(764)):POKE 764,255:
       ON KEY GOTO 300,400,350,450
KB 280 POSITION 5, 16:PRINT "{RVS}RECORD{OFF} "
LP 290 POSITION 5,18:GOSUB 2:PRINT "{RVS}T
       IME{OFF}{4 SPACES}";MIN;":";:IF SEC
       <10 THEN PRINT "0";
JD 295 PRINT SEC;" ":GOTO 270
PD 300 POSITION AX,AY:AC=AC-1:PRINT "
        ":AY=AY-1:IF AY<14 THEN AY=14
       :AC=1
LL 310 POSITION AX,AY:PRINT "<":GOTO
       270
HN 350 POSITION 20,AY:P(AC)=P(AC)-1:I
       F P(AC)<1 THEN P(AC)=1:GOTO 27
       0
GH 360 GOTO 410
OB 400 POSITION 20,AY:P(AC)=P(AC)+1:I
       F P(AC)>56 THEN P(AC)=56
NO 410 PRINT D4(P(AC),P(AC)+11)
GL 420 FOR X=1 TO 9:IF PP(X)<>P(X) TH
       EN 270
CO 430 NEXT X
MD 435 POSITION 4,20:PRINT "PUZZLE SO
       LVED!":GOSUB 590:POSITION 3,22
       :PRINT "Play again (y/n)"
KE 440 IF PEEK(764)=35 THEN GRAPHICS
       0:END
HN 445 IF RECORD=0 OR TIME<RECORD THE
       N RECORD=TIME
HN 447 IF PEEK(764)=43 THEN 50
HB 448 GOTO 440
PK 450 POSITION AX,AY:AC=AC+1:PRINT "
        ":AY=AY+1:IF AY>21 THEN AY=21
       :AC=8
MB 460 POSITION AX,AY:PRINT "<":GOTO
       270
GA 590 FOR A=100 TO 10 STEP -1:SOUND
       1,A,10,15:SOUND 2,A+50,10,15:P
       OKE 53274,A:NEXT A:SOUND 1,0,0
       ,0
EJ 600 SOUND 2,0,0,0:POKE 53274,0:RET
       URN

Atari version
This is a mind-bruising puzzle in the Atari version of
"Mindbusters."


Program 4: Mindbusters For IBM PC/PCjr
Please refer to "COMPUTEI's Guide To Typing In Programs" before entering this listing.

MJ 10 CLS:SCREEN 0,1:DEF SEG=O:POKE 1047,
      (PEEK(1047) OR 64) AND 223:HI=0:R$=
      " 0:00"
JD 20 WIDTH 40:KEY OFF:DEF SEG=&H40:RANDO
      MIZE PEEK(&H6D)
DK 30 FOR I=1 TO 4:READ KE(I):NEXT
CE 40 A$="AAHBBAABBABABABABAAAAABABBBABBB
      ABABBBBABABAAAABABABBBABAAAAAABBABB
      AB"
GE 50 TM$="":FOR I=1 TO 68:TM=ASC(MID$(A$
      ,I,1))+128:TM$=TM$+CHR$(TM):NEXT:A$
      =TM$
CF 60 B$="DEAdEBddADeAdEBddADAdEBdAeAeAEE
      dAeeeDAdEdADdADCEeEedAdEBedCCDEeEAd
      ed"
KA 70 TM$="":FOR I=1 TO 68:TM=ASC(MID$(B$
      ,I,i)),+154:TM$=TM$+CHR$(TM):NEXT:B$
      =TM$
JN 80 C$="TUASWAWABSVUWRARSSBWRSUWWUWATBV
      WQUTBQUAWVSWQUTSABWAWATVTUUWVWTAVWB
      AW"
MC 90 TM$="":FOR I=1 TO 68:TM=ASC(MID$(C$
      ,I,1))+120:TM$=TM$+CHR$(TM):NEXT:C$
      =TM$
CP 100 COLOR 5;PRINT STRING$(40,220);:COL
       OR 3:LOCATE 2,15,0:PRINT"MINDBUSTE
       RS":COLOR 5:PRINT STRING$(40,223):
       GOSUB 380:COLOR 0,14
PP 110 COLOR 7:LOCATE 4,4:PRINT STRING$(1
       2,220):PRINT TAB.(3)CHR$(222)SPC(12
       )CHR$(221)SPC(4)"Use cursor keys t
       o"
OL 120 PRINT TAB(3)CHR$(222)SPC(12)CHR$(2
       21):PRINT TAB(3)CHR$(222)SPC(12)CH
       R$(221)SPC(4)"match this pattern"
IJ 130 PRINT TAB(3)CHR$(222)SPC(12)CHR$(2
       21):PRINT TAB(3)CHR$(222)SPC(12)CH
       R$(221)SPC(4)"as fast as you can":
       PRINT TAB(3)CHR$(222)SPC(12)CHR$(2
       21)
GE 140 PRINT TAB(3)CHR$(222)SPC(12)CHR$(2
       21)SPC(11)"!!!!":PRINT TAB(3)CHR$(
       222)SPC(12)CHR$(221):PRINT TAB(4)S
       TRING$(12,223)
PH 150 COLOR Z,O:FOR N=1 TO B:PP(N)=INT(R
       ND(1)*56)t1;LOCATE 4+N,4:PRINT MID
       $(D$,PP(N),12):NEXT:COLOR 7,0:PRIN
       T
DH 160 PRINT TAB(23)STRING$(12,220):PRINT
        TAB(4);:COLOR 0,4:PRINT"Record"::
       COLOR 7,0:PRINT SPC(3)R$:LOCATE 15
       ,22:PRINT CHR$(222)SPC(12)CHR$(221
       )
IJ 170 PRINT TAB(22)CHR$(222)SPC(12)CHR$(
       221):PRINT TAB(4);:COLOR O,2:PRINT
       "Time";:COLOR 7,0:PRINT SPC(14)CHR
       $(222)SPC(12)CHR$(221)
CF 180 FOR 1=1 TO 5-PRINT TAB(22)CHR$(222
       )SPC(12)CHR$(221):NEXT I•.PRINT TAB
       (23)STRING$(12,223)
LJ 190 COLOR Z,0:FOR N=1 TO S:P(N)=INT(RN
       D(1)E56)+1:LOCATE 14+N,23:PRINT MI
       D$(D$,P(N),12):NEXT:COLOR 7,0:PRIN
       T
JG 200 AC=I:LOCATE AC+14,37:PRINT CHR$(27
       ):POKE &H6D,0:POKE &H6C,0
KJ 210 COLOR 7,0:C=PEEK(&H6C):D=PEEK(&H6D
       ):T=(C+D#256)/18.2:MT=INT(T/60):M$
       =STR$(MT):ST=INT((T/60-MT)*60):S$=
       STR$(ST):IF ST<10 THEN S$="0"+RICH
       T$(STR$(ST),1)
EJ 220 LOCATE 17,13:PRINT M$":"RIGHT$(S$,
       2):K$=INKEY$:IF LEN(K$)<%-2 THEN 21
       0
JA 230 J=0:FOR 1=1 TO 4-IF ASC(MID$(K$,2,
       1))=KE(I) THEN J=I:I=4
FJ 240 NEXT-.ON J GOTO 260,300,280,320
CM 250 GOTO 210
NJ 260 LOCATE AC+14,37:PRINT" ":AC=AC-1:I
       F AC<1 THEN AC=1
PJ 270 LOCATE AC+14,37:PRINT CHR$(27):GOT
       O 210
FF 280 LOCATE AC+14,37:PRINT " ":AC=AC+1:
       IF AC>8 THEN AC=8
GG 290 GOTO 270
MF 300 P(AC)=P(AC)-1:IF P(AC)<1 THEN P(AC
       )=1
DF 310 GOTO 330
DJ 320 P(AC)=P(AC)+1:IF P(AC)>56 THEN P(A
       C)=56
FI 330 LOCATE AC+14,23:COLOR Z,0:PRINT MI
       D$(D$,P(AC),12)
CC 340 FOR X=1 TO B:IF PP(X)<>P(X) THEN 2
       10
IP 350 NEXT:COLOR 14,0:LOCATE 20,4:PRINT"
       Puzzle solved!":GOSUB 450:LOCATE 2
       2,5:PRINT"Play again?":LOCATE 23,7
       :PRINT"(Y/N)"
LH 360 IF INT(T)<HI OR HI=0 THEN HI=INT(T
       ):R$=RIGHT$(M$,2)+":"+RIGHT$(S$,2)
HN 370 COLOR ,0,3.K$=INKEY$:IF K$="" THEN
        COLOR ,0,5:GOTD 370 ELSE IF K$="N
       " THEN END ELSE IF K$="Y" THEN CLS
       :GOTO 100 ELSE 370
KJ 380 LOCATE 9,13:COLOR 5,0:PRINT "Do yo
       u want to:":LOCATE 11,13:COLOR 0,5
       :PRINT"1";:COLOR 5,0:PRINT" Bend y
       our mind?"
MD 390 LOCATE 13,13:COLOR 0,5:PRINT"2";:C
       OLOR 5,0:PRINT" Bruise your mind?"
       :LOCATE 15,13:COLOR 0,5-PRINT "3";
       :COLOR 5,0:PRINT " Blow your mind?
       "
DN 400 COLOR ,0,3:K$=INKEY$:IF K$="" THEN
        COLOR ,0,5:GOTO 400 ELSE K=VAL(K$
       ):IF K<1 OR K>3 THEN 400
LD 410 IF K=1 THEN D$=A$:Z=2:GOTO 430
JD 420 IF K=2 THEN D$=B$:Z=4 ELSE D$=C$:Z
       =3
AA 430 FOR I=0 TO 9-LOCATE 9+1,13:PRINT S
       TRING$(19,32):NEXT:RETURN
MI 440 DATA 72,77,80,75
LD 450 FOR 1=220 TO 880 STEP 20:SOUND 1,.
       5:NEXT:RETURN

IBM PC/PCjr version
"Mindbusters," IBM PC/PCjr version a mind-blowing
puzzle, the hardest kind of all.


Program 5: Mindbusters For Apple

10  HIMEM: 36096
20 R1 = 0:R2 = 0:H$= "
              "
30  GOSUB 620
40 A$ = "'%!&%4&&!'$!&%4&&!'!&%4&!$!$'%
     %&!$$$'!&%&!'&!'#%$%$&!&%4$&##'%$%
     !&$&"
50 B$ = "/0(.+(+(*.)0+-(-..*+-.0++0+(/*
     )++0/*+0(+).++0/.(t+(+(/)/00+)+/()
     +*(+1.
60 C$ = "112221122121212121111121222122
     2121222212121111212122212111111221
     2212"
70  TEXT : HOME : VTAB 5: PRINT
     : FOR I = 4 TO 35: PRINT CHR$ (95
     );: NEXT : PRINT
80  PRINT : PRINT SPC( 14)"MINDBUSTERS
     "
90  PRINT "    ";: FOR I = 4 TO 35: PRINT
      CHR$ (95);: NEXT : PRINT : VTAB 1
     1: PRINT TAB( 15)"PLEASE WAIT..."
     GOSUB 440
100  HGR : HCOLOR= 5: HPLOT 1,3 TO 95,3
      TO 95,75 TO 1,75 TO 1,3
110  HCOLOR= 6: HPLOT 154,76 TO 250,76 TO
     250,147 TO 154,147 TO 154,76
120  POKE 6,0: POKE 7,141: POKE 54,0: POKE
     55,3: CALL 1002
130  FOR N = 1 TO B:PP(N) = INT ( RND
     (3) * 55) + 1: HTAB 2: VTAB 1 + N:
      PRINT MID$. (D$,PP(N),12): NEXT
140  FOR N = 1 TO 8:P(N) = INT ( RND
     2) * 55) + 1: VTAB 10 + N: HTAB 24-
     : PRINT MID$ (D$,P(N),12): NEXT
150  VTAB 11: HTAB 38: PRINT "3"
160 AC = 1: VTAB 21: PRINT TAB( 14)"US
     E THE 1, J, K AND M": PRINT TAB(
     14)"KEYS TO MATCH THE PATTERN": PRINT
      TAB( 14)"IN THE RED BOX AS FAST":
      PRINT TAB( 14)"AS YOU CAN!!!!";
170 KE = PEEK ( - 16384):J = 0: POKE -
     16368,0:J = KE - 200
180 T3 = T3 + 1: IF T3 = 12 THEN T3 = 0
     :T2 = T2 + 1: IF T2 = 60 THEN T2 =
     00:T1 = T1 + 1
190  IF J < 0 OR J > 5 THEN J = 0
200  ON J GOTO 240,320,300,170..270
210  HTAB 1: VTAB 22: PRINT "RECORD "R1
     ":";: IF R2 < 10 THEN PRINT "0";
220  PRINT R2: HTAB 1: VTAB 24: PRINT "
     TIME "T1":";: IF T2 < 10 THEN PRINT
     "0";
230  PRINT T2;: GOTO 170
240  VTAB 10 + AC: HTAB 38: PRINT " "
250 AC = AC - 1: IF AC <' 1 THEN AC = 1
260  VTAB 10 + AC: HTAB 38: PRINT "3";:
      GOTO 210
270 AC = AC + 1: IF AC :- 8 THEN AC = 8
280  VTAB 9 + AC: HTAB 38: PRINT " "
290  GOTO 260
300 P(AC) = P(AC) - 1: IF P(AC) < 1 THEN
     P(AC) = 1
310  GOTO 330
320 P(AC) = P(AC) + 1: IF P(AC) > 56 THEN
     P(AC) = 56
330  VTAB 10 + AC: HTAB 24: PRINT MID$
     (D$,P(AC),12)
340  FOR X = 1 TO 8: IF PP(X) <  >P(X)
      THEN 210
350  NEXT
360  FOR I = 21 TO.23: VTAB I: HTAB 14:
      PRINT H$: NEXT : VTAB 24: HTAB 14
     : PRINT MID$ (H$,1,14);: FOR I =
     1 TO 5: PRINT CHR$ (7);: NEXT
370  VTAB 22: HTAB 20: PRINT "PUZZLE SO
     LVED!": HTAB 20: PRINT "PLAY AGAIN
     ?"
380  HTAB 26: PRINT "Y/N";: GET K$
390  IF K$ = "N" THEN TEXT : HOME : END
400 T$ = STR$ (T1) + "." + STR$ (T2):
     R$ = STR$ (R1) + "." + STR$ (R2)
410  IF R$ = "0.0" OR VAL (T$) < VAL
     (R$) THEN R1 = T1:R2 = T2
420  IF K$ = "Y" THEN T1 = 0:T2 = 0:T3 =
     0: GOTO 70
430  GOTO 380
440  POKE 230,32: CALL - 3086: POKE 23
     0,64: CALL - 3086
450  POKE 54,240: POKE 55,253: CALL 100
     2
460  FOR P = 1 TO 2: HCOLOR= P: FOR I =
     1 TO 8
470  HPLOT I,I TO 279 - 1,1 TO 279 - I,
     191 - I TO 1,191 - I TO I,I
480  NEXT I: POKE 230,32: NEXT P
490  VTAB 11: HTAB 26: PRINT "    "
500  VTAB 11: HTAB 11: PRINT "DO YOU WA
     NT TO:": PRINT : PRINT TAB( 11)"1
      - BEND YOUR MIND?": PRINT : PRINT
      TAB( 11)"2 - BRUISE YOUR MIND?": PRINT
     : PRINT TAB( 11)"3 - BLOW YOUR MI
     ND?"
510  POKE - 16302,0
520 A = PEEK ( - 16384): IF A > 127 THEN
     550
530  POKE - 16297,0: POKE - 16304,0: POKE
      - 16300,0: POKE - 16299,0: POKE
      - 16300,0: POKE - 16303,0: FOR I
      = 1 TO 50: NEXT
540  GOTO 520
550  POKE - 16368,0:A = A - 176: IF A <
     1 OR A > 3 THEN 520
560  POKE 230,32: CALL - 3086
570  IF A = 1 THEN D$ = A$
580  IF A = 2 THEN D$ = B$
590  IF A = 3 THEN n$ = C$
600  RETURN
610  REM SHAPE DATA
620  FOR I = 36096 TO 36263: READ A:CS =
     CS + A: POKE I,A: NEXT
630  IF CS <  > 11534 THEN  PRINT "ERRO
     R IN FIRST SET OF DATA STATEMENTS.
     ": STOP
640  DATA 128,128,128,128,128,128,128,
     128
650  DATA 0,0,0,0,255,255,255,255
660  DATA 0,0,0,0,0,0 0,0
670  DATA 0,0,0,0,0,0,0,255
680  DATA 0,0,0,0,0,0,255,255
690  DATA 255,255,0,0,0,0,0,0
700  DATA 255,255,255,0,0,0,0,0
710  DATA 0,0,0,0,0,255,255,255
720  DATA 24,24,24,31,31,24,24,24
730  DATA 24,24,24,31,31,0,0,0
740  DATA 0,0,0,248,248,24,24,24
750  DATA 0,0,0,31,31,24,24,24
760  DATA 24,24,24,255,255,0,0,0
770  DATA 0,0,0,255,255,24,24,24
780  DATA 24,24,24,248,248,24,24,24
790  DATA 24,24,24,248,248,0,0,0
800  DATA 24,24,24,255,255,24,24,24
810  DATA 204,153,51,102,204,153,51,10
     2
820  DATA 51,153,204,102,51,153,204,10
     2
830  DATA 8,12,14,127,127,14,12,8
840  DATA 255,0,0,0,0,0,0,0
850  REM HROUT ML ROUTINE
860  FOR I = 768 TO 856: READ A:CK = CK
      + A: POKE I,A: NEXT
870  IF CK <  > 8413 THEN PRINT "ERROR
      IN SECOND SET OF DATA STATEMENTS.
     ": STOP
880  RETURN
890  DATA 216,120,133,69,134,70,132,71
900  DATA 166,7,10,10,176,4,16,62
910  DATA 48,4,16,1,232,232,10,134
920  DATA 27,24,101,6,133,26,144,2
930  DATA 230,2,7,165,40,133,8,165,41
940  DATA 41,3,5,230,133,9,162,8
950  DATA 160,0,177,26,36,50,48,2
960  DATA 73,127,164,36,145,8,230,26
970  DATA 208,2,230,27,165,9,24,105
980  DATA 4,133,9,202,208,226,165,69
990  DATA 166,70,164,71,88,76,240,253
1000  DATA 255,255,255,255,255,255,255
     ,255

Apple version
Apple "Mindbusters."


Program 6: Mindbusters For TI-99/4A

100 GOTO 150
110 FOR M=1 TO LEN(H$)
120 CALL HCHAR(R,C+M,ASC(SEG$(H$,M,
    1)))
130 NEXT M
140 RETURN
150 CALL CLEAR
160 SCR=3
170 HIGH=0
180 GOSUB 1470
190 CALL SCREEN(15)
200 FOR 1=9 TO 12
210 CALL COLOR(I,1,1)
220 NEXT I
230 GOSUB 1730
240 GOSUB 1760
250 GOSUB 1730
260 PRINT
270 FOR J=1 TO 2
280 PRINT " "&CHR$(135)&CHR$(129)&
    CHR$(129)&CHR$(129)&CHR$(129)&C
    HR$(129)&CHR$(129)&CHR$(129)&CH
    R$(129);
290 PRINT CHR$(129)&CHR$(129)&CHR$(
    129)&CHR$(129)&CHR$(132)
300 FOR I=1 TO 8
310 PRINT " "&CHR$(130)&"
    {12 SPACES}"&CHR$(134)
320 NEXT I
330 PRINT " "&CHR$(131)&CHR$(128)&
    CHR$(128)&CHR$(128)&CHR$(128)&C
    HR$(128)8(CHR$(128)&CHR$(128)&CH
    R$(128);
340 PRINT CHR$(128)&CHR$(128)&CHR$(
    128)&CHR$(128)&CHR$(133.)
350 NEXT J
360 CALL HCHAR(1,1,136,32)
370 CALL HCHAR(3,1,137,32)
380 H$="USE ARROW"
390 R=7
400 C=19
410 GOSUB 110
420 H$="KEYS TO"
430 R=9
440 GOSUB 110
450 R=11
460 H$="MATCH THE"
470 GOSUB 110
480 R=13
490 H$="1ST GRID"
500 GOSUB 110
510 H$="WITH THE 2ND"
520 R=15
530 GOSUB 110
540 H$="AS FAST AS"
550 R=17
560 GOSUB 110
570 H$="YOU CAN !!!"
580 R=19
590 GOGUB 110
600 R=5
610 C=5
620 FOR N=1 TO 8
630 RANDOMIZE
640 PP(N)=INT(RND*56)+1
650 H$=SEG$(D$,PP(N),12)
660 GOSUB 110
670 R=R+1
680 NEXT N
690 R=R+2
700 FOR N=1 TO 8
710 RANDOMIZE
720 P(N)=INT(RND*56)+1
730 H$=SEG$(D$,P(N),12)
740 GOSUB 110
750 R=R+1
760 NEXT N
770 CALL SOUND(100,440,3)
780 CALL COLOR(KSET(Z),F(Z),1)
790 IF Z<>2 THEN 810
800 CALL COLOR(11,13,1)
810 FOR R=5 TO 20
820 CALL HCHAR(R,20,32,12)
830 NEXT R
840 TIME=0
850 R1=15
860 C1=19
870 CALL HCHAR(R1,C1,91)
880 H$="RECORD: "&STR$(HIGH)
890 R=6
900 C=19
910 GOSUB 110
920 H$="TIME:(3 SPACES}"&STR$(TIME)
930 R=10
940 GOSUB 110
950 CALL KEY(O,K,S)
960 TIME=TIME+.3
970 H$=STR$(INT(TIME))
980 C=27
990 R=10
1000 GOSUB 110
1010 IF  (K<>69)*(K<>88) THEN 10170
1020 CALL HCHAR(Rl,Cl,32)
1030 R1=R1-(R1<>15)*(K=69)+(R1<>22)
     *(K=88)
1040 CALL HCHAR(R1,C1,91)
1050 TIME=TIME+,l
1060 GOTO 9501
1070 IF K<>68 THEN 1100
1080 P(R1-14)=P(R1-14)+(P(R1-14)<>1
     )
1090 GOTO 1120
1100 IF K<>83 THEN 950
1110 P(Rl-14)=P(R1-14)-(P(RI-14)<>5
     6)
1120 H$=SEG$(D$,P(R1-14),12)
1130 R=R1
1140 C=5
1150 GOSUB 110
1160 TIME=TIME+1
1170 FOR X=1 TO 8
1180 IF PP(X)<>P(X)THEN 950
1190 NEXT X
1200 H$="PUZZLE"
1210 R=16
1220 C=22
1230 GOSUB 110
1240 H$="SOLVED!"
1250 FOR I=220 TO 880 STEP 20
1260 CALL SOUND(50,I,3)
1270 NEXT I
1280 R=18
1290 GOSUB 110
1300 H$="PLAY"
1310 R=20
1320 C=23
1330 GOSUB 1101
1340 H$="AGAIN (Y/N)?"
1350 C=20
1360 R=22
1370 GOSUB 110
1380 CALL KEY(0,K,S)
1390 IF S=0 THEN 13850
1400 IF K=89 THEN 1430
1410 IF K<>78 THEN 1380
1420 STOP
1430 IF (INT (TIME)>HIGH)*(HIGH<>0)T
     HEN 1450
1440 HIGH=INT(TIME)
1450 CALL CLEAR
1460 GOTO 190
1470 FOR I=1 TO 29
1480 READ A,A$
1490 CALL CHAR(A,A$)
1500 NEXT I
1510 CALL COLOR(14,14,1)
1520 A$="geafebffagdafebffagafebfad
     adaeefadddgafefagfagcededfofeb
     dfccgedeafdf
1530 B$="mnhlphphilonpkhkllipklnppn
     phmiopjnmijnhpolpjnmlhiphphmom
     nnpopmhopihp"
1540 C$="yyxxxyyxxyxyxyxyxyyyyyxyxx
     xyxxxyxyxxxxyxyxyyyyxyxyxxxyxy
     yyyyyxxyxxyx"
1550 F(1)=5
1560 KSET(1)=9
1570 F(2)=13
1580 KSET(2)=10
1590 F(3)=2
1600 KSET(3)=12
1610 RETURN
1620 DATA 97,0000000OFFFFFFFF,98,FF
     00000000000000,99,000000000000
     00FF
1630 DATA 100,000000000000FFFF,101,
     FFFF000000000000,102,FFFFFF000
     0000000
1640 DATA 103,0000000000FFFFFF,104,
     1818181FIF181818,105,1818181F1
     F000000
1650 DATA 106,000000F8F8181818,107,
     0000001FIF181818,108,181818FFF
     F000000
1660 DATA 109,000000FFFF181818,110,
     181818F8F8181818,111,181818F8F
     8000000
1670 DATA 112,181818FFFF181818,120,
     CC993366CC993366,121,3399CC663
     399CC66
1680 DATA 128,FFFF00000000O000,129,
     000000000000FFFF,130,030303030
     3030303
1690 DATA 131,0303000000000000,132,
     000000000000COC0,133,COC000000
     0000000
1700 DATA 134,COCOCOCOCOCOCOCO,135,
     0000000000000303,91,0010307FFF
     7F3010
1710 DATA 136,000000000000FFFF,137,
     FFFF000000000000
1720 PRINT "  }{{{{{{{{{{{{{"&CHR$(
     127)
1730 CALL CLEAR
1740 PRINT TAB(10);"MINDBUSTERS"
1750 RETURN
1760 PRINT
1770 PRINT TAB(7);"DO YOU WANT TO:"
     : : :
1780 PRINT TAB(6);"1 BEND YOUR MIND
     ?": :
1790 PRINT TAB(6);"2 BRUISE YOUR MI
     ND?": :
1800 PRINT TAB(6);"3 BLOW YOUR MIND
     ?": : : : : :
1810 CALL HCHAR(5,1,136,32)
1820 CALL HCHAR(7,1,137,32)
1830 CALL KEY(0,K,S)
1840 CALL SCREEN(SCR)
1850 SCR=SCR-(SCR<16)+(SCR=16)*14
1860 IF S=0 THEN 1830
1870 CALL SCREEN(15)
1880 Z=K-48
1890 IF (Z<1)+(Z>3)THEN 1830
1900 IF Z>1 THEN 1930
1910 D$=A$
1920 RETURN
1930 IF Z=3 THEN 1960
1940 D$=B$
1950 RETURN
1960 D$=C$
1970 RETURN

TI-99/4A version
"MINDBUSTERS" on the TI-99/4A.