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.

Getting Programs For The C64 CP/M Cartridge

Picture of Commodore 64 CP/M Cart and Boot Disc
The Commodore 64 CP/M cartridge was released sometime in the early 1980’s, shortly after the introduction of the C64 itself. The cartridge contained the necessary Z80 chip inside to run CP/M software natively. While a novel idea, it was a bit too late with the popularity of CP/M waning which itself had been released almost a decade earlier. To make matters worse, it seems to only work on very early revisions of the Commodore 64. I personally am only able to get it to work reliably on a Rev A motherboard (1982, with no s-video output).

Commodore 64 Rev A Motherboard 1982

Despite all it’s shortcomings, it’s still a highly collectible Commodore artifact. Prices for the units usually range from $50 to $100 or more on eBay, depending on condition and the original box or manual.

C64 CP/M Cartridge Booted

One problem exists that makes it difficult to actually “use” C64 CP/M, beyond typing DIR or STAT. The disks for CP/M are a custom format used only for the C64 and 1541. You aren’t able to use original CP/M discs, not even those from the Commodore 128. Plus, while there is a standard CBMDOS BAM on the disc, it’s not what CP/M uses for disc management so you can’t just copy files in C64 mode to the disc.

Luckily, there’s a tool that exists to help with this matter. Introducing CTOOLS, a suite of command-line utilities that create and manipulate D64 disc images specifically for Commodore’s CP/M formatted discs. This toolset isn’t limited to C64 as it works quite well with C128 CP/M discs as well. You’ll need to compile into binaries, which worked flawlessly on my Mac 10.10.3. An example terminal session is below. YMMV.

% cformat -0 mynewdisc.d64
% ctools mynewdisc.d64 p
% ctools mynewdisc.d64 p monopoly.bas
% ctools mynewdisc.d64 d

When done, simply write your new D64 disc image to a real disc. Boot up C64 CP/M, swap the disc, and type DIR to see the contents. Just like on MS-DOS, “.COM” files are executables– to run them, just type the basename without the .COM at the prompt.

MBASIC on C64 CP/M Cartridge

Just in case you’re not up to compiling the tools, creating the images or finding CP/M binaries, I’ve packaged together six D64 disc images that you can write back to a floppy and try out on your own C64 CP/M cartridge. The ZIP archive contains MBASIC (plus a few BASIC games), Sargon Chess, Adventure, and the Zork Trilogy. Click here to download the C64 CP/M D64 archive.

Zork I Running on C64 CP/M Cartridge

The Jameco JE520 Voice Synthesizer

Jameco JE520 Voice Synthesizer for C64The latest acquisition is the JE520 by Jameco. This external voice synthesizer came in two variants: the JE520-CM for Commodore and JE520-AP for Apple II. The only difference was the interface connection to the computer. The Commodore version, the one I have, connects to the user port while the Apple II version connects via an interface slot card. Otherwise, I believe the rest of the hardware to be the same. I found an advertisement for it in RUN issue 7 1984— it retailed for $115-$150.
Jameco advertisement for JE520 in RUN magazine 1984
It’s based on the National Semiconductor Digitalker 54104 voice synthesis chip and four 2764 64kbit (8kbytes) EPROMs that form that vocabulary that it’s able to speak. This means it’s able to speak only using a fixed wordset. National also sold a series of vocabulary ROMs with the chip, but I believe this version has a custom ROM set from Jameco. It includes a built in amplifier and speaker with volume adjustment (located below) as well as a mini jack for sound output. Power comes directly from the computer.
Inside the Jameco JE520 Voice Synthesizer for C64
I didn’t receive a manual or software so it’s trial and error. At first, I assumed it would communicate with the computer over a serial interface since most devices that connect to the user port on a Commodore would use serial. And it would greatly simplify communication by using serial. But loading a terminal program resulted in the synth talking complete gibberish.

I later realized that it must be using parallel instead. And indeed, it does appear that way. The computer interfaces via parallel directly to the data pins of the Digitalker chip. On the Commodore, this is PB0 through PB7. So, it should be a simple matter in BASIC to get it to speak. So I tried the following program.

10 POKE 56579,255:REM PB0-PB7 OUTPUTS
20 FOR I = 0 to 255
30 POKE 56577,I
40 FOR J = 1 to 350:NEXT J

After RUNing the program, the voice synth began speaking words after iteration 8 with “FAIL”, “FAST”, “FIRE”, “FIRST”, “FORWARD”, etc. (0-7 were silent). It kept speaking properly until iteration 127 when it began talking mostly gibberish again through 255 with an occasional “SECOND”.

I’ve found online that two folks have said that their ROM #2 has gone bad so I decided to dump them in the hopes that I have a good copy. Dumping ROM 1 went well, but ROM 2 seems like it’s going bad. It returns different data each time it’s read. ROM 3 and ROM 4 read fine. So, it appears I also have the same problem most others do. I’m hoping that someone reading this will have access to the ROM set so I can burn a good version and get the voice synth working properly again. I’d even like to try the original National Digitalker Voice Vocabulary ROM set as I’m thinking they should be compatible as well. Leave a comment if you’re able to assist.

An interesting bit of trivia about this device is it has origins that can be traced back to someone named Forrest Mozer. The chip even contains his last name on the top. Mozer was a co-founder of Electronic Speech Systems (ESS) and developed the lossy codec that’s used to encode the speech that’s stored on the ROMs. Apparently, he did most of the encoding himself, by hand! Mozer’s codec went on to give speech to C64 games like Ghostbusters and Impossible Mission, without additional hardware. The National 54104 Digitalker was also used in the arcade hit Berzerk.

Commodore 1520 Plots .SVG Images

Commodore 1520 Plots SVG Files
NOTE! Split gears causing causing or plot errors? New replacement Alps gears for the Commodore 1520, Atari 1020, etc are now available! Click here to order your set.

I’ve put together a quick program that can convert an .SVG file into data statements that can be used to plot it on a Commodore 1520 Printer/Plotter. The program doesn’t run on the Commodore 64 (yet) but instead runs in the browser. It’s not ready to release yet as it’s fair picky about the types of .SVG files you feed it.

To whet your appetite, I’ve prepared a .D64 disk image that has four BASIC programs that will plot four different Commodore logos.

Download the disk image here.

And if you need plotter pens for your Commodore 1520 printer, you can get new old-stock pens from @futurewas8bit!

Reddit/r/RetroBattlestations BASIC Week 3– C64 port

Under The Sea: BASIC Week 3 C64It’s BASIC Week on Reddit/r/RetroBattlestations and I ported the BASIC Week program “Under the Sea” to the Commodore 64. The original code was written by FozzTexx for the IBM PC which allows for variable names longer than two characters. The Commodore 64 BASIC version 2 would probably still work using the longer names, it would just ignore everything after the first two characters. Doing this though would run the risk of overwriting variables so it was best to convert them. You can find a list of the variable name conversions at the end of the post.

If you’re keen to type the program in yourself, you can do so here. There’s a few special characters used the code. “CBM-” means hold the Commodore key (lower left) and hit the character after.

If you want to simply run the program from a disc image or to make a floppy, you can download a D64 disk image of Under The Sea here.

The BASIC version is quite slow and there’s room for optimization of the display code. Instead, I ran the code through the BLITZ! BASIC compiler and it runs much faster. This version is on the disc as “c/underthesea”

There’s three keys used the game. ‘A’ makes the turtle (you) go up, ‘Z’ goes down and ‘Q’ will quit the game.

Variable name conversion

Turtle$ = t$
TurtleWidth = tw
TurtleHeight = th
TurtleErase$ = te$
TrutleDead$ = td$
Enemy$() = nm$()
EnemyErase$ = ee$
EnemyW = ew
GameOver$ = go$
GOWidth = gw
GOHeight = gh
AirMax = am
Sea$ = se$
TurtleY = ty
Surface = sf
Score = sc
LastY = ly
TurtleX = tx
NumEnemies = ne
BubbleX = bx
BubbleY = by
Enemy X = ex
Enemy Y = ey
EnemyHit = eh
Food$ = f$
FoodX = fx
FoodY = fy
NewX = nx
NewY = ny
EnemyC = ec
NumBubbles = nb
NumFood = nf
exV = xv
eyV = yv
rows = rw
cols = cl

3D Visualization on the Commodore 1520

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

Recently on the Lemon64 forum, user Rizthomas posted some excellent scans of some plots that he did on a Commodore 1520 Printer/Plotter back in 1986. The plots were well executed and very intricate. Some were 2D “string art” and some were 3D functional models. Unfortunately, Rizthomas was unable to locate the original disks for his plots (still hopeful they’ll turn up!) but was generous enough to point everyone in the direction of where he began.

One route was Transactor Magazine Volume 6, Issue 4 which contained a program called The Projector by Ian Adam of Vancouver, B.C. The program was of combination BASIC that built on top of a series of machine language routines (from Transactor Volume 5, Issue 6) that made it easy to draw lines, circles, and text on a hires screen. The routines were called with a SYS command from BASIC and were passed coordinates as variables. This made it incredibly easy to patch the program to also send those coordinates to the Commodore 1520 Printer/Plotter with a few modifications.

  • The hires screen coordinates (320×200) doesn’t match the 1520 plotter (480,999) but that’s easily taken care of by scaling the coordinates by a factor of 1.5.
  • The program includes several functions to plot contained in REM statements. I broke those out into a menu system so you can choose a function to plot.
  • I eventually matched Rizthomas’ color choices by making horizontal lines blue, vertical lines green, bounding box green and text black (on the plot only).
  • The origin of the plotter (current pen location at start) is (0,0). Below that point is the negative Y axis so you need to advance the paper up by 300 and then send the “I” command which sets a new “relative origin” point. Now the coordinate systems match screen coordinates (bottom left is (0,0)). Sending the command “R” instead of “M” for moving (pen up) will now use the new relative origin as does “J” instead of “D” for drawing (pen down). The 1520 manual is a great resource to understand the coordinate system of the plotter.

3d 1520 plots

You can download the program (and required ML program) here.

The nice thing about the program is that it will draw a line on the screen while drawing it on the printer simultaneously so you can see both evolve together. Enjoy and a big thanks to Rizthomas for the pointers to the code! If you’re able to get it working, let me know in the comments (and let’s see what you plotted).

Here’s a quick Vine of the plotter working:

DIY RS-232 Interface for Commodore C64 for under $15

If you have a Commodore 64, chances are you’ll eventually need to connect a modem or other serial device to it. You’ll find that’s not quite that easy since the C64 doesn’t have a standard RS-232 serial port. What it does have is called the “user port” and it can do serial over this port but it needs to be changed from TTL levels (0 to +5v) to RS-232 levels (-15v to +15v).

If you’ve ever attempted to purchase a VIC-1011a terminal type, SwiftLink or Turbo232 from eBay you’ll quickly find out that the price gets out of hand. Expect to pay upwards of $100 or more for these adapters.

Luckily, there’s an inexpensive way to get a RS-232 port on your C64 and it’ll cost you less than $15. Ready?

You’ll need these parts for the project.

Connect the RS232-TTL module directly to the C64 user port edge connector using the table below.

RS232-TTL Module C64 User Port

Update! Alwyz from 1200baud suggested that connecting VCC isn’t necessary and potentially dangerous. I’ve had zero problems with mine as listed here. I’m providing this warning so you can make your own decision!

C64 RS-232 Adapter

Observe which side of the user port connector is the top (it’s the one with numbers– letters are on the bottom). It’s helpful to write on it with marker. For wire I used female jumper wire that I cut one end off. For GND and RXD you’ll need to jumper two of the pins together on the user port connector. I used a small bit of CAT5 solid core wire.

Once you’ve got it connected, add the null modem adapter and connect your modem. You may need to also use a gender changer and/or a 9 pin to 25 pin adapter depending on your modem.

Fire up CCGMS, Novaterm or Striketerm, set the baud rate to 2400, set the port to the user port and give it a few “AT” commands. You should see “OK” being returned. If it doesn’t, make sure you have a null modem adapter (test it on another machine to confirm) and double check your connections.

As with any tutorial you find online, be responsible and double check my work and your work before proceeding.

How to get software to disk for your Commodore 64

Commodore 64It’s a question that pops up from time to time on forums from Lemon64 to Reddit C64.

“Yes! I just got a Commodore 64!! Now how do I get disk images onto disk so I can do something?”

It’s not straight forward. Folks in the Apple II world have a fantastic program called ADTPro that can work over a simple audio cable connected to your laptop headphone and microphone jack (or serial). Doesn’t get any easier than that.

On the Commodore, disc images are stored in .D64 format which is an image of a standard 1541 floppy. Most software you find is available this way. You may also find .D71 and .D81 which are for 1571 and 1581 formats but these are less common. A great place to find C64 software is the Search. Once you have your disk images, you’re ready to make some floppies. Below are some of the options to “burn” disk images for your Commodore 64.

uIEC/SD2IECuIEC/SD2IEC ($50-60) is probably the easiest overall solution. With this small device, you can load .D64 images from your Mac or PC onto a SD card. Inserting into the uIEC, it will show up to the C64 as an extremely large volume. But merely having a .D64 image doesn’t get you very far– you need to “burn” the image to a real floppy. Fortunately, there’s D64it which can do just that. It’s a little slow as the author admits, but it gets the job done. Things are sped up considerably if you have the JiffyDOS ROM ($20) installed in your C64 since the uIEC is JD compatible. Don’t forget a 6-pin IEC cable!

64NIC+64NIC+ ($50-59) adds Ethernet capability to your Commodore 64 as well as a ROM socket that can accommodate up to 256kB ROMs. With networking capability, now you’re able to use WarpCopy64 which can upload and download entire disc images to your PC. There’s a bit of a chicken and egg problem here since you’re going to need WarpCopy64 on disk first before you can create new disks.

ZoomFloppyZoomFloppy ($35) is a great solution to connect your Commodore 1541 to your Mac or PC via USB. ZoomFloppy is a modern version of the “X” series cables which required an old PC with a parallel port plus knowledge of IRQ and ports (see below). After installing OpenCBM software on your Mac or PC, you can read and write D64 images quickly and easily– no fuss. Hands down, this is my preferred way to read and write floppies.

If you’re lucky to have a terminal program already on floppy on your C64, you can do the serial route. Of course, you’ll also need an adapter that plugs into the C64 user port to give you standard RS-232 signals. These can be difficult to come by if you don’t have one, like the Commodore made VIC-1011a. One could also build this USB to RS-232 interface for your C64 for $15.

If you have a PC that’s old enough to have a parallel port on the motherboard, you might have good luck with “X” series parallel cables. These cables connect your parallel port to the IEC port of a 1541. From there, you can run Star Commander in DOS mode to read and write files and images. I started using this method years ago but abandoned it for the ZoomFloppy.

So there you have it. There’s no shortage of solutions and every solution is most likely going to cost you something. But each is a great investment and keeps the scene going with folks creating new methods. This list isn’t exhaustive– if you know of one or have experience with any of these, leave a comment!

Reddit r/retrobattlestations Commodore 64 Port

For the next two weeks, it’s BASIC Week 2 at Reddit r/retrobattlestations. You can participate with your Commodore 64 or at least play along with your favorite emulator. I’ve ported the code to the C64 and you can get the code from the thread on Reddit. Or you can download the D64 image here to make your own disk or to use with an emulator like VICE.

Have fun!

DIY C64 Diagnostic and Dead Test Carts

If you’ve ever attempted to repair a dead Commodore 64 beadbin, you know how frustrating it can be. You’re lucky if the machine turns on and shows something on the screen. This at least gives you some clues as to the problem. However, more often and not, you’re stuck with a blank screen. It doesn’t tell you much other than just about any chip in the computer is bad, or even a bad power supply. After checking the obvious things like missing chips, reseating socketed chips and checking the power supply voltages, the next place to go would be one of the two diagnostic carts that were available from Commodore service technicians.

The two test carts that were available are the C64 Diagnostic cart and the C64 Dead Test cart. Together, these carts are very useful in identifying problems. In order to use them, you need them in a cartridge. The diagnostic cart also had a cable harness that would test certain ports– it’s not required but will report false problems if not present. If you’ve followed my posts, you’ll know that I have a tutorial on how to convert an existing cartridge into a EPROM carrier board. In this case, instead of creating a 24 to 28 pin adapter, I’ve purchased the Retro Innovations 2364 Adapter for $5. It’s well worth the price.

In both cases, I’ve used a Commodore cartridge with ASSY # 326173-01. The thing you’ll find odd about the picture is the carts look completely different but have the same ASSY number. The good news is they behave the same way.

There are solder jumpers on the cart labeled J1 through J5. These control certain lines on the cartridge port that tell the C64 what type of peripheral is connected. Below is a table of the settings for the two carts.

C64 Diagnostic Cart Jumpers
J1: Closed (ROMH)
J2: Open (ROML)
J3: Open (GAME)
J4: Closed (EXROM)
J5: Open (I/O 2)

C64 Dead Test Cart Jumpers (Ultimax Mode)
J1: Open (ROMH)
J2: Closed (ROML)
J3: Closed (GAME)
J4: Open (EXROM)
J5: Closed (I/O 2)