• Please review our updated Terms and Rules here

Bulletin board and Modem question

Dr_Acula

Experienced Member
Joined
Nov 14, 2008
Messages
225
Location
Adelaide, Australia
I am wondering if some kind soul could please explain how CP/M machines used to connect to bulletin boards?

I'll explain the setup first as it helps frame the question. I've now got a N8VEM CP/M board talking to a PockeTerm terminal board and displaying (in retro Green!) on a VGA monitor. Photo here: http://hackaday.com/2009/03/04/n8vem-computer-with-a-3km-wireless-link/ I now have a truly independent computer that does not need a PC to run. And it boots in 2 secs!

The N8VEM talks to the PockeTerm via a standard 3 wire RS232 connection. But what I also want to do is talk to a radio module at the same time. The radio module happens to run at 1200 baud which I gather is the same speed that BBS' used to run.

Here are a couple of scenarios:

N8VEM/Board/Retro computer has one RS232 connection which normally goes to a dumb terminal. It also goes via a RS232 splitter to a modem/radio module. You type 'DIR' on the keyboard. That goes to the board, which responds with A>. The A> goes both to the display, and also to the modem. Anything the modem collects also goes to the board via an OR gate. This is a pretty simple setup but I don't think it replicates how things used to work?

Scenario 2. The board/N8VEM/retro computer has two serial ports. One goes to the dumb terminal and one goes to the modem. I think this is more historically accurate but I'm not sure how it works.

The user wants to download a file from the BBS. They might run XMODEM or Kermit. The versions I have of those programs only listen to one port and don't care whether the data coming back is from the dumb terminal or the modem. You could manually key in a 132 byte packet on the keyboard if you wanted. Did the vintage computers have different versions of xmodem that only talked to "port 2"?

If so, and I assume this is the case, then it is interesting to note BBS programs that enabled you to 'log in' to CP/M at the remote machine. Was this every used much, or did people interact with the remote machine via an intermediate program like RBBS that listed files and handled transfers? But that still would be complicated, because the users machine would have to be running a program that captured keyboard input and sent it off up the modem, where the program at the other end then sent it back. And if there were two serial ports, did real retro computers have those running at different baud rates, ie 9600 for the dumb terminal and 1200 (or 300) for the modem?

I'm intrigued to find a number of programs on the Walnut Creek archive that run BBS and were in themselves written in CP/M. This opens up a form of networking for CP/M, in that one could upload a file, then another user could download it later. Even if only one user could be connected at any one time, this is still a useful protocol for wired and wireless networking for CP/M.

Help and advice would be most appreciated.
 
Several schemes were used. Take, for instance, BYE, which was a small utility that required the sysop to generate his system with some room left above CBIOS in memory. BYE loaded up there and watched the modem and handled logon and logoff. BYE was about the simplest BBS that I'm aware of.

CP/M jump vectors were then patched and I/O was redirected appropriately. If the user wanted to send a file, he ran XMODEM or DSZ or whatever was provided. XMODEM (or whatever you used) was configured for a specific COM port to which the modem was attached.

RBBS is essentially a big hunk of BASIC that handled file transfers and messaging. More friendly for newbies.
 
Several schemes were used. Take, for instance, BYE, which was a small utility that required the sysop to generate his system with some room left above CBIOS in memory. BYE loaded up there and watched the modem and handled logon and logoff. BYE was about the simplest BBS that I'm aware of.

CP/M jump vectors were then patched and I/O was redirected appropriately. If the user wanted to send a file, he ran XMODEM or DSZ or whatever was provided. XMODEM (or whatever you used) was configured for a specific COM port to which the modem was attached.

I actually recently configured an RBBS host system for my IMSAI. I tried it with an external Hayes 300 modem but I couldn't get it to auto-answer properly (I was using a VG Bitstreamer) so I switched to a PMMI-103 internal board. The properly modified BYE program watched for the ring signal from the modem and answered the phone. BYE then chained to the RBBS program. From the client-side, it was if you were sitting at the CP/M console -- everything you typed appeared on the host console screen and if so configured, you can drop-out to a CP/M prompt. I would think of BYE+RBBS more in the context of a "remote desktop" than a multi-user BBS like Mystic.

When you hang-up, your RBBS session ends and BYE waits for the next caller.

I did a bunch of testing with this setup and my various classic and non-classic machines -- a Windows box, an Apple II+, and a Commodore C64. The PMMI modem is pulse-only for dialing, so I can't use the IMSAI as a dial-up terminal with the test PBX I have (which only supports Touch Tone dialing). Otherwise, the PMMI on the IMSAI worked the first time I used it.

The only comment I'll make with regards to modems is that the auto-negotiation feature of the new modems (even 1200 baud modems) messes up the PMMI (and probably other 300-only baud modems). I found that I could only successfully connect to the 300-baud host if I forced the 1200-baud modem to work at 300-baud (on Windows, use a 300 baud port speed).

I actually have a cheap Windows PC running Mystic with a Digi 8-port serial card, 8 Hayes Smartmodem 1200's and an 8-line PBX. Theoretically this could be part of a VCF display, but it would be back-end hardware only because other than the modem speed, it's not vintage.
 
I've still got a bunch of old BBS software packages.

PCBoard, Sapphire, etc. My favorite was Auntie, which I ran on a NT system multiline. The NT system also periodically dialed up and ran UUPC to get email.

You could probably work up some virtual com ports that would simulate a modem and funnel it through a NIC if you wanted to keep the experience alive.

If I wanted to run RCPM or RBBS or BYE on a CP/M system, I'd be tempted to use a PC as a network-modem bridge and just fake all of the modem signals.

My modem with BYE was a Racal-Vadic 3450 "triple modem" that ran 300/1200 and "Racal" mode (1800?) when talking to other 3450s.

I don't miss the line noise.
 
I've still got a bunch of old BBS software packages.

PCBoard, Sapphire, etc. My favorite was Auntie, which I ran on a NT system multiline. The NT system also periodically dialed up and ran UUPC to get email.

You could probably work up some virtual com ports that would simulate a modem and funnel it through a NIC if you wanted to keep the experience alive.

If I wanted to run RCPM or RBBS or BYE on a CP/M system, I'd be tempted to use a PC as a network-modem bridge and just fake all of the modem signals.

I guess what I had envisioned was having VCF participants configure their machines with modems and connecting them to the PBX to communicate with RBBS on the IMSAI. Downside is it's single-user. Upside is that it's certainly vintage.

That's when I thought about the modem bank on a Windoze box with Mystic. I found a copy of Auntie 5.12 but it says it's for DOS. Did you run it in a DOS box under NT? I have a copy of NT4 floating around and the NT drivers for the Digi board. Is it easy to setup?
 
That's when I thought about the modem bank on a Windoze box with Mystic. I found a copy of Auntie 5.12 but it says it's for DOS. Did you run it in a DOS box under NT? I have a copy of NT4 floating around and the NT drivers for the Digi board. Is it easy to setup?

Roger that. Multiple DOS sessions under NT. I may still have my Auntie notes kicking around. At worst, I still have my hard drive with the Auntie installation on it. I ran a bunch of USR Courier modems from it.

Auntie is pretty easy to set up. The nice part about it is that you can insert your own commands into menus (batch files) very easily.
 
Many thanks for the replies.

Bye looks very interesting, especially the remote cp/m facility. I was thinking it might be some sort of high memory TSR type process that sits in the background listening for modem(s) to ring. I've got sbasic doing chain and shell via batch programs so it is possible to have a series of programs each running the next. The board I am using has 4 serial ports, so with one devoted to the dumb terminal, that leaves three that can connect to various things, including wireless modules and wired link to a PC (and hence the internet).

I see some interesting possibilities here. It would be great to be able to log into a cp/m board via the internet. Then run a program on that board that logs into the next board. If each board had an autoexec.sub on startup that ran a program like Bye, then each board would be ready to be logged into at any time.

I've got several TSR programs already sitting above CBIOS, to handle things such as interface to a LCD display and a keyboard. So adding more is just a matter of making some more room. Back to coding...
 
Roger that. Multiple DOS sessions under NT. I may still have my Auntie notes kicking around. At worst, I still have my hard drive with the Auntie installation on it. I ran a bunch of USR Courier modems from it.

Auntie is pretty easy to set up. The nice part about it is that you can insert your own commands into menus (batch files) very easily.

If you can find your notes, I'd appreciate it. I'd like to try to import the CPMUG and Walnut Creek CDROM file trees into the BBS and see if it's VCF display-worthy.
 
There are quite a few 8 bit BBSs on the Internet these days, with RS-232<>TCP/IP bridges at both ends (usually freeware running on an old PC; a good use for an old laptop with a bad display).

Just for fun I hooked up 3 ports of a multi-user Cromemco and an AIM-65 to the 'Net a while back and accessed them remotely from a PC running ProComm; I used a single TCP/IP port and an old RS-232 terminal server so I could only select one system at a time, but you could run multiple bridges using different ports for real multi-user operation.
 
There are quite a few 8 bit BBSs on the Internet these days, with RS-232<>TCP/IP bridges at both ends (usually freeware running on an old PC; a good use for an old laptop with a bad display).

Just for fun I hooked up 3 ports of a multi-user Cromemco and an AIM-65 to the 'Net a while back and accessed them remotely from a PC running ProComm; I used a single TCP/IP port and an old RS-232 terminal server so I could only select one system at a time, but you could run multiple bridges using different ports for real multi-user operation.

Interestingly, some of the modern PC-BBS programs seem to have that bridge capability but I never really investigated it. I think I'll pull the docs and read-up. Might be the next project...
 
I just found this thread that ran last month http://www.vintage-computer.com/vcforum/showthread.php?p=89726 which linked to this http://home.ica.net/~leifb/bbs/

I guess one way to learn about a BBS is to actually set one up. I've played around with Telnet recently using the SIMH and vb.net and while it seems a bit odd to telnet into another program on the same machine, there is no reason it could not be another machine. An old PC is probably the cheapest TCP/IP<>RS232 bridge.

I'm still a little lost in the RBBS code (MBASIC line numbers can do that) and I can see how it does messages but I'm not sure how it does file transfers. It makes reference to a help file that I don't have and one that I did find has very similar instructions but not quite the same, which included 'F' for file transfers but I'm not exactly sure where in the code that is. Maybe some of the machine code BBS programs would be better.

In a generic sense, I guess what one wants is a BBS that will run on CP/M and talks to a serial port. The old PC can then handle interface to the internet. I have a vague feeling I saw someone had done this a few years back. Probably many people have.

Did FTP and CP/M ever overlap? There are GUI FTP programs but behind the scenes it is all text based. I guess one problem would be file structures and the lack of directories in CP/M. A BBS with file transfers would be a simple FTP anyway.

Addit: I just logged into the bbs bbs.jammingsignal.com using teraterm and it is online and working. It even has that wonderful retro feel that 1200 baud gives you. You gotta wait for your data! The bridge software should make things easier.
 
Last edited:
I just found this thread that ran last month http://www.vintage-computer.com/vcforum/showthread.php?p=89726 which linked to this http://home.ica.net/~leifb/bbs/

I guess one way to learn about a BBS is to actually set one up. I've played around with Telnet recently using the SIMH and vb.net and while it seems a bit odd to telnet into another program on the same machine, there is no reason it could not be another machine. An old PC is probably the cheapest TCP/IP<>RS232 bridge.

I'm still a little lost in the RBBS code (MBASIC line numbers can do that) and I can see how it does messages but I'm not sure how it does file transfers. It makes reference to a help file that I don't have and one that I did find has very similar instructions but not quite the same, which included 'F' for file transfers but I'm not exactly sure where in the code that is. Maybe some of the machine code BBS programs would be better.

In a generic sense, I guess what one wants is a BBS that will run on CP/M and talks to a serial port. The old PC can then handle interface to the internet. I have a vague feeling I saw someone had done this a few years back. Probably many people have.

Did FTP and CP/M ever overlap? There are GUI FTP programs but behind the scenes it is all text based. I guess one problem would be file structures and the lack of directories in CP/M. A BBS with file transfers would be a simple FTP anyway.

Addit: I just logged into the bbs bbs.jammingsignal.com using teraterm and it is online and working. It even has that wonderful retro feel that 1200 baud gives you. You gotta wait for your data! The bridge software should make things easier.
-------------
Well, don't forget that although you're connecting through a Telnet connection, most of these classic BBSs are actually running on the *real* vintage hardware, a C64 in the case of Leif's system. To see what one of these systems actually looks like, check out:
http://cottonwood.servebbs.com/
Also a BBS running on a C64, and one of the very few still accessible the old-fashioned way over the POTS (last time I checked), as well as via Telnet; those floppy drives are actually used by the BBS.

So no, at your end the bridge software isn't going to make things any easier, just allow you to use your CP/M system and terminal software instead of Teraterm on a PC.

Really no different than it was back then; just think of the old laptop (or whatever you're using as a bridge) as a Hayes-compatible modem connecting to another modem at the far end. In fact you can buy RS-232<>TCP/IP "modems," but they tend to be a little pricey.

To download a file you generally told the far end to send a file with kermit, xmodem, etc. and then switched your local terminal program into the appropriate receive mode, although the actual commands, detail and amount of automation varied among BBSs and terminal software.
 
Thanks for the link. Of course, this all needs to run on pukka hardware if possible. Funny how the links work. I go to the cottonwood site and half way down it mentions Jeff Ledger. I'm assuming that is the same Jeff who posts over on the Propeller forum and indeed, I sent him some CP/M hardware to test a few months back. The propeller group are working on getting a whole retro computer into a single 40 pin chip. They might just do it too - the Z80 emulation is coming together, the vga driver works, the keyboard works and there is even code that encodes and decodes sine waves to create a software modem and send data down the phone line or via wireless.

I reckon a BBS on real hardware sounds a great little project. Ideally real hardware via wireless. Back to soldering...
 
Last edited:
Just a brief update - Henk Verbeek has gone and connected a N8VEM to the internet using the bridge software. It actually works! He is on the other side of the world to me, but I was able to log in, run the BBS software, and even jump out into CP/M and then recompile the BBS software with some changes. The N8VEM forum is discussing this at the moment. File transfers ought to be possible by logging out to CP/M and running xmodem at both ends. It is early days yet, but this could well end up one way of networking vintage computers. We might see if we can get a board up more permanently running a BBS.

A question for the experts - were file transfers done from within the BBS software, or did one log out to CP/M, run xmodem or kermit etc, and then re-run the BBS software afterwards?
 
A question for the experts - were file transfers done from within the BBS software, or did one log out to CP/M, run xmodem or kermit etc, and then re-run the BBS software afterwards?

Depends on the setup. BYE is pretty much nothing more than a CP/M redirector and a lot of BBS ran BYE "barefoot", so you're pretty much always at a CP/M prompt.

If you ran RBBS, you ran it under control of BYE.
 
Ah, BYE sounds just the ticket. Might need to get the source because it will need to know how to access the serial port.

I replicated Henk's setup (I think he is disconnected again now) but I'm not able to log in from the outside quite yet. Works from within a LAN though. I think all firewalls etc need to be off (which raises some other issues!).

I'm trying to understand the history here. Back in the olden days I think you would connect a modem to the serial port, dial up a BBS using a telephone, connect the modem, run BYE(?), then start typing and the BBS would send things back.

Even though Telnet was around before CP/M, I suspect only universities and big institutions would log in without using a telephone.

So now, we are using bridge software to fake a telephone line connection and also to fake a modem. So if you are sitting in front of a 'pure' CP/M cmoputer, and not using a PC in any way (except as a bridge from serial to the internet), and you promise not to touch that PC, then how would this work? From within CP/M, you need some way to 'dial' somebody. This would have been on a telephone, but there is no phone. So I think some other sort of software needs to be written/found that does the dialing. Fortunately, the number to dial is a 12 digit IP address, which isn't much more that a phone number, and maybe shorter than an international phone number (no-one dialed a BBS overseas? Please tell me no!)

So something like BYE needs a menu of numbers (IP addresses) that the user can look at, edit, call etc. Then it needs to send this to the bridge software to tell the bridge software which IP address to Telnet to.

Maybe, if that worked, one could look at a hardware bridge solution (which ought to be possible as Henk is using one on the MyCPU machine, and those chips are only $7 at Futurlec).

But first, a PC bridge solution. One thing that Leif's program can do is have many copies running, as many as there are serial ports on the PC. So if one had a large collection of vintage machines and wanted them all online, that could be possible with a single PC with serial expansion cards.

I wonder, would it be possible to build some sort of CP/M network?
 
Last edited:
Ah, BYE sounds just the ticket. Might need to get the source because it will need to know how to access the serial port.

I'm trying to understand the history here. Back in the olden days I think you would connect a modem to the serial port, dial up a BBS using a telephone, connect the modem, run BYE(?), then start typing and the BBS would send things back.

Well, I didn't use BYE when it was originally available, but the source is in the CP/M User's Group archive. I probably have a cached copy on altair32.com. In the index, look for BYE339. There are versions up to 5.x or 7 (I forget), but 3.39 works for me. Later versions support more diverse types of modems. I will say I was never able to get the HAYES insert to work for me, but I think that was because of the serial card and not the insert specifically.

BYE is two or three source modules -- one core program, an "inserts" (or overlays) for the modem and console. It's a cut-and-paste job, then compile the entire thing.

Each distribution of BYE comes with a list of inserts -- one for each of the then-common modem and console card manufacturers/models. That's how you configure BYE for your system -- pick the insert and configure the ports to the right values. BYE can be configured to chain to a BBS program or drop to CP/M. A console redirector is a good description -- Windows Remote Desktop but 26 years earlier.

BYE is a host program -- it watches the modem status lines and when it senses a ring, it directs the modem to connect, waits for a carrier and if valid, it chains to the BBS program (if so configured). My system uses a PMMI-103 which is an S-100 card. I guess it could be used with an acoustic coupler and regular phone, but the SYSOP would have to be sitting there to connect.
 
I'll check out the source - it might be on the Walnut Creek CD somewhere too.

Meantime, I'm a bit stuck logging into my own machine from outside. I don't know how to test that short of getting in a car and going to another location and using someone elses computer. Which I have done, but I can't connect. Ping fails too. I'm pretty sure all the firewalls are turned off. I wonder, is it possible to simulate someone logging into your machine? The internet works. Ping out from the machine to somewhere works and gives a reply. But how do you simulate someone pinging you? I'm wondering if this might be a portforward issue in the router - maybe I'll look into explicitly opening port 23.

Also, I hope this won't involve a solution that has firewalls turned off. If that is necessary, then maybe a hardware bridge is a better answer.
 
Last edited:
Ah, BYE sounds just the ticket. Might need to get the source because it will need to know how to access the serial port.

I replicated Henk's setup (I think he is disconnected again now) but I'm not able to log in from the outside quite yet. Works from within a LAN though. I think all firewalls etc need to be off (which raises some other issues!).

I'm trying to understand the history here. Back in the olden days I think you would connect a modem to the serial port, dial up a BBS using a telephone, connect the modem, run BYE(?), then start typing and the BBS would send things back.

Even though Telnet was around before CP/M, I suspect only universities and big institutions would log in without using a telephone.

So now, we are using bridge software to fake a telephone line connection and also to fake a modem. So if you are sitting in front of a 'pure' CP/M cmoputer, and not using a PC in any way (except as a bridge from serial to the internet), and you promise not to touch that PC, then how would this work? From within CP/M, you need some way to 'dial' somebody. This would have been on a telephone, but there is no phone. So I think some other sort of software needs to be written/found that does the dialing. Fortunately, the number to dial is a 12 digit IP address, which isn't much more that a phone number, and maybe shorter than an international phone number (no-one dialed a BBS overseas? Please tell me no!)

So something like BYE needs a menu of numbers (IP addresses) that the user can look at, edit, call etc. Then it needs to send this to the bridge software to tell the bridge software which IP address to Telnet to.

Maybe, if that worked, one could look at a hardware bridge solution (which ought to be possible as Henk is using one on the MyCPU machine, and those chips are only $7 at Futurlec).

But first, a PC bridge solution. One thing that Leif's program can do is have many copies running, as many as there are serial ports on the PC. So if one had a large collection of vintage machines and wanted them all online, that could be possible with a single PC with serial expansion cards.

I wonder, would it be possible to build some sort of CP/M network?
-----
I'm not sure I understand all the questions, but I think BYE is intended to be used at the BBS end to handle the connection and present CP/M to the caller, similar to DOS's CTTY. At the calling end you would normally use a terminal program (MEX was a fairly good example) and it would handle the dialing and file transfer. I don't know about other bridge programs but I think they're probably similar to Leif's and more or less emulate the Hayes protocol, so to "dial" the remote system you would type ATDT but instead of a phone number you would use the server name or IP address (see section 5.5 of the BBS Server manual).

Other than the "phone number," both the caller and the BBS would use and see the same commands and result codes etc. from the bridge s/w that they would if they were connected to a "real" modem, and be unaware that they were in fact connected over the net through modem emulators.
 
Back
Top