The Birth Of The BBS by Ward Christensen and Randy Suess - 1989
mirror of original post from www.chinet.com/html/cbbs.html
I met Randy prolly late '75 at Cache - I went to most meetings starting with the 2nd which was Sept '75. He and I worked with Tarbell cassette exchanges for a while - built-in assembler, editor, etc.
Saved stuff to cassette by a speaker and microphone on a 300 baud acoustic coupler.
Met Rob't Swartz - now of Mark Williams company fame - he had CP/M in '76. I bought a license in Jan '77 and took my diskette to his house. He showed me the CP/M editor and assembler and I wrote a program to "beep" the contents of my floppy to cassette via a modem. (the modem wouldn't generate the carrier without hearing another, and Bob happened to have a cassette of modem "stuff" around, so we played it into the modem to get it to generate the tone). Used 128 byte blocks and a checksum - the bare essentials for XMODEM though I didn't think of it as a protocol at the time.
Sometime around there Randy also got CP/M, but HE got the "real thing" - IBM format 8" diskettes.
I needed a way to swap stuff with Randy and others - so on late summer '77 wrote MODEM.ASM and tossed it into the CP/M users group.
That program became the singly most modified program in computing history due to the many hardware environments in which it had to operate (no standards - no "IBM" to say where serial ports should be addressed, etc).
Dave Jaffe wrote a routine "BYE" to allow remote users to call in to your CP/M system and operate it. I put up a 70K/diskette Northstar system with BYE and my modem program. Keith Peterson would call from Michigan and fill the diskette in one night or so. I got tired of that and took it down. Turns out that was - as others say - the first "remote CP/M system" since apparently Dave never put up a system for any length of time.
Keith thought there should be an easier way to run MODEM than having to remember to use a "Q" option (Quiet - i.e. don't chatter about block numbers to the console) so he stripped MODEM down and called it XMODEM. Since that was a more "recognizable" name, that stuck as the protocol name.
Others hacked MODEM/XMODEM to add CRC, multi-file transfer, etc. Chuck Forsberg wrote it in C, and for Unix -became RB and SB, YAM, etc.
Chuck's 1K protocol as implemented in rb/sb needed a name, so I suggested he call it "Ymodem" which he did. He later wrote Zmodem, a protocol to send continuous blocks with asynch ACKs to allow max transfer throughput.
There was a group called PCNET mostly out of California who were doing a lot of talk on ARPANET about building a network of microcomputers. They were great at planning - something I've always been terrible at - but they weren't putting any HARDWARE/SOFTWARE together. I was frustrated by the lack of DOERS and lost interest.
January 16, 1978 was a very snowy day. Couldn't get dug out, so called Randy. I had the CACHE message recorder phone line in my house, and Hayes had "invented" the hobbyist modem.
I called Randy and talked about putting up my Vector machine (a 2nd S-100 box I'd bought to take around when asked to give talks on microcomputers) on the CACHE line as a way for people to call in with newsletter articles.
Randy said "no" - "you're in the burbs, I'm in the city - we'll put it in my house - and forget the club, a committee project will never be done - just the two of us - you do the software I'll do the hardware. When will the software be ready?" heh heh.
Without Randy's drive and ambition, it would never have seen the light of day.
I prototyped a bit of a dialog in Basic, patterned after (1) the cork board bulletin board at CACHE meetings, and (2) the kind of BB you see at the Jewel - you know, garage for rent, dog grooming, etc.
Began writing the real bulletin board program (Called CE.C by Randy - egotistically, the "Computer Elite's project C - Communications"). Randy put together the hardware.
Very early in Feb, started testing. No one believed it could be written in 2 weeks of spare time so we called it "one month" and to this day declare Feb 16 as the birthday.
The PCNET people became very interested in CBBS - and they wanted a copy so they could start talking about PCNET by using CBBS (heh heh). Conversation with Dave Caulkins went like this: "I guess I'll charge $25 for CBBS - to keep people from bugging me (if it were free), yet making it cheap enough for anyone to buy". "No, that's crazy - charge at least $50". OK, so $50 it was. I was concerned about "conflict of interest", so let Randy get all the money (what, 200 sales or so, Randy?) He had after all put up all the money - all I'd put up was time. (Uh, I seem to recall from the Nov '78 BYTE article that I did buy a bit of the hardware also).
That's about it. XMODEM was born of the necessity of transferring files mostly between Randy and myself, at some means faster than mailing cassettes (if we'd lived less than the 30 miles apart we did, XMODEM might not have been born). CBBS was born of the conditions "all the pieces are there, it is snowing like @#$%, lets hack".
Hope you don't mind this long monologue. (I thought it was monolog, but my Word Finder Plus screen checker said monologue).
Unscrew Oreo Cookies because - well if you don't know then you haven't done it.
The original CBBS consisted of a S-100 motherboard picked up at some fleamarket. This was a "kit" of course, so I had to solder all the connectors. (lotsa soldering done in those days, such as 8 k memory boards filled with 1kX1 chips)
It was mounted on a BUD chassis with a single density 8 inch floppy drive. On the motherboard was some 8080 cpu (upgraded to a Z80) a Hayes 300 baud modem card, a 3P+S board with the parallel port used for control signals, a Processor Technology VDM video display card, and an 8k memory board. There was also a card with 8 1702 EEPROMS that held the CP/M BIOS, video display drivers, and debug code, all written by Ward. I had a EPROM burner, and Ward made sure all the BIOS variables and experimentor stuff ended up in the last 1702. Musta re-programmed that sucker 10 times a week for a few months.
The floppy drives of that time had 117vAC running the spindle motor, and the drive would wear out quickly. So I built a circuit on a prototype board that would turn on the system power when a ring signal came in from the modem card and do a reset of the computer. By the time the drive spun up, the software had answered the phone and booted CPM and CBBS from the floppy. (simple power fail system!) The circuit board also had some 555 timers, so when the caller went away, the drive motors would continue to spin for about 10 seconds to flush out any data, then shut the system down. I had an old Heath chart recorder I hooked across the floppy drive motor and set up the chart speed for 2 days per sheet. Was able to determine the calling patterns from the chart.
From the 173k single density single sided floppy, we went to a pair of them, then to double density double sided drives. Bout a year later, moved CBBS to a NorthStar Horizon cabinet with a 10 meg seagate hd. Both those systems are still sitting around someplace. It is now running on a PC clone motherbard still running CP/M with the original 8080 assembly code! The clone board has a V20 chip, which fully supports the 8080 op codes. Ward wrote a wrapper around CP/M-CBBS, and CBBS has been running that way for over 15 years.