--- title: "Word Cross" id: 51816 type: "computer_media" slug: "word-cross" url: "http://localhost/computer_media/word-cross/" markdown_url: "http://localhost/computer_media/word-cross.md" published_at: "2023-08-13T23:14:33+00:00" modified_at: "2026-03-31T23:10:42+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2019/02/20230809-041332.jpg" excerpt: "A word-placement puzzle game that challenges you to cross themed words on an 18×18 grid, with six built-in lists and support for your own custom vocabulary." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "Timex Computer Corporation" slug: "timex-computer-corporation" taxonomy: "post_tag" url: "http://localhost/tag/timex-computer-corporation/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" genre: - name: "Game" slug: "game" taxonomy: "genre" url: "http://localhost/type/game/" media_type: "Program" download_url: "https://archive.org/download/timex-sinclair-software-archive/Word Cross (1983)(Timex)(US)(TS2068)(Cassette).zip" mediadate: "1983" producer_company: - id: 11401 title: "Timex Computer Corporation" type: "company" url: "http://localhost/company/timex-computer-corporation/" images: - url: "http://localhost/wp-content/uploads/2023/08/SCR-20260331-qrlo.png" - url: "http://localhost/wp-content/uploads/2023/08/SCR-20260331-qrju.png" - url: "http://localhost/wp-content/uploads/2023/08/Timex-Wordcross-cassette-box.jpg" - url: "http://localhost/wp-content/uploads/2023/08/Timex-Wordcross-box-front.jpg" - url: "http://localhost/wp-content/uploads/2023/08/Timex-Wordcross-box-back.jpg" related_products: - id: 26077 title: "Word Cross" type: "product" url: "http://localhost/product/word-cross/" media_type_tags: "Game" --- Word Cross is a crossword-placement game in which the player positions words from a themed list onto an 18×18 grid, scoring points each time a letter overlaps (“crosses”) a letter already on the board. The program ships with six built-in word lists (Colors, States of America, Countries, Food, Clothes, Flowers) and allows the player to type in a custom list of up to 20 words of up to 10 letters each. Collision detection is handled entirely in BASIC through a flat 324-character string array that mirrors the grid, with the `fit` subroutine checking all four orthogonal adjacency directions before a placement is accepted or rejected. The logo routine at line 4000 uses CIRCLE and POINT-scanning to draw a filled circle, combined with block-graphic characters to render a stylized banner; a random border/paper color is selected at startup, with colors 2–4 excluded to ensure legibility. *** ## Program Analysis ### Program Structure The program is organized as a collection of named subroutines, with line 10 acting as a symbol table that stores all entry-point line numbers in named variables (e.g., `fit=20`, `squares=100`, `logo=4000`). Line 12 jumps to `start` (line 75), which chains through the major initialization routines before falling into the main game loop at `prog` (line 500). This symbol-table pattern makes the control flow readable and allows line numbers to be changed without hunting through every `GO TO`. ### Grid Representation The 18×18 crossword grid is stored as a single flat string `c$` of 324 characters, initialized with spaces. The mapping from grid row `r` and column `c` to a string index is `q = 18*(r-2) + c-12`, computed at line 20. Words placed across advance by stride `s=1`; words placed down advance by stride `s=18`. The complementary stride `s2 = 19-s` (either 18 or 1) is used in adjacency checks, neatly unifying across/down logic. ### The fit Subroutine (Lines 20–70) This is the collision-detection core. For each letter of the word being placed it sets six Boolean flags: - `f` — the target cell is already occupied by a different letter (hard clash) - `f1` — there is a letter immediately ahead in the perpendicular direction (would create an illegal adjacency) - `f2` — there is a letter immediately behind in the perpendicular direction - `f3` — there is a letter immediately before in the placement direction (word would run into existing content) - `f4` — there is a letter immediately after in the placement direction - `f5` — the letter matches the existing cell content (a valid crossing) - `f6` — signals that a crossing occurred for this specific letter, triggering a score increment and a beep If any of `f` through `f4` is set after iterating over all letters, the placement is rejected via the `fault` subroutine. A placement where every letter matches existing content (all `f6`, making `a1 = w(n)`) is caught at line 598 and routed to the `cheat` handler. ### Word List Subsystem (Lines 2500–2566) Six built-in word lists are stored as space-delimited strings (e.g., `x$`) in subroutines at lines 2510, 2520, 2530, 2540, 2550, and 2560. The `item` subroutine (line 2030) parses `x$` by scanning for space delimiters, populating the `w$()` string array and `w()` length array. The menu at line 2500 selects a list via `GO SUB 2500+10*VAL i$`, a compact computed `GO SUB` that avoids a chain of `IF` statements. Custom word entry is handled by the `ownlist` routine (lines 120–197); re-entry is blocked by a non-empty sentinel `o$`. ### Scoring and Game Progression Each letter that lands on a matching existing letter scores one point (accumulated in `a1` per word, `a` overall). Every five crossings the player is offered a stop/continue choice via the `option` subroutine (line 2100). Reaching 20 crossings triggers the win sequence at line 620. Up to five placement errors are allowed; the mistake counter `m` is tracked in the `mistake` subroutine (line 3030), and exhausting all five attempts routes to a game-over branch at line 3040. ### Logo Routine (Lines 4000–4028) The startup logo at line 4000 picks a random border/paper color excluding codes 2–4 (to avoid dark-on-dark combinations). It draws a filled circle using `CIRCLE` followed by a scanline fill: for each row from 115 to 170, the routine walks pixel-by-pixel with `POINT` until it hits the circle boundary, then draws a horizontal line across the diameter with `DRAW`. Block-graphic characters build a decorative banner. The publisher name is animated by printing it from the edges inward in a loop at lines 4016–4018. ### Input Handling The `ucase` subroutine (line 2000) provides a reusable uppercase-only keypress reader: it loops until a letter is detected (`CODE q$` in A–Z or a–z range) and converts lowercase to uppercase by subtracting 32 from the character code. The custom word-entry routine (line 140 onward) uses a software cursor with delete support via `CHR$ 12` (Spectrum DELETE), rebuilding the input string on each deletion. ### Error Handling Line 3 installs `ON ERR GO TO 9990` as a global error trap. The handler at lines 9990–9993 cascades through `RESET`, a pause, a re-trap, and finally `ON ERR CONTINUE`, attempting to recover gracefully rather than halt. Line 9899 provides a `PAUSE 250: RUN` restart stub. Line 9900 contains the SAVE block with a machine-code companion blob saved as `CODE USR "a", 168`, though this code is not called within the visible BASIC listing. ### Notable Bugs and Anomalies - Line 630 references variable `col` (in `PAPER col`) inside the win-display loop, but `col` is never explicitly assigned — only `col2` is set during play. This will cause an error unless the error trap intervenes. - Line 144 is referenced by the `GO TO 144+2*(i$="")` idiom at line 180, but line 144 does not exist; the nearest lower line is 140. On the Spectrum, a `GO TO` to a non-existent line number jumps to the next higher line, so this is intentional: when `i$` is non-empty it goes to line 146 (re-read key), and when empty it falls through to line 145 (draw cursor). - Line 152 references `GO TO 144` (delete-character logic), again relying on the non-existent-line behavior to land at line 145. - At line 3053, after game over the replay uses `GO TO 530`, but line 530 does not exist; control will fall to line 540, skipping the initial `CLS` and variable resets in lines 500–510, potentially leaving stale state. - Lines 2030–2054 (`item`) assume words in `x$` are always terminated by a space, and that there are always exactly 20 words; if fewer words are present the `FOR i=1 TO w` loop will attempt to index past the end of `x$`. ## Source Code ``` 1 REM Wordcross \ \ \ \ \ \ \ \ \ \ \ 2 REM \* FISHER-MARRIOTT #3 9/2/83 ZX Spectrum 48K 3 ON ERR GO TO 9990 5 LET o$="": LET z$="WORDCROSS": LET a$=" 0": LET d$="\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s": DIM w$(20,11): DIM w(20): DIM c$(324) 10 LET option=2100: LET clear=750: LET clever=1510: LET long=700: LET item=2030: LET prog=500: LET cheat=1500: LET replay=3050: LET mistake=3030: LET ucase=2000: LET choose=2010: LET start=75: LET ownlist=120: LET fault=3000: LET intro=1000: LET fit=20: LET squares=100: LET logo=4000: LET lists=2500 12 GO TO start 19 REM fit 20 LET q=18*(r-2)+c-12 22 IF i<>w(n) THEN GO TO 36 25 IF q+s>324 THEN GO TO 29 27 IF c$(q+s)="\s" THEN GO TO 36 28 LET f5=1 29 IF c$(q)=w$(n,i) THEN GO TO 66 30 IF r+s=37 OR c+s=31 THEN GO TO 36 32 LET f4=1 36 IF i<>1 THEN GO TO 46 37 IF q-s<1 THEN GO TO 40 38 IF c$(q-s)="\s" THEN GO TO 46 39 LET f5=1 40 IF c$(q)=w$(n,i) THEN GO TO 66 41 IF r+s=20 OR c+s=14 THEN GO TO 46 42 LET f3=1 46 IF c$(q)=w$(n,i) THEN GO TO 66 47 IF q-s2<1 THEN GO TO 49 48 IF c$(q-s2)="\s" THEN GO TO 52 49 IF r+s=3 OR c+s=31 THEN GO TO 52 50 LET f2=1 52 IF q+s2>324 THEN GO TO 56 54 IF c$(q+s2)="\s" THEN GO TO 61 56 IF r+s=20 OR c+s=48 THEN GO TO 61 58 LET f1=1 61 IF c$(q)="\s" THEN GO TO 70 63 LET f=1 64 GO TO 70 66 PRINT AT r,c;""+w$(n,i)+"": BEEP .25,12: LET a1=a1+1: PRINT AT 0,26-LEN STR$ (a1+a);""+STR$ (a1+a)+"": LET f6=1 70 RETURN 74 REM start 75 GO SUB logo 76 GO SUB squares 77 GO SUB intro 78 GO SUB lists 79 GO TO prog 99 REM squares 100 FOR i=1 TO 18: LET c$((i-1)*18+1 TO i*18)=d$: NEXT i: RETURN 119 REM ownlist 120 IF o$<>"" THEN GO TO 5000 125 CLS : PRINT "\s\a\s ";z$;AT 5,0;"\a\s\a You may",,"\a\s\a enter up",,"\a\s\a to TWENTY",,"\a\s\a words.";AT 14,0;"\s\a\s Each word",,"\s\a\s may contain",,"\s\a\s up to TEN",,"\s\a\s letters." 127 PRINT AT 21,0;"Press any key when ready"; PAPER 8 128 IF INKEY$="" THEN GO TO 128 129 CLS : PRINT "\s\a\s ";z$;AT 3,0;"\a\s\a End each",,"\a\s\a word with",,"\a\s\a ""ENTER""";AT 9,0;"\s\a\s PRESS 0",,"\s\a\s if your",,"\s\a\s LAST WORD",,"\s\a\s comes",,"\s\a\s BEFORE",,"\s\a\s NUMBER 20." 130 PRINT AT 18,0;"\a\s\a If you make",,"\a\s\a a MISTAKE,",,"\a\s\a press SHIFT",,"\a\s\a and DELETE." 131 PRINT AT 12,20;"Press any";AT 13,20;"key when";AT 14,20;" ready " 133 IF INKEY$="" THEN GO TO 133 134 PRINT AT 12,20;" ";AT 13,20;" ";AT 14,20;" ": FOR i=1 TO 20 138 PRINT AT i,18-(i>9);i;"> <" 139 IF INKEY$<>"" THEN GO TO 139 140 LET p=20: LET n$="" 145 PRINT AT i,p;"\s" 146 LET i$=INKEY$: IF i$="" THEN GO TO 146 152 IF i$=CHR$ 12 AND p>20 THEN PRINT AT i,p-1;" ": LET p=p-1: LET n$=n$( TO LEN n$-1): GO TO 144 155 IF i$=CHR$ 13 AND n$<>"" THEN GO TO 190 158 IF i$="0" AND n$="" AND i>2 THEN LET i=20: GO TO 194 160 IF CODE i$<65 OR CODE i$>122 THEN GO TO 138 161 IF CODE i$>90 AND CODE i$<97 THEN GO TO 138 164 LET n$=n$+i$: PRINT AT i,20;n$: IF LEN n$>10 THEN GO TO 138 166 LET p=p+1 180 GO TO 144+2*(i$="") 190 PRINT AT i,p;" ";AT i,30;" ": LET w$(i)=n$: LET w=i: LET w(i)=LEN n$ 194 NEXT i: LET o$="YES": CLS : PRINT AT 10,0;"\a\s\a Thank you for the words.",,,,,"\a\s\a WORDCROSS coming soon." 197 FOR i=1 TO 100: NEXT i: RETURN 499 REM prog 500 CLS : LET a=0: LET a2=0: LET a$=" 0": LET m=0: LET p=10: LET u=11-INT (w/2): LET d=u+w-1 501 CLS : PRINT TAB 16;" Score: ";a$;" "; PAPER 8;TAB 12;" ABCDEFGHIJKLMNOPQR " 502 FOR i=1 TO 17 STEP 2: PRINT AT i+1,12;""+CHR$ (i+64)+"";TAB 31;""+CHR$ (i+64)+"";TAB 12;""+CHR$ (i+65)+"";TAB 31;""+CHR$ (i+65)+"": NEXT i 503 PRINT TAB 12;" ABCDEFGHIJKLMNOPQR " 505 FOR i=0 TO 17: PRINT PAPER 0;AT i+2,13;c$(18*i+1 TO 18*i+18): NEXT i 507 FOR i=0 TO 10-w/2: PRINT AT i,0;TAB 12: NEXT i 510 GO SUB choose: GO SUB clear 540 LET n=p-u+1: PRINT AT 1,0;"";w$(n, TO w(n));""; PAPER 8;AT 3,0;"Start at";AT 5,0;"Column >>?"; 541 GO SUB ucase: IF q$>"R" THEN GO TO 541 542 PRINT CHR$ 8;"";q$;"": LET c=CODE q$-52: LET c1=c: PRINT AT 1,c;"\s";AT 20,c;"\s";AT 7,0;"Row >>>>>?";: GO SUB ucase 544 PRINT CHR$ 8;"";q$;"";: LET r=CODE q$-63: LET r1=r: PRINT AT r,12;"\s";AT r,31;"\s";AT r,c;"*";AT 9,0;"O.K.";AT 10,0;"(Y OR N)?" 546 GO SUB ucase: IF q$<>"Y" AND q$<>"N" THEN GO TO 546 560 IF q$="N" THEN GO TO 501 563 PRINT AT 9,0;"Press";AT 10,0;"A Across ";AT 11,0;"D Down" 565 GO SUB ucase: GO TO 565+2*(q$="A" OR q$="D") 567 PRINT AT 9,0;" ";AT 10,0;" ";AT 11,0;" " 568 LET s=(q$="A")+18*(q$="D"): LET s2=19-s 572 IF (s=1 AND (c+w(n)>=32)) OR (s=18 AND (r+w(n)>=21)) THEN GO SUB long: GO SUB mistake: GO TO replay 580 LET f5=0: LET a1=0: FOR i=1 TO w(n): LET f=0: LET f1=0: LET f2=0: LET f3=0: LET f4=0: LET f6=0: GO SUB fit 582 IF f OR f1 OR f2 OR f3 OR f4 THEN GO SUB fault: GO SUB mistake: GO TO replay 590 LET col2=INT (RND*6)+1 592 IF f6 THEN GO TO 596 594 PRINT PAPER col2;AT r,c;w$(n,i): BEEP .1,-12 596 LET r=r+(s=18): LET c=c+(s=1): NEXT i 598 IF a1=w(n) THEN GO SUB cheat: GO SUB mistake: GO TO replay 599 IF f5 THEN GO SUB clever 600 FOR i=w(n) TO 1 STEP -1: LET c$(q)=w$(n,i): LET q=q-s: NEXT i 601 LET a=a+a1: IF a>=20 THEN GO TO 620 604 IF INT (a/5)>a2 THEN LET A2=A2+1: GO TO option 606 LET a$=(" " AND a<10)+STR$ a: PRINT PAPER 7;AT 0,24;a$ 608 IF f5 THEN GO TO 501 610 BRIGHT 1: PRINT AT 1,c1;CHR$ (c1+52);AT 20,c1;CHR$ (c1+52);AT r1,12;CHR$ (r1+63);AT r1,31;CHR$ (r1+63): BRIGHT 0: GO TO 505 620 PAUSE 200: CLS 622 PRINT AT 12,0;"Well done",,"You have made ";a;" crossings,","and you have won the game.";AT 16,0;"Press any key" 626 IF INKEY$="" THEN GO TO 626 630 CLS : BRIGHT 1: PRINT AT 1,6;"\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a": FOR i=0 TO 17: PRINT AT i+2,6;"\a"; PAPER 7;c$(18*i+1 TO 18*i+18); PAPER col;AT i+2,25;"\a": NEXT i: PRINT AT 20,6;"\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a": BRIGHT 0 632 PRINT AT 1,0;"Press";AT 3,0;"C to";AT 4,0;"copy";AT 6,0;"P to";AT 7,0;"play";AT 8,0;"again";AT 9,0;"using";AT 10,0;"the";AT 11,0;"same";AT 12,0;"words";AT 14,0;"N for";AT 15,0;"a new";AT 16,0;"game";AT 19,0;"S to";AT 20,0;"stop" 633 LET q$=INKEY$: IF q$="" THEN GO TO 633 635 GO SUB 2006 637 IF q$="C" THEN PRINT AT 0,5: FOR i=1 TO 20: PRINT TAB 5;" ": NEXT i: COPY : GO TO 632 639 IF q$="P" THEN GO SUB squares: GO TO prog 640 IF q$="N" THEN GO SUB squares: GO TO 78 642 IF q$<>"S" THEN GO TO 633 644 CLS : PRINT AT 10,0;"\a\s\a ";z$;AT 12,4;"If anyone wants to play,";AT 13,4;"press any key";AT 14,4;"-------------" 648 IF INKEY$<>"" THEN RUN 650 GO TO 648 699 REM long 700 PRINT AT 15,0;w$(n, TO w(n));AT 16,0;"is too long"; PAPER 8;AT 17,0;"to fit,";AT 18,0;"going";AT 19,0;""+("across." AND s=1)+("downwards." AND s=18);AT 21,0;"Press any key"; PAPER 8 702 IF INKEY$<>"" THEN GO TO 702 704 IF INKEY$="" THEN GO TO 704 706 RETURN 749 REM clear 750 PRINT AT 0,0;: FOR i=0 TO 20: PRINT TAB 11;" ": NEXT i: PRINT TAB 31;" ": RETURN 999 REM intro 1000 CLS : FOR i=1 TO 9: IF i=5 THEN PRINT AT 12,4;"C": BEEP .25,24: GO TO 1002 1001 PRINT AT 7+i,4;""+z$(i)+"";: BEEP .1,12: PRINT AT 12,i-1;""+z$(i)+"": BEEP .1,12 1002 NEXT i: BEEP .25,12 1003 PRINT AT 2,13;"\a Your aim is to";AT 3,13;"\a fit words on";AT 4,13;"\a to a grid, making";AT 5,13;"\a them ""cross"".";AT 7,13;"\s You can choose";AT 8,13;"\s to stop after";AT 9,13;"\s 5,10,15, or 20";AT 10,13;"\s crossings.";AT 12,13;"\a Your WORDCROSS";AT 13,13;"\a will then";AT 14,13;"\a be complete." 1004 PRINT AT 16,13;"\s But"; PAPER 8;", you are not";AT 17,13;"\s allowed more than";AT 18,13;"\s FIVE mistakes.";AT 20,13;"Press any key"; PAPER 8 1005 IF INKEY$="" THEN GO TO 1005 1006 RETURN 1499 REM cheat 1500 CLS : PRINT AT 10,0;"\a\s\a It is no good";AT 11,4;"trying to get extra points";AT 12,4;"that way." 1503 PRINT AT 14,0;"Over-printing is not allowed.";AT 15,0;"\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''"; INK 9 1504 PRINT AT 18,4;"Press any key" 1505 IF INKEY$<>"" THEN GO TO 1505 1506 IF INKEY$="" THEN GO TO 1506 1508 RETURN 1509 REM clever 1510 CLS : PRINT AT 10,0;"\a\s\a That is very clever,";AT 11,4;"but it is not really a";AT 12,4;z$;".";AT 16,4;"However, I will allow it.";AT 18,4;"Press any key" 1514 IF INKEY$="" THEN GO TO 1514 1516 RETURN 1999 REM ucase 2000 IF INKEY$<>"" THEN GO TO 2000 2002 LET q$=INKEY$: IF (q$<"a" OR q$>"z") AND (q$<"A" OR q$>"Z") THEN GO TO 2002 2006 IF CODE q$>96 THEN LET q$=CHR$ (CODE q$-32) 2007 RETURN 2009 REM choose 2010 FOR i=1 TO w: PRINT AT u+i-1,0;" "+w$(i): NEXT i 2012 PRINT AT 0,0;"Which"; PAPER 8;" ";"word"; PAPER 8;"?";AT p,0;">";AT 21,0;"Press U or D to move, S to STOP" 2015 LET q$=INKEY$: GO SUB 2006: IF q$<>"S" AND q$<>"U" AND q$<>"D" THEN GO TO 2015 2016 IF q$="S" THEN PAPER col: GO TO 2028 2017 PRINT PAPER col;AT p,0;" "+w$(p-u+1, TO w(p-u+1)) 2018 IF q$="D" THEN LET p=p+1: IF p>d THEN LET p=u 2019 IF q$="U" THEN LET p=p-1: IF p" 2021 PAPER 7: IF col=0 OR col=7 THEN PAPER INT (RND*6)+1 2022 PRINT AT p,1;w$(p-u+1, TO w(p-u+1)); PAPER col: BEEP .075,-12 2024 GO TO 2015 2028 RETURN 2029 REM items 2030 LET l=LEN x$: LET c=0: LET w=20: CLS : FOR i=1 TO w: LET s=c+1 2042 LET c=c+1: IF x$(c)=" " THEN GO TO 2050 2048 GO TO 2042 2050 LET col2=INT (RND*8): IF col2=col THEN GO TO 2050 2052 PAPER col2: LET w$(i)=x$(s TO c-1): LET w(i)=c-s: PRINT AT i,5;"Found"; PAPER col;" ";"";w$(i, TO w(i));"" 2054 NEXT i: PAUSE 200: PAPER col: RETURN 2099 REM option 2100 CLS : PRINT AT 10,0;"\a You have made ";a;" crossings.";AT 12,0;"\s Choose";AT 14,5;"S to stop.";AT 16,5;"C to carry on." 2105 IF INKEY$<>"" THEN GO TO 2105 2110 IF INKEY$="S" OR INKEY$="s" THEN GO TO 630 2112 IF INKEY$="C" OR INKEY$="c" THEN CLS : LET f5=1: GO TO 606 2114 GO TO 2110 2499 REM lists 2500 CLS : PRINT "\a\s\a Lists for ";z$;AT 4,0;"CHOOSE",,,,,,"1 Colors",,,,"2 States of America",,,"3 Countries",,,,"4 Food",,,,"5 Clothes",,,,"6 Flowers",,,,"7 Put in your own list" 2501 LET i$=INKEY$: IF i$="7" THEN GO SUB ownlist: RETURN 2502 IF i$>"0" AND i$<"7" THEN LET w=20: GO SUB 2500+10*VAL i$: GO SUB item: RETURN 2503 GO TO 2501 2510 LET x$="indigo maroon red blue green yellow scarlet navy pink orange brown white black gold silver purple gray fawn sepia cream " 2514 LET n$="Colors" 2516 RETURN 2520 LET x$="OREGON NEBRASKA ARKANSAS IDAHO WASHINGTON ILLINOIS FLORIDA LOUISIANA OKLAHOMA UTAH GEORGIA HAWAII MINNESOTA MICHIGAN MAINE CALIFORNIA NEVADA TEXAS MISSOURI KENTUCKY " 2524 LET N$="States of America" 2526 RETURN 2530 LET X$="FRANCE SPAIN PORTUGAL BRAZIL COLOMBIA CHILE CHINA INDIA BURMA AUSTRALIA ZIMBABWE ALGERIA ISRAEL TURKEY CANADA MEXICO NIGERIA GERMANY ENGLAND IRELAND " 2534 LET N$="Countries" 2536 RETURN 2540 LET x$="sugar honey peanuts popcorn cornflakes bacon egg sausage hamburgers tomatoes bread butter candy lettuce cucumber fruit vegetables cookies spaghetti beans " 2544 LET n$="Food" 2546 RETURN 2550 LET x$="slacks skirt jumper vest socks belt raincoat shoes pants shirt blouse boots sweater tights sneakers tie jeans cap slippers pajamas " 2554 LET n$="Clothes" 2556 RETURN 2560 LET x$="rose pansy carnation daffodil magnolia buttercup tulip crocus snowdrop lily daisy zinnia clematis iris poppy lilac laburnum hyacinth camellia orchid " 2562 LET n$="Flowers" 2566 RETURN 2999 REM fault 3000 PRINT AT 14,0; 3001 IF f THEN PRINT c$(q);" and ";w$(n,i) 3002 IF f1 THEN PRINT w$(n,i);" and ";c$(q+s2) 3003 IF f2 THEN PRINT c$(q-s2);" and ";w$(n,i) 3004 IF f3 THEN PRINT c$(q-s);" and ";w$(n,i) 3005 IF f4 THEN PRINT w$(n,i);" and ";c$(q+s) 3006 PRINT "do not fit"; PAPER 8 3012 PRINT AT r,c;""+w$(n,i)+"" 3014 IF f1 THEN PRINT AT r+(s=1),c+(s=18);""+c$(q+s2)+"" 3016 IF f2 THEN PRINT AT r-(s=1),c-(s=18);""+c$(q-s2)+"" 3018 IF f3 THEN PRINT AT r-(s=18),c-(s=1);""+c$(q-s)+"" 3020 IF f4 THEN PRINT AT r+(s=18),c+(s=1);""+c$(q+s)+"" 3022 IF INKEY$<>"" THEN GO TO 3022 3025 IF f THEN PRINT AT r,c;w$(n,i): PAUSE 10: PRINT AT r,c;c$(q): PAUSE 10 3026 PRINT AT 21,0;"Press any key"; PAPER 8 3027 IF INKEY$="" THEN GO TO 3025 3028 RETURN 3029 REM mistake 3030 LET M=M+1: CLS : PRINT AT 10,0;"\a\s\a You have made ";m;" mistake"+("s" AND m>1);"." 3031 IF m=5 THEN GO TO 3040 3033 PRINT AT 14,0;"\a\s\a You have ";5-m;" chance"+("s" AND m<>4);" left.": GO TO 3045 3040 PRINT AT 14,0;"\a\s\a Sorry, that was your";AT 15,4;"last chance." 3045 PRINT AT 20,4;"Press any key"; PAPER 8 3046 IF INKEY$<>"" THEN GO TO 3046 3047 IF INKEY$="" THEN GO TO 3047 3048 RETURN 3049 REM replay 3050 IF m<5 THEN GO TO 501 3052 CLS : PRINT AT 5,4;"\a\s\a ";z$;AT 12,4;"Press";AT 14,4;"A To play again,";AT 15,7;"using the same words.";AT 18,4;"B To play again,";AT 19,7;"but with new words." 3053 GO SUB 2000: IF q$="A" THEN GO TO 530 3055 IF q$="B" THEN GO TO 110 3057 GO TO 3053 4000 LET col=INT (RND*8): IF col=2 OR col=3 OR col=4 THEN GO TO 4000 4001 BORDER col: PAPER col: CLS : INK 9: CIRCLE 128,115,56 4002 DIM c$(324) 4003 LET p=72: FOR i=115 TO 170 4005 IF POINT (p,i) THEN PLOT p,i: DRAW 2*(128-p),0: BEEP .01,p-72: PLOT p,230-i: DRAW 2*(128-p),0: BEEP .01,p-72: GO TO 4007 4006 LET p=p+1: GO TO 4005 4007 NEXT i 4009 IF col>3 THEN PAPER 0: INK 7: BRIGHT 1 4010 IF col>3 THEN PAPER 7: INK 0 4011 FOR j=4 TO 8: PRINT AT j,11;" \::\::\::\::\ \::\ \::\ ": NEXT j 4013 PRINT AT 4,12;"\..\..\..\::\ \..\ \..";AT 6,12;"\..\..": PAPER col: INK 9: BRIGHT 0 4014 PRINT AT 10,15;"-": FOR J=0 TO 7 4016 PRINT AT 10,j;" FISHER";AT 10,24-j;"MARRIOTT"; PAPER col;" ": BEEP .1,42-6*j: BEEP .1,39-6*j: NEXT j 4018 PRINT AT 10,8;" FISHER-MARRIOTT"; PAPER col;" "; INK 9 4020 PRINT AT 16,2;"\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''" 4022 PRINT TAB 3;"\: \: \: ";TAB 3;"\: \: \h\i\j\d\' \h\i\: \h\i\j\d\' \h\i\j\h\i\j\h\i\j";TAB 3;"\: \: \: \: \: \: \: \: \: \: \: \: \q\i\j\q\i\j";TAB 3;"\e\f\e\f\g\e\f\g\: \e\f\: \e\f\g\: \e\f\g\e\f\g\e\f\g";TAB 2;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\.."; INK 9 4023 PRINT AT 12,13;"\* 1983": BEEP 1,-24: PAUSE 250 4028 RETURN 5000 CLS : PRINT PAPER 7;AT 5,0;"\a\s\a Wordcross";AT 10,0;"You have already entered a word-list."''"If you really want to enter another list, you will have to BREAK, and re-RUN.";AT 21,0;"Press any key" 5002 IF INKEY$<>"" THEN GO TO 5002 5004 IF INKEY$="" THEN GO TO 5004 5006 GO TO start+1 9899 PAUSE 250: RUN 9900 CLEAR : SAVE "wordcross" LINE 9902: SAVE " "CODE USR "a",168: STOP 9902 LOAD ""CODE : RUN 9990 ON ERR RESET 9991 PAUSE 100 9992 ON ERR GO TO 9990 9993 ON ERR CONTINUE 9998 STOP 9999 VERIFY "": VERIFY ""CODE ```