April 30, 1994
Midnight Programmers' Quote of the Day 1.9.1
I bear no responsibilities for any unintentional mischief caused by this
humble program on your system. If on some very remote chance that use of
QOTD.EXE scrambles your computer, you are on your own with my humblest
The programs were compiled using Borland C++ version 3.1 and has been
tested on both Lantastic and Novell networks using various 8086, 80286,
80386, 80486 (including DX/2 chips) systems running from 4.77 to 66 mhz.
(It hasn't been tested on a Pentium yet, care to donate one? )
Now that the nasty part is over with, here is the important stuff...
QOTD.EXE .... Program that displays the quote and generates the PTR file.
QOTD.PPE .... Program to display quotes from inside PCBoard 15.1.
QUOTE.PTR ... The binary pointer file for QOTD to read the data file from.
Note: This file is no longer included in the archive but
will be created the first time QOTD.EXE is run.
QUOTE.DAT ... ASCII text sequential file containing quotes.
QUOTE.BAT ... A small batch file to reset Hercules screens that don't.
QOTD.DOC .... This file of rantings and other stuff.
SYSOP.DOC ... Simlar to the QOTD.DOC file but information only appropriate
to PCBoard 15.1 BBS operation.
1.0 - February 17, 1991
Compiled using Borland's Turbo BASIC 2.0(?)
Wrong files sent out in ZIPed file. (Test files? WHAT! Rats!)
1.1 - February 18, 1991
ReZIPed with the proper files and a small fix for word wrapping.
1.2 - March 5, 1991
Compiled using MicroSoft's Quick BASIC 4.5.
Switch to Quick BASIC from Turbo allows use of Binary access of plain
ASCII text file. Elimination of that bloody humongous random access
file, and created the pointer file instead. (Hey, it's smaller, and
it works.) Also added batch file to cure the Hercules problem of
setting the screen to black on black on exit (just a "CLS" fixes it).
1.3 - May 30, 1991
Compiled using Borland's Turbo C 1.5.
QOTD now bears the fruit of previously mentioned "C" classes.
Added command line parameters to change the way QOTD displays the
quote(s). Blame Mike Szwec, he kept suggesting it! And
besides, I didn't have anything important to do during lunch that
day anyhow. (Just goes to show how easily a well designed,
structured program can be modified/maintained).
1.4 - July 27, 1991
Compiled using Borland's Turbo C++ 2.0.
Both the conversion (renamed) and quote display programs were
completely rewritten from scratch (as a programming exercise).
The code is smaller and surprisingly (well, it was to me) about three
times faster than previously released versions. Also the pointer
file size has been halved.
1.5 - August 4, 1991
Compiled using Borland's Turbo C++ 2.0.
Due to a justifiable complaint I've increased the maximum size of
an individual quote to 1300 characters. A small bug with capturing
extended keyboard codes was fixed and I've made some more entries in
the QUOTE.DAT file to bring the number to over 3000 quotes!
1.6 - April 27, 1992
Compiled using Borland's C++ 3.0.
A few more quotes, some bug fixes, and inclusion of the pointer
program in QOTD.EXE to rebuild the QUOTE.PTR file automaticly if
it is missing or changed. Command line parameter "P" added to
force a rebuild of the pointer file. I also changed the command
line parameter "L"oop to "N"umber. I felt it was more intuitive.
1.7 - October 17, 1992
Compiled using Borland C++ 3.1
A few more quotes, and some playing with Turbo Profiler resulted
in a 10% average boost in efficiency. Larger code due to the new
compiler. The delay parameter ("/D") now allows a setting of "0"
that I was using for testing the file integrity. The number of
quotes to display parameter ("/N") allows a setting of "0" as well
for continuous display.
1.8 - February 10, 1993
Compiled using Borland C++ 3.1
Added some more quotes, now over 5300! This is getting silly.
Fixed a small bug when using file sharing on a network.
1.9 - February 15, 1993
Compiled using Borland C++ 3.1
Fixed some weird quote display bugs. Changed the pointer fix
routine to go a fetch a quote after the fix rather than dump you
back to the prompt. Darn that Mike Szwec, he keeps suggesting
stuff for me to add.
1.9.1 April 30, 1994
Compiled using Clark Developement PPLC 2.0
Added a PCBoard 15.1 PPE program to display quotes on a
PCBoard 15.1 BBS. Sorry, this is only for PCBoard BBS systems.
Also, I fixed a bunch of typo's and added a couple more quotes.
I wrote QOTD.EXE for a lady at work who wanted a program just like the
fortune cookie program on the VAX for her PC (take a bow Angeline Voo). A
couple others also overheard and displayed some interest in the large quote
collection that I have been accumulating for a couple of years.
It originally was written for a BBS program that ran on an old Apple //e,
and expanded from there. Once people knew that I was collecting these gems,
everyone wanted to contribute their own little tidbit. Thanks to all the
guys and gals that expanded it to it's current size.
The quotes in the QUOTE.DAT file have been compiled from various books,
movies, other quote files (Waterloo U., QFTD, tag lines etc), archania,
jokes, pithy sayings, humourous observations, Murphyisms and song lyrics.
Generally, it's been something that struck a cord with me. The best kind
are the ones that sneak up on ya and get you to start thinking about them.
I've also made every effort to elminate duplicate quotes as well as trying
to attribute quotes correctly where ever possible, but I'm sure that there
are a lots that missed the drag nets.
Feel free to add or delete entries as you wish for your own use, but if you
are distributing this program, please leave the quote file as is.
Points of interest - How this thing is supposed to work
I know that it's rather plain with no neat graphics and stuff, but this
version was intended to be put up on a Novell LAN for everything from SVGA
colour to crufty old amber Hercules monitors. The idea was to put this in
the AUTOEXEC.BAT or login script and have a gem of wisdom displayed for 20
seconds, or until a key was hit. Yeah, it's not fancy, but it does the job.
In version 1.2 I added a cross reference file (QUOTE.PTR) so that the program
knows where to look for each quote (A.K.A. a look up table for you future
computer scientists). If you add a quote to the QUOTE.DAT file, the pointers
to the individual quote start will be messed up and a new pointer file will
get generated automaticly. Note: There is no QUOTE.PTR in the ZIP file.
I figgure there is no point in distributing a file that gets generated
automaticly the first time the program is run.
As of version 1.3 I added command line parameters to allow you to change the
way QOTD displays quotes. Here is the list of commands:
/A - Displays all files from beginning to end.
(e.g. QOTD /A)
/B(#) - Sets the background colour in the display (0-7).
(e.g. QOTD /B0 will set the background to black)
/D(#) - Changes the display pause delay. A keystroke still aborts.
(e.g. QOTD /D60 sets the delay to 60 seconds)
/F(#) - Sets the foreground colour in the display (0-15).
(e.g. QOTD /F15 sets the letters to white)
/L(#) or /N(#)
- Displays the specified number of quotes.
(e.g. QOTD /N10 will cycle through 10 random quotes)
/P - Force rebuild of QUOTE.PTR pointer file.
(e.g. QOTD /P deletes and creates a new pointer file)
/Q(#) - Displays the specific quote.
(e.g. QOTD /Q100 will display quote #100)
/? - Displays the command line parameter list. Also gets
displayed if one of the parameter commands can't be decoded.
(e.g. QOTD /?)
As for the colours used in the foreground and background parameters, here is
the list of their respective numbers:
0 = Black 4 = Red 8 = Dark Gray 12 = Light Red
1 = Blue 5 = Magenta 9 = Light Blue 13 = Light Magenta
2 = Green 6 = Brown 10 = Light Green 14 = Light Yellow
3 = Cyan 7 = Light Gray 11 = Light Cyan 15 = White
(NOTE: 0-15 foregrounds, 0-7 backgrounds ONLY!)
You can mix and match the command line parameters as you wish, but some
options may cancel others out. Don't be too surprised when things don't
happen as anticipated when you get creative with more than one at a time.
The command line parameters are interpreted from left to right in the order
that they have been entered, hence some commands will over ride others.
As mentioned in the note for v 1.4, I completed a "C" class, and I
figgured that the old QOTD was a pretty good project to practice on. I
discovered some new ways of doing things and thinking about programing
(a Tip'O the hat to Roman Bialach and Allen Taylor.) This exercise has
convinced me to devote most of my programming time exclusively to "C" and
"C++"in the future.
I've also included with this package my original quote file all formatted
so that you too can add files to QOTD. The supplied file is in alphabetical
order and you just type in the quote on a new line and then run QOTD.EXE
to generate the pointer file that tells the program were to look.
Please notice that each line begins with a "`" (left hand single quote),
new paragraphs are delimited by a "|" (pipe character) and that all credits
are prefixed by "'| - " (single quote,pipe,2 spaces,dash,space). This way
everything gets formatted properly when it gets printed out to the screen.
Make sure that the total quote (with credit) is under 1300 characters long.
PC Board 15.1 Installation
Installing this PPE is very simple. Copy ALL the files to a separate
subdirectory. This PPE does not create the QUOTE.PTR file, this must be
done through QOTD.EXE. YOU MUST CREATE THE QUOTE.PTR FILE _BEFORE_ you try
to run QOTD.PPE.
The QOTD.PPE has no command line parameters or switches. The only thing
that it will do is display a single, randomly chosen entry from the
If you get an error try running "QOTD /P" to generate the PTR file.
Once the QUOTE.PTR has be generated, add this this line to your CMD.LST
QOTD 0 C:\QOTD\QOTD.PPE
Type in QOTD at the command prompt to read a random quote.
Well, I got over my laziness and rewrote the programs the way they should
have been done. There are also in this addition over 5300 quotes. I don't
think that you'll be adding too many more quotes to the list (unless you
collect these things like me.) Also the current format allows you neat
freaks to keep everything in alphabetical order (not that it really matters).
Just be sure that you have an editor that can handle a file the size of the
QUOTE.DAT file (it's one huge puppy! Lately I've been using BC++'s editor.)
Possible Future Additions
I have access to toys to compile this in OS/2 (I'm doing some work in OS/2
at work), if you wish. I'm in the process of learning Windows so a future
version will probably include a Windows executable.
Lastly - The Begging!
This baby is LetterWare to noncommercial users (your home machine).
Please drop me line in the mail if you use this program. I'm curious as to
how far this program gets distributed. No remuneration is required, but if
you use it at home and feel the desire compensate me for my time, I'll not
refuse any monetary donations. A token $5.00 - $10.00 contribution to my
entertainment fund ought to cover it (it'll help pay for my "C++"
programming courses, B-grade ScFi video rentals) and will also get you a
peek at the source code if you so desire.
If this program is in use in a commercial setting or on a network please send
in $10.00. If you are making money off it, spread some around to the people
that spent the time and effort to write it, eh? That's what ShareWare is all
If you have a quote that is missing that I might like to add to my
collection, or (horrors of horrors) an improvement, feel free to drop me a
line. I enjoy hearing from other people in this hobby/line of work.
Address: Midnight Programmers
1589 Waterdown Road,
Canada, L7R 3X5
BBS: The GameBoard BBS
City-2-City Network member
InterNet [email protected]
Who are Midnight Programmers?
Mark Collis Alan Brooks
Dan (Derna) Abbott "Evil" Steve McGrahan (A.K.A. Valuna)
Doug (The Optimizer) Carter
Right off the top, we are not a "_Midnight_Autoparts_" dealing in hot CPU's,
nor do we dabble in illegal software tampering, and piracy. We do this for
fun, for the challenge and to learn more about these machines that seem to
take up so much of our free time (yeah, sick puppies ain't we.)
The name has been stuck to a group of friends that have contributed to a
number of programming projects over the last couple of years, with code,
ideas, suggestions, testing, food, books, and moral support. I've usually
been the instigator, but not always. Some of us are professionals in
the field and some of us are hobbyists that have gotten out of control
(just ask Alan, he'll tell you I've been out of control for years).
Why "Midnight Programmers" and not "Tea Time Programmers"? Well, if you've
ever done any programming or system maintenance you'll know what I mean.
It's usually late at night that things go wrong and require fixing, or you
lose track of time while putting in just one more feature and look up to
find that it's 2:30 am (and you have to be in for work at 8:00 am!)
Over the last little while with all the over the phone rescue missions,
I've strongly concidered changing names to "Remote Control Consultants"
, but Midnight Programmers seems to have stuck, and describes this
loose group computer jockeys quite nicely, thank you very much.
Thanks for reading this far....