View Full Version : Linux Telnet Server -> RS-232 -> Commodore 64?
microman
07-24-2004, 10:06 PM
Google newsgroups had quite a few hits on the subject of telnet and serial
communications, but I couldn't quite find a topic specific to my sitation.
Here is my objective:
Host a telnet session on my linux box, and transparently route the user to
my C64 BBS (subsequent telnet connection requests are blocked until the
serial port is free again). Data going to the BBS is converted from the
telnet protocol to the rs-232 protocol (according to the parameters
specified by this specialized telnet server). Data coming back from the BBS
is converted from rs-232 protocol to telnet. This is done over an RS-232C
null modem cable.
Programs to handle this exist for Windows (BBSLink), but I'm not aware of
any for Linux. The C64 only speaks RS-232 (RS-232C with my V-1011A
interface).
I figure I'm going to have to write this in C (it'd be a good learning
exercise!), but in my excitement to get the thing working quickly, I thought
I'd ask if the software already exists. I have my own ideas for
customization, but I'd like to see what is out there first.
I don't need to emulate for the client, it's expected the client will be
using a C64 emulation telnet program (such as CBMTerm), or using standard
ASCII.
Any and all help (links, etc) is MUCHO appreciated!
Rob Ristroph
07-24-2004, 10:07 PM
>>>>> "microman" == microman <microman@cox.net> writes:
microman>
microman> Google newsgroups had quite a few hits on the subject of
microman> telnet and serial communications, but I couldn't quite find
microman> a topic specific to my sitation. Here is my objective:
microman>
microman> Host a telnet session on my linux box, and transparently
microman> route the user to my C64 BBS (subsequent telnet connection
microman> requests are blocked until the serial port is free again).
microman> Data going to the BBS is converted from the telnet protocol
microman> to the rs-232 protocol (according to the parameters
microman> specified by this specialized telnet server). Data coming
microman> back from the BBS is converted from rs-232 protocol to
microman> telnet. This is done over an RS-232C null modem cable.
microman>
microman> Programs to handle this exist for Windows (BBSLink), but I'm
microman> not aware of any for Linux. The C64 only speaks RS-232
microman> (RS-232C with my V-1011A interface).
microman>
microman> I figure I'm going to have to write this in C (it'd be a
microman> good learning exercise!), but in my excitement to get the
microman> thing working quickly, I thought I'd ask if the software
microman> already exists. I have my own ideas for customization, but
microman> I'd like to see what is out there first.
microman>
microman> I don't need to emulate for the client, it's expected the
microman> client will be using a C64 emulation telnet program (such as
microman> CBMTerm), or using standard ASCII.
microman>
microman> Any and all help (links, etc) is MUCHO appreciated!
I'm not sure you have to write any code to do this.
First, connect the linux and C64 machines with a serial cable, and
make sure that on the linux machine you can start up the program
"minicom" and talk to the C64 BBS program. You will have to select
which serial port, the baud rate, stop bits, etc. Just try different
things until it works if you don't know for sure about the C64
settings. Once you get it right, save the settings as defaults, so
minicom starts up that way every time.
Once you have that working, there are a huge number of ways to share
this accross the internet. You can start by making a shell account
that someone can ssh into (better than telnet, but you can allow that
too) and then they can run minicom at the command line. You can make
it start minicom automatically by putting the command .login or
another startup script.
If you want to make sure the users can't do anything on your linux
machine, can only connect to the C64, you might experiment with making
the BBS user's shell be "/usr/bin/minicom". The shell is the program
that starts when the use logs in, to handle user interaction, and when
it exits the user is logged out.
You can probably use kermit instead of minicom.
Making sure only one user at a time is on the serial interface will be
taken care of automatically. If you start a minicom talking to
/dev/ttyS0 ( serial port 1 in linux ), and then try to start a second
minicom talking to that serial port, it will give the error message
"Device /dev/ttyS0 is locked." Now, the second person attempting to
log in may not actually see that message before the ssh (or telnet)
exits, we might have to test that.
If you are worried about the people who you give accounts to having
access to the linux machine itself, you have to investigate the fact
that minicom and kermit may contain ways to escape a command from
being sent to the C64 and send it instead to the linux machine.
I am interested in this project and I would like to see it working
when you do get it up. Feel free to email me with any questions and I
will help you if I can.
--Rob
P.S. If you do want to write code, just to learn, you might look at
the source code to minicom and to kermit and then write a simple
program that will access your BBS. Then you can make that program the
shell of the BBS users. You can also find some examples here:
http://www.tldp.org/HOWTO/Serial-Programming-HOWTO/index.html
If you write your own shell that interacts with the BBS, you may be
able to better assure yourself that users aren't able to run things on
the linux box itself. My personal feeling would be to make an account
per person, and that way I could delete an abusive account with out
inconviencing the other users. If you have a single BBS user, you
have to take more care.
microman
07-24-2004, 10:07 PM
Wow, thanks for all that helpful info! I've saved your email address, will
keep in touch as I get it set up!
-Jeff
Carl Farrington
07-24-2004, 10:07 PM
microman wrote:
<bbs stuff>
damn this brings back memories! I had my PCBoard 4.15 BBS running soooo like
Ami-X is was wicked. In fact, I've just gone and downloaded System-X 1.5
(they never released newer versions the bastards! .. or of Desire
Boardsystem).
Wonder if that old Pascal (IIRC) program will run under WinXP ? ;)
heh. I rememer running PCBoard under DOSEmu/Linux at one point ;-) was a
touch slow though on my DX2/66.
those were the days.. warez warez warez :-) "Sysop is breaking-in for a
chat.."
memories... my school teacher never believed me when I said the reason for
my tiredness was a bulletin board system!
Raqueeb Hassan
07-24-2004, 10:07 PM
Thanks for reminding my school days. That was a Commodore 128 ....
pretty neat! and using BBS through that was really amazing ....
yes, minicom will be a good choice on linux terminal.
raqueeb hassan
bunia, DRC
vBulletin v3.0.3, Copyright ©2000-2009, Jelsoft Enterprises Ltd.