Spellbug

Date: 198x
Type: Program
Platform(s): TS 2068
Tags: Education

Unscramble the words. Uses joystick in the right port, has very nice graphics.

Content

Appears On

Capital Area Timex Sinclair User Group’s Library Tape.

Related Products

Related Articles

Related Content

Image Gallery

Source Code

   10 REM *** PROGRAM SPELLBUG
   15 REM *** UPDATED 2/3/84 PM
   22 PAPER 6: CLS 
   24 PRINT AT 6,13;"THIS";AT 8,14;"IS";AT 10,11;"SPELLBUG"; OVER 1;AT 10,11;"________"
   34 BEEP .5,8: PAUSE 90: BEEP .5,12: CLS 
   36 LET FIRST=0
   40 PRINT AT 8,2;"To delete clues, press DELETE";AT 10,3;"Otherwise, press SPACE BAR"
   42 IF INKEY$=" " THEN LET CLUES=0: BEEP .2,16: GO TO 50
   45 IF INKEY$="0" THEN LET CLUES=1: BEEP .2,16: GO TO 50
   46 GO TO 42
   50 CLS : PAUSE 30: PRINT AT 8,3;"Joystick? Press FIRE BUTTON"
   55 PRINT AT 10,4;"Keyboard? Press SPACE BAR"
   60 IF STICK(2,2)=1 THEN LET JOY=1: BEEP .2,20: GO TO 77
   65 IF INKEY$=" " THEN LET JOY=0: BEEP .2,20: GO TO 77
   70 GO TO 60
   77 PAPER 7: CLS : GO TO 3000
   80 REM *** JOYSTICK ROUTINE
   85 IF D=1 THEN LET X=15: LET USUBX=15: LET Y=16: LET USUBY=16: LET U$=" ": LET W$="\f": PRINT AT X,Y;W$
   90 IF STICK(1,2)=5 OR STICK(1,2)=1 OR STICK(1,2)=9 THEN LET X=X-2: BEEP .01,X
   95 IF STICK(1,2)=6 OR STICK(1,2)=2 OR STICK(1,2)=10 THEN LET X=X+2: BEEP .01,X
  100 IF STICK(1,2)=6 OR STICK(1,2)=5 OR STICK(1,2)=4 THEN LET Y=Y-2: BEEP .01,Y
  105 IF STICK(1,2)=8 OR STICK(1,2)=9 OR STICK(1,2)=10 THEN LET Y=Y+2: BEEP .01,Y
  110 IF Y>31 THEN LET Y=31
  115 IF Y<0 THEN LET Y=0
  120 IF X>15 THEN LET X=15
  125 IF X<0 THEN LET X=0
  130 IF SCREEN$ (X,Y)<>" " THEN IF SCREEN$ (X,Y)<>W$ THEN GO TO 142
  140 IF X<>USUBX OR Y<>USUBY THEN PRINT AT USUBX,USUBY;" ": LET USUBX=X: LET USUBY=Y: LET U$=SCREEN$ (X,Y): PRINT AT X,Y;W$
  142 IF STICK(2,2)=1 THEN BEEP .2,10+INT (RND*10): GO TO 5120
  145 GO TO 90
  150 REM *** ANSWER ROUTINE
  152 LET X=20: LET Y=12: LET Y$="": INK INT (RND*6)+1: PAPER 9
  155 PRINT AT X,Y;"\f"
  160 PAUSE 0: LET Z$=INKEY$
  165 IF Z$=CHR$ 13 AND Y$<>"" THEN GO TO 190
  170 IF Z$=CHR$ 12 AND Y$<>"" THEN PRINT AT X,Y;CHR$ 32: LET Y=Y-1: LET Y$=Y$( TO LEN Y$-1): GO TO 155
  175 IF Z$<CHR$ 32 THEN GO TO 160
  180 LET Y$=Y$+Z$
  185 PRINT INVERSE 1;AT X,Y;Z$: LET Y=Y+1: GO TO 155
  190 INK 0: PAPER 7: PRINT AT X,Y;" ": RETURN 
  195 REM *** MAGNIFY ROUTINE
  500 LET COL=3+J: LET ROW=2+G
  800 PRINT AT 21,0; INK 7; PAPER 7;A$(1,K(H,1))
  850 BORDER (J+G*2)/8+2
  875 INK (J+G*2)/8+1
  900 FOR C=0 TO 7
  960 BEEP .02,(J+G*2)/10*INT (RND*8)
 1000 FOR R=7 TO 0 STEP -1
 1100 IF POINT (C,R)=0 THEN NEXT R: NEXT C: RETURN 
 1140 REM *** ADD UP THE INK-
 1145 REM *** COLORED PIXELS
 1150 LET PIXCT=PIXCT+1
 1300 LET CCOOR=COL-4+(C)+1
 1400 LET RCOOR=ROW+4-(R)+1
 1450 PRINT INVERSE INV;AT RCOOR,CCOOR;X$
 1452 REM *** STORE ARRAY OF
 1453 REM *** COORDINATES OF
 1454 REM *** PRINT CHARACTERS
 1455 LET W(H,PIXCT,1)=RCOOR
 1460 LET W(H,PIXCT,2)=CCOOR
 1465 REM *** STORE ARRAY OF NO.
 1466 REM *** OF PRINT CHARS. FOR
 1467 REM *** EACH LETTER
 1470 LET P(H)=PIXCT
 1600 NEXT R: NEXT C: RETURN 
 1790 REM *** 'GOBBLE-UP' ROUTINE
 1825 IF JOY=1 THEN PRINT AT USUBX,USUBY;" "
 1827 FOR C=1 TO P(H)
 1830 LET WX=W(H,C,1): LET WY=W(H,C,2)
 1840 IF JOY=1 THEN PRINT AT W(H,C,1),W(H,C,2);W$: BEEP .01,2*C-20
 1850 PRINT AT W(H,C,1),W(H,C,2);X$
 1900 NEXT C
 1920 IF JOY=1 THEN LET USUBX=WX: LET USUBY=WY: LET X=USUBX: LET Y=USUBY: PRINT AT X,Y;W$
 1950 IF JOY=0 THEN BEEP .2,INT (RND*20)
 2000 RETURN 
 2195 REM *** 'ERROR' ROUTINE
 2200 CLS : LET P$=M$(1,INT (RND*5)+1)
 2250 FOR P=1 TO 5
 2300 PRINT AT P*3,4*INT (RND*7);P$: BEEP .2,D+5-3*P: NEXT P
 2450 PRINT AT 20,0;"THE CORRECT SPELLING IS ";A$(1)
 2500 BEEP 1,0
 2550 CLS 
 2600 FOR P=0 TO 21
 2650 PRINT AT P,2;A$(1);AT P,12;A$(1);AT P,22;A$(1): NEXT P
 2860 BORDER 7: FOR P=0 TO 21
 2870 PRINT AT P,0;"                                ": BEEP .08,-10-P: NEXT P
 2880 CLS 
 2895 REM *** READ NEXT WORD
 2900 NEXT F
 2910 GO TO 40
 2995 REM *** MAIN PROGRAM
 3000 IF FIRST>0 THEN GO TO 3300
 3010 LET FIRST=1
 3050 DIM A$(2,8): DIM K(8,2): DIM Z(8): DIM P(8): DIM W(8,64,2): DIM M$(3,10,7): DIM G$(10,1): DIM C$(20,1)
 3162 RANDOMIZE 0
 3163 REM *** READ USER-DEF. KEYS
 3165 FOR J=1 TO 8
 3170 READ G$(J): NEXT J
 3178 REM *** READ 'ERROR' AND
 3179 REM *** 'CORRECT' MESSAGES
 3180 FOR S=1 TO 3
 3185 FOR T=1 TO 5
 3190 READ M$(S,T): NEXT T: NEXT S
 3258 REM *** ASSIGN SPEC. CHARS.
 3260 LET C$(1)="\a": LET C$(2)="\b": LET C$(3)="\c": LET C$(4)="\d": LET C$(5)="\e": LET C$(6)="\f": LET C$(7)="\g": LET C$(10)="▀": LET C$(11)="▐": LET C$(12)="▚": LET C$(8)="▜": LET C$(9)="\h"
 3265 ON ERR GO TO 3280
 3270 LET WORDS=0
 3275 READ U$,V$: LET WORDS=WORDS+1: GO TO 3275
 3280 ON ERR RESET 
 3300 FOR F=1 TO 5
 3313 LET W=INT (RND*WORDS)+1
 3315 LET CHAR=.5*(INT (RND*21)+2)
 3318 IF CHAR>9.5 THEN LET X$=C$(10+INT (RND*3))
 3320 IF CHAR<=9.5 THEN LET X$=C$(INT (CHAR))
 3323 LET INV=INT (RND*2)
 3324 IF X$=C$(9) THEN LET INV=0
 3325 REM *** RANDOMLY SELECTS
 3326 REM *** WHETHER TO 'GOBBLE'
 3330 LET GOBBLE=INT (RND*2)
 3340 IF JOY=1 THEN LET GOBBLE=1
 3345 REM *** SET READ POINTER TO
 3347 REM *** RANDOM WORD (FROM
 3348 REM *** LINE 8000, BY 20)
 3350 RESTORE 7980+W*20
 3400 READ Q$,B$: LET A$(1)=Q$
 3450 IF CLUES=1 THEN LET B$=" "
 3500 FOR Z=1 TO 8: LET Z(Z)=Z: NEXT Z
 3800 LET K(1,1)=INT (RND*8)+1
 3850 LET K(1,2)=CODE A$(1,K(1,1))
 3900 LET Z(K(1,1))=0
 3995 REM *** Z() RECORDS WHETHER
 3996 REM *** RANDOM PRINT LOC.
 3997 REM *** IS ALREADY USED;
 3998 REM *** Z(X)=0 IF OCCUPIED
 4000 FOR H=2 TO 7
 4100 LET K(H,1)=INT (RND*8)+1
 4150 LET K(H,2)=CODE A$(1,K(H,1))
 4200 IF Z(K(H,1))=0 THEN GO TO 4100
 4250 LET Z(K(H,1))=0: NEXT H
 4300 FOR Z=1 TO 8
 4400 IF Z(Z)=0 THEN NEXT Z
 4500 LET K(8,1)=Z
 4504 LET K(8,2)=CODE A$(1,K(8,1))
 4520 LET H=0
 4658 REM *** PERFORM MAGNIFY
 4659 REM *** ROUTINE 8 TIMES
 4660 FOR G=0 TO 8 STEP 8
 4680 FOR J=0 TO 24 STEP 8
 4690 LET PIXCT=0: LET H=H+1
 4700 IF A$(1,K(H,1))<>" " THEN GO SUB 500
 4720 NEXT J: NEXT G: INK 0
 4798 REM *** PRINT CLUE
 4800 PRINT AT 18,0;B$
 4818 REM *** DRAW ANSWER BOX
 4820 PLOT 88,20: DRAW 80,0: DRAW 0,-16: DRAW -80,0: DRAW 0,16
 4900 LET X$=" "
 5090 IF JOY=0 THEN GO SUB 152: LET A$(2)=Y$
 5097 REM *** CHECK ANSWER, ONE
 5098 REM *** LETTER AT A TIME
 5100 FOR D=1 TO 8
 5102 IF A$(1,D)=" " THEN GO TO 6000
 5110 IF JOY=1 THEN GO TO 85
 5120 IF JOY=1 THEN LET LETTER=INT (Y/8)+4*INT (X/8)+1: GO TO 5200
 5150 IF A$(2,D)<>A$(1,D) AND CODE A$(2,D)<>CODE A$(1,D)+32 THEN GO TO 2200
 5195 REM *** DETERMINE RANDOM
 5197 REM *** LOCATION OF PRINTED
 5198 REM *** LETTER FOR 'GOBBLE'
 5200 FOR E=1 TO 8
 5300 IF K(E,1)<>D THEN NEXT E
 5400 LET G=INT (E/4.1)*8
 5500 LET J=(E-1)*8
 5600 IF E>4 THEN LET J=(E-5)*8
 5650 LET H=E
 5670 IF JOY=1 THEN IF CODE A$(1,K(LETTER,1))<>K(H,2) THEN GO TO 2200
 5680 IF JOY=1 THEN IF (LETTER<>H AND CODE A$(1,K(LETTER,1))=K(H,2)) THEN LET H=LETTER
 5697 REM *** PERFORM MAGNIFY
 5700 IF GOBBLE<>0 THEN GO SUB 1825
 5750 INK 0
 5800 PRINT AT 20,11+D;A$(2,D)
 5810 IF JOY=1 THEN PRINT AT 20,11+D;A$(1,D)
 5850 IF GOBBLE=0 THEN BEEP .2,D*2
 5900 NEXT D
 6000 IF JOY=0 THEN IF LEN Y$<>LEN Q$ THEN GO TO 2200
 6005 REM *** SCREEN 'VANISH'
 6010 IF GOBBLE=0 THEN FOR R=1 TO 8: PAUSE 10: RANDOMIZE USR 65000: NEXT R: BEEP .2,D*2: RANDOMIZE 0
 6020 REM *** 'CORRECT' ROUTINE
 6025 PAUSE 50: FLASH 1: INK 8
 6057 FOR O=1 TO INT (RND*2)+1
 6058 LET P$=M$(2,INT (RND*5)+1)
 6059 LET J$=M$(3,INT (RND*5)+1)
 6060 LET L1=INT (RND*20): LET L2=INT (RND*24)
 6063 FOR M=1 TO 2
 6075 PAPER 7: BORDER 7: CLS : PAPER INT (RND*6)+1
 6077 BORDER INT (RND*6)+1: CLS 
 6195 REM *** PRINT RANDOM
 6197 REM *** MESSAGES AT RANDOM
 6198 REM *** LOCATIONS
 6200 PRINT AT L1,L2;J$''TAB L2;P$
 6500 BEEP M*.45,INT (RND*13)*M
 6600 NEXT M: NEXT O: FLASH 0: PAPER 7: BORDER 7: CLS 
 6660 REM *** READ NEXT WORD
 6670 NEXT F
 6680 GO TO 40
 6918 REM *** USER-DEFINED KEYS
 6920 DATA "A","B","C","D","E"
 6925 DATA "F","G","H"
 6938 REM *** MESSAGES
 6940 DATA "NO! NO!"
 6945 DATA " NOPE!!"
 6950 DATA "WRONG!!"
 6955 DATA " WHAT?!"
 6960 DATA "NO WAY!"
 6970 DATA " RIGHT!"
 6975 DATA "CORRECT"
 6980 DATA " OKAY! "
 6985 DATA " GOOD! "
 6990 DATA "NOT BAD"
 6991 DATA " THAT'S"
 6992 DATA " YOU'RE"
 6993 DATA " YEAH! "
 6994 DATA " RIGHT!"," "
 7995 REM *** WORDS AND CLUES
 7997 REM *** (START AT LINE 8000
 7998 REM *** & INCREMENT BY 20)
 8000 DATA "GABRIEL","   MY LITTLE HACKER'S NAME IS"
 8020 DATA "MUFFINS","    HIGBEES SERVES DELICIOUS"
 8040 DATA "COMPUTER","    THIS DEVICE IS CALLED A"
 8060 DATA "KEYBOARD"," THESE KEYS ARE ON A --------"
 8080 DATA "MUSEUM"," ART IS DISPLAYED IN A ------"
 8100 DATA "BECCA","  MY LITTLE DAUGHTERS' NAME IS"
 8120 DATA "CEREAL","    OATMEAL OR RAISIN BRAN"
 8140 DATA "WHOLE","THIS DESCRIBES ALL OF SOMETHING"
 8160 DATA "HOLE"," THE MIDDLE OF A DONUT OR BAGEL"
 8180 DATA "BIG","    ANOTHER WORD FOR LARGE"
 8200 DATA "FUNCTION"," WHAT YOU DEFINE WITH 'DEF FN'"
 8220 DATA "MYSTERY","  NANCY DREW SOLVED A -------"
 8240 DATA "OHIO"," CLEVELAND IS IN THE STATE OF"
 8260 DATA "YOGURT","    WE LOVE DANNON© ------"
 8280 DATA "MEMORY"," THIS PROGRAM USES ABOUT 20K OF"
 8300 DATA "SCULPTOR"," HE CREATES WITH CLAY OR METAL"
 8320 DATA "THOUGHT","   SOMETHING THAT YOU THINK"
 8340 DATA "CERAMIC","   SOMETHING MADE OF CLAY IS"
 8360 DATA "MODEM","  A COMMUNICATIONS INTERFACE"
 8380 DATA "STOMACH","     WHERE YOUR FOOD GOES"
 8400 DATA "CABBAGE","      ------- PATCH KIDS©"
 8420 DATA "INTAGLIO","PRINTING PROCESS (IMAGE CUT IN)"
 8440 DATA "RELIEF","PRINTING PROCESS (IMAGE RAISED)"
 8460 DATA "CASSETTE"," TAPES USE A -------- RECORDER"
 8480 DATA "SCHOOL","  JOSH & GABE GO TO CANTERBURY"
 8500 DATA "COLUMNS","  A MATRIX CONTAINS ROWS AND"
 8520 DATA "KUMQUAT"," A FRUIT, WITH JOSHS I.Q., IS A"
 8540 DATA "QUOTIENT"," ANSWER IN A DIVISION PROBLEM"
 8560 DATA "ANSWER","A QUESTION ALWAYS HAS AN ------"
 8580 DATA "ANTIQUE","  EXPENSIVE NAME FOR OLD JUNK"
 8600 DATA "HEIRLOOM","  HANDED DOWN FOR GENERATIONS"
 8620 DATA "BECAUSE"," UNACCEPTABLE ANSWER TO 'WHY?'"
 8640 DATA "SYMBOL","PICTURE, REPRESENTING SOMETHING"
 8660 DATA "ISLAND","BODY OF LAND SURROUNDED BY WATER"
 8680 DATA "SEPARATE","IF THEY'RE NOT TOGETHER, THEY'RE"
 8700 DATA "VASARELY","  THE FATHER OF 'OPTIC ART'"
 8720 DATA "CALENDAR","LOOK AT THE ------ FOR THE DATE"
 8740 DATA "MACHINE","A MECHANICAL DEVICE IS A -------"
 8760 DATA "ACCESS","     RANDOM ------ MEMORY"
 8780 DATA "GRAPHICS","   PICTURES (AS IN 'G' MODE)"
 8800 DATA "COMPILER","TRANSLATES INTO MACHINE LANGUAGE"
 8820 DATA "SERIAL","TRANSMISSION, 1 BIT WIDE STRING"
 8840 DATA "NUCLEAR","RELATING TO THE CORE OF AN ATOM"
 8860 DATA "MERGE","   TO COMBINE THINGS INTO ONE"
 8880 DATA "HEXAGON","A SIX-SIDED FIGURE IS A -------"
 8900 DATA "HUNDREDS","DAD'S IQ IS WAY UP IN THE -----"
 8920 DATA "FEBRUARY","   THE MONTH AFTER JANUARY IS"
 8940 DATA "SCIENCE","   CHEMISTRY, ASTRONOMY, ETC."
 8960 DATA "PROCESS"," A CPU WILL ------- INFORMATION"
 8980 DATA "VARIABLE","    A VALUE THAT CAN CHANGE "
 9000 DATA "PROGRAM"," A SET OF COMPUTER INSTRUCTIONS"
 9020 DATA "BINARY","NUMBER SYSTEM USING ONLY 1 AND 0"
 9040 DATA "DECIMAL"," NUMBER SYSTEM USING 10 DIGITS"
 9060 DATA "RANDOM","   ------ ACCESS MEMORY (RAM)"
 9080 DATA "SYSTEM","  THINGS ACTING TOGETHER ARE A"
 9100 DATA "AMATEUR","  HE DOES SOMETHING AS A HOBBY"
 9120 DATA "SYNTAX","  THE STRUCTURE OF A LANGUAGE"
 9140 DATA "MATRIX","MADE OF ROWS & COLUMNS; AN ARRAY"
 9160 DATA "CIRCUITS","COMPUTERS USE INTEGRATED -------"
 9180 DATA "CARTOON"," INSPECTOR GADGET OR THE SMURFS"
 9200 DATA "BICYCLE","   I LIKE TO RIDE MY -------"
 9220 DATA "ELECTRIC","  YOU MUST PLUG IT IN IF IT'S"
 9240 DATA "CURSOR","SHOWS YOUR POSITION ON TV SCREEN"
 9260 DATA "MAGNETIC","TAPES & DISKS ARE ------ STORAGE"
 9280 DATA "NUTRIENT","SOMETHING NUTRITIOUS CONTAINS A"
 9300 DATA "OXYGEN","THE AIR WE BREATHE CONTAINS ----"
 9320 DATA "PIXEL","WORD, MEANING 'PICTURE ELEMENT'"
 9340 DATA "VERIFY","MAKE SURE THAT SOMETHING IS TRUE"
 9360 DATA "AERIAL"," RELATING TO THE AIR OR FLYING"
 9380 DATA "INDEX"," LOOK HERE TO LOCATE SOMETHING"
 9400 DATA "SPECTRUM","A PRISM BREAKS LIGHT INTO A ----"
 9420 DATA "PRISM","IT BREAKS LIGHT INTO A SPECTRUM"
 9440 DATA "RECEIVE","  I LIKE TO ------- PRESENTS."
 9460 DATA "PARALLEL"," TRANSMISSION, 8 BITS AT A TIME"
 9480 DATA "DIGITIZE"," CONVERT TO NUMERIC INFORMATION"
 9500 DATA "DELETE","    TO GET RID OF OR REMOVE"
 9998 SAVE "SPELLING" LINE 1

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

People

No people associated with this content.

Scroll to Top