If you roamed the Earth in the time when every household had a personal computer but only a few had ever heard of something called the Internet, then you probably remember using a modem to dial into a Bulletin Board System or BBS.
At that time, unless you were among the lucky few with access to the early Internet through a University or employer, then about the only way to connect to other people using the computer was to dial a BBS. On a BBS, you could exchange messages posted to public bulletin boards of various topics, send electronic mail to other users (sometimes even relayed to other BBS systems in another city), upload and download files, or even play simple online games. A BBS was an exchange of messages and data in a local community, and an early precursor to the Internet fulfilling that purpose on a global level.
There is still today a small but enthusiastic community of BBS sysops and users. Most are accessible now via the Internet, but a proud few are still available to reach via phone line and a modem if you seek that hit of ultimate nostalgia.
I recently wanted to see what it was like to host a BBS myself. BBS software originally ran on early 8-bit Commodore, Apple, and Atari computers before it later transitioned to more modern 16-bit IBM/PC or Amiga systems near the peak of the BBS age in the early 90s. Even the early 8-bit BBS software was extremely sophisticated for its time, and the more popular BBS software has evolved as BBS hobbyists have continued to tinker with it over the past few decades.
For the purposes of learning about BBS software, I didn’t want something with a steep learning curve or a lot of features. Instead, I wanted something that represented the common features of a BBS, could be run on a Commodore 64, and was as simple as possible. After a bit of searching, I eventually found the perfect fit!
G.S.T. BBS is a real gem! It was almost lost to time, but thankfully discovered and preserved online by Commodore enthusiasts. G.S.T. BBS has all of the basic features: bulletin boards, e-mail, file uploads/downloads, and real-time chat between the sysop and the caller. It also runs on a Commodore 64 and a single floppy drive!
I had G.S.T. BBS running in no time at all on my Commodore 64 using an original 1541 floppy disk drive.
The final (known) version of G.S.T. BBS is v6.0 released in 1987 by brothers Guy and Serge Turgeon, according to the documentation on the floppy:
This BBS program was written and conceived by Guy and Serge Turgeon of Sudbury Ontario Canada. To reach the original GST BBS in the making call (705)/566-7521 at 300/1200 baud 24 hours a day.
After running the BBS for a couple of days, I had a question about modifying the program source code to modify the default new user access level. As the program is compiled to machine code, making a modification is a bit more tricky than if it was BASIC. I starting to wonder if the authors might still have the source code squirreled away somewhere.
So, I located Guy Turgeon via the Internet and I sent him an email complimenting him on this excellent work on this BBS and asking my question about the source code. I got lucky locating the correct person, and I was very happy when he replied. I think he was just as surprised to remember this software and find it still in existence and being used!
Hi, Guy! – if you’re reading this. π
Oh! WOW! Thank you for reaching out! Yes, I am the original author. I would have been in high-school and around 16 years old at the time. The assembly code was really only for the RS-232 I/O, the rest was in BASIC - but based on your ask, I must have run it through a compiler to speed it up and get rid of the interpreter at run-time. Unfortunately, I no longer have a copy of the software. I would love to get it and run it in an emulator of some sort if you could share.
Running G.S.T. BBS on the VICE Emulator
I am providing instructions next for running G.S.T. BBS on an emulator, as I realize that not everyone has or wants to run software on original hardware. What follows is a guide on how to install and run G.S.T. BBS using VICE, the Versatile Commodore Emulator. These instructions will get you up and running. This assumes that you have already downloaded the G.S.T. BBS D64 disk image and also have access to a Linux (or other) machine on your network that has ‘tcpser‘ installed.
UPDATE (Feb 3, 2023): In a recent comment to this post, a reader pointed out that this requires VICE 3.6 or greater. Older versions of VICE have an issue working correctly with tcpser and the BBS software!
With VICE up and running, first create and attach an empty disk image on device 8. This is where the BBS data files will be stored.
Next, attach the gst-bbs-v6.0.d64 disk image to device 9. On real hardware you can do this with one drive and two floppy disks, but in VICE it is easier to just load the program from device 9.
Now that you have the BBS program disk attached on device 9 and and empty data disk on device 8, you should be able to load a directory listing from both of these devices to verify that the disks are present and ready.
Before running G.S.T. BBS for the very first time, you need to load and run the GST BBS EDIT program. This will create all of the necessary configuration and data files on the data disk that are required to run the BBS.
First select the [+] Create files option, and this will create and save the initial set of data files to the data disk.
Next select the [-] BBS setup option, and you will be able to configure the BBS. You will almost certainly want to set the modem type to Hayes compatible [lo]. This is the standard for any modern Hayes modem where the Data Carrier Detect (DCD) status will be set to HIGH when the modem is online, including emulated modems like ‘tcpser’ or the Zimodem firmware for the ESP32/ESP8266 chipsets.
You will also want to change the sysop password now.
You can optionally set up things like Bulletin Boards or Upload/Download levels here.
Now that you have created the data files, you can do a soft reset in VICE to exit the GST BBS EDIT program with the drives still attached.
Before running the BBS itself, we need to configure the RS-232 serial device in VICE. To do that, go into VICE Settings, and select RS232 from the Peripheral Devices section.
Check the box to Enable Userport RS232 emulation.
Then set one of the four RS232 devices to the IP address and port 25232 of a Linux (or other) machine on your network where you can run tcpser. In my case, this is 192.168.1.111:25232 (shown below). Set the Baud for that device to 300, and make sure to check the IP232 option.
Finally, make sure the Userport RS232 emulation device above is set to the Serial device you just configured and that the Baud rate matches. In the example below, you can see that the Device immediately beneath the Enable Userport RS232 emulation option is set to Serial 1 at 300 Baud (shown below).
Make sure Save Settings On Exit is checked, and then close the Settings dialog.
Now, go to the terminal of the Linux machine with the IP address that you just specified, and run the following tcpser command:
tcpser -v 25232 -p 6400 -tsS -i 'K0' -l 7 -s 300 -N β/tmp/noanswer.txtβ -B β/tmp/busy.txtβ
I’m not going to explain tcpser in depth here, but in short this is telling tcpser the following:
- The TCP port for VICE is 25232
- The listen port is 6400
- The modem initialization string is ATK0, which I believe disables flow control in tcpser.
- Log at level 7 (DEBUG)
- Trace both modem input (s) and modem output (S)
- Run at 300 baud
- Send the specified No Answer and Busy files in those cases
Note: If you want to run GST BBS on a real C64 rather than VICE, replace the “-v 25232” option with “-d /dev/ttyUSB0” specifying the serial port on the Linux machine that is connected by serial cable to the RS-232 device on the C64.
Also if you are using a real modem or serial terminal, be aware that GST BBS sends an <ENQ> control character at some of the user prompts. If your callers are using a terminal program such as Minicom, they will want to check their Terminal settings (Ctrl-A + T in Minicom) and make sure they are not sending a text string when receiving an ENQ. By default, Minicom will send “Minicom X” for an ENQ and this will make it impossible to use the BBS software. Remove this string in the terminal settings so that it just sends an empty string (no data) when receiving ENQ.
Finally, you are ready to load and run the ” GST BBS MAIN” program! Press enter to have it read the data files from device 8.
When the BBS program loads, you should see data recieved in the tcpser logging. If so, then you know that VICE is correctly configured to send RS232 serial data to tcpser on the Linux machine.
This is the moment of truth! Telnet to port 6400 on the Linux machine, and you should connect to the BBS!!
If the BBS software answers but hangs up on you immediately afterward, make sure that the modem type is set to Hayes compatible [lo] in the BBS Setup.
You should now be able to connect and create a new handle to log on and interact with your BBS!
Good luck and happy BBSing my friends!!
Hello. How do you get a copy of this BBS software? The source you mentioned is now a bad link. I’m exploring setting up a BBS.
Holy smokes, so it is! So, you’re saying that I have the last known copy of G.S.T. BBS in existence! I updated the link in the post to download from my web site.
I also have a copy on GitHub here: https://github.com/awhitney42/commodore-cloud
For the life of me, I cannot get this BBS software or others (Image, Color 64) to answer calls coming in through TCPSER. Weird thing is, per your notes above, I do have valid comms between vice and TCPSER as they are showing up on the TCPER side. In this scenario with GST, I can see information coming into GST by the “IN: ” status at top of screen, but the bbs never answers.
Mike, did you run the “GST BBS EDIT” program first, set your modem type to “Hayes compatible (lo)”, and save that setting? It will also be essential to set your baud rate to 300 in Vice, tcpser, and in your terminal program that is the client.
Adam thank you so much for this write up. I ran into a few issues running through this that I thought might help others.
First like you pointed out setting tcpser and VICE rs232 settings MUST be 300 BAUD! I have tried about everything I so far can think of to get 1200 baud to work, with little to no success. The only way i could even get something to connect was setting tcpser for 1200 baud, and in VICE setting the Userport settings section for 300 baud and the rs232 section for 1200. I was able to make a connection and GST would show it was connected at 1200 baud. But everything you get is garbage text which is exactly what you would get with a baud mismatch. Im still convinced there is a way to get 1200 baud to work but have not found it so far.
Second once i was able to connect to the bbs it was still not working correctly. It would not do the stops and wait for input, etc. So i would get the “HIT RETURN” and “:” and then it would imidiately give the “G.S.T BBS ……….” banner you get when your signing off and it GST would send the hangup/disconnect sequence and i would be disconnected. After a few hours of setting changes, resetup of software, trying multiple telnet clients, setting up a virtual serial interface bridge to the telnet interface to tcpser and connecting with minicom, etc. I saw that it looked like you were using a different version of VICE, and looking at your github saw you had VICE 3.6. I was using the version via apt repo of Ubuntu 20.04 which is VICE 3.4. After compiling and installing VICE 3.6 and no other changes it just worked. I was able to connect, create a User, and look around the BBS. It was pretty awesome.
Im still playing around with things and trying different options to see what i can tweak and bound and determined to get 1200 baud working, but also playing around with some other BBS softwares like Color 64 and some Commodore 128 bbs software (starting with Supra 128). I maybe doing a writeup on my adventures with this and if I do Ill reply to this with a Link if people are interested.
Jon, thank you for the extra information, especially regarding the VICE version! I will update the post regarding this tip!
As for getting it work at 1200 baud, let me know if you are successful. I tried getting this to work with G.S.T. BBS running on vintage Commodore 64 hardware, both with a User Port Zimodem and a User Port RS-232 adapter connected to an old US Robotics modem and phone line. With both, I could only ever get 300 baud working. Even though G.S.T BBS *claims* to work at 1200 baud, I have my doubts.
Adam so far I have been able to test with my original equipment (breadbin c64 and c64c) using the Commodore 1670 1200 baud modem (the later model with the dip switches) with GST. I can confirm that at least with this setup I am able to connect at 1200 baud. I do see some weirdness where garbage is being transmitted and received (random garbage characters or breaks and such when nothing is being typed on the client side or should be being sent from the “server” side) but im pretty sure that its either an issue with the 1670 (just being old, needing to be cleaned, bad connections, all of the above) or because im using an ATA (linksys pap2 , Ive tried 2 of these with the same results so starting to think its not this) and getting extra noise or something on the connection.
I currently dont have a rs232 adapter for my c64’s so havent been able to try any of my serial modems I have in my collection. Im hopeing to either make one or buy one soon.
Currently I have i have been testing with for physical hardware looks like.
C64 with 1670 modem and Pi1541 floppy emulator
GST configured for the 1670 as the modem
1670 phone line connect to 1st port on ATA
Fujitsu Pentium 133 laptop running win98 and hyperterm via USR 56k pcmcia modem
usr modem connected via 2nd port on ATA
ATA configured as standalone allowing calls between port1 and port2
I have tried multiple configurations with the tcpser and Vice but anything other than 300 baud with Vice running with debug output you get a message about comm speed mismatch. It seems almost like GST initializes the modem with 300 baud while waiting for an inbound connection, then when a call comes in will try to “upgrade” the connection during training. Not sure that even make sense.
So you got Telnet + Simple BBS to run with a real Modem using Win98 with 300 baud?
If yes please post your exact telnet string. Thanks.
Also please have a look at my other reply on this page π
Hi Adam!
Tried to reach you using mail. Perhaps it’s stuck in your spam folder? π
Thank you so much for this Page about getting the Simple BBS to run in an emulator.
I use Windows 10 and tcpser + Winvice 3.7.
After a few days of struggle I got it to run – sort of.
When I got a connect to the simple BBS I was first stuck in the “in” window (upper left side) of the BBS in the Emu. All my commands/inputs are stuck there – not
in the main window. Like I am locked out. Also nothing is echoed on the CMD Terminal (standard terminal included in Win 10) I used to telnet to port 6400.
But I found a workaround in the Simple BBS:
Activate Chat Mode F1
Local Mode F2
Chat Mode F1
Type something in CMD/terminal Window
Switch Back to Local Mode
Ende Chat Mode
It went something like this – and suddenly I can type/see my stuff also in the CMD Window and I can do a normal BBS Session.
Is this a bug in the Emu/Simple BBS? Or perhaps my fault?
BTW: I am trying to get the same way using telnet to run the Snobsoft BBS –
a C64 BBS from the 1980s… But also on a real C64 + real modem…
https://www.youtube.com/watch?v=_c0X2Hysv-o
But first my buddy (he is into assembly) has to rewrite the assembly code
getting the Snobsoft BBS Hayes compatible.
BTW2: Did you get the another C64 BBS to run the same way as the Simple BBS?
I tried the ARB BBS – I got it one time to run (as I mailed you in a second mail) but
never again. The ARB just ignore the ring from telnet.
I tried a terminal prg on the C64 to check if it gets the ring from telnet. Yes ist does.
Perhaps it’s because the BBS needs to be configured to Hayes Modem (low) as the
Simple BBS? There ist no option for that in the ARB BBS.
BTW2: Have also a look at this BBS project of mine.
https://quipzz.bplaced.net/5n1a.html
It’s a C64 BBS right in the Web Browser using the VC64Web Emulator.
https://www.youtube.com/watch?v=NB2PJThZdF0
Best Regards
Lutz
I knew Guy and Serge personally. In fact most every kid in the city of Sudbury where I lived, ran GST BBS. It went through many versions but most are lost to time. I think the best bet for finding any of the other versions would be in someone’s stack of old floppies in Sudbury. I can remember at least 5 different BBS’s using their software.
I remember Serge one told me, “I’ll eat my underwear” if I could unBlitz the latest version. The Basic was compiled using Blitz, and at some point they were able to compile some large amount of code (using a REU?) that would be almost impossible to decompile.
Another feature was that the software would only allow 5 users to register unless you purchased the software. I’m not sure if this applied to all versions however.
Hi Adam,
Thanks for the guide, but I’m struggling to connect.
HARDWARE: Raspberry Pi 4B, Running Bullseye 64bit. VICE 3.7.1
Telnet Client:
$ telnet 192.168.0.30 6400
Trying 192.168.0.30…
Connected to 192.168.0.30.
Escape character is ‘^]’.
Sorry, the server is not answering
Connection closed by foreign host.
TCPSER:
./tcpser -v 25232 -p 6400 -tsS -i ‘K0’ -l 7 -s 300 -N “/home/amiga/C64/G/gst-bbs-v6.0/noanswer.txt” -B “/home/amiga/C64/G/gst-bbs-v6.0/busy.txt”
2023-09-15 12:08:23:-1917718080:DEBUG_X:Sent #9 ring
2023-09-15 12:08:23:-1917718080:DEBUG_X:Waiting for modem/control line/timer/socket activity
2023-09-15 12:08:23:-1917718080:DEBUG_X:Command Mode=1, Connection status=0
2023-09-15 12:08:23:-1917718080:DEBUG_X:Setting timer for rings
2023-09-15 12:08:27:-1917718080:DEBUG:Sending ‘RING’ to modem
2023-09-15 12:08:27:-1917718080:DEBUG:Sending RING response to modem
2023-09-15 12:08:27:-1917718080::RS->|0000|0d 0a |.. |
2023-09-15 12:08:27:-1917718080:DEBUG_X:Sending text response
2023-09-15 12:08:27:-1917718080::RS->|0000|52 49 4e 47 |RING |
2023-09-15 12:08:27:-1917718080::RS->|0000|0d 0a |.. |
2023-09-15 12:08:27:-1917718080:DEBUG_X:Sent #10 ring
2023-09-15 12:08:27:-1917718080:DEBUG_X:Waiting for modem/control line/timer/socket activity
2023-09-15 12:08:27:-1917718080:DEBUG_X:Command Mode=1, Connection status=0
2023-09-15 12:08:27:-1917718080:DEBUG_X:Setting timer for rings
2023-09-15 12:08:31:-1917718080:ENTER_EXIT:Entering mdm_disconnect function
2023-09-15 12:08:31:-1917718080:INFO:Disconnecting modem
2023-09-15 12:08:31:-1917718080:INFO:Disconnecting
2023-09-15 12:08:31:-1917718080:INFO:Control Lines: DSR:1 DCD:0 CTS:1
2023-09-15 12:08:31:-1917718080:ENTER_EXIT:Entering dce_set_control_lines function
2023-09-15 12:08:31:-1917718080:DEBUG_X:Setting CTS pin high
2023-09-15 12:08:31:-1917718080:DEBUG_X:Setting DCD pin low
2023-09-15 12:08:31:-1917718080:ENTER_EXIT:Exitting dce_set_control_lines function
2023-09-15 12:08:31:-1917718080:ENTER_EXIT:Exitting mdm_disconnect function
2023-09-15 12:08:31:-1917718080:DEBUG_X:Waiting for modem/control line/timer/socket activity
2023-09-15 12:08:31:-1917718080:DEBUG_X:Command Mode=1, Connection status=0
Any ideas?
That is awesome. Do you have any other BBS Software for the Commodore 64? I have looking for ARB v7.63 or higher and also Vortex.
Thanks!
Luigi
My gf bought me a used c64 rig a few birthdays ago.. It was purchased from a ‘Turgeon’ family on Coniston I think.. Would blow my mind to think this would have been the system used to develop that BBS (doubtful, but whimsical just the same)..
Back in 1986/87 or so — I discovered the purpose of a 300baud VICMODEM we had – and came across local (Sudbury) BBS numbers in intros for games and gave it a go.. Guy/Serge’s BBS was the first one I ever connected to.. I thought they were robots π I had no idea I was chatting with a human – I was a dumb 13 y/o kid.. Then I discovered ‘Sanitarium’ BBS and lost my shit with the colours !!
I, too eventually ran GST BBS in Sudbury back in the late 80s – and then onto C*Base, etc.. Good times!
If people are still hunting, there is a copy archived here:
https://commodore.software/index.php/downloads/download/580-miscellaenous-bbs-programs/11761-g-s-t-bbs-v6-0
That was likely their cousin who lived in Coniston. I knew you Doug from the C64 days in Sudbury π
When the modem/1670 connects with 1200 baud, it also switches user-port speed to 1200 baud. So when GST sees “CONNECT 1200”, it switches kernal mode to 1200 baud. Now you have a 1200 baud connection. After carrier loss, GST switches back to 300 baud for command mode. The modem has to do as well.
So the emulated modem has to support 300 baud in command mode and 1200 baud in online mode and answer call with “CONNECT 1200”. That will do the trick.
Tested this with my own modem implementation on my own C64 emulator and it works. Got a 1200 baud connection.