Word Cross

Products: Word Cross
Date: 1983
Type: Program
Platform(s): TS 2068
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$.

Content

Appears On

Related Products

If you enjoy the challenge of crossword puzzles, you’ll enjoy wordcross. To become an expert, you must insert words into...

Related Articles

Related Content

Image Gallery

Word Cross

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<u THEN LET p=d
 2020 PRINT AT p,0;">"
 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 

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

People

No people associated with this content.

Scroll to Top