.IF DSK1.C3 .CE 2 *IMPACT/99* by Jack Sughrue XB SPEED .IF DSK1.C2  WORD HUNTING Puzzles are a word-processing tool we often forget about. Although I'm not much of a word hunt person (word search, find-a-word, whatever), my fifth-grade students are. I prefer crosswords or cryptograms, but wordhunts have their value. They are also a very pleasant way to introduce the names of bones in the human skeleton or the Presidents or geometrical terms. Computers are great teacher helpers in these matters. All one has to do is find a puzzle-creator program from somewhere and type in the words. The sorting and placement and completion of the puzzle is done by our 99. So is the making of hardcopies of puzzle, wordlist, answers. It's so easy. But not always so quick. Way back in 1982 WORD SAFARI was programmed for TI. It's amazing how many people own it but never use it. Most people got it with OLDIES BUT GOODIES before they got printers or disk drives. By the time they got these things they'd long since forgotten this puzzle gem. I have six word hunt programs, PD and commercial, but there was always a few things about WS that appealed to me. (The "thinking numbers" on the lower right screen, for one.) Though it was soundless and colorless and was SLOW BASIC and had very poor printouts, the program had a structure I liked. The way the menu operation worked appealed to me. I decided to use that original structure to make a more modern version of this puzzle, suited for disk. First it had to be XB for speed and because I don't know assembly. Then it had to have a continuing music pattern while the reading was going on internally. It also had to have color. And some better screen directions. And much better hardcopies (enlarged, double strike, etc.) with a better overall look. It also had to be drastically reduced in size, though XB would take care of some of that automatically. I printed out all six of my word hunt puzzles to see what features I wanted for this new one and how I could most efficiently program it. It was fun. Besides the menu operation, I found the sizes offered were excellent for the different kinds of things I planned to do in my classroom. Each of the programs presented me with interesting concepts and interesting problems. However, after three days (nights, actually) I had a debugged version which satisfied me. Then, as I do with all programs, I gave it to some adults and some kids to play with. The input from them helped me fine tune the project. I then (as I always do) put it away for a couple weeks. Later, I took the "worker" disk out of storage, turned on my Gemini, and set out to do my first "official" school puzzle: names of dinosaurs (thus I had to use the large square). Perfect. I made 27 copies of the puzzle and word list for the kids and one copy of the answers for me. FAST! Then I put this right on my FUNLPLUS! and was ready to use it whenever I word processed. Very handy. I since have added a few subprograms from Jim Peterson's wonderful NUTS 'n BOLTS disk which will not appear in the succinct piece below. Anyway, I'm not permitted to print the six original hunt programs, but if you have a copy of WORD SAFARI and/or some others you might want to try them out if you haven't used them for a while; then print out a copies of the listing. Next type in a copy of WORD HUNT, try it out, and make some comparisons. This will give you a good idea of how I went about the task. Think about some really good programs you recall from the past, dig them out, look them over, see if you can brighten them up, make them better. Sometimes it'll take drastic changes. Sometimes little. But in either case you've had some fun with some programs you probably would have left forgotten in a box in the closet. Now you can enjoy them all over again. NOTE: When I first wrote the program I was going to write it in BASIC. After I translated quite a few line from my flowchart notes, I decided to go into XB. I continued with the PRINT and colon lines instead of DISPLAY AT statements until testing. It turned out to be fine and fast as it was, so I left them in. Those of you who'd like to tighten this even more, adding or changing features, send me a copy. If the improvements are really good, I'll print an update in a future column. (Am also looking for original SHORT programs in XB for inclusion here with full credit.) JACK SUGHRUE, Box 459, E.Douglas MA 01516 WORD HUNT  .TL 126:94; .TL 123:64; .TL 125:38; .TL 124:42; .TL 92:46; .NF 100 {=1 :: CALL CLEAR :: DIM A$(728),A(7),B$(25) 110 C$="0" :: FOR B={ TO 8 : : CALL COLOR(B,2,13) 120 NEXT B :: CALL CHAR(96," 0"):: GOSUB 200 :: PRINT " WORD HUNT PUZZLE ": : : : : : : : : : : :: PRINT " ~~~s trike~~~any~~~key~~~" :: GOS UB 750 130 GOSUB 200 :: PRINT " WOR D HUNT PUZZLE ": : :: PRINT : :" CHOOSE" :: PRINT :" 1 SETUP (CHOOSE FIRST)" :: PRINT :" 2 INPUT PUZZLE" 140 PRINT :" 3 OUTPUT LIS T" 150 PRINT :" 4 OUTPUT ANS WER" :: PRINT :" 5 QUIT": : : : : 160 GOSUB 750 :: IF C<49 THE N 160 170 IF C>53 THEN 160 180 ON C-48 GOSUB 770,230,97 0,870,190 :: GOTO 130 190 CALL CLEAR :: STOP 200 CALL CLEAR :: CALL SCREE N(11):: CALL VCHAR({,{,96,48 ):: CALL VCHAR({,31,96,48):: FOR D={ TO 8 210 CALL SOUND(-999,VAL(SEG$ ("26226229433034939244049452 3587659698784",INT(12|RND+{) |3-2,3)),0,VAL(SEG$("1311751 96",INT(3|RND+{)|3-2,3)),5) 220 NEXT D :: RETURN 230 GOSUB 200 :: PRINT " CHO OSE " :: PRINT :" 1 10 X10 PUZZLE" :: PRINT :" 2 20X20 PUZZLE" :: PRINT : " 3 25X25 PUZZLE": : : : : : : : : : : : 240 GOSUB 750 :: IF C<49 THE N 240 250 IF C>51 THEN 240 260 E=(C-48)|10-5|INT(C/51): : GOSUB 200 :: F={ :: G={ :: H={ :: IF I=0 THEN 280 270 INPUT " TITLE OF PUZZLE? ":D$ :: INPUT " HOW MANY CO PIES? ":F 280 INPUT " HOW MANY WORDS? ":J :: IF J<26 THEN 300 290 PRINT "SORRY: 25-WORD MA XIMUM\" :: GOTO 280 300 FOR B=0 TO J-{ 310 INPUT " WORD "}STR$(B+{) }" ? ":B$(B):: IF LEN(B$(B)) >2 THEN 330 320 PRINT "SORRY: 3-LETTER M INIMUM\" :: GOTO 310 330 IF LEN(B$(B))<11 THEN 35 0 340 PRINT "SORRY: 10-LETTER MAXIMUM\" :: GOTO 310 350 NEXT B 360 INPUT "ANY CHANGES? (Y/N ) ":E$ :: IF E$<>"Y" THEN 39 0 370 INPUT "WHICH NUMBER? ":B 380 INPUT "MAKE CORRECTION?" :B$(B-{):: GOTO 360 390 GOSUB 200 :: PRINT : : : " THINKING\\\" :: A( 0)={ :: A(4)=-{ :: A({)=E+{ :: A(5)=-A({):: A(2)=A({)+{ :: A(6)=-A(2):: A(3)=A(2)+{ :: A(7)=-A(3):: B=E+3 400 K=(E+2)~2-{-B :: FOR L=B TO K :: A$(L)=" " 410 NEXT L :: M=E+2 :: K=M|M -M :: FOR B=0 TO K STEP M :: A$(B)="||" :: A$(B+E+{)="|| " :: A$(B/M)="||" :: A$(K+B/ M)="||" 420 NEXT B :: K=0 :: FOR N=0 TO J-{ :: D=0 430 D=D+{ :: E$=STR$(D)}" " :: CALL HCHAR(23,25,ASC(E$)) :: CALL HCHAR(23,26,ASC(SEG$ (E$,2,{))):: IF D<76 THEN 49 0 440 J=N :: GOSUB 200 :: PRIN T "SORRY: CAN ONLY SQUEEZE I N";STR$(J);" WORDS\": : : : : :: PRINT " CHOOSE" :: PRIN T :" 1 USE ";STR$(J):"P RESENT LIST\" :: PRINT :" 2 BEGIN AGAIN": : : : : : : : : : : : 450 GOSUB 750 :: IF C<>49 TH EN 470 460 GOSUB 200 :: PRINT " THINKING\\\": : : : : : : : : : : : :: GOTO 620 470 IF C=50 THEN 740 480 GOTO 450 490 B=INT(((E+2)~2-E)|RND)+E :: IF A$(B)<>" " THEN 430 500 FOR O=0 TO 7 510 IF K<8 THEN 530 520 K=0 530 L=B+A(K):: FOR P=2 TO LE N(B$(N)):: IF L" " THEN 570 550 L=L+A(K) 560 NEXT P :: GOTO 590 570 K=K+{ 580 NEXT O :: GOTO 430 590 L=B :: FOR P={ TO LEN(B$ (N)):: A$(L)=SEG$(B$(N),P,{) :: A$(L)=A$(L)}A$(L):: L=L+A (K) 600 NEXT P :: K=K+{ 610 NEXT N 620 FOR B=0 TO (E+2)~2-{ :: IF A$(B)<>" " THEN 640 630 A$(B)=CHR$(INT(26|RND)+6 5)}" " 640 NEXT B :: GOSUB 200 :: I F I=0 THEN 660 650 PRINT " P R I N T I N G" 660 FOR M={ TO F :: IF I=0 T HEN 680 670 PRINT #I:CHR$(27)}CHR$(8 7)}CHR$({): : :" ";D$:" ~~~~~~~~~~": 680 FOR B=0 TO E+{ :: PRINT #I:CHR$(27)}CHR$(87)}CHR$({) :" ";:: FOR K=B|(E+2)TO (B +{)|(E+2)-{ :: PRINT #I:SEG$ (A$(K),{,{); 690 NEXT K 700 NEXT B 710 NEXT M :: IF I<>0 THEN 7 30 720 PRINT :" PRESS ANY KEY";:: GOSUB 750 730 PRINT #I:CHR$(27)}CHR$(8 7)}CHR$({): : : 740 RETURN 750 CALL KEY(0,C,Q):: IF Q<= 0 THEN 750 760 RETURN 770 GOSUB 200 :: PRINT " CHO OSE" :: PRINT :" 1 SCREE N" :: PRINT :" 2 PARALLE L PRINTER" :: PRINT :" 3 OTHER": : : : : : : : : : : : : : : : 780 GOSUB 750 :: IF C<49 THE N 780 790 IF C>51 THEN 780 800 I=0 :: IF C=49 THEN 860 810 I={ :: F$="PIO" :: IF C= 50 THEN 830 820 INPUT " DEVICE ? ":F$ 830 IF C$="0" THEN 850 840 CLOSE #{ 850 OPEN #{:F$,OUTPUT :: C$= "1" 860 RETURN 870 GOSUB 200 :: IF I=0 THEN 890 880 INPUT "HOW MANY COPIES? ":G :: PRINT : : :"PRINTING ANSWERS\" 890 FOR M={ TO G :: IF I=0 T HEN 910 900 PRINT #I: : : :" ";D $:" ~~~~~~~~~~": 910 FOR B=0 TO E+{ :: PRINT #I: :" ";:: FOR K=B|(E+2)T O (B+{)|(E+2)-{ :: PRINT #I: SEG$(A$(K),2,{); 920 NEXT K 930 NEXT B 940 NEXT M :: IF I<>0 THEN 9 60 950 PRINT :" PRESS ANY KEY";:: GOSUB 750 960 PRINT #I: : : : :: RETUR N 970 GOSUB 200 :: IF I=0 THEN 990 980 INPUT "HOW MANY COPIES? ":H :: PRINT : : :"PRINTING LIST\" 990 FOR M={ TO H :: IF I=0 T HEN 1010 1000 PRINT #I: : : :" "; D$:" ~~~~~~~~~~": : 1010 FOR B=0 TO J-{ :: PRINT #I:" ";B$(B) 1020 NEXT B :: PRINT #I: : : : 1030 NEXT M :: IF I<>0 THEN 1050 1040 PRINT " PRESS ANY KEY";:: GOSUB 750 1050 RETURN .FI;AD; Հ