Well, heres a quite bit I wrote up on my final solution - feel free to ask
any questions.
Whilst I would have preferred to have my Warp6 BBS running on my LC 475’s //e
card, I was forced to run it on my XP workstation under the KEGS emulator due to
Warp6’s incompatibility with the //e card.
Essentially this is the brief run down of how I did it.
Software Used in the End:
KEGS 0.91 (http://kegs.sourceforge.net/)
- //gs emulator
TCPSER (http://www.jbrain.com/pub/linux/serial/)
- Hayes compatible modem emulator for getting your old serial comms app onto the
internet. Note I’m not exactly sure which version I’m running now – I had
thought it was 1.0RC12 – but I’m not so sure looking at the file sizes.
Warp6 BBS 2.5 – (http://mirrors.apple2.org.za/apple.cabi
... WARP6.BBS/) - the BBS software
Warped – (http://mirrors.apple2.org.za/ground.ica
... warped.shk) - the door games for the Warp6 BBS
Ciderpress v3.0.0 – (http://ciderpress.sourceforge.net/)
- All round wonderful program for Windows PC’s for messing with emulator images
and .SHK files
Step 1 – Get Warp6 BBS image up and running in the emulator
Having decided to go with KEGS as a result of some testing of different
emulators specifically around serial port support (note that in the end a lot of
the issues I was experiencing could probably be put down to my cable that I
resolved at the end – but I never went back and tested the other emulators) the
first thing to do was to get the Warp6 BBS image up and running.
I wont go into the details here because I actually already had the base Warp6
emulator image up and running from a previous play with it a few years back, but
essentially if my memory serves the process is something along the lines of
- Use CiderPress to make a HDV image
- Use CiderPress to copy the Warp6.shk and Warped.shk to the new HDV image
- Download a disk image with ProDos and shrinkit tools
- Start emulator and un-shrink the archives to your HDV image and install ProDos
The actual configuration of Warp6 is covered in the warp6 doco that is supplied
in the archive. I’ll just go over some of the specifics here.
Step 2 – Configure the Warp6 BBS doors
Again, the warped.shk contains information on how to do this, however I noticed
that two applications (insulter and the doorway) worked locally but not
remotely. This was because Warp6 requires you to get input from users in a
specific way in order to protect from crashes (which might dump you into a BASIC
prompt) and to check and enforce time limits. As luck would have it the BBS doco
talks about how to do this and I simply copied the Applesoft code from the
“Micro bandit” game into doorway and insulter (using the wonderful applesoft
line editor). I guess I had an advantage here as I had (man many many years ago)
written some of the customisations in the warped.shk archive.
The final thing required was to install the modem drivers specific for use with
the //gs serial port (as opposed to the Apple //’s super serial card) – this
again is covered in the Warp6 doco and essentially requires the copying of two
files into the Warp6 BBS main directory.
Step 3 – Getting the BBS online
Warp6 BBS expects to see a real old style hayes compatible modem to talk to. If
it see’s that (like most old school BBS packages) its happy. Fortunately for us
retro guys theres some really smart guys like Jim Brain who write some really
cool software like TCPSER. TCPSER is a modem emulator with a twist. It runs on
your PC (or linux/mac if you are using the cross platform java version I
understand) and does two things.
1. Binds to a physical serial port on your machine to allow any other serial
device to be connected to that port and see what it thinks is a standard hayes
compatible modem – one that sends all the right responses back to those
interesting AT commands we used to love
2. Replaces the traditional “phone line” with the internet and allows access to
the serial device via the internet standard telnet protocol (BTW it also allows
the device attached to the serial port to initiate access to the internet via
telnet to!). For example if configured (by the BBS program) for answering calls,
it will accept incoming telnet connections and then send the appropriate code to
the device attached to the serial port – i.e RING RING, the BBS will then likely
instruct the modem to connect, at which point TCPSER sends a “CONNECT” response
back to the serial port and arbitrates communication between the telnet
connected TCPIP session and the serial device (normally a BBS) connected to the
serial port. When the BBS hangs up, TCPSER disconnects the telnet session, or if
the telnet connection is dropped, TCPSER drops the serial connection to the
attached device
This was one of the hard parts for me, warp6 was all ready to go (more or less)
but wanted to talk to a modem out of the emulated serial port (that terminated
on my PC’s real DE-9).
To theory behind this is that we use two serial ports on one PC. The emulator
binds to one serial port and the modem emulator binds to the other, that is both
end up poking out of the back of the machine to the real world. To connect these
two things together requires the use of a serial cable (just like you would do
to connect a real GS to a real modem). The trick being figuring out what kind of
cable to use.
To begin with I had no real idea of how the emulated serial port mapped to my
real serial port, and how the signals from the GS’s mini DIN related to those on
my DE-9. After quite a bit of head scratching, googling and burnt fingers, I
settled on the following cable and made the bold assumption that KEGS doesn’t
honour the DCD signal on the PC’s real DE-9
Ultimately, the following signals are the ones I decided I needed to use:
DE-9 (my PC’s connector)
Pin 2 – Recevied Data
Pin 3 – Transmitted Data
Pin 4 – Data Terminal Ready
Pin 5 – Signal Ground
Pin 6 – Data Set Ready
Pin 7 – Request to Send
Pin 8 – Clear to Send
So to get comms going between TCPSER and my emulated GS I built a cable like
this:
COM1 = Physical port that my modem emulator (TCPSER) bound to
COM2 = Physical port that my emulated GS serial port bound to
COM1 COM2
PIN2 (RCD) ----------------------- (TXD) PIN3
PIN3 (TXD) ----------------------- (RXD) PIN2
PIN4 (DTR) ----------------------- (DSR) PIN6
PIN5 (GND) ---------------------- (GND) PIN5
PIN7 (RTS) ----------------------- (CTS) PIN8
PIN8 (CTS) ----------------------- (RTS) PIN7
This cable doesn’t support DCD (PIN1 to PIN1) but it doesn’t seem like KEGS
honours it anyway? I could be wrong about this, but I couldn’t get it to work
and ultimately for my purposes it doesn’t need to – if someone drops carrier
(disconnects the telnet session without logging off) the BBS times out after
about 5 minutes and resets for the next caller – during this time no one can
connect, but its not a big deal.
The only other thing I did was to much sure KEGS serial port emulation was set
to “Use real ports if available” – this ensures that it binds to the real COM
port and doesn’t start a TCPIP virtual modem instead – the KEGS virtual modem is
a similar concept to TCPSER, but built into KEGS – it worked for me, but not
with Warp6, so I didn’t play with it much. You set the KEGS serial port setting
by hitting F4 when the emulator is running – this brings up the KEGS config
screen that will write changes back to the config.kegs file.
Some screen shots (click on the thumbnails for bigger versions)
My LCe (LC 475 with Apple IIe card - complete with 5.25" drive and Apple
Joystick)
My (shocking) serial cable - used to jumper COM1 to COM2 on the the PC