I finally got around to completely reverse-engineering a spare Micro-SCI floppy disk controller, and have managed to duplicate it. It has been running in my ACE1000 all morning, and appears to be working correctly.
I've placed the KiCAD project at https://codeberg.org/cryu/micro-sci-a2-controller if anyone is interested in building one.
Project notes:
- there is a difference between the original Micro-SCI board and the Franklin re-badged board; this works around the non-compliant-with-the-][+ timing issues in the ACE1000. I couldn't get a vanilla Micro-SCI board to work with Steve's FloppyEmu, although a real floppy drive will probably work. To convert the board to a Franklin-and-FloppyEmu-compatible unit, redirect U2/11 from U1/14 to U1/12, and redirect U5/2 from U1/11 to U5/1 (yes, the two gate inputs are common).
- the "main" branch contains an exact replica of the Micro-SCI board. That means that it needs a 2708 EPROM (or an EPROM on an adapter that makes it look like a 2708).
- the "2716" branch contains a modified board that incorporates two jumpers to select between Micro-SCI and Franklin timing, and replaces the 2708 with a 2716/2732. This branch has not yet been tested (the PCBs are inbound), but the changes are straightforward and thus it should work out of the box.
- the "rework" branch is a "let's use ground pours and modern footprints" work-in-progress, and should therefore not be used yet.
- while troubleshooting the board, I stumbled across Franklin-sourced schematics for the board. They, along with the R1/R2 calibration procedure, are in docs/service_and_schematics.pdf
- the contents of the 2708 EPROM were disassembled, lightly commented, and placed in firmware/. The diagnostic comments are from S.Elliot (thanks!), the 16- and 13-sector comments from https://6502disassembly.com/a2-rom/C600ROM.html, and the "the jumpers go like this" splash screen by me.
Enjoy. Cheers.
Excellent document. Thank you for archiving & sharing!
So that source is archived here in case that link goes stale...
Here's a text copy of the MicroSci's technician mode disassembly with a snapshot of my comments.
Technician Mode uses a command-line interface like the Apple Monitor. (To conserve ROM space, hijacks Monitor ROM routines to do the work.) So each command is entered as a hexadecimal number followed by a single-letter command. You can put multiple commands on the same line, but be sure not to put any spaces between commands.
Most commands leave the drive running.
Here's an incomplete list of the technician-mode commands:
R
"Recalibrate"
Pushes the head to track 0 from any track, with familiar clattering noise.
S
"Seek"
Positions the head over the specified track.
Example: "
11S
" seeks to track $11, the DOS directory track.W
"Write"
Continually writes the specified byte until the user presses ESC.
Example: "
88W
" overwrites the current track with a string of hexadecimal nibbles:88 88 88 88...
Z
"Zeek"
Enters a loop that positions the head over the specified track, then positions the head over the last track passed to the
S
(seek) command, and repeats until the user presses ESC.Example: "
11S22Z
" seeks track$11
, then enters a loop that repeatedly seeks track$22
then track$11
.Q
"Quit"
Drops into the Monitor.
M
X
I haven't tested the M or X commands, but it looks like it will probably cycle the motor on and off while writing to the disk.
capture306.png
This is really awesome work! This card is much more reproduceable than the Apple card due to not using BiPolar PROMs.
I wonder if anyone has done (or is thinking about) something similar for the Rana Systems 4 drive controller? I suspect it is at least somewhat similar to this one.
@S.Elliott -- thanks for that, I'll roll your analysis into the .s file tomorrow morning.
@softwarejanitor -- thanks for the kind words. If you're talking about the controller featured in this thread, then it appears to be based on the Apple controller rather than the Micro-SCI. There's a PROM on there that seems to be the state machine (as opposed to the TTL logic in the Micro-SCI), and that supposition is supported by section 7.2.5 ("State Machine") of the Rana Elite user guide.
That having been said, the Micro-SCI isn't *that* different, operationally, from the Apple controller. Someone with a card (or a dump of the ROM) and proper motivation would probably be able to turn my prototype into a Rana; I have neither a Rana card nor the motivation, so there it is :)
Progress on my card: I cut a git release of 0.1 and pulled 0.2 to the main branch. Barring a dumb layout mistake that wasn't caught by the various safeguards KiCAD has in place, the board should be very near to what I envisioned as the final state. I'd been considering making boards/kits available for interested parties to build their own, but shipping from Japan would easily be double the cost of the kit itself. I've reached out to Henry at ReactiveMicro to see if he's interested in doing so, much like he does for the Phasor.
Cheers :)
That's the card I was talking about. The obvious similarity to the MicroSci card is ig using an EPROM instead of BiPolar PROMs like Apple card. The interesting thing is support of 4 drives, although that of course requires patching to DOS 3.3 or ProDOS. It's also less of an issue these days with modern flash storage like FloppyEmu being common.
Um, okay. I am not trying to be contentious here, but I did spend a lot of time over the last week learning to understand how the Micro-SCI differs from the Apple, and how to troubleshoot it.
It really doesn't matter, in this context, whether a floppy card uses a bipolar PROM or an EPROM for the firmware. That doesn't alter the fundamental way that the card works. Bradley Bell has an Apple-remix card in github that is electrically identical to the Apple card, except it replaces the bipolar PROMs with 27xx-series EPROMs.
What does matter is whether the floppy card uses a ROM-based state machine for the data stream, or uses a discrete logic array to achieve that goal.
The Apple card uses the former. It has two ROMs, one supplying the code that shows up at $C600, the other comprising the state machine.
The Micro-SCI uses the latter. One ROM (supplying the code that shows up at $C600). Ten TTL(ish) chips doing the data stream.
The Rana uses a ROM-based state machine, per their documentation. Everything else being more or less equal between the Apple and the Micro-SCI, modulo probably the logic that maps parts of the Rana's firmware into $C800, the Rana is *much* closer related to the Apple card from an operational standpoint by virtue of lacking the primary design bits that distinguish the Micro-SCI from the Apple.
Again, not trying to harsh you.
I wasn't arguing any of those details. The reason the ROM matters these days is mostly due to manufacturability these days because of parts availability. But thanks for the explanation on how the different cards work. The issues with compatibility with things like FloppyEmu with the MicroSci (apparently fixed by Franklin) make more sense now.
As far as the Rana card maybe the 4 drive feature could be adapted to other designs if someone was interested in that. Maybe nobody is though.
The explanation about using ttl to implement the state machine is interesting because it brings to mind something Uncle Bernie talked about with his project to build an Apple-1 floppy controller. That is implementing the logic in a GAL. The MicroSci/Franklin card might be a good place for someone trying to code a programmable device to start from.
Good job! I had an original map like that, but I sold it rashly.... Well, thanks to your project, now I can build a replica, thanks for that!
"Bradley Bell has an Apple-remix card in github that is electrically identical to the Apple card, except it replaces the bipolar PROMs with 27xx-series EPROMs."
DiskII.png
You mean this project?
If you're "Macintosh_nik" on eBay, then you sold your Micro-SCI card to *me* at the end of 2021. It was your card that I reverse-engineered ... so, in a way, your sacrifice made this project possible :)
Yes, that's the project I was referring to. btb is a good engineer; his Videx clone works quite well.
@Macintosh_nik: PM me your address, and I'll send you a v0.1 board (the 1:1 reproduction) with a 2708 as a thank-you.
I remember you, I had a little doubt how to write your address correctly and you explained everything to me very kindly. I really appreciate you offering me this, but now I'm afraid it's a pointless waste of money. The parcel will be 100% returned from Japanese customs, export of any, even obsolete electronics to Russia is now impossible. I can still send any parcels anywhere, but to receive no longer. These are the conditions now...
I would be very grateful to you if you could help me a little with one project, just a consultation and if I get stuck at some stage. I wrote you the details in a private message.
I've verified that the v0.2 re-design works correctly, and cut a git release. If anyone is interested in building this card, use v0.2.
Notable changes from the original design:
I consider the design stable at this point; a future revision might incorporate a 74LS245 and a no-slot clock chip, but the card is fully-functional. Henry at ReactiveMicro has shown interest in the project, so kits may be available from him in the future.
Cheers :)
I like the idea of adding a 74LS245. There were some 3rd party controllers that used one back in the day. One thing I've also wondered about if someone is designing a new controller is usng a 2732 and adding the logic to incorporate the LIRONGP code. That might require some changes to that code but it would be super cool to have one card that could do smartport in one slot. Yes, I know there is Yellowstone, but I like more different options. And something like that which would be build-it-yourself and not require an FPGA and programming thereof like the Yellowstone would be more future proof in some ways.
For what it's worth, I have four blank v0.1 boards (which needs a 2708, of which I have one pre-programmed available) and three blank v0.2 boards that are available for USD$10 each plus shipping costs via EMS (which is going to be cheap since the yen imploded).
Macintosh_nik, I'm setting aside an assembled and pre-calibrated v0.1 board (minus a few TTL chips, but with the 2708 and MPS-U01) for you. The world *will* regain sanity at some point in the near future; when that happens, you'll have your Micro-SCI board back with my profuse thanks.
Edit: the v0.2 boards are the prototypes, and don't have the built-in one-cable-for-two-emulated-FloppyEmu-drives jumper. That's easy to fix; un-ground pin 5 on the first floppy drive header by cutting the trace, and connect a 470-ish-ohm resistor between the second floppy drive's header and pin 5 on the first header. I can perform that modification before shipping if requested.
Thank you, I really appreciate it!
If you need anything from me don't hesitate to ask. I just checked, there are no restrictions on sending a package from Russia to Japan or anywhere else.
Thank you again! And I wish you good luck in all your endeavors!
This looks great. The only thing I might add is that most (but not some of the earliest) Franklin Disk ][ controllers had blue keyed IDC-20 connectors. That would certainly extend the life of some 74LS125's.
I owned a microsci controller and drives decades ago and purchased a set once again in recent years. I've never heard of technician mode. Was that a particular rom ?
The card I have has a 2708 onboard with the 13/16 jumpers. Center position shows the splash with choices.
Larry G
Install jumpers in both the 13 and 16 sector positions. The card will not auto-start, but will give you a BASIC prompt. Then CALL 50688.