Home - >
Arizona BBS Software ->
WBBS
WBBS
I wrote WBBS while living in my first apartment, which I rented
shortly after I moved to Phoenix around 1986. I had a Sanyo 550, a
mostly-sorta-DOS-compatible PC with two 1.2M floppy drives (no hard
drive), and Turbo Pascal 2.0. What else did I need? I was doing data
entry at Bank of America the time (I had no credentials that would
prove I was a programmer, and knew nobody who could vouch for me);
after I got home I would hack on the BBS until it was way too late and
then go to bed.
The coolest thing that came out of WBBS was IBMCOM, the communication
routines that I released into the public domain (they're now under the
LGPL license). I think that several BBS's used IBMCOM, including QBBS
and SUBBS. Writing interrupt drivers is pretty fun stuff, and I like
to think that my interrupt drivers are pretty clean.
I spent a whole lot of time on WBBS making it responsive. Because
BBS's were run off of floppies in that day, it was a common practice
to make a big transmit buffer so that the modem always had something
to send even if you were busy reading more stuff from the floppy. The
problem, of course, was that this meant that a control-C (to stop the
output) or a control-S (to pause it) would take a long time to
actually happen, because the interrupt driver still had all this
buffered output to send. That bugged me.
The cheap hack would just have the keyboard polling routines talk to
the interrupt driver, but there was some output I didn't want paused
or interrupted -- the prompt, for example, should always show up. I
was very concerned that the UI always appear to be cohesive and
uniform, so I hated stuff like half-printed prompts. I remember
spending lots of time learning how the UI could control the interrupt
driver to the degree that control-S and control-C could happen right
away instead of seconds from now, but only when it was a "good idea"
from a UI point of view.
I hope someone noticed the effort and thought it was a nice feature.
I also tried hard to avoid lots of menus. Most everything in WBBS
worked from the main menu. I hated having to go through lots of
different menus to do something in other BBS's of the day.
I think that message reading in WBBS was pretty easy, once you got
used to it. At least for a programmer it was easy, and that's fine,
because I mostly wanted my BBS to be a good place for programmers to
exchange code and ideas. For a few years I ran Pascalaholics
Anonymous, which had some good Pascal source in the file area.
I also tried hard to make it fast. This was challenging, considering
that it was all floppy based. I remember the password file giving me
grief, because the BBS would have to read every record from the
password file to check it against the entered password. And storing
the password file in memory would take too much RAM. The idea I came
up with was to compute CRC's on the passwords and store those in
memory -- I already had a CRC routing to use for ZModem transfers, and
a 16-bit CRC takes hardly any memory. When someone entered their
name, I'd compute the CRC of it, compare it to the CRC list in memory,
and only read from disk those records that had the same CRC. That
reduced the number of disk reads for someone to log on to just 1 or 2.
By the way, I've lost the source. If anyone has it, pretty please
send it. I'll release it under the GPL (like I would have originally,
if only I had known that there was such a thing).
-Wayne Conrad
If anyone has the source code to WBBS, please e-mail:
Mark Firestone.
Download WBBS
Content of this site is ©
Mark Firestone. All rights reserved.