Monday, February 20, 2017

Playing Ultima V with Passport MIDI Music on a Real MT-32

I've been playing Ultima V in DOSBox for a while now and am almost through with the game. Just a few days ago, a friend told me that Brendan Robert's Java Apple Computer Emulator (JACE) now has support for configurable MIDI OUT. This means the Passport MIDI support already built into JACE can be redirected to whichever MIDI player you have. I've been using the Roland MT-32 on most of the games I play with DOSBox, but never with Ultima V.

This assumes you already have a working Windows setup for playing MIDI music on your MT-32. In addition having Munt would be good for testing and troubleshooting.

Most of the same steps will apply on a real Apple II if you have the real Passport MIDI card, or a2heaven's modern version of it.


1. Install JACE

You can get the JAR file from Follow the install instructions, including Java JRE installation if you don't have it yet. Double click the JAR file and it should run up to the following screen:

2. Add Passport Midi Interface to an empty slot in the computer

Hit F4, go to Computer | Slot 4 | and select Passport Midi Interface. Click Apply.

3. Select CoolSoft MIDIMapper as your Midi Output Device

Go to Computer | Extended 80-col card | Passport MIDI Controller | and select CoolSoft MIDIMapper. Click Apply. Click Save.

It's this setting where you should also see your USB Midi Cable or MT-32 Synth Emulator (if you have Munt installed) listed as options. You can try these settings out first instead of CoolSoft MIDIMapper and skip ahead to Step 5.

I tried using the USB Midi Cable setting first, but JACE and Ultima V didn't work using that setting. I kept getting the "UNABLE TO START MUSIC" error message:

My best guess is that the driver for the USB Midi Cable I have is old.

The workaround I found is to install CoolSoft MIDIMapper to act as a "wrapper" for my driver. The assumption is that CoolSoft is a properly certified / newer driver, and so is recognized and works well with JACE and Java.

You can get CoolSoft MIDIMapper here:

4. Select USB Midi Cable as your output device on CoolSoft MIDIMapper

5. Run Ultima V

6. Configure voices

Go to Activate Music | Music Configuration | Change Music Configuration | Slot 4 | and press G to add Passport MIDI.

Press enter to configure voices. You move the cursor to the field you want to change and just type in the number then Enter. You should change MIDI Channel to 2, and Number of Voices to 32.

The MT-32 by default does not listen on Channel 1.

I used the MT-32 instrument list provided in the link below to find the right MIDI number:

Note that the list starts at '1' while Ultima V starts with '0' so you'll have to subtract 1 from the number you get on the list when you enter it into Ultima V.

You can hit Enter on an instrument line to hear a preview of the instrument you selected. You should also see the instrument you chose on the LED display on the MT-32.

Most of the voices have a direct match, except maybe for the Lute - which I set to play a Harp (57), and Full Orchestra - which I still don't know what the best setting is for. Right now it's set to Orchestral Hit (122) which doesn't sound quite right, so I might just switch this to Brass Section (95 or 96).

Technically, you can also send new instrument patches for Lute and Full Orchestra using sysex messages.

Once you're happy with your instrument choices, hit ESC, select Save Music Configuration, then select Return to the Game.

That's it! Now go get the bell book and candle. Oh wait we've done that already...

tl;dr Nothing beats real steel.

Wednesday, January 25, 2017

Replacing SIMM Sockets On An 8MB MDIdeas OctoRam Card

Some time ago, a friend gave me this 8MB RAM card for the Apple IIGS. There was nothing wrong with it, except that three to four of the little plastic clips that hold down the SIMMs to the sockets were broken. This rendered the card unusable.

In order to fix the sockets properly, you are going to need a few things:
  1. A good desoldering tool. I highly recommend the Hakko FR300.
  2. Replacement 2x30 SIMM sockets. I ordered four from here:
It may also help to have some solder paste, and keep your soldering gun and solder handy.

Before we begin, take out all the SIMMs:

You can see that two of the plastic clips are broken (see lower left of picture):

Here's a closer view:

This shows the broken clip on the top slot, and the almost broken-off clip on the bottom slot.

The replacements! These ones come with a metal clip, so they should last a bit longer than the original ones. I think they are the same SIMM sockets used on the Briel Computers RAM card.

And so we begin. I put some solder paste on the 60 pins on the first socket to help with the flow, and did a first pass with my brand new desoldering tool. I used a 650oF setting. Not bad, but not completely clean:

I did a second pass with the desoldering tool, and tried to pop the socket out with a small screwdriver. The socket came out with a little pop... probably not a good sign!

You might notice from the photo that the solder holes on the first socket are not completely clear of solder. More on this later...

Test fit to make sure the replacement SIMM socket is a match. All the 60 metal pins align, and the two plastic nubs at the bottom align with the holes on the card as well.

 The second socket went a little easier as I was getting the hang of using the tool.

And within a few minutes, I was able to remove the third socket.

The fourth one took a while, because the desoldering tool lost its vacuum power. I thought at first that I just needed to replace the filter, but it turns out that the nozzle got jammed.

You can tell that the nozzle is jammed if you can't insert the cleaning pin all the way through the nozzle (and up to the solder receiving chamber). I had to break out my drill and a 0.7 mm drill bit, and simultaneously heat the nozzle, activate the vacuum, and drill the hole through the nozzle to clear the jam. And with my fourth hand...

Subsequently I was able to remove the fourth socket.

I almost got it out perfect, but not quite. It turns out one of the pins had not been totally desoldered, so when I popped the socket off... one of the vias popped off too, carrying a fair bit of the trace with it. It comes as no surprise that this pin / trace was one of the ground pins. I carefully pushed it back into the hole and I flattened the trace as much as I could, and tested continuity between the top and bottom of the board.

You can see evidence of this at the top left row:

Some minor scratches on the bottom. A careful continuity test on the traces involved showed that all connections were still good.

The easy part was slotting in the replacement SIMM sockets, and soldering them in place:

After seating the SIMMs in, a quick boot confirms the RAM is found:

And the ultimate test is to run some memory tests overnight.


A few lessons learned:

  • Be patient with the desoldering process. Do not pry the sockets off!
  • Make sure to have a strong vacuum going on your desoldering tool. Stop work if necessary to replace the filters and clear any jams to ensure that you have a 100% working tool.
  • As described in the user's manual, heat only the pin, not the base of the connections. Once the solder melts (easy to see as the solder paste will melt too)... quickly push the nozzle down over the hole to create a stronger vacuum for the tool and activate the tool vacuum. You know you have done this right, when the hole is left completely clean of solder.
  • If not all the solder is cleared / hole is not yet 100% clean, resolder the hole with some new solder, and try to desolder again.
  • When done properly, there is no need to pop the sockets out. They fall out on their own.

Lastly, don't assume that, just because the SIMMs came with the card, that all the SIMMs are 1MB. :) It turns out I had received a mixed bag of SIMMs containing both 1MB and 256kB SIMMs. This is a version of what you'll get when you try to boot with mixed memory:

tl;dr The Hakko FR300 is an essential tool for any rework.

Wednesday, January 11, 2017

How to fix an Apple 3.5" drive that won't eject

I got two of these Apple 3.5" drives from eBay. One of them worked perfectly. The other one was able to read and write to the disk, but the eject button did not work (either manually, or from the desktop), and the disk activity light did not go on. I was able to eject disks using a small hex tool I inserted in the manual eject hole on the front of the drive. I did this for a while but decided it was time to try and get it fixed.

First things first. Open the drive and get to the related parts. One of the more common failures with the eject mechanism is the gear failing. You can order a 3D printed gear from Shapeways, so if it's the gear that's the problem this would be an easy and cheap fix.

Here is the drive after the bottom four screws and the single screw holding the back cover plate are removed:

Disconnect the ribbon cable holding the back cover plate and interface cable. Long nose pliers and a good grip on the edge of the connectors should do it.

You can disconnect the other ribbon cable going to the drive assembly using the same technique. Once the cables are disconnected, you can push the entire drive assembly out through the front of the metallic casing.

To see the gears, you will have to remove the disk eject motor assembly. It's located on the lower right next to the tracking motor. It consists of the motor and a little PCB with a frame holding the gears. It's held in place by two black screws.

Warning: Make sure you do not touch or bump either the drive heads or the tracking motor!

Here is the eject motor assembly after removing the two screws. Hmm the gears look fine!

Since the gears are fine, the next step is to check if the motor is okay. You can free the motor by releasing the three plastic retainer clips at the top. Start with the clip closest to the connector... the motor should tilt up a bit as shown in the photo below:

You will also need to carefully pry off the little PCB... it's held down by two retainer clips similar to the ones holding down the motor. Here is the motor and PCB after it's freed from the clips.

Once you have access to the motor, see if you can turn the motor's axle with the little gear. In this case it was sort of stuck. I couldn't easily move it by hand so I had to apply a little bit of pressure first using a pair of long nose pliers. Once I got it going, I could turn it by hand but it felt like it was going against some really heavy grease...

Solution? Break out your WD-40. Be careful not to get any of it on the plastic parts / wire. A short squirt into the two holes below should be sufficient. Give it a few minutes then give it a few turns again using just your hand. It should now move fairly easily with just the usual resistance from a DC magnet.

Once it's moving smoothly, leave the motor overnight upended on a piece of paper towel to make sure any excess WD-40 drips out and onto the paper towel, and not onto your gears and drive interior and desk later on. :)

If you were like me and got too excited and plugged it in right away to test it, no worries. Just disassemble it again and wash just the plastic frame and gears (shown below) in dishwasher liquid. Pat down as dry as you can and also leave to dry overnight.

Once everything is nice and clean and dry, reverse the steps to reassemble the drive.

It works!

Except the eject button on the front of the drive still doesn't work, and the disk activity light is still not lighting up.

We've fixed the eject motor, but still need to figure out why the eject button and LED don't work. This could either be (a) bad connector, (b) bad wires, (c) bad switch / LED, or (d) bad drive electronics.

A simple continuity test ruled out (b) and (c). From my initial testing as well, it didn't seem to be a bad connector. More on this in a minute.

To test the drive electronics, you can reassemble the drive, hook it up with the back exposed, and short the two pins on the black plug below to see if it initiates an eject sequence. In my case it did. Eject drive electronics check!

To test the LED, you will have to hook up the pins on the red plug above to a known working LED. It gets tricky since the plug is really small, so I had to make a custom plug to get two leads in there. If you are up for it the other way is to solder two wires to the underside of the board where the solder points are - just remember Pin 1 = red.

Guess what, mine worked too. LED electronics check!


We know the switch and LED are okay, and the circuits controlling it are okay, and the wire connecting both are okay... so what's going on!

I popped open the eject and LED connectors to get a better look at what is happening. For some reason, the plugs were not making contact with the pins!

I even tried to use Deoxit on both the connector leads and the receiving / male pins on the board... maybe the contacts were just oxidized?

Same result.

So we were stumped... until Jon noticed the black and red plugs were pulled out from the pins! They were pulled out when I was unplugging the connectors.

It was just a simple matter of pushing the plastic connector housings in until the edges were almost flush with the board. Plugging in the connectors now had a satisfying "snap" as the electrical crimps slid into the receiving pins.


It took a bit more time than I expected, but I'm really happy I now have a perfectly working Apple 3.5" Drive.

tl;dr WD-40 rocks!