Compucolor.org – Virtual Media

Listing of file='MMIND.BAS;01' on disk='vmedia/ccug_14b-sector.ccvf'

0 POKE 32940,218:POKE 32941,147:CLEAR 200
1 PLOT 27,4:PRINT "LOAD MMIND.XXX":PLOT 27,27
2 POKE 33283,180:POKE 33284,157
100 PLOT 6,6,12,14:PRINT "MASTERMIND":PRINT
110 INPUT "DO YOU NEED INSTRUCTIONS? ";A$
120 IF LEFT$ (A$,1)= "Y"THEN GOSUB 10000
125 PLOT 15,29
130 OUT 8,255:OUT 8,247
131 PLOT 27,88
140 FOR I= 0TO 3:AN(I)= INT (RND (1)* 6+ 1):NEXT I
145 Z= CALL (32768)
150 GOSUB 1000
155 IS= 1= 0
160 Z= CALL ((192+ 8* AN(0)+ AN(1))* 256+ 8* AN(2)+ AN(3))
170 CI= 1= 1:PI= CI
175 TN= TN+ 1
180 IF PITHEN GOSUB 2000
190 IF CITHEN GOSUB 3000
195 IF ISTHEN GOSUB 5990
200 IF NOT CIAND NOT PITHEN A$= "":GOTO 230
210 IF TN= 9THEN GOSUB 5000:A$= "TOO MANY GUESSES.  ":GOTO 230
220 GOTO 175
230 PLOT 6,1,3,0,31,11:OUT 8,255
240 PRINT A$;:INPUT "PLAY AGAIN? ";A$
250 IF LEFT$ (A$,1)= "Y"THEN PLOT 12:RUN 130
260 PLOT 27,11,1
1000 X= 36:Y= 1:AD= 24776
1010 FOR I= 0TO 3:GU(I)= 0:NEXT I:I= 0
1020 PLOT 3,X,Y:OUT 8,255:Z= CALL (32769):OUT 8,247
1030 IF Z< > 26THEN 1070
1040 I= I- 1:AD= AD- 8:X= X- 4
1050 IF I< 0THEN I= 3:AD= AD+ 32:X= X+ 16
1060 GOTO 1020
1070 IF Z< > 25THEN 1110
1080 I= I+ 1:AD= AD+ 8:X= X+ 4
1090 IF I> 3THEN I= 0:AD= AD- 32:X= X- 16
1100 GOTO 1020
1110 IF Z< > 13THEN 1140
1120 FOR J= 0TO 3:IF GU(J)= 0THEN 1020
1130 NEXT J:RETURN
1140 IF Z< 80OR Z> 87OR Z= 86THEN 1020
1150 GU(I)= Z- 79:IF Z= 85THEN GU(I)= 0
1155 IF Z= 87THEN GU(I)= 6
1160 Z= CALL (65240+ Z):Z= CALL (AD)
1170 GOTO 1080
2000 X= 6:Y= 2+ 3* TN:AD= 24588+ (2+ 3* TN)* 128
2010 GOSUB 1010
2020 Z= CALL ((192+ 8* GU(0)+ GU(1))* 256+ 64+ 8* GU(2)+ GU(3))
2030 IF Z= 0THEN RETURN
2040 IF Z= 20THEN PI= 1= 0
2045 X= 22
2050 PLOT 6,40:IF Z< 5THEN 2090
2060 PLOT 3,X,Y,112:GOSUB 2070:Z= Z- 5:GOTO 2050
2070 X= X+ 1:IF X> 23THEN X= 22:Y= Y+ 1
2080 RETURN
2090 PLOT 6,47:IF Z= 0THEN 2110
2100 PLOT 3,X,Y,112:GOSUB 2070:Z= Z- 1:GOTO 2090
2110 IF NOT PITHEN GOSUB 5000
2120 RETURN
3000 IF TN> 1THEN 3030
3010 FOR I= 0TO 3:GU(I)= INT (RND (1)* 6+ 1):NEXT I
3020 GOTO 3100
3030 GN= INT (RND (1)* NP)
3040 Z= CALL (49152+ GN)
3050 Z1= INT (Z/ 256):Z2= Z- 256* Z1
3060 GU(0)= (Z1AND 56)/ 8
3070 GU(1)= Z1AND 7
3080 GU(2)= (Z2AND 56)/ 8
3090 GU(3)= Z2AND 7
3100 AD= 24776+ (TN* 3+ 1)* 128
3105 GOSUB 3110:GOTO 3170
3110 FOR I= 0TO 3
3120 CO= GU(I)+ 39:IF CO= 45THEN CO= 47
3130 Z= CALL (65280+ CO)
3140 Z= CALL (AD)
3150 AD= AD+ 8
3160 NEXT I
3165 RETURN
3170 GOSUB 4000:IF NOT CITHEN RETURN
3180 Z= CALL (65280+ SC)
3190 IF TN> 1THEN 3220
3200 NP= CALL ((128+ 8* GU(0)+ GU(1))* 256+ 128+ 8* GU(2)+ GU(3))
3210 GOTO 3230
3220 NP= CALL ((128+ 8* GU(0)+ GU(1))* 256+ 192+ 8* GU(2)+ GU(3))
3230 IF NP= 0THEN IS= 1= 1
3240 RETURN
4000 X= 52:Y= 2+ 3* TN
4005 SC= 0:NC= 0
4010 PLOT 3,X,Y:OUT 8,255:Z= CALL (32769):OUT 8,247
4020 IF Z< > 80THEN 4070
4030 SC= SC+ 5
4035 NC= NC+ 1:IF NC> 4THEN 4110
4040 PLOT 6,Z- 40,112
4050 X= X+ 1:IF X> 53THEN X= 52:Y= Y+ 1:IF Y> 3* (TN+ 1)THEN Y= 2+ 3* TN
4060 GOTO 4010
4070 IF Z= 87THEN SC= SC+ 1:GOTO 4035
4080 IF Z< > 13THEN 4110
4090 IF SC= 20THEN CI= 1= 0
4095 PLOT 3,64,0
4100 RETURN
4110 X= 52:Y= 2+ 3* TN
4120 PLOT 6,40,3,X,Y,32,32,3,X,Y+ 1,32,32:GOTO 4005
5000 AD= 24716:FOR I= 0TO 3:GU(I)= AN(I):NEXT I
5010 GOSUB 3110:RETURN
5990 TT= TN
6000 PLOT 6,1,3,0,31,11:OUT 8,255
6001 INPUT "INCORRECT SCORE.  QUIT (Q), OR LET ME START OVER (O)? ";A$:OUT 8,247
6005 Z= ASC (LEFT$ (A$,1)):PLOT 3,0,31,11
6007 IF Z= 81THEN CI= 1= 0:PI= CI:GOTO 200
6010 K= TN:IS= 1= 0
6011 FOR I= 1TO K
6014 AD= 24776+ (3* I+ 1)* 128
6020 Z= CALL (65325)
6030 FOR J= 1TO 5
6040 Z= CALL (AD)
6060 AD= AD+ 8
6070 NEXT J,I
6090 FOR TN= 1TO TT
6100 GOSUB 3000
6110 IF NOT CITHEN 6140
6120 IF ISTHEN 6000
6130 NEXT TN
6140 TN= TT:RETURN
10000 PLOT 12,15,27,4:PRINT "LOAD MMINS.DSP":PLOT 27,27
10010 PLOT 3,0,25:INPUT "PRESS 'ENTER' TO START: ";A$
10020 RETURN