Making DOS and CP/M 5.25″ Boot Disks with Commodore 128 and 1571 Floppy Drive

Did you recently get a new MS-DOS, KayPro IV, or Osborne 1 computer but no boot floppies?

If you have a Commodore 128 and a 1571 floppy drive, you might already know that you can read and write certain CP/M floppy formats while in CP/M mode. This is because the 1571 floppy drive can read and write two types of disk encoding schemes. GCR (Commodore, Apple, etc.) and MFM (common on CP/M and DOS platforms).

But so far, this has been limited to formatting disks and manipulating data at the file system level. Programs like Big Blue Reader and Super Sweep 128 allowed you to copy files between Commodore format and MS-DOS formatted floppies. This was a big step forward in compatibility at the time.

Today, there’s a need to create new floppies from disk images that you’ve downloaded. Most commonly, you’ve picked up a new computer and it didn’t come with any boot floppies and you don’t have access to a “tweener” PC (a PC that bridges the gap from the modern era to the 8-bit era, usually with the addition of a 5.25″ floppy drive). This was me recently so I decided to develop a way to write 5.25″ MFM floppy disk images for a number of platforms using a Commodore 128 and 1571 floppy drive.

To start, I located an article titled “1571 Utility Package” written by Dick Smit in Compute! Magazine, July 1987. The article contained a couple of type-in programs that created a toolkit for manipulating MFM disks. I built on top of this toolkit and created a suite of programs to make disk images for the following:

  • MS-DOS 360k (2 sides, 40 tracks/side, 9 sectors/track, 368,640 bytes)
  • KayPro IV (2 sides, 40 tracks/side, 10 sectors/track, 409,728 bytes)
  • Osborne 1 Double Density (1 side, 40 tracks, 5 sectors/track, 204,800 bytes)

Download The 1571 MFM Disk Image Writer

The 1571 MFM Disk Image Writer Toolkit is available as a .D64 disk image. (Download .D64, 175KB)

What’s Needed

To get started, you’ll need the following:

  • Input disk images must be “RAW” or “DSK” format and must be exactly the right number of bytes in file size as listed above. “RAW” format has no additional data in it, only raw sector contents in the right order.
  • Commodore 128
  • Commodore 1571 Floppy Disk Drive set as device 8
  • SD2IEC or other mass storage device to hold disk images set to device 9 or higher)
  • JiffyDOS is optional, but may improve write speeds

Making a Disk From a Disk Image

  1. Copy the 1571 MFM Tools disk image or copy the files from the disk image to your SD card and insert into your SD2IEC.
  2. Start the program by typing RUN”START”,U9
  3. At the menu, choose which type of disk image you want to make.
  4. At “FILENAME?” prompt, enter the disk image name and then device number where the image is located at “DEVICE NUM?” prompt.
  5. Insert your destination disk into the 1571 drive (device 8) and hit enter.
  6. The disk will be formatted and then the disk image will be written. Progress is shown on screen.

Northern Telecom Displayphone Firmware ROMs and Information

This page is intended to collect information about the Northern Telecom Displayphone terminal. If you have any additional information about the Displayphone, please leave a comment. I’m specifically looking for later revisions of the software found in EPROM on these machines.

If you need to familiarize yourself with the unit, have a look at Dave Dunfield’s Displayphone site.

Displayphone Models I’ve Had

I have encountered two types of Northern Telecom Displayphones:

  1. The regular Displayphone (model NT6K00)
  2. The upgraded Displayphone Plus (model NT6K90)

Displayphone Manuals

Displayphone Keyboards

I’ve seen the regular Displayphone NT6K00 with both the small chicklet keyboard as well as the upgraded keyboard. The Displayphone Plus NT6K90 I’ve only seen with the upgraded keyboard.

Displayphone Firmware Revision ROMs / EPROMs

Software in a Displayphone resides on EPROMs that are accessed by removing a trap door on the bottom of the unit.

Displayphone NT6K00 Firmware

I have encountered two revisions of firmware for the Displayphone NT6K00. The firmware is stored on five 2764 (8 kilobyte) UV EPROMs. In my testing of one machine, one ROM had failed with 5 bytes failing checksum.

Correct 16-bit checksum value appears to be the last two bytes of U49 ROM in little endian.

  1. Version “AA07” with the checksum of 4601 (hex). 1982 or 1983. Download Displayphone ROMs AA07 (26 kilobyte ZIP file)
    • U45, QQ6WM, A0298294
    • U46, QQ6WN, A0298295
    • U47, QQ6WF, A0298296
    • U48, QQ6WQ, A0298297
    • U49, QQ6WR, A0298298
    • Note: This version appears to disable the external (or “local”) RS-232 port in firmware and therefore not very useful.
  2. Version ” 6V0″ (there may be a space to the left of the 6) with checksum 5652 (hex). Download Displayphone ROMs 6V0 (25 kilobyte ZIP file)
    • U45, A0295041
    • U46, A0295042
    • U47, A0295043
    • U48, A0295044
    • U49, A0295045
  3. Version “AA05” dated Nov 1982 sent by Andrew (see comments below) with checksum of 0C70H (hex). Download Displayphone Roms AA05 (24 kilobyte ZIP file)
    • U45, QQ4BT
    • U46, QQ4BU
    • U47, QQ4BW
    • U48, QQ4BX
    • U49, QQ4BY

Displayphone Plus NT6K90 Firmware

I have encountered one revision of the firmware for the Displayphone Plus NTK690. The firmware is stored on three 27128 (16 kilobyte) UV EPROMs and one 2764 (8 kilobyte) UV EPROM.

  1. Version “VT01B” with unknown checksum. Unable to verify if ROMs are valid, machine will not power up properly. Download Displayphone Plus ROMs VT01B (41 kilobyte ZIP file)
    • U31, VT01B 3, “21 MAR. 85”
    • U32, VT01B 2, “21 MAR. 85”
    • U33, VT01B 1, “8 MAR. 85”
    • U34, VT01B 0, “11 MAR. 85”

Performing a ROM Checksum

Perform a ROM firmware checksum on your Displayphone with the following key combination:

  1. Press SERVICES.
  2. Press zero on dial pad.
  3. At PASSWORD? prompt, hold SHIFT and press C on keyboard

Clearing Displayphone Memory

After each power on, you should clear the memory of your Displayphone with the following key combination:

  1. Press SERVICES.
  2. Press zero on dial pad.
  3. At PASSWORD? prompt, press 7 then 8.

Displayphone Power Supply

The Displayphone power supply is a triple voltage box-on-leash style brick with permanently attached cables. The plug that goes to the Displayphone is a DE9 female. I’ve encountered both a metal case and a plastic case style power supply.

The plastic style case (model NT6K01AA) is 110 VAC, 0.50 A input and has output ratings listed as:

  • +5V at 2.0 ADC
  • +12V at 0.8 ADC
  • -12V at 0.1 ADC

The power supply DE-9F pin out has been visually determined as follows (along with the cable color used on the NT6K01AA PSU).

  • Pin 1: +5V (white)
  • Pin 2: +5V (yellow)
  • Pin 3: N/C (purple)
  • Pin 4: +12V (orange)
  • Pin 5: N/C (red)
  • Pin 6: -12V (brown)
  • Pin 7: N/C (green)
  • Pin 8: Common (blue)
  • Pin 9: Common (black)

Opening the Displayphone Case

If anyone has any tips or pointers on how to open the Displayphone case, please leave a comment.

Update: Andrew confirms (in the comments below) to open the Displayphone case, you need to insert a tool into the back of the case to release an internal tab. Andrew used a multimeter probe.

Update: @TubeTimeUS has posted pictures of the take apart process including discovering there is a battery inside that leaks. If you have one of these units, you’ll want to remove the battery ASAP, clean the board, and examine for any damage.


Modern Upgrades for the Hayes Chronograph

Hayes Chronographs

Until recently, I had no idea what a Hayes Chronograph was. I didn’t even know it existed until Bill Lange (@BillLange1968) posted a picture of one on Twitter that linked to a wonderful article he wrote about them. The name Hayes was instantly recognizable though, being the inventors of the Hayes “AT” Command set that has found a way into just about every modem since. The shape was also familiar, a bigger version of the same case used in their Smartmodem 300. This was different. It had a beautiful vacuum fluorescent display (VFD) that was showing the current time and day of the week. I was hooked. I needed to buy this. What a wonderful trophy from the soon to come BBS halcyon days.

Hayes Chronograph, Smartmodem 300 and Bell telephoneThe purpose was simple– it’s a real time clock and calendar for your computer. At the time, many computers weren’t equipped with a clock or calendar. The Chronograph connected to your computer via RS-232 and communicated with “AT” commands (albeit slightly different than the modem command set). Manually set the time once from your computer and the Chronograph dutifully kept the time and displayed it on the front for you. Should your computer need to know the time, simply ask with “ATRT” and you’d get “193601” for 7:36:01 PM. Batteries inside kept the time in case of a power failure. It also has an alarm feature that will signal the computer on the “RI” (ring indicator) line. They were also designed to stack with other Hayes components, topped off with your classic Bell telephone.

As you might imagine, Hayes didn’t sell many of these at $250 each and ultimately production was short compared with their Smartmodem line.

I got in touch with the original seller, a previous employee of Hayes, and secured my purchase. He also had the schematics to the unit and has since uploaded it. Created in 1981, the units are now 36 years old. They still work beautifully but it’s time to breathe some new life into them.

I set about coming up with plans to make the Chronograph set the time on its own. I started this project by employing a ESP8266 WiFi microcontroller. This would give me access to NTP to set the clock and HTTP to allow for configuration. I’d need to write custom firmware to manage WiFi and NTP settings along with time zones and daylight savings time functions. I could re-purpose one of my WiFi232 units for the job by plugging it into the RS-232 port but it would need a gender changer, null modem and a power source– hardly elegant. Ideally, I’d like everything to fit inside.

Hayes Chronograph configuration pageThe firmware is based loosely on the WiFi232 and handles communication over WiFi, contacting an NTP server for the time, calculates time zone offsets and daylight savings time, a HTTP server for user settings, saving and retrieving settings from flash, and creates a WiFi access point when it’s unsuccessful at connecting as a client. I’ve added user features such as specifying the start and end dates for daylight savings time in your area, the time zone, NTP server, even the MDNS name. In addition, you can select if you’d like to display only the date, the time, or both the date and time on the front VFD screen.

Hayes Chronograph motherboard with prototypeI prototyped a simple version with an ESP-01 on a breadboard and used spring loaded pin grabbers to attach to the PIC1650A chip for power and data. And much to my surprise, it worked! It even worked with the board was slid back into the aluminum enclosure (I assumed the the metal case would diminish the WiFi signal and not work). I jumped into KiCAD and drew up a quick adapter board. It fits in the 40 pin DIP socket below, provides a 40 pin DIP socket above and adds a ESP-01 header along with the necessary 3.3v bits.

Hayes Chronograph motherboardWith both the firmware and an adapter board two weeks later from OSH Park, it was time to insert it into the Chronograph and see if it works. My initial test provided to be bad– it blew a fuse on the Chronograph. This had me totally bummed. For the next hour, I poured over datasheets, checked my schematics, and probed with a multi-meter. Nothing.

Suddenly, I realized I had the ESP-01 plugged in backwards! I flipped it around, changed the fuse and it worked! Power on the Chronograph and after a few seconds the date is displayed on the front. Afterwards, the time is set (at the top of the next minute– seconds must be set to “00”).

Hayes Chronograph VFD and motherboardSomething very important to me is that this mod is reversible and non-destructive so you can return it to normal simply by removing the adapter PCB.

The load on the AC original power supply adds 20mA draw on the 120V side (.13A to .15A).

I’m happy with the way this project turned out. I received the clocks on July 13 and finished the project on July 31 with working firmware and a non-destructive adapter PCB that installs inside that adds modern amenities to 36+ year old computer clock. Not bad for two weeks of work!

If you have a Hayes Chronograph and are interested in one, get in touch with me.

Hayes Chronograph and Smartmodem 300

Atari Portfolio Serial Interface: How To Get Terminal Software

I’ve had an Atari Portfolio HPC-004 for a couple of years now. It’s a slick little palm-top: solid state memory, MS-DOS compatible, 4 AA batteries as power source. It also has a docking slot on the right side for extra peripherals. This enables you to add communications ports that are otherwise lacking like a parallel or serial port. I’ve been seeking a second hand serial interface (HPC-102) for some time but have come up empty. I decided to instead purchase one new.

Atari Portfolio and Serial Interface

Atari Portfolio and Serial Interface

Yes, Brad at Best Electronics still has a stock of new and reconditioned Atari Portfolios and peripherals, including a brand new Serial Interface for $59.95. The only caveat is the manual is in German only. No big deal considering it doesn’t really need a manual.

The Serial Interface is about 1/3 the size of the Portfolio and gives you a standard 9-pin RS-232C serial port capable of 110 to 9600 baud. You can change the parameters of the serial port by accessing the Portfolio’s setup menu with Atari-S. From there, choose RS-232 port and which reveals settings for baud rate, parity, and data and stop bits.

Atari Portfolio Serial Interface and Manual

Atari Portfolio Serial Interface and Manual

This is great, but now you need a communications or terminal program to actually do anything useful like transfer files or dial a BBS. I did a quick search and it seems that the easiest method to transfer files is to use the built in file transfer utilities with the Parallel Interface.

Your use may require additional hardware/software.

Your use may require additional hardware/software.

Unfortunately, I don’t have one so I kept searching. Another link listed a method to hand-type in binary code which resulted in a small program to transfer a file using the serial port. The method looked like it was easy to make mistakes, so I passed.

Another link detailed the method I was looking for. This method used the DOS copy command to save data from COM1 that was transmitted from a PC with a serial port. I don’t actually have a PC with a serial port anymore, so I had to use Virtual Box on a Mac with a USB to serial adapter. The instructions called for setting the baud rate initially to 110 for the DOS copy command. My guess is this is likely due to keep the speed as low as possible since there’s no error checking.

USB to serial null modem cable

USB to serial null modem cable

I connected the Portfolio with a USB to serial null modem cable and proceeded to give it a try. I setup everything and ran STARTX.BAT. This is where I had problems– it kept failing. I tried several different USB to serial adapters, different cables, confirmed wiring. All ended with “Not ready error, Abort, Retry, Ignore?” on the Portfolio and an empty file. I began to wonder if existing USB to serial adapters can even do 110 baud any more. I wasn’t able to find any conclusive evidence they didn’t support 110 baud, nor any that confirmed they did. All spec sheets listed 300 as the lowest.

I should able to use any baud rate I’d like, as long as I slow the per-character flow over the link. I remembered that CoolTerm has a setting that lets you add a transmit delay for each character. I abandoned the Virtual Windows instance and went to CoolTerm. Here are my steps.

How to transfer xterm to an Atari Portfolio with a Mac or PC

  1. Connect the Mac/PC and Portfolio together with the USB to serial null modem cable.
  2. Download and Unzip both. (On my Mac, I had to use the command line unzip tool in Terminal.)
  3. Set CoolTerm on the Mac/PC and the Portfolio to 300 baud, 8N1 and no flow control.
  4. Set CoolTerm to have a transmit delay of 10ms.
  5. Type “copy com1” on the Portfolio (don’t hit enter yet).
  6. Choose “Send Textfile” in CoolTerm and select the “” file (don’t hit OK yet).
  7. Hit enter on the Portfolio and then hit OK on CoolTerm.
  8. The file should be sent and you should see “1 file(s) copied.”
  9. Change the baud rate to 1200 baud on both CoolTerm and the Portfolio.
  10. Remove the transmit delay in CoolTerm.
  11. Type “” on the Portfolio (don’t hit enter yet).
  12. Choose “Send Textfile” in CoolTerm and select the “” file (don’t hit OK yet).
  13. Hit enter on the Portfolio and then hit OK on CoolTerm.
Atari Portfolio with xterm

Atari Portfolio with xterm

If everything worked, you should be rewarded with a terminal program on the Portfolio. Type “xterm” to launch it. Change baud rates using the same system setup menu (Atari-S). Receive a file with XModem with F2.

If you received a single character response from xload, you can look up the error code by reading the “startx.bat” file.

Atari Portfolio and WiFi Modem

Atari Portfolio and WiFi Modem

Now you’re ready to hit the boards and relive the hay-day of computing before the Internet. Use tcpser to setup a virtual modem with your Mac, PC or even a Raspberry Pi. Or if you’re lucky enough to have a WiFi modem, you can use those too. For a list of online BBSs, visit the Telnet BBS Guide.

Let me know if you’re able to get it working in the comments.


Convert a Commodore 64 from NTSC to PAL format

If you’ve ever used a NTSC Commodore 64 for any length of time, you’ll quickly find out that many games and demos you try to run on your machine sometimes exhibit strange graphic or sound glitches or just refuse to run properly at all. It’s most likely because the program you’re trying to run was originally written on a PAL machine. With it’s different VIC-II chip generating a different master clock signal, the PAL C64 has a few more cycles available per frame than the it’s NTSC counterpart. Tightly coded loops in programs rely on a certain number of cycles to be available. And when they’re not, well, it doesn’t work as intended.

If you happen to own a C64 “short board” system, you can convert your NTSC machine to a PAL one easy. If you are unsure which board you have inside, you can open it up and take a look or make an educated guess by reading this site. A SID 8580 is usually a good sign you have a short board. But please make sure you confirm your board type before you begin. The VIC-II types (65xx vs 85xx) are not interchangeable!

Once you’ve determined you have a short board C64, gather these two parts.

  1. MOS/CSG 8565 VIC-II PAL Chip (eBay, $23)
  2. 17.734475MHz crystal (, <$1)

A C64 short board, showing NTSC specific components (circled).

A C64 short board, showing NTSC specific components (circled).

Steps to conversion:

  1. Replace the existing VIC-II (8562 NTSC) chip with the new (8565 PAL) chip. You’ll most likely find the existing VIC-II chip to be socketed on the motherboard so removal will be very quick and easy with a small flat head screw driver.
  2. Replace the existing crystal. You’ll notice the old crystal is rather large compared to the new one. It’s fine, you’re just benefiting for 30+ years of innovation to make parts smaller now. De-solder the old crystal or clip the legs and remove each leg. Solder in the new crystal– polarity doesn’t matter. You don’t need to worry about replacing the old crystal’s wire “belt” that went over it.
  3. Solder across “J3” on the motherboard next to the VIC-II (it’s labeled OPEN: NTSC, SHORT: PAL).

A C64 short board, showing PAL specific components (circled) converted from NTSC.

A C64 short board, showing PAL specific components (circled) converted from NTSC.

That’s it. Now, you’ll need a display that’s capable of working with a PAL signal. A NTSC 1702 monitor will probably only show a black and white PAL image. Your easiest solution is to use a LCD monitor that has composite or s-video inputs. Most modern LCD displays are “world displays” and will support NTSC and PAL signals. Unsure? Check your manual or just test it. If you are keen on staying on the CRT route, check out Sony PVM “studio” monitors as some of those models supported NTSC and PAL.

And forget about using the RF out as the channel positions are different (but you weren’t going to use that anyway, right?).

Enjoy the brand new world of European games and demos!

Commodore 1520 Plotter X/Y Gear Repair Guide

Commodore 1520 Printer/Plotter

Commodore 1520 Printer/Plotter

NOTE! New replacement Alps gears for the Commodore 1520, Atari 1020, etc are now available! Click here to order your set.

You’ve just unpacked your new Commodore 1520. It was most likely sold as untested, as-is or condition unknown. You plug in the cable, turn it on, and it buzzes and grinds for a couple of seconds then the red LED on top flashes. Silence. You might be lucky and get a little movement on the print head.

While the diminutive Commodore 1520 Printer/Plotter looks as good as the day it was made over 30 years ago, one specific part suffers over time. Two actually. Inside, the Alps printer mechanism contains two small stepper motors. You can’t see them– they’re inside the silver platen housing. On the left and right side, the stepper motor shaft sticks out and has two small gears attached to them. These gears (most likely made of nylon) have shrunk in size and split apart under the pressure of the spindle. There’s now a gap in one of the 13 teeth and it binds against the opposite gear causing the grinding sound you hear at start up.

Commodore 1520 Gear
Replacements are available. Best Electronics sells via email order a set of 2 replacement gears for $15 with a $20 minimum. That’s likely as much as you paid for the plotter.

Commodore 1520 plotter X/Y gears in digital calipers, about 3.6mm wide.

Commodore 1520 plotter X/Y gears in digital calipers, about 3.6mm wide.

You can also repair the split with glue, but not in the way you might think. We’re not going to try to get glue in between the split as that would be nearly impossible due to their tiny size. What we need to do is minimize the effects of the gear shrinking in size. If you remove the gear from the motor spindle, you’ll notice the split closes. This is because the gear bore is slightly smaller than the motor spindle. It’s pressure fitted. You’d normally want this as it transfers the motor force into the gear.

But if we increase the bore size of the gear, the spindle won’t force apart the split any more. Unfortunately it now freely spins on the spindle. Using some super glue on the spindle, you effectively mechanically connect the gear to the spindle again plus hold the split “closed” from the inside of the bore without the risk of getting glue in the teeth.

Tools to fix the Commodore 1520 plotter gears (left to right: calipers, gears, tooth pick, 1/6" drill bit, super glue, needle nose pliers)

Tools to fix the Commodore 1520 plotter gears (left to right: calipers, gears, tooth pick, 1/6″ drill bit, super glue, needle nose pliers)

Here are the steps I follow.

  1. Remove the old gears from the spindles. Be careful not to damage the opposing gears in the process. You can very gently move the spindle towards the back of the case with a flat head screwdriver in one hand and slip the gear off with the other.
  2. Locate the split in the gear. Gently clamp the gear making sure the gap/split has pressure pushing it together. I used a small caliper to do this.
  3. Commodore 1520 X/Y gear clamped

  4. Using a 1/16 inch drill bit, BY HAND, slowly and gently drill the bore until the bit goes all the way through. Clean up any debris with a toothpick.
  5. Commodore 1520 X/Y gear drilled

  6. Note that one side of the gear has a closed, flat edge. This will now face away from the motor. Slip the gear on the spindle and test it. Hopefully the split should no be visible and the gears should rotate freely without any binding or even pauses. Remove the gear from the spindle.
  7. Commodore 1520 X/Y gear re-fitted

  8. Apply a tiny dab of super glue on the spindle motor and slip the gear on. With your fingers, roll the opposite gear back and forth. This will distribute the glue around the spindle, stop with the split facing up.
  9. Using needle nose pliers, gently close the gap if there’s one until your glue sets. Gorilla Glue says 30 seconds.
  10. Let it sit over night for the best bond.

It should be noted that many computer companies in the early 1980’s had a plotter that used the same Alps plotter mechanism. They are the Atari 1020, Tandy CGP-115, Oric MCP40, Sharp CE-150, and probably others. These instructions most likely will serve you well with those machines as well.

I’ve repaired about 5 Commodore 1520 plotters, a CGP-115 and two Atari 1020s using this method. Out of all of them, I had one fail again after heavy use. Your mileage may vary.

Some tips that will keep your plotter working longer:

  • Always remove and cap the pens when you’re done using it.
  • When you’ve removed all the pens, power off the printer with the pen carriage all the way to the right (in pen replace mode).
  • When you power it on the next time, it won’t grind against the left stop as it tries to find “home.”
  • If you don’t have the paper spool holder, a standard round pencil works perfectly.

As with all things you find online, what you choose to do to your own equipment is your own choice. I won’t be held responsible for anything you damage (including your equipment or yourself). Use common sense and do your research before attempting any kind of repair.

Let me know in the comments if you successfully repaired your plotter, have an alternate fix or know of a source for replacement gears.

RS-232 for Commodore PET and Dialing a BBS over WiFi

Commodore PET running WordPro Four Plus.

Commodore PET running WordPro Four Plus.

I’ve owned a Commodore PET* 8032 for a few years now. I’ve been able to download and run many different programs for it, like WordPro you see above. But one thing always remained elusive. I’ve long wanted to connect it to a standard RS-232 device and use it as a terminal. The PET’s classic shape, green monochrome monitor, and 80 column display all lend itself perfectly as a terminal.

Like it’s much more popular successors, it too lacked proper RS-232 UART hardware. Adding a modem meant you either had to purchase a IEEE-488 enabled modem (Commodore made the 8010), purchase an add-on board for your PET, or use the existing parallel user port to “bit-bang” RS-232 serial signals. The later is exactly what the Commodore VIC-20, C64 and C128 do– simulate RS-232 on user port pins by the CPU rapidly turning outputs on and off. They even have KERNAL ROM code (albeit broken at high speeds) that did the RS-232 handling for you.

The PET lacks this ROM code but it can added to drive RS-232 TTL signals over the user port. I found two methods that did this– a commercial product and a freeware one.

Before we continue, please– if you attempt any of this, make sure you understand the difference between RS-232 TTL level signals (0v to +5v) and proper RS-232 level signals (-13v to +13v or more). Connecting proper RS-232 level signals to your PET will damage your computer and make you sad. See this explanation for SparkFun about the differences in RS-232 levels.

The first was McTerm which was produced by Madison Computer. I knew of this company since I owned their McPen lightpen system for the VIC-20 and C64 but I didn’t know their pedigree went that far back. It was sold as three parts– software on floppy, a ROM chip that had to be installed inside the PET, and a user port cable that connected to the RS-232 device. I located the software and the ROM online [local cached copy] but I’ve never actually seen the user port cable before so this was going to be challenging.

The first step was to create the ROM using an EPROM. On the PET 8032, the ROM slot is UD12 which maps to memory location $9000. The ROM code was only 2 Kbytes but I only had 4 Kbyte EPROMs. That’s OK, I just filled the other half with 0xFF. The next problem was the PET ROM slot expected a 2532 style pinout but my EPROM was a 2732 which has a slightly different pinout. Luckily, this can be overcome by making an adapter carrier to swap the 3 of the pins around. This site was useful in creating the adapter so I won’t go into that here. (Note: There’s two adapters on that site, make sure you’re building the 2732 -> 2532.)

Next was the software, which was easy enough to transfer to a 1541 floppy disk that can be read with the IEEE-488 enabled Commodore 2031 Single Floppy Disk drive. I put it as the first item on the disk so the “shift-run/stop” trick will load and run the first item on the disk.

Finally, I needed to figure out how to make the cable. I was going to need to test the user port pins to locate which ones the program was using. I examined how the VIC-20 and C64 do RS-232 over the serial port first. Immediately, I found that pins B and C were tied together for receive (RX). Pin C is PA0 which is a GPIO pin and B is /FLAG2 which I believe is for an interrupt. This makes sense since you want to immediately begin processing incoming data as soon as possible. The PET user port pin B is CA1 is is also for an interrupt. I had a hunch it may be used the same way.

To test the pins, I tied pins B and C together and connected to a USB RS-232 TTL adapter. I used a terminal program called CoolTerm, set the baud rate properly and tried sending characters. Nothing. I then tried B and D. Nothing. I kept trying until I landed on B and F. This DID give me something on the PET screen. It wasn’t correct, but it was receiving something.

I repeated this hunting for the transmit (TX) pin but this time only on a single pin. I found pin H was being using for transmit but again, it wasn’t recognizable characters from the PET but something was being transmitted.

Next I wanted to troubleshoot the characters not being displayed right. First thing was maybe it was the wrong number of data or stop bits or even parity. I tried many different combinations: 7n1, 7e1, 8e2, etc. None of them seemed to make a different. Typing the alphabet “abcdef..” seemed to return the alphabet but in seemingly reverse order with some other characters interspersed.

I decided to get the scope out and look at the differences between the USB RS-232 and PET signals. I decided on the ‘0’ character since it’s the same for ASCII and PETSCII just in case that might be part of the problem. Below is a comparison of the two.

Top is a Mac and USB Serial TTL cable. Bottom is a Commodore PET transmitting via user port on pin H.

Top is a Mac and USB Serial TTL cable. Bottom is a Commodore PET transmitting via user port on pin H.

Immediately you can see the issue. The Commodore PET is using a logic low for false and logic high for true (which I’ve learned is called “non-inverse”). Standard RS-232 TTL signals are “inverse” of this using logic high for false and logic low for true. This would explain what I’m seeing since the bits are reversed. I connected the pins through a 7404 inverting IC to invert the singals to and from the PET.

Commodore PET 8032 and inverting circuit.

Commodore PET 8032 and inverting circuit.

This yielded partial success. I was now able to send characters to the Commodore PET.

Commodore PET displaying Hello World message sent from a Mac over RS-232.

Commodore PET displaying Hello World message sent from a Mac over RS-232.

Sending characters from the PET to the USB RS-232 TTL adapter revealed that it was setting bit 7 high. If bit 7 was set low, it would be working fine. I’ve still yet to figure this out. If you have an idea, leave a message in the comments.

I later found in the BASIC code of McTerm on line 1070 was a way to use inverted RS-232 which does work without the inverting circuit.

1070 sysa :rem ***** use a for regular modems, a+36 to invert

The second method was found in Transactor Magazine issue 3 volume 6. It included a type in terminal program (simply called “Terminal v11”) and simple instructions for building a user port cable. I believe this program was created by Steve Punter, who also created the only known BBS program for the Commodore PET. Being a type-in freebie in a magazine, it wasn’t as full featured as McTerm but it does do automatic PETSCII/ASCII translation and has file transfers using an early version of the Punter protocol. It is locked to 300 baud however.

Commodore PET Terminal type in program.

A portion of the Commodore PET Terminal type in program.

Next up was the software. I really didn’t relish the idea of reliving that part of my childhood and typing all of those DATA statements. Modern technology to the rescue in the form of a free online OCR service. Much to my surprise, this service worked extremely well. I did have to process each column of code separately by extracting each from the PDF as a JPG. The most OCR errors were in the BASIC program but it was still dramatically lower than what I expected. Between the two ML programs with the DATA statements, those only had a single error! I later found version 12 of Terminal was available here [local cached copy].

This time, the PET user port pins were listed. Pins B and L are for RX and pin C is for TX. I swapped my user port adapter cable around to match this pinout, ran the signals through the inverter circuit and tried it. Immediate success in both directions!

Commodore PET and MacBook Air communicating over a RS-232 serial connection.

Commodore PET and MacBook Air communicating over a RS-232 serial connection.

Now that I have a working RS-232 cable and software for the PET, we can put it to use. I connected it to a SparkFun ESP8266 breakout board. This board connects over WiFi and can support a standard Hayes modem AT command set with the right firmware.

ESP 8266 wired to Commodore PET user port edge connector through a 7404 inverter circuit.

ESP 8266 wired to Commodore PET user port edge connector through a 7404 inverter circuit.

With this adapter, I’m able to “dial” into BBS systems that are accessible via IP. One such board is Level 29 which is run by @FozzTexx.


Commodore PET dialed into Level 29 BBS over WiFi.

Commodore PET dialed into Level 29 BBS over WiFi.

So, was non-inverted RS-232 TTL a standard 30 years ago since two separate terminal programs used it? When did inverted RS-232 TTL become the standard?

So, until I can figure out what’s wrong with McTerm transmitting with bit 7 set, use Terminal instead and you can use RS-232 on your PET.

*Actually, Commodore dropped the PET moniker shortly after they introduced the line and changed it to just CBM. The name PET just fits better I think.

LumaFix64: Commodore 64 with less stripes

Commodore 64
You might be asking yourself, less stripes? No, not the colorful stripes on your breadbin badge. We’re talking about the stripes on the video image. The same stripes that we’ve all become accustomed to over the many years of playing Commodore 64 games, watching demos and carrying on with modems and BBS’s. These stripes, which are actually interference, come in a variety of flavors: horizontal, vertical, and checkerboard patterns. The intensity of the stripes also varies from machine to machine. Some say with that these stripes become even more apparent when using a C64 with a modern LCD monitor.

Whether you love them or hate them, there is a solution for easing or even completely eliminating the stripes all together. The user e5frog on came up with a design for a carrier PCB that would sit between the VIC-II and the motherboard. It’s purpose was to invert certain signals back into itself, each with an adjustable degree. These signals AEC, PHI0 and chroma are all thought to contribute to the stripes on the final output image of the C64. It’s a fascinating discussion that I urge you to read.

A LumaFix64 with manual and installed inside a C64 with a short board.

A LumaFix64 with manual and installed inside a C64 with a short board.

The board is available from a variety of places, built or bare and costs between $15-$30 shipped.

To test, I picked a C64 from my collection that exhibited the most stripes. It’s a PAL German C64 with a short board and a white keyboard. It’s basically a C64c inside a breadbin. For comparison, I wanted to make sure the pictures were taken the same. The camera was locked to a tripod, set to manual exposure, manual white balance and manual focus. For each picture, there’s an original shot of the unmodified C64 and one with the same C64 with a LumaFix64 installed. The C64 is connected to a Dell LCD widescreen display via a s-video lead. I used the three trimpots on the LumaFix64 PCB and dialed in each one according to the directions until the picture was as clean as possible. Below are the before and after pictures. Click each image to embiggen.

What do you think? Will you be purchasing a LumaFix64 for your C64? Or will you be sticking with your stripes for more authenticity? Let me know in the comments.

Top: original, bottom: LumaFix64

Top: original, bottom: LumaFix64

Top: original, bottom: LumaFix64

Top: original, bottom: LumaFix64

Left images: original, right images: LumaFix64

Left images: original, right images: LumaFix64

Left: original, right: LumaFix64

Left: original, right: LumaFix64

Top: original, bottom: LumaFix64

Top: original, bottom: LumaFix64

SX-64 Short Expansion Board

SX-64 Expansion Boards, original and new, front and back views.

SX-64 Expansion Boards, new (top) and original (bottom), front (left) and back (right) views.

If you were following along with my previous post about converting an SX-64 to a DX-64 by adding a second floppy drive, you’ll know that the process isn’t without it’s problems. There are some irreversible changes that need to be made to the case to accommodate all the extra equipment.

The SX-64 Second Floppy doesn't leave enough room for the EXP Connector board to mount to it's original location. There are alternatives.

The SX-64 Second Floppy doesn’t leave enough room for the EXP Connector board to mount to the original location. There are alternatives.

In addition, there’s no room for the cartridge board, also referred to as the “Exp. Connector PCB”. The second floppy drive leaves no room for the original board to rest in it’s original location.

Some have been able to work around this problem by flipping the board around 180 degrees. This can be problematic since now all cartridges need to be plugged in backwards. While that may work for some, I think it could lead to me forgetting and plugging in something the wrong way. I’d hate to damage a 1541 Ultimate II cartridge this way.

Since the location of the cartridge slot is so critical due to the spring-loaded door opening on the top case, I decided to create a new expansion board that was shorter. The original board is 1.75″ tall. My new board needs to be no larger than 1.4″ tall.

I’ve been learning my way through KiCad creating some cartridges for the Timex Sinclair 2068 and the Commodore 64 so this project seemed easy enough. The board is basically just a passive connector between a cartridge edge and a ribbon cable. The hardest part was measuring everything to ensure I had everything lined up just right. I even created the two parts from scratch, laying out the pins and pitch between them.

SX-64 Short Expansion Board, Pin holes are too small

SX-64 Short Expansion Board, Pin holes are too small

My first revision of the board came back from Oshpark and it looked great. I immediately fire up the soldering iron only to discover I’ve made a mistake– 44 of them to be exact. I didn’t make the holes large enough for the pins of the cartridge edge connector. Bummed, I returned to KidCad to fix my mistake and submitted a second revision and the pins fit as they should.

The next step is to make the ribbon cable. You’ll need these parts.

SX-64 Expansion Connector Ribbon Cable. The orientation of the connectors is important.

SX-64 Expansion Connector Ribbon Cable. The orientation of the connectors is important.

Crimp the connectors on the ribbon cable, matching the orientation of the original cable. I find an easy way to crimp IDC connectors is to use a bench vice. Lightly press the connectors together with the ribbon cable in place, plug them into one another and sandwich it in the vice using an old magazine to protect the connectors from the metal on the vice. Close the vice until the pins are no longer visible.

SX-64 Expansion Connector PCBs, Original and Short

SX-64 Expansion Connector PCBs, Original and Short

Solder the edge connector and ribbon cable on and install in your SX-64. The clearance is still tight, but should now fit.

SX-64 Short Board Expansion PCB installed next to a second floppy drive.

SX-64 Short Board Expansion PCB installed next to a second floppy drive.

Warp Speed cartridge plugged into SX-64 new short expansion board PCB (shown without top case cover).

Warp Speed cartridge plugged into SX-64 new short expansion board PCB (shown without top case cover).

Converting a Commodore SX-64 to a DX-64 Dual Drive

Commodore DX-64 (converted from SX-64) Many floppy. Very retro. Such storage. Wow. #doge #c64

Commodore DX-64 (converted from SX-64)
Many floppy. Very retro. Such storage. Wow. #doge #c64

The SX-64 was Commodore’s portable version of the best selling C64 computer that wrapped the C64, a 5″ color display and a 1541 floppy drive into one case that loosely resembled a Kaypro. They were also called luggables because, well, they are quite heavy. Despite folks calling them rare, they litter eBay very frequently and command a premium price.

A Commodore DX-64 that sold on eBay Oct 2015. Owner was unsure of authenticity of a real DX-64

A Commodore DX-64 that sold on eBay Oct 2015. Owner was unsure of authenticity as a real DX-64

There was an elusive version created that had two 1541 floppies inside called the DX-64. The second floppy drive replaced the storage glove box of the SX-64. There are some small blurry cam photos of them scattered about and one even popped up on eBay in Oct 2015 and sold for $1,400 but there hasn’t been definitive photos of the exterior and interior of the machine. There’s some questions surrounding the implementation of the second floppy. First, were the drives numbered 8 and 9 or where both device 8 and had logical drive numbers 0 and 1 (reminiscent of the CBM 4040/8050 and the like dual disk drives)? Second, how were they driven? In an SX-64, there’s a single 1541 board that can only drive a single floppy drive. Was there a two drive version of this board? If so, where are the schematic documents or even photos of it?

In any case, I set about to convert an SX-64 to a DX-64 system. This has been completed and documented several times online. Steve Gray has done two and has some excellent photos of the process that I’ll link to now and then throughout this document. I hope to fill in the gaps of some of the things I learned as I completed the conversion of my system.

A word of warning

This conversion is a hack. I’ve attempted to make my modification as reversible as possible, but there are some things that are permanently changed. You should also know that your power supply may not have enough power to drive both disks at the same time. As with any hack advice, you assume all responsibility for what you choose to do to your own machine. I recommend reading all available information on the subject several times before you attempt this conversion. Check and double check your work. If something doesn’t seem right, stop!

Getting the parts

Sourcing the parts is a matter of patience and persistence on eBay. A few times a year, you’ll see a flood of SX-64 parts appear for sale. My guess is someone gets a machine that doesn’t work properly, doesn’t want to ship the entire thing because of weight, or figures they can make more money by parting it out piece by piece. There’s no real advice on the recommended price to pay for these parts, so I’ll leave that to your best judgement.

Commodore SX-64 Floppy and FDD board

Commodore SX-64 Floppy and FDD board

You’ll need the SX-64 1541 controller board called the “FDD” board. I paid $27 (+ $6 ship) for this board. Next is the actual floppy drive itself. There may be other compatible bare floppy drives out there that will work, but keep in mind the latch style, bezel color, mounting holes and wiring loom will need to be right too. I nabbed a SX-64 1541 drive from the same seller for $16 (+ $10 ship). One snag was the seller didn’t have the internal IEC cable that goes from the FDD board to the I/O board. It’s still ok– more on this later.

Testing your new drive and FDD board

Once you have the parts, you should make sure they work 100% before proceeding. This will involve a pretty drastic disassemble of your SX-64. I’m assuming you know how to open your SX-64. If not, please consult Ray Carlsen’s SX-64 guide. And don’t remove the blue handle caps– there’s nothing under there that gains you access to the inside case!

You can leave your old floppy drive in place (rest the new one on top of the storage box) but you will need to remove the original FDD board to get at the power cable on the lower left side of the board (from the rear of the computer). Most everything is held in place by small black plastic posts and rings. Pop these out and set them aside. Unplug the the white 6-pin cable from the original FDD board and plug it into the new FDD board. This is the IEC cable. Plug in the two cable looms from the new drive into your new FDD board as well as the power connector. Double check that you’ve insulated the floppy and the new FDD board from the case. If not, you can count on your machine getting fried. Test the drive thoroughly by loading, saving and even making a copy of a disk or two. Once you confirm the drive works as it should, you can proceed. If not, you’ve got some troubleshooting to do. It’s beyond the scope of this article but consult Commodore sage Ray Carlsen’s site for assistance first.

Change device number to 9

SX-64 FDD Device Number Jumpers Cut the jumper next to the 6-pin IEC connector for device 9.

SX-64 FDD Device Number Jumpers
Cut the jumper next to the 6-pin IEC connector for device 9.

Since we’re adding a second drive, we need to change the default device number of the second FDD board from 8 to 9. To do this, locate the two solder jumpers at the top of the board between the reset and IEC pins. Cut the jumper of the pad next to the 6-pin IEC connector as pictured.

Mounting the drive

SX-64 Second Floppy Drive Mounting Solution-- screws with integrated rubber bushings as spacers.

SX-64 Second Floppy Drive Mounting Solution– screws with integrated rubber bushings as spacers.

To install the floppy drive, you first need to remove the storage/floppy “carriage”. On my unit, there’s four vertical screws that secures it to the chassis. On other units, the screws are horizontal which require you to remove the CPU board and the monitor. This sounds like a major pain, but you may be rewarded later.

Lift out the storage/floppy carriage and unscrew the storage box. On Steve Gray’s second conversion, he noticed that his storage box was held into place by small brackets that could be flipped around to hold a second floppy perfectly with the existing screws. This may be the bonus of having to remove the CPU board and monitor. I didn’t have this type of bracket so to fit the new floppy in it’s place, I used screws that had a integrated rubber bushing on it from an old SCSI hard drive. How you solve this problem will depend on what kind of storage/floppy carriage you have.

The SX-64 Second Floppy doesn't leave enough room for the EXP Connector board to mount to it's original location. There are alternatives.

The SX-64 Second Floppy doesn’t leave enough room for the EXP Connector board to mount to it’s original location. There are alternatives.

At this point, the cartridge board (or EXP. Connector) is probably in the way, preventing the carriage with the second floppy from being installed. Unfortunately, there’s no room for the cartridge board with the second floppy in place. Here are some alternatives.

  • Flip the EXP Connector board 180˚ and screw it into place. This requires all cartridges to be plugged in backwards. I didn’t have enough room inside to do this, as the board would then come into contact with the I/O board connectors.
  • Remove the plastic cartridge guide, move the board back and secure with zip ties in the second set of holes. You need a cartridge extender to plug in anything at this point.
  • Create a new PCB that is shorter. I did this, more in a later post.

Powering the FDD board

Powering two SX-64 FDD boards by jumpering the rear power pins.

Powering two SX-64 FDD boards by jumpering the rear power pins.

Next, determine how you’ll power the second FDD board. There aren’t any spare power connectors inside so you need an alternative. If you have a spare connector, you could splice it in with the existing one. I didn’t, so I decided to solder the two FDD boards power together from the back. Use a dab of hot glue to secure the cables in place. This allowed the regular power connector to be plugged into one board and have it feed to the second. Use heat shrink/tape to insulate the power connector standoffs on the second card. I went this way because it seemed to be the least destructive of the original hardware. Also, take note that the colors are aren’t the typical colors used for modern power supplies! In this case my YELLOW cable is +5v (it’s ORANGE on my SX-64 power supply cable) and my RED cable is +12v. DOUBLE and TRIPPLE CHECK your work before you power on. You only get one chance.

I had planned to orient the FDD boards back to back (solder side facing inwards) with some heavy insulation between. This didn’t work because it took up too much room. The only way it seems to fit is to have them stacked normally, component sides facing the rear (which is also the original orientation of your original FDD board).

IEC Cable

To connect the FDD boards, you need to make a modified internal IEC cable. This can be accomplished by taking the white IEC cable from your new drive and splicing it into your existing one. Cut both sets of cables in half and splice two ends onto one. Steve Gray did this and has a great picture of it.

If you’re like me and only have one white internal IEC cable, you need to improvise. If you want to make an authentic replacement, the connectors are still available from Molex (PN 51191-0600) as well as the pin inserts. I decided not to go this route because I was impatient (and the crimper tool was expensive for the pin inserts).

Original SX-64 Internal IEC Cable (Top) New DX-64 Internal IEC Cable (Bottom)

Original SX-64 Internal IEC Cable (Top)
New DX-64 Internal IEC Cable (Bottom)

I did have a stash of female breadboard jumper cables. They just barely fit over the pins. Take 12 female to female jumpers, cut them in half and wire up your own cable like the one shown. Use heat shrink tubing to insulate your splices and use tape to join the individual jumper headers together into 3 single multi-pin connectors.

The pin order appears to be reversed from the I/O board to the FDD board. If the drive doesn’t work, flip it around and try it again.

Make room for the FDD board

To make room for the additional FDD board, you need to:

  1. Remove the post from the right side (closest to the monitor) of the I/O board from the bracket. Remove the metal support bracket by snipping it off at the bottom or simply rocking it back and forth so it bends at the bottom until it breaks off. (pic: Before, After) This part wasn’t detailed anywhere that I could find but there really is no other way to fit everything in with this bracket still in place. Yes, it’s drastic and permanent. If you have a better way, I’d love to hear it.
  2. Remove the power input socket rear metal shield and shield with thick plastic or paperboard.
  3. Insulate the solder side of the I/O board and the area surrounding the rear of the monitor.
  4. Insulate both sides of the FDD boards with thick plastic or paperboard.
  5. Remove plastic slot/rail on the bottom of the chassis that the FDD board sits in.

Fitting the FDD boards inside

Commodore SX-64 illustrating locations and angles for installing two FDD boards.

Commodore SX-64 illustrating locations and angles for installing two FDD boards.

The I/O and FDD boards will be sitting in the chassis at angles. The actual angles aren’t important, but I wanted you to see a diagram of it so you don’t second guess yourself when the boards aren’t sitting at 90˚ angles with the chassis. Stuff the two FDD boards inside the case, making sure that you insulate between all the components very well. It’s all a very tight fit. Attach one FDD board to the right support with the small black plastic pins. The likelihood of anything moving is small because there’s no room to move! Reattach the power supply to confirm that it all fits.

Finishing Touches

SX-64 rebadged as DX-64

SX-64 rebadged as DX-64

To complete the conversion, the label on the back of the keyboard should say DX-64. I used a vinyl cutter to make an “S” from matte black vinyl and covered just the “S”. Next, I used glossy white and cut “DX-64” and applied it over top the original logo. The look is nearly perfect. The big “READY.” sticker also doesn’t hurt!
SX-64/DX-64 Drive Number Stickers

SX-64/DX-64 Drive Number Stickers

On the real DX-64, the word “storage” on the front bezel is (might be?) replaced with “drive 1.” That would be difficult to change but we can apply stickers to the front of the drive to differentiate them. Here’s 8 and 9 in the Commodore 64 font in black and white. Which do you prefer?

One could also change the startup screen from SX-64 to DX-64 by changing the kernal ROM.

I hope to have an update to the cartridge “EXP. Connector” board mounting problem in a few days.