ok so funny story, the Ghidra target of "65C02" already supports these instructions. at least i know how to customize Ghidra...
Top-level
ok so funny story, the Ghidra target of "65C02" already supports these instructions. at least i know how to customize Ghidra... 187 comments
some interesting routines. this one waits for the spindle speed (as measured by the index pulses) to exceed 3593 rpm (or so). they have a clever delay-by-x routine. the entry point is delay_entry. and yes, the routine calls its own rts as a way to insert cycles... so one of these drives blew a tantalum capacitor. i think i will take this board apart for reverse engineering purposes. there are multiple revisions but this will be a good starting point. with a combination of hot air and a desoldering gun, i've taken it down to just a few surface mount parts. i'm going to leave those in place for now since many of them are not marked. there is also no silkscreen. they scanned well. i've taken the top and bottom images and lined them up precisely. these reference images are 600dpi but i may go for a lower res version for KiCad since it stores the images in the pcb file, which slows it down a lot. @tubetime You're reminding me that I need to learn how to pull PCB images into Kicad and tweak my process. I usually have the layers stacked in GIMP and colourised red and blue, then use layer masks to hide the tracks I've entered into the schematic. I mean... zero? Maybe it's just a lil square jumper wire? Is that so wrong? @tubetime Looks like it's supposed to be a 0R jumper. Is it actually? @tubetime it's actually 100 ohms. someone back in the day was making resistors of various values that were all marked 0. great... @tubetime The “0” stands for “this marking gives you zero clues as to what the resistance of this resistor might be.” @tubetime A manufacture marking what looks like a 0 on SMT parts that are not zero-ohm is horrible. 😬 whew. got the layout and schematic captured. there were a few differences compared with the official schematic. solved a few mystery pins on these Seagate custom chips. they are connected to the magnetic heads. the ST-225 drive uses a similar circuit but it is an older design and less integrated. the ST-251's SSI257.2 chip drives the center taps of the head windings. they just "garbage collected" the transistors, head select decoder, and resistors driving it along with the transistors that set the write current. by looking at the ST-412 schematic, i figured out that the ST-251's SSI257 chip contains a bunch of steering diodes as well as an op amp (an NE592 equivalent). so on my schematic, i've named all the previously nameless pins and the circuit makes sense now. @tubetime Where is that betamax pin! congrats on the great reversing. kinda horrifying but this is the best way to test SMD parts out of circuit. @tubetime I have to imagine this is what Tombstone, AZ looks like @tubetime that's a slightly unsettling image, idk why. random thought: if you're testing precise values, don't forget that MLCC capacitance rises significantly during soldering and takes around 48h to return to nominal, which may still be much higher than it was in-circuit due to aging. capacitor manufacturers tend to physically cut them out of the circuit when they're doing failure analysis. OK, infodrop for you folks! https://github.com/schlae/HardDriveInfo the schematic PDF is in the repo as well as the KiCad source files. i'll be examining the firmware as well as the earlier board revisions. going to figure out what some of these custom chips do. this one is "10223-502." @tubetime I can actually help with the 11695-502. It's a speed control chip, also used on the ST-225. It looks like the Seagate custom motor driver the later-production ST-251 uses combines the Hitachi chip, the 11695-502, and the glue op amps from the early production board (as seen on that dubiously-correct M.I.T. schematic on BItsavers). @lee4hmz ahh very interesting, I'll have to use that to fill in details when i get to the other board revs. @tubetime at least if any parts are dead theyre already in the cemetary! @tubetime trick question: it only looks like a resistor, it’s actual function is a fuse, and is currently measuring infinity @tubetime 0 ohms. I forget the actual name but it's a junction. |
@tubetime It probably supports the WDC 6502 instruction set, which is a superset of the Rockwell CMOS extensions.