BMOW title
Floppy Emu banner

Archive for the 'Macintosh Floppy Emu' Category

Apple IIgs ROM 03 Headaches

Apple_IIgs_002

I’m still chasing an explanation for why some Apple IIgs computers won’t play nicely with Floppy Emu’s new 800K 3.5 inch Apple II disk emulation. I described the symptoms in my previous post – ProDOS and GS/OS disk images boot straight up on my IIgs without problems, and on most other IIgs systems, but for a couple of people it just hangs forever in the READ state on track 0. Both people who reported this have the relatively rare ROM 03 version of the IIgs, so I’m assuming it’s a compatibility problem between ROM 03 and the more common ROM 01. But what’s the problem exactly? And how can I fix it?

The biggest obstacle at the moment is lack of information. I don’t have a ROM 03 machine, and I can’t find one anywhere, so I can’t troubleshoot this myself. I’ve exchanged emails with two ROM 03 owners who are willing to help, but so far I’ve only gotten detailed information from one, and one data point isn’t enough to draw any conclusions. What seems like a compatibility problem might just be a hardware issue with one specific computer or Emu board.

Despite working mostly in the dark while trying to solve this, I have some theories about what might be going wrong.

 
Crazy WRPROT Circuits

There are documented incompatibilties between ROM 03 and some real Apple 5.25 inch floppy drives, although the details are fuzzy and sometimes seem contradictory. According to this section of the Apple 2 wiki, ROM 03 is not compatible with the Apple UniDisk 5.25 or DuoDisk. The explanation seems muddy, with two paragraphs that appear to offer two unrelated explanations, but one of them is related to the circuitry behind the drive’s WRPROT (write protect) signal. This is the signal that indicates whether the disk in the drive has the write-protect notch covered – remember those? According to the wiki, “incompatible drives on these models will just spin at startup.” Sounds a lot like what’s happening with Floppy Emu.

There’s also this Apple Tech Info document about ROM 03 and DuoDisk, with a symptom that sounds similar: “The DuoDisk LED for drive #1 will turn on, but the system will not start.” It doesn’t give an explanation, but mentions that booting from a write-protected disk works normally. Again, something about ROM 03 and write protection.

Check out this partial functional diagram of the Disk II 5.25 drive. Notice anything odd about the write protect signal?

DiskII_Functional_Diagram

There’s a tri-state buffer for the WRPROT output, controlled by the drive’s ENABLE input. Behind that is a pull-up resistor, and the switch that senses the notch in the disk. But instead of ultimately terminating at GND, the write protect circuit is connected to the drive’s PHASE1 input. When the computer sets PHASE1 to 0, it can then read the WRPROT state as 1 = write protected, 0 = not write protected. But if the computer sets PHASE1 to 1, it effectively disables the whole write protect circuit, and WRPROT will always be 1.

My theory is that ROM 03 has some 5.25 inch drive detection code that sets PHASE1 to 1 in order to disable the circuit, and then waits for WRPROT to go to 1. But if the disk drive has its write protect circuit terminated directly to GND instead of PHASE1, it won’t be disabled, so WRPROT will never go to 1 and the computer will wait forever, unless the disk is actually write protected. My hunch is that the DuoDisk is built this way, which explains why it doesn’t work with the ROM 03 IIgs.

 
Floppy Emu’s Identity Crisis

Now what does any of this have to do with Floppy Emu’s 800K 3.5 inch Apple II disk emulation? After all, it’s emulating a 3.5 inch disk, where WRPROT behaves completely differently and this issue presumably isn’t relevant. Remember in my last post, when I described how the current design lacks connections for some enable signals used to distinguish between 3.5 inch and 5.25 inch drives? I had sort of dismissed it as not a problem, but my theory is it’s causing Floppy Emu to be identified as a 3.5 inch drive and a 5.25 inch drive. And when it’s identified as a 5.25 inch drive, WRPROT is not going to respond to PHASE1 in the expected way, which may cause a bootup hang on ROM 03 just like with the DuoDisk. My guess is that ROM 01 sees a misbehaving 5.25 drive and ignores it, but ROM 03 sees a misbehaving 5.25 drive and hangs forever, before ever attempting any 3.5 drive access.

The solution is simple, if annoying – use some external circuitry to handle all the enable signals, so Floppy Emu isn’t accidentally detected as a 5.25 inch drive. My last post sketched out a circuit to do this job, and I’m going to build some PCBs to test it. Meanwhile, using the daisy chain board removed from an AppleDisk 3.5 (A9M0106) floppy drive should accomplish the same thing.

SteveP, one of the ROM 03 owners I’ve been corresponding with, tested this theory. He used the A9M0106′s daisy chain board to connect Floppy Emu to his ROM 03 IIgs. And it worked! Sort of. The computer no longer hung at track 0 while attempting to boot. He was able to boot successfully into ProDOS. And he could begin to boot into GS/OS, but then it would fail with errors like “Unable to load START.GS.OS file. Error=$002E” or “UNABLE TO LOAD PRODOS”. So is there another ROM 03 compatibility issue at work here, or does he just have some flakey hardware or some other unrelated problem? With only this one report to go by, I can’t say, but I’ll keep digging.

Read 5 comments and join the conversation 

More Fun with Apple IIgs Disks

daisy-chain-circuit

Last week I wrote about Apple II 800K disk emulation for Floppy Emu, which I used to boot my Apple IIgs. I posted the new Apple II firmware, so anybody with an Emu board and a IIgs could try it for themselves. Now I need help from anyone with the necessary hardware – could you take a few minutes to try it out, and let me know the results? I need as much information as I can get about compatability with different ROM versions and system configurations.

On my IIgs (ROM01 with 512K RAM and no other cards), I can connect the Floppy Emu to the DB19 port, load its Apple II firmware, and it works fine as Apple 3.5 Drive #1. I can boot the IIgs from it, using either ProDOS or GS/OS disk images. I can read and write to the emulated disk, eject it and insert a different disk image, no problems. The only limitation is that the Emu can’t be daisy-chained behind an Apple 3.5 Drive, making it 3.5 drive #2. This is because the extension cable I use, as well as the Emu itself, lacks two enable signals that are important for daisy-chaining.

Yesterday I heard from somebody for whom the Apple II firmware isn’t working correctly, on a ROM03 IIgs. He’s got the Emu board connected directly to the DB19 port on his IIgs, and is using the Floppy Emu Apple II firmware, just like my setup. But he can’t boot from the Emu: a ProDOS floppy image just hangs, and GS/OS floppy images start to boot, but eventually fail with errors like “Unable to load START.GS.OS file. Error=$002E” or “UNABLE TO LOAD PRODOS”. If he boots GS/OS from a hard drive while the Emu is attached, he sees an error about the “AppleDisk3.5 driver” midway through boot-up. They only thing that works is booting ProDOS from the hard drive, then doing CATALOG,S5,D1 to view the contents of the Floppy Emu disk.

Why does this work so poorly for him, when it works well for me? We’ve stepped through troubleshooting ideas by email, including removing the hard drive and other cards, but nothing seems to help. At this point, I think we’ve narrowed it down to either being a hardware problem with this specific Emu board or IIgs, or else a behavior difference between ROM01 and ROM03. That’s why I need as much info as I can get from other Floppy Emu users who’ve tried this firmware on their IIgs.

 
Apple II Disk Daisy Chaining

Fortunately there’s some good news among all of this. Remember those two enable signals I mentioned, important for daisy-chaining, but not present on the Emu or Emu cable? Yesterday I put together a hand-made DB19 to IDC20 adapter on a breadboard, along with an external logic chip, and got the Floppy Emu working successfully while daisy-chained as 3.5 drive #2. The adapter is the rather unattractive jumble of wires you see in the photo at the top. While it’s of no immediate value to anybody, the fact that this adapter works seems to confirm that my understanding of all these crazy Apple disk enable signals is correct.

Here follows a long boring discussion of enable signals. Refill your coffee now.

EPSON MFP image

On a Macintosh, pin 17 of the DB19 floppy connector is the drive enable signal. When it’s low the drive is enabled, and when it’s high the drive is not enabled. Only one floppy drive can be connected, so there’s only one enable signal.

On an Apple II, things are more complicated. The Apple 5.25 controller card was the first to use a DB19 connector, and it supported two daisy-chained 5.25 inch drives. Pin 17 is /DRIVE1 enable, and pin 9 (unconnected on the Macintosh) is /DRIVE2 enable. Within each drive, internal circuitry routes the signal from input pin 9 to output pin 17 on the daisy-chain connector. Drive #2 doesn’t actually know that it’s drive #2 – it enables itself by observing /DRIVE1 on pin 17, just like the first drive – only the first drive has sneakily rerouted /DRIVE2 to /DRIVE1. This allows for two drives to be daisy chained.

On an Apple IIgs, it’s even more complicated. Its DB19 connector supports daisy-chaining two 3.5 inch drives, and two 5.25 inch drives – as well as even more SmartPort drives, which I won’t discuss now. Pin 4 (GND on the Macintosh) is /EN3.5, a new signal that enables the 3.5 inch drives when it’s low, or the 5.25 inch drives when it’s high. The 3.5 inch drives must appear before any 5.25 inch drives in the daisy chain. When /EN3.5 is low, the 3.5 inch drives use pins 17 and 9 to enable themselves, and when /EN3.5 is high, the 3.5 inch drives pass through the signals on pins 17 and 9 unmodified to the 5.25 drives behind them.

This is getting complicated, but there’s one final kick in the nuts: when the first 3.5 drive is enabled, by the IIgs setting /EN3.5 and /DRIVE1 both low, you would think the drive would disable the next 3.5 drive behind it by setting both /DRIVE1 and /DRIVE2 high at the daisy-chain connector. But no, the first 3.5 drive disables the second 3.5 drive by setting both /DRIVE1 and /DRIVE2 low! This looks like both are enabled at the same time, which would be a definite no-no, but the Apple 3.5 Drive contains circuitry that recognizes this “double enable” as being equivalent to a disable. Why it’s done this way, I don’t know, but I’m sure it has some purpose.

The end result is that for proper behavior in either first or second position, a Floppy Emu trying to emulate a 3.5 drive should respond only if /EN3.5 and /DRIVE1 are low and /DRIVE2 is high. All three signals must be checked.

Floppy Emu doesn’t have connections for /EN3.5 or /DRIVE2, so it responds whenever /DRIVE1 is low. When connected as a second 3.5 drive, that means it’s unable to recognize the “double enable”, and it responds at the same time as the first 3.5 drive, so neither of them work properly. But when connected as the first 3.5 drive, there’s no double enable to worry about, and /DRIVE2 can be safely ignored. Ignoring /EN3.5 does mean the Emu will also respond to attempts to access 5.25 drive #1, but since there is no such drive anyway, that’s not really a problem.

 
Building an Adapter

So how can we solve this mess, without requiring a new version of the Floppy Emu? The solution I’ve used is to combine the /EN3.5, /DRIVE1, and /DRIVE2 signals externally, and feed the result to the Emu’s single /ENABLE input. I used a 74LS138 decoder chip to do this, configured to drive a single output low only when the inputs are 0, 0, and 1 respectively. You could accomplish the same thing with a few OR and NOT gates as well. Here’s a schematic:

EPSON MFP image

At some point in the future, I’ll probably manufacture and sell some adapter boards like these. The best way to put the idea into production isn’t obvious, though. This adapter design has 3.5 inch specific functionality baked directly into its circuitry, and it would be wrong if you were using the Floppy Emu to emulate a 5.25 inch or SmartPort disk, or a Mac disk. It would be annoying if people had to attach and remove an adapter every time they wanted to change what type of disk they were emulating. Maybe I could put a switch on the adapter, to select between 3.5 inch and other emulation modes, but that would be annoying too and would add further to the hardware cost. Nobody wants to flip an external switch – they want to select an emulation mode, and just have it work.

Another uncertainty is what form this adapter would take. Should it be an inline adapter, with an IDC20 connector for input and another for output? That would work, but it would mean Apple II users would need a DB19 to IDC20 extension cable, and an adapter – two different things to connect between the computer and the Emu board. A better solution is probably to make a new version of my DB19 to IDC20 extension cable, that has the adapter circuit and switch built into it. But that would drive up the cost by a few dollars – so would I continue to sell the old cable as well, or encourage everyone to buy this new, more capable but more expensive cable? If I sold both cables, would I get tons of email from people confused about which one to buy, or upset because they didn’t understand they needed a specific cable to enable specific types of emulation?

There’s another matter too – for most purposes the DB19 and IDC20 connectors are interchangeable, and there’s a standard pin mapping between the two, shown above. But the /DRIVE2 signal on DB19 pin 9 was only ever used in DB19 cables, and there is no standard mapping for it on the IDC20 connector. So how can I even physcially route that signal on a 20-pin ribbon cable? I could substitute it for one of the existing signals I’m not currently using, like one of the +12V supply lines. That would be fine for Floppy Emu and my adapter boards, but someday someone would surely use one of my cables to do something strange, like connect a Disk II to an Apple IIgs. Then they’d get +12V from the Disk II feeding backwards into the computer’s /DRIVE2 output, causing it to burst into flames and burn down their house.

Sometimes I think about things too much. :-)

Read 2 comments and join the conversation 

Apple II 800K 3.5″ Disk Emulation

emu-on-iigs

Good news, Floppy Emu fans: 800K 3.5 inch disk emulation for Apple II is now working! More good news: it doesn’t require any adapter or other hardware, and it looks like the planned 5.25 inch and SmartPort hard disk emulation for Apple II won’t require an adapter either, save for one case as described below. Just plug your Floppy Emu board into the Apple II, load the new firmware, and go.

The new Apple II firmware supports Apple 3.5 Drive emulation of 800K ProDOS disks, and so is primarily of interest to Apple IIgs owners, though it should also work on an older Apple II with the appropriate disk controller card (not common), or the rare Apple IIc+. It works when the Emu board is plugged directly into the Apple II, making it drive #1. My IIgs machine “Gary” is now happily booting GS/OS directly from the Floppy Emu.

 
Apple 3.5 Drive

The Apple 3.5 Drive uses the same 800K Sony floppy mechanism as the early Macintosh models. Because Floppy Emu already supported emulation of 800K floppies for the Mac, I was fairly sure it would be possible to do it on the Apple II as well, but the details eluded me for a while. Inside the Apple 3.5 Drive, there’s an extra board called the daisy chain board that’s not found on the Mac, and it was this board that made things difficult. My previous posts on this topic mentioned semi-mysterious signals called /EN3.5 and WRPROT that don’t exist on the Mac.

As it turns out, the only change that’s strictly necessary is that the drive’s RD output (pin 16 on the 20-pin ribbon connector) should also be connected to pin 20. That’s it. On a Mac, pin 16 is internally connected to both the RD and SENSE inputs on the logic board’s IWM chip. But on an Apple IIgs, pin 16 connects to RD and pin 20 to SENSE, so they must be tied together externally when emulating a 3.5 drive.

For Floppy Emu, I can’t physically tie pins 16 and 20 together, but I can alter the firmware to output the same value on pin 20 and on pin 16, and it works perfectly for the Apple II. But for a Macintosh, pin 20 is the PWM output used to control the drive’s variable rotation speed. This leads us to the first commandment of Apple II firmware for the Floppy Emu:

warning

Warning: Do not connect a Floppy Emu board to a Macintosh while it’s running the Apple II firmware. First connect the Emu board to your Apple II, then install the new firmware. When you want to switch back, reinstall the Macintosh firmware, then move the Emu back to your Mac. Though I believe the risk is low, running Apple II firmware on the Mac has the potential to damage the Emu and/or the Mac.

If you connect a Macintosh to an Emu board that’s running Apple II firmware, both the Mac and the Emu will attempt to drive pin 20. This will cause the output drivers of the two chips to fight each other, possibly damaging them. In the name of science, I tested it for several minutes and didn’t observe any ill effects, but please don’t do it on purpose. A future revision of the PCB will add an inline resistor here to protect against “whoops”, but for now be careful when moving your Emu board between an Apple II and a Mac.

To be clear, this output fighting only happens if you mess up, and use the Apple II firmware on a Mac. There’s no output fighting when using the correct firmware for the correct computer. Even using Mac firmware on the Apple II is fine (though it won’t work). I’m just trying to make things as idiot-proof as possible.

 
Daisy Chaining

In previous posts, I mentioned a signal called /EN3.5. This signal appears on pin 4 of the 20-pin ribbon connector, and is used to enable the 3.5 inch drives in an Apple II daisy chain. But on the Macintosh, as well as on 5.25 inch drives, pin 4 is just an additional GND connection. Both the Emu board and the DB19 to 20-pin extension cables that I sell have pin 4 internally hard-wired to GND. That means there’s no way for Floppy Emu to read the state of the /EN3.5 signal.

“But wait”, you say, “isn’t it bad if the computer’s /EN3.5 signal is connected to an external GND?” Actually it’s fine, and there’s a 470 ohm inline resistor on pin 4 on the logic board or disk controller to cover this exact issue. Remember, 5.25 inch disk drives also have pin 4 hard-wired to GND, and work fine with the Apple II.

“But wait”, you say again, “how can the Floppy Emu emulate a 3.5 inch Apple II drive if it can’t read the state of the /EN3.5 signal?” Ah, good question. The /EN3.5 signal is normally used to deactive the 3.5 drives, so the computer can talk to SmartPort drives or 5.25 drives further down the chain. But since Floppy Emu doesn’t have a daisy-chain out anyway, the /EN3.5 signal is irrelevant. The Emu acts as if /EN3.5 is always asserted. In practice, this means the Emu will also try to respond to any queries for 5.25 drive #1, but its response isn’t valid and is ignored by the Apple II. GS/OS and ProDOS both show that no 5.25 drives are present, which is perfect.

The only case in which an Apple II adapter is needed for Floppy Emu is when daisy chaining it behind a real Apple 3.5 Drive, and configuring it to emulate Apple 3.5 Drive #2. The Apple 3.5 Drive’s daisy chain board uses a little trick to check if pin 4 is GND on the next drive in the chain. If yes, then it assumes that drive isn’t a 3.5 drive, and won’t forward on 3.5 drive control signals from the computer. A small “Apple 3.5 Drive #2 Adapter” board with built-in logic for /EN3.5 and the /DRIVE2 enable signal would fix this, and I plan to offer such an adapter in the future. For now, if you absolutely must have your Floppy Emu configured as 3.5 drive #2, you can remove the daisy chain board from a “donor” Apple 3.5 Drive, and connect Floppy Emu to its internal drive connector, in place of the Sony floppy mechanism.

 
Apple II Firmware

In addition to simply getting emulation working for the Apple II, I added a few other firmware improvements:

  • 2MG image file support! Most 800K Apple II disk images are in 2MG format, though some are Disk Copy 4.2. Now both are supported. 2MG worked on the first try too, which pretty much never happens. :)
  • Pressing the NEXT button will eject the current floppy.
  • The ProDOS disk name is parsed from the disk image data, and displayed on the Emu’s LCD.

You can download this version of the Floppy Emu Apple II firmware here: Apple II 0.1A-F1. Remember the caution mentioned above, and don’t connect the Emu to a Macintosh while it’s running the Apple II firmware.

 
What’s Next

3.5 inch disk emulation is step 1 of 3 in my Apple II plans. Soon to come, I hope, will be 5.25 inch emulation for 140K disks. The Emu can be connected either to the DB19 port on the IIgs, IIc, and Apple 5.25 drive controller card, or to the 20-pin ribbon connector on the original Disk II controller card. Following that, I hope to add SmartPort emulation, making it possible to emulate one or more hard drives of 32 MB each. There are no guarantees, but I’ve looked into the details of both 5.25 and SmartPort emulation, and they’re fairly well-documented and seem within the capabilities of the Floppy Emu hardware.

When I’m done, I hope to have a single device that emulates Apple II 5.25″ floppies (140K), 3.5″ Apple II floppies (800K), SmartPort block devices (like an Apple II hard disk, up to 32MB), Macintosh 400K, 800K, and 1.44MB floppies, Lisa 400K/800K floppies, and the Apple HD20 hard disk up to 2GB. That would make it a real Swiss Army knife of Apple disk emulation!

Read 11 comments and join the conversation 

New Product: Apple Disk Drive A/B Switch

diskdrive-ab-switch

For Lisa computer owners, and Macs with only one floppy connector, disk drive emulation can be awkward sometimes. The Apple Disk Drive A/B Switch aims to eliminate that awkwardness. Available now from the BMOW Store, this board makes it possible to attach a Floppy Emu and a real floppy disk drive at the same time, and select between them with an A/B switch. Both drives will be powered, but the computer will only “see” one drive at a time, depending on the switch position. If you’ve got a single-drive system, and want to work with physical floppy disks and the Floppy Emu without a lot of cable swapping, then this is for you.

The board design is about as simple as it gets. A 20-pin ribbon cable connects the “IN” port to the computer’s logic board. The Floppy Emu is attached to “Disk A” and the real floppy drive to “Disk B”, or the other way around – it doesn’t matter. All of the power and data signals are shared between all three of the connectors on the A/B board, except for the ENABLE signal. By moving the A/B switch, you can alternately connect the computer’s ENABLE signal to either Disk A or Disk B. Both disks also have a 3.3K ohm pull-up resistor on their enable inputs, to ensure they’re disabled while they’re not selected with the switch.

disk-ab-switch-schematic

There was some interest in designing customized versions of this A/B board, so I’ve posted the Eagle design files. The design is released under the Creative Commons BY-SA license, and you’re welcome to use it in your own designs.

Be the first to comment! 

Apple II (Emulation) Forever

a2-edna

On the road to Apple II floppy disk emulation, I’ve picked up a couple of new members for my retrocomputing collection. Above is a classic Apple IIe – let’s call her Edna. The eBay seller didn’t believe much in bubble wrap or other packing materials, so Edna suffered a cracked corner and bent bottom plate during shipping, but she still works just fine. Below is a boxy fellow I’m calling Gary, an Apple IIgs with ROM revision 01. I also picked up an Apple 3.5 Drive and a 5.25 Drive, and some blank double-density disks. None of the computers or drives came with any bootable disks, though – a fact that would soon create trouble.

a2-gary

 
Apple II Video Out

When powered up, both computers beeped and seemed to be working OK, but without a monitor I was working blind. The IIgs has an RGB video port that looks like the video connector on a Macintosh II, but none of my Mac video adapters could get any picture from it. I later learned it’s an analog RGB signal at TV frequencies, not VGA frequencies, and is unlikely to work with anything but a true IIgs monitor or a few other CRTs from the 80′s. That meant I was stuck with composite video for both machines – that yellow RCA plug that harks back to the days of Nintendo NES.

What do you connect a composite video signal to in 2015? I tried my living room TV and it worked fine, but I wanted a desk-sized monitor instead of a 40-something inch HDTV. I tried the composite video input on my Dell 2007WFP LCD monitor, but got nothing but a blank screen. Hmmm. After doing some reading, I learned that the composite video output from the Apple IIs isn’t quite NTSC standard, and the 2007WFP rejects marginal video signals like the Apple’s. The similar Dell 2001FP LCD monitor was reported to work well with Apple IIs and other vintage computer equipment, though, and I was lucky to find someone local selling an old 2001FP. Success! Now, anybody want to buy a used Dell 2007WFP?

 
Bootstrapping with No Disks

With working video, I could boot Edna and Gary, hit control-reset, and have fun typing “STEVE IS GREAT” programs in BASIC. But to really do anything interesting, I needed some disks. For the IIgs, I discovered that you can download a Disk Copy 4.2 image file of IIgs software, use a vintage Mac to write the image to a 3.5″ disk, and the IIgs will happily boot from it. That was great, but it still left me without an easy way of transferring or making 5.25″ disks, or any way of making disks directly with Edna.

Fortunately there’s an excellent piece of software called ADTPro, that can be used to bootstrap an Apple II computer without any other hardware. It works by connecting to the Apple’s cassette in port or serial port, and transfers disk images from a server on a modern PC. Less fortunately, the IIgs doesn’t have a cassette input port, and Edna didn’t come with a serial card. I also didn’t have a Mini-DIN-8 to DB-9 serial cable for making a serial connection to Gary, so that left a cassette port connection to Edna as the only option.

To make a long story short, the ADTPro cassette audio method didn’t work. The first part of the bootstrap process went fine, and I could load the ADTPro client on Edna using the cassette link. But to actually transfer any disk images required two-way communication using two audio cables: one from the PC’s headphone out to the Apple’s cassette in, and another from the Apple’s cassette out to the PC’s microphone in. I’ve only got one PC that even has an analog audio input, and the line level was too low for the ADTPro software to hear the data coming from the Apple. No amount of config changes or level boosting seemed to help. After reading about it, this appeared to be a common problem.

I finally broke down and hand-built a Mini-DIN-8 to DB-9 serial cable for the IIgs, using an Imagewriter II printer cable and a DB-9 cable. It was a lot of fiddly soldering and beeping out wires and swearing at burnt thumbs, but I eventually got it to work. Of course, I learned later that I could have just bought a pre-made cable that’s designed for use with ADTPro. Oh well. With a working serial connection, I can now transfer both 3.5″ and 5.25″ disk images to Gary using ADTPro, and make 5.25″ disks with Gary that will work with Edna. Yes!

 
Floppy IIGS

The point of all this Apple II business is to get Floppy Emu working on Apple II systems. Floppy Emu has a 19-pin D-SUB connector and can emulate 800K disks, and the IIgs has a 19-pin D-SUB connector and can read 800K disks. So maybe you can just plug it in, load a IIgs disk image, and it will work? Sadly, it’s not that easy, and a direct plug connection to a IIgs doesn’t work. I’m not entirely sure why, but it’s something I’ll be investigating closely.

I’d heard from a couple of people that Floppy Emu did work with the IIgs, if you used part of an Apple 3.5 Drive to make the connection. If you open up an Apple 3.5 Drive, inside is a standard Sony 800K floppy drive (identical to those used in early Macs), and another small board called the daisy chain board. The daisy chain board is what’s actually connected to the computer. The board has an internal private connection to the Sony drive, as well as another 19-pin D-SUB where a second daisy-chained drive can be connected. The photo below shows a partially disassembled Apple 3.5 Drive, with the daisy chain board tucked inside, just behind the actual floppy drive mechanism.

a2-apple-3.5-drive

With a screwdriver and some gentle tugging, I was able to further disassemble the drive, separating the daisy chain board from everything else. On the underside of the daisy chain board, not pictured, are some electronics and a custom controller chip of some kind. What does it do? Hmmm.

a2-daisy-chain

I took the newly-liberated daisy chain board, and connected it to the IIgs using a 19 pin D-SUB to 20 pin ribbon cable – basically the same cable that I sell in the BMOW store. Then I attached the internal drive connector to a Floppy Emu, running the normal Macintosh floppy firmware.

a2-emu-with-daisy-chain

And it worked! I was able to boot GS/OS from an emulated disk on the Floppy Emu with no troubles. I did notice one oddity, however. After accessing the disk, the IIgs always left the disk motor on. Even when the computer wasn’t doing anything, the status LED on the Floppy Emu board continued to flash, and the LCD said “read”. I’m not sure if this is some quirk of my setup, or an issue with the Macintosh floppy firmware being not quite 100% IIgs compatible.

 
The Mysterious Daisy Chain Circuit

So what does this daisy chain board actually do, that allows the Floppy Emu to work on the IIgs? A detailed answer will have to wait for a future post, but as best as I can tell, it’s just some lightweight interface circuitry that helps identify the drive to the computer, and enable it at the correct time. Other than that, it doesn’t seem to get involved with the actual control of the drive or the data transfer in any way. There’s a schematic of the daisy chain board here: page 1 shows the whole board, and page 2 shows what’s inside of the “DSIC” box on page 1.

a2-daisy-chain-schematic-small

It looks like pin 4 of the 19-pin D-SUB (pin 7 of the 20-pin ribbon connector) is used as an extra enable signal, for selecting between 3.5″ and 5.25″ disks on the daisy chain. The drive’s RD line is connected both to the computer’s RD line as well as the computer’s WRPROT line. Then there’s some complex-looking enable circuitry involving a 74LS123 one-shot. As far as I can figure, its behavior is this: if the computer enables the drive by asserting /DRIVE1 and /EN3.5IN, then it can afterwards de-assert /DRIVE1 and the circuit will keep the drive enabled for about a second. But if the computer de-asserts /EN3.5IN, or asserts /DRIVE2, then the drive will be disabled immediately. I have no idea why that behavior is important, but there it is.

About half the schematic is related to the daisy-chain circuitry and the eject button, neither of which I need. (Here’s an edited version of the schematic with all the daisy-chain and eject logic removed.) The enable circuit with the one-shot is confusing, but the rest looks like it might not be too difficult to duplicate. Then I could make a little adapter board that allows the Floppy Emu to plug into a IIgs without sacrificing an Apple 3.5 Drive. Maybe even build the necessary circuitry into future versions of the Floppy Emu. Now I need to set out my tools and get to work!

Read 13 comments and join the conversation 

Finding a DB-19, Angering the Internet

db19-mechanical-drawing-crop

About six weeks ago, I made a post titled “The $11185 Connector”, about my search for the increasingly rare 19-pin D-SUB and the price quoted by one Chinese factory to manufacture them. This post attracted a lot of negative comments, and I eventually removed it, but the original post was republished here. The point of the post was that custom manufacturing of DB-19s was going to cost substantially more than I’d hoped, and given the small sales volume of Floppy Emu boards that need the DB-19s, it probably didn’t make economic sense for me to commission new manufacturing. Instead, I’d have to research possible DB-19 substitutes.

Earlier today, I discovered two more sites where that post was linked/republished, and a parallel discussion had sprung up without me knowing about it. That was strange and a little uncomfortable, like finding people talking about you behind your back. The themes of these commenters were similar to the comments on my original post:

  1. Why are you using a DB-19? Don’t you know it’s obsolete? Your design is crap.
  2. You’re doing it wrong.
  3. You’ve a naive idiot.
  4. You’re a racist asshole.

Some of these comments were understandable, if inflammatory, if you didn’t know what I was building and why. For the sake of any readers who don’t normally follow the BMOW blog, I use DB-19 connectors for a vintage computing product called Floppy Emu, which plugs into the external DB-19 floppy port of a 1980′s or 1990′s Macintosh computer. Apple chose the DB-19 back in 1984, and I’m stuck with it. The sales volume is fine for a hobby product, but very low by any professional standard. $11185 to manufacture a batch of new DB-19s would be more than an entire year’s net profit.

That’s not to say that $11185 isn’t a fair price for the work involved, or that Chinese manufacturers should work for pennies while I rest my feet on their backs and smoke a cigar. It’s a custom-made part, so there will be engineering setup costs involved before they can make anything, and of course they’ll expect me to pay those costs. That’s perfectly fair. In my naivety I hoped that existing DB-25 or DB-15 machinery might be easy to adapt for building DB-19s, so the setup cost might be only $1000 or so. Apparently that’s not the case.

A few people suggested I was foolish for using Alibaba to find D-SUB manufacturing contacts, saying that I’d never find the best price that way. That’s probably true, but being a single-person low-volume business, I don’t have a Rolodex of contacts at worldwide manufacturers whom I can phone up to ask for quotes. If there’s a better way to find possible manufacturing partners, I’d love to know about it.

Quite a few people linked sources for DB-19s that they found on the web. Unfortunately those leads were all dead-ends. There are at least a dozen electronics suppliers whose sites claim to have DB-19s in stock, but if you call them to place an order, you’ll find they don’t actually have them, or only have a handful. I’ve scoured the web pretty thoroughly, and bought all the large DB-19 supplies I could find. I may have overlooked some, but if so, they’re well-hidden.

A huge number of people suggested I take DB-25 connectors, which are readily available, and cut six pins off the end to make a DB-19. And for a one-off project for personal use, that might be the best solution. I don’t actually manufacture the Floppy Emu boards myself, though – they’re made in batches of ~100 at a time by an electronics assembly company. I spoke to them about the possibility of making DB-19s this way, and they weren’t enthusiastic. They were willing to try it, but believed it would be an awkward, error-prone, and manually time-intensive process that would yield inconsistent results.

 
Today

I eventually found a supply of 500 old stock DB-19 connectors in Eastern Europe. Depending on the Floppy Emu sales rate, which fluctuates wildly, this should last me anywhere from three months to a year or so before another “DB-19 crisis” hits. So what then?

After more research, I also found another D-SUB manufacturer whose bid was significantly cheaper than the first one. Buying DB-19 connectors from them would still be a very large expense, and would require pre-purchasing 5 or 10 years worth of supply, requiring a lot of faith in the long-term sales prospects of Floppy Emu. But if I can’t find another good option, this may be the best solution.

I also worked on a couple of possible DB-19 substitutes, pictured below. They’re just 19 pins sticking out of a custom-made PCB, with a cable connector on the back. They work, but they lack the surrounding shield of a normal D-SUB, and don’t look very professional. I used a pair of rectangular LEDs as alignment guides!

The version on the left uses individual D-SUB crimp pins, with the crimp portion cut off each one. It’s a bit of a hassle to assemble, soldering it is awkward, and it costs $4 for the pins alone. But the result fits well in the D-SUB socket. The version on the right uses standard 0.1″ square pin header. The pin spacing isn’t quite right for a D-SUB and the pins are supposed to be round and not square, but the result is close enough that it seems to work fine, and it’s less hassle to put together.

DB-alternates

The most promising lead is from IEC, a vendor of cables and connectors that used to sell DB-19s before they exhausted their stock. On two occasions, their salespeople told me DB-19s were discontinued and they wouldn’t be getting any more. But I later received email from someone at the company saying they were working on getting more DB-19s, using some kind of new manufacturing process. In fact, during the time I’ve been typing this post, I received another email from him saying they expect to have something available by June! Assuming we’re talking about the same part, and the price is similar to what it was before, that could be the answer I’ve been looking for.

Read 8 comments and join the conversation 

Older Posts »