2 REM To run PROCmkmaps first rename or delete the existing map files. 4 REM This will cause the program to go there by default when RUN. 10 MODE7 20 ONERROR VDU26:OSCLI"FX4,0":CLOSE#S%:CLOSE#D%:END 30 DIM data%(26) 40 : 50 REM **** Load Data **** 60 E%=OPENIN"MAPMAP" 70 IFE%=0:PRINT"Can't find file MAPMAP ":PROChelp:RUN 80 FORI%=1 TO 26 90 L$="" 100 REPEAT:A%=BGET#E%:IFA%<>13:L$=L$+CHR$(A%) 110 UNTILA%=13 120 data%(I%)=VAL(L$) 130 NEXT 140 CLOSE#E%:CLS 150 : 160 L1$=CHR$131+CHR$157+CHR$132 170 L2$=CHR$134+CHR$157+CHR$132 180 PRINTL2$ 190 PRINTL1$"Scrabble Dictionary 2-8 letters" 200 PRINTL2$ 210 PROCtext1 220 PRINTL2$ 230 PRINTL1$"Search for"CHR$135CHR$156" "L1$ 240 PRINTL2$ 250 : 260 REM **** Check Data ***** 270 S%=OPENIN"SDIC" 280 IFS%=0:CLS:PRINT"Can't find file SDIC":END 290 D%=OPENIN"DICMAP" 300 IFD%=0:CLS:PRINT"Can't find file DICMAP":CLOSE#S%:PROChelp:RUN 310 *FX4,1 320 L%=1:word$="xxxxxxxx":word$="" 330 REPEAT 340 REPEAT 350 VDU26 360 VDU28,15,16,25,14 370 VDU30:PRINTword$" ";:VDU8 380 A%=GET 390 IFA%=9:PROCsearch 400 UNTILA%<>9 410 IFA%>64ANDA%<91 OR A%>96ANDA%<123:word$=word$+CHR$(A%) 420 IFA%=127:word$=MID$(word$,1,LEN(word$)-1) 430 VDU30:PRINTword$" ";:VDU8 440 IFLEN(word$)>0 AND ASC(word$)>32 AND VAL(word$)=0:PROCfind 450 UNTILFALSE 460 END 470 : 480 DEFPROCsearch 490 VDU26 500 VDU 31,0,3 510 PROCtext2 520 VDU28,15,24,25,16 530 VDU30 540 PROCread_dic 550 REPEAT 560 A%=GET 570 IFA%=138:PROCnext 580 IFA%=139:PROCprevious 590 UNTILA%=9 600 VDU26 610 VDU 31,0,3 620 PROCtext1 630 VDU28,15,16,25,14 640 ENDPROC 650 : 660 DEFPROCnext 670 L%=PTR#S%+1 680 CLS 690 PROCread_dic 700 ENDPROC 710 : 720 DEFPROCprevious 722 PTR#S%=L% 730 FORI%=1 TO 9 750 REPEAT:T%=PTR#S%-2:PTR#S%=T%:A%=BGET#S%:UNTILA%=13 OR T%=1 770 NEXT 780 PROCnext 790 ENDPROC 800 : 810 DEFPROCfind 820 PROCword 830 K%=data%(c1%) 840 PROCreadmap 850 IFc2%>1:REPEAT:K%=PTR#D%:PROCreadmap:c2%=c2%-1:UNTILc2%=1 OR EOF#D% 860 PROCread_dic 870 ENDPROC 880 : 890 DEFPROCword 900 c1%=(ASC(word$)OR&20)-96 910 IFLEN(word$)<2:c2%=1:ENDPROC 920 c2%=(ASC(MID$(word$,2))OR&20)-96 930 ENDPROC 940 : 950 DEFPROCreadmap 960 PTR#D%=K% 970 L$="" 980 REPEAT:A%=BGET#D%:IFA%<>13:L$=L$+CHR$(A%) 990 UNTILA%=13 OR EOF#D% 1000 L%=VAL(L$) 1010 ENDPROC 1020 : 1030 DEFPROCread_dic 1040 VDU26 1050 VDU28,15,24,25,16 1060 VDU30 1070 PTR#S%=L%-1 1080 t%=1 1090 CLS 1100 REPEAT 1110 REPEAT:A%=BGET#S%:VDUA%:UNTILA%=13 OR EOF#S% 1120 VDU10 1130 t%=t%+1 1140 UNTILt%=9 OR EOF#S% 1150 ENDPROC 1160 : 1170 DEFPROCtext1 1180 PRINT 1190 PRINT"‚Enter one or two letters into the "; 1200 PRINT"‚search box, this is in real time "; 1210 PRINT"‚so they may be changed at anytime. "; 1220 PRINT" "; 1230 PRINT"ƒUse Tab to search deeper. "; 1240 PRINT" "; 1250 PRINT"ƒEsc to quit. "; 1260 PRINT" "; 1270 PRINT" " 1280 ENDPROC 1290 : 1300 DEFPROCtext2 1310 PRINT 1320 PRINT" Use up,down cursor keys, Tab to return "; 1330 PRINT"…- - - - Legal two letter words - - - - "; 1340 PRINT"‚aa ad ae ah ai am an ar as at aw ax ay "; 1350 PRINT"‚ba be bi bo by da de do ef eh el em en "; 1360 PRINT"‚er es et ex fa go ha he hi ho id if is "; 1370 PRINT"‚it jo ka la li lo ma me mi mu my na no "; 1380 PRINT"‚nu od oe of oh om on op or os ow ox oy "; 1390 PRINT"‚pa pe pi re si so ta ti to uh un up us "; 1400 PRINT"‚ut we wo xi xu ya ye " 1410 ENDPROC 1420 : 1430 DEFPROCtext3 1440 PRINT 1450 PRINT"‚This program depends on two data files "; 1460 PRINT"‚DICMAP and MAPMAP to work properly. "; 1470 PRINT"‚Should these files become corrupted or "; 1480 PRINT"‚if you add words to the dictionary then"; 1490 PRINT"‚you can remake these files from here. "; 1500 PRINT"‚ "; 1510 PRINT"ƒRemake MAP files now? y/n "; 1520 PRINT" "; 1530 PRINT" " 1540 ENDPROC 1550 : 1560 DEFPROChelp 1570 VDU26 1580 VDU 31,0,3 1590 PROCtext3 1600 A$=GET$ 1610 IFINSTR("Yy",A$):PROCmkmaps 1620 ENDPROC 1630 : 1640 DEFPROCmkmaps 1650 S%=OPENIN"SDIC" 1660 PRINT'"working...."' 1670 D%=OPENOUT"DICMAP" 1680 E%=OPENOUT"MAPMAP" 1690 : 1700 l1%=0:l2%=0 1710 REPEAT 1720 a1%=BGET#S% 1730 VDU65+l1% 1740 N%=PTR#(S%):K%=PTR#D% 1750 IFa1%=97+l1%:PROCstore(K%,E%):PROCstore(N%,D%):l1%=l1%+1:l2%=1 1760 a2%=BGET#S% 1770 IFa2%>=97+l2%:REPEAT:BPUT#D%,32:PROCstore(N%,D%):l2%=l2%+1:UNTILa2%<97+l2% 1780 REPEAT:A%=BGET#S%:VDUA%:UNTILA%=13 1790 UNTIL EOF#S% 1800 CLOSE#S%:CLOSE#D%:CLOSE#E% 1810 ENDPROC 1820 : 1830 DEFPROCstore(n%,f%) 1840 P$=STR$(n%) 1850 FOR I%=1 TO LEN(P$) 1860 BPUT#f%,ASC(MID$(P$,I%,1)) 1870 NEXT 1880 BPUT#f%,13 1890 ENDPROC