Meister Mind version 1.2 ZShell Edition
By Martin Hock (oxymoron@aimnet.com)
11/3/96

NOTE: This is my first program in assembly language at all.  Therefore,
although I have spent much time optimizing it as much as I know how, it isn't
perfect.  I'd like it if I got lots of feedback.  Please send me e-mail!

Meister Mind is a near-clone of the popular game Mastermind by Pressman Toy
Corporation.  Basically, you, the Codebreaker, want to break the code created
by the meisterful Codemaker within ten tries.  Sound tough?  Luckily, there
are a couple of things you can count on.

Firstly, the code created by the Codemaker is in a special format.  It is 4
characters.  Each of the characters can have one of 6 values.  Repeat values
are allowed.  But this means that there are 1296 possible codes!  Yikes!

But not to worry!  You get special clues every time you submit a guess.  Each
time you enter a code, you get two numbers.  The first one tells you how many
of your characters have the right value and are in the right position.  The
second one tells you how many of your characters have a correct value but are
in the WRONG position.  Here are some examples:

(Because I can't type in the actual symbols used by the program, I will use
the letters A through F instead)
Let's say the code is AABC.
You put in BCAA.
The result would be: 04.  While 0 of them are in exactly the right place, all
4 of them are characters used in the actual pass code.
The code is ABCD.
You put in AAAA.
The result would be: 10.  Although A appeared in the code, it only appeared
once so it is only counted once, not four times.  And since it appeared in
the same place as one of your As, the "same same" overrides the "same
different".

You can play this game as either a 1-player or a 2-player game!  If you have
a friend, he/she can enter a code for you to try to solve by choosing the
2-Player menu option.  If you're alone, you can make your own code by
choosing the 1-Player option.  You do influence the outcome partially by how
long you take to choose the 1 Player menu option and at what time you run the
program, but it's AUTOMATIC!

Here are the keys you use throughout the game:
Main Menu:
F1-F4: Menu functions
Exit: Exits

Code-entering Phase:
Left/Right: Change which code character you are editing.  You will know which
character is selected because it will be flashing.
Up/Down: Change the code character's value.
Enter or 2nd: Submit code.
Exit: Forfeit/quit game. (returns to Main Menu)

Do you like this game?  Do you need some more help with the rules?  Do you
have some suggestions about how to make the game better?  If so, send me
e-mail.  I really enjoy getting fan mail.  And I have a bit of incentive,
too.  If I get 20 different messages from 20 different people at 20 different
e-mail accounts telling me how much they like the program but that I should
implement a timer into the program, I just might do it.  The timer would be
in seconds and would be displayed in the lower-right corner of the display.
I think I could do this, but I don't particularly want a timer for myself
because I like taking my time when I play.  However, I'm willing to listen to
what my fans have to say.  I'd also like some constructive criticism as well,
but first tell me how much you like my program.  Otherwise I'll just feel bad.

Actually, I've decided that I'm probably freezing development of this program
because I have moved on to new ones.  However, if I ever get 20 e-mails that
tell me to add a timer, I will.  As of this writing, I have received ONE.

In case you have a friend that has a TI-82, you can get Meister Mind for the
TI-82.  It doesn't have any graphics, but it's just as fun and frustrating.
It's quite similar to this one in gameplay style.  You can find it in the
ticalc.org TI-82 program archive, or you can ask me to e-mail it to you and
I will gladly do so.

Version History:
1.0   First released version.
1.1   Made cursor flash, allowed exit from player 2 code entry.
1.101 Changed code entry key to 2nd for a friend (not released publicly).
1.102 Documentation/game text changes, press 2nd or enter for code entry,
      slight optimization (also not released publicly).
1.2   Randomized 1 player game (No keypress!)
1.201 Fixed the new randomizer (had a bug that made the numbers less
      random).

Special thanks to:
* Thomas N. Anderson, the creator of TASM, who wrote a lovely compiler but
  never gets any credit for it.
* Andy Selle, who wrote the very nice subroutine used to "zoom" the numbers.
* Chris Busch, who wrote the excellent subroutine used to randomize.
* Mike Baker and Jimmy Mardell, who have inspired me with their masterful
  ZShell games and teachings.
* David Ellsworth, for giving me lots of feedback and suggesting a flashing
  cursor.
* Eric Linenberg, for being the first one to e-mail me to tell me how much
  he liked Meister Mind. ("Dude, that game is AWESOME!!!")
* Everyone involved with the production of ZShell.
* Everyone involved with the creation of free programs for ZShell.
