10 REM program X-WORD 20 REM author Roger Sando 30 REM address 30 FRENCH ST. NETHERBY 5062 PH.2720710 40 REM page =&1100 50 REM machine BBC 32K DFS or TFS 60 REM do NOT renumber! 65 IF PAGE>&1100 THEN PAGE=&1100:CHAIN"X-WORD" 70 MODE1:VDU23;8202;0;0;0; 80 *FX4,1 90 *KEY0 *FX4,0 |M MODE0 |M |N LIST |M 100 VDU19,0,1;0;19,2,0;0;19,1,1;0; 110 VDU23,226,192,240,252,255,252,240,192,0 120 VDU23,227,56,124,254,254,254,124,56,0 130 VDU23,228,16,56,84,16,16,16,16,0 140 VDU23,229,16,16,16,16,84,56,16,0 150 PROCscreen 160 PROCgame 170 COLOUR2 180 VDU19,0,1;0;:GCOL1,2:PROCsquare:VDU19,1,7;0; 190 R%=1:C=0 200 RESTORE(B%+C*10):READL:IF L=-1THEN250 210 D$="ACROSS":IF F%=0THEN D$="DOWN " 220 PRINTTAB(3,27)STRING$(39," ");TAB(8,25)D$;TAB(3,27)C$ 230 READF%,C$,A$:M%=L MODSQ:N%=(SQ-1)-(L DIV SQ):PROCguess 240 C=C+1:GOTO200 250 COLOUR128:PRINTTAB(3,27)STRING$(40," ") 260 REPEAT 270 COLOUR2:PRINTTAB(3,27)"HIT SPACE BAR TO PLAY AGAIN" 280 TIME=0:REPEATUNTILTIME>25 290 COLOUR3:PRINTTAB(3,27)"HIT SPACE BAR TO PLAY AGAIN" 300 TIME=0:REPEATUNTILTIME>25 310 UNTIL INKEY(-99) 320 CLS:GOTO80 330 END 340 DEFPROCscreen 350 GCOL0,2:MOVE32,1000:MOVE32,1000-80:PLOT85,1248,1000:PLOT85,1248,1000-80 360 GCOL0,3:MOVE32,1000:DRAW32,1000-84:DRAW1248,1000-84:DRAW1248,1000:DRAW32,1000 370 COLOUR130:COLOUR3:PROCprint("COMPUTER CROSSWORD by Roger Sando",2,1) 380 COLOUR2:COLOUR128:PRINTTAB(3,7)"CHOOSE A CROSS" 390 PRINTTAB(14,6)"W";TAB(14,8)"R" 400 PRINTTAB(3,9)"<1> SMALL D" 410 PRINTTAB(3,10)"<2> BIG";TAB(3,11)"<3> HARD" 420 IF INKEY(-49)THEN B%=1430:VDU19,0,2;0;:GOTO460 430 IF INKEY(-50)THEN B%=1630:VDU19,0,4;0;:GOTO460 440 IF INKEY(-18)THEN B%=2150:VDU19,0,3;0;:GOTO460 450 GOTO420 460 RESTORE B%:READSQ:B%=B%+10 470 COLOUR0:PRINTTAB(16,7)"S":COLOUR2 480 PRINTTAB(26,6)CHR$228;" ";CHR$229;" for CLUE" 490 PRINTTAB(26,8)"A-Z for WORD" 500 PRINTTAB(24,10)"DELETE to ERASE" 510 PRINTTAB(24,12)"@ - REVEAL WORD" 520 PRINTTAB(24,14)"^ when FINISHED" 530 GOTO640 540 DEFPROCprint(A$,X,Y) 550 X%=&900 560 FORT=1TO(LEN A$) 570 B$=MID$(A$,T) 580 ?X%=ASC(B$):Y%=X%DIV256:A%=10:CALL&FFF1 590 VDU23,224,X%?1,X%?1,X%?2,X%?2,X%?3,X%?3,X%?4,X%?4 600 VDU23,225,X%?5,X%?5,X%?6,X%?6,X%?7,X%?7,X%?8,X%?8 610 PRINTTAB(X+T,Y)CHR$224;TAB(X+T,Y+1)CHR$225; 620 NEXT 630 ENDPROC 640 RESTORE (B%-10):READSQ 650 W%=SQ*4:H%=SQ*4 660 X%=96:Y%=692-(H%*8) 670 GCOL0,2 680 MOVEX%,Y%:MOVEX%+W%*12,Y% 690 PLOT85,X%,Y%+12*H% 700 PLOT85,X%+W%*12,Y%+12*H% 710 RESTORE 720 C=0 730 RESTORE (B%+C*10) 740 READ L:IF L=-1 THEN790 750 M%=L MODSQ:N%=(SQ-1)-(L DIV SQ) 760 READ F%,C$,A$ 770 GCOL0,3:PROCsquare 780 C=C+1:GOTO730 790 EN=C-1:ENDPROC 800 DEFPROCsquare 810 I%=0:J%=0 820 FORQ%=0TO (LEN A$)-1 830 IF F%=1 THEN I%=Q% ELSE J%=Q% 840 MOVEX%+(M%+I%)*48+4,Y%+(N%-J%)*48+4 850 PLOT0,40,0:PLOT81,-40,40:PLOT81,40,0 860 NEXT 870 ENDPROC 880 890 DEFPROCgame 900 CLUE=0:K=1:P%=0 910 COLOUR2:COLOUR128:PRINTTAB(3,25)"CLUE";TAB(1,27)CHR$226 920 G%=0:GOTO1030 930 OL=0:*FX15,0 940 R%=0:I=INKEY(5000):IF I=64THEN R%=1:P%=P%+1:GOTO1000 950 IF I=94 THEN ENDPROC 960 IF I<65 THEN930 970 IF I=139THEN OL=-1 980 IF I=138THEN OL=1 990 G%=0:IF OL<>0 THEN 1010 1000 PROCguess:G%=1 1010 IF OL<3 CLUE=CLUE+OL 1020 IF CLUE<0THENCLUE=EN 1030 RESTORE (B%+CLUE*10) 1040 READ L:IFL=-1THEN CLUE=0:GOTO930 1050 IF G%=0:GCOL1,2:PROCsquare 1060 READ F%,C$,A$:IF F%=0 D$="DOWN "ELSE D$="ACROSS" 1070 PRINTTAB(3,27)STRING$(39," ");TAB(8,25)D$; 1080 COLOUR3:PRINTTAB(24,16)"CHEAT COUNT=";P% 1090 COLOUR2:PRINTTAB(3,27)C$ 1100 M%=L MODSQ:N%=(SQ-1)-(L DIV SQ) 1110 IF G%=0:GCOL2,1:PROCsquare 1120 REMT=TIME:REPEATUNTILTIME>T+5 1130 GOTO930 1140 DEFPROCguess 1150 S%=LENA$:M$=A$:U%=M%:V%=N%:A$="?" 1160 VDU5:IF R%=1 THEN1320 1170 GOTO1200 1180 *FX15,0 1190 I=INKEY(5000):IFI=64THENR%=1:P%=P%+1:A$=M$:M%=U%:N%=V%:GOTO1150 1200 IF I=127 THEN1280 1210 IF I<65 OR I>90THEN 1180 1220 GCOL0,1:PROCsquare:GCOL0,2 1230 MOVEX%+M%*48+8,Y%+N%*48+36 1240 PRINTCHR$(I); 1250 IF F%=1 THEN M%=M%+1 ELSE N%=N%-1 1260 S%=S%-1:IF S%=0 THEN VDU4:M%=U%:N%=V%:SOUND1,-10,50,3:SOUND2,-10,10,3:REPEAT UNTIL?&EC=0:ENDPROC 1270 IF R%=1 THEN1320ELSE1180 1280 M%=U%:N%=V%:A$=M$:S%=LEN(A$) 1290 GCOL0,1:PROCsquare:A$="?" 1300 S%=1 1310 GOTO1260 1320 I=ASC(MID$(M$,(LEN(M$)-S%+1))) 1330 GOTO1220 1340 1350 REM FORMAT 1360 REM length of square 1370 REM (1) POSITION ON SQUARE (1st square is zero) 1380 REM (2) DIRECTION (1=across 0=down) 1390 REM (3) CLUE 1400 REM (4) ANSWER 1410 REM -1 end flag 1420 1430 DATA 9 1440 DATA0,1,FAST,SWIFT 1450 DATA1,0,TREE MATERIAL,WOOD 1460 DATA3,0,BEND OVER,FOLD 1470 DATA6,0,LARGE BOWL,BASIN 1480 DATA8,0,MENTAL PICTURE,IMAGE 1490 DATA14,1,AGRICULTURAL LAND,FARM 1500 DATA18,1,EARTH,WORLD 1510 DATA22,0,MANIKIN,DUMMY 1520 DATA30,1,IN THE COURSE OF,DURING 1530 DATA36,0,SWOON,FAINT 1540 DATA38,0,THICK CUT OF MEAT,STEAK 1550 DATA45,1,SEASON,AUTUMN 1560 DATA50,0,NOT ANY,NONE 1570 DATA52,0,INCITE,STIR 1580 DATA58,1,ADOLESCENCE,YOUTH 1590 DATA63,1,TIDY,NEAT 1600 DATA76,1,UNIT OF LENGTH,METRE 1610 DATA -1 1620 1630 DATA13 1640 DATA0,1,TREASURES,HOARDS 1650 DATA0,0,ADELAIDE CITY SQUARE,HURTLE 1660 DATA2,0,PERSON LACKING IN SKIN PIGMENT,ALBINO 1670 DATA4,0,PERFORMS,DOES 1680 DATA5,0,SMALL FISH,SPRAT 1690 DATA7,1,WHIMPER,SOB 1700 DATA7,0,SMILE SCORNFULLY,SNEER 1710 DATA9,0,S.A. VOLCANIC LAKE,BLUE 1720 DATA11,0,COMEDIANS,WITS 1730 DATA17,1,AJAR,OPEN 1740 DATA22,1,DEN,LAIR 1750 DATA23,0,ALOOF,APART 1760 DATA26,1,THIEF,ROBBER 1770 DATA33,1,BREAK OUT,ERUPT 1780 DATA43,1,INDENTICAL,SAME 1790 DATA45,0,COCKTAIL,MARTINI 1800 DATA48,1,DIRECTION,EAST 1810 DATA51,0,PLAYTHING,TOY 1820 DATA52,1,NARROW ROAD,LANE 1830 DATA53,0,OPERATIC SONG,ARIA 1840 DATA55,0,ANCIENT ICELANDIC POEMS,EDDA 1850 DATA57,1,BITTER,TART 1860 DATA60,0,PUNGENT TASTE,TANG 1870 DATA65,1,WEAR AWAY,ERODE 1880 DATA69,0,SNAKE LIKE FISH,EELS 1890 DATA73,1,APPROPRIATELY,APTLY 1900 DATA74,0,BIER,PYRE 1910 DATA76,0,RUN,LOPE 1920 DATA81,1,FATE,DESTINY 1930 DATA91,1,PERTAINING TO BIRTH,NATAL 1940 DATA91,0,BORN,NEE 1950 DATA93,0,FRESH WATER FISH,TROUT 1960 DATA99,1,MAJOR S.A HARVEST,GRAPE 1970 DATA101,0,SKILFUL,ADROIT 1980 DATA103,0,FIRST COURSE,ENTREE 1990 DATA108,1,TUNE,SONG 2000 DATA109,0,PROPRIETOR,OWNER 2010 DATA111,0,MIRROR,GLASS 2020 DATA113,1,GARDEN PARADISE,EDEN 2030 DATA117,1,EPIC POEM,EPOS 2040 DATA118,0,DRAMA,PLAY 2050 DATA120,0,CROOKED,SKEW 2060 DATA122,1,UNTAMED,WILD 2070 DATA125,0,SKETCHED,DREW 2080 DATA131,1,S.A. WEIGHT LIFTER,LUKIN 2090 DATA137,1,ENTHUSIASM,ARDOUR 2100 DATA143,1,FRIEND,MATE 2110 DATA148,1,COMFORT,EASE 2120 DATA159,1,CONFLICT,WAR 2130 DATA163,1,WRAP WITH BANDAGES,SWATHE 2140 DATA-1 2150 DATA13 2160 DATA0,0,GRINDING TOOTH,MOLAR 2170 DATA2,0,MEDITATED,MUSED 2180 DATA5,1,AIM AT HIGH THINGS,ASPIRE 2190 DATA5,0,INSECT,ANT 2200 DATA6,0,EXAMINE CRITICALLY,SCAN 2210 DATA7,0,VIGOR,PEP 2220 DATA10,0,MAKES CERTAIN,ENSURES 2230 DATA12,0,RIVULETS,STREAMS 2240 DATA13,1,ABOUNDING RICHES,OPULENCE 2250 DATA17,0,CHEMICAL COMPOUND,ESTER 2260 DATA23,1,FISH TRAP,NET 2270 DATA30,1,FASTENERS,STAPLES 2280 DATA34,0,NON-CLERICAL,LAIC 2290 DATA35,0,GEMS,EMERALDS 2300 DATA39,1,WATCHFUL,ALERT 2310 DATA40,0,RESTED AGAINST,LEANT 2320 DATA42,0,ONE WHO SELLS TO CONSUMER,RETAILER 2330 DATA47,1,ENTERTAIN,AMUSE 2340 DATA52,1,BUY BACK,REDEEM 2350 DATA57,0,SITUATED BETWEEN,MID 2360 DATA59,1,JETTY,PIER 2370 DATA68,1,NEAT,TRIM 2380 DATA71,0,INSANE,MAD 2390 DATA73,1,BEST PART,CREAM 2400 DATA76,0,FRUIT,APPLE 2410 DATA78,1,WILD OX OF CELEBES,ANOA 2420 DATA78,0,CLASSIFIES,ASSORTS 2430 DATA80,0,OF A HEAVENLY BODIES PATH,ORBITAL 2440 DATA83,1,PERIOD OF TIME,DAY 2450 DATA85,0,THOSE WITHIN VIEW,YON 2460 DATA87,1,SERPENTS,ASPS 2470 DATA91,1,UNDRESS,STRIP 2480 DATA95,0,COUNTRY,PERU 2490 DATA97,1,PUPPET,DOLL 2500 DATA99,0,BURDENS,LOADS 2510 DATA106,1,PRODUCED CURRENT OF AIR,BLEW 2520 DATA111,1,LITTLE ROUNDED LUMP,NODULE 2530 DATA114,0,COMPLETE,UTTER 2540 DATA116,0,IRREGULARLY NOTCHED,EROSE 2550 DATA117,1,WILLOW USED FOR BASKET WEAVING,OSIER 2560 DATA123,0,MAIN ACTOR,STAR 2570 DATA125,1,PLANT,ASTER 2580 DATA132,1,RELIED ON,TRUSTED 2590 DATA135,0,PRONOUN,SHE 2600 DATA137,0,PRINTERS' MEASURES,EMS 2610 DATA143,1,BEVERAGE,TEA 2620 DATA148,1,POPULAR PETS,HAMSTERS 2630 DATA158,1,STRATA,LAYERS 2640 DATA-1