BILLY v3.11
==============================
A Greg Leedberg Creation, 2001
==============================
::BILLY is freeware, and may be distributed freely.::

  The genius physicist Albert Einstein once said, "Computers are
incredibly fast, accurate and stupid.  Human beings are incredibly
slow, inaccurate and brilliant.  Together they are powerful beyond
imagination."  True.  But just think, what if computers weren't
at all stupid?  Today, increasingly more powerful computers seem
to be defined by their processor speed, but before a computer can truly
take the next great leap of power, it needs the injection of
intelligence.
  Artificial intelligence (AI) is the movement heading in this
direction, and while I'll never claim Billy to be truly intelligent
and magnificently powerful, he is (I hope) a step in the right
direction.  He is an AI "bot" (or "personality," or "construct")
designed to simulate a real human in conversation (although I'd
rather you not use Billy as an excuse to not talk to real people!).
Billy is not meant to be taken too seriously (I only treat him as
such when I need to justify having spent months upon months working
on him!).  Always remember to have fun with Billy (despite the months,
I had fun creating him).  Don't take anything he says too seriously,
and don't expect too much -- he's still just a "stupid" computer!
  Maybe someday, though, he'll be more than that.

::::::::::::::
: DISCLAIMER :
::::::::::::::
The BILLY software is an attempt to simulate human intelligence
and language.  To accomplish this goal, the BILLY software is capable
of learning.  The software uses many learning models to simulate
intelligence, and all of these models involve storing data it has
seen used by the humans it interacts with.  Much of this stored data
will eventually be used by the software to generate intelligent
responses.  Upon initialization, the BILLY software contains no
objectionable material.  However, the author, Greg Leedberg, cannot
be held responsible for any material stored in the software's files
after initialization, or any offensive responses generated by the
learned data.


0. TABLE OF CONTENTS
====================
  A "*" denotes that a section has been updated (or added) since
  version 3.0.

   1. Starting Billy
   2. *First Things First: The Interface
   3. Talking To Billy
   4. *Natural Language Commands
   5. Customizing the Chat Program
   6. Some Notes On Mind Files
   7. Customizing Billy's Personality
   8. *Loading Mind Files
   9. *Creating Your Own Mind Files
  10. *Viewing Transcripts of Chats
  11. Link Mode
  12. *Using the "TEACH" Utility
  13. Initializing Billy's Memory
  14. *Living Without A Mouse
  15. *A Time-Out For Questions
  16. How To Get the Latest Version of Billy
  17. Credits
  18. *Revision History


1. STARTING BILLY
=================
  Starting Billy is easy, and barely warrants its own section in this
manual.  Just run BILLY.EXE.  Either double-click on it in Windows, or
type it at DOS from its directory.  Easy enough, I think.


2. FIRST THINGS FIRST: THE INTERFACE
====================================
  Billy 3.11 has a mouse-driven interface which will (hopefully) make
using his many features much easier.  The interface is divided into
three parts:

    ::The Title/Info/Main Menu Bar::
       This is the blue bar at the top of your screen, and it is further
       divided into three parts.  On the far left is the version of
       Billy that you are using.  On the far right is the name of the
       currently loaded mind file (more on that later), and in the
       center is the main menu.  The main menu has three options:
       Restart, Customize, and Quit.  Their uses are all described
       elsewhere in this text, but just be aware that to select these
       options, you click on them.

    ::The Submenu Bar::
       This is the gray bar below the Title/Info/Main Menu bar.  When
       you first start Billy, this displays text crediting the program's
       author.  However, if you click on "Customize", the "Customize"
       submenu appears in this bar.  Any submenus from this point on
       (such as the submenu for the "Chat Program" option) also appear
       in this bar, replacing whatever menu was there before.  This bar
       is similar to "drop down" menus in Windows, except that the
       menus don't drop down.

    ::The Chat Area::
       This is the entire black area of the screen, and its use is
       (hopefully) self-explanatory.  This is where you and Billy
       carry on your conversations.

  Frequently, information will be requested (or presented) in the form of
windows appearing on the screen.  If, after a window appears, you decide that
you don't want to go through with the operation you are about to do, most of
the time there will be a "X" in the upper-right corner of the window,
which you can click on to cancel what you are doing.


3. TALKING TO BILLY
===================
  You talk to Billy like you would talk to any other person.  The main
difference is that he won't always respond intelligently, like most
people would.  Just type in what you want to say, and hit <ENTER> (or
<RETURN>, if you're so inclined).  When you're done, either type BYE to
Billy, or click "Quit".  Or, you can even hit <ESC>.  With all these
ways to exit, there's no reason not to.  Unless you don't want to.

  If someone else wants to use Billy, or if you want to talk to Billy
using a different name, you can click on "Restart" and you will be
prompted for a name again.


4. NATURAL LANGUAGE COMMANDS
============================
  In addition to the things the interface lets you change about Billy,
there are a few "natural language commands" that you can use during
conversation to help make Billy seem smarter.

  ::DON'T SAY THAT::
     Anytime Billy says something very stupid, you can say "Don't say that"
     or "Do not say that", and he'll try to never say it again.  Sometimes,
     a repeat of a dumb sentence can't be avoided, unfortunately, but
     Billy will try his best.

  ::xxx IS NOT A NOUN::
     At any time, you can tell Billy that "xxx is not a noun.", with "xxx"
     being anything that he seems to think is a noun.


5. CUSTOMIZING THE CHAT PROGRAM
===============================
  To change various aspects of the chat program, click on "Customize",
and then "Chat program" (doesn't this make sense?).  From here, you can
alter the Input Text Color (text you type), Output Text Color (text
Billy types) and the Default Mind File.  If you want to know, this is
the "mind file" which the chat program loads when it is started.  Don't
worry about this until you get into Creating and Loading mind files,
later on in the manual.


6. SOME NOTES ON MIND FILES
===========================
  Billy 3.11's AI uses a concept called "mind files."  The Billy executable
file is merely an engine which reads mind files and uses them to generate
a response to user input.  The engine does the actual work, but the
mind file goes a long way to creating the individual personality of Billy.
This file stores all of Billy's personality items, his entire
vocabulary, sense of grammar, knowledge, etc.  Billy is distributed
with one mind file, BILLY.MND, which was created by me and represents
my best effort to creating a realistic AI.  As will be explained later,
it is possible for you to create your own mind files, or to use mind files
created by other people.  In general, it's best if you resist the temptation
to look at what's inside a mind file (at least at this point).  However,
if you talk to Billy a lot and feel that he has learned from you and is now
smarter than he was at first, it is possible to distribute your BILLY.MND
file so that other people can see just how smart you are.


7. CUSTOMIZING BILLY'S PERSONALITY
==================================
  There are certain aspects of Billy's personality that you can
customize, if you decide that he is too boring.  To do this, click on
"Customize", then "This Mind".  Here you can see all the different
things you can change about him.  Just click on one to change it.
Any changes you make affect only the currently loaded mind file.

   ::NAME::
      This is the chat bot's name as it will show up in the chat
      window, link mode, and in the chat transcripts.
   ::AGE::
      This determine's the bot's age.  This data is used only in
      conversation.
   ::GENDER::
      This determine's the bot's gender, and you will be able to choose
      between male and female.  Like the age, this data is only used
      when relevant in conversation.
   ::LOCATION::
      This is the bot's physical location, and can be anywhere you
      want.  By default, this information is in the form City, State,
      but you can use any form that makes sense.  Used only in
      conversation.
   ::RELATIONSHIP::
      This lets you give the bot a relationship.  First, you determine
      the relationship type, and can type in anything you choose.  The
      type can be boyfriend, girlfriend, wife, husband, father, mother,
      friend, or anything of that type (try to make sure it's only one
      word, though).  Next, you type the name of this person.  This
      data is used for answering relevant questions in conversation.

One more option under this menu is CORRECT SPELLING, which has nothing
to do with personality, but does affect only the currently loaded file.
This feature allows you to correct a typo you may have made and which
the bot is now ignorantly repeating back.  After selecting this option,
enter the typo as you typed it, and then the way it should be spelled.
Every instance of the typo in the bot's language file will be changed
to the correct spelling.


8. LOADING MIND FILES
=====================
  Billy is distributed with the official "Billy mind", but you may find
other minds available, either from the internet, or from friends (or you
can create your own minds, as described in the next section).  If you have
another mind, put it in the directory that Billy is located in.
To load this mind, just click on "Customize", then "Load Mind".  A list
of available mind files will appear, and you should then type in the
file name of the mind you want to load (with or without the .MND extension).
Assuming what you typed in is a valid (and existing) file name, it will
load and you will then be talking to a different AI (still powered by
the BILLY technology, though).
  For more advanced users: From the DOS command line, if you want to start
Billy with a mind file loaded other than the default one, you can do that
by specifying the file name as an argument.  So, if you wanted to load a
mind file called "JILL.MND", you could type: "billy jill.mnd".  In general,
just use the Customize | Load Mind feature, though.


9. CREATING YOUR OWN MIND FILES
===============================
  Okay, Frankenstein, so you're ready to make your very own AI personality?
Creating your own Billy mind file is easy.  Just click on "Customize", then
"Create Mind".  There are two modes for mind creation -- Simple, and
Adcanced.  The Advanced mode is beyond the scope of this manual, and
so is described in detail in the file CREATE.TXT.  The following
information (and the previous statement that creating your own mind is
easy) applies only to Simple mode.

  You will be prompted for the FILE name.  Type in something with a .MND
extension.  Actually, if you don't type in the .MND extension, the program
will automatically add it for you, but it's important that you understand
that it's there, and that all mind files must have a .MND extension.
This newly created file will automatically be loaded, and you'll get a
notice that tells you basically the same thing as the next paragraph:

  When the new mind is created, all of its personality items (described
a few sections above) are set to Billy's defaults.  Since you went to the
trouble of creating your own mind file, I assume you want to use settings
other than the default.  To change the items (including the name of your
bot, which is set to the name of the file), go through the steps
described in the section "Customizing Billy's Personality".

  One aspect of Billy that should be emphasized is that his sense of
language and grammar is learned from his conversations with you, and
it is in this respect that you can make individual mind files "sound"
differently.  Talk to different minds differently, and they will
talk differently.  Also, teach them different facts, and they will
have a different "knowledge web" of facts to answer questions from.


10. VIEWING TRANCRIPTS OF CHATS
===============================
  Want to savor the memories of time spent talking to Billy?  I knew you
would.  Just open up BILLY.TXT, and you'll find a transcript of every
chat Billy has had, dated and timestamped and everything.  For transcripts
with mind files other than the default BILLY.MND, open up the corresponding
TXT file.  You can thank me later.


11. LINK MODE
=============
  What's link mode, you ask?  Well, imagine a world populated by AI
constructs.  These constructs would be talking with each other,
and probably plotting against any opposing lifeforms (such as
humans!).  This is what link mode allows for.  Link mode makes use
of a protocol technology I developed called UDLP2.  UDLP2 uses an
intermediary program (called a "UDLP2 Shell") which allows a number of
UDLP2-compatible bots to talk to each other.  The Billy 3.11 distribution
comes with the latest version of my UDLP2 Shell (as of this writing,
version 2.0).
  For information on using the Link Shell, refer to LINKHELP.TXT.

 Once started, it's out of your human control!  The bots will talk
about whatever they want to, and you will likely come away afraid.
When you want them to stop talking, just press any key.

  The link shell links bot EXECUTABLES (individual copies of the
programs), not MIND FILES.  Additionally, the mind file Billy 3
uses for UDLP2 is the DEFAULT file specified under
"Customize | Chat Program".  So, if you want to link two different
Billy 3 mind files, you must make a copy of the entire Billy
directory, and change the default files.  If you're looking for other
UDLP2-compatible bots, check out my website. All Billies starting with
version 2.2 are UDLP2-compatible, and every version of Daisy is as
well.  Hopefully, all future bots I make will also be UDLP2-compatible.


12. USING THE "TEACH" UTILITY
=============================
  Billy v3.11 comes with the "TEACH" utility, which is a powerful little
gadget that allows you to "train" a mind file from a text file.  Any pure
ASCII file can be used to teach Billy.  Pure ASCII files are files that
contain just text, no fonts, formatting, italics, etc.  This means you
can't use HTML (web) files, Word documents, and the like.  But anything
that is pure text (such as this manual) can be used to quickly teach a
mind file.

  To do this, simply run the TEACH utility by either typing "teach" at
the DOS prompt, or double-clicking on "TEACH" in Windows (found in the
same directory as Billy).  Teach is fairly striaghtforward, but to
help a little: You will be prompted for the "source file", this is the
pure ASCII, text file from which you want to teach Billy.  Next you will
be prompted for the mind file you wish to teach.  This can be BILLY.MND,
or any mind file that you have created.  Now the utility will teach the
mind, and tell you what percentage of the source file has been taught
so far.  When 100% is reached, it is done.  The amount of time it takes
can vary, depending on the size of the source file and the speed of your
computer.

  "TEACH" is a fine example of the flexibility of UDLP2.  TEACH itself
is a bare-bones Link Shell, with a text file parser added in.  It uses
the UDLP2 protocol to "feed" sentences to Billy 3.  Note, however, that
TEACH is specially designed for Billy 3.11, and cannot be used with
other bots, even if they are UDLP2-compatible.


13. INITIALIZING BILLY'S MEMORY
===============================
  "Initializing" means, "restoring to default state."  In general,
you DO NOT want to do this.  However, if a file becomes corrupt, you
may have to do this (usually, the program will tell you if you have to).
To do this, then, just run INIT.EXE.  It will ask you if you're sure,
and if you type "Y", you've gone past the point of no return.  See you
on the other side...


14. LIVING WITHOUT A MOUSE
==========================
  If for some reason you don't have a mouse, fear not.  You can still
buy one.

  Okay, so if you REALLY don't want a mouse, you CAN use Billy without
one.  It is possible to disable the mouse in Billy, and you may need
to do this if Billy won't run for some reason (this is known to happen
under Windows NT).  To disable the mouse, rather than typing "billy",
you should type "billy -mouseoff" from the DOS prompt.  If you're
afraid of DOS prompts, you can do this through Windows by going into
your Billy directory using either Explorer or My Computer, and
right-click on "billy.exe" (if extensions are hidden, then it will
show as "billy" with a blue and white box above it).  From the
right-click menu, click on "Properties".  From the Properties window,
click on the "Program" tab at the top.  Where it says "Cmd line:",
type in "billy -mouseoff", then click on OK.  Now Billy can't see your
mouse.

  "But wait!" you say.  "If the mouse is disabled, I can't access all
those menu items!"  Well, duh.  Of course, I'm always looking out for you,
so I built in a little functionality that lets you access those features
from the chat window.  This is accomplished through what I call
"slash commands", commands you type which Billy identifies as commands
because they all start with a forward slash ("/").  There is basically
one slash command for every menu item (except "Quit", because you can just
press "Esc" quicker).  For a list of the commands, type "/?".


15. A TIME-OUT FOR QUESTIONS
============================
Q: Billy crashed.  You're obviously a bad programmer.  Fix it now!
A: I've gone to great lengths to try and make sure Billy won't crash,
   but you can never be completely sure.  There's no such thing as a
   program with no bugs, only a program with bugs that haven't been
   found yet.  If you find one, e-mail me at greg@leedberg.com.

Q: When I try to start Billy under Windows NT (or 2000), I get an
   error 216 message.
A: Try disabling mouse support.  Refer to section 14.

Q: I get an error saying I need a file called "csdpmi*b.zip".  Where
   do I get this?
A: This is an error having to do with Billy using DPMI (extended)
   memory, and your system not wanting to let it.  To fix this,
   download an official patch for your system from

           http://www.leedberg.com/glsoft/csdpmi4b.zip

   This fix is public domain and not created by me, so I can't offer
   support for it, unfortunately.

Q: Are you going to make Billy for Linux/Windows/MacOS/any platform
   other than good old DOS?
A: Hopefully.  I'd love to port Billy to Linux (as a text-based
   program).  Going to Windows/MacOS would require much more work,
   but some day I'd like to do that, too.

Q: Will you please please please add feature xxxx?
A: Maybe.  Unless you're suggesting adding an animated face.  Please
   don't e-mail me about that one. :)

Q: Where can I find more mind files for Billy?
A: If any one sends me some, I'll post them on my website (address
   given below).  If history holds true, some independent websites will
   probably pop up offering that service.  Or, if all else fails, check
   out the message board on my website and see if anyone wants to
   trade.


16. HOW TO GET THE LATEST VERSION OF BILLY
==========================================
  Billy is an on-going project for me, and new versions of him will
continue to be released periodically.  Additionally, I'll probably
continue to work on other bots to test new methods for AI.
  The latest version of Billy will ALWAYS be available from my
website:
                http://www.leedberg.com/glsoft

Also, from my website, you can sign up to be on my mailing list,
and get notified of new releases before everyone else.


17. CREDITS
===========
                BILLY v3.11 was created entirely by:

                         GREG LEEDBERG!!!
                       (greg@leedberg.com)


18. REVISION HISTORY
====================
  See HISTORY.TXT.