C64 Drive Emulation
There are a few C64 drive emulators available that allow your PC’s hard drive to be available to a Commodore 64. Usually, you can either assign .D64 disk images or a directory to a device number. I would like to set up a C64 BBS connected to the Internet, also known as a “TelBBS.” The drive emulators utilize a few different cables to connect the C64 to the PC’s parallel port. If I want to set up a BBS, I have to keep the C64′s user port free, as the TelBBS programs use this interface. I have to stick with a drive emulator that uses the C64 serial (disk drive) port. In this post, I discuss a couple of drive emulators as well as the possibility of using Linux.
Running a DOS CBM Drive Emulator in Linux
I started out by reading about Joe Forster’s X1541-series cable interfaces. These cables connect the C64′s serial (disk drive) port to the PC’s parallel port. I settled on the XE1541, as it works with two popular DOS drive emulators, 64HDD (closed source) and VC1541 (open source.) (You can either buy the XE1541 cable or build it yourself as I did, using Joe Forster’s instructions.) I attempted to get both of these emulators to work under Linux with DOSEMU. DOSEMU is an excellent DOS emulator for Linux. I was able to get DOS boot disks (64HDD prefers DOS 6.22) from bootdisk.com. Based on people’s recommendations for accessing a parallel port through DOSEMU, and some of my own trial and error findings, I made the following modifications to /etc/dosemu/dosemu.conf in Linux. Here they are in case you’d like to attempt the same thing:
$_cpu = "80586"
# Turn on Pentium timing
$_rdtsc = (on)
# Set the cpu speed to 200MHz
$_cpuspeed = (200)
# Turn off XMS (and don't load HIMEM.SYS in your CONFIG.SYS!)
$_xms = (0)
# Turn on raw access to LPT1
$_ports = "device /dev/lp0 fast range 0x378 0x37f"
$_irqpassing = "7"
I couldn’t get VC1541 to run stable, but, I could get 64HDD to run with the following command (note the +p 200 as I had previously configured DOSEMU to run at 200MHz.)
go64hdd -code -xe +p 200
Unfortunately, my C64 couldn’t access the drives emulated by 64HDD. (After performing many Google searches, it seems that I’m not the only one!) The C64 would see the emulated drives, but hang on “SEARCHING FOR…” I tried a couple of hints from the 64HDD documentation like connecting a 1541 drive in between the C64 and the XE1541 cable for timing purposes. This didn’t work. I made sure the motherboard’s parallel port was set to SPP. I also tried installing an old parallel port card with no change. I also stopped the print spooler in Linux, just in case it was interfering, but, no improvement.
Alright, at this point I was pulling my hair out, and was asking myself, “Why don’t you use 64NET/2?” It can run under Linux natively and it does basically the same thing as 64HDD and VC1541. It doesn’t fit my needs, though — 64NET/2 uses the C64′s user port and requires a “wedge” (a program on the C64) to run. I want the C64 to think there are drives attached to it without a stack of 1541 drives 3 feet high piled next to it. I don’t want to load some piece special software on the C64. There’s also cbmlink, which can do anything and everything, it seems. While it’s a great Linux utility for the Commodore community, it’s a bit on the complex side in what I’m looking for.
Settling on DOS and 64HDD
So I finally gave in and admitted that I will have to run an old DOS machine to get a drive emulator to work the way I want. 64HDD has a free version (as well as a fee-based “pro” version.) Even though it’s not open source, it has what I need. A simple program that can use .D64 images or directories and uses the serial port on the C64. I dug deep into the depths of my basement, and pulled out an old, cracked case 486/33 Compaq LTE Lite. (Something I bought from a seller who called himself “Crazy Bob” at a computer show years ago.) I loaded DOS 6.22 (from bootdisk.com) and 64HDD, plugged in the XE1541 cable directly from the parallel port into the C64, and voila! It worked.
So, now I have my C64 happily loading PRG files from a 620MB hard drive. I am glad I finally found a use for that old laptop; I believe I paid US$40 for it at the time. My advice is to find an old 486 laptop on eBay for US$10 and connect your C64 to it with 64HDD or VC1541 with a XE1541 cable. Using a laptop will keep the power bill down and allow you to use something that doesn’t take up much space. Hopefully in the near future, someone will create an open source Linux program that is easy to use and is versatile like 64HDD.