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.

A new dust cover for the Sony PS-F5 turntable

Sony PS-F5 and new dust coverIntroducing the Sony PS-F5– a very unique turntable created in 1983 around the same time as the Walkman. It was arguably the beginning of Sony’s own burgeoning portable music craze. It unfortunately wasn’t the same success as the Walkman. Production was halted and the remaining inventory was quickly sold at a discount and largely forgotten along with the records they played from the late 80’s through the late 2000’s.

With the resurgence in the popularity of vinyl recently, the player has come back into fashion. I randomly discovered it through an eBay search and saw that they were a very sought after item, commanding a premium price for a working model. Prices were anywhere from $100-200 US if broken, skyrocketing to $300-$600 or more for a working model. Accessories, the original box, manual, carry case, etc. all increased the price.
3D Printed Dust Cover for Sony PS-F5
One item that is usually missing from the turntable is the U-shaped dust cover that went over the top. These were probably easily lost or even broken over the 30+ years. Since there is not source for original dust covers any longer, I took it upon myself to recreate the dust cover for the Sony PS-F5 and make it available for sale on Shapeways (a 3D printing manufacturer). You can purchase the dust cover in black or white strong and flexible plastic.
Sony PS-F5
Link to Sony PS-F5 Dust Cover on Shapeways

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 mbasic.com
% 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
25 PRINT I;
30 POKE 56577,I
40 FOR J = 1 to 350:NEXT J
50 NEXT I

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.

Guest DJ Set On WVUD 91.3FM

I’ve been invited to have a guest DJ set for All Tomorrow’s Parties on WVUD 91.3FM in Newark, DE. It’s simultaneously exciting and terrifying. The theme is synthpop, new wave and the Fairlight CMI. I’ve attempted to put together some cuts that I enjoy myself while trying to weave some threads through the artists.

I’ll be on Tuesday June 23, 2015 from 7:00pm to 9:00pm EDT.

Commodore 1520 Plots .SVG Images

Commodore 1520 Plots SVG FilesI’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

Riz1520_Plots00011Recently 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:

Using Prowl to Announce IP Address of Raspberry Pi on iOS

Prowl on iOSIf you use your Raspberry Pi without a keyboard and monitor, you know how frustrating it can be to use it without knowing it’s IP address. By default, the Raspberry Pi is configured to use DHCP to obtain an IP address. This is great for moving the unit around to different networks but can be annoying when you want SSH to the unit. Typically you can use the zero-config/Bonjour “raspberrypi.local” address but this doesn’t always work. I’ve instead come up with a way to use Prowl to notify me of the current IP address after it boots. As a bonus it works with either an Ethernet or WiFi (or both) connection.

Prowl is a Growl push notification service for iOS. It costs $3 and is available from the iTunes App Store.

1. The first step is to download and install Prowl and setup an account. Next, obtain an API key from Prowl. Copy the API key– you’ll need to insert it into a script below.

2. Next, create two files in your home directory (/home/pi/) called prowl.sh and prowlip.sh. Insert the API key into prowl.sh as shown.


File: prowl.sh from koma5 on github.

#! /bin/sh
# Usage: ./prowl.sh priority(-2 to 2) app event description
# Example: ./prowl.sh 0 "transmission" "torrent has finished" "Coen Brothers Compilation has finised downloading"
app=$2
priority=$1
event=$3
description=$4
apikey=PASTE_YOUR_HEXADECIMAL_API_KEY_HERE

if [ $# -ne 4 ]; then
echo "Usage: ./prowl.sh priority(-2 to 2) app event description"
echo 'Example: ./prowl.sh 0 "transmission" "torrent has finished" "Coen Brothers Compilation has finised downloading"'
else
curl https://prowl.weks.net/publicapi/add -F apikey=$apikey -F priority=$priority -F application="$app" -F event="$event" -F description="$description"
fi


File: prowlip.sh with apologies to original author.

#!/bin/sh

eth=`ifconfig eth0 | awk -F':' '/inet addr/&&!/127.0.0.1/{split($2,_," ");print _[1]}'`
wlan=`ifconfig wlan0 | awk -F':' '/inet addr/&&!/127.0.0.1/{split($2,_," ");print _[1]}'`

if [ "x$eth" = "x" ]; then
eth=""
# Variable is empty
else
eth="eth0: $eth "
fi

if [ "x$wlan" = "x" ]; then
wlan=""
# Variable is empty
else
wlan="wlan0: $wlan"
fi

/home/pi/prowl.sh 0 "Raspberry Pi" "IP Address" "$eth$wlan"


3. Set both files to executable by typing

chmod 755 prowl.sh prowlip.sh

4. Add this line to /etc/rc.local before the “exit 0” line. This will execute the script at startup.

/home/pi/prowlip.sh

5. Reboot your Raspberry Pi and you should receive a push notification from Prowl on your iOS device with the current IP address(s).