Dec 222017
 
WordsWorth Version 1.1 -- The 'Ultimate' Crossword Game.
File WW11.ZIP from The Programmer’s Corner in
Category Games and Entertainment
WordsWorth Version 1.1 — The ‘Ultimate’ Crossword Game.
File Name File Size Zip Size Zip Type
ALICE.DEF 733 346 deflated
BIBLE.DEF 734 366 deflated
BOARD21.CFG 281 170 deflated
BOARD21.DEF 562 142 deflated
BOARD7.CFG 278 169 deflated
BOARD7.DEF 126 78 deflated
CIA.DEF 768 372 deflated
COLOR.DEF 2446 807 deflated
COLOUR.CFG 185 101 deflated
DIAMOND.CFG 281 171 deflated
DIAMOND.DEF 328 121 deflated
EGA.DEF 56 45 deflated
FILELIST.DEM 1425 417 deflated
GRIDBRD.CFG 281 171 deflated
GRIDBRD.DEF 330 116 deflated
HERC.DEF 71 55 deflated
JARGON.DEF 740 364 deflated
LEVEL.DEF 2931 1314 deflated
MONO.DEF 2118 627 deflated
README 46798 15739 deflated
README.1ST 1605 856 deflated
SCRABBRD.CFG 282 172 deflated
SCRABBRD.DEF 519 241 deflated
SCRABTIL.DEF 679 251 deflated
SETUP.CFG 2784 1050 deflated
SETUP.EXE 9468 9144 deflated
SVGA.DEF 67 53 deflated
VGA.DEF 56 45 deflated
WWDEM.EXE 104544 100300 deflated
WWDICT.DEM 46572 46572 stored

Download File WW11.ZIP Here

Contents of the README file





WordsWorth v1.1

The `Ultimate' CrossWord Game

by

Graham Wheeler


(c) 1992 All Rights Reserved



WORDSWORTH INSTRUCTIONS
=======================

Contents
========
0. Welcome
1. Configuration
2. Game Overview
3. Command Line Options
4. Playing the Game
4.1 C(onsult) - Consult the dictionary.
4.2 H(int)- Request a hint.
4.3 U(ndo) - Undo moves.
4.4 R(edo) - Replay undone moves.
4.5 Q(uit) - Quit and return to DOS.
4.6 S(ave) - Save the current sequence of moves.
4.7 L(oad) - Load a saved game.
4.8 A(cross) - Play across move; D(own) - Play down move.
4.9 P(ass) - Pass turn, and (optionally) discard some tiles.
4.10 X(change) - Pick up blank tile from board
4.11 F1 - Help
4.12 N(ext move) - Make program play a different move.
4.13 W(atch) - Start or resume autoplay mode
4.14 V(iew) - Toggle opponent tile view on/off

5. Saved Games
6. Ending the Game

APPENDIX A - Format of Configuration Files
APPENDIX B - Format of Saved Game Files
APPENDIX C - Format of the Setup Configuration File

0. Welcome
----------

Welcome to WordsWorth!

WordsWorth was inspired by an article in Communications of the
ACM in May 1988, entitled `The World's Fastest Scrabble Program'.
I had always been a frustrated Scrabble player. I take ages to
move, generally play pretty badly anyway, and dislike waiting
for my opponent. As a result, I decided to write my own program,
which would have both infinite patience and lightning response
time ;-).

It soon became clear that the principles involved were not bound
by the rules of Scrabble as such, but more by the concept of crosswords.
Imposing rules simply implied restricting the set of possible moves.
The idea of a general-purpose crossword game playing engine was born!

It has taken a long time to complete (I had a lot of other things to
do 8-( ), but I think it has been worth it. WordsWorth allows you
to design your own crossword games. If you like Scrabble, you
can use WordsWorth as a Scrabble opponent (although not with the
official Scrabble dictionary); or you can be creative, and design
your own games.

You can create any size and shape board up to a 21x21 square, and
pepper it with black crossword squares that can't be played upon.
You can make any square a single, double, triple, quadruple, etc
letter or word score type, up to 11 times! You can play free-form
on the board, or be forced to build on to the existing structure
(as in Scrabble). You can play a territorial game in which you have
to build on to your own structure. You can specify what letters are
available, how much they are worth, and give them a strategic `weight'.
You can save and restore games, and undo and redo all the moves.
And you can control the level and style of your computer opponent.
The possibilities are immense. Now it is up to you!

Please send your comments, bug reports, flames, and anything
else to [email protected]. I have tried to make WordsWorth
as generic and general as possible; if you have suggestions,
particularly about further generalisation, let me know!

DISCLAIMER - This software is distributed without a warranty of
any sort. You use this software at entirely your own risk. I will
not be responsible for any loss, damage, injury, death, disaster,
plagues, famine, divorces, disagreements, etc that may result from
the use of this software.


1. Configuration
----------------

If you are new to WordsWorth, you should skip this section,
and run the included SETUP.EXE program to create a
configuration file. The SETUP program will ask you a number
of questions about, amongst other things, your video hardware,
what board layout you require, and so on, and then write a
suitable configuration file to disk. You can then run
WordsWorth (WW.EXE) directly. When you want to explore the
possibilities of WordsWorth further, or maintain multiple
configurations, you should read this section.

WordsWorth is highly configurable. At this stage you need
to be able to use a text editor to change the configuration,
as it is stored in plain text files. WordsWorth includes
several example `configuration definition files' which can
be combined together into configuration files using the
supplied SETUP program. However, you will probably want to
learn how to create your own configuration definitions at
some stage.

The configuration elements have names which are mostly
self-explanatory. A comment begins with a`#' character;
everything from that character to the end of the line is
ignored. Whitespace in the file is also ignored; this is
why the mask tiles, draw tiles, and score have to be
separated by special field delimeter characters in the
saved game files. Things that can be changed include the
size and layout of the board, bonus scores, number,
distribution and score of tiles, and so on. The various
configuration entries are described in Appendix A. The
SETUP program itself can also be reconfigured, as it is
driven by entries in a file named SETUP.CFG. The layout
of this file is described in Appendix C. You can modify
the SETUP.CFG file to suit your own requirements.

Normally, WordsWorth reads the configuration from the file
"ww.cfg", which is the file created by the SETUP program. You
can override this choice on the command line, and create
different sets of configurations in different files. By using
configuration definition files, the size of the top-level
configuration files can be kept small, as common sets of
entries can be `factored out'.

The order of entries in the configuration is not important,
except that the number of rows and columns in the board must
be specified before the constraints on the first move and the
specification of the board layout.

You can include configuration definition files in a top-level
configuration file by using lines of the form:

Include = myfile

where `myfile' is the name of the configuration definition file
to include. WordsWorth will immediately read the specified file,
and then resume reading the top level file. Note that only one
level of nesting is allowed; `Include' files cannot themselves
include other files.

WordsWorth has US English and UK English dictionaries. The
unregistered version is provided with only a subset of the US
dictionary, containing about 15000 short words. The full
dictionaries contain nearly 70000 words. You can specify which
dictionary WordsWorth is to use with the `Dictionary' element
in the configuration.

WordsWorth is shipped with the following conguration definition
files:

NameDescription
-----------------------------------------------------------------
herc.defDefinitions for Herc/Mono display adaptor
ega.defDefinitions for EGA color display adaptor
vga.defDefinitions for VGA color display adaptor
svga.defDefinitions for Super VGA color display adaptor

color.defColor/texture definitions for color systems
mono.defColor/texture definitions for mono systems

diamond.defDiamond shaped board
grid.defGrid shaped board
scrabbrd.defScrabble board
board21.def21x21 square board
board7.def7x7 baby square board

alice.defLetter frequencies/scores based on `Alice in Wonderland'
cia.defLetter frequencies/scores based on `CIA Fact File'
bible.defLetter frequencies/scores based on King James Bible
jargon.defLetter frequencies/scores based on the Jargon File
scrabtil.defLetter frequencies/scores based on Scrabble

level.defSupplementary definitions for game rules
-----------------------------------------------------------------
MAKE BACKUPS OF YOUR CONFIGURATION FILES BEFORE CHANGING THEM!


2. Game Overview
----------------

The rules of the game are quite straightforward. They are described
in their loosest form here, as they vary somewhat depending on the
configuration. The scoring method is explained in stages in the
following sections.

2.1 The Objective

The basic aim is to make words in a crossword-like fashion from a
set of letter tiles which you draw out of a common pool. You
alternate plays with the program, and when the pool is exhausted
and one player has no more tiles, or both players are stuck, the
game ends. You score according to the word you make, as well as
other new words that may result from your play. For example, if
the board contains:

DOG

and you play the word STOP thus:

DOGS
T
O
P

you get score for both DOGS and STOP. On the other hand, you
*must* make valid words with your play, so

S
DOGST
O
P

is not a valid way to play the word STOP, as DOGST is invalid.

Hyphenated words and proper nouns (capitalised words) are not
allowed.

At the end of the game, the scores are compared to see who wins.
The scores are calculated according to the location of the word
(that is, what special squares did it cover), and the letters
played, each different letter having a different score value.
If either or both players still hold unplayed tiles, the score
of those tiles is deducted to reach a final score.

Usually, you must build on to the existing words on the board
(the exception being the first move, of course). WordsWorth
offers a lot of flexibility in these matters, however.


2.2 The Board

Play takes place on a board which can be any size that will fit
within a 21x21 square area. If you want a rectangular board you
specify the dimensions; if you want some other shape board you
specify the size of a rectangle that can contain it, and use
black squares to create the shape you desire. See for example
the `grid.def' and `diamond.def' configuration definition files.

Apart from black squares, the scoring of plays is affected by the
type of the squares on which the play takes place. Thus, a square
may be labelled as a `double letter', `triple letter', `4 x letter',
and so on, and similarly for `double word', etc. If your move
results in one or more of these types of squares being covered,
you take this into account when working out the score for the move.
Squares that affect letter scores are taken into account first.
Thus, if you play a two-letter word in which one letter has score
1, and the other score 4, and the first letter is played on a
double word square while the second is played on a triple letter
square, then the score for that word is 2 * (3 * 4 + 1) = 26. Note
that this is just for that word; the score for that move will
usually involve score for one or more other words as well. Once
a square is covered with a tile, however, its type ceases to have
any effect on scores; thus, only when you actually place a tile on
such a square does its type have an effect on the score.


2.3 The Tile Pool

Each player draws tiles out of a common pool. Usually this is
fixed in size, and each player draws a fixed number of tiles
randomly from the pool at the start of each game, replenishing
their tile rack at the end of each move. In Scrabble, for example,
each player holds seven tiles at a time.

WordsWorth also allows you to play any tile from the pool without
drawing a small set of tiles each move. The pool can also be
infinitely large, allowing you to play any letter you like at
any time, until both players get stuck anyway.


2.4 Making a Move

The basic idea behind making moves was described earlier. There
are also some other types of moves. For example, if you cannot
make a good word, you can pass your turn. If you do so, you have
the option of returning any or all of your current tiles to the
pool, and drawing replacements (assuming you are drawing tiles,
and not playing freely from the pool as described in the previous
section).

There is a special tile that plays a similar role to a joker in
cards. This tile is blank, and can be used to represent any
character. If you have such a tile and play it, you must state
what character it is representing. In WordsWorth, this tile is
represented by the letter it symbolises in lower case, or by `_'
if it has no symbolic counterpart. For example, if you play the
word STOP but use a blank tile to represent the O, then you would
enter this as SToP. On the other hand, if you were passing your
turn and discarded a blank, you would enter it as `_', as it does
not represent any particular character (other than itself) when
being discarded.

WordsWorth optionally allows either player to pick up a blank
tile from the board if the letter it symbolises is placed in its
place by that player. Thus, if you played `SToP', and the program
held an `O' tile, it could exchange its `O' for the blank. This
may constitute a full move on its own, a part of a pass move, or
simply something that can be done at the start of any move; you
specify whether you want these moves to be allowed at all, and
if so, when.

The first move may optionally have some constraints placed on how
it should be played. For example, it could be specified that the
word must be played in the third row, or that it must cross the
center square, or that it may be played anywhere at all.

As mentioned earlier, usually each move other than the first move
must build on to the existing words like a crossword. Other
possibilities are territorial play (where each player builds on
their own words), and free-form play, in which play may occur
anywhere. In the former case, attachment to the opponents words
is allowed, but every play must include a word with a previously-
placed letter that was placed by the same player.


3. Command Line Options
-----------------------

Version 1.0 has the following command line syntax:

ww [-D] [-B(0|1)] [-Q|-S|-s] [-c] [-f ] []

-D shows you the computer's tiles (only on boards in which at least
one edge has length 15 or more).

-B0 makes the program play the first move, while -B1 lets you
play first. Otherwise the choice as to who starts is
random.

-Q, -S and -s are used for testing the performance of a particular
configuration of the move selection algorithm. There are a
number of factors that affect how the program chooses its
move that can be modified within the configuration file. When
one of the command line arguments is given, the program plays
against itself, with the `player' taking your part being a
control which chooses its moves based on score only.
You can thus evaluate your algorithm configuration.

-Q is used for batch execution of a test. It simply prints
the results of the game; it does not show the game being played.
If used with -D, the move numbers are printed out along the way
to show the progress.

-S and -s show you the game as it is played. The -S option
plays through at high speed, while the -s option waits for
you to press a key between each move.

You can return to normal play from a -S or -s game by pressing
a key other than the ENTER key. You can enter or resume autoplay
by selecting the `W' move option.

-c colours tiles you place on the board in a different colour to
those placed by the program.

-f allows you to load up a config file by name, rather than the default
"ww.cfg" file.

The allows you to proceed straight into a saved game,
rather than starting a new game. See section 5 for more details.


4. Playing the Game
-------------------

When the game begins, WordsWorth uses a random number to decide who
plays first. If it is to play first, it will make a move quite quickly.
Either way, it will then be your turn to play. You can override the
random choice of first player with the -B0 and -B1 command line options.

Your tiles will be shown at the bottom of the screen. If you
have a blank tile, it will be displayed as `_'.

When it is your move, you have numerous options, selected by pressing
the first letter of the option. We describe each in turn:


4.1 C(onsult) - Consult the dictionary.
==========================================

This command lets you generate lists of anagrams and words, given
a set of letters. The set of letters you specify can include blank tiles,

as well as things like `any vowel' or `any non-vowel'.

There are a number of possibilities that you can specify. WordsWorth
will ask you whether you want the letters to be used in the order given,
or whether you want anagrams of the letters as well - you specify `A' or
`O'. Then you will be asked whether all the letters must be used (that is,
if you specified six letters only six-letter words would be listed),
or whether you are interested in words of any length in which case
WordsWorth will use all combinations of choices out of those letters.
Specify `A' for `must play all tiles', or `S' for `must play some tiles'.

You will then be asked for a pattern. WordsWorth will list all words
that match the pattern (or match rearrangements of the pattern, in the
case of anagrams). Use `_' or `?' for a blank tile. You can also specify
a range of letters enclosed within square brackets, such as `[A-Z]'
(equivalent to `_'), `[AEIOU]' (any one vowel) or `[A-MZ]' (any one
of A through M, or Z). To specify the opposite of a range, start the
range with an exclamation mark. For example, [!AEIOU] matches any
non-vowel. If a particular letter (or letter range) *MUST* be in the
listed words, precede it with a `*'.

Examples:

C A A DIVIDE_ will find all seven letter words that can be made
with the tiles DDEIIV and blank.

C O A DIVIDE_ will find all seven letter words that start
with the six letters `DIVIDE'.

C O A DIVIDE will just list DIVIDE.

C A A DIVIDE will list all anagrams of the word `divide'.

C A S DIVIDE will list all words of up to seven letters
that can be made from the letters DDEIIV.

C A A AB_ will list all three-letter words containing an `A' and `B'.

C O A ?[MN]? will list all three-letter words with an
M or N in the center position.

C A A [A-C][D-F]G will list all three-letter words containing
a G, one of A,B, or C, and one of D, E or F.

C O A [A-C][D-F]G will list all three-letter words that begin
with an A, B or C, have a D, E or F in the middle,
and end with a G.

C A S ABJEIPN*[BHOS] will list all words that can be made out
of the seven letters ABJEIPN plus one of B,H, O or S.
At least one B, H, O or S must be used.

C A A ???*X will list all words of up to four letters that
contain an X.

C A S [!AEIOU][!AEIOU][!AEIOU][!AEIOU][!AEIOU]*[AEIOU]*[AEIOU]
will list all words of up to seven letters that contain
exactly two vowels.

The pattern can be up to 79 characters in length.

WordsWorth displays up to 7 words at a time, and then waits for you
to press a key, before displaying the next eight. If you want to
return to the menu before the matching process is finished, press
the ESC key at any point during matching.

If you request anagrams of a large number of letters, WordsWorth
may search for a while without producing any output. You must
either be patient, or press ESC and do a simpler consultation.


4.2 H(int)- Request a hint.
==============================

WordsWorth will display a move you could make in this situation.
Unless WordsWorth recommends discarding tiles, you will be asked
if you want to play the suggested move. Press `y' or `Y' to do so;
press `h' or `H' to see another hint, or press any other key to take
you back to the list of choices.

You can modify the `ControlStrategy' configuration element to change
the way in which WordsWorth chooses hints.


4.3 U(ndo) - Undo moves.
===========================

WordsWorth will undo the last two moves made, if possible. As you
are being prompted for your move, this means the move the it just
made, and your move that preceded it.


4.4 R(edo) - Replay undone moves.
====================================

WordsWorth will replay two undone moves, if there are such moves.
Note that if you undo all the way in a game in which WordsWorth plays
first, or you or WordsWorth play some new moves after a series of Undo's,
the Redo information is lost as it is no longer applicable to the state
of the game.


4.5 Q(uit) - Quit and return to DOS.
========================================

You will be asked for confirmation.


4.6 S(ave) - Save the current sequence of moves.
===================================================

You will be asked for a file name to be used for the saved game.


4.7 L(oad) - Load a saved game.
==================================

You will be asked for the name of the saved game file to load.


4.8 A(cross) - Play across move; D(own) - Play down move.
=============================================================

Both of these are similar, and are described together.

If you have already played an exchange this turn (see 4.10),
and `ExchangeAllowed' is not 4, you will get a message saying
"You must pass!".

Otherwise, you will be asked for the row in which the first
letter of your word falls (*not* the first letter which you
are *playing*, just the first letter, which may already be on
the board). You should enter a letter corresponding to the row
(there are labels on the left of the board for rows, and along the
top for columns). You will then be asked for the column. In each
case, just press the key (the only time it is necessary to press
ENTER is for multiple-letter input, such as words, tiles to discard,
and file names).

You will then be asked for the word. Type the word and press ENTER.
If your word contains blank tiles, you must type the letters they
represent, IN LOWER CASE. All other letter should be typed in UPPER
CASE. For example, if you are playing the word `hello', and you are
using a blank for the `h', you enter `hELLO'.

WordsWorth will then validate your move. If the word is not found in
the dictionary, you will be asked if you want it accepted anyway.
There are a number of other checks that will be performed. If any of
them fail, an error message will be displayed. The possible errors
are:

1st word must cross row
1st word must cross col

You are playing the first word on the board
and you have to play it according to constraints
which you have violated. These constraints are
specified in the configuration file.

Word has no anchor square!

The word does not attach to the existing
word structure on the board. You must build
on to what is already there (but see below).

Word conflicts with board!

You entered a word which contains a letter
which conflicts with a letter already on the
board.

You don't have a blank!

The word you entered requires that you have
a blank tile, which you don't.

You don't have a

The word you entered requires that you have
a tile, which you don't.

Bad Xword

The word you entered does not form all
valid cross words.

Can't end there!

The word you entered must have its last
letter followed by an empty square or the
edge of the board, not another letter.

If one of these errors occurs, you will simply be asked to enter
your move again. You will be given the option of overriding
WordsWorth's dictionary lookups of the main word and any cross words,
in case you wish to play a move that is not in the dictionary.

IF YOU MAKE MISTAKES:
* in entering the word, you can use the backspace
key to make corrections before pressing
ENTER
* press the ESC key once to clear the current line
and twice to cancel the current operation
and return to the menu.

Note that every word played must include at least one anchor
square, but the definition of what constitutes an anchor
square varies. The default is that it is any empty square
with at least one non-empty neighbour. If you select free
form play (see Appendix), all empty squares are anchors
(except possibly on the first move). If you select territorial
play, the usual definition applies except that only neighbouring
tiles played by the same player are examined.


4.9 P(ass) - Pass turn, and (optionally) discard some tiles.
===============================================================

You will be asked which tiles to discard. Enter the list in any
order. All letters must be entered in upper case, and if you
discard a blank (although its a rare occasion) you must enter
`_'. WordsWorth will validate your input. If you have all the
tiles specified, they will be returned to the pool and a new set
will be drawn. Otherwise you will be asked to enter your move again.


4.10 ) X(change) - Pick up blank tile from board
================================================

This option lets you pick up a blank from the board if you hold the
letter it represents, which you use to replace it. There are a number
of options, which are selected by the ExchangeAllowed configuration
variable. The possible selections are:

ExchangeAllowed = 0# No exchange moves are allowed (in which case
# the X option does not appear on the menu)
ExchangeAlowed = 1# an exchange constitutes an entire move
ExchangeAlowed = 2# an exchange can be followed by a tile exchange
# with the pool, but not with a word play
ExchangeAlowed = 3# an exchange can be done before any move.

Exchanges don't have any score associated with them.


4.11 ) F1 - Get help.
=====================

Pressing F1 at any time will display some help
about what input WordsWorth is currently expecting
from you.

4.12 N(ext move) - Make program play a different move.
========================================================

As with hints, the program stores up to twenty moves when it
decides what to play. If you don't like the move it made (maybe it
took a triple word score?!) you can force it to play differently.
Unlike hints, which are shown to you in order of score, the
program's moves are ordered by weight.

4.13 ) W(atch) - Start or resume autoplay mode
==============================================

Selecting this option tells the program to start playing for you.
You can interrupt autoplay by pressing any key other than ENTER.

4.14 ) V(iew) - Toggle opponent tile view on/off
================================================

Pressing `V' toggles the display of the opponent's tiles on and
off.


5) Saved Games
--------------

WordsWorth v0.6 allows games to be saved and loaded. Games are saved
in plain text form, with comments, so its quite easy to see what is
going on.

It is possible to have a board which has letters placed on it before
you even begin playing. One application of this feature would
be to set up a partially completed crossword puzzle and get WordsWorth
to find possible completions.

When you load a game, it will be played through to the point at
which it was saved, after which you can continue. The undo command
can also be used to go back to an earlier point.

The format of saved games is described in the Appendix.Note that
it is up to you to ensure that the game you load is compatible with
the current configuration. The results otherwise will be unpredictable
at best.

6) Ending the Game
-------------------

When both players are stuck, or the tiles are all finished, WordsWorth
exits and prints out the end score. You can also exit by
entering `q' at the move prompt. WordsWorth will clean up the
screen and print out a summary of the games results at the time
of exit.


ENJOY PLAYING WORDSWORTH!

=================================================================

APPENDIX A - FORMAT OF WORDSWORTH CONFIGURATION FILES
-----------------------------------------------------

WordsWorth has a basic default configuration, but you will
alomost certainly want to override this by using configuration
files, a complete example of which is included in the package.

The configuration files contain a number of lines of the form

=

The value may be a string, a character, a natural number, or
an integer, depending on the element. In some cases, tables of
values are expected; these should be delimeted by curly braces
`{' and `}'. Comments can be freely used; the `#' character
indicates the start of a comment. Everything following the `#'
until the end of that line is treated as a comment and ignored.

Apart from the `#' character, other special characters include
`{', `}' and `$'. If you want to specify one of these characters
literally without the special meaning, you should precede it with
a backslash. Thus, for example, \# represents the # character rather
than the start of a comment.

The `$' character allows you to enter an ASCII value directly, but
currently only supports single digit numbers. Thus, `$2' is the ASCII
2 character. These are currently only of use for accessing 10 special
characters in the font (in positions 1 through 10, the latter being
signified by `$0'). See the WordMarks and LetterMarks configuration
element and note (15) in the appendix for details.

Whitespace (such as spaces, newlines, and tabs) is ignored,
except in strings (such as the name of the dictionary).

A special configuration element, `Include', allows you to include
other files within a configuration file. Only one level of nesting
is allowed; that is, the main or top-level configuration file may
`Include' other files, but the included files may not themselves
include further files. In the WordsWorth distribution, this has been
used to structure the configuration into a number of different
`definition' files (each with a .def extension) which are included
by the main configuration file. This main file is created by the
`setup' program, which asks the user questions about the
configuration and then creates the appropriate `Include' lines.

The different configuration elements are now described, and their
default values given. The following characters are used to represent
types:

S - string
C - character
N - natural number
Z - integer
H - Colour or Hue
T - Texture
{n} - table of type n (e.g. {C} is a table of characters)

The valid colour names are:

Black
Blue
Green
Cyan
Red
Magenta
Brown
LightGray
DarkGray
LightBlue
LightGreen
LightCyan
LightRed
LightMagenta
Yellow
White

The valid texture names are:

Solid
Line
ThinSlash
ThickSlash
ThickBackslash
ThinBackslash
ThinHatch
ThickHatch
InterleavingLine
WideSpacedDots
CloseSpacedDots

On an EGA/VGA screen, you would usually make all textures solid
fill and just use colours. On a mono screen, you would make use
of textures over colours.

DISPLAY CONFIGURATION ELEMENTS

NameDefaultType Comments
========================================================================
LetterMarks {C}Letter used to represent double,
triple, etc, letter score
squares. Up to 10 are allowed.
See note (15).
LetterMarkColors {H}Colours used to draw the double,
triple, etc, letter score
square marks (up to 10).
LetterMarkBColors {H}Colours used for the background
of these squares (up to 10).
LetterMarkBTextures {T}Fill styles used for the background
of these squares (up to 10).

WordMarks {C}Letter used to represent double,
triple, etc, word score
squares. Up to 10 are allowed.
See note (15).
WordMarkColors {H}Colours used to draw the double,
triple, etc, word score
squares. Up to 10 are allowed.
word score squares
WordMarkBColors {H}Colours used for the background
of these squares (up to 10).
WordMarkBTextures {T}Fill styles used for the background
of these squares (up to 10).

BoardColorCyan HColor of board squares
BoardTexture CloseSpacedDots TFill style of board squares
BoardLeftShadowColorDarkGray H
BoardLeftShadowTextureSolid T
BoardTopShadowColorLightGray H
BoardTopShadowTextureSolid T
TileLeftShadowColorDarkGray H
TileLeftShadowTextureSolid T
TileTopShadowColorLightGray H
TileTopShadowTextureSolid T
TileColorWhite H
TileTextureSolid T
AlternateTileColorLightBlue HUsed when ww -c is specified
AlternateTileTextureSolid T
NonPlayableSquareColorBlack H
NonPlayableSquareTexture Solid T
RackWallColorBlue H
RackWallTexture CloseSpacedDots T
RackBaseColor LightBlue H
RackBaseTexture WideSpacedDots T
BlankTileTextColorRed H
NormalTileTextColorBlack H
MessageTextColorWhite H
LabelColorLightGray H



LEVEL AND STRATEGY CONTROL

NameDefaultType Comments
========================================================================
LengthWeight2 ZWeighting factor for long words (2).
MininumAllowedScore0 NForce WW to ignore moves with lower
score than this.
MaximumAllowedScore0 NForce WW to ignore moves with
higher score than this (3).
RestrictedSearchMin0 NSee notes (3) & (4).
RestrictedSearchCount0 NSee notes (3) & (4).
MinimumWordLength0 NForce WW to ignore moves shorter
than this.
MaximumWordLength21 N Forces WW to ignore moves longer
than this.
ControlStrategy0 N0 means control should maximise
score (7).
IncludeCrossWeights0 N 0 means only take into account
weight on the main word (8).
AdaptiveStrategy1 N0 means don't use adaptive play (9).
BlankThreshold20 NThe program will only consider
playing a blank tile for
words with at least this
weight.



GAME CONFIGURATION

NameDefaultType Comments
========================================================================
VideoCard Autodetect SSee note (14).
VideoMode NSee note (14).
Dictionarywwdict SName of the dictionary file
Rows13 NNumber of rows in the board
Columns13 N Number of columns in the board
NumberOfTiles6 NNumber of tiles per player. See(1).
PlayAllTileBonusPoints 0 NBonus score for playing all tiles
BoardPositionScore {C}See note (5).
FirstMoveRow8 NRow through which first move
must pass (6).
FirstMoveCol8 N Column through which first move
must pass (6).
FirstMoveDir0 NHow the first move must be played.
0 - any, 1 - down, 2- across.
FreeForm0 NHow other moves must be played.
0 => must anchor on existing
words
1 => must anchor on own words
other => can anchor on any
empty square
LetterFrequencies {N}Number of each letter type in
the pool (10).
LetterScores {N}The score associated with each
type of letter (11).
LetterWeights {N}The weights associated with each
type of letter (12).
ExchangeAllowed0 NIf this is non-zero, you can
pick up a blank from
the board if you hold
the letter it represents.
See section 4.10 and (13).


NOTES:

(1) If this is zero, you can play whatever letters you like (there is
no limit on the number of letters; the game ends when you
are stuck).
If this is one, you can play any letters from the common pool.
That is, the pool specifies the total set of letters than
can be played, but otherwise this is like zero.
Greater values represent the number of tiles you draw at the start
of the game.

(2) If this is zero, it has no effect. If it is 1 or 2, a balance is
struck between score and length, and if this is 3 or more,
WW favours long words in almost every case, even if the
score is less.

(3) A zero value for either means ignore this factor.

(4) As it searches, WW counts the number of moves it finds that have
a score of at least . Once it has found
of these, it plays the best move it has
found thus far. This gives a lot of control over its play, but
it's quite difficult to predict the exact effect.

Values of 5 and 40 respectively tends to cut WW's score
to about 40% of the maximum.

(5) This is the board layout for scores. a, b, and c respresent unit,
double, and triple letter squares respectively, while B and C
respresent double and triple word squares.

WordsWorth also allows you to specify non-playable squares (something
like the black squares on a crossword puzzle), using the character
@.

An example board layout specification is:

boardPositionScore = {
BaaacaaacaaaB
a@aaababaaa@a
aa@aaabaaa@aa
aaa@aaaaa@aaa
caaacaaacaaac
abaaababaaaba
aabaaaBaaabaa
abaaababaaaba
caaacaaacaaac
aaa@aaaaa@aaa
aa@aaabaaa@aa
a@aaababaaa@a
BaaacaaacaaaB
}

The default is all `a's.

(6) A value of zero implies no constraint.

(7) This specifies how the program should play the control player
in self-play modes, and how it chooses hints for you. 0
means `use a plain maximise score strategy', while any other
positive integer means `use the same strategy the program is
playing itself' (that is, subject to all the extra weight and
search constraint factors).

(8) This specifies whether the weight should be calculated on the main
word being played only, or on all the cross words made as
a result as well. A value of 0 means main word only.

(9) When you select this option, the computer will try to play an even
game with you. When it is ahead it will back off, while when it
is behind it will be more aggressive. A value of 0 disables this
feature.

(10) This is a table of 27 numbers specifying how many of each type
of letter there are in the pool to start with. The 27th value
is the number of blank tiles. The default is two of each tile,
except for the vowels, of which there are 7 A's, 10 E's, 6 I's,
7 O's and 4 U's.

(11) The default is a score of one for each letter.

(12) See also LetterScores in the Game Configuration. A score and a
weight are different, as some low-scoring letters (especially
`S' and the blank) should be held on to for use in big-scoring
plays. They would thus have a negative weight. On the other
hand, if it is desirable to get rid of a particular letter
as soon as possible, it should have a positive weight.
Other letters should have a weight of zero. When WordsWorth
discards tiles, it will discard positively weighted letters first,
and may discard letters with weight zero if the first action is
insufficient. Also, it will discard duplicate letters in some
cases. If both a Q and a U are held, usually neither of these
will be discarded.

Besides constraints on the search, length, and score of words,
WordsWorth chooses its move on a weight determined by the
formula:

weight = score + length_weight_factor * length +
sum_of_weights_of_letters_played

(13) The allowed values are:

0 - exchanges are not allowed.
1 - an exchange constitutes a complete move.
2 - an exchange can be done before a pass and swap only.
3 - an exchange can be done before a pass and swap or
a word play.


(14) The allowed video cards are:

Autodetect
Hercules
EGA
VGA
SuperVGA

Note that the SuperVGA support is for VESA-standard Super
VGA only. Other types of Super VGAs will be detected as
normal VGA. If this happens, try setting the SuperVGA card
and mode explicitly in the configuration. This works on my
ATI Ultra XL, even though it fails the autodetect unless I
run its VESA driver.

The possible mode values are (defaults shown with *):

CardMode NumberResolutionColoursNotes
-----------------------------------------------------------------
Autodetect*0

Hercules*0720x3482

EGA 0 640x20016Not useable
EGA*1640x35016

VGA 0640x20016
VGA 1640x35016
VGA*2640x48016

SuperVGA 0320x200256Not useable
SuperVGA 1640x400256
SuperVGA 2640x480256
SuperVGA*3800x600256
SuperVGA 41024x768256

WARNING: If you explicitly specify a video card and you have a
different card, you may crash your machine! For example, if you
have a Hercules card and you specify `videoCard=VGA' in your
configuration, you will have problems!

(15) The font used for word and letter marks includes ten special
characters with the values 0 through 9. These are specified using the
`$' character. The characters and their values are:

$1Double$2Triple$3 4x
LetterLetterLetter

$4 5x$5 6x$6Double
LetterLetterWord


$7Triple$8 4x$9 5x
WordWordWord

$0 6x
Word

These labels are very small and not that readable, but may be preferred
to more symbolic representations with a single character. They also
do not work as well in all video modes. I have put them in the distribution
config files; you can change them if you wish.

=================================================================

APPENDIX B - FORMAT OF WORDSWORTH SAVED GAME FILES
--------------------------------------------------

Saved games in WordsWorth have a fixed layout order. Once again whitespace
is ignored, and comments can be used.

Each saved game begins with a flag, indicated by a `@' character followed
immediately by a number. The number has the following meanings:

@0 - ignore what follows
@1 - load up game
@2 - set random number seed (no longer supported)
@3 - combination of @1 and @2
@4 - load up start board
@5 - same as @1 and @4
@6 - same as @2 and @4
@7 - same as @1, @2 and @4

Then come the starting board letters (using `.' for empty). This
allows you to set up boards with predetermined letters. Note that
if you load up such a board, the restrictions on where the first
move may be placed are relaxed; it can be played anywhere, provided
it builds on to the preplaced letters (and even this need not be the
case if the FreeForm configuration variable is set).

For example:

...............
...............
...............
...............
......W........
..HELLO........
......R........
......L........
......D........
...............
...............

The computer's starting rack is then specified, followed by the
human's/control's. Then comes the actual list of moves. As we want
to support undo, we need quite a lot of detail. Each move consists of:

1) the move number
2) the player (0 - program, 1 - you or control)
3) the action (P - pass; A - across; D - down; X - exchange)
4) if the action was 1 or 2, the starting row and column
5) the word played or letters dropped. In the case of a word
a `mask' is used, with a dash `-' representing a letter
already on the board
6) the tiles drawn, preceded by a '+'
7) the score for the move, preceded by a '*'

For example:

1 0 A H G H-LLO +ACDO *12

This specifies the first move, which is played by the program,
and is an across word starting at row H, column G. The play in this case
is HELLO (the E was already on the board), and then the tiles A,C,D
and O are drawn. The score made is 12.)

At the end of the list of moves is a `0' character which represents the
end of the file.

Note that saved games do not include a saved configuration. It is up to
you to ensure that the correct configuration file is used when you load
a saved game.

=================================================================

APPENDIX C - Format of the Setup Configuration File
---------------------------------------------------

This is the configuration file for the SETUP program.
It consists of a number of entries of the form:

@question?
>answer_1= action_1
>answer_2= action_2
...
>answer_n= action_n
%

An alternative form is:

@question?

In this case, the answer/action pairs are read from the specified
file.

Each entry (either question, or answer/action pair) must
be on no more than a single line, as the end of the line
is regarded as the terminating character of the action field.
The last entry is followed by a double %%. Note that the
characters @, > and % MUST be in the first column to be
recognised by the SETUP program. A line that has a # in
the first column is treated as a comment and ignored.
The question may be empty, in which case the answers, if
any, are ignored, but each action is performed in sequence.

Each action can be one of three types:

1) A list of names of definition files, separated by whitespace.
This action results in `Include' configuration element entries
being written to the configuration file for each of the definition
files in the list, in order.

2) A piece of text enclosed within braces {}. This is included
literally as a single line in the configuration file. It may
contain two special `escape' characters, namely TAB (represented
by `\t') and NEWLINE (represented by `\n'). In the latter case,
the resulting output will obviosuly be spread over more than
one line.

3) A file name immediately preceded by a `<' character; this file
is opened and SETUP continues reading the configuration from
that file. When the end of that file is reached, SETUP continues
with the first file. This type of action is used to provide a
rudimentary form of `compound statement' in the configuration
process. Up to eight levels of nesting of setup files is
supported. Also, if the question is empty, no further actions
related to that question will be performed after this action.

For example, the configuration entry:

# Get the display type (color only)

@What type of display do you have?
>EGA= { VideoType = EGA\nVideoMode = 2}
>VGA= vgaspec.def color.def
>Super VGA=
will cause SETUP to ask:

What type of display do you have?

1) EGA
2) VGA
3) Super VGA

Enter option (1-3)?

and if you respond with `1', SETUP adds the lines:

VideoType = EGA
VideoMode = 2

to the configuration file. If you respond with `2', SETUP adds
the line:

Include = vgaspec.def
Include = color.def

to the configuration file, and if you respond with `3', SETUP
reads further instructions from the file `svga.cfg'.

NB - no question can have more than nine answers, and no
line may exceed 80 characters!

======== END OF README ============================================


Contents of the README.1ST file





WordsWorth v1.1

The `Ultimate' CrossWord Game

by

Graham Wheeler


(c) 1992 All Rights Reserved



WORDSWORTH INSTRUCTIONS
=======================

Contents
========
0. Welcome
1. Configuration
2. Game Overview
3. Command Line Options
4. Playing the Game
4.1 C(onsult) - Consult the dictionary.
4.2 H(int)- Request a hint.
4.3 U(ndo) - Undo moves.
4.4 R(edo) - Replay undone moves.
4.5 Q(uit) - Quit and return to DOS.
4.6 S(ave) - Save the current sequence of moves.
4.7 L(oad) - Load a saved game.
4.8 A(cross) - Play across move; D(own) - Play down move.
4.9 P(ass) - Pass turn, and (optionally) discard some tiles.
4.10 X(change) - Pick up blank tile from board
4.11 F1 - Help
4.12 N(ext move) - Make program play a different move.
4.13 W(atch) - Start or resume autoplay mode
4.14 V(iew) - Toggle opponent tile view on/off

5. Saved Games
6. Ending the Game

APPENDIX A - Format of Configuration Files
APPENDIX B - Format of Saved Game Files
APPENDIX C - Format of the Setup Configuration File

0. Welcome
----------

Welcome to WordsWorth!

WordsWorth was inspired by an article in Communications of the
ACM in May 1988, entitled `The World's Fastest Scrabble Program'.
I had always been a frustrated Scrabble player. I take ages to
move, generally play pretty badly anyway, and dislike waiting
for my opponent. As a result, I decided to write my own program,
which would have both infinite patience and lightning response
time ;-).

It soon became clear that the principles involved were not bound
by the rules of Scrabble as such, but more by the concept of crosswords.
Imposing rules simply implied restricting the set of possible moves.
The idea of a general-purpose crossword game playing engine was born!

It has taken a long time to complete (I had a lot of other things to
do 8-( ), but I think it has been worth it. WordsWorth allows you
to design your own crossword games. If you like Scrabble, you
can use WordsWorth as a Scrabble opponent (although not with the
official Scrabble dictionary); or you can be creative, and design
your own games.

You can create any size and shape board up to a 21x21 square, and
pepper it with black crossword squares that can't be played upon.
You can make any square a single, double, triple, quadruple, etc
letter or word score type, up to 11 times! You can play free-form
on the board, or be forced to build on to the existing structure
(as in Scrabble). You can play a territorial game in which you have
to build on to your own structure. You can specify what letters are
available, how much they are worth, and give them a strategic `weight'.
You can save and restore games, and undo and redo all the moves.
And you can control the level and style of your computer opponent.
The possibilities are immense. Now it is up to you!

Please send your comments, bug reports, flames, and anything
else to [email protected]. I have tried to make WordsWorth
as generic and general as possible; if you have suggestions,
particularly about further generalisation, let me know!

DISCLAIMER - This software is distributed without a warranty of
any sort. You use this software at entirely your own risk. I will
not be responsible for any loss, damage, injury, death, disaster,
plagues, famine, divorces, disagreements, etc that may result from
the use of this software.


1. Configuration
----------------

If you are new to WordsWorth, you should skip this section,
and run the included SETUP.EXE program to create a
configuration file. The SETUP program will ask you a number
of questions about, amongst other things, your video hardware,
what board layout you require, and so on, and then write a
suitable configuration file to disk. You can then run
WordsWorth (WW.EXE) directly. When you want to explore the
possibilities of WordsWorth further, or maintain multiple
configurations, you should read this section.

WordsWorth is highly configurable. At this stage you need
to be able to use a text editor to change the configuration,
as it is stored in plain text files. WordsWorth includes
several example `configuration definition files' which can
be combined together into configuration files using the
supplied SETUP program. However, you will probably want to
learn how to create your own configuration definitions at
some stage.

The configuration elements have names which are mostly
self-explanatory. A comment begins with a`#' character;
everything from that character to the end of the line is
ignored. Whitespace in the file is also ignored; this is
why the mask tiles, draw tiles, and score have to be
separated by special field delimeter characters in the
saved game files. Things that can be changed include the
size and layout of the board, bonus scores, number,
distribution and score of tiles, and so on. The various
configuration entries are described in Appendix A. The
SETUP program itself can also be reconfigured, as it is
driven by entries in a file named SETUP.CFG. The layout
of this file is described in Appendix C. You can modify
the SETUP.CFG file to suit your own requirements.

Normally, WordsWorth reads the configuration from the file
"ww.cfg", which is the file created by the SETUP program. You
can override this choice on the command line, and create
different sets of configurations in different files. By using
configuration definition files, the size of the top-level
configuration files can be kept small, as common sets of
entries can be `factored out'.

The order of entries in the configuration is not important,
except that the number of rows and columns in the board must
be specified before the constraints on the first move and the
specification of the board layout.

You can include configuration definition files in a top-level
configuration file by using lines of the form:

Include = myfile

where `myfile' is the name of the configuration definition file
to include. WordsWorth will immediately read the specified file,
and then resume reading the top level file. Note that only one
level of nesting is allowed; `Include' files cannot themselves
include other files.

WordsWorth has US English and UK English dictionaries. The
unregistered version is provided with only a subset of the US
dictionary, containing about 15000 short words. The full
dictionaries contain nearly 70000 words. You can specify which
dictionary WordsWorth is to use with the `Dictionary' element
in the configuration.

WordsWorth is shipped with the following conguration definition
files:

NameDescription
-----------------------------------------------------------------
herc.defDefinitions for Herc/Mono display adaptor
ega.defDefinitions for EGA color display adaptor
vga.defDefinitions for VGA color display adaptor
svga.defDefinitions for Super VGA color display adaptor

color.defColor/texture definitions for color systems
mono.defColor/texture definitions for mono systems

diamond.defDiamond shaped board
grid.defGrid shaped board
scrabbrd.defScrabble board
board21.def21x21 square board
board7.def7x7 baby square board

alice.defLetter frequencies/scores based on `Alice in Wonderland'
cia.defLetter frequencies/scores based on `CIA Fact File'
bible.defLetter frequencies/scores based on King James Bible
jargon.defLetter frequencies/scores based on the Jargon File
scrabtil.defLetter frequencies/scores based on Scrabble

level.defSupplementary definitions for game rules
-----------------------------------------------------------------
MAKE BACKUPS OF YOUR CONFIGURATION FILES BEFORE CHANGING THEM!


2. Game Overview
----------------

The rules of the game are quite straightforward. They are described
in their loosest form here, as they vary somewhat depending on the
configuration. The scoring method is explained in stages in the
following sections.

2.1 The Objective

The basic aim is to make words in a crossword-like fashion from a
set of letter tiles which you draw out of a common pool. You
alternate plays with the program, and when the pool is exhausted
and one player has no more tiles, or both players are stuck, the
game ends. You score according to the word you make, as well as
other new words that may result from your play. For example, if
the board contains:

DOG

and you play the word STOP thus:

DOGS
T
O
P

you get score for both DOGS and STOP. On the other hand, you
*must* make valid words with your play, so

S
DOGST
O
P

is not a valid way to play the word STOP, as DOGST is invalid.

Hyphenated words and proper nouns (capitalised words) are not
allowed.

At the end of the game, the scores are compared to see who wins.
The scores are calculated according to the location of the word
(that is, what special squares did it cover), and the letters
played, each different letter having a different score value.
If either or both players still hold unplayed tiles, the score
of those tiles is deducted to reach a final score.

Usually, you must build on to the existing words on the board
(the exception being the first move, of course). WordsWorth
offers a lot of flexibility in these matters, however.


2.2 The Board

Play takes place on a board which can be any size that will fit
within a 21x21 square area. If you want a rectangular board you
specify the dimensions; if you want some other shape board you
specify the size of a rectangle that can contain it, and use
black squares to create the shape you desire. See for example
the `grid.def' and `diamond.def' configuration definition files.

Apart from black squares, the scoring of plays is affected by the
type of the squares on which the play takes place. Thus, a square
may be labelled as a `double letter', `triple letter', `4 x letter',
and so on, and similarly for `double word', etc. If your move
results in one or more of these types of squares being covered,
you take this into account when working out the score for the move.
Squares that affect letter scores are taken into account first.
Thus, if you play a two-letter word in which one letter has score
1, and the other score 4, and the first letter is played on a
double word square while the second is played on a triple letter
square, then the score for that word is 2 * (3 * 4 + 1) = 26. Note
that this is just for that word; the score for that move will
usually involve score for one or more other words as well. Once
a square is covered with a tile, however, its type ceases to have
any effect on scores; thus, only when you actually place a tile on
such a square does its type have an effect on the score.


2.3 The Tile Pool

Each player draws tiles out of a common pool. Usually this is
fixed in size, and each player draws a fixed number of tiles
randomly from the pool at the start of each game, replenishing
their tile rack at the end of each move. In Scrabble, for example,
each player holds seven tiles at a time.

WordsWorth also allows you to play any tile from the pool without
drawing a small set of tiles each move. The pool can also be
infinitely large, allowing you to play any letter you like at
any time, until both players get stuck anyway.


2.4 Making a Move

The basic idea behind making moves was described earlier. There
are also some other types of moves. For example, if you cannot
make a good word, you can pass your turn. If you do so, you have
the option of returning any or all of your current tiles to the
pool, and drawing replacements (assuming you are drawing tiles,
and not playing freely from the pool as described in the previous
section).

There is a special tile that plays a similar role to a joker in
cards. This tile is blank, and can be used to represent any
character. If you have such a tile and play it, you must state
what character it is representing. In WordsWorth, this tile is
represented by the letter it symbolises in lower case, or by `_'
if it has no symbolic counterpart. For example, if you play the
word STOP but use a blank tile to represent the O, then you would
enter this as SToP. On the other hand, if you were passing your
turn and discarded a blank, you would enter it as `_', as it does
not represent any particular character (other than itself) when
being discarded.

WordsWorth optionally allows either player to pick up a blank
tile from the board if the letter it symbolises is placed in its
place by that player. Thus, if you played `SToP', and the program
held an `O' tile, it could exchange its `O' for the blank. This
may constitute a full move on its own, a part of a pass move, or
simply something that can be done at the start of any move; you
specify whether you want these moves to be allowed at all, and
if so, when.

The first move may optionally have some constraints placed on how
it should be played. For example, it could be specified that the
word must be played in the third row, or that it must cross the
center square, or that it may be played anywhere at all.

As mentioned earlier, usually each move other than the first move
must build on to the existing words like a crossword. Other
possibilities are territorial play (where each player builds on
their own words), and free-form play, in which play may occur
anywhere. In the former case, attachment to the opponents words
is allowed, but every play must include a word with a previously-
placed letter that was placed by the same player.


3. Command Line Options
-----------------------

Version 1.0 has the following command line syntax:

ww [-D] [-B(0|1)] [-Q|-S|-s] [-c] [-f ] []

-D shows you the computer's tiles (only on boards in which at least
one edge has length 15 or more).

-B0 makes the program play the first move, while -B1 lets you
play first. Otherwise the choice as to who starts is
random.

-Q, -S and -s are used for testing the performance of a particular
configuration of the move selection algorithm. There are a
number of factors that affect how the program chooses its
move that can be modified within the configuration file. When
one of the command line arguments is given, the program plays
against itself, with the `player' taking your part being a
control which chooses its moves based on score only.
You can thus evaluate your algorithm configuration.

-Q is used for batch execution of a test. It simply prints
the results of the game; it does not show the game being played.
If used with -D, the move numbers are printed out along the way
to show the progress.

-S and -s show you the game as it is played. The -S option
plays through at high speed, while the -s option waits for
you to press a key between each move.

You can return to normal play from a -S or -s game by pressing
a key other than the ENTER key. You can enter or resume autoplay
by selecting the `W' move option.

-c colours tiles you place on the board in a different colour to
those placed by the program.

-f allows you to load up a config file by name, rather than the default
"ww.cfg" file.

The allows you to proceed straight into a saved game,
rather than starting a new game. See section 5 for more details.


4. Playing the Game
-------------------

When the game begins, WordsWorth uses a random number to decide who
plays first. If it is to play first, it will make a move quite quickly.
Either way, it will then be your turn to play. You can override the
random choice of first player with the -B0 and -B1 command line options.

Your tiles will be shown at the bottom of the screen. If you
have a blank tile, it will be displayed as `_'.

When it is your move, you have numerous options, selected by pressing
the first letter of the option. We describe each in turn:


4.1 C(onsult) - Consult the dictionary.
==========================================

This command lets you generate lists of anagrams and words, given
a set of letters. The set of letters you specify can include blank tiles,

as well as things like `any vowel' or `any non-vowel'.

There are a number of possibilities that you can specify. WordsWorth
will ask you whether you want the letters to be used in the order given,
or whether you want anagrams of the letters as well - you specify `A' or
`O'. Then you will be asked whether all the letters must be used (that is,
if you specified six letters only six-letter words would be listed),
or whether you are interested in words of any length in which case
WordsWorth will use all combinations of choices out of those letters.
Specify `A' for `must play all tiles', or `S' for `must play some tiles'.

You will then be asked for a pattern. WordsWorth will list all words
that match the pattern (or match rearrangements of the pattern, in the
case of anagrams). Use `_' or `?' for a blank tile. You can also specify
a range of letters enclosed within square brackets, such as `[A-Z]'
(equivalent to `_'), `[AEIOU]' (any one vowel) or `[A-MZ]' (any one
of A through M, or Z). To specify the opposite of a range, start the
range with an exclamation mark. For example, [!AEIOU] matches any
non-vowel. If a particular letter (or letter range) *MUST* be in the
listed words, precede it with a `*'.

Examples:

C A A DIVIDE_ will find all seven letter words that can be made
with the tiles DDEIIV and blank.

C O A DIVIDE_ will find all seven letter words that start
with the six letters `DIVIDE'.

C O A DIVIDE will just list DIVIDE.

C A A DIVIDE will list all anagrams of the word `divide'.

C A S DIVIDE will list all words of up to seven letters
that can be made from the letters DDEIIV.

C A A AB_ will list all three-letter words containing an `A' and `B'.

C O A ?[MN]? will list all three-letter words with an
M or N in the center position.

C A A [A-C][D-F]G will list all three-letter words containing
a G, one of A,B, or C, and one of D, E or F.

C O A [A-C][D-F]G will list all three-letter words that begin
with an A, B or C, have a D, E or F in the middle,
and end with a G.

C A S ABJEIPN*[BHOS] will list all words that can be made out
of the seven letters ABJEIPN plus one of B,H, O or S.
At least one B, H, O or S must be used.

C A A ???*X will list all words of up to four letters that
contain an X.

C A S [!AEIOU][!AEIOU][!AEIOU][!AEIOU][!AEIOU]*[AEIOU]*[AEIOU]
will list all words of up to seven letters that contain
exactly two vowels.

The pattern can be up to 79 characters in length.

WordsWorth displays up to 7 words at a time, and then waits for you
to press a key, before displaying the next eight. If you want to
return to the menu before the matching process is finished, press
the ESC key at any point during matching.

If you request anagrams of a large number of letters, WordsWorth
may search for a while without producing any output. You must
either be patient, or press ESC and do a simpler consultation.


4.2 H(int)- Request a hint.
==============================

WordsWorth will display a move you could make in this situation.
Unless WordsWorth recommends discarding tiles, you will be asked
if you want to play the suggested move. Press `y' or `Y' to do so;
press `h' or `H' to see another hint, or press any other key to take
you back to the list of choices.

You can modify the `ControlStrategy' configuration element to change
the way in which WordsWorth chooses hints.


4.3 U(ndo) - Undo moves.
===========================

WordsWorth will undo the last two moves made, if possible. As you
are being prompted for your move, this means the move the it just
made, and your move that preceded it.


4.4 R(edo) - Replay undone moves.
====================================

WordsWorth will replay two undone moves, if there are such moves.
Note that if you undo all the way in a game in which WordsWorth plays
first, or you or WordsWorth play some new moves after a series of Undo's,
the Redo information is lost as it is no longer applicable to the state
of the game.


4.5 Q(uit) - Quit and return to DOS.
========================================

You will be asked for confirmation.


4.6 S(ave) - Save the current sequence of moves.
===================================================

You will be asked for a file name to be used for the saved game.


4.7 L(oad) - Load a saved game.
==================================

You will be asked for the name of the saved game file to load.


4.8 A(cross) - Play across move; D(own) - Play down move.
=============================================================

Both of these are similar, and are described together.

If you have already played an exchange this turn (see 4.10),
and `ExchangeAllowed' is not 4, you will get a message saying
"You must pass!".

Otherwise, you will be asked for the row in which the first
letter of your word falls (*not* the first letter which you
are *playing*, just the first letter, which may already be on
the board). You should enter a letter corresponding to the row
(there are labels on the left of the board for rows, and along the
top for columns). You will then be asked for the column. In each
case, just press the key (the only time it is necessary to press
ENTER is for multiple-letter input, such as words, tiles to discard,
and file names).

You will then be asked for the word. Type the word and press ENTER.
If your word contains blank tiles, you must type the letters they
represent, IN LOWER CASE. All other letter should be typed in UPPER
CASE. For example, if you are playing the word `hello', and you are
using a blank for the `h', you enter `hELLO'.

WordsWorth will then validate your move. If the word is not found in
the dictionary, you will be asked if you want it accepted anyway.
There are a number of other checks that will be performed. If any of
them fail, an error message will be displayed. The possible errors
are:

1st word must cross row
1st word must cross col

You are playing the first word on the board
and you have to play it according to constraints
which you have violated. These constraints are
specified in the configuration file.

Word has no anchor square!

The word does not attach to the existing
word structure on the board. You must build
on to what is already there (but see below).

Word conflicts with board!

You entered a word which contains a letter
which conflicts with a letter already on the
board.

You don't have a blank!

The word you entered requires that you have
a blank tile, which you don't.

You don't have a

The word you entered requires that you have
a tile, which you don't.

Bad Xword

The word you entered does not form all
valid cross words.

Can't end there!

The word you entered must have its last
letter followed by an empty square or the
edge of the board, not another letter.

If one of these errors occurs, you will simply be asked to enter
your move again. You will be given the option of overriding
WordsWorth's dictionary lookups of the main word and any cross words,
in case you wish to play a move that is not in the dictionary.

IF YOU MAKE MISTAKES:
* in entering the word, you can use the backspace
key to make corrections before pressing
ENTER
* press the ESC key once to clear the current line
and twice to cancel the current operation
and return to the menu.

Note that every word played must include at least one anchor
square, but the definition of what constitutes an anchor
square varies. The default is that it is any empty square
with at least one non-empty neighbour. If you select free
form play (see Appendix), all empty squares are anchors
(except possibly on the first move). If you select territorial
play, the usual definition applies except that only neighbouring
tiles played by the same player are examined.


4.9 P(ass) - Pass turn, and (optionally) discard some tiles.
===============================================================

You will be asked which tiles to discard. Enter the list in any
order. All letters must be entered in upper case, and if you
discard a blank (although its a rare occasion) you must enter
`_'. WordsWorth will validate your input. If you have all the
tiles specified, they will be returned to the pool and a new set
will be drawn. Otherwise you will be asked to enter your move again.


4.10 ) X(change) - Pick up blank tile from board
================================================

This option lets you pick up a blank from the board if you hold the
letter it represents, which you use to replace it. There are a number
of options, which are selected by the ExchangeAllowed configuration
variable. The possible selections are:

ExchangeAllowed = 0# No exchange moves are allowed (in which case
# the X option does not appear on the menu)
ExchangeAlowed = 1# an exchange constitutes an entire move
ExchangeAlowed = 2# an exchange can be followed by a tile exchange
# with the pool, but not with a word play
ExchangeAlowed = 3# an exchange can be done before any move.

Exchanges don't have any score associated with them.


4.11 ) F1 - Get help.
=====================

Pressing F1 at any time will display some help
about what input WordsWorth is currently expecting
from you.

4.12 N(ext move) - Make program play a different move.
========================================================

As with hints, the program stores up to twenty moves when it
decides what to play. If you don't like the move it made (maybe it
took a triple word score?!) you can force it to play differently.
Unlike hints, which are shown to you in order of score, the
program's moves are ordered by weight.

4.13 ) W(atch) - Start or resume autoplay mode
==============================================

Selecting this option tells the program to start playing for you.
You can interrupt autoplay by pressing any key other than ENTER.

4.14 ) V(iew) - Toggle opponent tile view on/off
================================================

Pressing `V' toggles the display of the opponent's tiles on and
off.


5) Saved Games
--------------

WordsWorth v0.6 allows games to be saved and loaded. Games are saved
in plain text form, with comments, so its quite easy to see what is
going on.

It is possible to have a board which has letters placed on it before
you even begin playing. One application of this feature would
be to set up a partially completed crossword puzzle and get WordsWorth
to find possible completions.

When you load a game, it will be played through to the point at
which it was saved, after which you can continue. The undo command
can also be used to go back to an earlier point.

The format of saved games is described in the Appendix.Note that
it is up to you to ensure that the game you load is compatible with
the current configuration. The results otherwise will be unpredictable
at best.

6) Ending the Game
-------------------

When both players are stuck, or the tiles are all finished, WordsWorth
exits and prints out the end score. You can also exit by
entering `q' at the move prompt. WordsWorth will clean up the
screen and print out a summary of the games results at the time
of exit.


ENJOY PLAYING WORDSWORTH!

=================================================================

APPENDIX A - FORMAT OF WORDSWORTH CONFIGURATION FILES
-----------------------------------------------------

WordsWorth has a basic default configuration, but you will
alomost certainly want to override this by using configuration
files, a complete example of which is included in the package.

The configuration files contain a number of lines of the form

=

The value may be a string, a character, a natural number, or
an integer, depending on the element. In some cases, tables of
values are expected; these should be delimeted by curly braces
`{' and `}'. Comments can be freely used; the `#' character
indicates the start of a comment. Everything following the `#'
until the end of that line is treated as a comment and ignored.

Apart from the `#' character, other special characters include
`{', `}' and `$'. If you want to specify one of these characters
literally without the special meaning, you should precede it with
a backslash. Thus, for example, \# represents the # character rather
than the start of a comment.

The `$' character allows you to enter an ASCII value directly, but
currently only supports single digit numbers. Thus, `$2' is the ASCII
2 character. These are currently only of use for accessing 10 special
characters in the font (in positions 1 through 10, the latter being
signified by `$0'). See the WordMarks and LetterMarks configuration
element and note (15) in the appendix for details.

Whitespace (such as spaces, newlines, and tabs) is ignored,
except in strings (such as the name of the dictionary).

A special configuration element, `Include', allows you to include
other files within a configuration file. Only one level of nesting
is allowed; that is, the main or top-level configuration file may
`Include' other files, but the included files may not themselves
include further files. In the WordsWorth distribution, this has been
used to structure the configuration into a number of different
`definition' files (each with a .def extension) which are included
by the main configuration file. This main file is created by the
`setup' program, which asks the user questions about the
configuration and then creates the appropriate `Include' lines.

The different configuration elements are now described, and their
default values given. The following characters are used to represent
types:

S - string
C - character
N - natural number
Z - integer
H - Colour or Hue
T - Texture
{n} - table of type n (e.g. {C} is a table of characters)

The valid colour names are:

Black
Blue
Green
Cyan
Red
Magenta
Brown
LightGray
DarkGray
LightBlue
LightGreen
LightCyan
LightRed
LightMagenta
Yellow
White

The valid texture names are:

Solid
Line
ThinSlash
ThickSlash
ThickBackslash
ThinBackslash
ThinHatch
ThickHatch
InterleavingLine
WideSpacedDots
CloseSpacedDots

On an EGA/VGA screen, you would usually make all textures solid
fill and just use colours. On a mono screen, you would make use
of textures over colours.

DISPLAY CONFIGURATION ELEMENTS

NameDefaultType Comments
========================================================================
LetterMarks {C}Letter used to represent double,
triple, etc, letter score
squares. Up to 10 are allowed.
See note (15).
LetterMarkColors {H}Colours used to draw the double,
triple, etc, letter score
square marks (up to 10).
LetterMarkBColors {H}Colours used for the background
of these squares (up to 10).
LetterMarkBTextures {T}Fill styles used for the background
of these squares (up to 10).

WordMarks {C}Letter used to represent double,
triple, etc, word score
squares. Up to 10 are allowed.
See note (15).
WordMarkColors {H}Colours used to draw the double,
triple, etc, word score
squares. Up to 10 are allowed.
word score squares
WordMarkBColors {H}Colours used for the background
of these squares (up to 10).
WordMarkBTextures {T}Fill styles used for the background
of these squares (up to 10).

BoardColorCyan HColor of board squares
BoardTexture CloseSpacedDots TFill style of board squares
BoardLeftShadowColorDarkGray H
BoardLeftShadowTextureSolid T
BoardTopShadowColorLightGray H
BoardTopShadowTextureSolid T
TileLeftShadowColorDarkGray H
TileLeftShadowTextureSolid T
TileTopShadowColorLightGray H
TileTopShadowTextureSolid T
TileColorWhite H
TileTextureSolid T
AlternateTileColorLightBlue HUsed when ww -c is specified
AlternateTileTextureSolid T
NonPlayableSquareColorBlack H
NonPlayableSquareTexture Solid T
RackWallColorBlue H
RackWallTexture CloseSpacedDots T
RackBaseColor LightBlue H
RackBaseTexture WideSpacedDots T
BlankTileTextColorRed H
NormalTileTextColorBlack H
MessageTextColorWhite H
LabelColorLightGray H



LEVEL AND STRATEGY CONTROL

NameDefaultType Comments
========================================================================
LengthWeight2 ZWeighting factor for long words (2).
MininumAllowedScore0 NForce WW to ignore moves with lower
score than this.
MaximumAllowedScore0 NForce WW to ignore moves with
higher score than this (3).
RestrictedSearchMin0 NSee notes (3) & (4).
RestrictedSearchCount0 NSee notes (3) & (4).
MinimumWordLength0 NForce WW to ignore moves shorter
than this.
MaximumWordLength21 N Forces WW to ignore moves longer
than this.
ControlStrategy0 N0 means control should maximise
score (7).
IncludeCrossWeights0 N 0 means only take into account
weight on the main word (8).
AdaptiveStrategy1 N0 means don't use adaptive play (9).
BlankThreshold20 NThe program will only consider
playing a blank tile for
words with at least this
weight.



GAME CONFIGURATION

NameDefaultType Comments
========================================================================
VideoCard Autodetect SSee note (14).
VideoMode NSee note (14).
Dictionarywwdict SName of the dictionary file
Rows13 NNumber of rows in the board
Columns13 N Number of columns in the board
NumberOfTiles6 NNumber of tiles per player. See(1).
PlayAllTileBonusPoints 0 NBonus score for playing all tiles
BoardPositionScore {C}See note (5).
FirstMoveRow8 NRow through which first move
must pass (6).
FirstMoveCol8 N Column through which first move
must pass (6).
FirstMoveDir0 NHow the first move must be played.
0 - any, 1 - down, 2- across.
FreeForm0 NHow other moves must be played.
0 => must anchor on existing
words
1 => must anchor on own words
other => can anchor on any
empty square
LetterFrequencies {N}Number of each letter type in
the pool (10).
LetterScores {N}The score associated with each
type of letter (11).
LetterWeights {N}The weights associated with each
type of letter (12).
ExchangeAllowed0 NIf this is non-zero, you can
pick up a blank from
the board if you hold
the letter it represents.
See section 4.10 and (13).


NOTES:

(1) If this is zero, you can play whatever letters you like (there is
no limit on the number of letters; the game ends when you
are stuck).
If this is one, you can play any letters from the common pool.
That is, the pool specifies the total set of letters than
can be played, but otherwise this is like zero.
Greater values represent the number of tiles you draw at the start
of the game.

(2) If this is zero, it has no effect. If it is 1 or 2, a balance is
struck between score and length, and if this is 3 or more,
WW favours long words in almost every case, even if the
score is less.

(3) A zero value for either means ignore this factor.

(4) As it searches, WW counts the number of moves it finds that have
a score of at least . Once it has found
of these, it plays the best move it has
found thus far. This gives a lot of control over its play, but
it's quite difficult to predict the exact effect.

Values of 5 and 40 respectively tends to cut WW's score
to about 40% of the maximum.

(5) This is the board layout for scores. a, b, and c respresent unit,
double, and triple letter squares respectively, while B and C
respresent double and triple word squares.

WordsWorth also allows you to specify non-playable squares (something
like the black squares on a crossword puzzle), using the character
@.

An example board layout specification is:

boardPositionScore = {
BaaacaaacaaaB
a@aaababaaa@a
aa@aaabaaa@aa
aaa@aaaaa@aaa
caaacaaacaaac
abaaababaaaba
aabaaaBaaabaa
abaaababaaaba
caaacaaacaaac
aaa@aaaaa@aaa
aa@aaabaaa@aa
a@aaababaaa@a
BaaacaaacaaaB
}

The default is all `a's.

(6) A value of zero implies no constraint.

(7) This specifies how the program should play the control player
in self-play modes, and how it chooses hints for you. 0
means `use a plain maximise score strategy', while any other
positive integer means `use the same strategy the program is
playing itself' (that is, subject to all the extra weight and
search constraint factors).

(8) This specifies whether the weight should be calculated on the main
word being played only, or on all the cross words made as
a result as well. A value of 0 means main word only.

(9) When you select this option, the computer will try to play an even
game with you. When it is ahead it will back off, while when it
is behind it will be more aggressive. A value of 0 disables this
feature.

(10) This is a table of 27 numbers specifying how many of each type
of letter there are in the pool to start with. The 27th value
is the number of blank tiles. The default is two of each tile,
except for the vowels, of which there are 7 A's, 10 E's, 6 I's,
7 O's and 4 U's.

(11) The default is a score of one for each letter.

(12) See also LetterScores in the Game Configuration. A score and a
weight are different, as some low-scoring letters (especially
`S' and the blank) should be held on to for use in big-scoring
plays. They would thus have a negative weight. On the other
hand, if it is desirable to get rid of a particular letter
as soon as possible, it should have a positive weight.
Other letters should have a weight of zero. When WordsWorth
discards tiles, it will discard positively weighted letters first,
and may discard letters with weight zero if the first action is
insufficient. Also, it will discard duplicate letters in some
cases. If both a Q and a U are held, usually neither of these
will be discarded.

Besides constraints on the search, length, and score of words,
WordsWorth chooses its move on a weight determined by the
formula:

weight = score + length_weight_factor * length +
sum_of_weights_of_letters_played

(13) The allowed values are:

0 - exchanges are not allowed.
1 - an exchange constitutes a complete move.
2 - an exchange can be done before a pass and swap only.
3 - an exchange can be done before a pass and swap or
a word play.


(14) The allowed video cards are:

Autodetect
Hercules
EGA
VGA
SuperVGA

Note that the SuperVGA support is for VESA-standard Super
VGA only. Other types of Super VGAs will be detected as
normal VGA. If this happens, try setting the SuperVGA card
and mode explicitly in the configuration. This works on my
ATI Ultra XL, even though it fails the autodetect unless I
run its VESA driver.

The possible mode values are (defaults shown with *):

CardMode NumberResolutionColoursNotes
-----------------------------------------------------------------
Autodetect*0

Hercules*0720x3482

EGA 0 640x20016Not useable
EGA*1640x35016

VGA 0640x20016
VGA 1640x35016
VGA*2640x48016

SuperVGA 0320x200256Not useable
SuperVGA 1640x400256
SuperVGA 2640x480256
SuperVGA*3800x600256
SuperVGA 41024x768256

WARNING: If you explicitly specify a video card and you have a
different card, you may crash your machine! For example, if you
have a Hercules card and you specify `videoCard=VGA' in your
configuration, you will have problems!

(15) The font used for word and letter marks includes ten special
characters with the values 0 through 9. These are specified using the
`$' character. The characters and their values are:

$1Double$2Triple$3 4x
LetterLetterLetter

$4 5x$5 6x$6Double
LetterLetterWord


$7Triple$8 4x$9 5x
WordWordWord

$0 6x
Word

These labels are very small and not that readable, but may be preferred
to more symbolic representations with a single character. They also
do not work as well in all video modes. I have put them in the distribution
config files; you can change them if you wish.

=================================================================

APPENDIX B - FORMAT OF WORDSWORTH SAVED GAME FILES
--------------------------------------------------

Saved games in WordsWorth have a fixed layout order. Once again whitespace
is ignored, and comments can be used.

Each saved game begins with a flag, indicated by a `@' character followed
immediately by a number. The number has the following meanings:

@0 - ignore what follows
@1 - load up game
@2 - set random number seed (no longer supported)
@3 - combination of @1 and @2
@4 - load up start board
@5 - same as @1 and @4
@6 - same as @2 and @4
@7 - same as @1, @2 and @4

Then come the starting board letters (using `.' for empty). This
allows you to set up boards with predetermined letters. Note that
if you load up such a board, the restrictions on where the first
move may be placed are relaxed; it can be played anywhere, provided
it builds on to the preplaced letters (and even this need not be the
case if the FreeForm configuration variable is set).

For example:

...............
...............
...............
...............
......W........
..HELLO........
......R........
......L........
......D........
...............
...............

The computer's starting rack is then specified, followed by the
human's/control's. Then comes the actual list of moves. As we want
to support undo, we need quite a lot of detail. Each move consists of:

1) the move number
2) the player (0 - program, 1 - you or control)
3) the action (P - pass; A - across; D - down; X - exchange)
4) if the action was 1 or 2, the starting row and column
5) the word played or letters dropped. In the case of a word
a `mask' is used, with a dash `-' representing a letter
already on the board
6) the tiles drawn, preceded by a '+'
7) the score for the move, preceded by a '*'

For example:

1 0 A H G H-LLO +ACDO *12

This specifies the first move, which is played by the program,
and is an across word starting at row H, column G. The play in this case
is HELLO (the E was already on the board), and then the tiles A,C,D
and O are drawn. The score made is 12.)

At the end of the list of moves is a `0' character which represents the
end of the file.

Note that saved games do not include a saved configuration. It is up to
you to ensure that the correct configuration file is used when you load
a saved game.

=================================================================

APPENDIX C - Format of the Setup Configuration File
---------------------------------------------------

This is the configuration file for the SETUP program.
It consists of a number of entries of the form:

@question?
>answer_1= action_1
>answer_2= action_2
...
>answer_n= action_n
%

An alternative form is:

@question?

In this case, the answer/action pairs are read from the specified
file.

Each entry (either question, or answer/action pair) must
be on no more than a single line, as the end of the line
is regarded as the terminating character of the action field.
The last entry is followed by a double %%. Note that the
characters @, > and % MUST be in the first column to be
recognised by the SETUP program. A line that has a # in
the first column is treated as a comment and ignored.
The question may be empty, in which case the answers, if
any, are ignored, but each action is performed in sequence.

Each action can be one of three types:

1) A list of names of definition files, separated by whitespace.
This action results in `Include' configuration element entries
being written to the configuration file for each of the definition
files in the list, in order.

2) A piece of text enclosed within braces {}. This is included
literally as a single line in the configuration file. It may
contain two special `escape' characters, namely TAB (represented
by `\t') and NEWLINE (represented by `\n'). In the latter case,
the resulting output will obviosuly be spread over more than
one line.

3) A file name immediately preceded by a `<' character; this file
is opened and SETUP continues reading the configuration from
that file. When the end of that file is reached, SETUP continues
with the first file. This type of action is used to provide a
rudimentary form of `compound statement' in the configuration
process. Up to eight levels of nesting of setup files is
supported. Also, if the question is empty, no further actions
related to that question will be performed after this action.

For example, the configuration entry:

# Get the display type (color only)

@What type of display do you have?
>EGA= { VideoType = EGA\nVideoMode = 2}
>VGA= vgaspec.def color.def
>Super VGA=
will cause SETUP to ask:

What type of display do you have?

1) EGA
2) VGA
3) Super VGA

Enter option (1-3)?

and if you respond with `1', SETUP adds the lines:

VideoType = EGA
VideoMode = 2

to the configuration file. If you respond with `2', SETUP adds
the line:

Include = vgaspec.def
Include = color.def

to the configuration file, and if you respond with `3', SETUP
reads further instructions from the file `svga.cfg'.

NB - no question can have more than nine answers, and no
line may exceed 80 characters!

======== END OF README ============================================
IMPORTANT NOTE!
===============

This version of WordsWorth is a restricted unregistered version.
It uses a US English dictionary of about 15000 words, which contains
only words of six letters or less, and you cannot override the
dictionary.

If you wish to obtain the unrestricted version, you must
register your copy. When you register, you will receive a
new copy of WordsWorth, together with two 65,000+ word
dictionaries (US English and UK English). The new version
plays at almost the same speed as this version (the only really
noticeable difference is the time taken to load the dictionary),
allows you to override the dictionary, and eliminates the ten-
second delay on the introductory screen.

To register, please send an international bank draft or money
order for R75 (South African Rands) (foreign users: US $25 or
20 Pounds Sterling). I will give a portion of every registration
fee to Operation Hunger, the Red Cross, and other welfare
organisations.

Send your registration fee to:

Graham Wheeler
P.O.Box 15525
Vlaeberg
Cape Town 8018
South Africa

together with your name and address. If you wish to send more than
the requested fee, any extra will also go to welfare.

Please specify the media you require (2 x 5.25" DSDD or 1 x 3.5" DSDD).

DISCLAIMER - This software is distributed without a warranty of
any sort. You use this software at entirely your own risk. I will
not be responsible for any loss, damage, injury, death, disaster,
plagues, famine, divorces, disagreements, etc that may result from
the use of this software.




 December 22, 2017  Add comments

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)