Listing of file='WORPUZ.BAS;01' on disk='vmedia/word_puzzle-sector.ccvf'
10 REM WORD-PUZZLE 20 REM BY GREG HUBBARD 1/9/81 30 REM PHONE (03)241-7094 40 REM (C) COPYRIGHT 1981 120 GOSUB 10000 130 T= PEEK (33209):IF T= 0THEN 130 140 T= RND (- T) 1000 REM COMMAND CENTRE 1010 TM= PEEK (32940)+ PEEK (32941)* 256+ 1 1020 CLEAR 1000 1030 PLOT 27,24,6,7,12,15 1040 PLOT 3,12,2:PRINT "a b teu {jd neu {jd a b ez ez a {je" 1050 PLOT 3,12,3:PRINT "res vw a | lw a vw y y l l" 1060 PLOT 29,3,16,7,14,6,3 1070 PRINT "YOU HAVE THE FOLLOWING CHOICES -" 1080 PLOT 6,6,3,16,10:PRINT "1. EXAMINE WORD LIST INDEX" 1090 PRINT TAB( 16)"2. CREATE A NEW WORD LIST" 1100 PRINT TAB( 16)"3. MAKE A WORD PUZZLE" 1110 PRINT TAB( 16)"4. RETURN TO MENU 1120 PRINT :PRINT TAB( 16)"WHICH DO YOU CHOOSE? "; 1130 CH= CALL (2):IF CH= 27THEN 23000 1140 IF CH< 49OR CH> 52THEN 1130 1150 C= CH- 48:PRINT C 1160 IF C= 1THEN GOSUB 4000:GOTO 6000 1170 IF C= 2THEN 2000 1180 IF C= 3THEN GOSUB 4000:GOSUB 5000:GOTO 7000 1190 IF C= 4THEN PLOT 29,6,2,27,11,15,12,1 1200 GOTO 1000 2000 REM CREATE WORD LIST 2010 DIM WL$(24) 2020 TM= PEEK (32940)+ PEEK (32941)* 256+ 1 2030 X= 0:Y= 23:H= 3:W= 64:C= 1:LI= Y- 1:GOSUB 20000 2040 PLOT 12,3,24,0:PRINT "CREATE WORD LIST" 2050 PLOT 6,4,2,0,116,242,127,116,127,49,0,49,0,116,255 2060 PLOT 3,0,20:PRINT "YOU MAY ENTER UP TO 24 WORDS (ENTER A NUMBER TO FINISH)" 2070 PLOT 15:FOR I= 1TO 24 2080 GOSUB 21000:PRINT "WORD NO."I;:INPUT " > ";WL$(I) 2090 L= LEN (WL$(I)):IF L> 0AND L< 17THEN 2110 2100 GOSUB 21000:PRINT "INPUT ERROR!":GOTO 2080 2110 IF VAL (WL$(I))> 0THEN WL$(I)= "":GOTO 2140 2120 GOSUB 2250:PLOT 3,X,Y:PRINT ""I"."WL$(I) 2130 NEXT I 2140 NW= I- 1:LI= LI- 3 2150 FOR I= 31TO 20STEP - 1:PLOT 3,0,I,11:NEXT I 2160 GOSUB 21000:INPUT "DO YOU WISH TO MAKE ANY CHANGES? ";A$ 2170 IF LEFT$ (A$,1)= "Y"THEN 2280 2180 GOSUB 21000:INPUT "WHAT IS THE TITLE OF THIS WORD-LIST? ";WL$ 2190 L= LEN (WL$):IF L> 0AND L< 29THEN 2210 2200 GOSUB 21000:PRINT "INPUT ERROR!":GOTO 2180 2210 GOSUB 21000:PRINT "DO YOU WISH TO SAVE THIS WORD LIST? "; 2220 CH= CALL (2):IF CH= 78THEN PRINT "N":GOTO 1000 2230 IF CH< > 89THEN 2220 2240 PRINT "Y":GOTO 3000 2250 Y= INT ((I- 1)/ 3):X= I- 3* Y:Y= Y* 2+ 4:X= (X- 1)* 20+ 1 2260 IF I< 10THEN X= X+ 1 2270 RETURN 2280 GOSUB 21000:INPUT "ENTER NUMBER OF WORD TO CHANGE...";I$ 2290 I= VAL (I$):IF I> 0AND I< = NWTHEN 2310 2300 GOSUB 21000:PRINT "INPUT ERROR!":GOTO 2280 2310 GOSUB 2250:PLOT 3,X,Y:PRINT SPC( 20) 2320 GOSUB 21000:INPUT "ENTER NEW WORD > ";WL$(I) 2330 L= LEN (WL$(I)):IF L> 0AND L< 17THEN 2350 2340 GOSUB 21000:PRINT "INPUT ERROR!":GOTO 2320 2350 PLOT 3,X,Y:PRINT ""I"."WL$(I) 2360 GOTO 2160 3000 REM SAVE WORD LIST 3010 IF NW< 1THEN GOSUB 21000:PRINT "NO WORD LIST!":FOR I= 1TO 1000:NEXT I:GOTO 1000 3020 GOSUB 21000:PRINT "THIS WILL TAKE A MOMENT...." 3030 FILE "T",22000:FILE "R",1,"INDEX",2 3040 FOR I= 1TO 32:GET 1,I;NA$[28] 3050 IF NA$< > WL$THEN 3100 3060 GOSUB 21000:PRINT "THERE IS ALREADY A WORD-LIST NAMED "WL$ 3070 GOSUB 21000:INPUT "ENTER A NEW NAME > ";WL$ 3080 L= LEN (WL$):IF L< 1OR L> 28THEN GOSUB 21000:PRINT "INPUT ERROR":GOTO 3070 3090 FOR J= L+ 1TO 28:WL$= WL$+ " ":NEXT J:GOTO 3040 3100 IF LEFT$ (NA$,5)= " "THEN RN= I:GOTO 3120 3110 NEXT I:RN= I- 1 3120 FI$= "WL"+ MID$ (STR$ (RN),2) 3130 PUT 1,RN;WL$[28],FI$[4]:FILE "C",1 3140 FILE "N",FI$,24,16,24 3150 FILE "R",1,FI$,1 3160 FOR I= 1TO 24:PUT 1,I;WL$(I)[16] 3170 NEXT I:FILE "C",1 3180 GOTO 1000 4000 REM PRINT WORD LIST INDEX 4010 DIM WL$(24) 4020 TM= PEEK (32940)+ PEEK (32941)* 256+ 1 4030 X= 15:Y= 21:H= 3:W= 49:C= 1:LI= Y- 1:GOSUB 20000 4040 FILE "T",22000:FILE "R",1,"INDEX",2 4050 PLOT 6,4,12,2,0,115,242,127,115,127,48,0,48,0,115,255 4060 PLOT 3,24,0:PRINT "WORD-LIST INDEX" 4070 FOR I= 1TO 32:GET 1,I;NA$[28] 4080 IF NA$= " "THEN RETURN 4090 X= 1:IF INT (I/ 2)= I/ 2THEN X= 32 4100 IF I< 10THEN X= X+ 1 4110 Y= INT (I/ 2)+ 4:IF X> 30THEN Y= Y- 1 4120 N$= MID$ (STR$ (I),2) 4130 PLOT 3,X,Y:PRINT ""N$"."NA$:NEXT I 5000 REM LOAD WORD LIST 5010 GOSUB 21000:INPUT "SELECT A WORD-LIST BY NUMBER...";A$ 5020 RN= VAL (A$):LR= I- 1:IF RN< 1OR RN> LRTHEN GOSUB 21000:PRINT "INPUT ERROR":GOTO 5000 5030 GET 1,RN;WL$[28],FI$[4]:FILE "C",1 5040 FOR I= YTO 4STEP - 1:PLOT 3,1,I:PRINT SPC( 62)"":NEXT I:PLOT 8,14,11 5050 FOR I= 27TO 1STEP - 1:IF RIGHT$ (WL$,1)= " "THEN WL$= LEFT$ (WL$,I):NEXT I 5060 PLOT 6,3,3,(64- LEN (WL$))/ 2,1:PRINT WL$"" 5070 FILE "R",1,FI$,1:FOR I= 1TO 24:GET 1,I;WL$(I)[16] 5080 FOR J= 15TO 1STEP - 1:IF RIGHT$ (WL$(I),1)= " "THEN WL$(I)= LEFT$ (WL$(I),J):NEXT J 5090 IF WL$(I)= " "THEN 5110 5100 GOSUB 2250:PLOT 3,X,Y:PRINT I"."WL$(I)"":NEXT I 5110 FILE "C",1:NW= I- 1:RETURN 6000 REM DELETE WORD LIST 6010 GOSUB 21000:PRINT "DO YOU WISH TO DELETE A FILE? "; 6020 CH= CALL (2):PRINT CHR$ (CH):IF CH< > 89THEN 1000 6030 GOSUB 21000:INPUT "WHICH FILE NUMBER DO YOU WISH TO DELETE? ";A$ 6040 RN= VAL (A$):LR= I- 1:IF RN< 1OR RN> LRTHEN GOSUB 21000:PRINT "INPUT ERROR":GOTO 6030 6050 GOSUB 21000:PRINT "ARE YOU QUITE SURE ABOUT THAT? "; 6060 CH= CALL (2):PRINT CHR$ (CH):IF CH< > 89THEN 1000 6070 GOSUB 21000:PRINT "OK, THIS MAY TAKE A WHILE...." 6080 GET 1,RN;WL$[28],FI$[4] 6090 FOR I= RNTO LR 6100 GET 1,I+ 1;WL$[28]:PUT 1,I;WL$[28]:NEXT I:FILE "C",1 6110 GOSUB 21000:PRINT "HERE COME THE NICE PATTERNS...." 6120 IF RIGHT$ (FI$,1)= " "THEN FI$= LEFT$ (FI$,3) 6130 PLOT 27,4:PRINT "DEL "FI$".RND;1":PLOT 27,24 6140 IF RN= LRTHEN 6200 6150 PLOT 12:PRINT "JUST A LITTLE LONGER...." 6160 FOR I= RN+ 1TO LR 6170 V$= STR$ (I):SR$= "WL"+ RIGHT$ (V$,LEN (V$)- 1) 6180 V$= STR$ (I- 1):DE$= "WL"+ RIGHT$ (V$,LEN (V$)- 1) 6190 PLOT 27,4:PRINT "REN "SR$".RND;1 TO "DE$".RND;1":NEXT I:PLOT 27,24 6200 GOTO 1000 7000 REM DISPLAY PUZZLE 7010 PLOT 15:X= 15:Y= 23:H= 3:W= 49:C= 1:LI= Y- 1:GOSUB 20000 7020 REM PUT WORDS IN ARRAY 7030 DIM PU$(24,24):DIM AD(NW,3) 7040 PLOT 3,15,23:PRINT "PUTTING WORDS IN PUZZLE!":PLOT 3,15,26 7050 FOR I= 1TO NW:PLOT 28,11:PRINT TAB( 14)""NW- I+ 1" WORDS TO GO" 7060 X= INT (RND (1)* 24)+ 1:Y= INT (RND (1)* 24)+ 1:X0= X:Y0= Y 7070 XX= INT (RND (1)* 3)- 1:YY= INT (RND (1)* 3)- 1:IF XX= 0AND YY= 0THEN 7070 7080 FOR J= 1TO LEN (WL$(I)) 7090 IF X0> 24OR X0< 1OR Y0> 24OR Y0< 1THEN 7060 7100 IF PU$(X0,Y0)< > ""THEN 7060 7110 X0= X0+ XX:Y0= Y0+ YY:NEXT J 7120 AD(I,0)= X:AD(I,1)= Y:AD(I,2)= XX:AD(I,3)= YY 7130 FOR J= 1TO LEN (WL$(I)) 7140 PU$(X,Y)= MID$ (WL$(I),J,1) 7150 X= X+ XX:Y= Y+ YY:NEXT J 7160 NEXT I 7170 REM DISPLAY PUZZLE 7180 T= PEEK (33209):IF T= 0THEN 7180 7190 RN= RND (- T) 7200 PLOT 6,3,12,14,3,24- (LEN (WL$)/ 2),1 7210 FOR I= 1TO LEN (WL$):PRINT MID$ (WL$,I,1)" e";:NEXT I:PRINT "" 7220 PLOT 6,6:FOR Y= 1TO 24:FOR X= 1TO 24 7230 PLOT 3,X* 2- 2,Y+ 2 7240 IF PU$(X,Y)= ""THEN PRINT CHR$ (INT (RND (1)* 26)+ 65)" ":GOTO 7260 7250 PRINT PU$(X,Y)" " 7260 NEXT X:NEXT Y 7270 PLOT 6,4,2,0,19,242,95,19,95,127,255 7280 PLOT 6,3,3,48,0:PRINT "FIND THESE":PLOT 3,48,1:PRINT "WORDS:-" 7290 FOR I= 1TO NW:PLOT 3,48,I+ 2 7300 PRINT WL$(I):NEXT I 7310 X= 0:Y= 28:H= 4:W= 64:C= 1:LI= Y- 1:GOSUB 20000 7320 GOSUB 21000:PRINT "DO YOU WISH TO PLAY THE GAME? "; 7330 CH= CALL (2):IF CH< > 89THEN 7360 7340 PRINT "Y":GOSUB 21000:PRINT "JUST LET ME THINK ABOUT THIS..." 7350 FX= FRE (X$):PLOT 28,11,28,11:GOTO 9000 7360 IF CH= 27THEN 23000 7370 PRINT ""CHR$ (CH) 7380 GOSUB 21000:PRINT "WOULD YOU LIKE A PRINT OUT OF THIS PUZZLE? "; 7390 CH= CALL (2):IF CH< > 89THEN PRINT :GOTO 1000 8000 REM PRINT PUZZLE 8010 PRINT "Y" 8020 GOSUB 21000:PRINT "ENTER BAUD RATE CODE..."; 8030 CH= CALL (2):IF CH< 49OR CH> 55THEN 8020 8040 BR= CH- 48:PRINT BR 8050 GOSUB 21000:PRINT "TURN PRINTER ON AND HIT RETURN" 8060 GOSUB 21000:CH= CALL (2):GOSUB 8120 8070 GOSUB 21000:PRINT "WOULD YOU LIKE THE SOLUTION PRINTED? "; 8080 CH= CALL (2):IF CH< > 89THEN PRINT :GOTO 8110 8090 PRINT "Y":GOSUB 21000:PRINT "HIT RETURN TO COMMENCE PRINT OUT" 8100 CH= CALL (2):SL= 1:GOSUB 8120 8110 GOSUB 21000:PRINT "TURN PRINTER OFF AND HIT RETURN":CH= CALL (2):GOTO 1000 8120 OF= PEEK (33265):POKE 33289,80:PLOT 27,11,27,18,BR,27,13,31 8130 RN= RND (- T) 8140 TA= (40- LEN (WL$))/ 2:PRINT SPC( TA);WL$:PRINT 8150 FOR Y= 1TO 24:PRINT SPC( 8); 8160 FOR X= 1TO 24 8170 IF PU$(X,Y)= ""AND SL= 0THEN PRINT CHR$ (INT (RND (1)* 26)+ 65);:GOTO 8200 8180 IF PU$(X,Y)= ""AND SL= 1THEN PRINT ".";:GOTO 8200 8190 PRINT PU$(X,Y); 8200 NEXT X:PRINT "" 8210 FOR I= 1TO 500:NEXT I 8220 NEXT Y:PRINT 8230 PLOT 30:PRINT TAB( 6)"FIND THESE WORDS >":PRINT 8240 FOR I= 1TO NWSTEP 4:PRINT TAB( 6)WL$(I)TAB( 23)WL$(I+ 1); 8250 PRINT TAB( 40)WL$(I+ 2)TAB( 57)WL$(I+ 3) 8260 NEXT I:PRINT :PRINT 8270 POKE 33265,OF:PLOT 27,24 8280 RETURN 9000 REM PLAY GAME 9010 PLOT 3,0,31 9020 PRINT "'1'-'9' TO MOVE"TAB( 20)"'0' FOR SCAN"TAB( 40)"'ESC' TO QUIT" 9030 CO= 29057:CN= CO 9040 ZZ= PEEK (CN):POKE CN,67 9050 IF PEEK (CN- 1)= 32THEN POKE CN,91 9060 IF PP= 1THEN W$= W$+ CHR$ (PEEK (CN- 1)) 9070 CO= CN:PLOT 3,64,0,6,0:POKE 33252,0:CH= CALL (2):SO= CALL (0) 9080 IF CH= 48THEN 9290 9090 IF CH= 49THEN CN= CN+ 124 9100 IF CH= 50THEN CN= CN+ 128 9110 IF CH= 51THEN CN= CN+ 132 9120 IF CH= 52THEN CN= CN- 4 9130 IF CH= 53THEN CN= 29057 9140 IF CH= 54THEN CN= CN+ 4 9150 IF CH= 55THEN CN= CN- 132 9160 IF CH= 56THEN CN= CN- 128 9170 IF CH= 57THEN CN= CN- 124 9180 IF CH= 27THEN 9210 9190 IF CN< 29057OR CN> 32095THEN CN= 29057 9200 POKE CO,ZZ:GOTO 9040 9210 PLOT 3,0,29,14:PRINT "WOULD YOU LIKE TO SEE THE SOLUTION? "; 9220 CH= CALL (2):IF CH< > 89THEN PRINT "":GOTO 1000 9230 PRINT "Y":POKE CO,ZZ 9240 FOR X= 1TO 24:FOR Y= 1TO 24 9250 IF PU$(X,Y)< > ""THEN PLOT 3,X* 2- 2,Y+ 2:PRINT PU$(X,Y) 9260 NEXT Y:NEXT X 9270 PLOT 3,0,29,14,11:PRINT "HIT RETURN TO CONTINUE" 9280 CH= CALL (2):GOTO 1000 9290 REM WORD SCAN 9300 IF PP= 1THEN 9330 9310 PP= 1:PLOT 3,0,29,14,11:PRINT "WORD-SCAN IN PROGRESS" 9320 W$= "":GOTO 9060 9330 FOR I= 1TO NW 9340 IF W$= WL$(I)THEN 9380 9350 NEXT I 9360 PLOT 3,0,29,14,11:PRINT "NO MATCH!" 9370 PP= 0:GOTO 9200 9380 PLOT 3,0,29,14,11,31:PRINT "ATTEMPTING TO MATCH..." 9390 FX= FRE (X$):PLOT 3,0,29,14,11:PRINT "YOU HAVE A MATCH!" 9400 PLOT 6,1,3,48,I+ 2:PRINT WL$(I) 9410 X= AD(I,0):Y= AD(I,1):XX= AD(I,2):YY= AD(I,3) 9420 FOR J= 1TO LEN (W$) 9430 PLOT 3,X* 2- 2,Y+ 2:PRINT MID$ (W$,J,1) 9440 X= X+ XX:Y= Y+ YY:NEXT J 9450 PP= 0:ZZ= 1:FW= FW+ 1:IF FW= NWTHEN 9470 9460 PLOT 8:GOTO 9200 9470 PLOT 3,0,29,14,11,15:GOSUB 21000:PRINT "WELL DONE!!!" 9480 GOSUB 21000:PRINT "YOU HAVE FOUND ALL THE WORDS" 9490 GOSUB 21000:PRINT "HIT RETURN TO CONTINUE..." 9500 CH= CALL (2):GOTO 1000 9510 END 10000 REM TITLE PAGE 10010 PLOT 27,24,6,7,12,14 10020 PLOT 3,12,3:PRINT "a b teu {jd neu {jd a b ez ez a {je" 10030 PLOT 3,12,5:PRINT "res vw a | lw a vw y y l l" 10040 PLOT 29,6,2,15,3,0,8 10050 PRINT TAB( 10)"THIS IS A GAME WHERE YOU HAVE TO FIND WORDS" 10060 PRINT TAB( 10)"THAT I HAVE HIDDEN IN A PUZZLE. YOU CAN ENTER" 10070 PRINT TAB( 10)"YOUR OWN WORDS OR YOU CAN USE THE WORDS THAT" 10080 PRINT TAB( 10)"I ALREADY KNOW. WHEN YOU HAVE MADE A WORD" 10090 PRINT TAB( 10)"PUZZLE, YOU WILL HAVE A CHOICE OF PLAYING THE" 10100 PRINT TAB( 10)"GAME OR GETTING A PRINT OUT OF THE PUZZLE.":PRINT 10110 PRINT TAB( 10)"IF YOU CHOOSE TO PLAY THE GAME, YOU WILL SEE A" 10120 PRINT TAB( 10)"YELLOW CURSOR WHICH YOU CAN MOVE AROUND THE" 10130 PRINT TAB( 10)"PUZZLE BY USING THE NUMBER KEYS FROM '1' TO '9'" 10140 PRINT TAB( 10)"WHEN YOU HAVE FOUND ONE OF THE WORDS, PUT THE" 10150 PRINT TAB( 10)"CURSOR ON THE FIRST LETTER OF IT. PRESS THE '0'" 10160 PRINT TAB( 10)"KEY AND YOU WILL SEE THE MESSAGE 'WORD SCAN" 10170 PRINT TAB( 10)"IN PROGRESS'. THEN MOVE THE CURSOR OVER THE" 10180 PRINT TAB( 10)"WORD TO THE LAST LETTER AND PRESS THE '0' KEY" 10190 PRINT TAB( 10)"AGAIN. I WILL THEN CONFIRN WHETHER IT WAS ONE" 10200 PRINT TAB( 10)"OF THE WORDS YOU WERE LOOKING FOR. IF YOU CAN'T" 10210 PRINT TAB( 10)"FIND ALL THE WORDS, PRESS THE 'ESC' KEY. I WILL" 10220 PRINT TAB( 10)"THEN SHOW YOU WHERE THEY WERE HIDING." 10230 PRINT :PRINT TAB( 20)"HIT RETURN TO BEGIN":CH= CALL (2) 10240 RETURN 20000 REM SCROLL POKER 20010 DA= 28672+ 128* Y+ X+ X:AD= TM+ 126:GOSUB 20050 20020 DA= 128- W- W:AD= TM+ 149:GOSUB 20050 20030 POKE TM+ 129,H- 1:POKE TM+ 131,W* (C+ 1) 20040 POKE TM+ 143,35* (1- C):X1= X:Y1= LI+ H:RETURN 20050 Z1= INT (DA/ 256):Z2= DA- Z1* 256 20060 POKE AD,Z2:POKE AD+ 1,Z1:RETURN 21000 REM DO SCROLL 21010 LI= LI+ 1:IF LI> Y1THEN SC= CALL (1):LI= Y1 21020 PLOT 3,0,LI,11 21030 PLOT 3,X1,LI:RETURN 22000 REM FILE ERRORS 22010 GOSUB 21000:PRINT "FILE ERROR!":FILE "E",FL,EN,LN 22020 IF EN= 8OR EN= 10OR EN= 12THEN GOSUB 21000:PRINT "FILE FULL" 22030 IF EN= 14AND (LN= 3030OR LN= 4040)THEN 22050 22040 FOR I= 0TO 1000:NEXT I:GOTO 1000 22050 GOSUB 21000:PRINT "CAN'T FIND 'INDEX' FILE" 22060 GOSUB 21000:PRINT "WILL I CREATE A NEW ONE? "; 22070 CH= CALL (2):IF CH< > 89THEN PRINT :GOTO 1000 22080 PRINT CHR$ (CH):GOSUB 21000:PRINT "THIS WILL TAKE A FEW MOMENTS...." 22090 FILE "T",22000:FILE "N","INDEX",32,32,16 22100 FILE "R",1,"INDEX",2:FOR I= 1TO 32 22110 PUT 1;" "[32] 22120 NEXT I:FILE "C",1:GOTO 3030 23000 REM ESCAPE 23010 PLOT 6,3,14,3,0,31:PRINT "DO YOU WISH TO FINISH? " 23020 CH= CALL (2):IF CH< > 89THEN 1000 23030 PLOT 6,2,15,12,27,4:PRINT "DIR":PLOT 27,11 23040 END