THE MASTER COW'S GAME MENU
by Jason Quattrini, Computer And Systems Engineer (HA!)
Revision History

Read the versions from bottom to top.  That is, start with the earliest
version number/date/time and work your way up to the most recent version
number/date/time.  I could flip everything arond so the most recent is at the
bottom, but I don't want to.

v0.96b - 7-02-99 11:01 am
       - Added the use of Home and End when scrolling in the names list.
       - Removed an unnecessary screen redraw when copying a game item.

v0.96  - 7-01-99 11:00 am
       - Ahhhh... fixed a little annoyance.  Several times I've wanted to
           copy a game so I could just change the options for it, and had to
           either edit gmenu.cfg or re-type all of the game information.
           Annoying.  So, now you may press "insert" and the game/item will
           be duplicated.
       - Temporary files created upon execution of the menu will now be
           removed when you use the command line help.  It used to just leave
           them there.

v0.95  - 6-02-99 1:00 pm
       - Cleaning up the main function some.  All argument processing was
           plopped into it's own function (all 184 lines worth *plucked*
           from the main function, giving it some much needed breathing
           room.)
       - Added five colors schemes, invokable with the -cs option.  I like
           the first three.  The fourth is pretty nasty. The fifth is medium
           OK.
       - Added support for super long directory, executable, and option
           names.  Should handle most Win9x long filenames.  255 characters
           just to be consistant with everything else in the world.

v0.94e - 4-27-99  1:51 pm
       - The only changes were a tidying up of the source code, and removal
           of unused functions/variables.  And comments (ADDING, not
           removing.  Geez, Do I have to spell EVERYTHING out??)
       - Won't be a release version, as the executable is still the same.
           Unless I split up the huge "main" file that is.

v0.94d - 4-25-99  3:11 pm
       - Ahh, the first "public release".  Will anyone actually use it?
       - Changed the name from "Game Menu" to "The Master Cow's Game Menu",
           because I looked at other people's universal front-ends, and it
           would seem that the name "Game Menu" has been used multiple times
           already for game menu programs.  Imagine that.  I need to think
           of a really catchy name.  For now you're stuck with that.

v0.94c - 4-24-99  2:10 pm
       - In the process of adding command line arguments to change colors.
           Colors may be set for the main window, the list window (including
           the highlight bar), and the information windows.  Colors saved
           into the beginning of the cfg file... Going to need some error
           checking for this stuff, and probably an option to display all
           valid options.
       - There is also a command line help, which displays available command
           line options.  Not the prettiest in the world, but good enough
           for now.

v0.94b - 4-18-99  6:08 pm
       - More color fiddling.  Changed the main background from blue to red,
           the text for the list of names from light green to light grey, and
           the highlight bar from red to magenta.  Probably change more
           colors as I see fit.
       - Compiled without debugging info, so the executable file is much 
           smaller.

v0.94  - 4-12-99  4:05 pm
       - Search scrolling fixed, so now it works how one would tend to
           expect (that one being me...).
       - The search is now case-insensitive.
       - The directory length has been extended by two characters, and the
           option length has increased by 36, for a total of 75 characters,
           which seems to be much better.  Seven down, *maybe* one to go.
       - I added highlighting of the current item being edited/added.
       - The instruction window when adding or editing has been enlarged.
       - Fiddled with some other colors, mainly in the delete window.
       - Unnhh, it seems to be just about done, mmmkay?  Any other changes
           will be very minoer, mmkay?  Unnnh, that is, unless I change the
           way a program is run, mmmkay?

v0.93  - 4-09-99  2:35 pm
       - You may now press the first character of a name and it will be
           found.  Six down, but this one needs a little tweaking.  It's
           case sensitive right now and if the item is towards the beginning
           of the list, the whole list tends to scroll.

v0.92  - 4-08-99  2:40 pm
       - Ahhhhhh.  Much better.  Deleting now moves the selection to where
           it should be, instead of to the previous game in the list, which,
           if I haven't mentioned already, was very irritating.  Four down,
           three (or four) to go...
       - Deleting an item now brings up a window before the deletion is done
           so you can confirm you desire to delete.  Five down.

v0.91b - 4-07-99  2:34 pm
       - Fixed the dying if the config file is empty

v0.91  - 4-07-99  11:40 am
       - Redrew those windows I was talking about with v0.90 (hey, it's a
           modem standard!)
       - You can now use HOME, END, UP and DOWN to scroll within the text
           while adding or editing a game.
       - The menu won't barf now if there is no configuration file.  It'll
           make one when you add a game and run it, or when you quit.  As
           far as I can tell, it is implemented properly.  Time will tell.
       - Oops.  Have to fix it so if there's a config file, but it's empty,
           the program won't lock up the computer.  Nice, huh?

v0.90  - 4-06-99  11:32 am
       - Well, one function took care of almost all of the rest of the
           problems.  Only because I'm smooth, mind you.
       - Game items can now be edited.
       - Bounds checking is done on the input and output of all names and
           text for games (I hope).
       - Games added and edited allow scrolling within names and the use
           of backspace/delete.
       - All of the above done using that new function mentioned above.
       - Minor things left to do:
           - Fix the placement when an item is deleted.
           - Redraw a couple of windows when editing and when the game list
               is empty.
           - *Possibly* change the way games are run, *IF* I can figure out
               how to do it with execv.  Seems to work fine the way it is
               though.
           - Fine tune the lengths of a game's name, directory name, and
               option list.  Currently, I think the name length is pretty
               good (39, should have been 40.  Off by one :P), but the
               directory length seems a bit lengthy (79) and the option
               list length is way too short (a mere 39).  When these are
               adjusted, window placement will have to be modified just a
               bit. Until then, it is as it stands.
           - Doh!  Forgot this, too (see the next next NEXT item.  No, forget
               it.  I keep remembering stuff, and this is getting way too
               rediculous)...
               I have to put a confirm window for deleting a game, so you
               don't accidently nuke everything.
           - Dang, another one.  Pressing a letter while in the main list
               should eventually bring you to the next game with the letter
               as the first letter.
           - Grrr, remembered this many times, but keep forgetting to put it:
               allow use of HOME and END keys while editing.
           - Now I grr because there was something else I remembered a minute
               ago that I have since forgotten.  I think it had something to
               do with the word "directory"...  Oh well.  If I remember
               again I'll put it here: [ Ahhh, not "directory", but
               "configuration"... If there is no config file, I have to make
               it still work.  Currently, it quits. ].
           All of this stuff is cake compared to everything that's now
           working.  As I'm my own BETA tester, and none of these versions are
           officially labelled BETA, I will report to myself any other 
           problems I find so I can fix them.
       - Almost forgot... set the next character in any of the game fields
           to NULL as it's being read in from the cfg file.  I think this
           was only a problem when the item took up all of it's allotted
           space, or was longer than what I wanted it to be.  Was getting
           a bunch of gobbledegook with long directory names when the other
           items were full length as well.
       - The last line listed for v0.51 is a lie.

v0.51  - 4-05-99  1:00 pm
       - I don't like the way deleting a game moves you to the previous
           game. Gonna have to fix thet.
       - Changed execution of files.  Instead of using a call from within
           the program to run the files, a batch file system has been set up
           which seems to work wonderfully, and even solves my problem of
           not being able to use the command line arguments properly.
           Thanks to some guy on the internet who suggested this.
       - Cleaned up just a little bit of output.  Screen is cleared to red
           and white when running a program.  Quit message returns to the
           beginning of the line now so the command prompt isn't out in the
           middle of East Japipi.
       - Gets the current directory using "cd" so the configuration file is
           written in the proper directory, and so the menu exits in the
           same directory that it started in (in which it started for you 
           English majors.) I wracked my brain trying to figure out how to
           get the current directory, when all I had to do was use "cd".
           (writing this as I remember more and more stuff for version 0.90)
       - Figured out that an option length of 40 is just too dang small.
           The next version will have plenty more room for options.

v0.50  - 4-02-99  8:15 pm
       - Made pretty instructions on what buttons to use to do stuff

v0.49  - 4-01-99  6:30 pm
       - *FINALLY* got adding and deleting working swell.  Can now add or
           delete a game from anywhere in the menu and it won't break. It
           is a little funky if the item you add won't actually be on the
           screen when the list is sorted, but it works nonetheless.

v0.48  - 3-29-99  7:00 am
       - Submenu was repaired earlier (yesterday sometime)
       - Adding a game is now possible from within the program
       - All that is left to do is allow editing of games, deletion of
           games, *proper* running (currently everything is run with
           "system".  Need to use either exec or spawn) of games, and
           possibly some error checking.  Doh!  OK, so I have to tidy
           some stuff up too, and make it return to the current directory
           before quitting, so cfg files aren't spewed all over the place.

v0.35  - 3-28-99  4:30 am
       - Added submenu when Enter is pushed and game selected
           Currently, RUN and CANCEL work.  ADD NEW and EDIT nonfunctional
           F***ING WH**EBAG ERASED ALL THE F***ING WORK I JUST DID.
           F***ING STUPID PIECE OF S**T.

v0.34  - 3-27-99  9:50 pm
       - Writes cfg file when done.  Will have to add option to tell it
           current directory so it doesn't get written all over the place.
           Ummmm....  it does not work right.  Dammit.  Have to tweak it.
           OK, fixed.

v0.33  - 3-24-99  5:45 am
       - Added windows for path name, executable name, and option list
       - Played around with colors.  Icky.

v0.31  - 3-24-99  2:52 am
       - "Enter" now runs the game if all of the stuff is valid... well,
           runs it, but doesn't swap out the program to give the game full
           access to the memory

v0.30  - 3-24-99  2:35 am
       - Game list menu is now fully scrollable with arrow keys and page
           up/down keys
       - Quit messages added

v0.23  - 3-22-99  9:50 pm
       - Changed keys to arrow keys and escape using Borland's TCalc stuff
       - Set screen to black & white bg & text when quitting

V0.22    3-22-99  5:28 am
       - Changed game array to a linked list, and it worked!
       - Also allows sorting of games

v0.??  - 3-20-99
       - Implemented graphic list of games read in from config file
       - "K" key for up, "M" key for down, "Q" key for quit until I can
          figure out how to use arrows and escape

v0.??  - 3-19-99
       - Starting from scratch
       - Figured out file input routines
       - Figured out how to run things from within a program
